Демоны Postfix

Postfix постоянно находится в процессе развития. Предлагаемый перечень демонов относится к версии Postfix 2.1.1

master
Демон master – управляющая программа Postfix; он осуществляет контроль над всеми остальными демонами Postfix. Демон master ожидает поступления входящих заданий для передачи их подчиненным демонам. Если работы много, то master может вызвать несколько экземпляров демона. Вы можете задать количество одновременно работающих экземпляров демона, частоту их повторного использования и величину периода простоя, после которого произойдет остановка экземпляра.

Если вы работали с сервером inetd на компьютере с UNIX, то обнаружите много общего между ним и демоном master.
bounce и defer
Агент передачи сообщений должен уведомить отправителя о невозможности доставить сообщения. В Postfix эту задачу решают демоны bounce и defer, а инициируется она диспетчером очередей (qmgr). Существует два вида событий, которые могут вызвать отправку уведомлений – неисправимые ошибки и адресат, которого невозможно достичь в течение долгого периода времени. В последнем случае отправляется предупреждение о задержке.
error
Демон error является агентом доставки сообщений, как local или smtp. Этот агент доставки сообщений всегда вызывает возврат сообщений. Обычно он используется, только если вы хотите настроить домен как недоступный для доставки, направляя почту агенту доставки error. Если сообщение отправляется демону error, то он информирует демон bounce о необходимости отметить, что адресату невозможно доставить почту.
trivial-rewrite
Демон trivial-rewrite действует по запросу демона cleanup для преобразования нестандартных адресов в стандартную форму user@fqdn.
Этот демон также занимается разрешением имен адресатов по запросу от диспетчера очередей (qmgr). По умолчанию trivial-rewrite различает только локальных и удаленных адресатов.
showq
Демон showq выводит содержимое очереди сообщений Postfix -именно эта программа работает, когда выполняется команда mailq

Самая свежая стабильная версия на март 2008 года – Postfix 2.5.1. – Примеч. науч. ред.
(sendmail -bp). Этот демон необходим, т. к. очередь Postfix доступна для чтения не всем; пользовательская программа без применения setuid не может вывести содержимое очереди (а программы Postfix не используют setuid).
flush
Демон flush пытается очистить очередь сообщений от зависших и отложенных сообщений. Используя список стоящей в очереди почты, разбитый по адресатам, он улучшает производительность SMTP-запроса Extended Turn (ETRN) и его эквивалента в командной строке – sendmail -qR destination. Список адресатов может содержаться в параметре fast_flush_domains в файле main.cf.
qmgr
Демон qmgr управляет очередями Postfix; это сердце почтовой системы Postfix. Он распределяет задачи доставки между демонами local, smtp, lmtp и pipe. После того как исполнитель задачи выбран, демон qmgr передает ему информацию об имени и пути файла из очереди, адрес отправителя сообщения, хост назначения (для сообщений удаленным пользователям) и один или несколько адресов получателей.
Алгоритм работы qmgr является хорошим примером того, как Postfix при обработке заданий избегает нехватки ресурсов и обеспечивает стабильность. Отметим две особенности:
• qmgr поддерживает маленькую очередь active, в которой ожидают отправки буквально несколько сообщений. Эта очередь фактически выполняет роль небольшого окна для потенциально бoльших очередей incoming и deferred, предотвращая нехватку памяти qmgr при большой загруженности.
• Если Postfix не может незамедлительно доставить сообщение, то qmgr помещает его в очередь deferred. Хранение временно недо-ставимых сообщений в отдельной очереди гарантирует, что нормальный доступ к очереди не будет тормозиться большим объемом почты, обработка которой не завершена.
qmgr использует демоны bounce и error для отказа в доставке сообщений тем получателям, сведения о которых содержатся в таблице relocated с данными о пользователях и доменах, более не существующих в системе.
proxymap
Клиентские процессы Postfix могут получать доступ (только на чтение) к картам посредством демона proxymap. За счет совместного использования одной открытой карты многими демонами Postfix proxymap обходит ограничения, налагаемые chroot, и уменьшает количество открытых поисковых таблиц.
spawn
Процесс spawn по запросу создает не-Postfix процессы. Он занимается прослушиванием порта TCP, сокета домена UNIX1 или FIFO-очереди стандартного потока ввода, вывода и ошибок. В этой книге будет описан только один пример использования spawn: для внешней системы фильтрации сообшений по содержанию тела сообщения (глава 13).
local
Как понятно из названия, демон local отвечает за доставку в локальные почтовые ящики. Postfix-демон local может записывать данные в почтовые ящики форматов mbox и Maildir.2 Кроме того, local может обращаться за данными в формате Sendmail к базам данных alias и пользовательским файлам .forward.
Примечание
Эти возможности делают local аналогом агента отправки сообщений Sendmail, их пользовательские интерфейсы также совпадают.

