Некоторые соображения о фильтрах-посредниках
При работе с smtpd_proxy_filter помните о следующих обстоятельствах:
ESMTP-взаимодействие
Postfix отправляет сообщения фильтрующему приложению по ESMTP, но не использует конвейеризацию команд. Postfix-демон smtpd генерирует собственные команды EHLO, XFORWARD (для записи в журнал IP-адреса почтового клиента вместо localhost[127.0.0.1]), DATA и QUIT. В остальном Postfix просто пересылает неизмененные копии команд MAIL FROM и RCPT TO, которые демон smtpd «до фильтрации» получил от удаленного почтового клиента.
Требования к внешнему приложению
Фильтр (который должен понимать SMTP) должен использовать тот же синтаксис команд MAIL FROM и RCPT TO, что и демон smtpd в Postfix.
Возврат сообщений в систему
Предполагается, что фильтрующее приложение передаст неизмененные команды SMTP от smtpd «до фильтрации» экземпляру smtpd «после фильтрации» (который обычно прослушивает нестандартный порт для возврата сообщений по пути, не использующему тот же самый фильтр; все происходит аналогично случаю применения механизма contentfilter, который обсуждался ранее в этой главе).
Отклонение содержимого
Если фильтр отвергает содержимое, он должен отправить отрицательный SMTP-ответ (код 5xx) обратно демону smtpd «до фильтрации», а затем прервать соединение с демоном smtpd «после фильтрации», не завершая SMTP-диалог с ним. В противном случае демон «после фильтрации» может случайно доставить сообщение.