[家]
「欲深い人間はその欲深さゆえに苦悩する」
迷惑メール(いわゆる spam)が50%を超えたので、いろいろと対処しようとしています。 ここはそれ関係のページです。
と書いてから2年以上が経ちましたが、いま迷惑メールが何割あるのかよくわかりません。 ただ CRM114 のおかげでほとんど迷惑メールを目にせずにすむようになったのは確かです。
ベイジアンフィルターなどを使って迷惑メールを検出しようとするとき、 そのフィルタが英語用に書かれていると(だいたいそうだが) 分かち書きされていない日本語のテキストだとうまくいかない。 で、UNIX の場合、kakasi を使って 分かち書きにするのが一般的なやりかたです。
これをするのに bogofilter の日本語対応のページでは bogofilter 自身にパッチを当てるというやりかたをしてます。 また CRM114 の日本語対応のページでは CRM114 のプログラムである mailfilter.crm を書き換えて kakasi を呼び出すようにしてます。 でも、この手の前処理はどんなフィルタでも共通でしょう。 それで書いたのがこのプログラムです。
最新版
以前の版
個人用に作ったものですので、何の保証もありません。 使うときには自己責任でお願いします。 コメントにそのへんが書いてありますので読んでね。
プログラムを見てもらえばわかりますが、 外部のファイルを読んだり書いたりしませんし、 呼び出しているコマンドは nkf と kakasi だけです。 あとは Ruby や RubyMail 関係の設定におかしなことがなければ、 このプログラム自体が悪さをすることはないと思います。
もちろん、procmail やフィルタの設定には気をつけてください。
まだない機能。
これらが動く UNIX 上なら大丈夫だと思う。適当にインストールして使います。
標準入力からメールを食べて、標準出力に分かち書き(などの処理が)されたメールを出します。 だから自分が読むメールは別口で読めるようにしとく。 たとえば procmail を使うなら、 0cw とかを使ってコピーをこのプログラムに送り、 その先をフィルタに食わせて終了コードで迷惑メールかどうか判定しましょう。

私の使いかたを以下に説明します。真似して変なことが起きると悲しいので、 自分の設定をするときには、ちゃんとマニュアルを見たり、 よく知ってる人に相談したりして下さい。
メールを受け取るのに使ってる Postfix が maildir 形式で $HOME/Maildir/ に メールを落としてきます。mbox 形式の場合は junk/. のあたりが変わってくるかな。
MAILDIR=$HOME/Maildir/
DEFAULT=$HOME/Maildir/
:0c:
backup
:0
* < 1048576
{
:0cw:
| /bin/sh $MAILDIR/isspam.sh
:0a:
junk/.
}
きれいなプログラムではないのでお好みに合わせて適当にきれいにして下さい。
prepare.rb はメール1通を丸ごとメモリに入れてから処理するので、 あまりでかいメールがくると困ったことになるかも知れない。 普通はメールサーバのプログラムが上限を設けてるけど、 念のためここでは 1MB 以上のメールは処理しない設定にしました。
.procmailrc に直接このコードを書いてもいいけど別にしてみた。
#!/bin/sh MAILDIR=$HOME/Maildir # mailfilter.crm should be configured so that it exits with 0 if it's spam # (configuration is given in mailfilter.cf) cd $MAILDIR /usr/local/bin/ruby prepare.rb | /usr/local/bin/crm -u $MAILDIR mailfilter.crm
何かの理由で設定がへくったときでもよいメールが junk/ に落ちないために、 正常終了を迷惑メール、異常終了をよいメールという設定にしてます。
では、設定がうまくいきますように。
時間がなくて私自身では確認などしていませんが、いろいろと頂いたものやご意見などをそのままここに載せておきます。
.procmailrc で :0 HB などとすることで、テストだけを行なえるので、 メッセージのコピーを作る必要はないのでは。例えば以下のようにする。
# for bogofilter :0 HB * ? ruby $HOME/bin/prepare.rb | bogofilter --spam-cutoff 0.9 --unicode=no -k 10 spam/.
(廣松さんより)
Kazuto Tominaga ( tominaga あっと inu.tomilab.net )
$Date: 2006/09/04 03:20:14 $