- Linux
- 2012-01-21 - 更新:2012-02-27
この記事は最終更新日から1年以上経過しています。
環境:qmail+vpopmail
迷惑メール対策
.procmailrc
基本設定
#/home/vpopmail/domains/example.jp/username/.procmailrc #環境変数の設定 PATH=/usr/bin:/usr/local/bin HOME=/home/vpopmail/domains/example.jp/username MAILDIR=$HOME/Maildir DEFAULT=$HOME/Maildir/ LOGFILE=$MAILDIR/procmail.log #省略するとログを記録しない LOCKFILE=$MAILDIR/procmail.lock VERBOSE=ON #詳細なログを記録する #以下、カスタム変数 ME=username@example.jp BLACKLIST=/home/vpopmail/domains/.blacklist #ブラックリストファイル NGWORD=/home/vpopmail/domains/.ngword #NGワードファイル
レシピ
#空のヘッダーを削除 :0Hfw | formail -z #日本語メールのみ受け付ける :0Hfw * ! ^Content-Type: .*(iso-2022-jp|multipart/mixed;) * ! ^Subject: .*(iso-2022-jp|utf-8|euc-jp|shift_jis) * ! ^FROM_DAEMON | formail -I "X-Spam-Flag: YES" :0Hfw * ^Content-Type: .*(US-ASC|iso-8859-1) | formail -I "X-Spam-Flag: YES" #容量制限:60MBまで :0Hfw * > 60000000 | formail -I "X-Spam-Flag: YES" #よくあるスパムメールを除去 :0Hfw * ^From: .*<(_|-) | formail -I "X-Spam-Flag: YES" #Fromがないもの :0Hfw * ! ^From: .* | formail -I "X-Spam-Flag: YES" #アドレス詐称対策 #Message-IDがなく宛先と送信元が自分自身のアドレスなら #返す先がないので削除 :0Hfw * ! ^Message-ID: .* *$ ^To: .*$ME.* *$ ^From: .*$ME.* /dev/null #送信元メールサーバーのDNS名前解決ができないとき #:0fwH #* ^Received: .*from unknown #| formail -I "X-Spam-Flag: YES"
フラグ判定の上、処理実行
#スパムフラグがYESだったら宛先不明で返送 :0H * ^X-Spam-Flag: YES { :0fwHB * ^From: \/.* | formail -r -k \ -I "To: $MATCH" \ -I "Subject: failure notice" \ -I "From: MAILER-DAEMON@example.jp" :0w | /var/qmail/bin/sendmail -oi -t } #前の条件を満たさなかったとき :0fwE { :0fwH | formail -A "Check: False" }
ブラックリストを使用する場合
1行に1アドレスを書いたブラックリストファイルを用意します。
レシピに以下を追加します。
#送信元アドレスを変数$FROMに格納 #sedコマンドで表示名、スペース、<>を除去(無効) :0fwH * ^From: \/.* { FROM = $MATCH #FROM = `echo $FROM | sed s/\".*\"//` #FROM = `echo $FROM | sed s/[[:space:]]//g` #FROM = `echo $FROM | sed s/\\<//g | sed s/\\>//g` } #送信元アドレスがブラックリストにあればスパムフラグを付ける #完全一致する行を見つけるためにwオプションを追加 :0fw * ? test -s $BLACKLIST * ? echo "$FROM" | fgrep -iqwf $BLACKLIST | formail -I "X-Spam-Flag: YES"
ブラックリストを使用する場合、環境変数の設定を以下のようにする必要があります。
SHELL=/bin/sh #追加 PATH=/bin:/usr/bin:/usr/local/bin
VERBOSEについては、デバッグ時のみ使用するようにすること
procmailはメール1通ずつプロセスが起動するようなので、
常に使用していると負荷がかかりすぎる可能性があります。
レシピを作成した後、実装するために.qmailを作成
/home/vpopmail/domains/example.jp/username/.qmail
| /usr/bin/procmail -m ./.procmailrc
5,811 views