コンテンツフィルターの設定方法 の接尾辞のWebサイトの指示に従いました。簡単な例をすぐに起動して実行できましたが、長時間の苦労の末、高度なフィルターを機能させることができませんでした。
例のようにすべてをセットアップします。smtpはフィルターされていないメッセージをポート25でリッスンし、フィルタースクリプトを呼び出すポート10025にメッセージを渡すようにフィルターが設定され、ポート10026でフィルターされたメッセージを別のsmtpリスナーが使用します。
簡単な例では、スクリプトはメッセージフローの最後の停止であり、標準入力を介してメッセージを取得し、その作業を実行し、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クライアントの両方として機能する必要があります。
そのページからスニペット。
2番目の例はより複雑ですが、パフォーマンスが向上し、マシンでリソースの問題が発生したときにメールが返送される可能性が低くなります。 このコンテンツフィルターは、ローカルホストポート10025でSMTPを使用してフィルタリングされていないメールを受信し、SMTPをオンにしてPostfixにフィルタリングされたメールを送り返しますローカルホストポート10026。
SMTP非対応のコンテンツフィルタリングソフトウェアの場合、Bennett ToddのSMTPプロキシは、Nice Perl/SMTPコンテンツフィルタリングフレームワークを実装します。参照: http://bent.latency.net/smtpprox/ 。