最近 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
最初は “* ? mail-body-empty” でなく “* < 1” と書いていたのですが、
うまくいかなかったのでこのスクリプトを作りました。どうやら “<” は
ヘッダと本文の合計サイズを評価する仕様のようです。