雑記

2000|01|
2003|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|09|11|
2009|02|03|05|06|07|08|10|11|12|
2010|01|03|04|05|06|07|08|09|10|
2011|05|06|09|10|
2012|03|07|09|12|
2013|01|02|04|05|07|08|10|11|
2014|04|05|08|10|12|
2015|01|05|
2016|09|
2024|06|
2025|01|

2008-02-07 [長年日記]

[FreeBSD] SPAM対策

なぜかここ数日で急激に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ドメインのサーバを抜いたもの。

これで、ルールとしては以下のようになる。

  1. mynetworksおよびpass0に登録されているクライアントは無条件で許可
  2. 1. で許可されなかった場合、rbl.jpに登録されているクライアントは拒否
  3. rbl.jpに登録されていない.jpドメインのクライアントは許可
  4. white-list.txtに登録されているクライアントは許可
  5. .jp以外のドメイン、および逆引きが設定されておらずホワイトリストにも未登録で、かつspamcop.netに登録されているクライアントは拒否

要するに、jpドメインのホストについてはrbl.jpの登録情報だけを、それ以外のドメインのホストについては追加でspamcop.netの情報を採用する方針。gTLDとかがちょっと怪しくなるので、確実に受け取りたいものはpass0に登録するか、white-list.txtを使って誤登録対策とすると。spamcop.net採用の理由は調査したSPAM送信元の登録状況が良かったため。それだけ誤登録もありそうだけど、jpドメイン+ホワイトリストで国内のサーバをある程度外せるので、これで引っかかるサーバはしょうがないと割り切ることに。

とりあえずしばらくこれで様子見。