[mew-dist 26690] Q: different mew-spam:

moto kawasaki moto at example.com
2005年 11月 28日 (月) 14:55:51 JST


川崎と申します。いつもお世話になります。

個人のメイルアドレス側で bogofilter を使って spam の判定をしていたので
すが、会社にも cloudmark が入って spam 判定ができるようになりました。
そこで、今までの「X-Bogosity: に Yes があるか否か」で '*' マークをつけ
る設定に加えて「X-Spam: に Yes があるか否か」のルール_も_入れようとし
て、どうやったらいいのかわからないことに気がつきました。
たぶん大きな見落としをしていると思うのですが、自分では手も足も出なくなっ
ていますので、どなたか助けて頂けると嬉しいです。

個人側では、MTA で bogofilter が動いていて、次の例のようなヘッダが付き
ます。
> X-Bogosity: Yes, tests=bogofilter, spamicity=1.000000, version=0.14.5.4

これを見つけたら '*' マークを付け(て後で手動で m* md してい)るために
~/.mew.el にて

> (defun mew-spam-bogofilter (val)
>   (let ((case-fold-search t))
>    (if (string-match "yes" val) ?*)))
> (setq mew-inbox-action-alist
>       '(("X-Bogosity:" mew-spam-bogofilter)))

としています。この辺はマニュアルの 11.6 節を参考にしていて、問題なく動
(POP3 を i した時に X-bogosity ヘッダに 'Yes' という文字列があれば '*'
マークが付く)いています。

とりあえず会社側の設定を変えて動くかどうかを見ようと、

  - ~/.emacs.el に (setq mew-spam: "X-Spam:")
    # サーバ側が X-Spam: ヘッダに Yes または No と書いてくる仕様です。

  - ~/.mew.el で
    > (setq mew-inbox-action-alist
    >       '(("X-Bogosity:" mew-spam-bogofilter)))
    だったのを
    > (setq mew-inbox-action-alist
    >       '(("X-Spam:" mew-spam-bogofilter)))
    に変更。検査するヘッダを変えただけのつもり。

にすると、(当たり前ですが)これも問題なく動きます。

そこで、両方が同時に動くようにしたくて ~/.mew.el の該当部分を

> (setq mew-inbox-action-alist
>       '(("X-Bogosity:" mew-spam-bogofilter)
>         ("X-Spam:"     mew-spam-bogofilter)))

としてみたのですが、片方しか動きません。
# .emacs.el で mew-spam: に設定してある側だけが動く

elisp がわからないなりにも mew-spam:, mew-scan-fields の変数定義(?)や
mew-inbox-action-alist, mew-scan-inbox-action, mew-scan-field-to-func
の関数定義のあたりを眺めてみたり、edebug で追いかけてみたりしたのです
が、ちょっと手に負えませんでした。

期待していることがそもそもできることなのかどうかだけでも教えて頂けると
大変ありがたいです。

moto kawasaki (090-2464-8454) <moto at example.com>



Mew-dist メーリングリストの案内