で、次のようにすれば、最初の wordlist.db が作られます。
bash$ cd ~/Mail/ham.temp bash$ ls | sed 's/.*/echo & \; cat & \| bogofilter-nihongo.rb -n --unicode=no -k 10 -v/g' | sh
次に、spam を登録します。
こうする事により、最初は全てのメールが、non spam と判定されるため、SPAM 登録しなければなりませんが、徐々に、その割合が減っていく事が期待されます。
上の作業を実施する為に、次のようなレシピを作って、~/.procmail/.procmail-spam として保存しました。
## bogofilter の、spamicity 出力を、SPAMICITY に入力して、後で活用する。
SPAMICITY=`~/bin/bogofilter-nihongo.rb -TT --unicode=no -k 10`
## spam の判定基準を設定
SPAM= (1\\.|0\\.9)
## spamfilter
:0 HB
* ! $SPAMICITY ?? $SPAM
{
:0 c
| ~/bin/bogofilter-nihongo.rb -s -v --unicode=no -k 10
:0
bogospam090/.
}
:0
/dev/null
私の、スパムメールは、+spam に保存してあるので、次のようにします。
bash$ cd ~/Mail/spam bash$ ls | sed 's/.*/echo & \; cat & \| procmail -m ~\/.procmail\/.procmail-spam/g' | sh
これで、必要なメールが登録され、使った、spam mail は、+bogospam090 に集められる事になります。
更に、一度この作業をしておくと、
事になります。
bash$ bogofilter -Q # bogofilter version 1.0.2 robx = 0.520000 # (5.20e-01) robs = 0.017800 # (1.78e-02) min_dev = 0.375000 # (3.75e-01) ham_cutoff = 0.450000 # (4.50e-01) spam_cutoff = 0.990000 # (9.90e-01) ns_esf = 1.000000 # (1.00e+00) sp_esf = 1.000000 # (1.00e+00) block-on-subnets = No encoding = raw charset-default = iso-8859-1 replace-nonascii-characters = No stats-in-header = Yes thresh-update = 0.000000 timestamp = Yes spam-header-name = X-Bogosity spam-subject-tag = '' unsure-subject-tag = '' header-format = %h: %c, tests=bogofilter, spamicity=%p, version=%v terse-format = %1.1c %f log-header-format = %h: %c, spamicity=%p, version=%v log-update-format = register-%r, %w words, %m messages spamicity-tags = Spam, Ham, Unsure spamicity-formats = %0.6f, %0.6f, %0.6f
となっていて、spam_cutoff = 0.990000 となっていて、厳しすぎそうです。
前章で、紹介した、 procmail レシピを使って、cutoff を、幾つか振ってみて、登録数の差を見てみました。
この例では、cutoff を、
で調べてます。

これを見ると、
が、判りました。
見方を変えて、1000件中何件登録されたか割合の推移を見てみました。

100件/1日以上の SPAM が来る、私としては、bogofilter をすり抜けて来て、マニュアルで判断させられるのは、5%以下で有って欲しい。
cutoff を下げると、正しいメールを、SPAM と誤判定する確率が増えます。が、私のところに来ているメールをざっと見る限り、0.9 を超えるのはなさそうです。取り敢えず、cutoff = 0.9 で、運用してみる事にしました。
これは、個々の環境に依る思いますので、トライされる事をお勧めします。
ここで紹介した方法は、最適 cutoff を調べる一手法としては、使えそうです。