wakatonoの戯れメモ

はてなダイアリーから引っ越してきました。

ベイジアンスパムフィルタ活用法(というほどすごくないけど)

これから受信されるメールの分類は、前回(っていつよ?)書いたような設定をしておけばOKだけど、これまでに受信してしまったものはどうしよう?と思って、簡単なシェルスクリプトを作ってみました。前提は、「まともにSpamSpamと判定してくれる」データベースがすでに構築されていること。
言うまでもないですが、これは(MaildirでもMH形式でもいいけど)1メール1ファイルという形式を取ってるものでのみ有効な方法です。
bsfilterをフィルタリングモードで使用した場合、終了ステータスでSpam or Not Spamを教えてくれるので、それを利用してるだけなんですがね。


#!/bin/sh
for mail in spambox/*
do
if /home/wakatono/bin/bsfilter < $mail
then
echo $mail is spam
else
echo $mail is not spam
fi
done
このスクリプトでは、単にメールのファイル名+spamspamでないかという情報を出力してるだけ(echoコマンド使用)ですが、Spam判定の時点で動く部分を

 mv $mail $HOME/Maildir/.SPAM/cur
とかしてやれば、Spamフォルダに(学習した範囲内で)Spam判定されたものを放り込むことが可能です。