如何编写一个食谱,以获得真正的电子邮件发件人



我正试图使用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:标头的值。


  1. http://www.iki.fi/era/procmail/formail.html——这是一个旧版本,但这个代码在很长一段时间内都没有改变

相关内容

  • 没有找到相关文章

最新更新