spam メイル対策(2)

文 :
Write :

概要

spam メイル対策で紹介した spam メイルの具体的な対策方法のうち,受け取った電子メイルをフィルタリングする,SpamAssassin について,導入方法などを紹介したいと思います.

SpamAssassin とは

SpamAssassin は,Justin Mason 氏によって,氏によってかつて書かれたフィルターを書き直す形で,2001 年頃に SourceForge.net にて開発が進められました.

特徴としては,Perl で書かれており,学習型の Bayesian filter を使ったフィルターを,個々人で調整でき,使えば使うほど精度が上がっていく,という点です.

主に,サーバサイドにインストールし,受信した電子メイルを,SpamAssassin によって,spam メイルか ham メイルかを判断,spam メイルと判断すれば,フラグを立てるなどの処理を行います.

SpamAssassin 自体は,spam メイルか ham メイルかの判断をするだけで,spam メイルと判断されたメイルを隔離したり削除するには,他のツールを使います.(各種MUA や procmail など)

FreeBSD と qmail と vpopmail で使う

ビット珈琲では,メイルサーバには,FreeBSD 上に,MTA として qmail を採用し,それに加え,アカウント管理のために,vpopmail を導入しています.

ここに,SpamAssassin を導入するのは非常に簡単です.

現在の構成を作る際,ports に,社内で作成した patch を宛てる形で導入しますが,SpamAssassin は,vpopmail (ports/mail/vpopmail) の make の変数で,WITH_SPAMASSASSIN=y とするだけです.

vpopmail には SpamAssassin と連携する configure オプションが予め用意されており,ports の変数は,このオプションを有効にするものです.(--enable-spamassassin に SpamAssassin の spamc コマンドへのパスを指定します)

インストールが完了すると,/usr/local/etc/mail/spamassassin にサンプルファイル (init.pre.sample,local.cf.sample) があるので,これをコピーしてファイルを用意する (init.pre,local.cf) ことで,設定が有効となります.

Baysian filter を有効にする

vpopmail からユーザの個別設定を使うには,少々コツが必要です.SpamAssassin のデーモン起動時のオプションに,-u vpopmail --virtual-config-dir=/usr/local/vpopmail/domains/%d/%l/.spamassassin を追加します.

具体的には,/etc/rc.conf の,spamd_flags で指定します.


root@TOJO /root#  cat /etc/rc.conf | grep spamd[CRLF]
spamd_enable="YES"
spamd_flags="-u vpopmail --virtual-config-dir=/usr/local/vpopmail/domains/%d/%l/.spamassassin"

学習させる

Baysian filter は学習する事で精度が上がります.自分が受け取った電子メイルの中から,spam メイルと ham メイルをピックアップし,それぞれ SpamAssassin に教えます.

この際,他人の受け取った spam メイルを使っても意味がありませんので,必ず自分が受け取ったものを使います.これは,spam メイルか否かの判断基準は,受け取る人によって変わってくるためです.

学習には,vpopmailユーザになって(デフォルトではログインシェルが無効なので,vipw などでログインシェルを編集します) sa-learn というコマンドを使います.spam メイルをメイルサーバにアップロードし,メイルを置いたディレクトリで,コマンドを実行します.同様に,ham メイルも行います.


root@TOJO /home/kakuo/spam#  su vpopmail[CRLF]
vpopmail@TOJO /home/kakuo/spam%  sa-learn --no-sync --showdots --spam .[CRLF]
vpopmail@TOJO /home/kakuo/spam%  cd ../ham[CRLF]
vpopmail@TOJO /home/kakuo/ham%  sa-learn --no-sync --showdots --ham .[CRLF]
vpopmail@TOJO /home/kakuo/ham%  sa-learn --sync[CRLF]

ただ,これらの作業は一般ユーザには簡単とは言いがたいので,例えば,特定のメイルアドレス宛てに spam メイルを添付して送る事で,自動的に学習させるような仕組みが必要だと思います.

Welcome spammers. If you are spammer, please mail to honeypot@bitcoffee.com. Thanks your spam!!