postgreyでかなりのspamを減らすことができるようになった。
が、問題は最初はすべてのメールに対して再送要求を行なうため、メール配信の遅延が大きいということだ。
whitelistを作成し、どんどん登録していくというのが一番確実な手段なのだが、永遠に続く不毛な作業だ...
そこで、導入することにしたのは、postgreyの公式ページでもパッチが紹介されているtaRgrey。
taRgrey - S25R + tarpitting + greylisting (tarpit + greylist policy server)
S25R(Selective SMTP Rejection:選択的SMTP拒絶)は、浅見氏が考案されたスパム対策技術で紹介されている、エンドユーザー回線からのSMTP接続を拒否する手法。ただし、これは、自宅でメールサーバを運用している場合など、誤検出の危険が無いとはいえない。
そこで、S25Rにsarpitting(SMTPサーバの応答遅延)とgreylistingを組み合わせ、誤検出を少なくしたものがtaRgrey。
postgreyに対するパッチの形で提供されているので、taRgreyのサイトから使用しているpostgreyのバージョンに対応するパッチをダウンロード。
# pushd /usr/sbin
# patch -p0 < ~/targrey-0.31-postgrey-1.32.patch
次に、postgreyの起動オプションを変更
# vi /etc/init.d/postgrey
OPTIONS="--unix=$SOCKET --inet=10023 --tarpit=125 --targrey --retry-count=2 --delay=3600"
/etc/postfix/main.cfを修正し、テーブル定義ファイルを追加。
これらは、とりあえずtaRgreyのサイトで設定ファイル例として配布されているものをほぼそのまま使用した。
書き換えたのはreject_heloの最初の自分のドメインの設定くらいか。
そして、正規表現以外のものはhashテーブルを作成して、postfixを再起動。
# vi /etc/postfix/main.cf
# vi /etc/postfix/whitelist_recipient
# postmap /etc/postfix/whitelist_recipient
...
# postfix reload
とりあえず、運用は2日弱だが、Spamの数は激減した。
あとは今後来るスパムを監視して、適度にブラックリストを追加していくくらいで済むとよいのだが。
postgreyのDBには以下のように登録される。
# ls -l /var/spool/postfix/postgrey/
- postgrey.db 再送待ち
- postgrey_clients.db オートホワイトリスト
- tarpit_clients.db tarpitを抜けなかったリスト