増えることはあっても減ることはない昨今のスパムメール事情。何らかの支障を来している人におすすめなのが、文字列のパターンマッチングによる排除を行うツール「SpamAssassin」だ。SMTPサーバ上でProcmailと組み合わせて動作をさせる。
http://spamassassin.org/パターンマッチによる排除では重要なメールまでを削除されないかと心配だろう。しかし、SpamAssassinでは、バージョンを重ねることで「スパムに該当する条件」が確立されているという強みがある。日本語圏でも多くのユーザーがいるため実績も多い。インストール直後は100%までとはいかないものの、試験運用を行えば数週間で実用レベルへと移行できるはずだ。
1. Procmailをインストールまず最初に、「Procmail」が必要となる。メールを振り分けするために利用するのだ(関連記事)。インストールされているかどうかは、次のようにして確認しよう。存在しない場合には、システムCD-ROMやISOファイル、「SpeakEasy.Rpmfind.Net」などで検索し、インストール(# rpm -ivh procmail-xxxx.rpm)するとよい。
$ rpm -qa|grep procmail procmail-3.22-9 |
次にSpamAssassinをインストールしよう。選択肢としては、tarボールとRPMパッケージがある。希望する方をダウンロードすればよい。
http://au.spamassassin.org/downloads.htmlなお、Red Hat Linux自体にもSpamAssassinがパッケージされているため、up2date(Red Hat Network)を利用しているのであれば、こらを利用した方が無難だ。
tarボールでは次のように、指定する。
$ tar zxfv Mail-SpamAssassin-2.55.tar.gz $ cd Mail-SpamAssassin-2.55 $ ./configure # make; make install |
なお、make install実行の最後に表示されるように、chmod 755 /usr/share/spamassassinとして/usr/share/ディレクトリ下に、実行ファイルがインストールされる。後で利用するため、覚えておこう。
RPMパッケージでは次のように指定すればよい。後述するが、RPMであればデーモンスクリプトまでも適所にインストールされるため、後々の設定が楽だ。
# rpm -Uvh spamassassin-2.55-1.7.3.i386.rpm perl-Mail-SpamAssassin-2.55-1.7.3.i386.rpm |
次に設定ファイルを用意する。注意点として、該当させるユーザーディレクトリ下に用意するProcmailの設定ファイル(~/.procmailrc)は、置いたとたんに機能するため、いちばん最後に配置する。
3. SpamAssassinの設定ファイルを用意SpamAssassinの設定ファイルは2通りだ。用途に応じてどちらかを選択すればよい。
/etc/mail/spamassassin/local.cf または、 ~/.spamassassin/user_prefs |
上記設定ファイル内では、スパム排除を行うためのルール(パターン)を記述する。それぞれは、「local.cf」ファイルがドメイン下すべてのユーザーに対し、「user_prefs」ファイルは1ユーザーのみに有効とさせたい場合だ。
なお、記述内容のサンプルは、/usr/share/spamassassin/下に用意されている。実は、この設定こそがSpamAssassinの挙動を左右させる重要な設定になるのだが、日本語圏(2バイト)のサンプルは含まれていないため、Googleなどで「local.cf user_prefs spamassassin」など入力して検索してほしい。
# ls /usr/share/spamassassin/ # ln -s /usr/local/share/spamassassin/15_site.cf ~/.spamassassin/user_prefs |
最後にProcmailのための振り分け設定を行う。SpamAssassinでは、スパムかどうかを判定するために受信メールのヘッダに判定ポイントを書き込む。このポイントをProcmailで判別し、該当するスパムを条件で振り分けるという仕組みだ。
1メールごとの実行であれば、
:0fw *!^X-Spam.* |/usr/share/spamassassin -P :0: * ^X-Spam-Status: Yes spam/ |
デーモン(spamd)実行の場合には、
:0fw *!^X-Spam.* |/usr/bin/spamc :0: * ^X-Spam-Status: Yes spam/ |
の内容で、「.procmailrc」のファイル名でホームディレクトリ下に用意する($ vi ~/.procmailrc)。受信メール数が多い場合には、その都度呼び出される実行形式(spamassassin)よりも、後者のデーモン利用(spamc)がよいだろう(ただし上記例は最も基本的な設定であり、また、$ mkdir ~/spamとしてあらかじめディレクトリを作っておく必要がある)。
SpamAssassinが機能しているかどうかは、受信メールのヘッダを見ればよい。次のような行が含まれているはずだ。パターン認識にて判定が行われ、「X-Spam-Level:」行の「*」の数でProcmailが振り分ける。
〜中略〜 X-Spam-Status: No, hits=7.6 required=10.0 tests=HTML_40_50,HTML_IMAGE_ONLY_10, ..... HTML_TAG_EXISTS_TBODY, ... PRIORITY_NO_NAME,RCVD_IN_NJABL, ... ROUND_THE_WORLD_LOCAL,WORK_AT_HOME version=2.55 X-Spam-Level: ******* X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) 〜以下略〜 −メール本文につながる− |
Copyright © ITmedia, Inc. All Rights Reserved.