sugi999の日記: fetchmail + bsfilter + Wanderlust を用いたメール環境の構築 on Windows
=== 目標
Windows + Cygwin 上に、以下のような環境を構築する。
POP サーバからメールをダウンロードし、
メールごとに適切な振り分けをした上でローカルのメールボックスに保存する。
Meadow2 + Wanderlust を用いて、ローカルのメールボックス上のメールを読む。
使用するメールのアカウントは複数ある。
=== fetchmail のインストール
POP サーバからメールをダウンロードするために、fetchmail を用いる。
Cygwin の setup からインストールすることができる。
設定ファイル ~/.fetchmailrc は、
defaults
protocol pop3
keep
no mimedecode
poll mail.example.jp user "foo" password "abcde123"
mda "remail.rb foo/inbox"
poll mail.example.com user "bar" password "xyz12345"
mda "remail.rb bar/inbox"
のような感じである。ファイルのパーミッション・ownerに注意。
remail.rb は適当に自分で書いてみた MDA。
普通なら、procmail や scmail などが選択肢になるだろう。
=== bsfilter のインストール
スパムフィルタ用ツールとして、bsfilter を用いることにした。
Ruby で書かれているベイジアンフィルタである。
日本語の tokenize のために MeCabを用いることにしたので、
MeCab の Ruby バインディングをインストールした。
==== MeCab のインストール
http://cl.aist-nara.ac.jp/~taku-ku/software/mecab/
より、0.77 をダウンロード。
Cygwin へのインストールは
http://d.hatena.ne.jp/svnseeds/20030707
を参考にした。
% zcat mecab-0.77.tar.gz | tar xvf -
% cd mecab-0.77
% aclocal
% automake --add-missing
% autoconf
% libtoolize --force
% automake
% autoconf
% ./configure
% vi Makefile
LDFLAGSに-no-undefinedを付け加える
% make
% make install
とりあえず動いたのを確認して、ruby バインディングのインストール。
% zcat mecab-ruby-0.77.tar.gz | tar xvf -
% cd mecab-ruby-0.77
% ruby extconf.rb
% vi Makefile
LIBSの行の最後に-L/usr/local/lib -lmecabを付け加える
% make
% make install
ruby extconf.rb の段階で、
checking for ... /usr/local/lib/ruby/1.8/mkmf.rb:509:in `have_header':
undefined method `tr' for nil:NilClass (NoMethodError)
というエラーが出たが……とりあえずそれっぽく動いているようだ。
ということで放置。
==== データベースの構築
% bsfilter -j mecab -c クリーンなメール
% bsfilter -j mecab -s スパムメール
% bsfilter -u
==== スパム判定
ファイル mail がスパムかどうかを判定するには、
% cat mail | bsfilter -j mecab
として、exit status を見る。0 なら spam。
これを利用して、MDA でスパムを振り分ける。
メールを標準入力から渡すかファイル名を渡すかで
挙動が異なるので注意。
(ファイル名で渡すと、spam でも exit status は 0 である。)
=== Wanderlust のインストール
Wanderlust のインストールについては、別項とする。
えっとすいません、「テキスト形式(HTML OK!)」で、
リダイレクトの不等号って書けないんでしょうか?
実体参照で書いてみてもダメっぽいんですが……