Я следовал инструкциям на сайте postfix на как настроить фильтр содержимогоУ меня простой пример заработал довольно быстро, но после долгих часов борьбы я не смог заставить работать расширенный фильтр.
Я настраиваю все, как в примере, smtp прослушивает порт 25 на предмет нефильтрованных сообщений, у него есть фильтр, настроенный для передачи сообщений на порт 10025, который вызывает сценарий фильтра, и еще один прослушиватель smtp для отфильтрованных сообщений на порту 10026.
В простом примере сценарий является последней остановкой в потоке сообщений, он получает сообщение через стандартный ввод, выполняет свою работу и повторно вводит его с помощью sendmail.
В расширенном примере я не понимаю сообщения и не могу передать его. Мне удалось вернуть ответ: «550 материалов отклонено».
Я предполагаю, что мой вопрос в том, как сценарий получает тело письма и как он возвращает его в очередь почты? и как мне заставить все это работать?
main.conf:
content_filter = scan:localhost:10025
master.conf:
scan unix - - n - 10 smtp
-o smtp_send_xforward_command=yes
-o disable_mime_output_conversion=yes
-o smtp_generic_maps=
localhost:10025 inet n n n - 10 spawn
user=filter argv=/home/omri/filter.sh localhost 10026
localhost:10026 inet n - n - 10 smtpd
-o content_filter=
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks,no_milters
-o smtpd_helo_restrictions=
-o smtpd_client_restrictions=
-o smtpd_sender_restrictions=
# Postfix 2.10 and later: specify empty smtpd_relay_restrictions.
-o smtpd_relay_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o smtpd_authorized_xforward_hosts=127.0.0.0/8
В разделе Пример простого фильтра содержимого, вы можете использовать канал (например, stdin) для получения тела письма. В продвинутые, ваш сценарий должен работать как SMTP-сервер, так и как SMTP-клиент.
Фрагмент с той страницы.
Второй пример более сложен, но может дать лучшую производительность и с меньшей вероятностью будет возвращать почту, когда на машине возникают проблемы с ресурсами. Этот фильтр содержимого получает нефильтрованную почту с SMTP на порт localhost 10025., и отправляет отфильтрованную почту обратно в Postfix с SMTP на порт localhost 10026.
Для программного обеспечения фильтрации содержимого, не поддерживающего SMTP, прокси-сервер Bennett Todd SMTP реализует удобную структуру фильтрации содержимого PERL / SMTP. Видеть: http://bent.latency.net/smtpprox/.