0

を使用して送信者に電子メールを返信しようとしていますsendmail -oi -tが、どういうわけか MTA を抽出しました。電子メールの return-path と電子メール ヘッダーの最初の From が実際の送信者ではなく MTA であるため、実際の送信者を取得するために領収書を書き込む方法は? したがって、sendmail は次の宛先に電子メールを配信できます: 送信者: +xxxxxxxxxx@tmomail.net または 差出人: +xxxxxxxxxx@tmomail.net

受信した procmail.log と電子メールは次のとおりです。

...
procmail: Matched "+1xxxxxxxxxx@tmomail.net"
procmail: Match on "^Sender: \/.+"
procmail: Assigning "LASTFOLDER= (/usr/bin/formail -rA"Precedence: junk" \
-A"X-Loop:addr@mydomain.com" \
-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: "r@884017:/var/mail/r"
From btv1==909280b6006==+1xxxxxxxxxx/TYPE=PLMN@tmomail.net  Mon Apr 11  17:09:24 2016
Folder: /var/mail/r             

メールのヘッダーは次のとおりです。

From btv1==9062f44d095==+xxxxxxxxxx/TYPE=PLMN@tmomail.net  Fri Apr  8 00:19:01 2016
Return-Path: <btv1==9062f44d095==+xxxxxxxxxx/TYPE=PLMN@tmomail.net>
X-Original-To: recipient@mydomain.com
Delivered-To: recipient@mydomain.com
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 <recipient@mydomain.com>; 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 <r@mr4.biz>; Fri, 08 Apr   2016 00:18:58 +0000 (GMT)
To: recipient@mydomain.com
From: +xxxxxxxxxx@tmomail.net
Content-Type: multipart/related;Type="text/html";boundary="-boundaryRMS123"
Date: Fri, 8 Apr 2016 00:18:58 GMT
Message-ID: 20160308001858639184@mavenir.com
Sender: +xxxxxxxxxx@tmomail.net
User-Agent: iPhoneOS/9.2.1 (13D15)
X-Virus-Scanned: by bsmtpd at syniverse.com

レシピの最後の部分は次のとおりです。

:0hc
* !^X-Loop:old@domain.com
* ^Sender: \/.+
| (/usr/bin/formail -rA"Precedence: junk" \
                     -A"X-Loop:addr@mydomain.com" ; \
   echo "$result"; \
) | /usr/sbin/sendmail -oi -t
4

1 に答える 1

1

あなたは応答を生成するように指示formailしており、それは忠実にそうしようとします。デフォルトでは、-rオプションはヘッダーの優先リストから最適なものを選択しようとします1。メッセージにReply-To:ヘッダーがある場合 (ただし no Resent-From:、 noResent-Reply-To:など)、それに対する返信が生成されます。

を使用-rtすると、RFC に準拠しますが、実際的な動作はやや少なくなりますが、ここではあまり役に立ちません。

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

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

これはformail -r、正しいヘッダーIn-reply-to:References:ヘッダー (および以前の ) を取得するために使用しますが、生成されたヘッダーをヘッダーからキャプチャしたものでX-Loop:上書きします。To:Sender:

\/Procmail 正規表現のトークンにより、それ以降のすべてが変数に取り込まれますMATCH。これを使用してSender:、受信メッセージからヘッダーの値を取得します。


  1. http://www.iki.fi/era/procmail/formail.html -- これは古いバージョンのものですが、このコードは長い間変更されていません。
于 2016-04-11T05:01:55.550 に答える