/ / 最新

swk's log - bsfilter の使い方を間違えていたっぽい

2006-05-27

* bsfilter の使い方を間違えていたっぽい [tech]

bsfilter で spam 判定をしているのだけど,どうも直感に反する挙動をしていることに気づいた.で,よく考えてみたところ使い方を完全に間違えていたっぽい.

(どうして気づいたかというと,ここ数日,(ほぼ完全に) 同じ文面の spam が大量に送られて来ていて,それらは最初は無事に spam と判定されていたのだけど,新しいのが届くごとに spam 確率が単調減少していって,終いには clean と判定されるようになってしまったからである)

結論を先に書くと,

  • auto-update を使っていて,
  • なおかつ insert-probability を使っていて,その insert された probability に基づいてフォルダ分けしていたのだけど,
  • spam-cutoff を設定していなかった.
  • 結果として,フォルダ分けの際の spam 判定基準 (以下 P1 と呼ぶ) と spam-cutoff (同 P2) とが食い違っており (P2 > P1),
  • 件の spam は最初に P1 と P2 の間の確率と判定されたため,SPAM フォルダにつっ込まれたにも関らず,データベース上では clean な方につっこまれ,clean な確率が上がることになってしまっていた.

さて,どんな設定をしていたかというと, 本家サイト にある「~/.procmailrc から呼ぶ場合のサンプルレシピ その2」をベースにしていた.「その1」ではなく「その2」を選んだのは,spam 確率をヘッダに残したかったから.

:0 fw
| /home/swk/bin/bsfilter --pipe --insert-flag --insert-probability

:0
* ^X-Spam-Probability: *(1|0\.[89])
SPAM/.

で,この設定に単純に --auto-update を追加したのが敗因.その後いろいろ調整して,SPAM フォルダへの振り分け基準 (P1) をどんどん小さくして行って (今は何と 0.1 だ),一方で P2 は元のまま (えーと,デフォルトの Robinson-Fisher のまま使っているから,0.95?) 今回のような事態に至ったと.

おそらく,P1 をこんなに小さくしなければならなかったのも,そもそもこの設定ミスが原因なんだろうな.

というわけで,一度データベースを構築し直した上で,--spam-cutoff オプションを設定して P1 = P2 になるようにしてみます.

最終更新時間: 2009-01-04 15:31


Shingo W. Kagami - swk(at)kagami.org