我正试图使用sendmail -oi -t
将电子邮件发送回发件人,但不知何故,它提取了MTA,由于电子邮件返回路径和电子邮件头中的第一个发件人是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
您正在指示formail
生成回复,它会忠实地尝试这样做。默认情况下,-r
选项会尝试从标题的优先级列表中选择最好的一个1;如果消息具有Reply-To:
报头(但没有Resent-From:
和Resent-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:
),但用我们从Sender:
标头捕获的标头覆盖生成的To:
标头。
Procmail正则表达式中的/
标记会将其后面的任何内容捕获到变量MATCH
中。我们使用它从传入消息中获取Sender:
标头的值。
- http://www.iki.fi/era/procmail/formail.html——这是一个旧版本,但这个代码在很长一段时间内都没有改变