2007年12月18日火曜日

某学会メールサーバのSPAM対策

私の専門の関係者ならご存知の通り、私の所属する研究室で某学会のサーバを運用しているのだが、SPAMメールが大量に押し寄せてきてほとほと困っていた。会員用メーリングリストにはSPAMが流れないようにしているのだが、学会への連絡先メーリングリストは対策を施しておらず、しかもその性格上、WWWにアドレスを公開しなければいけないので、SPAMメールの餌食状態であった。数えたことはないが、1日に数百通というオーダではなかったろうか。しかもこの数字はSpam throttleを行った後のものである。

なんとかならないものかと調べていて、S25R(Selective SMTP Rejection)という対策を見つけた。いや、見つけたと言う表現は正確ではないか。前にこのページを見たことはあるけど、あまり深く読まなかった、というべきか。ともあれ、試してみる価値はあると考えた。

ただし、個人のサーバならともかく、学会のサーバである。対策をとった結果、正規のメールが受け取れないケースが多発するようでは問題だ。というわけで、まず、誤って拒否をする可能性が少ないと予想されるqgrey方式を導入して、様子を見ることとした。結果は、かなりのSPAMを排除してくれた。が、やはり、すり抜けてくるSPAMがそこそこあるようだ。

qgreyでしばらく運用してみたログを解析してみると、qgreyの処理対象となったSMTP接続は100%SPAMであった。目視なので見落としはあるかもしれないが、qgreyで処理された正規のメールは1日あたり1通もない。考えてみると、学会にメールを送るのは圧倒的に職場からの場合が多く、したがってS25Rのブラックリスト正規表現のパターンに引っかからない場合がほとんどであろうと予想できる。ならば、純粋なS25R方式を導入しても大丈夫ではないか。

というわけで、qmailにS25Rパッチをあて、運用を開始した。パッチ中に書かれているcontrol/{badremotehost, goodremotehost}は少々古いようだったので、S25R雑情報ブログホワイトリスト情報を参照して、最新のものに書換えた。

結果はというと…まさに驚異的の一語に尽きる。受け取るSPAMは1日10通程度にまで激減した。ログを解析すると、昨晩23:00から今日の12:00までにS25Rで一時拒否したSMTP接続数は2048。実に99%以上のSPAMを、受け取ることなく排除していることになる。この間、誤って拒否したメールは1通もないし、学会への正規のメールはちゃんと配送している。正直、ここまで効果があるとは予想していなかった。すり抜けてくる10通の多くは特定のドメインもしくはホストから出されているようなので、これについては個別にブラックリストパターンを書いたり、tcpdを使ってIPアドレスレベルで接続を拒否したりしている。10通なら、日常の仕事の合間でも充分解析作業ができる範囲である。

こんなすごい方法を編み出した浅見秀雄さんに大感謝である。

2 comments:

deo さんのコメント...

 こんにちは。S25Rの開発者です。
 お役に立っているようで、大変うれしいです。ご利用ありがとうございます。
 こちらの記事を私のブログで紹介させていただきました。

Takeo Kunishima さんのコメント...

開発者自らコメントをいただけるとは。こちらこそ大変助かっています。ありがとうございます。

某学会と書きましたが、日本データベース学会のことです。

そちらのブログにもコメントを入れさせていただきますね。