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(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: для внешней системы фильтрации сообщений по содержанию тела сообщения.
localКак понятно из названия, демон local отвечает за доставку в локальные почтовые ящики. Postfix демон local может записывать данные в почтовые ящики форматов mbox и Maildir.2 Кроме того, local может обращаться за данными в формате Sendmail к базам данных alias и пользовательским файлам .forward.
Примечание
Эти возможности делают local аналогом агента отправки сообщений Sendmail, их пользовательские интерфейсы также совпадают.
В качестве альтернативы демон local может передать доставку в почтовые ящики локальному агенту доставки (local delivery agent – LDA), который имеет более широкие возможности, например поддерживает фильтрацию. Общераспространенными являются такие LDA, как procmail и maildrop. Postfix может запускать несколько экземпляров local.
virtualДемон virtual, который иногда называют виртуальным агентом доставки, – это упрощенный вариант local, осуществляющий доставку только в почтовые ящики. Это самый надежный агент доставки Postfix; он не выполняет подстановок по файлам alias и .forward.
Этот агент доставки может доставлять почту для нескольких доменов, что делает его особенно удобным для поддержки ряда небольших доменов на одной машине (это так называемый POP тостер) без настройки отдельной почтовой системы для каждого домена или интерактивного доступа пользователей к системе.
smtpДемон smtp – это клиентская программа Postfix, которая передает исходящие сообщения удаленным адресатам. SMTP клиент ищет
почтовые серверы назначения, сортирует список по предпочтениям и проверяет каждый адрес до тех пор, пока не найдет сервер, который ответит. При большой нагрузке в системе Postfix обычно работает несколько демонов smtp одновременно.
lmtpДемон lmtp взаимодействует с локальным и удаленным серверами почтовых ящиков по протоколу LMTP2 (Local Mail Delivery Protocol), который определен в RFC 2033. Часто используется совместно с сервером Cyrus IMAP
Преимущество использования клиента lmtp заключается в том, что управлением очередями занимается Postfix и одна Postfix машина может по протоколу LMTP обслуживать много серверов почтовых ящиков (на которых должны работать демоны LMTP). Обратное также верно: несколько Postfix машин могут обслуживать один сервер почтовых ящиков по LMTP. На таких серверах почтовых ящиков может, например, работать Cyrus IMAP.
pipeДемон pipe обеспечивает клиентский интерфейс для исходящих соединений к другим почтовым транспортным механизмам. Он вызывает программы с параметрами и отправляет тело сообщения по каналу (pipe) на их стандартный ввод.
pickupДемон pickup забирает сообщения, помещенные в очередь maildrop локальной клиентской программой отправки почты. После выполнения ряда проверок pickup передает сообщения демону cleanup.
smtpdДемон smtpd обеспечивает взаимодействие с сетевыми почтовыми клиентами, отправляющими сообщения через Postfix по SMTP. Демон smtpd проводит ряд проверок для защиты остальной части системы Postfix. Его можно настроить так, чтобы он занимался проверкой входящей почты на спам (локальные или сетевые черные списки, поиск в DNS, другие клиентские запросы и т. д.). smtpd передает сообщение демону cleanup.
cleanupДемон cleanup реализует последний этап обработки новых сообщений. Он добавляет недостающие заголовки, корректирует преобразование адреса и (если надо) извлекает адреса получателей из заголовков сообщений. Демон cleanup помещает результат в очередь incoming, затем уведомляет диспетчер очередей о прибытии нового сообщения.
sendmailsendmail – это команда Postfix, которая подменяет собой MTA Sendmail Эрика Оллмана (Eric Allman). Ее задача заключается в предоставлении совместимого с Sendmail интерфейса для приложений, способных только вызывать /usr/sbin/sendmail. Она взаимодействует с программой postdrop для помещения сообщений в очередь maildrop, откуда их заберет pickup.
Примечание
Использование команды sendmail – это самый медленный способ помещения сообщений в систему очередей Postfix. Если вам нужно одновременно отправить большое количество сообщений, воспользуйтесь SMTP.
qmqpdQMQP сервер Postfix реализует протокол QMQP (Quick Mail Queuing Protocol – быстрый протокол постановки почтовых сообщений в очередь с целью обеспечения совместимости Postfix с qmail и диспетчером списков ezmlm.
anvilДемон anvil – это предварительная защита от атак типа «отказ в обслуживании», при которых клиенты засыпают SMTP сервер огромным количеством одновременных или последовательных попыток соединения. В нем предусмотрена возможность отмены ограничений для авторизованных клиентов. Демон anvil не включен в версию Postfix 2.1, но доступен в экспериментальной версии Postfix 2.2. anvil будет оставаться экспериментальным до тех пор, пока не будет накоплен достаточный опыт ограничения частоты запросов.