#contents();
*** インストール [#rcb352f5]
- &ref(bsfilter-1.0.15.tgz); を /root/Download の下に展開し、/root/Downloads/bsfilter-1.0.15/bsfilter を /usr/local の下にコピー
- 更に /usr/local/bsfiler/bsfilter を /usr/local/bin にシンボリックリンクする
- ruby は元々インストール済みだったので、これで bsfiler が起動可能になった
[root@spirit bin]# ls -l bsfilter
lrwxrwxrwx 1 root root 28 10月 22 13:00 bsfilter -> /usr/local/bsfilter/bsfilter
*** インストール (追加 ・・・ 環境変数などの設定) [#bab97562]
- アカウント間で SPAM データーベース、ロックファイルなどを共有させるため /etc/bsfilter を利用する
[root@spirit ~]# mkdir /etc/bsfiler
[root@spirit ~]# vi /etc/profile
export BSFILTERHOME=/etc/bsfilter ・・・・ を追加
[root@spirit ~]# source /etc/profile ・・・・ 環境変数を反映する
- /etc/bsfilter に bsfilter.conf を作成する
[root@spirit ~]# cat /etc/bsfilter/bsfilter.conf
homedir /usr/local/bsfilter
pipe
header-prefix BSFILTER
insert-revision
insert-probability
- &color(red){学習処理を行うと /usr/local/bsfilter の下に共通データベースファイルが生成された};
[root@spirit ~]# ls -al /usr/local/bsfilter/
合計 4480
drwxr-xr-x 2 root root 4096 11月 4 12:18 .
drwxr-xr-x 23 root root 4096 10月 22 12:58 ..
-rw------- 1 root root 4096 11月 4 12:17 C.clean.sdbm.dir
-rw-r--r-- 1 root root 0 11月 4 12:18 C.clean.sdbm.lock
-rw------- 1 root root 32768 11月 4 12:17 C.clean.sdbm.pag
-rw------- 1 root root 4096 11月 4 12:18 C.prob.sdbm.dir
-rw-r--r-- 1 root root 0 11月 4 12:18 C.prob.sdbm.lock
-rw------- 1 root root 521216 11月 4 12:18 C.prob.sdbm.pag
-rw------- 1 root root 4096 11月 4 12:17 C.spam.sdbm.dir
-rw-r--r-- 1 root root 0 11月 4 12:18 C.spam.sdbm.lock
-rw------- 1 root root 259072 11月 4 12:17 C.spam.sdbm.pag
-rwxrwxrwx 1 root root 103434 10月 22 12:58 bsfilter
-rwxrwxrwx 1 root root 1347584 10月 22 12:58 bsfilter.exe
-rwxrwxrwx 1 root root 3019 10月 22 12:58 bsfilter.exr
-rwxrwxrwx 1 root root 1347584 10月 22 12:58 bsfilterw.exe
-rw------- 1 root root 4096 11月 4 12:17 ja.clean.sdbm.dir
-rw-r--r-- 1 root root 0 11月 4 12:18 ja.clean.sdbm.lock
-rw------- 1 root root 506880 11月 4 12:17 ja.clean.sdbm.pag
-rw------- 1 root root 4096 11月 4 12:18 ja.prob.sdbm.dir
-rw-r--r-- 1 root root 0 11月 4 12:18 ja.prob.sdbm.lock
-rw------- 1 root root 1045504 11月 4 12:18 ja.prob.sdbm.pag
-rw------- 1 root root 4096 11月 4 12:17 ja.spam.sdbm.dir
-rw-r--r-- 1 root root 0 11月 4 12:18 ja.spam.sdbm.lock
-rw------- 1 root root 57344 11月 4 12:17 ja.spam.sdbm.pag
- &color(red){データーベースを共通に利用することにしたので、Other に対してアクセス権を付与しないとスキャン時にエラーになる。 一度ファイルができたら ファイルのパーミションを変更しておく};
[root@spirit ~]# cd /usr/local/bsfilter/
[root@spirit bsfilter]# chmod 666 C.*
[root@spirit bsfilter]# chmod 666 ja.*
[root@spirit bsfilter]# ls -l
合計 4468
-rw-rw-rw- 1 root root 4096 11月 4 12:17 C.clean.sdbm.dir
-rw-rw-rw- 1 root root 0 11月 4 12:18 C.clean.sdbm.lock
-rw-rw-rw- 1 root root 32768 11月 4 12:17 C.clean.sdbm.pag
-rw-rw-rw- 1 root root 4096 11月 4 12:18 C.prob.sdbm.dir
-rw-rw-rw- 1 root root 0 11月 5 10:53 C.prob.sdbm.lock
-rw-rw-rw- 1 root root 521216 11月 4 12:18 C.prob.sdbm.pag
-rw-rw-rw- 1 root root 4096 11月 4 12:17 C.spam.sdbm.dir
-rw-rw-rw- 1 root root 0 11月 4 12:18 C.spam.sdbm.lock
-rw-rw-rw- 1 root root 259072 11月 4 12:17 C.spam.sdbm.pag
-rwxrwxrwx 1 root root 103434 10月 22 12:58 bsfilter
-rwxrwxrwx 1 root root 1347584 10月 22 12:58 bsfilter.exe
-rwxrwxrwx 1 root root 3019 10月 22 12:58 bsfilter.exr
-rwxrwxrwx 1 root root 1347584 10月 22 12:58 bsfilterw.exe
-rw-rw-rw- 1 root root 4096 11月 4 12:17 ja.clean.sdbm.dir
-rw-rw-rw- 1 root root 0 11月 4 12:18 ja.clean.sdbm.lock
-rw-rw-rw- 1 root root 506880 11月 4 12:17 ja.clean.sdbm.pag
-rw-rw-rw- 1 root root 4096 11月 4 12:18 ja.prob.sdbm.dir
-rw-rw-rw- 1 root root 0 11月 5 10:53 ja.prob.sdbm.lock
-rw-rw-rw- 1 root root 1045504 11月 4 12:18 ja.prob.sdbm.pag
-rw-rw-rw- 1 root root 4096 11月 4 12:17 ja.spam.sdbm.dir
-rw-rw-rw- 1 root root 0 11月 4 12:18 ja.spam.sdbm.lock
-rw-rw-rw- 1 root root 57344 11月 4 12:17 ja.spam.sdbm.pag
- &color(red){その後 .procmail 内のフィルター処理で --update をつけてデータベースの更新をさせた場合に procmail のレシピの中で明示的に /usr/loca/bsfilter の場所を指定しないと ($BSFILTERHOME に bsfilter.conf を設定していても) 各ユーザーディレクトリ下に .bsfilter が作られてしまうことが判った};
*** 初期設定(学習) [#m13db0ad]
[root@spirit ~]# bsfilter --add-spam /home/munakata/Maildir/.INBOX.spam/cur/*
[root@spirit ~]# bsfilter --add-spam /home/public_mail/Maildir/.INBOX.spam/cur/*
[root@spirit ~]# bsfilter --add-clean /home/munakata/Maildir/cur/*
[root@spirit ~]# bsfilter --add-clean /home/public_mail/Maildir/cur/*
[root@spirit ~]# bsfilter --update
*** /home/munakata/.procmailrc に bsfilter 実行と結果判定文を追加 [#gd6139e6]
[root@spirit ~]# cat /home/munakata/.procmailrc
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=/home/munakata/log/procmaillog
#LOCKFILE=$HOME/.lockmail
SPAM=$HOME/Maildir/.INBOX.spam/
VERBOSE=OFF
## scan 2nd SPAM filter ( bsfilter )
:0 fw
* ! ^Subject:.*SPAM [#c3864d17]
| /usr/local/bin/bsfilter --homedir /usr/local/bsfilter --pipe --insert-revision --insert-flag --insert-probability --header-prefix BSFLTR --mark-spam-subject --spam-subject-prefix '*** BSFLTR *** :'
# Reject [SPAM] marked mail
:0:
* ! ^From: .*@(renesas|hsdv|hmuna).com [#n88eee63]
* ^Subject:.*SPAM [#tf049ecd]
$MAILDIR/.INBOX.spam/cur
# 2ndery SPAM collection by BSFILTER probability
:0
* ! ^From: .*@(renesas|hsdv|hmuna).com [#p4c85bb5]
* ^X-BSFLTR-Probability: *(1|0\.[789]) [#l11e8a40]
$MAILDIR/.INBOX.spam/cur
# Reject [SPAM] doubtful mail
:0:
* ! ^From: .*@(renesas|hsdv|hmuna).com [#uf026dc6]
* ^X-Spam-Level: [******* ******** ********* ********* **********] [#p7ea80e3]
$MAILDIR/.INBOX.spam.doubt/cur
:0
* ! ^From: .*@(renesas|hsdv|hmuna).com [#j4b54d48]
* ^X-BSFLTR-Probability: *(0\.[67]) [#pc65c98e]
$MAILDIR/.INBOX.spam.doubt/cur
## Copy SH-Linux CVS patch
#:0:
#* ^To: .*linuxsh-cvs@lists.sourceforge.net
#$MAILDIR/.INBOX.&MOowyjDDMK8wuQ- &laKQIw-.SH-Linux &laKQI207UtU-.Linux-SH ML/
## create C/C to headline account
# except over 5000 and/or SPAM signed
:0 c:
* < 5000 [#l1e25260]
* ! ^Subject:.*SPAM [#ee9643b2]
! headline@hmuna.com
- &color(red){(デバッグ中)--insert-flag を付けずに --insert-probability だけ付けた時には確立がゼロ固定になってしまう?};
*** 自動学習 [#rbec5593]
- Spamassasin が誤判定した内容を bsfilter に SPAM として学習させる
- amavsdnew が見逃した SPAM を学習用に保存した内容も SPAM として学習させる
- カレントフォルダーの既読メールは ham(clean) とし学習させる
- この処理を Spamassasin の学習処理にリンクさせて cron で実行する
-- /crontab -e -u public_mail
# SPAM Assassin study
30 */12 * * * /usr/bin/sa-learn --spam /home/public_mail/Maidir/.INBOX.spam.spam/cur > /dev/null 2>&1
33 */12 * * * /usr/bin/sa-learn --ham /home/public_mail/Maildir/.INBOX.spam.ham/cur > /dev/null 2>&1
34 */12 * * * /usr/loacl/bin/bsfilter --add-spam /home/public_mail/Maildir/.INBOX.spam.spam/cur/* > /dev/null 2>&1
35 */12 * * * /usr/loacl/bin/bsfilter --add-spam /home/public_mail/Maildir/.INBOX.spam/cur/* > /dev/null 2>&1
36 */12 * * * /usr/local/bin/bsfilter --add-clean /home/public_mail/Maildir/cur/* > /dev/null 2>&1
37 */12 * * * /usr/local/bin/bsfilter --update > /dev/null 2>&1
38 */12 * * * /bin/rm -f /home/public_mail/Maildir/.INBOX.spam.spam/cur/*
39 */12 * * * /bin/rm -f /home/public_mail/Maildir/.INBOX.spam.ham/cur/*
-- crontab -e -u munakata
# SPAM Assassin / bsfilter SPAM database automatic study
40 */12 * * * /usr/bin/sa-learn --spam /home/munakata/Maidir/.INBOX.spam.spam/cur > /dev/null 2>&1
42 */12 * * * /usr/bin/sa-learn --ham /home/munakata/Maildir/.INBOX.spam.ham/cur > /dev/null 2>&1
# bsfilter SPAM / CLEAN trainig
43 */12 * * * /usr/loacl/bin/bsfilter --add-spam /home/munakata/Maildir/.INBOX.spam.spam/cur/* > /dev/null 2>&1
44 */12 * * * /usr/loacl/bin/bsfilter --add-spam /home/munakata/Maildir/.INBOX.spam/cur/* > /dev/null 2>&1
45 */12 * * * /usr/local/bin/bsfilter --add-clean --verbose /home/munakata/Maildir/cur/* > /dev/null 2>&1
46 */12 * * * /usr/local/bin/bsfilter --update > /dev/null 2>&1
# delete informative message
48 */12 * * * /bin/rm -f /home/munakata/Maildir/.INBOX.spam.spam/cur/*
49 */12 * * * /bin/rm -f /home/munakata/Maildir/.INBOX.spam.ham/cur/*
*** データーベースへの登録状況を確認(--show-db-status) [#z93fb593]
[root@spirit cur]# bsfilter --show-db-status
db C 972 5 14291 240 14760
db ja 8450 34 1955 45 9708
*** 学習成果の確認(--export-probability) [#l43854e7]
- 学習した token 毎の確率を確認できる ・・・ 学習成果の検証
[root@spirit cur]# bsfilter --export-probability
(snip)
ja subject 約成 0.999149
ja cc 憲正 0.000147663
ja body 目標 5.91219e-06
ja body 以外 0.0642792
ja body Site 7.38684e-05
ja body 相手 0.907543
ja body 任感 7.38684e-05
ja body 記憶 0.000147663
ja body 超音 0.000147663
ja body on 1.23165e-05
ja body 値観 0.000147663
ja body リニューアルキャンペーン 7.38684e-05
ja body 8.906 0.000147663
ja body Parker 2.11128e-05
ja from COM 0.999574
ja from cn 0.999787
ja tag name 0.401758
ja return-path po 0.000147663
ja body jffs2 0.000147663
ja body ポケモンバトルレボリューション 4.92538e-05
ja body ID 0.430239
ja body 飾皿 7.38684e-05
ja body Fred 7.38684e-05
ja body ターゲット 2.11128e-05
ja body 有難 0.999149
(snip)
*** spamassin ではすり抜けた SAPM を bsfilter が検出した例 (すばらしい!) [#ab16010c]
&ref(bsf_001.JPG);~
- &color(red){spamassin が見逃した SPAM を bsfilter が検出した時には 件名に "*** BFFLTR ***" を挿入するようにした (有効に効いているのが判る)};~
&ref(bsf_002.JPG);
*** SPAM メールの検証 ( bsfilter -d = デバッグモード) [#v053c9f1]
- トークン分解と単語毎のスコア、メール全体のスコアを確認することができる)
[root@spirit cur]# bsfilter -d 1162067028.8265_1.spirit.hmuna.com:2,Sd
lang ja header char_ja
tokenizer content-transfer-encoding 7bit
tokenizer reply-to WEWEWEW
tokenizer reply-to HOTMAIL
tokenizer reply-to COM
tokenizer return-path WEWEWEW
tokenizer return-path hsdv
tokenizer return-path com
tokenizer content-type text
tokenizer content-type plain
tokenizer from WEWEWEW
tokenizer from WEWEWEW
tokenizer from HOTMAIL
tokenizer from COM
tokenizer charset iso
tokenizer charset 2022
tokenizer charset jp
tokenizer subject !!
tokenizer subject 本気
tokenizer subject 貴方
tokenizer subject 逢
tokenizer to munakata
tokenizer to hsdv
tokenizer to com
tokenizer received from
tokenizer received unknown
tokenizer received HELO
tokenizer received pc36
tokenizer received 222.160.111.154
tokenizer received by
tokenizer received 115.8.221.202
tokenizer received ts
tokenizer received 2iij
tokenizer received net
tokenizer received with
tokenizer received SMTP
lang ja jis
tokenizer C body 10
tokenizer C body !
tokenizer url http
tokenizer url sonice
tokenizer url info
tokenizer url h
tokenizer ja body 情報
tokenizer ja body 月号
tokenizer ja body 号寂
tokenizer ja body 屋
tokenizer ja body 彼女
tokenizer ja body 貴方
tokenizer ja body 待
tokenizer ja body エクスプレス
word probability reply-to COM 1 0.999574
word probability reply-to HOTMAIL 1 0.999574
word probability reply-to WEWEWEW 1 0.147811
word probability return-path com 1 0.225163
word probability return-path WEWEWEW 1 0.147811
word probability return-path hsdv 1 0.000007
word probability body 彼女 1 0.147811
word probability body 貴方 1 0.999943
word probability body 屋 1 0.147811
word probability body エクスプレス 1 0.147811
word probability body 月号 1 0.000011
word probability body 情報 1 0.042556
word probability body 10 1 0.081634
word probability body 号寂 1 0.147811
word probability from COM 1 0.999574
word probability from HOTMAIL 1 0.999574
word probability from WEWEWEW 2 0.147811
word probability url info 1 0.274151
word probability url sonice 1 0.147811
word probability url h 1 0.147811
word probability subject 本気 1 0.147811
word probability subject !! 1 0.999716
word probability subject 貴方 1 0.999149
word probability subject 逢 1 0.147811
word probability to hsdv 1 0.786942
word probability to munakata 1 0.624364
word probability received SMTP 1 0.830812
word probability received HELO 1 0.886437
word probability received 115.8.221.202 1 0.999973
word probability received 2iij 1 0.999973
word probability received pc36 1 0.147811
word probability received net 1 0.964517
word probability received ts 1 0.999973
word probability received 222.160.111.154 1 0.147811
word probability received unknown 1 0.808030
combined probability 1162067028.8265_1.spirit.hmuna.com:2,Sd 1 0.500192
*** 参考 URL [#a0e3c138]
- [[bsfilter 本家:http://bsfilter.org/]]