- Linux
- 2012-02-17 - 更新:2012-02-22
maillogにprocmailのエラーが出ていたのでメモ
エラー
procmail: Extraneous filter-flag ignored
原因
:0fwH /dev/null
4,235 views
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"
テーブルの一覧を取得し、削除します。
※DAO参照はなしで実行できるようにしています。
Dim tbls As Object 'DAO.TableDefs Dim tbl As Object 'DAO.TableDef 'テーブル一覧取得 Set tbls = CurrentDb.TableDefs Dim DelTables As Collection Set DelTables = New Collection For Each tbl In tbls '「MSys」で始まるテーブルはシステムテーブルなので省きます If Not tbl.Name Like "MSys*" Then DelTables.Add tbl.Name End If Next For i = 1 To DelTables.Count 'テーブル削除 tbls.Delete (DelTables(i)) Next MsgBox "削除件数=" & DelTables.Count