Linux - Алексей Стахнов
Шрифт:
Интервал:
Закладка:
• Сообщение (message). Данный тип предназначен для работы с обычными почтовыми сообщениями, которые напрямую не могут быть переданы по почте. Существует несколько подтипов:
– partial – подтип предназначен для передачи одного большого сообщения по частям для последующей автоматической сборки у получателя;
– External-Body – подтип позволяет ссылаться на внешние информационные источники;
– rfc822 – стандартный подтип типа message. Определяет сообщения стандарта RFC-822;
• Графический образ (image);
• Аудиоинформация (audio);
• Видеоинформация (video);
• Приложение (application).Content-Transfer-Encoding
Тип кодирования сообщения. Поскольку передача сообщений происходит в неоднородной среде, неизбежны перекодирования почтового сообщения. Для того чтобы при получении данные были бы правильно распакованы и используется данное поле.
Программное обеспечение
Как и многое другое, взаимодействие между участниками обмена почтового сообщения основано на технологии клиент-сервер. Можно выделить три независимых этапа:
• взаимодействие по протоколу SMTP между почтовым клиентом и почтовым транспортным агентом;
• взаимодействие между транспортными агентами в процессе доставки почты;
• получение сообщения из почтового ящика пользователя почтовым клиентом по протоколу POP3 или IMAP.
Программа sendmail
Основным средством рассылки почты является программа sendmail, хотя она и является одной из старейших и сложных в конфигурации. Sendmail позволяет организовать почтовую службу локальной сети и обмениваться почтой с другими серверами почтовых служб через специальные шлюзы. Sendmail может быть сконфигурирована для работы с различными почтовыми протоколами. Обычно это протоколы UUCP (UNIX-UNIX–CoPy) и SMTP (Simple Mail Transfer Protocol).
Sendmail может интерпретировать два типа почтовых адресов:
• почтовые адреса SMTP;
• почтовые адреса UUCP.
Sendmail можно настроить для поддержки:
• списка адресов-синонимов;
• списка адресов рассылки пользователя;
• автоматической рассылки почты через шлюзы;
• очередей сообщений для повторной рассылки почты в случае отказов при рассылке;
• работы в качестве SMTP-сервера;
• доступа к адресам машин через сервер доменных имен BIND;
• доступа к внешним серверам имен и многого другого.
Принцип работы программы sendmail
Sendmail идеологически копирует обычную почтовую службу – почта отправляется с заданной периодичностью, перед этим сообщения собираются в очереди и только затем отсылаются.
Как уже упоминалось ранее, каждое сообщение состоит из трех частей: конверта, заголовка и тела сообщения:
• конверт состоит из адреса отправителя, адреса получателя и специфической информации, которая используется программами подготовки, рассылки и получения почты. Конверт остается невидимым для отправителя и получателя почтового сообщения;
• заголовок состоит из стандартных текстовых строк, которые содержат адреса, информацию о рассылке и данные. Данные из заголовка могут использоваться для оформления конверта сообщения;
• тело сообщения следует после первой пустой строки вслед за заголовком сообщения. Все, что следует после этой строки, называется телом сообщения и передается по почте без изменений.
После постановки почтовых сообщений в очередь начинается ее рассылка. При этом выполняются следующие действия:
• адреса отправителя и получателя преобразуются в формат сети – получателя почты;
• если необходимо, то в заголовок сообщения добавляются отсутствующие данные;
• почта передается одной из программ рассылки почты.
Настройка программы sendmail
Настройка программы sendmail происходит при помощи конфигурационного файла /etc/sendmail.cf. Этот файл состоит из нескольких частей:
• описания компьютера (local information) – в данной секции описываются имя компьютера и т. п;
• описания макроопределений sendmail, отвечающих за работу в локальной сети;
• групп имен, которые используются программой для рассылки почты;
• номера версии файла конфигурации;
• опций команды sendmail – опции определяют режимы работы программы;
• доверенных пользователей;
• описания формата заголовка почтового сообщения – в данной секции определяются поля и их формат, которые отображаются в заголовке;
• правил преобразования адресов;
• описания программ рассылки;
• общего набора правил преобразования адресов;
• машинно-зависимой части общего набора правил преобразования адресов.
Обычно после инсталляции sendmail изменения, которые вносятся в файл конфигурации, касаются только имени хоста, домена и шлюзов. В современных дистрибутивах (таких как Red Hat) иногда не приходится делать даже этого.
Подробно о конфигурировании sendmail здесь рассказано не будет – разобраться в конфигурационном файле, который имеет около 100 Кбайт текста, весьма не просто. Для детального ознакомления с конфигурацией sendmail рекомендуется почитать книгу "UNIX – руководство системного администратора", а также документацию, идущую в комплекте с sendmail.
Для примера приведем небольшую секцию локальной конфигурации программы sendmail:
############
# local info #
############
Cwlocalhost
СР.
# UUCP relay host
DYucbvax.Berkeley.EDU
CPUUCP
# BITNET relay host
# DBmailhost.Berkeley.EDU
DBrelay.kiae.su
CPBITNET
# "Smart" relay host (may be null)
DSrelay.kiae.su
# who I send unqualified names to (null means deliver locally)
DR
# who gets all local email traffic ($R has precedence for unqualified names)
DH
# who I masquerade as (null for no masquerading)
DM
# class L: names that should be delivered locally, even if we have a relay
# class E: names that should be exposed as from this host, even if we masquerade
# CLroot
CEroot
# operators that cannot be in local usernames (i.e., network indicators)
CO @ % !
# a class with just dot (for identifying canonical names)
C..
# dequoting map Kdequote dequote
Тестирование отправки почты sendmailДля проверки правильности функционирования программы sendmail можно запустить ее с ключом -v (режим verbose). При этом режиме процесс обмена между транспортными почтовыми агентами выводится на консоль или записывается в файл. Таким образом можно исключить большую часть ошибок в настройке sendmail.
Тестирование обслуживания по протоколу SMTP Для проверки сервиса SMTP используют программу telnet, подключаемую к 25-му порту:telnet ivan.petrov 25
Если на компьютере установлен SMTP-сервер – в ответ получим строку приглашения протокола SMTP, после чего можно вводить команды SMTP:
MAIL FROM: user
250 user… Sender ok
RCPT TO: user
250 user… Recipient ok
DATA
354 Enter mail, end with"." on a line by itself
This is a test message!!!...250 JAA24856 Message accepted for delivery
quit
221 ivan.petrov closing connection
Connection closed by foreign host.
You have new mail.
#
В приведенном примере мы отправили сами себе сообщение. Команда mail from: указывает адрес отправителя почтового сообщения. Затем вводится команда rcpt то: для указания адреса получателя почтового сообщения. Команда data разрешает ввод почтового сообщения. Конец режима редактирования обозначается символом"." в первой позиции строки. Более подробную информацию следует искать в документации по sendmail, а также в табл. 18.1, где приведены команды протокола SMTP, и в табл. 18.2, содержащей коды возврата протокола SMTP.
Команды и коды возврата протокола SMTP
Для тестирования работы SMTP-сервера необходимо знать команды протокола SMTP (табл. 18.1) и его коды возврата (табл. 18.2) и воспользоваться программой telnet.
Таблица 18.1. Команды протокола SMTPТаблица 18.2. Коды возврата протокола SMTP
Тестирование обслуживания по протоколу POP3 Аналогично тестированию обслуживания по протоколу SMTP с помощью программы telnet можно проверить функционирование и POP3-протокола. Для этого необходимо подключиться к нашему серверу по порту 110.
telnet ivan.petrov 110
user user
+OК Password required for user,
pass 12345623432
+OK user has 3 messages (3327 6 octets).
list
+OK 3 messages (3327 6 octets)
1 11276
2 11000
3 11000
.
dele 3
+OK Message 3 has been deleted.
quit
+OK
Connection closed by foreign host.Очень похоже на протокол SMTP. Подключились к порту 110. Производим «опознание» пользователя с помощью команд user и pass. Затем командой list узнаем количество сообщений в почтовом ящике и их размер. Командой dele отмечаем сообщение к удалению, которое произойдет по окончании сеанса. Команда Quit завершает сеанс работы с сервером. Все просто.
Команды протокола POP3
Для тестирования работы POP3-сервера необходимо знать его команды (табл. 18.3) и воспользоваться программой telnet.
Успешное выполнение команды заканчивается выводом сообщения "+ок", а неуспешное «-err» соответственно.
Таблица 18.3. Команды протокола POP3Рассмотрим теперь более современные интерфейсы подготовки почтовых сообщений bml и elm. Обе эти программы подготовки почты работают в режиме полноэкранных интерфейсов.
Почтовые клиенты
Сегодня существует несколько десятков почтовых клиентов – простейшие текстовые, сложные текстовые, графические и даже Web-клиенты. Трудно охватить все разнообразие, поэтому приведем примеры нескольких почтовых клиентов. Для настройки всех почтовых клиентов необходимо знать ряд параметров: