- Linux
- 2013-02-19
procmailを使って、本文を変数に格納します。
procmailフラグ「b」…メールの本文をアクションに渡す
:0b { BODY = `sed -e ' 1,/^$/ d'` }
以上で変数$BODY
に本文が格納されます。
参考URL: http://jo1upk.blogdns.net/linux/?%E3%82%BD%E3%83%95%E3%83%88%2Fprocmail%2Fformail
procmailを使って、本文を変数に格納します。
procmailフラグ「b」…メールの本文をアクションに渡す
:0b { BODY = `sed -e ' 1,/^$/ d'` }
以上で変数$BODY
に本文が格納されます。
参考URL: http://jo1upk.blogdns.net/linux/?%E3%82%BD%E3%83%95%E3%83%88%2Fprocmail%2Fformail
Procmailにてレベルを定義し振り分けをおこなう方法と
ORによる条件判定の方法。
LEVEL=2
レベル2のとき適用
:0 * $LEVEL ?? 2 { # 逆引きできないホストを経由したメールの場合 :0Hfw * ^Received: .*from.*unknown | formail -I "X-Spam-Flag: True" }
エンベロープ(封筒)とは、電子メールメッセージの配送の際にメール本体に付加されるデータで、送信者と宛先の2つあります。
これはメールヘッダーに付加される情報とは異なり、実際の配送に使われる情報です。
送信者はMAIL FROM:、宛先はRCPT TO:となります。
ここに設定される情報は通常、メーラーでは見れないが、
メールヘッダーのReturn-Path:にMAIL FROM:の内容が、Received:にRCPT TO:の内容が記録されていることがあります。
エンベロープの送信者・宛先はメッセージの配送に使われる実際の送信者・宛先であり、ヘッダーに書かれているものとは異なる場合がある。つまりいくらでも詐称することが可能ということである。
送信元メールアドレスの取得が不完全だったので、訂正します。
確かな情報を得るため、ヘッダーからではなく、エンベロープから取得するように。
オプションもいらないと思います。
訂正前
#送信元アドレスを変数$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` }
訂正後
※[]の中は^・半角スペース・タブです。
#送信元アドレスを変数$FROMに格納 :0 *$ ! ^From *\/[^ ]+ { FROM = `formail -x From:` } :0E { FROM = $MATCH }
Reply-To:・Sender:も取得する場合
#送信元アドレスを変数$FROMに格納 :0 *$ ! ^Reply-To: *\/[^ ].* *$ ! ^Sender: *\/[^ ].* *$ ! ^From *\/[^ ]+ { FROM = `formail -x From:` } :0E { FROM = $MATCH }
ドメインを取得する場合(@を含む)
:0 *$ ^From *\/[^ ]+ { # @以前を除去 DOMAIN = `echo "$MATCH" | sed s/.*@/@/g` }
maillogにprocmailのエラーが出ていたのでメモ
エラー
procmail: Extraneous filter-flag ignored
原因
:0fwH /dev/null