
Тема 10. Другие сервисы
10.1 Электронная почта
Каждый UNIX-сервер дает возможность работы с электронной почтой.
Основным протоколом пересылки почты является SMTP (Simple Mail Transfer Protocol). При пересылке почты SMTP-сервер отправителя взаимодействует непосредственно с SMTP-сервером получателя. Соединение устанавливается по 25 порту. Далее следует код приветствия и команды, устанавливающие тип операции. Затем сервер запрашивает сообщение и получает его. После этого соединение закрывается.
Если эти операции выполнить из командной строки, сеанс будет выглядеть так:
telnet destination.com 25
Connected to destination.com
HELO sender.com
… Pleased to meet you
MAIL From: alex@sender.com
… Sender OK
RCPT To: mih@destination.com
… Recipient OK
DATA
Enter mail? End with “.”
Заголовок
__
Текст сообщения
.
… Message accepted for delivery
QUIT
Connection closed
Здесь подчеркиванием выделена информация, вводимая пользователем.
На примере видно, что диалог выполняется с помощью четырехсим-вольных команд, которые набираются в верхнем регистре.
Заголовок сообщения отделяется от текста сообщения пустой строкой. После получения точки, SMTP (типа sendmail) программа добавляет сообщение в почтовый файл получателя (var/mail/mih на BSD).
Полученное сообщение можно просмотреть программой mail. После запуска она выдает перечень полученных писем и подсказку: &. В ответ на подсказку можно ввести:
номер – вывод на экран сообщения с указанным номером,
s file1 – сохраняет сообщение в файле file1,
q – выход из mail.
Клиент взаимодействует с SMTP-сервером своего провайдера, а не прямо с сервером получателя. Это сделано для того, чтобы воспользоваться преимуществами постановки сообщений в очередь.
Клиент помещает сообщение в очередь. Через заданные промежутки времени SMTP-сервер передает все сообщения серверам получателям.
Путь сообщения показан на рисунке.
Здесь
MUA – Mail User Agent – пользовательский почтовый агент,
MTA – Mail Transfer Agent – агент пересылки почты.
Пересылка сообщения между SMTP-серверами имеет название relaying.
Наиболее известные MTA:
Sendmail – наиболее распространенный агент, является стандартным для UNIX и Linux;
Microsoft Exchange – агент для системы Windows;
Postfix – разработан, как альтернатива Sendmail, является более быстрам и защищенным;
Наиболее известные MUA:
Mail – наиболее простой агент для UNIX.
Pine, Elm, Mult – тестовые клиенты для UNIX.
Microsoft Outlook, Netscape Mail – агенты с графическим интерфейсом.
Во Free BSD служба Sendmail уже сконфигурирована и готова к работе.
Нужно лишь, чтобы в файле /etc/rc.conf была строка
sendmail_enable = “YES”
С работой Sendmail три точки файловой системы:
/etc/mail – конфигурационные файлы Sendmail,
/var/mail – почтовые ящики пользователей,
/var/spool/mqueue – файлы очередей сообщений.
В процессе конфигурирования используется язык m4.
Сервер Sendmail работает так. Запускается основной процесс, который прослушивает порт 25, ожидая входящих сообщений. Каждые 30 минут запускается новый процесс
sendmail -q ,
который пытается доставить каждое сообщение из очереди. Сообщения, которые не удалось отправить, возвращаются отправителю с сообщением об ошибке.
За очередью можно наблюдать с помощью команды mailq.
Одно из последних усовершенствований Sendmail – защита от SPAM’а (рекламных сообщений).
Пересылка почты по SMTP – это только половина задачи. Чтобы сообщения могли быть доставлены от одного пользователя к другому, нужно еще обеспечить нагрузку с сервера по протоколу POP (Post Office Protocol) – текущая версия РОР3.
Обычно пользователи работают с клиентскими программами типа Microsoft Outlook, которые имеют удобный графический интерфейс и читают сообщения с почтового ящика SMTP.
B BSD в качестве РОР3-сревера используется программа gpopper, которая устанавливается через порты. Сервер работает через 110 порт.
Проверить, запущен ли РОР3-сервер, можно с помощью telnet:
telnet localhost 110
+ OK Qpopper at sender.com starting
QUIT
connection closed
Альтернативой РОР является IMAP (Interactive Mail Access Protocol), фундаментальное различие между ними заключается в том, что РОР загружает каждое сообщение с сервера и сохраняет его в почтовой программе, IMAP управляет почтовыми сообщения сугубо на сервере. Сообщения с сервера IMAP передаются клиенту только при запросе и не удаляются до тех пор, пока пользователь не укажет это явно.
Что касается сервера Sendmail, то его недостатком является сложность конфигурирования. Поэтому вместо него часто используют более быстрый и простой в управлении сервер postfix. Недостатком postfix является его относительная новизна.