HOME IP Messenger FastCopy Tech-memo Diary 作者Twitter [English]

PositfixでのSPAM対策
(キュー投入前コンテンツフィルタ)

白水啓章
作成 2019/08/05

概要

「Postfix キュー投入前コンテンツフィルタ」の枠組みを利用したSPAM対策

「Postfix キュー投入前コンテンツフィルタ」とは

仕組みの説明はこちらをご覧ください。
http://www.postfix-jp.info/trans-2.2/jhtml/SMTPD_PROXY_README.html

Postfix内部に入り込んで、通信を中継します。
そして「必要があれば」それを変更します。(man in the middle のようなもの)

それを SPAMフィルタとして使うメリットは下記の通り。

  1. header_checks/body_checks(=1行毎の判断)よりも柔軟(=メール全体での判断が可能)。
  2. SPAMと見做した時点ではまだSMTP通信中のため、直接エラーコードを返せる。
    (「キュー投入後コンテンツフィルタ」と違い、「受信のSMTP通信で成功」を返さない&エラーメールも発生せず)

content_filter.py の特徴

  1. base64 や quoted-printable をデコードした後の判定が可能 (メールヘッダだけでなく)SMTPレベルの MAIL FROM: / RCPT TO:、さらに XFORWARD(逆引き名、IPアドレス、ポート、HELO内容等)を含む判断が可能
  2. SPAM判定となり、エラーを返して受信拒否した場合も、全体の受信内容をファイルとして保存可能。 (つまり、SPAM条件が適正だったか正確な事後調査が可能。spam_dat.DBG=1以上で有効)
  3. ホワイトリストによる除外指定が可能。
  4. syslog に SPAM判定されたメールの message-id 及び、マッチした正規表現リストを出力。

content_filter.pyの組み込み方や設定ファイル(spam_dat.py)の書き方

githubに書いたので、そちらをご覧ください。
https://github.com/shirouzu/content_filter