contentfilter: сначала постановка в очередь, затем фильтрация
Для настройки почтовой службы с использованием механизма con-tent_filter вам потребуются два экземпляра smtpd (рис. 11.1). Первый демон smtpd принимает нефильтрованные сообщения и использует con-tent_filter для передачи сообщений внешнему фильтрующему приложению. Второй экземпляр smtpd занимается прослушиванием соединений от внешних приложений, чтобы сообщения могли вновь попасть в систему очередей Postfix для последующей обработки.
Предупреждение
При настройке второго экземпляра учтите, что он не должен использовать указанное в content_filter приложение, запускаемое первым экземпляром. Возник бы бесконечный цикл, в котором Postfix отправлял бы сообщение фильтрующему приложению, и это сообщение возвращалось бы на то же место, что и раньше, в очереди Postfix.

Вот как это работает:
1. Экземпляр smtpd, настроенный с contentfilter, передает сообщение демону cleanup, который передает его диспетчеру очередей.
2. Диспетчер очередей передает сообщение демону smtp, lmtp или pipe для доставки его внешнему фильтрующему приложению.
Примечание
На рис. 11.1 изображен один из трех возможных сценариев работы, когда диспетчер очередей qmgr передает почту демону smtp.
3. Внешнее фильтрующее приложение принимает сообщение и обрабатывает его.
4. Если фильтрующая программа передает сообщение обратно в систему Postfix, она подключается к Postfix-демону smtpd, настроенному для работы без использования contentfilter.
5. Второй экземпляр smtpd передает сообщение диспетчеру очередей.
6. Postfix доставляет сообщение локально или пересылает его на другой почтовый сервер.
В дополнение к сообщению Postfix может отсылать внешнему фильтрующему приложению дополнительную информацию. Какая именно информация передается, зависит от того, какой демон (lmtp, smtp или pipe) Postfix вызывает для отправки сообщения приложению.