ども。これまたつまらない記事ですよーと。
とりあえず、巷ではスパム判定に Spamassassin を使うことが多いようですが、
今回は高速なスパム判定ツールとして、Bogofilter を使ってみました。
今回行ったのは、
自分宛に来たメールを、メインPCとノートPCの間で同期を行わせ、
かつ、スパム判定を行い、スパムメールを振り分ける。ということです。
メール数が7000通以上あり、学習時間もどうにかしなければいけませんし、
スパム業者に私のメールアドレスは大人気のようで、かなりの数が来ます。
そんなわけで今回 Bogofilter を使ってみました。
結論から言いますと、Spamassassin と比較してかなり高速です。
自分のPC間でメールを同期しようと考えている人には良いのかもしれません。
余談ですが、外部のPOP3 メールの受信は fetchmail を回しておけば可能です。
メールの転送の方が圧倒的に早いので、
転送が使える場合はそっちを使った方が良いかと思います。
手順:
注: 既に IMAP サーバを Maildir 形式で構築済みであることを前提とします。
まだ構築されていない方は
メールサーバー構築(Postfix+Dovecot) – CentOSで自宅サーバー構築
を参照して、構築してください。
01.bogofilter と nkf と procmail をインストール。
yum install –y bogofilter nkf procmail
もしインストール出来ない場合、
RPMforgeリポジトリ導入(RPMforge) – CentOSで自宅サーバー構築
ここを見て、RPMForge リポジトリを追加すると良い感じになるかと思います。
02.kakasi をインストール。
wget http://kakasi.namazu.org/stable/kakasi-2.3.4.tar.gz
tar zxvf kakasi-2.3.4.tar.gz
cd kakasi-2.3.4
./configure && make && make install
cd ..
rm –rf kakasi-2.3.4*
03.仕分けを行いたいユーザに
スパムメール用のメールボックスを作成しておく。
以下 「.Junk\ E-mail/」 と出てくる部分は、
Windows Live メールをクライアントとして使用する際に、「迷惑メール」のフォルダとして「Junk E-mail」というフォルダが使われることに合わせての設定です。ご使用予定のクライアントソフトに合わせて、「.(フォルダ名)」に適宜読み替えていただければ幸いです。
また、これ以降出てくる 「USERNAME」という表記は、すべてそのユーザ名に読み替えてください。
(仕分けを行いたいユーザのカレントディレクトリに移動。)
cd ~cd Maildir
mkdir –p .Junk\ E-mail/new
mkdir –p .Junk\ E-mail/cur
mkdir –p .Junk\ E-mail/tmp
chmod –R 700 .Junk\ E-mail
chown –R USERNAME .Junk\ E-mail
04.ユーザのホームディレクトリにおまじないを書いておく。
.forward (ダブルコーテーションも入力する必要があります)
"|IFS=” && exec /usr/bin/procmail -f- || exit 75 #USERNAME"
.procmailrc
PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
SHELL=/bin/sh
LOCKFILE=$HOME/.maillock
LOGFILE=$MAILDIR/procmail.log:0 HB
* ? nkf -mQ -e | kakasi -w | /usr/bin/bogofilter
.Junk\ E-mail/cur/.
05.自己学習するように cron にスクリプトを投げておく。
(cron.daily とかだとうまくいかないので、 crontab で登録掛けてください。)
~/bogofilter-learn
#!/bin/bash
PATH=/usr/bin:/bin:/usr/local/binfind "~/Maildir/cur" -type f -ctime -2 -exec sh -c ‘cat "{}" 2>/dev/null | nkf -mQ –e | kakasi -w | bogofilter -n’ ‘;’ > /dev/null
find "~/Maildir/.Junk E-mail/cur/" -type f -ctime -2 -exec sh -c ‘cat "{}" 2>/dev/null | nkf -mQ –e | kakasi -w | bogofilter -s’ ‘;’ > /dev/null
とりあえずこんな感じ。
最後に 参考にしたページ。というか、データのかき集め元。
- メールサーバー構築(Postfix+Dovecot) – CentOSで自宅サーバー構築
- メールサーバーでウィルス&スパムチェック(Postfix+Clam AntiVirus+SpamAssassin) – CentOSで自宅サーバー構築
- Bogofilter – スパムとのたたかい [dh memoranda]
- Kuro-san 更新日誌 bogofilterインストール記
ではでは。