web-dev-qa-db-ja.com

Mailscanner&Postfix:カスタムヘッダー付きのメッセージを除くすべてを保留

ATM私は通常の方法を使用してすべてのメッセージをHOLDに置き、 http://www.mailscanner.info/postfix.html で説明されているようにpostfixからMailScannerにメッセージを渡します。

Postfix構成ファイル/etc/postfix/main.cfに次の行を追加します。

header_checks = regexp:/etc/postfix/header_checks 

ファイル/ etc/postfix/header_checksに、次の行を追加します。

/^Received:/ HOLD 

これの効果は、すべてのメッセージをHOLDキューに移動するようにPostfixに指示することです。

しかし、カスタムヘッダーで識別されるメッセージであるMailScannerを介して渡す必要のないSMTPメッセージがいくつかあります。これらのメッセージに対してMailScannerをバイパスする方法を見つける必要がありますが、From:またはTo:アドレスではなく、カスタムヘッダーの存在を確認する必要があるため、見つけることができません。

/ etc/postfix/header_checksを変更しようとしました:

/^X-Custom-Header:/ FILTER smtp:[ip.addr.next.hop]:10025

mail.logに、フィルタリングされたメッセージが表示されます。

Aug 19 17:52:17 servername postfix/cleanup[19423]: AFB842E33A: filter: header X-Custom-Header: from relay.sender.foo[xx.yy.zz.kk]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.sender.foo>: smtp:[ip.addr.next.hop]:10025

上記のルールがheader_checksの唯一のルールである場合、SMTP経由でネクストホップに配信されます。

ここで、Mailscanner(Postfix HOLDキュー)で他のすべてをキャッチする必要があるので、header_checksにそれを行うように指示するにはどうすればよいですか?/^ Received:/を離れると、AFB842E33AもHOLDキューに保持されていることを確認してください。

たぶんばかげた質問ですが...何か考えはありますか?

4
Zixyar

はい、解決策さえあります。これはheader_checksと呼ばれ、*_restrictionsの一部です。形式(必要なものによって異なります)は、それ自体で説明されています ドキュメント

しかし、MailscannerやSpamassassinのようなアフターキューフィルターの使用はお勧めできません。スパムを減らして送信者に通知するためのより良い方法は、組み込みのpostscreenclient_restrictionssender_restrictionsrecipient_restrictions、before-queuemiltersのようなbefore-queue-filtersです。およびpolicyd-weightなどの外部ツール。

Before-queue-filtersのみがサーバーの負荷とリソースを削減し、サーバーに到達する前にすべてのスパムの80%をブロックできます。特にMailscannerは、Postfixに統合されていないだけで、Postfixの組み込みインターフェースをスパム対策フィルターや一般的なフィルターに使用できないため、私の個人的な「嫌いなリスト」に載っています。

編集:編集された質問のため、今すぐ回答します。

FILTERは、Postfixがheader_checks-ファイルで動作するのを停止するアクションではありません。 「フィルタリングするチェックが終了したら」とだけ表示されます。したがって、次の行が一致し、メールが保留になります。

解決策は(たとえそれが不自由に見えても)次のheader_checks-ファイルです:

/^X-Custom-Header:/ FILTER smtp:[ip.addr.next.hop]:10025
/^X-Custom-Header:/ OK
/^Received:/ HOLD    
3
mailq