1. How to Read This Document (如何阅读本文档)
1.1. Organization of This Document (本文档的组织结构)
本文档从 IMAP4rev1 客户端或服务器实现者的角度编写. 除了第2节的协议概述外, 它并未针对试图理解协议操作的人员进行优化. 第3至第5节的材料提供了 IMAP4rev1 运行的一般上下文和定义.
第6节, 第7节和第9节分别描述了 IMAP 命令 (Commands), 响应 (Responses) 和语法 (Syntax). 这些部分之间的关系使得几乎不可能单独理解其中任何一个. 特别是, 不要试图仅从命令章节推断命令语法, 而应参考正式语法 (Formal Syntax) 章节.
1.2. Conventions Used in This Document (本文档使用的约定)
"约定 (Conventions)" 是基本原则或程序. 本节说明文档约定.
在示例中, C: 和 S: 分别表示客户端和服务器发送的行.
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "MAY" 和 "OPTIONAL" 应按 [KEYWORDS] 中的描述进行解释.
RFC 2119 关键词对照表:
- MUST (必须): 绝对要求
- MUST NOT (禁止): 绝对禁止
- REQUIRED (必需): 绝对要求
- SHALL (应): 强制要求
- SHALL NOT (不应): 强制禁止
- SHOULD (应该): 强烈建议但非必需
- SHOULD NOT (不应该): 强烈不建议但非禁止
- MAY (可以): 允许但可选
- OPTIONAL (可选): 完全可选
词语 "can" (而非 "may") 用于指代可能的情况或状况, 而非协议的可选功能.
"用户 (User)" 用于指代人类用户, 而 "客户端 (Client)" 指代用户运行的软件.
"连接 (Connection)" 指从初始建立网络连接到终止的整个客户端/服务器交互序列.
"会话 (Session)" 指从选择邮箱 (SELECT 或 EXAMINE 命令) 到选择结束 (SELECT 或 EXAMINE 另一个邮箱, CLOSE 命令, 或连接终止) 的客户端/服务器交互序列.
除非另有说明, 字符为 7-bit US-ASCII. 其他字符集使用 "CHARSET" 表示, 如 [MIME-IMT] 中所述并在 [CHARSET] 中定义. CHARSET 除了定义字符集外还具有重要的附加语义, 详情请参考这些文档.
IMAP 中有几个协议约定 (Protocol Conventions). 这些约定指的是规范中并非严格属于 IMAP 协议的方面, 但反映了普遍接受的实践. 实现需要了解这些约定, 并避免冲突, 无论是否实现该约定. 例如, "&" 不能用作层次分隔符 (Hierarchy Delimiter), 因为它与邮箱国际命名约定 (Mailbox International Naming Convention) 冲突, 并且邮箱名称中 "&" 的其他用途也会受到影响.
1.3. Special Notes to Implementors (给实现者的特别说明)
强烈鼓励 IMAP 协议的实现者结合本文档阅读 IMAP 实现建议文档 [IMAP-IMPLEMENTATION], 以帮助理解本协议的复杂性以及如何最好地构建可互操作的产品.
IMAP4rev1 设计为从 [IMAP2] 和未发布的 IMAP2bis 协议向上兼容. IMAP4rev1 与 RFC 1730 中描述的 IMAP4 协议基本兼容, 例外情况是 RFC 1730 中添加的某些功能被证明存在问题并随后被删除. 在 IMAP4rev1 的演变过程中, 早期协议的某些方面已经过时. IMAP4rev1 实现在与早期实现一起使用时可能遇到的过时命令, 响应和数据格式在 [IMAP-OBSOLETE] 中描述.
与早期协议的最常见变体 IMAP2bis 的其他兼容性问题在 [IMAP-COMPAT] 中讨论. 关于 [IMAP2] 罕见 (且被认为已灭绝) 变体的兼容性问题的完整讨论在 [IMAP-HISTORICAL] 中, 该文档主要具有历史意义.
IMAP 最初是为较旧的 [RFC-822] 标准开发的, 因此 IMAP 中的几个 fetch 项在其名称中包含 "RFC822". 除了 RFC822.SIZE 之外, 还有更现代的替代品, 例如, RFC822.HEADER 的现代版本是 BODY.PEEK[HEADER]. 在所有情况下, "RFC822" 应解释为对更新的 [RFC-2822] 标准的引用.
术语表 (本章重点术语):
- Client (客户端): 用户运行的软件
- Server (服务器): 提供 IMAP 服务的软件
- Connection (连接): 完整的客户端/服务器交互序列
- Session (会话): 从选择邮箱到选择结束的交互序列
- Tag (标签): 客户端命令的标识符
- CHARSET (字符集): 字符编码方案
- Hierarchy Delimiter (层次分隔符): 用于分隔邮箱层次结构的字符