← RFC Reference

RFC 3462: 多部分/报告内容类型

Deprecated by RFC 6522 Delivery Status & Bounce Handling Obsoletes RFC 1892 Published March 2026
ELI5: 想象一个标准化的马尼拉文件夹,用于邮件相关事件报告。第一页是简明英文摘要,第二页是一个带有复选框和计算机可读代码的表单,第三页是原始信件的复印件。RFC 3462为电子邮件定义了这种文件夹格式。它后来被RFC 6522取代,但概念是相同的。

为什么存在这个格式

当DSN(递送状态通知)框架在1990年代中期创建时,作者需要一个MIME容器,可以在同一消息中承载人类可读和机器可读的内容。普通的multipart/mixed在结构上可行,但它没有提供语义信号表明该消息是具有特定内部格式的自动化报告。

multipart/report通过以下方式解决这个问题:

RFC 3462是该规范的第二个版本(在RFC 1892之后)。它后来被RFC 6522废弃,该版本严格化了语言并更新了IANA注册。实际的网络格式没有改变——符合RFC 3462的消息也符合RFC 6522。

工作原理

multipart/report内容类型的工作方式类似任何MIME多部分,具有额外的约束:

Content-Type声明

Content-Type: multipart/report; report-type=delivery-status;
    boundary="REPORT-BOUNDARY"

report-type参数告诉收件人这是什么类型的报告。boundary参数分隔MIME部分,如同任何多部分消息一样。

三部分结构

--REPORT-BOUNDARY
Content-Type: text/plain

; 第1部分:人类可读的摘要
向user@example.org的递送永久失败。
收件人邮箱不存在。

--REPORT-BOUNDARY
Content-Type: message/delivery-status

; 第2部分:机器可读的报告
Reporting-MTA: dns; mx.example.com

Final-Recipient: rfc822;user@example.org
Action: failed
Status: 5.1.1

--REPORT-BOUNDARY
Content-Type: text/rfc822-headers

; 第3部分:原始消息头(可选)
From: sender@example.com
To: user@example.org
Subject: Hello
Message-ID: <msg-001@example.com>

--REPORT-BOUNDARY--

关键技术细节

随时间推移定义的报告类型

当RFC 3462发布时,只存在delivery-status。后来的RFC添加了更多使用相同multipart/report容器的报告类型:

report-type 用途 定义者
delivery-status 退信/递送通知 RFC 3464
disposition-notification 已读回执(MDN) RFC 8098
feedback-report 垃圾邮件投诉(ARF) RFC 5965
tlsrpt TLS协商失败 RFC 8460

所需的最少部分

RFC 3462要求至少两部分:人类可读的摘要和机器可读的报告。第三部分(原始消息)是可选的,但对DSN强烈推荐,因为它让发件人能够识别哪条消息退信了。

与RFC 6522的关系

RFC 6522废弃了本文档。这些改变是编辑性的,而非行为性的:

如果你的代码已正确处理RFC 3462,它也能处理RFC 6522。网络格式未改变。

常见错误

可递送性影响

Related RFCs