2006-04-07

Mew と bsfilter と mew-absfilter.el

ぼくは、メーラー (MUA) に Mew を、スパム・フィルターに bsfilter を使ってる。

bsfilter はベイジアン・フィルタという種類のスパム・フィルター。Ruby で書かれていて、日本語が通る。ベイジアン・フィルタの詳しい説明は、Wikipedia の説明を参照されたし。

bsfilter のインストールは、本体 (bsfilter) をパスの通った場所に置くだけ。ここまでは簡単。問題は、Mew からどうやって bsfilter を使うか。これにはいくつか方法があって、ぼくは mew-absfilter.el というのを使ってる。

mew-absfilter.el

mew-absfilter.el は Mew から bsfilter を呼び出すツール。次のサイトから手に入る。

Mew でメールを取得すると、自動的に bsfilter を呼び出しスパム・フィルターを実行。スパムには ; というマークを付ける。x; マークの付いたスパムは削除される。ユーザーとしては、特に何もすることがないので便利。

時々、フィルターを潜り抜けるスパムがあったり、誤判定されたメールがあるので、フィルターに学習させなきゃいけない (まぁ、100% は、どんなツールでも無理だしね)。とりあえず、次の二つのキー操作を覚えておけばいい。

b s
このメッセージをスパムとして学習させる
b c
(; マークのついたメッセージに対して) このメッセージはスパムじゃないと教える

インストールは簡単。mew-absfilter.el を load-path 下に置いて、mew.el に次の二行を追加するだけ。

(require 'mew-absfilter)
(mew-absfilter-mode 1)

Mew 4.2.53 より新しいバージョンで...

Mew 4.2.53 より新しいバージョンで mew-absfilter.el を使うと、スパム学習のキー操作でエラーになる。というのも、Mew 4.2.53 以前は mew-expand-folder という関数でフォルダーもファイルも扱っていたのを、フォルダーは mew-expand-folder で、ファイルは mew-expand-file で扱うようにしませう。という風に変わったから。

簡単なパッチを書いたので、開発版 Mew で mew-absfilter.el を使う方はどうぞお使い下さい。

--- mew-absfilter.el.org 2005-05-17 11:54:00.000000000 +0900
+++ mew-absfilter.el 2006-04-05 12:18:08.742847765 +0900
@@ -224,7 +224,9 @@
    (when (mew-sumsyn-match mew-regex-sumsyn-short)
      (let* ((msg (mew-sumsyn-message-number))
      (case:folder (mew-sumsyn-folder-name))
-     (file (mew-expand-folder case:folder msg)))
+     (file (if (fboundp 'mew-expand-file)
+        (mew-expand-file case:folder msg)
+      (mew-expand-folder case:folder msg))))
        (when (eq (mew-summary-get-mark) mew-absfilter-mark-spam)
   (mew-summary-undo))
        (unless mark-only
@@ -239,7 +241,9 @@
    (when (mew-sumsyn-match mew-regex-sumsyn-short)
      (let* ((msg (mew-sumsyn-message-number))
      (case:folder (mew-sumsyn-folder-name))
-     (file (mew-expand-folder case:folder msg)))
+     (file (if (fboundp 'mew-expand-file)
+        (mew-expand-file case:folder msg)
+      (mew-expand-folder case:folder msg))))
        (mew-absfilter-summary-spam-one)
        (unless mark-only
   (mew-absfilter-add-spam (list file))

No comments:

Post a Comment