会社のサーバが、spam 多くてやってられないので、ためしに spamd を入れて みました。spamd にはいくつかありますが、これは OpenBSD の pf とともに配られているもののことです。私はNetBSDで使っています。

spamdは、SMTPサーバのフリをします。これと、カーネルの pfモジュールを組 み合わせて使います。

pf モジュールは、最近のバージョンの改善で、カーネル内でテーブルをつくる ことができるようになり、アドレスがこれらのテーブルにマッチしたかどうか で動作を変えることができるようになりました。

spamd は port 8025 で待っていて、二つの動作モードで動作しています。

ノーマルモード

コネクションに対して、非常にゆっくりした応答を返した上で切ります。

Grey List(灰色)モード

当該のコネクションが、既知のリストでなければ、一時的に受けられないといっ て、いったん切り(GREY状態)ます。

一定時間以上たった後に、同一メールが再送されたときは、当該アドレスからは 白であると指定した上で、25番ポートでまっている、正しいSMTPサーバに接続 するようにします。(この点から、一見さんお断りプロトコルとも言われています。。)

これだけのことで、相当量 spam 減っている感じです。

設定自体は、まだドキュメンテーションが中途半端なので、迷うかもしれない ですが、実は簡単で、

  1. kernel で pf と pflog pseudo-device を使えるようにする
  2. /etc/pf.conf に、以下を設定します。
    table  persist
    table  persist
    
    rdr pass inet proto tcp from  to any port smtp \
            -> 127.0.0.1 port 8025
    rdr pass inet proto tcp from ! to any port smtp \
            -> 127.0.0.1 port 8025
    
    これで、spamd テーブルに乗っているアドレスから、あるいは、spmad-white リストにのっていないアドレスからの port 25 へのコネクションは port 8025へ向けられます。
  3. spamd を -g オプションつき(Greylist)で起動します。/etc/rc.localで 設定しておきます。このとき、spamd-setup を直前で実行しておきます。
  4. spamd-setup を cron から定期的に実行するように設定します。

これで、動作します。

spamd-setup は、既知のspam送信元リストをOpenBSDのサイトからdownload して、spam テーブルに追加するスクリプトです。定期的に走らせます。

必要に応じて、white list に追加することができます。spamd の greylist モードでは、spamdb にデータを登録しています。このデータベース の内容は spamdb コマンドで参照、追加、削除できます

とりえあず、しばらく使ってみようと思います。


Archived comment:

kimitake 23 Jul 2005

上記 pf.conf の設定のところで spamd と spamd-white の箇所の本文にそのままカギ括弧使ってるので表示から消えちゃってますです。

blog comments powered by Disqus