〜SPAM撃退 - Spam Assassinの導入〜

Spam Assassinとは
増え続けても減ることのないスパムメール(広告などの余計なヤツのこと)かどうか
を判別して、スパムメールは受信することなく削除する(転送も可)ことができるシステムです。
もちろん無料ソフトですが、学習機能があったりと、とても高い性能を持っており、
メールサーバを運用するなら、欲しいツールです。
実際に導入実験をしてみましたが、スペックがのろすぎるせいか、
今までリアルタイムに受信してたのに少し(数秒~10秒)遅延しましたが許容範囲です。

参考文献が少ない、設定方法しかかいていないものが多いので
インストールから設定まで書きます。
途中、VinePlusを使用しますが、これは手持ちのVine2.5で実験したときに
本家サイトのパッケージで依存性に問題が生じたためです。


必要パッケージのインストール
SpamAssassinを導入する前に、Perlモジュールをインストールする必要性があります。

前途の本家サイトとのパッケージでは依存性がうまく解決に至らなかったので
Vine LinuxのFTPサイトから
全てファイルを持ってくることで、解決できます。
また、RPMパッケージですべていきますので、コンパイルするよりは楽かと。

≪ダウンロードするファイル一覧≫
 ・perl-Mail-SpamAssassin-2.55-0vl2.i386.rpm
 ・perl-Time-HiRes-1.35-0vl2.i386.rpm
 ・perl-HTML-Parser-3.26-14vl2.i386.rpm
 ・perl-HTML-Tagset-3.03-25vl2.src.rpm(
 ・spamassassin-tools-2.55-0vl2.i386.rpm

注)すべて、VinePlusのRPMSの中よりダウンロードしますが、
  perl-HTML-Tagsetに関してはSRPMからダウンロードしてください。
  バージョンは、これを書いてる現在ですので、最新版に当てはめてください。

それと、後に使用する
spamassassin-2.55-0vl2.i386.rpm
spamassassin-tools-2.44-0vl1.i386.rpm
もダウンロードして保存しておいてください。


perl-HTML-Tagsetはソースパッケージなため、各環境にあわせてRPMを作ります。
perl-HTML-Parserと依存関係にあるので、最初に行う必要あり)
~/rpm に保存してください。

($ cd)
$ cd rpm
$ rpm -ivh perl-HTML-Tagset-3.03-25vl2.src.rpm
$ cd SPECS
$ rpm -ba perl-HTML-Tagset.spec

これで、ホームディレクトリの rpm/RPMS/noarchにperl-HTML-Tagset-3.03-25vl2.noarch.rpmというファイル
が完成しますので、rootにてインストールします。
$ su
Password: ********
# rpm -ivh perl-HTML-Tagset-3.03-25vl2.noarch.rpm
これで、少しやっかいなperl-HTML-Tagsetはインストールできました。
使えるかどうかは分かりませんが、当方で実験した際に作ったRPM
perl-HTML-Tagset-3.03-25vl2.noarch.rpm

後は、残りのパッケージ、最後に本体をインストールします。
# rpm -ivh perl-HTML-Parser-3.26-14vl2.i386.rpm
# rpm -ivh perl-*.rpm
# rpm -ivh spamassassin-tools-2.44-0vl1.i386.rpm
# rpm -ivh spamassassin-2.55-0vl2.i386.rpm
インストールに関しては以上で終了です。

Spam Assassinの設定
もちろん設定なしに動くはずがありません。

削除ルールを定めなければなりませんが、既にデフォルトがあるので
コピーしてやります。
# cp /usr/doc/spamassassin-2.55/sample-japanese-local.cf /etc/mail/spamassassin/local.cf
なお、サーバ全体で処理するファイルは/etc/mail/spamassassin/local.cfに、
ユーザ単位で処理するファイルは$HOME/.spamassassin/user_prefsに記述します。

local.cfは、デフォルトを参考にしてもいいですし、Googleなどで検索すると
書き方などが詳しくのっているサイトがたくさんあるので、そちらを参考にしてみてください。

デフォルトでは日本語のSPAMには対応できないので、
日本語用にうまくチューニングしてある参考設定のサイトとして
TLEC(Tokyo Linux Entertainment Community)さんがあります。
ここのtopicsの中にある「個人ユーザ用 SPAM 避けspamassassin のユーザ定義ファイル」を
/etc/mail/spamassassin/local.cfとしてgwetなどで保存してみてください。
#デフォルトの設定はmvコマンドなどでバックアップしておくことをお勧めします。

最後に、SpamAssassinデーモンを起動させます。
# /etc/rc.d/init.d/spamassassin start

Procmailの設定
単体だけでは効果を発揮できませんので、
ここではVineLinux標準メールサーバであるPostfixと組み合わせます。
Postfixにはメール振り分けデーモンのProcmailへパスが通るようにデフォルトで設定されているため
この設定は書かず(今回、必要なし)Procmailデーモンの設定へいきます。

これから振り分けのための"レシピ"を記述します。
システム全体で処理する場合は、 /etc/procmailrc
ユーザ単位で処理する場合(推奨)は、$HOME/.procmailrcに保存します。
今回はユーザ単位で処理する方法を書きますが.forwardを設定する以外は基本的に記述方法は同じです。

まずは.forwardというのをユーザのホームディレクトリに作成(追記)します。
($ cd)
$ vi .forward
"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75"


:wq

これでユーザからProcmailを使う準備ができましたので、こちらの設定に入ります。
($ cd)
$ vi .procmailrc

とタイプして、記述します。

以下はサンプルですので、検索エンジンで「procmail レシピ」と調べていろいろと
調べてください。SPAM検知時の違う3パターンほど記述します。

1.
:0fw
*!^X-Spam.*
|/usr/bin/spamc

:0:
*^X-Spam-Status: Yes
/dev/null

上記の場合だと、「もしSPAMメールと判別した場合、削除する」
となっています。もちろん入らない物は勝手に捨ててくれた方が
手間要らずではありますが、もしかしたら大事なメールが勝手に
削除されては困りますので、あまりオススメはできません。

2.
:0fw *!^X-Spam.*
|/usr/bin/spamc

:0:
*^X-Spam-Status: Yes
! spam@server.jp

これだと、「もしSPAMメールと判別した場合、spam@server.jpに転送する」となります。
削除すると不安なので、SPAM疑惑のメール専用のアカウントに送るように指定しています。
そのため、システム全体で処理するとうまくいかないためユーザ個々に作成する方法として書いてあります。

3.
:0fw
|/usr/bin/spamc

:0:
* ^X-Spam-Status: Yes
$MAILDIR/suspicion-mail/.

「もしSPAMメールと判別した場合、suspicion-mailというディレクトリに保管する」
削除すると不安ということで、予め指定した場所に保存するようにしておきます。


Spam Assassinの運用
サンプルの後者2つのように、念のためにSPAMを残しておいたとしても、
似たようなメールが来ると、同じように処理されて溜まってしまいます。

そこで、SpamAssassinにSPAMメールのもの、そうでないものを学習させてあげます。
なお、いろいろなメールでこの設定を行うと、より正確な処理を行うのでやっておきましょう。

# sa-learn --ham right-mail
   --> SPAMとして誤認識された場合。
# sa-learn --spam spam-mail
   --> SPAMとして認識されなかった場合。


Linuxサーバへ戻る


Copyright(C)2002-06.Suzuaki All Rights Reserved.
情報の無断転載・直リンクはご遠慮下さい
(リンクする場合はTOPページにお願いします。)