Jul 23, 2005

spamd の使い方

OpenBSD はずいぶん前から spamd という smptd のダミーデーモンが標準装備(ただし設定自体はコメントアウトされているのでデフォルトでは無効)で、なんとなく気にはなっていたが自宅サーバー宛にはあまり SPAM メールは来ないのでほったらかし状態だったが、ちと試してみた。

ちなみに一体何をするものかというと、smtpd の代わりに SMTP コネクションを引き受け、送信元の IP が blacklist に載ってないかなどチェックするもの。通常 8025 ポートで動作していて、pf のリダイレクト機能使って 25 ポートへのアクセスを spamd に渡す。 ということで、ゲートウェイとして動いてなくてもまずは pf を有効にする必要があるので /etc/rc.conf の pf のところを YES に変更。さらに spamd_flags を "" に、spamd の greylist 機能を使う場合は(ってか使った方がいいみたい)それを YES に設定する。 次に /etc/pf.conf の設定。といっても最近の OpenBSD の pf.conf には spamd に関する項目がすでに記述されていて、コメントアウトされてるので、それを外せばいい。

table <spamd> persist
table <spamd-white> persist
table <spamd-local> persist file "/var/mail/locallist.txt"

rdr pass on $ext_if proto tcp from <spamd-local> to port smtp \
    -> 127.0.0.1 port smtp
rdr pass on $ext_if proto tcp from <spamd> to port smtp \
    -> 127.0.0.1 port spamd
rdr pass on $ext_if proto tcp from !<spamd-white> to port smtp \
    -> 127.0.0.1 port spamd

bold で書いたところはデフォルトには無かった部分。これについてはまた後で。

 次に /etc/spamd.conf の設定。いくつかのサイトから blacklist IP の一覧を取得できるようになっていて、この設定ファイルの一番上、all のところに使うサイト名を書く。デフォルトでは spamhaus:china:korea となっていて、どれも blacklist。それぞれの blacklist の後ろに whitelist を記述すると、blacklist の中から whitelist にある IP を削除して使用してくれる。ってなことで自分は次のように書いてみた。

all:\
    :spamhaus:whitelist:spews1:whitelist:(途中省略):korea:whitelist:blacklist:

最後の blacklist は自前の blacklist で、各 blacklist の後ろにある whitelist が自前の whitelist (ってなんか変過ぎるぞ、日本語)。それと途中省略してるところは、spamd.conf にデフォルトで書かれてあったサイト名 + whitelist をセットで全部書き込んでみた。 さらに spamd.conf の下の方に whitelist に関する記述がコメントアウトされてるので、有効に。ついでに自前 blacklis 用の記述を追加。

whiltelist:\
        :white:\
        :file=/var/mail/whitelist.txt:
blacklist:\
        :black:\
        :msg="SPAM. Your address %A is in my blacklist.":\
        :file=/var/mail/blacklist.txt

それから pf.conf で設定したファイル /var/mail/locallist.txt を作成。 以上で設定終了。spamd を -g オプション付き(greylist有効)で起動。次に pfctl -e -f /etc/pf.conf で pf 起動。/usr/libexec/spamd-setup を実行して blacklist を更新する。これは cron で定期的に実行するようにする。これも root の crontab に1日1回の設定がすでに登録してあってコメントアウトされてるので、有効にすればいい。 とりあえず telnet localhost 25 とやって、

...spamd IP-based SPAM blocker...

ってな返事がもらえたらオッケー。

ところで greylist って何かというと、その名の通り blacklist でも無く whitelist でも無い IP のリスト。 spamd は接続があると、送信元 IP が blacklist にあるかどうかチェック。あれば接続を断る。無ければ一旦 451 を返して、一時的に受けられないと返事して(Grey状態)、一定時間後に再送要求があったら受信して、以後の接続に関しては通常通り処理する(White状態)。一定時間というのは spamd の起動オプション -G で変更できるが、デフォルトでは 25分。さらに4時間以内に再送されなければ Grey状態が無くなり、一旦 White状態になっても 36日で期限切れになる。

なんでこんなことするかというと、SPAM ホストはとにかく沢山メールを送るので、いちいち再送処理しないことが多いらしい。あとはウィルスに感染して SPAM サイトになってしまったところなども、そういう RFC に則った処理はしなかったりするので、そういうサイトからのメールは拒否することで、SPAM 受信量が減らせるらしい。

で、ハマったのが blacklist に無い場合はこの greylisting が必ず働いてしまうという点。すでに White 状態になっていれば問題ないんだが、前述の通りのやり取りがあって初めて White状態になるので、運用開始直後はメール配送が遅れる。spamdb というコマンドで、ちまちま White状態で登録することも可能だが、面倒。 ということで先の pf.conf の設定になる。

