ハイ・コストパフォーマンス サーバーレンタル

独自ドメイン100MB \500 サブドメイン50MB \300
HOME | ABOUT | FREE SCRIPTS | BBS | LINKSはまりメモ

 

サーバー構築 はまりメモ

MTA関係

Courier Mail Server
+spamassasin
+fml

 

 

 

 

 

 

サーバー構築 はまりメモ

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

HOME | ABOUT | FREE SCRIPTS | BBS | LINKSはまりメモ

webmaster@elemsoft.com
(C)1997-2003 ELEMENTZ. all rights reserved.