在我们的邮件应用程序中,我们发送带有以下标题的电子邮件:
FROM: marketing@customer.com TO: subscriber1@domain1.example Return-PATH: bouncemgmt@ourcompany.example
我们面临的问题是,一些电子邮件服务器会立即退回邮件并使用来自或反向路径 ( marketing@customer.example) 而不是我们的退回管理服务器。如果我们能够捕获所有反弹,我们想知道我们是否在标题中修改回复到与返回路径相同。
marketing@customer.example
欢迎任何其他想法?
我们使用以下文档作为参考: VERP RFC Bounce Messages
SMTP 日志解析以获取退回
编辑1:更多信息,看看我们是否能解决这个问题。
我们想知道在什么时候中继消息的电子邮件服务器将选择使用回复路径与返回路径。我们注意到,当第一个中继消息的 SMTP 服务器被拒绝时,它会将其发送到回复对象,但是当它发生在一个跃点之后,它会将其发送到返回路径。
让我们从一个简单的例子开始。假设您有一个电子邮件列表,它将发送以下RFC2822内容。
From: <coolstuff@mymailinglist.example> To: <you@example.com> Subject: Super simple email Reply-To: <coolstuff-threadId=123@mymailinglist.example> This is a very simple body.
现在,假设您要从实现VERP(或其他使用不同返回路径的退回跟踪机制)的邮件列表发送它。可以说它将有一个返回路径coolstuff- you=yourcompany.com@mymailinglist.example。SMTP 会话可能如下所示:
coolstuff- you=yourcompany.com@mymailinglist.example
{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.example> {S}250 2.1.0 me@mycompany.com....Sender OK {C}RCPT TO:<you@example.com> {S}250 2.1.5 you@example.com {C}DATA {S}354 Start mail input; end with <CRLF>.<CRLF> {C}From: <coolstuff@mymailinglist.example> To: <you@example.com> Subject: Super simple email Reply-To: <coolstuff-threadId=123@mymailinglist.example> 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.example From: <coolstuff@mymailinglist.example> To: <you@example.com> Subject: Super simple email Reply-To: <coolstuff-threadId=123@mymailinglist.example> This is a very simple body.
现在,让我们描述不同的“FROM”。
MAIL FROM
在 SMTP 会话期间发生的所有退回都应返回到 Return-Path 地址。一些服务器可能会接受所有电子邮件,然后在本地排队,直到它有一个空闲线程将其传递到收件人的邮箱。如果收件人不存在,它应该将其退回到记录的 Return- Path 值。
请注意,并非所有邮件服务器都遵守此规则;一些邮件服务器会将其退回到 FROM 地址。
FROM 地址是在 FROM 标头中找到的值。这应该是消息的发件人。这就是您在大多数邮件客户端中看到的“FROM”。如果电子邮件没有回复标头,则所有人工(邮件客户端)回复都应返回到 FROM 地址。
回复标头由发件人(或发件人的软件)添加。这也是所有人类回复都应该处理的地方。基本上,当用户单击“回复”时,回复值应该是用作新撰写电子邮件的收件人的值。任何服务器都不应使用回复值。它仅供客户端 (MUA) 使用。
但是,正如您所知,并非所有邮件服务器都遵守 RFC 标准或建议。
希望这应该有助于解决问题。但是,如果我错过了什么,请告诉我,我会尽力回答。