スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SpamAssassinの調教 

前のエントリでSpamAssassinの初期設定をした。今回はSpamAssassinの調教をしたい。
何となく動作するようになったのだけれど、ここからが本番。調教しないと精度が上がらないのは仕方のないところ。SpamAssassin自体の設定も全くやっていないので色々といじれば役立つかもしれないし、Procmailの設定も同様。色々と調べないとね。

SPAM判定試験

spamassassin -t ~/Maildir/cur/1369893227.13759_1.(略)


SPAM学習のDB
SPAM学習のDBは以下にある。

~/.spamassassin/bayes_seen
~/.spamassassin/bayes_toks


SPAMの学習

非SPAMを学習させる
sa-learn --ham /path/to/mail/file
SPAMを学習させる
sa-learn --spam /path/to/spam/file


user_prefsの取得
http://www.flcl.org/~yoh/user_prefsを持ってきて ~/.spamassassin として保存してやる。これをやらないとどうやらSPAMを殆ど判定できない模様。
持ってきたuser_prefsはSPAM判定のためのルールの固まりで、SPAMの特長を列挙してそれぞれに得点を付けるような記述がされている。これだけでかなりいけるんじゃないでしょうか、調教とかしなくても。

様子を見よう。

スポンサーサイト

SpamAssassinの初期設定をやってみる 

前のエントリでSpamAssassingをインストールしてみた訳だけれど、入っただけで動くように設定されていません。初期設定をやってみる。

SpamAssassinの設定はシステムデフォルト設定ファイルが /etc/mail/spamassas で、ユーザ設定ファイル $HOME/.spamassassin/user_prefs がそれを上書きするみたい。今回は気楽に user_prefs で設定を行う事にした。


とりあえず user_prefs は空。
行頭の'#'(シャープ)でコメントになる模様。

メールが来たらprocmailに食わせる
[~/.forward]

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #~/Maildir/"



spamassassinに処理させてSPAM判定ならspamディレクトリへ放り込む
[~/.procmailrc]

SHELL=/bin/bash
PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$HOME/tmp/procmail.log

:0fw:spamassassin.lock
# *!^X-Spam.*
| /usr/local/bin/spamassassin

//メールヘッダに「 X-Spam-Status: Yes 」の記述があれば .spam ディレクトリへ格納
//autolearn=spam の記述があれば問答無用にspamディレクトリへ。
:0H:
* ^X-Spam-Status: Yes
* ^X-Spam-Status:.*autolearn=spam
.spam/



これで初期設定は完了の模様。

テストすると以下のヘッダがSpamAssassinによって追加されているっぽい

X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on HOSTNAME
X-Spam-Level:
X-Spam-Status: No, score=0.0 required=5.0 tests=URIBL_BLOCKED autolearn=ham version=3.3.2



さて、次はSpamAssassinの調教方法を調べる必要がある。

SpamAssassinを入れてみる 

なんで今更SpamAssassinを入れるのかと言えば、ISPや携帯会社のSPAM対策が今一、今二、今三位に感じられてきたので、自前でやろうという気になったため。
きちんとベイズ学習させれば非常に精度良くなるはずなんだよね。

というわけでとりあえず入れて試してみてからどうやって本番で使っていくかを再度検討する予定。特に携帯からはK-9 Mailとかで普通にメールをやりとりできるので、キャリアメールも全部自前サーバのSpamAssassin経由にして良いんじゃないかな、と思っている。

ただ、自分は使ったことがこれまでにないので分からないことも多い。例えばSPAMが通常のメールとして通過してきた場合、またはその逆に通常のメールがSPAM判定された場合どうやって学習させれば良いのかその手順が分からない。調べながらやっていこう~


SpamAssassinのインストールと初期設定


必要な周辺ソフトの一括インストール

yum install spamassassin
rpm -e spamassassin



spamassassinのtarballを入手、展開

wget http://mirrors.go-part.com/apache//spamassassin/source/Mail-SpamAssassin-3.3.2.tar.gz
tar -zxf Mail-SpamAssassin-*.gz



日本語パッチを入手、適用

mkdir patch
cd patch
wget http://spamassassin.emaillab.jp/pub/ja-patch/sa3.3/spamassassin-3.3.2-ja-1.patch
cd ../Mail-SpamAssassin-3.3.2
patch -p1 ../patch/spamassassin-3.3.2-ja-1.patch



Makeとかしてインストール

