virtual_transport
を使用して受信メールをトランスポートspamassassin
(main.cf: virtual_transport=spamassassin
) に渡し、スキャンしたメールを sendmail を使用して postfix に再挿入したいと思います。
トランスポートは次のようになります。
spamassassin unix - n n - - pipe
flags=hu user=vmail:mail argv=/usr/bin/spamc -u ${recipient} -e /usr/sbin/sendmail -f ${sender} ${recipient}
これは、postfix ドキュメント:
大量のメールを扱うサイトでは、Postfix sendmail(1) および postdrop(1) 経由でスキャンされたメールを再挿入する「単純な」コンテンツ フィルタの使用を避ける必要があります。
現在の sendmail 呼び出しでは/usr/sbin/sendmail -f ${sender} ${recipient}
、メールはキューに戻され、その後 spamassassin に戻されるなどしてループします。
postfix のドキュメントから私が理解したところによると、postfix を使用して配信されたメールはディレクトリsendmail
にドロップされmaildrop
、 を使用してピックアップされますpickup
。キューを回避するためにピックアップ トランスポートに を追加しようとしました-o virtual_transport=dovecot
が、効果はありませんでした。(これらのオプションは、おそらく SMTP トランスポートにのみ追加できます)。
ループを起こさずに、spamassassin でスキャンされたメールを最終配信のキューに再度挿入するにはどうすればよいでしょうか?
答え1
ループを起こさずに、spamassassin でスキャンされたメールを最終配信のキューに再度挿入するにはどうすればよいでしょうか?
いいえ、できません
説明
メールをSpam Assassinにパイプする理由は理解できますvirtual_transport
。 宛てのメールだけをスキャンしたいのですvirtual_mailbox_domain
。残念ながら、推奨 シンプルなコンテンツフィルターの設定content_filter
代わりにパラメータを使用しますvirtual_transport
。
virtual_transport
pickup または smtpd に渡せないのはなぜですか?
一般的に、ここではPostfixコードを介して電子メールの旅
Input --> cleanup --> qmgr --> Output
*smtpd *local
*pickup *virtual
*qmqpd *smtp
*lmtp
*pipe
デーモンではcleanup
、仮想、ローカル、SMTP、またはその他のトランスポートに属しているかどうかに関係なく、Postfix が電子メールを「ルーティング」します。 1 つの例外は、非空白content_filter
パラメータが入力サービス ( smtpd
、pickup
、qmqpd
) に渡された場合です。 この場合、Postfix はメッセージ ルートを上書きし、代わりに電子メールを に送信しますcontent_filter
。
もう一つの注意点は、デフォルトではすべてのPostfixサービスは、main.cf
以下を使用して上書きしない限り、パラメータ値を取得します。-o パラメータ=値 オンmaster.cf
。ただし、すべてのパラメータがman 5 postconf
サービスで使用されるわけではありません。たとえば、コンテンツフィルターのみで使用されるためpickup
、smtpd
qmqpd
-o コンテンツフィルター=amavis:[127.0.0.1:10025もう一つの例としては、-o SMTP バインドアドレスこのパラメータはサービスsmtpd
でのみ使用されますsmtp
。
同じ議論は、「なぜ私は合格できるのか」という質問にも当てはまります。-o 仮想トランスポートでpickup
?"
セットアップにはいくつかの選択肢があります
postfix のドキュメントの説明に従って使用してください
content_filter
。欠点は、ドメイン外に中継された電子メールもスキャンされることです。使用
content_filter
ACCESSテーブルとFILTERアクション経由. この方法では、受信メールを選択的にスキャンできます。残念ながら、virtual domain
そのテーブルに を再度登録する必要があります。permit_mynetworks
. の後に ACCESS テーブルを慎重に配置することで、これを回避できますpermit_sasl_authenticated
。 この方法では、送信メールは既に許可されており、受信メールのみがスキャンされます。(OPコメントのクレジット:) )使用Postfix 複数インスタンスこの方法を使用すると、パラメータを保持でき
virtual_transport
、spamc は 2 番目のインスタンスに電子メールを挿入します。その後、virtual_transport
異なるインスタンスで異なるものを定義できます。ただし、セットアップをシンプルに保ちたい場合は、少しやりすぎです。