6. 客户端命令 (Client Commands)
本节描述了 IMAP4rev2 命令。命令按允许该命令的状态进行组织。允许在多个状态下使用的命令列在允许的最小状态中 (例如,在已认证和选中状态下都有效的命令列在已认证状态命令中)。
命令参数在下面的命令描述中由 "Arguments:" 标识,它们按功能而非语法进行描述。命令参数的精确语法在"正式语法"(第 9 节) 中描述。
某些命令会导致返回特定的服务器响应;这些在下面的命令描述中由 "Responses:" 标识。有关这些响应的信息,请参阅"响应"(第 7 节) 中的响应描述;有关这些响应的精确语法,请参阅"正式语法"(第 9 节)。任何命令都可能导致传输服务器数据。因此,不特别需要服务器数据的命令指定"此命令没有特定响应"而不是"无"。
命令描述中的 "Result:" 是指命令的可能标记状态响应以及对这些状态响应的任何特殊解释。
连接状态仅由记录为更改状态的成功命令更改。被拒绝的命令 (BAD 响应) 永远不会更改连接或选中邮箱的状态。失败的命令 (NO 响应) 通常不会更改连接或选中邮箱的状态,但 SELECT 和 EXAMINE 命令除外。
6.1 客户端命令 - 任意状态 (Client Commands - Any State)
以下命令在任何状态下都有效:CAPABILITY、NOOP 和 LOGOUT。
6.1.1 CAPABILITY 命令
参数 (Arguments): 无
响应 (Responses): 必需的未标记响应:CAPABILITY
结果 (Result):
- OK - capability 完成
- BAD - 参数无效
CAPABILITY 命令请求服务器支持的功能列表 (例如,扩展和/或服务器行为的修改)。服务器必须 (MUST) 在 (标记的) OK 响应之前发送一个未标记的 CAPABILITY 响应,其中 "IMAP4rev2" 作为列出的功能之一。
以 "AUTH=" 开头的功能名称表示服务器支持在简单认证和安全层 (SASL) [SASL] 中定义的特定认证机制。根据定义,所有此类名称都是本规范的一部分。
其他功能名称是指对本规范的扩展、修订或修订。有关其他信息,请参阅第 7.2.2 节中 CAPABILITY 响应的文档。如果未通告 IMAP4rev1 功能,则在没有显式客户端操作来调用功能的情况下,不会启用除本规范中定义的基本 IMAP4rev2 集之外的功能。如果同时通告 IMAP4rev1 和 IMAP4rev2 功能,则在没有显式客户端操作来调用功能的情况下,不会启用除 [RFC3501] 中指定的基本 IMAP4rev1 集之外的功能。
客户端和服务器实现必须 (MUST) 在明文端口上实现 STARTTLS (第 6.2.1 节) 和 LOGINDISABLED 功能。客户端和服务器实现还必须 (MUST) 在明文和隐式 TLS 端口上实现 AUTH=PLAIN ([PLAIN] 中描述) 功能。有关重要信息,请参阅安全注意事项 (第 11 节)。
除非另有规定,否则所有注册的 IMAP4rev1 扩展也是 IMAP4rev2 的有效扩展。
示例:
C: abcd CAPABILITY
S: * CAPABILITY IMAP4rev2 STARTTLS AUTH=GSSAPI LOGINDISABLED
S: abcd OK CAPABILITY completed
C: efgh STARTTLS
S: efgh OK STARTTLS completed
<TLS 协商,后续命令在 TLS 层下>
C: ijkl CAPABILITY
S: * CAPABILITY IMAP4rev2 AUTH=GSSAPI AUTH=PLAIN
S: ijkl OK CAPABILITY completed
6.1.2 NOOP 命令
参数 (Arguments): 无
响应 (Responses): 此命令没有特定响应 (但请参见下文)
结果 (Result):
- OK - noop 完成
- BAD - 命令未知或参数无效
NOOP 命令总是成功。它什么都不做。
由于任何命令都可以将状态更新作为未标记数据返回,因此 NOOP 命令可以用作在不活动期间定期轮询新消息或消息状态更新 (如果需要邮箱状态的实时更新,则应使用 IDLE 命令;参见第 6.3.13 节,而不是 NOOP)。NOOP 命令还可以用于重置服务器上的任何不活动自动登出计时器。
示例:
C: a002 NOOP
S: a002 OK NOOP completed
. . .
C: a047 NOOP
S: * 22 EXPUNGE
S: * 23 EXISTS
S: * 14 FETCH (UID 1305 FLAGS (\Seen \Deleted))
S: a047 OK NOOP completed
6.1.3 LOGOUT 命令
参数 (Arguments): 无
响应 (Responses): 必需的未标记响应:BYE
结果 (Result):
- OK - logout 完成
- BAD - 命令未知或参数无效
LOGOUT 命令通知服务器客户端已完成连接。服务器必须 (MUST) 在 (标记的) OK 响应之前发送 BYE 未标记响应,然后关闭网络连接。
示例:
C: A023 LOGOUT
S: * BYE IMAP4rev2 Server logging out
S: A023 OK LOGOUT completed
(服务器和客户端然后关闭连接)
注意:第6章内容较长,包含多个子章节。完整命令列表请参阅各个子章节: