なぜかここ数日で急激にSPAMが増え、私一人で1日1万通を超えるようになってしまったので、いまさらながらサーバサイドでSPAM対策。
SPAMの送信元を調べると、見事に分散していて手動登録ではとても間に合いそうに無いが、単純なrbl方式では誤登録が怖い。かといってS25Rやgreylistingのような再送要求系の手法はタイムラグが怖くてちょっと採用できない。で、妥協点として考え出したのが以下のような設定。
まずは、Postfixのmain.cf
smtpd_client_restrictions =
permit_mynetworks
check_client_access hash:/usr/local/etc/postfix/pass0
reject_rbl_client all.rbl.jp
check_client_access hash:/usr/local/etc/postfix/pass1
check_client_access regexp:/usr/local/etc/postfix/white-list.txt
reject_rbl_client bl.spamcop.net
permit
/usr/local/etc/postfix/pass0には、必ず受信を許可するサーバやドメインを列挙する。
###.### OK
xxx.com OK
yyy.org OK
/usr/local/etc/postfix/pass1は、次の1行のみ。
.jp OK
/usr/local/etc/postfix/white-list.txtは、こちらのページから入手できる、S25Rスパム対策方式で誤って阻止される正当なメールサーバを許可するためのホワイトリスト情報を加工して、.jpドメインのサーバを抜いたもの。
これで、ルールとしては以下のようになる。
要するに、jpドメインのホストについてはrbl.jpの登録情報だけを、それ以外のドメインのホストについては追加でspamcop.netの情報を採用する方針。gTLDとかがちょっと怪しくなるので、確実に受け取りたいものはpass0に登録するか、white-list.txtを使って誤登録対策とすると。spamcop.net採用の理由は調査したSPAM送信元の登録状況が良かったため。それだけ誤登録もありそうだけど、jpドメイン+ホワイトリストで国内のサーバをある程度外せるので、これで引っかかるサーバはしょうがないと割り切ることに。
とりあえずしばらくこれで様子見。