振分けフィールドの追加(KaMail/POPFile)

はじめに

spamがぽろぽろと届き始めた.最初は気にしないで削除していたのだが,だんだん面倒くさくなってきた.そこで,POPFileを使ってフィルタリングをすることにした.POPFileは内容を見て受信したメールの性質を自動的に判定してくれる.その結果で件名を変更したり,特別なヘッダを付け加えることが可能である.後は,メーラで振分ければokである.件名の変更は見にくくなるので,POPFileが追加するヘッダX-Text-Classificationの内容でメールを振分けることにした.

メーラはkamailを使っている.振分けも可能なメーラなのだが,デフォルトで設定した以外のヘッダを使うには,少々手間がかかる.そのやり方を書いておくことにした.

なお,xyzzyの各ディレクトリを以下のように記述する.

インストールディレクトリ
${XYZZY_HOME}
kamailのインストールディレクトリ
${XYZZY_HOME}/site-list/kamail
kamailの設定ファイル
${XYZZY_HOME}/KaMail/.kamail

popfileのインストールは省略するが,POPFile ドキュメンテーションが詳しい.

.kamailの修正

振分け条件に指定できるヘッダはcache-header-field-listに定義したものである.デフォルトは${XYZZY_HOME}/site-lisp/kamail/cache.l内の以下の記述である.

(defvar *cache-header-field-list* 
  '("subject"
    "from"
    "to"
    "cc"
    "reply-to"
    "newsgroups"
    "date"
    "message-id"
    "in-reply-to"
    "references"
    "x-ml-name"
    "content-type"))
        

cache.lそのものは変更しない.${XYZZY_HOME}/KaMail/.kamailにPOPFileの付加するヘッダX-Text-Classificationを追加する.以下の通りである.

(setq *cache-header-field-list* 
  '("subject"
    "from"
    "to"
    "cc"
    "reply-to"
    "newsgroups"
    "date"
    "message-id"
    "in-reply-to"
    "references"
    "x-ml-name"
    "content-type"
    "X-Text-Classification"))
        

全フォルダの全キャッシュの作り変え

cache-header-field-listを変更すると,全フォルダの全メールが未読の状態になる.全フォルダの全キャッシュを作り変える.KaMailを起動して以下のコマンドを実行する.

M-x km::kamail-folder-cache-update-all
        

振分けルールの記述

${XYZZY_HOME}/KaMail/Rulesに振分けルールを追加する.例えば以下の通りである.POPFileがX-Text-Classificationにspamを設定したメールは+trashフォルダに移動する.

("+trash" "x-text-classification" "spam")
        

注意点を一つ.x-text-classificationは小文字のみでなくてはならない.X-Text-Classificationでは振分けしてくれない.理由は良く分からない.