怎么有两个`Return-Path:`字段?

Return-Path:上的RFC822 ::

该字段由将消息传递给其收件人的最终传输系统添加。 该字段旨在包含关于地址的path的明确信息,并返回到消息的发起者。

那么如何来一些电子邮件有两个? (在我的例子中,通常是一个在最后,一个在开始,我认为客户端在那里添加它。)不是只有一个鼻祖吗?

这是一些客户的坏习惯吗?

你落后了30年。 RFC 822已被两次取代。

…以及越来越多的文件,尽pipe有些瑕疵,但是试图解释什么是RFC 822,或者是世界决定不做或者完全错误的。

是不是只有一个鼻祖?

Return-Path:Delivered-To:标题不表示发件人和收件人 。 它们在邮件离开SMTP环境后包含邮件信封 ,因此不再分解为信封内容 – 就像本地递送代理在本地递送点将邮件信封和邮件内容写入邮箱文件时一样。

这是一些客户的坏习惯吗?

MUA或MTA发送消息或SMTP环境中的一些中间网关是一个坏习惯。 最高的跟踪字段几乎肯定会由您的本地交付代理添加。 那些更进一步的下降是由别的东西补充。 您的LDA可以自由删除现有的信封标题。 但是这并不是必须的,显然也不是。

进一步阅读

  • 丹尼尔J.伯恩斯坦。 信封信息:返回path,收到 。 Internet邮件消息头格式。
  • 互联网信息格式 。 Peter W. Resnick(编辑) 2008-10。 RFC 5322.请求评论。
  • 丹尼尔J.Bernstein(1997-02-01)。 邮件循环中的战争工具
  • J. Klensin(2008-10)。 “跟踪信息” 。 简单的邮件传输协议 。 RFC 5321.请求评论。

返回path通常会在收到电子邮件时的顶部添加。 特别是在“MAIL FROM”命令的SMTP传输过程中会发生。 它可能不是From :, Reply-To:或Sender:标题中的电子邮件地址。 如果底部有第二个返回path,则很有可能会怀疑,可能在交付完成后添加。

这可能是不好的客户习惯或垃圾邮件。

您可以通过检查内容和标题的其余部分来确定它是否是后者。

Return-Path是MTA会检查的less数头文件之一,并且交付的MTA应该删除和replace它自己的头文件。

一些电子邮件帐户可以select发送电子邮件“代表…”,这将使用不同的服务器来路由电子邮件。 这将涉及多个电子邮件的答复。 否则,不同的例子可能是,如果一个PHP应用程序通过服务器发送电子邮件 – 你可以指定一个返回地址或地址(有时你甚至可以欺骗一个回复地址)。

显然,最好的习惯是让您的客户只发布一个回复地址来查找电子邮件交易和其他debugging任务(如果需要的话)。

 " Once the transmission channel is established and initial handshaking completed, the SMTP client normally initiates a mail transaction. Such a transaction consists of a series of commands to specify the originator and destination of the mail and transmission of the message content (including any headers or other structure) itself. When the same message is sent to multiple recipients, this protocol encourages the transmission of only one copy of the data for all recipients at the same destination (or intermediate relay) host." 

来源: http : //www.ietf.org/rfc/rfc2821.txt

另外:ARPA Internet文本消息的标准

  C.3.2. FROM The "From" field must contain machine-usable addresses (addr- spec). Multiple addresses may be specified, but named-lists (groups) may not. 

来源: http : //ietfreport.isoc.org/idref/rfc822/