跳到主要内容

1. 如何阅读本文档 (How to Read This Document)

1.1. 本文档的组织方式 (Organization of This Document)

本文档从 IMAP4rev1 客户端或服务器实现者的视角编写. 除第 2 节中的协议概览外, 它并未针对试图理解协议运行方式的读者进行优化. 第 3 节到第 5 节提供 IMAP4rev1 运行所需的一般上下文和定义.

第 6 节, 第 7 节和第 9 节分别描述 IMAP 命令, 响应和语法. 三者之间的关系非常紧密, 几乎不可能孤立地理解其中任何一部分. 特别是, 不要试图仅从命令章节推导命令语法; 应改为参考 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] 中的描述解释.

"can" (不是 "may") 用于指一种可能的情形或情况, 而不是协议中的可选功能.

"User" 指人类用户, 而 "client" 指用户运行的软件.

"Connection" 指从网络连接最初建立到连接终止期间, 客户端/服务器交互的整个序列.

"Session" 指从选定 mailbox (SELECT 或 EXAMINE 命令) 到该选择结束期间的客户端/服务器交互序列. 选择结束包括 SELECT 或 EXAMINE 另一个 mailbox, CLOSE 命令, 或连接终止.

除非另有说明, 字符均为 7-bit US-ASCII.其它字符集使用 "CHARSET" 指明, 其描述见 [MIME-IMT], 定义见 [CHARSET].除定义字符集外, CHARSET 还具有重要的附加语义; 更多细节请参考这些文档.

IMAP 中有若干协议约定. 这些约定指规范中并非严格属于 IMAP 协议本身, 但反映普遍接受实践的方面. 实现需要了解这些约定, 并避免冲突, 无论它们是否实现该约定. 例如, "&" 不能用作层级分隔符, 因为它会与 Mailbox International Naming Convention 冲突; mailbox 名称中 "&" 的其它用法也会受到影响.

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 item 的名称包含 "RFC822".除 RFC822.SIZE 外, 这些项目都有更现代的替代形式; 例如, RFC822.HEADER 的现代版本是 BODY.PEEK[HEADER].在所有情况下, "RFC822" 都应解释为对更新后的 [RFC-2822] 标准的引用.