perl Makefile.PL
make
make install



日本語パッチに必要な設定とかを行う
[/etc/mail/spamassassin/local.cf]

normalize_charset 1
loadplugin Mail::SpamAssassin::Plugin::Tokenizer::SimpleJA
loadplugin Mail::SpamAssassin::Plugin::Tokenizer::MeCab



なんやら必要なファイルを入れる

cd /etc/mail/spamassassin
wget http://spamassassin.emaillab.jp/pub/ja-patch/sa3.3/tokenizer.pre



ええい、めかぶも入れてしまえ。

めかぶのインストール

mkdir ../MeCab
cd ../MeCab
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar -zxf mecab-0.996.tar.gz
cd mecab-0.996
./configure --with-charset=utf8
make
make check
make install



めかぶ辞書のインストール

mkdir ../../MeCab-ipadic
cd ../../MeCab-ipadic
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar -zxf mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
make install



MeCabのPerlバインディングmecab-perlインストール

cd ../..
mkdir MeCab-perl
cd MeCab-perl
wget http://mecab.googlecode.com/files/mecab-perl-0.996.tar.gz
tar -zxf mecab-perl-0.996.tar.gz
cd mecab-perl-0.996
perl Makefile.PL
make
make install



これでインストールは一通り終わりかな。次は初期設定だ。
次のエントリに続けてみる。

IPv6の逆引き登録 

うちはKDDIの光回線を使っているのだけれど、インターネットへtracert6してみて驚いた。

C:\>tracert6 re.pdata.jp

Tracing route to re.pdata.jp [2001:2e8:602:0:2:1:0:af]
from 240f:3:1b1b:1:873:5fb2:a289:NNNN over a maximum of 30 hops:

1 2 ms 3 ms 2 ms 240f:3:1b1b:1:1eb1:7fff:fe76:NNNN
2 6 ms 3 ms 4 ms 240f:3:1800::1
3 3 ms 4 ms 5 ms sjk-KAPebisuhonkML01.v6.kddi.ne.jp [2001:268:f206:1ee::1]
4 5 ms 6 ms 4 ms tymBBML301.v6.kddi.ne.jp [2001:268:f206:ff::1]
5 8 ms 9 ms 6 ms sjkBBAC05.v6.kddi.ne.jp [2001:268:fa01:aff::1]
6 6 ms 5 ms 5 ms 6otejbb205.int-gw.kddi.ne.jp [2001:268:fa00:ffe9::1]
7 7 ms 6 ms 5 ms 6ix-ote207.int-gw.kddi.ne.jp [2001:268:fb02:103::2]
8 7 ms 8 ms 7 ms 2001:200:0:fe00::1253:0
9 6 ms 7 ms 6 ms 2001:3e0:5001:19::1
10 6 ms 6 ms 6 ms 2001:3e0:5001:12::2
11 20 ms 6 ms 5 ms 2001:2e8:20::22:12
12 8 ms 7 ms 6 ms 2001:2e8:22:203::20
13 6 ms 9 ms 7 ms 2001:2e8:602:0:2:2:0:2
14 6 ms 6 ms 6 ms v6-2001-2e8-602-0-2-1-0-af.ub-freebit.net [2001:2e8:602:0:2:1:0:af]

Trace complete.

C:\>



kddi.ne.jpが機器に逆引きを登録している。これってあれかね? 全IPv6アドレスについて登録しているわけじゃないよね、きっと。実際につながっている機器のアドレスだけとかだよね?

全アドレスを逆引き登録しているととんでもないデータ量になるから、IPv6逆引きは(IPv4の時みたく)全アドレスに対して登録しないだろうと思う。だから、逆引きが登録されているのをみてちょっとびっくりしたわけ。一部の機器についてだけ登録しているんだったらそれでいいんだけど、ゾーンファイルの分割方法とかどうしているのか、ちょっと見せて欲しいと思ったり。

それにしてもKDDIから外へ出るまでに7ホップとか、随分ホップ数多いなぁ。遅延は一桁内に収まっているけど、なんでこんなにホップ数が大きくなるんだろう。

あ、あと、宅内のLAN内機器にIPv6のグローバルアドレスが割り当てられていて、NATせずに通信できているのが確認できた。ちょっと楽しいね。
そうすると、IPv6インターネットから宅内へは全部通しで通信が疎通するのかしら? 上記のアドレスは書かない方がいいのかしら? (適当に消しを入れておくか)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。