В качестве альтернативы демон local может передать доставку в почтовые ящики локальному агенту доставки (local delivery agent -LDA), который имеет более широкие возможности, например поддерживает фильтрацию. Общераспространенными являются такие LDA, как procmail (http://www.procmail.org) и maildrop (http://www. flounder.net/~mrsam/maildrop).
Postfix может запускать несколько экземпляров local.
virtual
Демон virtual, который иногда называют виртуальным агентом доставки, – это упрощенный вариант local, осуществляющий доставку только в почтовые ящики. Это самый надежный агент доставки Postfix; он не выполняет подстановок по файлам alias и .forward.
Этот агент доставки может доставлять почту для нескольких доменов, что делает его особенно удобным для поддержки ряда неболь-

Подробнее о сокетах и коммуникационных доменах UNIX можно прочесть, например, по адресу http://publib.boulder.ibm.com/infocenter/pseries/v5r3/ index.jsp?topic=/com.ibm.aix.doc/aixprggd/progcomc/skt_comms.htm.- Примеч. науч. ред.

Почтовые ящики могут иметь разную структуру, и важно, чтобы все программы – и те, которые записывают новые сообщения в почтовый ящик, и те, которые извлекают их из ящика и доставляют пользователю, – понимали эту структуру одинаково. Наиболее распространены форматы mbox (все сообщения хранятся в одном файле и отделены друг от друга пустой строкой) и maildir (каждое сообщение хранится в отдельном файле, подробнее см. http://www.dataloss.nl/breakage/maildir/). – Примеч. науч.ред.
ших доменов на одной машине (это так называемый POP-тостер1) без настройки отдельной почтовой системы для каждого домена или интерактивного доступа пользователей к системе.
smtp
Демон smtp – это клиентская программа Postfix, которая передает исходящие сообщения удаленным адресатам. SMTP-клиент ищет почтовые серверы назначения, сортирует список по предпочтениям и проверяет каждый адрес до тех пор, пока не найдет сервер, который ответит. При большой нагрузке в системе Postfix обычно работает несколько демонов smtp одновременно.
lmtp
Демон lmtp взаимодействует с локальным и удаленным серверами почтовых ящиков по протоколу LMTP2 (Local Mail Delivery Protocol), который определен в RFC 2033 (ftp://ftp.rfc-editor.org/in-notes/ rfc2033.txt). Часто используется совместно с сервером Cyrus IMAP (http://asg.web.cmu.edu/cyrus/imapd).
Преимущество использования клиента lmtp заключается в том, что управлением очередями занимается Postfix и одна Postfix-машина может по протоколу LMTP обслуживать много серверов почтовых ящиков (на которых должны работать демоны LMTP). Обратное также верно: несколько Postfix-машин могут обслуживать один сервер почтовых ящиков по LMTP. На таких серверах почтовых ящиков может, например, работать Cyrus IMAP.
pipe
Демон pipe обеспечивает клиентский интерфейс для исходящих соединений к другим почтовым транспортным механизмам. Он вызывает программы с параметрами и отправляет тело сообщения по каналу (pipe) на их стандартный ввод.
pickup
Классическое определение POP-тостера согласно http://cr.yp.to/qmail/toas-ter.html: POP-тостер – это система, содержащая три обязательных компонента, обеспечивающих:
а) хранение почты, подразумевающее запись входящих сообщений на диск;
б) выдачу почты пользователям, обращающимся за ней через сеть;
в) управление учетными записями пользователей, в том числе изменение
паролей авторизованным пользователям. – Примеч. науч. ред.
На самом деле LMTP расшифровывается как Local Mail Transfer Protocol; он может использоваться вместо SMTP в тех случаях, когда на принимающей стороне не запущен демон SMTP. – Примеч. науч. ред.
Демон pickup забирает сообщения, помещенные в очередь maildrop локальной клиентской программой отправки почты. После выполнения ряда проверок pickup передает сообщения демону cleanup.
smtpd
Демон smtpd обеспечивает взаимодействие с сетевыми почтовыми клиентами, отправляющими сообщения через Postfix по SMTP. Демон smtpd проводит ряд проверок для защиты остальной части системы Postfix. Его можно настроить так, чтобы он занимался проверкой входящей почты на спам (локальные или сетевые черные списки, поиск в DNS, другие клиентские запросы и т. д.).
smtpd передает сообщение демону cleanup.
cleanup
Демон cleanup реализует последний этап обработки новых сообщений. Он добавляет недостающие заголовки, корректирует преобразование адреса и (если надо) извлекает адреса получателей из заголовков сообщений. Демон cleanup помещает результат в очередь incoming, затем уведомляет диспетчер очередей о прибытии нового сообщения.
sendmail
sendmail – это команда Postfix, которая подменяет собой MTA Send-mail Эрика Оллмана (Eric Allman). Ее задача заключается в предоставлении совместимого с Sendmail интерфейса для приложений, способных только вызывать /usr/sbin/sendmail. Она взаимодействует с программой postdrop для помещения сообщений в очередь mail-drop, откуда их заберет pickup.
Примечание
Использование команды sendmail – это самый медленный способ помещения сообщений в систему очередей Postfix. Если вам нужно одновременно отправить большое количество сообщений, воспользуйтесь SMTP.

qmqpd
QMQP-сервер Postfix реализует протокол QMQP (Quick Mail Queuing Protocol – быстрый протокол постановки почтовых сообщений вочередь, см. http://cr.yp.to/proto/qmqp.html) с целью обеспечения совместимости Postfix с qmail и диспетчером списков ezmlm.1
anvil
Демон anvil – это предварительная защита от атак типа «отказ в обслуживании», при которых клиенты засыпают SMTP-сервер огромным количеством одновременных или последовательных попыток соединения. В нем предусмотрена возможность отмены ограничений для авторизованных клиентов. Демон anvil не включен в версию

Возможно, вас заинтересует также то, что QMQP более быстр, чем SMTP, и специально создан для ситуации, когда несколько почтовых серверов, соединенных с сетью медленными каналами, отдают исходящие сообщения серверу QMQP, а тот, имея широкий канал в Сеть, занимается обработкой очереди и централизованной рассылкой сообщений. – Примеч. науч. ред.
Postfix 2.1, но доступен в экспериментальной версии Postfix 2.2. anvil будет оставаться экспериментальным до тех пор, пока не будет накоплен достаточный опыт ограничения частоты запросов.