2016-04-09 10 views
0

sendmail -oi -tを使用して送信者にメールを送ろうとしていますが、何とかMTAを抽出しました。最初に電子メールのヘッダーから、実際の送信者ではなくMTAですか?送信者:だから、sendmailは背中に電子メールを配信することができます[email protected] またはから:[email protected]実際のメール送信者を取得するためのレシピの作成方法

ここではprocmail.logと電子メールが受信されます。ここでは

... 
procmail: Matched "[email protected]" 
procmail: Match on "^Sender: \/.+" 
procmail: Assigning "LASTFOLDER= (/usr/bin/formail -rA"Precedence: junk" \ 
-A"X-Loop:[email protected]" \ 
-I"To: $MATCH"; \ 
echo "$result"; \ 
) | /usr/sbin/sendmail -oi -t" 
procmail: Assigning "PATH=/home/r/bin:/usr/local/bin:/usr/bin:/bin" 
procmail: Unable to treat as directory "/var/mail/new" 
procmail: Skipped "/var/mail" 
procmail: Assigning "LASTFOLDER=/var/mail/r" 
procmail: Executing " (/usr/bin/formail -rA"Precedence: junk" \ 
-A"X-Loop:addr2mydomain.com" \ 
-I"To: $MATCH"; \ 
echo "$result"; \ 
) | /usr/sbin/sendmail -oi -t" 
procmail: Opening "/var/mail/r" 
procmail: Acquiring kernel-lock 
procmail: Notified comsat: "[email protected]:/var/mail/r" 
From btv1==909280b6006==+1xxxxxxxxxx/[email protected] Mon Apr 11 17:09:24 2016 
Folder: /var/mail/r    

があります電子メールヘッダー:

From btv1==9062f44d095==+xxxxxxxxxx/[email protected] Fri Apr 8 00:19:01 2016 
Return-Path: <btv1==9062f44d095==+xxxxxxxxxx/[email protected]> 
X-Original-To: [email protected] 
Delivered-To: [email protected] 
Received: from ch3p-tmo-mm3-sfw004.syniverse.com (chi-tmo-mm3.syniverse.com [x.x.x.x]) 
    by mail.mydomain.com (Postfix) with ESMTP id 7D444222D0 
    for <[email protected]>; Fri, 8 Apr 2016 00:19:01 +0000 (UTC) 
Received: from tmobile.net ([10.166.3.161]) by ch3p-tmo-mm3-  sfw004.syniverse.com with ESMTP id RuIW8dEKbs9H2Iyg for <[email protected]>; Fri, 08 Apr 2016 00:18:58 +0000 (GMT) 
To: [email protected] 
From: [email protected] 
Content-Type: multipart/related;Type="text/html";boundary="-boundaryRMS123" 
Date: Fri, 8 Apr 2016 00:18:58 GMT 
Message-ID: [email protected] 
Sender: [email protected] 
User-Agent: iPhoneOS/9.2.1 (13D15) 
X-Virus-Scanned: by bsmtpd at syniverse.com 

ここでは、レシピの最後の部分である:

:0hc 
* !^X-Loop:[email protected] 
* ^Sender: \/.+ 
| (/usr/bin/formail -rA"Precedence: junk" \ 
        -A"X-Loop:[email protected]" ; \ 
    echo "$result"; \ 
) | /usr/sbin/sendmail -oi -t 

答えて

1

回答を生成するようにformailに指示しており、忠実に回答を試みます。既定では、-rオプションは、優先度の高いヘッダーのうち1つを選択しようとします。;メッセージにReply-To:ヘッダーがある場合(ただしResent-From:はなく、Resent-Reply-To:などはありません)、そのメッセージに返信が生成されます。

-rtとすると、RFCに準拠していますが、やや実用的ではありませんが、ここではあまり役に立ちません。

返信するヘッダーがわかっている場合は、それを使用してください。

:0hc 
* ! ^X-Loop:[email protected]\.com 
* ^Sender: \/.+ 
| (formail -rA"Precedence: junk" \ 
      -A"X-Loop:[email protected]" \ 
      -I"To: $MATCH"; \ 
    echo "$result"; \ 
) | /usr/sbin/sendmail -oi -t 

これは正しいIn-reply-to:References:ヘッダ(ならびに任意の以前X-Loop:)を得るためにformail -rを使用するが、我々はSender:ヘッダからキャプチャ1で生成To:ヘッダを上書き。

Procmailの正規表現内の\/トークンは、その後に変数MATCHに取り込まれるすべてのものを引き起こします。これを使用して、着信メッセージからSender:ヘッダーの値を取得します。


  1. http://www.iki.fi/era/procmail/formail.html - これは古いバージョンからですが、このコードはloooooong時間に変更されていません。
+0

*^Sender:\ /.+と-I "To:$ MATCH"という行を追加しました。 \、procmail: "(/ usr/bin/formail -rA)"を実行します: "X:Loop:[email protected]"; \ -I "To:$ MATCH"; \\/bin/sh:3:構文エラー:ファイルの終わりが予期しない(予期している ")") –

+0

行* * Sender:\ /.+はして、$ MATCHは送信者ですか?なぜそれが二重引用符の中にあるのですか? –

+0

Procmailの正規表現の '\ /'トークンは、それ以降のものを変数 'MATCH'に取り込むようにします。シェルは、値に対してトークン分割とワイルドカード展開を特に必要としない限り、一般にすべての変数を二重引用符で囲みます。 http://stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variableを参照してください – tripleee

関連する問題