Sender、From和Return-Path之间有什么区别?

166

发送者、发件人和回邮地址之间有什么区别?

示例:我有一个联系表单,用户可以输入他们的电子邮件地址,这个地址应该被分配给发送者、发件人还是回邮地址?

我在StackOverflow上进行了快速搜索,但没有找到任何有用的信息。

3个回答

208

因此,在SMTP中提交消息时,SMTP信封(发件人,收件人等)与消息的实际数据不同。

Sender头部用于标识提交消息的人。这通常与From头部相同,后者是消息的发送者。但在某些情况下,它可能会有所不同,例如邮件代理为其他人发送邮件的情况。

Return-Path头部用于指示收件人(或接收MTA)应将非投递回执发送到哪里。

例如,假设有一个服务器允许用户从网页发送邮件。那么,sender@yourcompany.com输入一条消息并提交。然后,服务器使用From设置为sender@yourcompany.com将该消息发送给其收件人。实际的SMTP提交使用不同的凭据,类似于mailagent@mywebmail.com。因此,将sender头部设置为mailagent@mywebmail.com以指示From头部并未指示实际提交消息的人。

在这种情况下,如果无法发送消息,则最好为代理收到非投递报告,因此Return-Path也将设置为mailagent@mywebmail.com,以便任何投递报告发送给代理而不是发件人。

如果您正在执行此操作,即提交表单以发送电子邮件,则这与如何设置标头可能是直接并行的。


1
此外,您不必设置所有内容。例如,如果您省略了发件人和回复地址,它们将发送到发件人地址。如果您省略了回复地址,NDR将发送到发件人。 - Shawn D.
1
这是对邮件轰炸者的一种有吸引力的诱惑。不要这样做! - tripleee
9
想象一下某位重要人士有一名助理在管理其电子邮箱。如果助理代表这位VIP发送电子邮件,则助理是“发件人”,但邮件的实际发送者是VIP本人。因此,当你看到电子邮件的描述为“代表VIP发送自助理”的时候,就是这种情况。 - dewin
@ShawnD.,如果没有“Return-Path”怎么办?它会默认使用“Sender”吗? - Pacerier
在VERP的情况下会发生什么?退信会去哪里?谢谢。 - Diego Ramos
显示剩余2条评论

118

这个规范的官方RFC可以在这里找到:

https://www.rfc-editor.org/rfc/rfc4021#section-2.1.2 (请查看第2.1.2段及其后面的内容)

2.1.2. Header Field: From

Description:  
    Mailbox of message author  
[...]  
Related information:
    Specifies the author(s) of the message; that is, the mailbox(es)
    of the person(s) or system(s) responsible for the writing of the
    message. Defined as standard by RFC 822.

2.1.3. Header Field: Sender

Description:  
    Mailbox of message sender  
[...]  
Related information:
    Specifies the mailbox of the agent responsible for the actual
    transmission of the message.  Defined as standard by RFC 822.

2.1.22. Header Field: Return-Path

Description:
    Message return path
[...]  
Related information:
    Return path for message response diagnostics. See also RFC 2821
    [17]. Defined as standard by RFC 822.

7
谢谢提供官方RFC链接。如果有人问“基于什么?”这个链接非常有用。 - bayuah
1
这篇来自2011年的其他回答声称,这里指示的方法会导致Gmail将邮件标记为垃圾邮件。我想知道今天是否仍然如此。 - showdev
1
在RFC 5322中更新 https://tools.ietf.org/html/rfc5322#section-3.6。请问有人可以告诉SMTP RFC的相关人员,如果要使用发件人字段,则必须与SMTP握手过程中使用的发件地址匹配,这将会很有帮助。 - BeowulfNode42

31
这是一份关于邮件传输的技术内容更新,发送者不应设置“Return-Path:”头部。一个在传输中的信息不存在“Return-Path:”头部。这个头部由最终投递的MTA设置,并且通常被设置为“5321.From”的值,除非本地系统需要某种奇特的路由。这是一个普遍的误解,因为用户很少在收件箱中看到没有“Return-Path:”头的电子邮件。这是因为他们总是看到已经投递的邮件,但是MTA不应该在运输中的信息上看到“Return-Path:”头部。详见https://www.rfc-editor.org/rfc/rfc5321#section-4.4

使用电子邮件客户端的发件人不会设置它,但是编写发送电子邮件脚本的“发件人”可能会在脚本中设置它,因此我认为说发件人永远不应该设置它是具有误导性的。 - chiliNUT
5
很遗憾,Chilinut实际上是不准确的。在传输过程中,邮件消息的返回路径(Return-Path)标头将被丢弃,执行最终投递的MDA(邮件投递代理)会将返回路径(Return-Path)标头设置为与邮件所携带的5321.From(信封发件人)值相匹配。这是因为当邮件被投递时,信封信息已经丢失了,因此返回路径(Return-Path)标头记录了MDA接收该邮件时信封发件人的信息。 - cmeid
2
Return-Path: 头部反映了信封发件人或 RFC5321.From 地址。From: 头部反映了头部发件人或 RFC5322.From 地址。 - cmeid
7
语义学开始变得重要了,关键是(如上所述),在发送邮件时不能设置“Return-Path:”头。如果这样做,它将在传输过程中被丢弃,并由进行消息最终交付的MDA设置为RFC5321.From或信封发件人的值。基本上,“Return-Path:”头记录了信封发件人的内容,因为信封在交付后会被丢弃。 - cmeid
1
消息信封中的返回路径与信封来源相同。然而,“Return-Path:”标题是消息正文的一部分,由MDA设置。 - cmeid
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接