阻止率99%のスパム対策方式の研究報告
を安全に組み込むことを考えています。
spamの可能性の高い接続元からは、再送するように返して、その後再送があったときにはspamじゃない可能性が高いので、自動的にホワイトリストに入れて受信させるように考えました。
そこで、PbSのソースを修正して書こうと思っていたんですが、これってそのままGreylistingだな、ということに気づいて、そっちにこの方法を足す、という形で考えました。
Greylistingについては下記参照。
[postfix-jp:03911] Greylisting
greylisting
つまり、一度必ず再送要求で返して、ちゃんと再送してきたら受け取るというものです。
これを、あやしい接続元に対してだけ再送要求で返せば、Greylistingによるメールの遅延(といっても5,6分ですが)や接続要求が増える(正しいメールでもかならず2回のSMTP接続が必要になるため)ということもなく、spamも受け取らなくて済むという、いいとこどりの設定になるはずです。
Postfixは2.1よりSMTPDアクセスポリシーという機能が使えるようになり、外部のポリシーサーバにより、接続の許可などを行わせることが出来るようになっています。
Postfix SMTP Access Policy Delegation
この機能を使って、Greylistingの実装がサンプルで付いてきているのですが、その他にも、
Postgrey - Postfix Greylisting Policy Server
というものが公開されています。
これは whitelists が指定できるのですが、ちょこっと改造して、まず先にチェックすべき接続元、ここでは greylists と呼ぶとすると、これのどれかに合致しているなら、チェックする必要がある、ということになります。
しっかり動くことが確認できたらパッチを公開しようと思います。
(関連)
id:stealthinu:20040908#p3