カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Procmail 本文を取得する

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

2,782 views

Procmail レシピTips

Procmailにてレベルを定義し振り分けをおこなう方法と
ORによる条件判定の方法。

LEVEL=2

レベル2のとき適用

:0
* $LEVEL ?? 2
{
    # 逆引きできないホストを経由したメールの場合
    :0Hfw
    * ^Received: .*from.*unknown
    | formail -I "X-Spam-Flag: True"
}

続きを読む…»

2,824 views

エンベロープ【envelope】

エンベロープ(封筒)とは、電子メールメッセージの配送の際にメール本体に付加されるデータで、送信者と宛先の2つあります。
これはメールヘッダーに付加される情報とは異なり、実際の配送に使われる情報です。

送信者はMAIL FROM:、宛先はRCPT TO:となります。
ここに設定される情報は通常、メーラーでは見れないが、
メールヘッダーのReturn-Path:にMAIL FROM:の内容が、Received:にRCPT TO:の内容が記録されていることがあります。
エンベロープの送信者・宛先はメッセージの配送に使われる実際の送信者・宛先であり、ヘッダーに書かれているものとは異なる場合がある。つまりいくらでも詐称することが可能ということである。

1,916 views

procmail 送信元の取得

送信元メールアドレスの取得が不完全だったので、訂正します。
確かな情報を得るため、ヘッダーからではなく、エンベロープから取得するように。
オプションもいらないと思います。

訂正前

#送信元アドレスを変数$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`
}
3,828 views

procmailエラー

maillogにprocmailのエラーが出ていたのでメモ

エラー

procmail: Extraneous filter-flag ignored

原因

:0fwH
/dev/null

続きを読む…»

4,240 views