跳到主要内容

1. 引言

1.1. 范围

本文档定义 Internet Message Format (IMF, 互联网消息格式), 即在"电子邮件"消息框架内, 计算机用户之间发送的文本消息语法. 本规范是 RFC 2822 的修订版, 而 RFC 2822 本身取代了 RFC 822; 本规范更新内容以反映当前实践, 并纳入其他 RFC 中规定的增量变更.

本文档仅规定文本消息的语法. 特别是, 它不规定如何在电子邮件消息中传输图像, 音频或其他类型的结构化数据. 已发布的若干扩展, 例如 MIME 文档系列 (RFC 2045, RFC 2046, RFC 2049), 描述了通过电子邮件传输此类数据的机制.

在电子邮件语境中, 消息被视为由信封 (envelope) 和内容 (contents) 组成. 信封包含完成传输和递送所需的信息 (关于信封的讨论见 RFC 5321). 内容则构成要递送给收件人的对象. 本规范仅适用于消息内容的格式以及其中一部分语义. 它不规定信封中的信息.

不过, 某些消息系统可能会使用内容中的信息来创建信封. 本规范旨在方便程序获取这类信息.

本规范旨在定义系统之间传递的消息内容格式. 尽管某些消息系统会以此格式在本地存储消息 (从而无需在格式之间转换), 其他系统则使用不同的原生格式. 本地存储不在本规范范围内.

: 本规范无意规定各站点使用的内部格式, 它们预期支持的具体消息系统功能, 或创建与读取消息的用户界面程序的任何特性. 此外, 本文档不规定用于传输或存储的字符编码.

1.2. 记号约定

1.2.1. 需求记号

本文档偶尔使用以大写字母出现的术语. 当术语 "MUST", "SHOULD", "RECOMMENDED", "MUST NOT", "SHOULD NOT" 和 "MAY" 以大写形式出现时, 它们用于表示本规范的特定要求. 这些术语含义的讨论见 RFC 2119.

关键词参考:

术语含义
MUST绝对要求
MUST NOT绝对禁止
SHOULD强烈建议
SHOULD NOT强烈不建议
RECOMMENDED建议实践
MAY可选

1.2.2. 语法记号

本规范使用 RFC 5234 中描述的 Augmented Backus-Naur Form (ABNF, 增强巴科斯-瑙尔范式) 记号. 字符通过十进制值指定 (例如 %d65 表示大写 A, %d97 表示小写 a), 或通过用引号括起的不区分大小写字面值指定 (例如 "A" 表示大写或小写 A).

ABNF 基础:

  • 字面值: "From:" - 不区分大小写
  • 十进制值: %d65 - ASCII 代码 65 (字符 A)
  • 范围: %d48-57 - 数字 0-9
  • 重复: * (零次或多次), 1* (一次或多次), 2*4 (2 到 4 次)
  • 可选: [可选] - 方括号中的元素可选
  • 分组: () - 圆括号对元素分组
  • 替代: / - 选择其中之一

1.2.3. 本文档结构

本文档组织为若干章节.

本节 (第 1 节) 是对本文档的简要介绍.

第 2 节 给出消息及其组成部分的一般性描述. 这是一个概览, 用于帮助读者理解本文档后续部分采用的一些一般原则. 本节中的任何示例都不得被视为消息任何部分的正式规范.

第 3 节 规定消息各部分结构 (语法) 的正式 ABNF 规则, 并描述这些部分之间的关系及其在消息语境中的含义 (语义). 它列出消息各部分结构的实际规则 (语法), 以及相应的说明和解释性注记 (语义). 这包括对具有特定结构的消息子部分进行语法和语义分析. 第 3 节中的语法表示消息必须如何创建. 第 3 节中还包含一些注记, 指明语法中的某些选项是否应该优先于其他选项使用.

第 2 节和第 3 节都描述按照本规范生成时合法的消息.

第 4 节 规定 "obsolete" 语法. 这些过时语法元素在第 3 节中被引用. 过时语法的规则是早期版本规范中出现过, 或在 Internet 上被广泛使用过, 但生成消息时不再使用的元素. 因此, 符合规范的消息解析器必须解释这些元素. 但是, 由于此语法中的项目已被认定为不可互操作或会给消息接收者造成重大问题, 符合规范的消息创建器不得生成它们.

第 5 节 详细说明实现本规范时的安全考虑.

附录 A 列出不同类型消息的示例. 这些示例并未穷尽 Internet 上出现的消息类型, 但对若干语法形式给出了广泛概览.

附录 B 列出本规范与早期 Internet 消息规范之间的差异.

附录 C 包含致谢.


关键概念摘要

消息结构

+-------------------------+
| Header Section | ← 由本规范定义
| - From: alice@... |
| - To: bob@... |
| - Subject: Hello |
| - Date: ... |
+-------------------------+
| Blank Line (CRLF) | ← 必需分隔符
+-------------------------+
| Body Section | ← 本规范 (纯文本)
| Hello World! | MIME 扩展 (多媒体)
+-------------------------+

规范范围

内容本规范其他规范
消息内容格式已定义-
消息传输 (SMTP)未涵盖RFC 5321
信封信息未涵盖RFC 5321
多媒体内容未涵盖RFC 2045-2049 (MIME)
本地存储格式未涵盖系统特定
字符编码未规定传输层

与相关 RFC 的关系

RFC 5322 (This RFC)
↓ defines
Message Format (IMF)
↓ extended by
MIME Series (RFC 2045-2049)
↓ transported by
SMTP (RFC 5321)

文档阅读指南

  1. 快速理解: 阅读第 1-2 节 (概览)
  2. 实现规范: 研读第 3 节 (消息生成)
  3. 遗留兼容性: 参考第 4 节 (消息解析)
  4. 安全性: 查看第 5 节
  5. 实践示例: 浏览附录 A

下一节: 2. 消息的词法分析