著者: 早川 仁 <hmatch@hykw.tv>
$Id: index.html,v 1.4 2006/05/10 07:12:04 cz Exp $
hmatch は、受信したメールの本文に含まれる単語に「特定の単語」が含まれていた場合に点数を加算していき、その点数が100点を超えた場合に SPAM と判定するフィルタです。最近は日本語の SPAM が非常に増えてきており、SpamAssassin, Bogofilter, bsfilter などで認識しきれない状況に辟易したために作られました。
フィルタとして利用されることを想定しているため、「特定の単語」と「加算する点数」をあらかじめ TSV ファイル(タブ区切り)に登録しておき、標準入力に渡されたメールを走査して合計点数を計算し、SPAM 判定結果と合計点数をヘッダに追加したメール全体を標準出力に出力するだけです。
まずは hmatch.rb を適当な場所(/usr/local/bin 等)にインストールし、TSV ファイル($HOME/.hfilter/hmatch.tsv 決めうち(笑))を作成します。
% mkdir ~/.hfilter % touch ~/.hfilter/hmatch.tsv
筆者の最新の ~/.hfilter/hmatch.tsv ファイル (シンボリックリンクのため、常に最新)
メールを hmatch.rb にパイプで食わすと ~/.hfilter/hmatch.tsv の中身に応じて、X-hmatch: GREY もしくは X-hmatch: SPAM というヘッダと、X-hmatch-score: 合計点数 というヘッダを付加して返します。
hmatch.tsv ファイルの書式は「単語」タブ「加算ポイント」で、正規表現も使えます。
例([\t]は実際にはタブです) ^突然のメール [\t] 50 人妻.*不倫 [\t] 90
筆者の ~/.procmailrc のうち、SPAM 対策関連は以下のようになっています。hmatch により、ようやく false negative がほぼ0となりました。
:0 fw
| /home/cz/cvs/hfilter/hcatcher.rb
:0
* X-hcatcher: GREY
{
:0
* < 1000000
{
:0 fw
| /home/cz/cvs/hfilter/hfilter.rb
:0
* ^X-hfilter: SPAM
/dev/null
:0 fw
| /home/cz/cvs/hfilter/hmatch.rb
:0
* ^X-hmatch: SPAM
.misc.spam/
:0 fw
*!^X-Spam.*
|/usr/bin/spamc
:0
* ^X-Spam-Status: Yes
.misc.spam/
:0 fw
| /usr/local/bogofilter/bin/bogofilter -p -e
:0
* ^X-Bogosity: Spam
.misc.spam/
:0
* ^X-Bogosity: Unsure
.misc.unsurespam/
:0 fw
| /usr/local/bin/bsfilter -a -j kakasi --pipe --insert-flag --insert-probability
:0
* ^X-Spam-Flag: Yes
.misc.spam/
}
}
| 2005/08/09 | 初期リリース |