PositfixでのSPAM対策
(キュー投入前コンテンツフィルタ)
概要
「Postfix キュー投入前コンテンツフィルタ」の枠組みを利用したSPAM対策
「Postfix キュー投入前コンテンツフィルタ」とは
仕組みの説明はこちらをご覧ください。
http://www.postfix-jp.info/trans-2.2/jhtml/SMTPD_PROXY_README.html
Postfix内部に入り込んで、通信を中継します。
そして「必要があれば」それを変更します。(man in the middle のようなもの)
それを SPAMフィルタとして使うメリットは下記の通り。
- header_checks/body_checks(=1行毎の判断)よりも柔軟(=メール全体での判断が可能)。
- SPAMと見做した時点ではまだSMTP通信中のため、直接エラーコードを返せる。
(「キュー投入後コンテンツフィルタ」と違い、「受信のSMTP通信で成功」を返さない&エラーメールも発生せず)
content_filter.py の特徴
- base64 や quoted-printable をデコードした後の判定が可能 (メールヘッダだけでなく)SMTPレベルの MAIL FROM: / RCPT TO:、さらに XFORWARD(逆引き名、IPアドレス、ポート、HELO内容等)を含む判断が可能
- SPAM判定となり、エラーを返して受信拒否した場合も、全体の受信内容をファイルとして保存可能。 (つまり、SPAM条件が適正だったか正確な事後調査が可能。spam_dat.DBG=1以上で有効)
- ホワイトリストによる除外指定が可能。
- syslog に SPAM判定されたメールの message-id 及び、マッチした正規表現リストを出力。
content_filter.pyの組み込み方や設定ファイル(spam_dat.py)の書き方
githubに書いたので、そちらをご覧ください。
https://github.com/shirouzu/content_filter