パスワードを忘れた? アカウント作成
643179 journal

sugi999の日記: fetchmail + bsfilter + Wanderlust を用いたメール環境の構築 on Windows

日記 by sugi999

=== 目標
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!)」で、
リダイレクトの不等号って書けないんでしょうか?
実体参照で書いてみてもダメっぽいんですが……

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

Stay hungry, Stay foolish. -- Steven Paul Jobs

読み込み中...