Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Raw header check with SpamAssassin

11 views
Skip to first unread message

NIDE Naoyuki

unread,
Mar 18, 2006, 12:28:19 PM3/18/06
to
新出@奈良女子大学です。SpamAssassin 3.1.1を試験運用中です。

同バージョンのSpamAssassinで、生の(i.e. 空白除去処理などを行っていない)
ヘッダに対するチェックを行うには、どうすればよいのでしょう。具体的には

From: "Myname" <myac...@mydomain.com>

のように「From:とその次との間に空白が特定個数(この例では3個)あるかどうか」
をチェックしたいわけです。
試しに

header XXX ALL =~ /\nFrom: \S/

としてみましたが、意図通りには動きません。「From:」のようなヘッダの項目
名の直後の空白は1つだけにされてしまう(それ以外のところにある空白は保存さ
れるのですが)ので、ALLの内容は「…\nFrom: "Myname"…」になり、
/\nFrom: \S/ にはマッチしてくれません。また、

header XXX ALL:raw =~ /\nFrom: \S/

でも同じです。rawはMIMEエンコード部のデコードを防ぐだけで、先頭の空白の
除去処理は防いでくれないようです。

もしかしてSpamAssassinではできないのでしょうか。

ni...@ics.nara-wu.ac.jp

NIDE Naoyuki

unread,
Mar 29, 2006, 11:32:56 AM3/29/06
to
In article <0603190228...@hayabusa.ics.nara-wu.ac.jp>, I write:
> 同バージョンのSpamAssassinで、生の(i.e. 空白除去処理などを行っていない)
> ヘッダに対するチェックを行うには、どうすればよいのでしょう。

の件、一応解決を見ました。

full XXX /^(?:(?:\n?[^\n])+\n)?From: \S/

のように、「full」を使ってマッチさせれば良いようです。fullの内容はメール
のヘッダとボディ全部で、空白のトリミングなどの処理は一切行われていないよ
うなので、上記のように「From:」の直後の空白の数を正確に要求することもで
きます。但し、今回はメールのヘッダ部にだけマッチさせたいので、ボディ部に
マッチしないように「^(?:(?:\n?[^\n])+\n)?」のようなことを書いておく必要
があります。
それから、これだとメール全体とのマッチを行うので、巨大なメールが送られ
た時にメモリを食いまくってやたら重くなります。サイズが大き過ぎるメールに
対しては適用しないなどの工夫が必要でしょう。

SpamAssassinですが、使ってみて、local.cfの記述の自由度の低さにはちょっ
と失望気味です。eximのconfigureファイルの方がよっぽど柔軟な記述ができるっ
てのは何とも。ちなみに今回の「ヘッダのFrom:の次に特定個の空白があったら…」
というのは、今回のSpamAssassin導入前にeximのconfigureファイルに書いてい
たルールで、それをどうせならSpamAssassinの方に移してしまえないかと四苦八
苦していたのでした。eximの方には何の問題もなく書けたのに、です。もちろん、
これまでのspam検出のヒューリスティックが多数蓄積されていること、1つのルー
ルだけで拒絶するのでなく総合スコアで判定できること、ベイジアンフィルタを
持つことなど、SpamAssassinならではの魅力もあるにはあるのですが、…

ni...@ics.nara-wu.ac.jp

0 new messages