我发现投递状态报告与原始邮件具有相同的 message-id。
以下是交付报告的文本:
传入 DSN 消息:
From: Mail Delivery Subsystem <[email protected]>
To: [email protected]
Subject: DELAY: **********************************************
Message-ID: <[email protected]>
...
**********************************************
** THIS IS A WARNING MESSAGE ONLY **
** YOU DO NOT NEED TO RESEND YOUR MESSAGE **
**********************************************
The original message was received at Wed, 23 Mar 2016 14:36:53 +0100
from [x.x.x.x]
----- Transcript of session follows -----
[email protected]... Deferred: Connection timed out with gmail.de.
Warning: message still undelivered after 4 hours
Will keep trying until message is 4 days old
对应的外发原始邮件:
From: [email protected]
Message-ID: <[email protected]>
我在Bounce Message Wikipedia 页面上找不到任何相关信息。
是否有此规范,或者这只是该特定邮件服务器处理此问题的方式?
我刚刚检查了一封退回的电子邮件和原始发送的电子邮件。
原始消息有一个 Message-ID 标头,其值类似于以下内容:
退回的消息在标头中的两个位置引用此 ID:
同样在附加的 details.txt 中,我看到:
退回邮件中的邮件 ID 具有不同的 ID,其中包含邮件服务器的域:
总之,您所经历的可能特定于您的设置。由于 Message ID 用于识别每封邮件,因此如果该特定邮件服务器在将来某个时间重试失败的邮件,则用它自己的副本替换失败的邮件是没有意义的。
DSN 本身就是一条消息。所以它的一般头文件在RFC822 4.6中定义。
最好在 REFERENCES 和 IN-REPLY-TO 标头中包含原始消息 ID(参见 RFC822 的同一部分,RFC3834 3.1.6也推荐它不直接适用于 DSN,但可以考虑以及很长因为它与RFC3461不冲突)。使用通用扩展头 X-ORIGINAL-MESSAGE-ID 也很好RFC3464 2.4。
如果生成系统选择不希望/不需要为消息生成唯一消息 IF,则它应该省略该可选标头并且不复制原始消息的唯一 ID。
DSN 特定原始消息的消息 ID 可以/应该包含在 multipart/report delivery-status 消息的第三部分中,作为默认值/当发件人未另行请求时。认为MUA使用信封ID将DSN连接到消息是什么。RFC3464 2 RFC3461 4.3 RFC3462
message-id 是消息的唯一 ID。因此,有必要在报告该消息的状态时使用它。这不是消息传递代理用来传递消息的 ID(如果有)。您的邮件阅读器可以使用它来将消息与任何状态消息分组。
回复消息时可以使用其他标题,以便将电子邮件对话收集到一个线程中。