让我们从一个简单的例子开始。假设您有一个电子邮件列表,它将发送以下RFC2822内容。
From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>
This is a very simple body.
现在,假设您要从实现VERP(或使用其他返回路径的其他一些反弹跟踪机制)的邮件列表中发送该邮件。可以说它的返回路径为coolstuff-you=yourcompany.com@mymailinglist.com
。SMTP会话可能类似于:
{S}220 workstation1 Microsoft ESMTP MAIL Service
{C}HELO workstation1
{S}250 workstation1 Hello [127.0.0.1]
{C}MAIL FROM:<coolstuff-you=yourcompany.com@mymailinglist.com>
{S}250 2.1.0 me@mycompany.com....Sender OK
{C}RCPT TO:<you@yourcompany.com>
{S}250 2.1.5 you@yourcompany.com
{C}DATA
{S}354 Start mail input; end with <CRLF>.<CRLF>
{C}From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>
This is a very simple body.
.
{S}250 Queued mail for delivery
{C}QUIT
{S}221 Service closing transmission channel
其中{C}和{S}分别代表客户端和服务器命令。
收件人的邮件如下所示:
Return-Path: coolstuff-you=yourcompany.com@mymailinglist.com
From: <coolstuff@mymailinglist.com>
To: <you@yourcompany.com>
Subject: Super simple email
Reply-To: <coolstuff-threadId=123@mymailinglist.com>
This is a very simple body.
现在,让我们描述不同的“ FROM”。
- 返回路径(有时称为反向路径,信封发件人或的信封,所有这些术语可以互换使用)是
MAIL FROM
命令中SMTP会话中使用的值。如您所见,该值不必与消息标题中的值相同。仅应将收件人的邮件服务器添加一个Return-Path标头到电子邮件的顶部。这将记录SMTP会话期间的实际Return-Path发件人。如果邮件中已存在Return-Path标头,则该标头将被删除并由收件人的邮件服务器代替。
在SMTP会话期间发生的所有跳回应返回到“返回路径”地址。某些服务器可能会接受所有电子邮件,然后将其在本地排队,直到它有一个自由线程将其发送到收件人的邮箱为止。如果接收者不存在,则应将其反弹回记录的Return-Path值。
请注意,并非所有邮件服务器都遵守此规则;某些邮件服务器会将其退回到发件人地址。
FROM地址是FROM头中找到的值。这应该是消息的发件人。在大多数邮件客户端中,这就是您所看到的“ FROM”。如果电子邮件没有回复头,则所有人工(邮件客户端)回复都应返回到“发件人”地址。
发件人(或发件人的软件)添加了Reply-To标头。在这里也应处理所有人类的答复。基本上,当用户单击“答复”时,“答复至”值应为用作新撰写的电子邮件的收件人的值。任何服务器均不应使用Reply-To值。它仅用于客户端(MUA)。
但是,您可以知道,并非所有邮件服务器都遵循RFC标准或建议。
希望这应该有助于清理问题。但是,如果我错过了任何事情,请告诉我,我将尽力回答。