環境:qmail+vpopmail+procmail
procmailを利用してブラックリストを作成します。
まず、適当なディレクトリに空のファイルを作成します。
(ここでは/usr/tmp/.blacklistとしています)
メールアドレスをブラックリストに追加するには、
件名に追加したいメールアドレス、本文に1行でパスワード(pw=00000000の形式)を
入力し、bl@example.jp宛に送信するようにしています。
送信元アドレスも指定されたドメインからのみに指定しています。
#/home/vpopmail/domains/example/bl/.procmailrc
SHELL=/bin/sh #ファイルに書き込むため必須
PATH=/bin:/usr/bin:/usr/local/bin
HOME=/home/vpopmail/domains/example/bl
MAILDIR=$HOME/Maildir
DEFAULT=$HOME/Maildir/
#LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$MAILDIR/procmail.lock
# ブラックリストファイルのパス
BLACKLIST=/usr/tmp/.blacklist
# 送信元アドレスを判断
:0H
* ! ^From: .*@example.jp
/dev/null
# 本文中のパスワードをチェック
:0B
* ! ^(pw|Pw|pW|PW)=00000000
/dev/null
# 件名の有無をチェック([]内は^・半角スペース・タブ)
:0
*$ ! ^Subject: *\/[^ ].*
{
ADDBL = `formail -x Subject:`
}
# 件名を変数に格納
:0E
{
ADDBL = $MATCH
}
# 送信されたアドレスが既にブラックリストにあるかチェック
:0
* ? test -s $BLACKLIST
* ? echo "$ADDBL" | fgrep -iqwf $BLACKLIST
/dev/null
# ブラックリストに未登録なら追加
:0E
| echo $ADDBL >> $BLACKLIST && echo >> $BLACKLIST
# 色んなところで紹介されているのは、1行ずつ開けて登録するようになっているが
# 行が開いていなくても改行されていればいけるようなので以下でも可
| echo $ADDBL >> $BLACKLIST
続きを読む…»