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
  • 4. /etc/postfix/client_access を作成します。ファイルの内容は、こんな感じ。
/^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みたいです。

■参考にしたページ