インストールが完了したら,メールが届いたときに自動的にprocmailにメールを渡して処理できるようにする。MTA*にSendmailやPostfixを使っている場合は,ホーム・ディレクトリに.forwardファイル(図4[拡大表示])を作成する。図4中の<#ユーザー名>には,利用しているユーザーのログイン名を記しておく。qmailを利用している場合は,ホーム・ディレクトリに.qmailファイル(図5[拡大表示])を作成する。
次にprocmailの設定を行う。SpamProbeを使っていると,正当なメールとスパムを誤認識することもある。スパムを誤認識して正当なメールと判断する場合はまだ良いが,正当なメールがスパムと誤認識されてしまい振り分けの際に削除されてしまったら問題だ。
そこでprocmailの設定の際,スパム(実際にはスパムと認識されたメール)をSpam用のフォルダまたはファイルに一定期間保存しておいてから,定期的にファイルを削除するようにしよう。こうすることで,誤認識した場合でも正常なメールを探し出すことが可能になる。
設定は次の通り。まずホーム・ディレクトリに.procmailrcのファイルを作成する。ファイル内容はmbox形式の場合は図6[拡大表示]のようにし,Maildir形式の場合は図7[拡大表示]のようにする。作成したら,そのファイルに実行権限を与える。
$ chmod 700 .procmailrc
最後にメールを保存しておくフォルダを作成する。フォルダの作成はメール・クライアントで行うと良い。ここではEvolutionを例にする。
作成するフォルダはスパムを格納するSpamフォルダだ。Evolutionのメニューで[ファイル]-[新規]-[Folder...]を選択し,「ローカルフォルダ」(mbox形式)またはMaildir形式のフォルダの中に,新しくSpamフォルダを作成する(写真1[拡大表示])。
これでメールが届くと,スパムと正当なメールに分配される。自分あてにスパムと正当なメールを送信してみよう。
また,分配されたメールのヘッダーにはスパム度を示す「X-SpamProbe:」が追加される。メールのヘッダーを閲覧してSpamフォルダに分配されたメールがスパムであることを確認しよう(写真2[拡大表示])。同様に受信箱のメールが正当なメールであることも確認しておく。
自動的にメールを学習させる
SpamProbeでは,学習させることで検出時の精度が向上する。そこで,自分あてに届いたスパムを用いて,自動的に学習させる方法を紹介する。自動学習させる手順は次の通りだ(図8[拡大表示])。
先に設定したように,届いたスパムはSpam用フォルダに格納される。また,誤認識したメールを正当なメールとして学習させるために,NoSpamフォルダを用意し,ここには誤認識した正当なメールを入れられるようにしておく。SpamProbeが自動学習した後には,スパムは削除,誤認識した正当なメールはFetchNoSpamフォルダに移動する。
ここでもEvolutionを利用している場合を想定して説明する。自動学習処理用のスクリプトを作成し,それを/usr/local/bin/ディレクトリ内に「spamlearn」というファイル名で保存する。/usr/local/bin/ディレクトリはルート権限がないと書き込めないため,ルート権限を得てからスクリプトを作成する必要がある。mbox形式の場合は,spamlernスクリプトを図9[拡大表示]のように記述する。
次にEvolution上で誤認識した正常なメールを格納しておくNoSpamフォルダと,そのメールを学習後に移動するFetchNoSpamフォルダを作成する。
Evolutionではmbox形式を用いている場合にSpamProbeを使用するためには,次の設定を施す必要がある。まず,Evolution上からSpamフォルダなどを左クリックし,[プロパティ]を選択する。そうして,現れたウインドウの「Index body contents」のチェックを外す(写真3[拡大表示])。
mbox形式を利用している場合は,もう一つ注意事項がある。図9のスクリプトではSpamフォルダに届いたメールを,SpamProbeに学習させた後で削除する。後述するcronによって毎日spamlearnスクリプトを実行すると,Spamフォルダ内のメールは毎日削除される。そのため,誤認識された正常なメールを見逃してしまう可能性が高くなる。このような不安がある場合は,スパムを受信するメール・フォルダとSpamProbeの学習用のメール・フォルダにあらかじめ分けておく。
Maildir形式の場合には,spamlernスクリプトを図10[拡大表示]のように作成する。続いて,先ほどと同様に,Evolution上でNoSpamフォルダとFetchNoSpamフォルダを作成する。
Maildir形式では各メール・フォルダに新着メールを保存しておくnewディレクトリ,確認後のメールを保存しておくcurディレクトリ,一次ファイルを保存するtmpディレクトリの3つが作成される。
procmailで分配したメールはnewディレクトリに保存される。その後,メール・クライアントで対象のディレクトリを開いた(メールをチェックした)ときに,メールはnewからcurディレクトリに移動される。図10のスクリプトでは必ずcurディレクトリにあるスパムを学習の対象としているため,mbox形式のようにチェックしていないメールが消されることはない。
spamlernスクリプトを作成したら,そのスクリプトに実行権限を与える。
# chmod 755 spamlearn
試しに,スパムをSpamフォルダに,正当なメールをNoSpamフォルダにコピーして,spamlearnを実行してみる。
$ spamlearn
Spamフォルダ内のメールが削除され,NoSpamフォルダ内のメールがFetchNoSpamフォルダに移動されていれば正常に動作している。
最後に,1日に1度SpamProbeが自動学習するようにcronを設定する。
$ crontab -e
と実行し,図11[拡大表示]のように設定を追加する。
データベースのクリーン・アップ
SpamProbeは学習量が増えるほど,内部に備えるデータベースのサイズが大きくなる。そこで,データベース内の不必要なデータを削除するクリーン・アップを定期的に行うようにする。
$ spamprobe cleanup
cronで毎日自動的に起動するようにしておく場合は,
$ crontab -e
とし,図12[拡大表示]のように設定を追加する。