Qgreyを作ったあたりちょっと考えていたネタなのですが、S25RをSpamAssassinに組み込めないかと思っていました。
S25Rを入れる時、抵抗になるのは、誤判別とそれを拾う方法がない、ということだと思います。
Rgreyは拾う方法としてgreylistingを使いましたが、greylistingではじいてしまったものは、やはり拾う(ゴミを確認する)方法はありません。
SpamAssassinのように、受けてからコンテンツフィルタでゴミ箱へ捨てる場合、最終的に人間が判別できる、という逃げ道があるので、メール管理者側は導入しやすいと思います。
で、そこにS25Rによる判別を、SpamAssassinのポイント付けにも使えないか、と考えました。
最初は、SpamAssassinにS25R判定用の組み込みモジュールを作ることで実現しようと考えていましたが、先日やまやさんに教えていただいたPREPEND使う方法だと、全く作り込み無しの設定だけで利用できるようになることがわかりました。
つまり、
阻止率99%のスパム対策方式の研究報告 ―― Selective SMTP Rejection (S25R)方式 ――
のPostfixの設定で、「450」を返しているところを「PREPEND」にしてやると。
具体的には、/etc/postfix/client_restrictions (に該当するファイル)を
/^[^\.]*[0-9][^0-9\.]+[0-9]/ 450 may not be mail exchanger
らの行を全て
/^[^\.]*[0-9][^0-9\.]+[0-9]/ PREPEND X-S25R: may not be mail exchanger
とかに変更してやって、SpamAssassin側の設定では
header X_S25R X-S25R =~ /^may not be mail exchanger$/ describe X_S25R may not be mail exchanger score X_S25R 3.0
とかしてあげる。
その他にも、MXやNSによる拒否も、このようにして利用してやることが出来、こちらのほうが捨てないのでより安全になると考えられます。
ただ、S25RやRgreyでは、負荷軽減という意図もあるのですが、その利点は無くなります。
まだテストもしてないので、試してみてもうちょい設定等もまとめて、またまとめた文書を載せたいと思います。
(関連)
阻止率99%のスパム対策方式の研究報告 ―― Selective SMTP Rejection (S25R)方式 ――
MTA のアクセス制御
Rgrey - Selective SMTP Rejection + postgrey パッチ
モーグルとカバとパウダーの日記 - スパマーのネームサーバでフィルタリング