Subject も本文も存在しないメールはスパムフォルダに振り分け

最近 1 日に 10 通程度、毎回違う From で Subject も本文も存在しない スパムが来るのですが、bsfilter で捕捉できません。仕方がないので、そ のようなメールは問答無用でスパムフォルダに振り分けることにしました。 以下が ~/.procmailrc のレシピです。touch しているのは、Mew でスパム フォルダを訪問した時に自動でスキャンを走らせるためです。 PATH=${HOME}/bin:${PATH} MAILDIR=${HOME}/Mail :0 * !^Subject: { :0 HB: * ? mail-body-empty * ? touch ${MAILDIR}/spam/.mew-mtime ${MAILDIR}/spam/. } mail-body-empty は自作の Ruby スクリプトです。~/bin に置きました。 以下にコピペします。 #!/usr/bin/ruby # 標準入力から渡されたメールの本文が空だったら 0、空でなかったら 0 以外を返す。 # メール本文が空行のみ、または空行の連続を「空」と定義する。 mode = :header STDIN.each do |line| case mode when :header if /^$/ =~ line mode = :body end when :body unless /^$/ =~ line exit 1 end end end exit 0 ### End of file 最初は “* ?...

2009-12-13 (Sun) · masutaka

formailを使った重複メールの削除

[2007-07-31-1] で話題にした重複メールの件。 To: masutaka.net@gmail.com Cc: 加入しているメーリングリスト という宛先でメールが来ると、同じメールが 2 通来てしまう。 procmail 付属の formail をうまくを使えば、スマートに削除できることが分かった。 以下は ~/.procmailrc の該当の設定。 PATH=$PATH:/usr/local/bin MAILDIR=$HOME/Mail.local DELETEDIR=$HOME/.trash/Mail/delete :0 * ? formail -D 8192 msgid.cache * ? touch $DELETEDIR/.mew-mtime $DELETEDIR/. formail が Message-ID を msgid.cache というファイルに 8192byte 蓄え、重複メールかの判断をしている。 そう判断されたメールは $DELETEDIR に振り分けられる。msgid.cache は $MAILDIR に作られる。どちらのディレクトリともメールサーバから見える場所を指定すること。$HOME が無難。ディレクトリはあらかじめ掘っておき、適切なパーミッション(2700等)をかけておくこと。 .mew-mtime を touch しているのは、Mew から $DELETEDIR を見たときにスキャンが走るようにするため。

2007-10-19 (Fri) · masutaka

重複メール

To: masutaka.net@gmail.com Cc: 加入しているメーリングリスト という宛先でメールが来ると、同じメールが 2 通来てしまう。 procmail 付属の formail を使えば Message-ID が同じメールを削除してくれる。詳細は割愛。 でも削除は怖いから、どこかのディレクトリに待避したいなあ。Notes のメールは Message-ID が重複しているし…。 あとは、メール本文が同じかどうかでも判断するようにしたい。MD5 でハッシュを計算すれば、負荷は少ないはず。

2007-07-31 (Tue) · masutaka

bsfilter の使用感

elisp だけで実装したスパムフィルタ mew-spam-stat.el でスパム除去し ていたが、スパム判定洩れが多くなってきたので、評判が良い bsfilter を使ってみることにする。 【環境】 OS: RedHat Linux 7.2 メール受信: fetchmail + procmail フィルタ: bsfilter fetchmail で外部の POP サーバーからメールを収集し、procmail でロー カルマシンに配送。その際、bsfilter を使って SPAM メールを指定ディレ クトリに移動してしまおう、というのがねらい。 まず、fetchmail、procmail、bsfilter をインストールする。 bsfilter は、http://bsfilter.org/ から入手できる。 [bsfilter のインストール] 上記 bsfilter のサイトから入手した bsfilter-X.Y.Z.tgz 内の bsfilter/bsfilter を、/usr/local/bin などにコピーするだけ。 [bsfilter の育て方] 最初、bsfilter は、どれが SPAM で、どれがクリーンなファイルなのか分 からないので、教えてあげないといけない。具体的には以下のようにする。 % find $HOME/Mail/inbox -type f ! -name ".mew-*" | xargs bsfilter --add-clean % find $HOME/Mail/spam -type f ! -name ".mew-*" | xargs bsfilter --add-spam % bsfilter --update もちろんこれに先だって、$HOME/Mail/inbox の中の SPAM メールを...

2005-08-29 (Mon) · masutaka