運用ネタ(FreeBSD) bsfilter をインストールし直す

Pocket

bsfilter が、いつの間にやら kakasi に依存しなくなったらしい。ports から ja-ruby-kakasi が消えたのも関係あるのかしらん。

# /usr/sbin/portsnap fetch update
# /usr/local/sbin/portsdb -u
# /usr/local/sbin/portversion -vL =

ja-ruby18-kakasi-020928     ?  error - origin not found 

実害はないんだけど、エラーが出るのが、なんかむかつく。
故に、消してみる。(なぜ??)

# pkgdb -F
--->  Checking the package registry database
Stale origin: 'japanese/ruby-kakasi': perhaps moved or obsoleted.
-> The port 'japanese/ruby-kakasi' was removed on 2011-08-03 because:
        "Has expired: Doesn't work with Ruby 1.9"
-> Hint:  ja-ruby18-kakasi-020928 is required by the following package(s):
        bsfilter-1.0.17
-> Hint: checking for overwritten files...
 -> No files installed by ja-ruby18-kakasi-020928 have been overwritten by other packages.
Deinstall ja-ruby18-kakasi-020928 ? [no] yes
--->  Deinstalling 'ja-ruby18-kakasi-020928'
pkg_delete: package 'ja-ruby18-kakasi-020928' is required by these other packages
and may not be deinstalled:
bsfilter-1.0.17
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! ja-ruby18-kakasi-020928       (pkg_delete failed)
Command failed [exit code 1]: /usr/local/sbin/pkg_deinstall ja-ruby18-kakasi-020928

依存関係で消せない。それはそうだが、kakasi よりも MeCab の方が高速・高精度らしいというのを某MLのアーカイブで見つけたので、この際 bsfilter を MeCab 利用に切り替えてみる。

とりあえず bsfilter と ja-ruby-kakasi をいったん削除。

# pkg_delete bsfilter-1.0.17
# pkg_delete ja-ruby18-kakasi-020928

しかる後に、bsfilter を MeCab 利用に修正して再インストール。

# vi /usr/local/etc/pkgtools.conf
[/usr/local/etc/pkgtools.conf]
(MAKE_ARGSの項に追加)
                'mail/bsfilter' => 'BATCH=yes WITH_MECAB=yes',

# portinstall bsfilter

何か意味があるのか、といわれるとよくわからないんだけど。
最近またspamが増えてきているので、多少はましになるかなと。

と、ここまで書いて気づいたが、そもそも bsfilter の記事なんて書いてなかった。
取って付けたように補足しておくと、sendmail で Maildir 形式を利用するために procmail を ports からインストール。ユーザのホームディレクトリに置く .procmailrc に以下のような記述をしてある。最初に列記しているメールアドレスは、spam 誤判定回避のための whitelist。

[/home/USER/.procmailrc]
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
LOGFILE=$HOME/.mail/log
VERBOSE=off
LOCKFILE=$HOME/.lockmail
FORMAIL=/usr/local/bin/formail
NSLOOKUP=/usr/local/bin/nslookup
DEFAULT=$MAILDIR

:0 HB
*^From: .*(news@mail.travel.rakuten.co.jp)
*^From: .*(point@emagazine.rakuten.co.jp)
*^From: .*(mailnews@tsukumo.co.jp)
*^From: .*(grt-news@rakuten.co.jp)
Maildir/new/.

:0fw
| /usr/local/bin/bsfilter -a --pipe --insert-flag --insert-probability

:0
* ^X-Spam-Flag: Yes
! spamtest

:0fw
| /usr/local/bin/spamc

:0
* ^X-Spam-Status: Yes
{
:0cw
| /usr/local/bin/bsfilter -s
:0
! spamtest
}

なお、spam 対策は bsfilter と SpamAssassin の合わせ技。spam の振り分け用に spamtest というユーザを作成してある。処理の流れとしては、

whitelist のアドレスは spam 判定をスキップして Maildir に配送

bsfilter で判定
spam 判定なら spamtest の Maildir に配送
ham 判定なら SpamAssassin に渡す

SpamAssassin で判定
spam 判定なら bsfilter に学習させた後、spamtest の Maildir に配送
ham 判定なら Maildir に配送

といった感じ。

※2013/09/14追記

忙しさにかまけて更新をさぼっていたのだが、「bsfilter ruby 1.9」 でここが検索上位に来ているので追記。

ports から入るbsfilter 1.0.17 は ruby 1.9 未対応の模様。正式にはまだ対応していないようだが、/usr/local/bin/bsfilter を公式サイトで配布されている最新版(bsfilter-1.0.18.ruby1.9.rc5.tgz)に差し替えればとりあえずは動く模様。ただし精度がた落ち。

次のバージョンを待つか、rubyを1.8に戻すかした方がいいかもしれない。

この記事にコメントする

Powered by WordPress, WP Theme designed by WSC Project. ログイン