Postfixスパムフィルター

Spam Scannerなら、Postfixサーバーのスパムフィルタリングを約5分で導入できます。milterとして動作するため、PostfixはSMTPセッション中に各メッセージについて問い合わせ、受け取る前にスパムを拒否できます。

インストールと実行#

Shell
npm install --global spamscanner
spamscanner milter --port 7831 --auth --subject-tag "[SPAM]"

--authはSPF、DKIMDomainKeys Identified Mail。メッセージに付ける署名で、送信者のDNSで公開された公開鍵を使って検証します。、DMARCあるドメインを名乗るメールがSPFとDKIMのアライメントに失敗したとき、受信側がどう扱うべきかを示すDNSのポリシー。、ARCを検査し、--subject-tagは件名でスパムを示します。どのメッセージにもX-Spam-Flag、X-Spam-Score、X-Spam-Status、X-Spam-Actionヘッダーが付き、送信者が入れたX-Spam-*ヘッダーは先に削除されます。

Postfixに接続する#

INI
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_protocol = 6
milter_default_action = accept
Shell
sudo postfix reload

milter_default_action = acceptは、milterが停止しているときにメールをフィルタリングせずに通します。tempfailにすると、代わりに送信者に再送を求めます。

SMTPセッション中にスパムを拒否する#

Shell
spamscanner milter --port 7831 --auth --reject

拒否のしきい値(15点)に達したメッセージは、451 4.7.1 Message rejected as spamで拒否されます。451は一時的なエラーです。送信者はメッセージを保持して再送するため、判定を誤っても遅延が生じるだけで、メッセージは失われません。結果が正しいと確認できたら、--reject-code 550で拒否を恒久的にできます。

milterを使わない場合#

コンテンツフィルターは、Postfixがメッセージを受け取った後に動作します。Postfixがメッセージをspamscanner filterに渡し、ヘッダーを追加して返します。セッション中に拒否することは一切なく、失敗したときは常にバウンスではなく配送の延期になります。コンテンツフィルターの設定

スパムを迷惑メールフォルダーへ#

Dovecotでは、Sieveのルールでタグ付きのメールを振り分けます。

Text
require ["fileinto"];
if header :is "X-Spam-Flag" "YES" { fileinto "Junk"; stop; }

実際のPostfixでテスト済み#

プロジェクトのエンドツーエンドテストでは、milterとコンテンツフィルターを使ってPostfixを動かします。ハムはヘッダー付きで配送されて偽造されたX-Spam-Flagは削除され、スパムはタグ付けされ、GTUBEはSMTPセッション中に550で拒否されます。

次へ:systemdユニットとSendmailのINPUT_MAIL_FILTERを含むPostfixとSendmailの完全なガイド。

このページをGitHubで編集 · Markdown ·