bold で書いたところがそうなんだが、まぁまずは内部のプライベート IP を書くだろう、ということで locallist.txt という名前にして、 このファイルから読み込んで persist テーブルを作成するように指示。このときの名前が spamd-local になって、この spamd-local に載ってる IP アドレスからの接続は自身の smtpd にリダイレクトすることで、spamd のgreylist の影響を回避してる。同じように特に信頼できるサイトの IP はこの locallist.txt に入れていけばいい。

ファイルを書き換えたら pf の persist テーブルを更新する。(その後 /usr/libexec/spamd-setup を実行すること。)

pfctl -F Tables -f /etc/pf.conf

ちなみに persist テーブルの内容を表示するには以下の通り。

pfctl -t spamd -T show

テーブルは spamd, spamd-white と spamd-local の3種類。

あとは大事なコマンドとしては spamdb かな。White状態だの Grey状態だのが確認できる。


Related Info.

Comments

No comments yet

Add Comments

※下記の単語・フレーズはコメントで使用できません。大文字・小文字は同一視します。
poker, backgammon, tramadol, casino, insurance, loans
JavaScript is required when you submit comment %20%20%3c%61%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%22%3e%3c%2f%61%3e %3c%66%6f%72%6d%20%6d%65%74%68%6f%64%3d%22%70%6f%73%74%22%20%61%63%74%69%6f%6e%3d%22%23%6e%75%63%6c%65%75%73%5f%63%66%22%3e %09%3c%64%69%76%20%63%6c%61%73%73%3d%22%63%6f%6d%6d%65%6e%74%66%6f%72%6d%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%61%63%74%69%6f%6e%22%20%76%61%6c%75%65%3d%22%61%64%64%63%6f%6d%6d%65%6e%74%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%75%72%6c%22%20%76%61%6c%75%65%3d%22%68%74%74%70%3a%2f%2f%6b%69%6d%69%74%61%6b%65%62%6c%6f%67%2e%6e%65%74%2f%69%74%65%6d%2f%32%31%35%22%20%2f%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%69%74%65%6d%69%64%22%20%76%61%6c%75%65%3d%22%32%31%35%22%20%2f%3e %09%09 %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3eコメント%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%74%65%78%74%61%72%65%61%20%6e%61%6d%65%3d%22%62%6f%64%79%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%63%6f%6c%73%3d%22%34%30%22%20%72%6f%77%73%3d%22%31%30%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%62%6f%64%79%22%3e%3c%2f%74%65%78%74%61%72%65%61%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%3eお名前%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%34%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6e%61%6d%65%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%3eウェブサイト%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%75%73%65%72%69%64%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%36%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%6d%61%69%6c%22%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%3eメール%3a%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%6e%61%6d%65%3d%22%65%6d%61%69%6c%22%20%73%69%7a%65%3d%22%34%30%22%20%6d%61%78%6c%65%6e%67%74%68%3d%22%31%30%30%22%20%76%61%6c%75%65%3d%22%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%66%69%65%6c%64%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%65%6d%61%69%6c%22%20%2f%3e %09%09 %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%63%68%65%63%6b%62%6f%78%22%20%76%61%6c%75%65%3d%22%31%22%20%6e%61%6d%65%3d%22%72%65%6d%65%6d%62%65%72%22%20%69%64%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%20%20%2f%3e %09%09%3c%6c%61%62%65%6c%20%66%6f%72%3d%22%6e%75%63%6c%65%75%73%5f%63%66%5f%72%65%6d%65%6d%62%65%72%22%3e情報を記憶しておく%3c%2f%6c%61%62%65%6c%3e %09%09%3c%69%6e%70%75%74%20%74%79%70%65%3d%22%73%75%62%6d%69%74%22%20%61%6c%74%3d%22コメントを追加%22%20%76%61%6c%75%65%3d%22コメントを追加%22%20%63%6c%61%73%73%3d%22%66%6f%72%6d%62%75%74%74%6f%6e%22%20%2f%3e %09%3c%2f%64%69%76%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%22%20%76%61%6c%75%65%3d%22%31%30%32%31%33%31%63%31%61%34%61%66%33%30%37%31%63%36%62%66%64%39%31%62%37%66%30%34%33%33%37%39%22%3e %3c%69%6e%70%75%74%20%74%79%70%65%3d%22%68%69%64%64%65%6e%22%20%6e%61%6d%65%3d%22%6e%70%5f%70%72%6f%74%65%63%74%62%79%6d%64%35%5f%68%61%73%68%22%20%76%61%6c%75%65%3d%22%32%38%63%64%30%65%36%31%31%63%65%32%35%63%37%61%33%30%37%33%37%65%65%34%39%35%36%30%66%63%37%66%22%3e %3c%2f%66%6f%72%6d%3e %20%20

OpenID を使ってログインすることができます。

Identity URL:

Trackbacks

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
visitor stats