〜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を使う準備ができましたので、こちらの設定に入ります。
とタイプして、記述します。
以下はサンプルですので、検索エンジンで「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として認識されなかった場合。
|