ライン

ポイント:スパムアサシンと組み合わせで利用可能

ライン

 はじめに

mail/bogofilter

 インターネットから来るメールは、本人から出されたように振る舞うものや、DMなどが結構多く存在します。
SpamAssassinなどは、この対策として便利に活用できていますが、もう少しのところが残ってしまいます。

 私の場合には、Bogofilterで最終を判断させ、ほぼ100%に近いSPAM対策を実現できています。
(同ホスト内の他のユーザは、そんなに精度が出ていないようですが)

 Bogofilterの導入と設定に関する備忘録です。
 FreeBSD 7.1での例です。

 導入と設定

導入

  導入を開始します。

# cd /usr/ports/mail/bogofilter
# make config
# make install clean

2つのオプション選択がついていましたが、今回はデフォルトで入れてしまうことにしました。

設定

 Bogofilterは、Procmailのレシピより起動するように作ります。

% mkdir .procmail
% chmod 700 .procmail

 .procmailrc を作成していきます。
以下は具体的なサンプルです。

VERBOSE=off
SENDMAIL=/usr/sbin/sendmail
PMDIR=$HOME/.procmail
LOGFILE=$PMDIR/log
FORMAIL=/usr/local/bin/formail

:0
* ^From:.Mail.Delivery.Subsystem.*
{
  :0B:
  * ^.+name=.*(\.scr|\.zip)
/dev/null
  :0
!       freemail@example.org
}

:0
* ^Subject:.[SPAM].*
!       freemail@example.org

:0
* 5.7.0 Illegal Attachment
!       freemail@example.org

:0 H
$DEFAULT

:0 H
* ^X-Spam-Flag: YES
!       freemail@example.org

:0 H:
* ^Authentication-Results: .*spf=fail.*
!       freemail@example.org

:0 H:
* ^Authentication-Results:.*DomainDoesNotExist.*
!       freemail@example.org

:0fw: bogofilter.lock
| /usr/local/bin/bogofilter -uepl -c ~/.bogofilter.cf

:0
* ^X-Bogosity: Spam
!       freemail@example.org

:0
* ^X-Spam-Flag: YES
!       freemail@example.org

:0
* ^X-Mailer: Shadow Mail
!       fumihiko.kimura@gmail.com

DROPPRIVS=yes
:0fw: spamassassin.lock
| /usr/local/bin/spamc

:0
* ^X-Spam-Status: Yes.*
{
:0cw
| /usr/local/bin/bogofilter -Ns
:0
!       freemail@example.org
}

:0
* ^Subject:.*Virus intercepted
!       freemail@example.org

:0
* ^Subject:.[SPAM].*
!       freemail@example.org

 上記のfreemail@example.org とは、捨てメールの電子メールアドレスに一括して送信しているものです。
最悪の場合でも、一定期間はここに残っているはずです。

 さて、必要なディレクトリと設定ファイルを記述します。

% mkdir .bogofilter
% chmod 700 .bogofilter
% cp /usr/local/etc/bogofilter.cf.example ./.bogofilter.cf
% chmod 600 .bogofilter.cf

 設定ファイルの内容は、それぞれで決めてください。ちなみに以下は参考にどうぞ。

# grep -v "^#" .bogofilter.cf | grep -v '^$'
spam_header_name=X-Bogosity
spam_subject_tag=***Bogo*foo***
stats_in_header=Y
charset_default=ISO-2022-JP
spam_cutoff = 0.85

などのように記述しておきます。

利用事前準備

 この後は、実際のSPAMと通常のメールで学習を実施します。
この辺りの記述は、別のサイトを参照にしてください。時間ができたら作成します。

 以前記述したページには、

:0fw: bogofilter.lock
|/usr/local/bin/nkf -ZmwLu | /usr/local/bin/kakasi -w -Ha -Ka -Ja -ka -rh \
| /usr/local/bin/bogofilter -uepl -c ~/.bogofilter.cf

 のように、日本語も処理できるように設定してありました。
 ただし、今は上記の通りで日本語の部分を削除しても十分なので削除して使っています。

 実際にメールを作成して通してみました。

from=<foo@example.ne.jp>, size=926, class=0, nrcpts=1, msgid=<1B6C3AB73042471E9090CE8DB2E00306@HOST>,
 proto=ESMTP, daemon=MSA, relay=- [XXX.YYY.ZZZ.aaa]
Milter add: header: X-Spam-Status: No, score=1.3 required=13.0
 tests=CONTENT_TYPE_PRESENT,\n\tISO2022JP_BODY,ISO2022JP_CHARSET,ONEGAI,QENCPTR1,RCVD_IN_PBL,
 \n\tRCVD_IN_SORBS_DUL,SONETDYNIP,STOX_REPLY_TYPE,TO_MALFORMED,X_MAILER_PRESENT\n\tautolearn=no version=3.2.5
Milter add: header: X-Spam-Level: *
Milter add: header: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on HOST.example.ne.jp
bogofilter[89376]: X-Bogosity: Unsure, spamicity=0.725109, version=1.1.7
to=<foo@HOST>, ctladdr=<bar@example.ne.jp> (999/999), delay=00:00:10, xdelay=00:00:06, mailer=local,
 pri=31381, relay=local, dsn=2.0.0, stat=Sent

こんな感じで2段階のチェックをもって扱うようにしています。

 また、大きくなりすぎた wordlist.db をコンパクションする処理は、

% bogoutil -a 30 -m .bogofilter/wordlist.db

にて実施しています。

【改訂履歴】作成:2009/02/28
2009/05/27 … Namazu検索の窓を追加
【参考リンク】
Bogofilter … Bogofilterのオフィシャルページ

Copyright © 1996,1997-2006,2007- by F.Kimura,