представляет собой модульный сервер, разработчики которого ставили перед собой задачу обеспечить высокую производительность и повышенный уровень защиты. Структура конфигурационного файла
qmail
проще, чем у сервера
sendmail
, но, в отличие от Exim и Postfix, данный сервер плохо совместим с
sendmail
. Поэтому замена
sendmail
на
qmail
представляет собой достаточно сложную задачу. Несмотря на то что
qmail
по популярности уступает только
sendmail
, этот сервер редко включается в дистрибутивные пакеты Linux в качестве сервера по умолчанию, поэтому в данной главе он не будет подробно рассматриваться. Web-узел
qmail
расположен по адресу
http://www.qmail.org
.
Помимо перечисленных выше, в системе Linux могут использоваться и другие почтовые серверы. В качестве примера можно привести Smail (
http://www.gnu.org/software/smail/smail.html
), Courier (
http://www.courier-mta.org
) и OpenMail (
http://www.openmail.com/cyc/om/00/
). Многие из почтовых серверов распространяются в исходных кодах, но некоторые доступны лишь на коммерческой основе. Большинство пользователей отдают предпочтение упомянутым выше четырем серверам:
sendmail
, Exim, Postfix и
qmail
. Все четыре продукта представляют собой мощные программы, способные обслуживать даже большие домены.
Если вы еще не имеете большого опыта администрирования почтовых серверов, вам предпочтительнее использовать тот из них, который поставляется в составе вашей системы. Во многих дистрибутивных пакетах содержится несколько серверов SMTP. В этом случае лучше работать с сервером, установленным по умолчанию.
Если вам необходимо предоставить пользователям специальные услуги по обработке почты, внимательно ознакомьтесь с документацией на различные серверы и решите, какой из них наилучшим образом подходит для решения данной задачи. Возможно, вам придется заменить сервер, установленный по умолчанию, другим. В большинстве случаев это означает, что вместо сервера
sendmail
необходимо установить другой сервер. Проще всего заменить
sendmail
сервером Exim или Postfix. Несмотря на различия в структуре конфигурационных файлов, программы, непосредственно обращающиеся к
sendmail
, обычно хорошо взаимодействуют с Exim и Postfix, а формат очереди почтовых сообщений этих двух программ совпадает с форматом очереди
sendmail
. (Как и
sendmail
, Exim и Postfix используют формат
mbox
, т.е. хранят все письма в одном файле.) Заменить
sendmail
сервером
qmail
гораздо труднее, так как qmail по умолчанию поддерживает
maildir
(формат, в котором сообщения хранятся как отдельные файлы). Поэтому, чтобы установить
qmail
вместо
sendmail
, надо изменить стандартную конфигурацию
qmail
или заменить почтовые программы в вашей системе (в том числе и серверы получения почты, рассмотренные в главе 11.
Настройка домена для использования почтового сервера
Многие почтовые серверы получают почту с внешних компьютеров. Существуют два способа адресации почтового сервера.
• Непосредственная адресация. Письмо может быть направлено пользователю, учетная запись которого находится на почтовом сервере. Например, если почтовый сервер имеет имя
mail.threeroomco.com
, то почтовый адрес пользователя будет выглядеть так:
. В этом случае для сервера имен потребуется только запись А, связывающая имя почтового сервера с его адресом. Недостаток подобного способа состоит в том, что адрес получается несколько длиннее, чем он мог бы быть.
• Указание адреса домена. Для того чтобы сократить почтовый адрес, а также для того, чтобы обеспечить работу резервных почтовых серверов, в конфигурационном файле сервера DNS предусмотрена запись
MX
. Если в почтовом адресе указано только имя домена, запись
MX
позволят направить это письмо на конкретный компьютер. Предположим, например, что в конфигурационном файле сервера имен, управляющего доменом
Указав в конфигурационном файле сервера DNS несколько записей
MX
, администратор может организовать использование резервных почтовых серверов. По сравнению с непосредственной адресацией данный способ несколько усложняет администрирование домена.
Формат конфигурационного файла сервера DNS, в частности структура записей
MX
, рассматривалась в главе 18. Если вы устанавливаете почтовый сервер по адресу
mail.threeroomco.com
, соответствующая запись
MX
будет выглядеть следующим образом:
@ IN MX 10 mail.threeroomco.com.
Эта строка содержится в конфигурационном файле зоны, имя которого указано в файле
/var/named
. Символ
@
в начале строки означает, что запись применима ко всему домену. Идентификатор
IN
представляет собой стандартный компонент записи, описывающей домен Internet, a
MX
определяет тип записи. Число 10 представляет приоритет записи. Сервер, осуществляющий передачу почты, сначала старается установить соединение с почтовыми серверами, которым соответствуют малые значения приоритетов, а если очередной сервер не отвечает, он обращается к компьютеру с более высоким приоритетом. Это позволяет использовать в составе домена несколько почтовых серверов. В конце записи указывается полное доменное имя почтового сервера, завершающееся точкой.
На заметку
Передавая письма на почтовый сервер вашей сети, внешним пользователям достаточно указать лишь имя домена. Однако локальные пользователи при настройке своих клиентских программ должны задавать полное имя сервера SMTP.
Передача данных с помощью протокола SMTP
Для того чтобы понять материал данной главы, надо хотя бы в общих чертах представлять себе принцип передачи почтовых сообщений с помощью протокола SMTP. В частности, необходимо знать различия между заголовками конверта (envelope header), заголовками сообщения (message header) и телом сообщения (message data). Заголовком конверта считаются поля
From
и
То
и содержащиеся в них адреса, которые указываются передающим компьютером при установлении SMTP-соединения. В особенности важен заголовок конверта
То
, так как именно его анализирует принимающая система, определяя, кому адресовано данное сообщение.
В отличие от заголовка конверта, заголовок сообщения входит в состав письма. Нередко этот заголовок составляет значительную часть сообщения, доставляемого адресату. Среди них также присутствуют поля
From:
и
To:
, но полагаться на их значения нельзя, так как они могут быть фальсифицированы. К заголовку сообщения относятся также поле
Received:
, которое отражает путь, проделанный письмом, и поле
Subject:
, отображаемое большинством программ просмотра писем.
На заметку
В заголовке сообщения значение поля отделяется от его имени двоеточием. В заголовке конверта двоеточие обычно не используется. Если сервер SMTP использует формат
maildir
, данные, содержащиеся в заголовке конверта, хотя и используются при выполнении SMTP-транзакции, но не сохраняются в сообщении. Некоторые серверы могут быть сконфигурированы так, чтобы адреса, указанные в полях
From
и
То
заголовка конверта, сохранялись в составе поля
Received:
заголовка сообщения. Это помогает в тех случаях, когда надо выяснить причину возникновения проблем при передаче писем.
Чтобы понять, как действует протокол SMTP, надо проследить ход SMTP-транзакции. В листинге 19.1 показан процесс передачи сообщения, осуществляемый вручную с помощью программы
telnet
. (Как нетрудно догадаться, в обычной SMTP-транзакции программа