[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.5 メッセージの振り分け

elmo-split を使うと、変数 elmo-split-folder で指定したフ ォルダ内のメッセージを特定の規則に従って procmail 風に振り分 けることができます。 この機能を使うには、まず `~/.emacs' に以下のように設定して下さい。

 
(autoload 'elmo-split "elmo-split" "Split messages on the folder." t)

振り分け元のフォルダを以下のように設定します。

 
(setq elmo-split-folder "%inbox")

振り分けのルールは変数 elmo-split-rule に記述します(書き方は後で 説明します)。 以上の設定をした上で M-x elmo-split すると elmo-split-rule に従って振り分けを実行します。 C-u M-x elmo-split とすると実際には 振り分けはせずにリハーサルを行ない、その結果を表示します。

以下ではルールの記述の仕方を説明します。まずは次の例を見て下さい。

 
(setq elmo-split-rule
      ;; SPAM は `+junk' へ
      '(((or (address-equal from "i.am@spammer")
	     (address-equal from "dull-work@dull-boy")
	     (address-equal from "death-march@software")
	     (address-equal from "ares@aon.at")
	     (address-equal from "get-money@richman"))
	 "+junk")
	;; mule メーリングリストからのメールを `%mule' へ
	((equal x-ml-name "mule") "%mule")
	;; wanderlust メーリングリストからのメールを `%wanderlust' へ
	;; そして続けてそれ以下の規則も評価する。
	((equal x-ml-name "wanderlust") "%wanderlust" continue)
	;; Yahoo 利用者からのメッセージを `+yahoo-{username}' へ
	((match from "\\(.*\\)@yahoo\\.com")
	 "+yahoo-\\1")
	;; マッチしなかった残りを `+inbox' へ
	(t "+inbox")))

規則の基本単位は

 
(`CONDITION' `ACTION' [continue])

の組で、`CONDITION' が真の場合に `ACTION' を実行します。 第一の要素 `CONDITION' には条件を S 式で記述します。書式については すぐ後で説明します。第二の要素 `ACTION' にはメッセージの振り分け先 のフォルダ名、もしくはシンボルを指定します。 第三の要素 continue をシンボルとして与えると、`CONDITION' が 満たされた場合にも振り分け規則の評価を継続します。

`CONDITION' の記法は以下のようになります。実際の書き方は上で挙げた 例を参考にして下さい。

  1. `フィールド名' および `' を引数として取る関数。 (`フィールド名' はフィールド名を表すシンボルです)

    equal
    フィールドの値が `' に等しければ真。 大文字小文字の差は無視されます。
    match
    フィールドの値が `' にマッチすれば真。 `' は \&\N を含むことができます。 それらはその前の `' で \(\) にマッチしたパターンに 置き換えられます。
    address-equal
    そのフィールドにあるアドレスのいずれかが `' に等しければ真。 大文字小文字の差は無視されます。
    address-match
    そのフィールドにあるアドレスのいずれかが `' にマッチすれば真。 `' は \&\N を含むことができます。 それらはその前の `' で \(\) にマッチしたパターンに 置き換えられます。

  2. 1 つの整数 (`SIZE') を引数としてとる関数。

    <
    メッセージのサイズが `SIZE' より小さければ真。
    >
    メッセージのサイズが `SIZE' より大きければ真。

  3. 任意数の引数を取る関数。

    or
    引数のいずれかが真を返すならば真。
    and
    引数のすべてが真を返すならば真。

  4. シンボル。

    シンボルが指定されると、それを評価します。

`ACTION' の値として指定できるのは以下のいずれかです。

  1. フォルダ名

    文字列が指定されるとそれを振り分け先のフォルダ名とみなして、そのフォルダ へメッセージを追加します。

  2. `delete'

    シンボル `delete' が指定されると elmo-split-folder 内にある メッセージの実体を削除します。

  3. `noop'

    シンボル `noop' が指定された場合、そのメッセージに対しては何もせず、 そのままの状態に保ちます。

  4. 関数

    関数が指定された場合、それを実行します。

全ての振り分け規則を通過したメッセージは、変数 elmo-split-default-action で指定した `ACTION' に沿って処理さ れます。



This document was generated by Yuuichi Teranishi on February, 19 2005 using texi2html