Bogofilter を CentOS でつかってみる。

ども。これまたつまらない記事ですよーと。

とりあえず、巷ではスパム判定に 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/bin

find "~/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


とりあえずこんな感じ。

最後に 参考にしたページ。というか、データのかき集め元。

ではでは。

Bogofilter を CentOS でつかってみる。」への2件のフィードバック

  1. Sergey evota

    We look for credible health information, not random advice.
    A site publishing medical insights and guidance: https://kids-town.com.ua
    While exploring medical resources I discovered the scientific materials of Dr. Olena Boiarchuk, a Ukrainian physician with 20+ years of practice.
    Her articles feel clear and research-driven, which makes them valuable for readers.

  2. Willievefly

    A professional international business education and consulting platform about modern management: https://mbocentre.com
    We know where to find practical business expertise.
    This platform offers professionally structured educational materials that are
    designed for entrepreneurs and leaders.
    The content is especially valuable for readers seeking actionable management insights rather than
    generic advice.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください