|
サーバー構築 はまりメモ
Courier Mail Server + maildrop + spamassassin
最終更新日(2003/12/2)
spamassassin を maildrop を使って組み込んでみます。 spamassassin は、あのうざったいSPAMを判別してくれるソフトウェアです。
100%とはいかないようですが、不要なメールと必要なメールを分ける手間が軽減されるので、導入する価値は十分あると思います。
spamassassin を通ったメールは、以下のようなヘッダーがつけられます。
|
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 2.60 (1.212-2003-09-23-exp) on example.com
X-Spam-Level: *****************
X-Spam-Status: Yes, hits=17.4 required=7.0 tests=BAYES_99,NOT_ADVISOR, RATWARE_RCVD_LC_ESMTP,TO_ADDRESS_EQ_REAL,WITH_LC_SMTP
autolearn=no version=2.60
|
それを maildrop で受け、配送先の振り分けを行います。
今回は、バーチャルアカウントごとに個別の設定を適用する、といった方向でやってみたいと思います。
参照リンク
http://www.spamassassin.org/
spamassassin
RPMでインストールするか、CPANからインストールするのが簡単です。
|
# perl -MCPAN -e shell
以下、CPANのshellで
> install Mail::SpamAssassin
|
単独で動作するプログラム (spamassassin) と、クライアント/サーバーで動作するプログラム (spamc / spamd) があります。 スピードなどの点から、spamc
/ spamd の組み合わせで使用するのが良いようです。
spamd の起動
バーチャルアカウントのホームディレクトリを見に行ってくれない、ということで、 いろいろ試行錯誤した結果、--virtual-config-dir で、強制的にディレクトリを指定してしまうことにしました。
システムアカウントが混ざっている場合、これでは少し困ったことになりますが、全てのメールをバーチャルで運用している場合はこんな感じで大概うまくいくと思います。
# しかし、もっとスマートな方法は無いものか・・・
筆者はvpopmail環境から移行したので、ドメインディレクトリは、/home/vpopmail/domains となっていて、起動オプションは
|
# spamd -d -a -m10 -x --virtual-config-dir=/home/vpopmail/domains/%d/%l -u
vpopmail
|
こんな感じです。 spamd の起動オプションの詳細はこちら。
%d(ドメイン名) %l(ユーザー名) で変換される部分は、 maildrop の方で指定します。
user_prefs の作成
アカウントごとに設定ファイルを用意しますが、 作成するのは大変なので筆者はこちらからお借りしました。 TLECさんに感謝しつつ^^、各バーチャルアカウントのホームディレクトリ(~/.spamassassinではない)に
user_prefs という名前で保存します。
maildrop
postmaster@example.com のメールをフィルターすることにしましょう。
spamは、.spam というメールボックスに配送することにします。 maildirmake コマンドに -f オプションをつけて作成します。(-f
にはドットなしの名前を指定すること)
|
# su vpopmail
$ cd /home/vpopmail/domains/example.com/postmaster
$ maildirmake -f spam ./Maildir
|
./Maildir/.spam というフォルダーができていればOKです。
.mailfilter
/home/vpopmail/domains/example.com/postmaster に、フィルター用のファイル .mailfilter を用意します。
procmail よりはかなりわかりやすいです^^;
VDOMAIN=example.com
VUSER=postmaster
if ( $SIZE < 1000000 ) {
xfilter "/usr/local/bin/spamc -f -u $VUSER@$VDOMAIN"
}
else {
to "./Maildir/"
}
if (/^X-Spam-Flag: *YES/) {
to "./Maildir/.spam/"
}
else {
to "./Maildir/"
}
|
spamc には、アカウントが spamd で認識できるように -u オプションを設定します。
更に、あまりでかいメールは spamc に渡らないようにサイズを指定してあります。
.courier ( .qmail ) へセット
/home/vpopmail/domains/example.com/postmaster の .courier ( qmail互換に設定してある場合は、.qmail
) へコマンドをセットします。
| | /usr/lib/courier/bin/preline /usr/local/bin/maildrop |
preline は必要なヘッダーを追加するコマンドです。
あとは、メールを一通送ってみて、正しく送信できるか、ヘッダーに X-Spam が入っているかどうか、ホームディレクトリに.spamassassin(データディレクトリ)ができているかどうか、チェックします。
SpamAssassin、結構いい感じです。
次回は>> Courier + fml
|