- Linux
-
2012-02-17 - 更新:2012-02-22
maillogにprocmailのエラーが出ていたのでメモ
エラー
procmail: Extraneous filter-flag ignored
原因
:0fwH /dev/null

maillogにprocmailのエラーが出ていたのでメモ
エラー
procmail: Extraneous filter-flag ignored
原因
:0fwH /dev/null
環境: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
レシピを共有化できないかと模索していたら、見つかったので記しておきます。
適当なディレクトリ(ここではetc)に共有するレシピを作成します。
#/etc/procmailrc #環境変数の設定 PATH=/usr/bin:/usr/local/bin MAILDIR=$HOME/Maildir DEFAULT=$HOME/Maildir/ #LOGFILE=$MAILDIR/procmail.log #省略するとログを記録しない LOCKFILE=$MAILDIR/procmail.lock #空のヘッダーを削除 :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.* | formail -I "X-Spam-Flag: YES" #送信元メールサーバーのDNS名前解決ができないとき :0Hfw * ^Received: .*from unknown | formail -I "X-Spam-Flag: YES"
環境: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ワードファイル
ここ数ヶ月、会社でメールを送信する際、待ち時間が長いので
何かおかしいと思い、色々調べてみました。
検索していると、ローカルホストのDNS逆引きや-Hや-Rのオプションをつけるといった解決方法が記載されていました。
それを色々試してみたが、一向に改善せず。
諦めかけていましたが、もう1台のメールサーバーではサクサク送信できているので
そのサーバーの起動スクリプトと比べてみたところ、アッサリ解決。
該当サーバーでは、迷惑メール対策の一環として世界共通のブラックリスト「Mail Abuse Prevention System Realtime Blackhole List(MAPS RBL)」を利用していました。
rblsmtpdはTCPServer(ucspi-tcp-0.88)のパッケージに含まれており、
続きを読む…»