spam対策
あまりにもサーバに投げつけられるスパムがひどいので、本格的に対策を考えることにしました。
で、選んだのはけっこうneatではないかと思える手法。
スパムメールの発信者は、たいていの場合、(1)DNSにドメインを登録していないか、ダイナミックDNSを使っていて、(2)一度に大量のメールを送信するので、待たされることを嫌います。そこで、(1')DNSでドメインネームが引けないか、あるいは明らかにダイナミックDNSを使っているという場合に、(2)意図的にsmtpの返事を遅延させることで、メールを受け付けないという設定にしてやると、スパムメールを受け取らなくてすむ、というしかけ。
具体的には、postfixの設定ファイルを書き換えます。もっとも、下準備が必要。以下手順。
- 1. まずpostfixのバージョンを確認します。必要なのは、できればpostfix 2.3以降(2.2だとパッチ当てが必要)。サーバのpostfixのバージョンを確認してみたら、なんと1.1という超古いバージョンを使っていたということが判明しました。orz さっそく圧縮されたソースファイルをダウンロード。2.3.13にしました。(2.4とかも出てます。)
- 2. これを適当な作業ディレクトリにおいて、tarで解凍します。圧縮ファイルを展開したディレクトリに移動してmake。コンパイルが行われて実行ファイルができたら、今度は「make install」(新規インストール)か「make upgrade」(アップグレード)します。新規インストールの場合は、ユーザグループの設定とかほかにもいろいろやることがあると思います。
- 3. /etc/postfix に設定ファイルが置いてあるはずなので、main.cfを書き換えます。どこかに、次の記述を追加します。
smtpd_client_restrictions = permit_mynetworks, check_client_access regexp:/etc/postfix/client_access, reject_rbl_client relays.ordb.org,permit
/^unknown$/ sleep 90 /^[^\.]*[0-9][^0-9\.]+[0-9]/ sleep 90 /^[^\.]*[0-9]{5}/ & nbsp; sleep 90 /^([^\.]+\.)?[0-9][^\.]*\.[^\.]+\..+\.[a-z]/ sleep 90 /^[^\.]*[0-9]\.[^\.]*[0-9]-[0-9]/ sleep 90 /^[^\.]*[0-9]\.[^\.]*[0-9]\.[^\.]+\..+\./ sleep 90 /^(dhcp|dialup|ppp|adsl)[^\.]*[0-9]/ sleep 90
- 5. 「/usr/sbin/postmap /etc/postfix/client_access」を実行して、設定を反映させます。
- 6. 「/etc/init.d/postfix restart」でpostfixを再起動。
これで完了。念のためMLへの投稿ができるかとか、携帯から送れるかとか、テストしてみました。いちおうOKみたいです。