[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12. Spam フィルタ

wl-spam は、外部 spam フィルタプログラムへのフロントエンドを提供 します。Wanderlust 上でのメッセージに対する操作と連携して、フィルタプロ グラムへの登録や、spam の判定ができるようになります。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1 使い方


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1.1 初期設定

wl-spam を使うには、まず ‘~/.wl’ に以下のように設定して下さ い。

 
;; bogofilter’ を使う場合。
;; ここで、使いたい spam フィルタの ‘scheme’ を設定して下さい。
;; See section 対応している Spam Filter.
(setq elmo-spam-scheme 'bogofilter)
(require 'wl-spam)

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1.2 spam マーク

一時的マークに spam マーク (‘s’) が追加されます。このマークの付いた メッセージは、アクションの実行時に wl-spam-folder にリファイルさ れます。また、デフォルトの設定ではサマリでの通常の移動でスキップされるよ うになります。

spam マークは、後述する spam の判定処理で自動的に付く他、k m と押 して任意に付けることも出来ます。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1.3 spam の判定

以下の方法で spam の判定を行うことが出来ます。

  1. 自動リファイルの実行時に判定する。

    以下の設定例のように wl-auto-refile-guess-functions の任意の位置 に wl-refile-guess-by-spam を挿入します。

     
    (setq wl-auto-refile-guess-functions
          '(wl-refile-guess-by-rule
            wl-refile-guess-by-spam))
    

    この例の場合、wl-refile-rule-alist で振り分け先が決まらなかった時 に spam かどうかを判定するようにしています。

  2. 特定のフォルダのサマリに移動した時に判定する。

    wl-spam-auto-check-folder-regexp-list に自動判定を行いたいフォル ダ名の正規表現のリストを設定します。

     
    (setq wl-spam-auto-check-folder-regexp-list '("\\+inbox"))
    

    この例の場合、フォルダ名に ‘+inbox’ を含むフォルダのサマリに移動し た時に判定処理が実行されます。

  3. elmo-split によるメッセージの振り分け時に判定する。

    elmo-split-rule の ‘CONDITION’ として指定出来る関数に spam-p が追加されます。この関数は、対象のメッセージが spam と判定 された時に真となります。 See section メッセージの振り分け.

    また、判定結果を元に学習させることも出来ます。(ある程度学習が進んでから、 この設定を有効にするとよいでしょう)

    以下に例を示します。

     
    (setq elmo-split-rule
          '(((spam-p) "+spam")
            ;; 判定結果を元に学習させる場合は代わりに下の条件を使う
            ;((spam-p :register t) "+spam")
            (t "+inbox"))
    

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1.4 spam の学習

wl-spam は、メッセージをリファイルすることで、自動的に spam を学 習します。

まず、wl-spam は Wanderlust の管理するフォルダをそこに含まれるメッ セージの区分によって、以下の 4つの領域に分類します。

spam

spam と判定されたメッセージがあるフォルダ。 (wl-spam-folder に設定されたフォルダ)

good

non-spam と判定されたメッセージがあるフォルダ。

undecide

未判定のメッセージがあるフォルダ。‘+inbox’ 等、自身で振り分けていな いメッセージがあるフォルダが該当します。 (wl-spam-undecided-folder-regexp-list で設定)

ignored

wl-trash-folderwl-draft-folder 等、spam の処理とは関係 のないフォルダ。(wl-spam-ignored-folder-regexp-list で設定)

メッセージをリファイルした時、そのメッセージの属する領域が変わった場合、 前後の領域に従って ‘spam’ または、‘non-spam’ として学習します。

具体的には以下の通りです。

undecide -> spam

spam として学習。

good -> spam

spam としての学習に加えて、non-spam に行なった学習を削除します。

undecide -> good

non-spam として学習。

spam -> good

non-spam としての学習に加えて、spam に行なった学習を削除します。

上記以外のリファイルでは、学習は行われません。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1.5 キーバインド

k m

カーソル行のメッセージに spam マーク(‘s’)を付けます。

k c

カーソル行のメッセージをテストし、spam と判定された場合に spam マークを 付けます。

k C

wl-spam-auto-check-marks に含まれるマークを持つメッセージについて spam かどうかのテストを行います。spam と判定されたメッセージには、spam マークが付けられます。prefix argument をつけた場合は、マークにかかわらず 全てのメッセージを対象とします。

k s

カーソル行のメッセージを spam として登録します。

k S

フォルダ内の全てのメッセージを spam として登録します。

k n

カーソル行のメッセージを non-spam として登録します。

k N

フォルダ内の全てのメッセージを non-spam として登録します。

m k

まとめ処理用マーク ‘*’ のついたメッセージに spam マーク(‘s’)を 付けます。

m s

まとめ処理用マーク ‘*’ のついたメッセージを spam として登録します。

m n

まとめ処理用マーク ‘*’ のついたメッセージを non-spam として登録しま す。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.1.6 カスタマイズ変数

wl-spam-folder

spam と判定されたメッセージを移動するフォルダ名を設定します。 初期設定は、‘+spam’。

wl-spam-undecided-folder-regexp-list

spam か non-spam か未判定のメッセージがあると看倣すフォルダを、フォルダ 名の正規表現のリストで指定します。 初期設定は、'("inbox")

wl-spam-ignored-folder-regexp-list

初期設定は以下の通り。

 
(list (regexp-opt (list wl-draft-folder
                        wl-trash-folder
                        wl-queue-folder)))

spam 判定に対して無効なフォルダを、フォルダ名の正規表現のリストで指定し ます。

wl-spam-auto-check-folder-regexp-list

サマリに移動した時に自動的に spam 判定を行うフォルダを正規表現のリストで 指定します。 初期設定は、nil

wl-spam-auto-check-marks

初期設定は以下のリスト。

 
(list wl-summary-new-uncached-mark
      wl-summary-new-cached-mark)

wl-spam-auto-check-folder-regexp-list による自動判定を含む、フォ ルダ全体に対する spam 判定の対象とするメッセージのマークを指定します。マー クには永続マークのみ指定できます。一時的マークは指定できません。

デフォルトのようにリストで指定するとそのマークのついたメッセージだけを対 象とする他、以下の指定もできます。

all

永続マークが何であっても spam 判定の対象とします。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2 対応している Spam Filter

デフォルトでは、以下の spam フィルタリングライブラリに対応しています。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.1 bogofilter

bogofilter (http://bogofilter.sourceforge.net/) は、C言語で実装さ れた spam フィルタです。

bogofilter による spam フィルタを使用するには、‘~/.wl’ などに以下の 設定を記述します。

 
(setq elmo-spam-scheme 'bogofilter)

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.1.1 カスタマイズ変数

elmo-spam-bogofilter-program

初期設定は、‘bogofilter’。 bogofilter の実行ファイルの名前を設定します。実行ファイルが、環境変数 PATH 上にない場合は、フルパスを設定する必要があります。

elmo-spam-bogofilter-args

初期設定は、nil。 bogofilter の実行時に実行ファイルに渡される引数を指定します。

elmo-spam-bogofilter-database-directory

使用する統計データベースの存在するディレクトリを指定します。nil ならデフォルトの位置 (‘~/.bogofilter’) が使用されます。 初期設定は、nil

elmo-spam-bogofilter-max-messages-per-process

初期設定は、30。 学習時にまとめ処理されるメッセージの数を指定します。

elmo-spam-bogofilter-debug

初期設定は、nil。 non-nil に指定すると、bogofilter からの出力が "*Debug ELMO SPAM Bogofilter*"というバッファに出力されます。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.2 spamfilter.el

spamfilter.el’ (http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/) は、 Emacs Lisp で実装された spam フィルタリングライブラリです。

インストール時に load-path 上に ‘spamfilter.el’ があれば、自 動的に対応モジュールがコンパイル/インストールされます。See section バイトコンパイルとインストール.

spamfilter.el’ を使用するには、‘~/.wl’ などに以下の設定を記述 します。(もちろん、‘spamfilter.el’ 自体の設定も必要です)

 
(setq elmo-spam-scheme 'spamfilter)

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.2.1 カスタマイズ変数

elmo-spam-spamfilter-corpus-filename

初期設定は ‘~/.elmo/.spamfilter’。 コーパスファイルの名前を設定します。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.3 bsfilter

bsfilter (http://bsfilter.org/) は、Ruby で実装された spam フィルタです。

bsfilter による spam フィルタを使用するには、‘~/.wl’ などに以下の 設定を記述します。

 
(setq elmo-spam-scheme 'bsfilter)

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.3.1 カスタマイズ変数

elmo-spam-bsfilter-program

初期設定は ‘bsfilter’。 bsfilter の実行ファイルの名前を設定します。実行ファイルが、 環境変数 PATH 上にない場合は、フルパスを設定する必要があります。

elmo-spam-bsfilter-args

初期設定は、nil。 bsfilter の実行時に実行ファイルに渡される引数を指定します。

elmo-spam-bsfilter-database-directory

使用する統計データベースの存在するディレクトリを指定します。nil ならデフォルトの位置 (‘~/.bsfilter’) が使用されます。 初期設定は、nil

elmo-spam-bsfilter-debug

初期設定は、nil。 non-nil を指定すると、bsfilter からの出力が "*Debug ELMO Bsfilter*"というバッファに出力されます。

elmo-spam-bsfilter-shell-program

初期設定は、‘ruby’。 bsfilter を起動するシェルの名前を設定します。シェルが環境変数 PATH 上にない場合は、フルパスを設定する必要があります。

elmo-spam-bsfilter-shell-switch

初期設定は、nil。 bsfilter を起動するシェルに与える引数を指定します。

elmo-spam-bsfilter-update-switch

初期設定は、"--synchronous-auto-update"。 メッセージを学習する際に bsfilter に与える引数を指定します。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.4 SpamAssassin

SpamAssassin (http://spamassassin.org/) は、Perl 言語 で実装された、テキスト解析技術やブラックリストに基づくメールフィルタで、 最もよく使われている spam フィルタの一つです。SpamAssassin は Bayesian フィ ルタを使用しており、spam と正当なメールについて学習させることで判定の正確 性を向上することができます。

SpamAssassin’ を使用するには、‘~/.wl’ などに以下の設定を記述し ます。(もちろん、あらかじめ SpamAssassin がインストールされ、正常に動作す ることを確認してください)

 
(setq elmo-spam-scheme 'sa)

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.4.1 カスタマイズ変数

elmo-spam-spamassassin-program

初期設定は ‘spamassassin’。 spamassassin の実行ファイルの名前を設定します。実行ファイルが、 環境変数 PATH 上にない場合は、フルパスを設定する必要があります。

elmo-spam-spamassassin-learn-program

初期設定は ‘sa-learn’。 SpamAssassin において Bayesian フィルタの学習を行なうプログラム、 sa-learn の実行ファイルの名前を設定します。実行ファイルが、環境 変数 PATH 上にない場合は、フルパスを設定する必要があります。

elmo-spam-spamassassin-program-arguments

初期設定は、'("-e")spamassassin 実行時に与える引数を指定します。 spam の判定結果を、プログラムのプロセス終了コードとして出力する引数を 与える必要があります。例えば、spamassassin の替わりに spamc を用いる場合、'("-c") を設定しなければなりません。

elmo-spam-spamassassin-learn-program-arguments

初期設定は、nil。 SpamAssassin の学習用プログラム sa-learn 実行時に与える 引数を指定します。

elmo-spamassassin-debug

初期設定は、nilt を指定すると、spamassassin からの出力が "*Debug ELMO SpamAssassin*"というバッファに出力されます。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.5 SpamOracle

SpamOracle (‘http://pauillac.inria.fr/~xleroy/software.html#spamoracle’) は、Objective Caml で実装された spam フィルタです.

SpamOracle’ を使用するには、‘~/.wl’などに以下の設定を記述します。 (もちろん、あらかじめ SpamOracle がインストールされ、正常に動作することを 確認してください)

 
(setq elmo-spam-scheme 'spamoracle)

[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.5.1 カスタマイズ変数

elmo-spam-spamoracle-program

初期設定は ‘spamoracle’。 spamoracle の実行ファイルの名前を設定します。実行ファイルが、 環境変数 PATH 上にない場合は、フルパスを設定する必要があります。

elmo-spam-spamoracle-config-filename

初期設定は nilspamoracle の設定ファイルを指定します. nil を指定すると、デフォルトの設定ファイル (‘~/.spamoracle.conf’)が使用されます。

elmo-spam-spamoracle-database-filename

初期設定は ‘~/.elmo/.spamoracle.db’。 spamoracle で使用するデータベースファイルのパスを指定します。

elmo-spam-spamoracle-spam-header-regexp

初期設定は "^X-Spam: yes;"。 spam メールであることを示すヘッダの正規表現を指定します。 spamoracle の設定ファイル内で、 spam_header パラメータの 設定を変更した場合は、この変数の値を設定してください。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.6 Regular Expressions Header Matching

メッセージヘッダの各フィールドが正規表現と合致するかどうかを検査し、spam かどうかを判定します。このバックエンドを使用するには、‘~/.wl’ など に以下の設定を記述します。

 
(setq elmo-spam-scheme 'header)

overview 情報に含まれないフィールドを検査の対象とする場合、 elmo-msgdb-extra-fields に追加しておくと、出来るだけメッセージ本 体を読み込まずに overview 情報を元に検査します。


[ < ] [ > ]   [ << ] [] [ >> ]         [冒頭] [目次] [見出し] [ ? ]

12.2.6.1 カスタマイズ変数

elmo-spam-header-good-alist

初期設定は以下の通り。

 
'(("X-Spam-Flag" . "No"))

ヘッダフィールド名と合致した時に non-spam と判定する為の正規表現の組をリ ストで指定します。elmo-spam-header-spam-alist より優先されます。

elmo-spam-header-spam-alist

初期設定は以下の通り。

 
'(("X-Spam-Flag" . "Yes"))

ヘッダフィールド名と合致した時に spam と判定する為の正規表現の組をリスト で指定します。


[ << ] [ >> ]           [冒頭] [目次] [見出し] [ ? ]

この文書はYasutaka SHINDOHによって2011年5月月11日texi2html 1.82を用いて生成されました。