Следующий более сложный пример использования команды postkick показывает, как повторно поставить сообщение в очередь для незамедлительной доставки:
# cat queueidlist | postsuper r postkick public pickup W
В приведенной последовательности команда postsuper r – перемещает все выбранные сообщения, перечисленные в queueidlist, в очередь maildrop, где демон pickup будет обрабатывать их как любые другие сообщения. Таким образом вы устанавливаете фильтр содержимого в режим, соответствующий локальной обработке, и создаете дополнительный заголовок Received:. Команда postkick вызывает немедленный просмотр очереди maildrop. В противном случае сообщения останутся в очереди maildrop максимум на 60 секунд. Демон pickup передаст сообщение демону cleanup, где оно получит новый идентификатор queueid и будет помещено в очередь incoming. Общая задача состоит в максимально быстром перемещении сообщения в очередь active.
Карты – это файлы и базы данных, которые Postfix использует для поиска информации. Карты могут иметь разное назначение, но у них есть общий признак: левая сторона (left hand side, LHS), называемая ключом, и правая сторона (right hand side, RHS), называемая значением.
Приведем несколько примеров ключей и значений: Ключ Значение postmaster: John postmaster@example.com John 192.168.254.12 REJECT spammer@example.com REJECT /^Subject: your account {25}[a z]{8}/ REJECT Mimail Virus Detected
Демон master – управляющая программа Postfix; он осуществляет контроль над всеми остальными демонами Postfix. Демон master ожидает поступления входящих заданий для передачи их подчиненным демонам. Если работы много, то master может вызвать несколько экземпляров демона. Вы можете задать количество одновременно работающих экземпляров демона, частоту их повторного использования и величину периода простоя, после которого произойдет остановка экземпляра.
Если вы работали с сервером inetd на компьютере с UNIX, то обнаружите много общего между ним и демоном master.
bounce и defer
Агент передачи сообщений должен уведомить отправителя о невозможности доставить сообщения. В Postfix эту задачу решают демоны bounce и defer, а инициируется она диспетчером очередей (qmgr).
Существует два вида событий, которые могут вызвать отправку уведомлений – неисправимые ошибки и адресат, которого невозможно достичь в течение долгого периода времени. В последнем случае отправляется предупреждение о задержке.
В этой главе рассказывается о том, как работает Postfix, чем занимается каждый элемент системы и как все компоненты связаны друг с другом. После знакомства с этим материалом у вас должна сложиться целостная картина Postfix, и далее вы сможете заняться решением своих собственных задач.
Postfix включает в себя несколько программ, взаимодействующих с пользовательскими процессами (sendmail, postqueue, postsuper и т. д.), и большое количество программ, работающих в фоновом режиме. Программы, работающие в фоновом режиме, управляются демоном master.
На данный момент сервер Postfix имеет конфигурацию, которая доставляет почту хосту ретрансляции без разрешения имен и запрещает пересылку через собственный сервер. Однако сервер все еще звонит интернет провайдеру всякий раз, когда получает исходящее сообщение, адресованное в удаленную сеть. Для того чтобы изменить такое поведение и заставить Postfix ставить исходящие сообщения в очередь, отредактируйте файл main.cf, указав в параметре defer_transports, что следует отложить сеанс SMTP, как показано в следующем примере:
defer_transports = smtp
Как обычно, после внесения изменения выполняем postfix reload от имени root. После перезагрузки Postfix не будет доставлять сообщения по SMTP до тех пор, пока параметр defer_transports не будет изменен или отменен. В следующем разделе будет показано, как использовать эту функциональность для отправки сообщений при установлении соединения сервера с интернет провайдером.