POPFileはオープンソースのメールフィルタプログラムです。設定が簡単で、様々なメールクライアントから使うことができます。SPAMに困っている人にお勧めです。
一方、mew-4.xからは、SPAM対策として、spamassasinなどが付けたフィールドから自動仕訳を行なうように設定できるようになりました。
そこで、今回はPOPFileをzebedeeサーバ上でdaemonとして動かし、SPAMと思わしきメールには、特定のフィールド値を指定し、mew-4.xでは、そのフィールド値によって、仕訳を行なうという方法を解説します。
イメージ図
Host a Host b ISP
+-------+ +-------+ +-----+
|mew-4.x|===========|POPFile|--------------|pop3d|
+-------+ +-------+ +-----+
|<-WaveLAN->| |<-wired line->|
zebedee tunnel
(encrypted)
こちらを参考に、インストールと設定を行なって下さい。
POPFileは0.20.x以降から、BerkeleyDBが必要になります。今回は、わざわざBerkeleyDBをインストールするのが面倒なので(^^;;;、その前のバージョンを使用します。こちらからダウンロードします。
ダウンロードしたら、インストールしたいディレクトリに展開し、以下のコマンドを実行します。
% perl popfile.pl
以下のメッセージが表示されたら、インストールされているperlのバージョンが古いです。5.8以上をインストールして下さい。
syntax error at popfile.pl line 26, near "require v5.8" BEGIN not safe after errors--compilation aborted at popfile.pl line 167.
以下のメッセージが表示されたら、POPFileが正常に起動しています。
POPFile Engine v0.19.1 loading
Loading...
{core: config logger}
{classifier: bayes}
{interface: html}
{proxy: pop3}
POPFile Engine v0.19.1 starting
Initializing...
{core: config logger}
{interface: html}
{classifier: bayes}
{proxy: pop3}
Starting...
{core: config logger}
{interface: html}
{classifier: bayes}
{proxy: pop3}
POPFile Engine v0.19.1 running
次に、POPFileをインストールしたマシン上で、ブラウザでhttp://127.0.0.1:8080へアクセスします。すると、以下の画面が表示されます。
![]() |
ここで、Bucketsをクリックすると、次の画面が表示されます。
![]() |
画面を下までスクロールさせ、バケツを作成します。「Create bucket with name」のところで、名前を入力してから「Create」ボタンをクリックします。
![]() |
「allowed」と「denied」を作成し、使い続けるとこのような画面になります。
![]() |
次に、「Configuration」をクリックします。メールに追加されるヘッダの設定を行ないます。私の場合は、以下の内容に設定しました。
![]() |
こうすると、メールに挿入されるヘッダは以下のようになります。
すでに、mew-4.xがインストールされているものとします。まず、.emacsに以下の設定を追加します。
(setq mew-spam: "X-Text-Classification:")
次に、.mewのpop-userの設定を「pop-server:pop-user」の形式に変更します。
(setq mew-config-alist
'(("isp1"
; ("smtp-server" . "smtp.isp1.ne.jp")
("smtp-server" . "localhost")
("smtp-port" . "11025")
("pop-user" . "pop3.isp1.ne.jp:user")
; ("pop-server" . "pop3.isp1.ne.jp")
("pop-server" . "localhost")
("pop-port" . "11110")
)
))
さらに、.mewに以下の設定を追加します。これで、「>X-Text-Classification: denied」というヘッダを持ったメールは「+from/ube」へ仕訳されるようになります。
(defun mew-spam-popfile (val)
(let ((case-fold-search t))
(if (string-match "denied" val) "+from/ube")))
(setq mew-scan-fields (delete mew-spam: mew-scan-fields))
(setq mew-spam: "X-Text-Classification:")
(setq mew-scan-fields (append mew-scan-fields (list mew-spam:)))
(setq mew-inbox-action-alist
'(("X-Text-Classification:" mew-spam-popfile)))
ここまで来たら、もう一息です。zebedee serverのトンネルから出たパケットがPOPFileを通過するように、設定を変更します。
# SMTP to ISP1 target smtp.isp1.ne.jp:25 # POP3 to ISP1 # target pop3.isp1.ne.jp:110 target localhost:110
以上で作業はすべて終了です。うまくいきましたか?間にzebedeeが入っているため、パケットキャプチャしても、状況を確認することができないのが難点ですが、頑張って設定して下さい。