スパムメールでは From はよく詐称されます。
From はあてにならないので From でブラックリスト判定するのは意味ないです。
やるなら Return-Path でブラックリスト判定のほうがマシ。
でも、ブラックリストを追加するのも疲れるしイタチごっこです。
もっとうまい方法がないか・・・
■ ProcmailでFromとReturn-Pathの違いからスパムを弾くレシピ
From と Return-Path が違ったらもう削除してしまうなら以下
# ヘッダからメールアドレス抽出して変数へ :0 * ^Return-Path:\/.* RETUERN_PATH=`echo "$MATCH"|grep -o -E "[-a-zA-Z0-9_.=+]+@[-a-zA-Z0-9_.]+" | tail -n 1` :0 * ^From:\/.* ORIGINAL_FROM=`echo "$MATCH"|grep -o -E "[-a-zA-Z0-9_.=+]+@[-a-zA-Z0-9_.]+" | tail -n 1` :0 * ^To:\/.* ORIGINAL_TO=`echo "$MATCH"|grep -o -E "[-a-zA-Z0-9_.=+]+@[-a-zA-Z0-9_.]+" | tail -n 1` # スパム判定 # From と Return-Path が違う :0 *! $ORIGINAL_FROM ?? $ $RETUERN_PATH /dev/null
でもこれだと、いろんなものが弾かれてしまいすぎ。
いやいや、それはちょっと厳しすぎると思う場合、
From と To が同じときスパム確定にするなら以下
ヘッダからメールアドレス抽出する部分は上記と同じ ・・・ # From と To が同じ (スパム確定) - 削除 :0 * $ORIGINAL_FROM ?? $ $ORIGINAL_TO /dev/null # From と Return-Path が違う - 目印を付けるだけ :0fw *! $ORIGINAL_FROM ?? $ $RETUERN_PATH | formail -i "Procmail-Match-From-Return-Path: unmatch!" \ | formail -i "Procmail-Return-Path: $RETUERN_PATH" \ | formail -i "Procmail-From: $ORIGINAL_FROM" \ | formail -i "Procmail-To: $ORIGINAL_TO"
あとは、総務省の迷惑メール対策室へ自動で転送したり
From と Return-Path のドメインも判定したり・・・
######## ヘッダからメールアドレス抽出 :0 * ^Return-Path:\/.* { RETUERN_PATH=`echo "$MATCH"|grep -o -E "[-a-zA-Z0-9_.=+]+@[-a-zA-Z0-9_.]+" | tail -n 1` RETUERN_PATH_DOMAIN=`echo "$RETUERN_PATH"|sed -r "s/.*@([-a-zA-Z0-9_.]+).*/\1/"` } :0 * ^From:\/.* { ORIGINAL_FROM=`echo "$MATCH"|grep -o -E "[-a-zA-Z0-9_.=+]+@[-a-zA-Z0-9_.]+" | tail -n 1` ORIGINAL_FROM_DOMAIN=`echo "$ORIGINAL_FROM"|sed -r "s/.*@([-a-zA-Z0-9_.]+).*/\1/"` } :0 * ^To:\/.* { ORIGINAL_TO=`echo "$MATCH"|grep -o -E "[-a-zA-Z0-9_.=+]+@[-a-zA-Z0-9_.]+" | tail -n 1` } ######## スパム判定 # From と To が同じ (スパム確定) - 削除 :0 * $ORIGINAL_FROM ?? $ $ORIGINAL_TO /dev/null # From と Return-Path が違う :0 *! $ORIGINAL_FROM ?? $ $RETUERN_PATH { # Return-Path ドメインが From ドメインを含まない :0fw *! $RETUERN_PATH_DOMAIN ?? $ $ORIGINAL_FROM_DOMAIN | formail -i "Procmail-Match-FromDomain-Return-Path: unmatch!" :0Efw | formail -i "Procmail-Match-From-Return-Path: unmatch!" :0fw | formail -i "Procmail-Return-Path: $RETUERN_PATH" \ | formail -i "Procmail-From: $ORIGINAL_FROM" \ | formail -i "Procmail-To: $ORIGINAL_TO" } # spamassassin :0fw *!^X-Spam.* | /usr/bin/spamc :0c * ^X-Spam-Flag: YES { # 総務省の迷惑メール対策室へ転送 # これで捨てずに自分も受信する SENDMAILFLAGS="-oi -f $RETUERN_PATH" ! meiwaku@dekyo.or.jp }
こんな感じ。