Postfixスパムフィルター
Spam Scannerなら、Postfixサーバーのスパムフィルタリングを約5分で導入できます。milterとして動作するため、PostfixはSMTPセッション中に各メッセージについて問い合わせ、受け取る前にスパムを拒否できます。
インストールと実行#
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に接続する#
# /etc/postfix/main.cf
smtpd_milters = inet:127.0.0.1:7831
milter_protocol = 6
milter_default_action = acceptsudo postfix reloadmilter_default_action = acceptは、milterが停止しているときにメールをフィルタリングせずに通します。tempfailにすると、代わりに送信者に再送を求めます。
SMTPセッション中にスパムを拒否する#
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のルールでタグ付きのメールを振り分けます。
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の完全なガイド。