« judas 2009武道館 | トップページ | MySQL のINSERTが出来なくなった… »

2008.10.21

SPAM対策


外にさらしているサーバーへのSPAM…。いい加減にいやになってなんか対策を入れ込むことにした。
だって月曜日とかに出社すると未読メールが3000通とかだし…。

特定の相手からしかメールを受け取らないサーバー:

これは sendmail の tcp_wrapper 機能をONにする。
これならほとんど100%SPAMをブロックできます。
sendmail を tcp_wrapper 機能つきでコンパイルするのはちっとわかりづらい…

まず、以下の2行のみのテキストファイルを生成し、例えば myconfig.m4 として保存する
---
APPENDDEF(`confENVDEF',`-DTCPWRAPPERS')
APPENDDEF(`conf_sendmail_LIBS',`-lwrap')
---

んで、Build コマンド時に -f /home/hoge/work/myconfig.m4 とかいう感じでフルパスでこのファイルを指定すればOK
このファイルはパッケージ展開時の devtools/Site/site.config.m4 においておけばデフォルトで読み込まれるんだけど、アップデートされたときとかいちいち元ファイルをここにコピーしてから Build しないとならないのが面倒なので、Build 時にパラメータ指定することにしました。

あ、それと Fedora のときだけど、tcp_wrappersパッケージとは別にtcp_wrappers-develパッケージが必要になるんで注意が必要…

んで、インストールして /etc/hosts.deny は今までどおり
---
ALL: ALL
---
でとりあえず全拒否
/etc/hosts.allow で
---
sendmail: 127.0.0.1/255.255.255.255, \
192.168.0.0/255.255.0.0
---
みたいにして許可するIPを指定。
これでつつがなく動作しました。

で、問題は残りのサーバー。
まずは sendmail の機能のgreet-pauseを設定してみる。
これは外のサーバーから sendmail に接続しに来たときにわざと返答を指定秒数遅らせる。通常のメールサーバーはこの返答がくるまでだまってじっと待ってるわけ。
一方、SPAM送信ソフトは膨大な数のメールを短時間に送りたいもんだから相手の返答なんぞ待たずに次々としゃべりかけてくる。
でこの特性を利用して、返事をするまえに相手がしゃべり始めたら相手が出ていくまで相手の言ってることをすべて拒絶する…ってな機能らしい。

この機能は sendmail.cf に書けば有効になる。具体的には
sendmail.mc に
FEATURE(`greet_pause',`10000')dnl
と追加して、cf/cf/ の下で make install-cf とすればよいようだ。
上記の 10000 の指定は10秒間返事をしないということ。

で、これでそうだなぁ、20%くらいかな。いやもう少し低いかもしれないけど少しはSPAMをブロックできるし、正規のメールは100%大丈夫でした。

でもまぁ、これでもまだ多いんで、それに追加で greylisting を入れ込んでみた。
sendmail を使っているので milter-greylist を使ってみる…と、これ案外いいじゃないですか。100%ってわけには行かないけど、朝のメール受信が憂鬱になることは無くなった気がする。

greylist の入れ込みは…また、後日書いておこうっと。

|

« judas 2009武道館 | トップページ | MySQL のINSERTが出来なくなった… »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/4540/42860936

この記事へのトラックバック一覧です: SPAM対策:

« judas 2009武道館 | トップページ | MySQL のINSERTが出来なくなった… »