Re: Regular Expression?
In article <060318185138.M0128799@hayabusa.ics.nara-wu.ac.jp>, I write:
> header __SUBJECT_FUZZY_VPILL Subject =~ /<inter W2><post P3>(?!viagra)<V><I><A><G><R><A>/i
>
> =~の右辺はPerlの正規表現だと思うのですが、「<inter W2>」とか「<V>」と
> かはどう読めばよいのでしょうか。
解決しました。
これについては、perldoc Mail::SpamAssassin::Plugin::ReplaceTags に記載
がありました。SpamAssassinが前処理を行ってから、Perlの正規表現として処理
しているようです。前処理のルールは、SpamAssassinのルールファイル
25_replace.cfの中に
replace_tag V (?:[vu]|\\\/)
replace_inter W2 \W{0,2}
replace_post P3 {1,3}
のように書かれています。これにより、正規表現中の「<V>」を「(?:[vu]|\\\/)」
に置き換え(vに似た文字の一覧ですね)、各タグ(「<」「>」で囲まれた部分)の
間に「\W{0,2}」を、各タグの後に「{1,3}」を挿入するようです。結局、
「viagraを曖昧に書いてフィルタを逃れようとしている文字列」を捕捉しようと
していることになります。これは便利そう。
…ただ問題は、Mail::SpamAssassin::Plugin::ReplaceTagsを見ればよいとい
うことを、どうやって知ればよかったのかということにあります(全く分かりま
せんでした)。「<inter」を探したのも敗因の1つだったようですが。(「inter」
を探してみてやっと見つけた)
nide@ics.nara-wu.ac.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735