RFC3501(imp4协议)中文版(9)

2019-08-17 12:21

任何增加的、一个试验命令引发的非标签化响应也必须以一个X作为前缀。服务器实现体不能发送任何这样的非标签化响应,除非客户端通过发出关联的试验命令来请求它。 例子:

C: a441 CAPABILITY

S: * CAPABILITY IMAP4rev1 XPIG-LATIN S: a441 OK CAPABILITY completed C: A442 XPIG-LATIN

S: * CAPABILITY IMAP4rev1 XPIG-LATIN S: a441 OK CAPABILITY completed C: A442 XPIG-LATIN

S: * XPIG-LATIN ow-nay eaking-spay ig-gay atin-lay S: A442 OK XPIG-LATIN ompleted-cay

7.服务器响应

服务器响应有三种形式:状态响应,服务器数据,及命令连续请求。一个服务器响应中的信息,在下面的响应描述中定义的“内容:”,通过功能,而不是语法来描述。服务器响应的精确语法在正式语法一节中有描述。 客户端必须一直准备着接收任何响应。 状态响应可以是标签化或者非标签化的。标签化的状态响应表示一个客户端命令的完成结果(OK,NO,或者BAD状态),并且有一个与该命令匹配的标签。 某些状态响应,及所有的服务器数据,是非标签化的。一个非标签化的响应用一个“*”记号而不是一个标签来表示。非标签化的状态响应表示服务器欢 迎,或者那些不表示一个命令完成的服务器状态(例如,一个紧急系统关机警告)。因为历史原因,非标签化服务器数据响应也被称为“主动提供的数据”,虽然严 格地讲,只有单方面服务器数据是真正的“主动提供的数据”。

某些服务器数据,当客户端接收到它们的时候,必须被记录下来;它被记到那些数据的描述里。这些数据承载着影响到所有后来的命令和响应的解释的紧急信息(例如,创建或者销毁邮件相关的更新)。

其它的服务器数据应当记录以便以后参考;如果客户端不需要记录这些数据,或者没有明显的意图要记录这些数据(例如,没有其它SEARCH命令在行进中时的一个SEARCH响应),那么就应当忽略这些数据。

当IMAP连接在选中状态时,单方面的、非标签化的服务器数据的一个例子就发生了。在选中状态,服务器确认邮箱的新邮件,这作为命令执行的一部 分。通常,这是任何一个命令的执行的一部分;因此,一个NOOP命令就可以确认新邮件。如果发现新邮件,服务器发送非标签化的、反映邮箱的新大小的 EXISTS和RECENT响应。经常有不同的连接至相同邮箱的服务器实现体,如果另外的代理改变任意邮件标记的状态或者删除任意邮件,它也应当发送适当 的、单方面的、非标签化FETCH和EXPUNGE响应。

命令的连续请求响应使用标记“+”取代一个标签。这些响应由服务器发送,以确信一个不完整的客户端命令和命令的剩余部分的准备就绪。

7.1. 服务器响应-状态响应

状态响应是OK,NO,BAD,PREAUTH和BYE。OK,NO,和BAD可以是标签化或者非标签化的。PREAUTH和BYE永远是非标签化的。 服务器响应可能包含一个可选的“响应码”。一个响应码由一个原语形式的四方形内的数据组成,可能后面跟着一个空格和参数。响应码为客户端软件包 含其它信息或者状态码,而不只是OK/NO/BAD的情况,它定义于,当出现一个已经定义的、客户端基于该额外信息可采用的动作时。 目前已定义的响应码有: ALERT

可读文本,包含一个警告,这个警告必须以一种唤起用户对该邮件的注意的式样展现给用户。 BADCHARSET

后面随意地跟着字符集的一个组合列表。给定的字符集不被这个实现体支持时,一个SEARCH就失败了。如果字符集的选择列表给定了,那么这就列出被这个实现体支持的字符集。 CAPABILITY

后面跟着功能的一个列表。这将会出现在初始的OK或者PREAUTH响应,以传送一个初始的功能列表。这使得没必要让一个客户端发送一个单独的CAPABILITY命令,如果它认出了这个响应。 PARSE

可读文本,描绘解析邮箱中的一个邮件的[RFC-2822]头部或者[MIME-IMB]头部时的一个错误。 PERMANENTFLAGS

后面跟着标记的一个组合列表,指明客户端可以永久修改的已知标记。在FLAGS非标签化响应中,但不在PERMANENTFLAGS列表中的任 何标记,不能被永久性地设置。如果客户端试图存储一个不在PREMANENTFLAGS列表中的标记,服务器或者忽略该修改,或者只存储当前会话的剩余部 分的状态修改。PERMANENTFLAGS列表也可以包括特殊的标记/*,它表明可以通过尝试存储邮箱中的那些标记,来创建新的关键词。 READ-ONLY

邮箱以只读方式选中,或者当被选中时它的连接已经从读写方式改变为只读方式了。

READ-WRITE

邮箱以读写方式选中,或者当被选中时它的连接已经从只读方式改变为读写方式了。

TRYCREATE

一个APPEND或者COPY尝试失败,因为目标邮箱不存在(与其它一些原因相反)。这是对客户端的一个提示,如果邮箱先通过CREATE命令被创建,这个操作就能够成功。 UIDNEXT

后面跟着一个十进制的数字,指明下一个唯一标识符的值。更多信息参考2.3.1.1一节。

UIDVALIDITY

后面跟着一个十进制的数字,指明唯一标识符的值。更多信息参考2.3.1.1一节。 UNSEEN

后面跟着一个二进制的数字,指明不带有/Seen标记位的第一个邮件的号数。 定义于特定的客户端或者服务器实现体的扩展响应码应当以一个“X”作为前缀,直到它们被加到这个协议的一个版本中来。客户端实现体应当忽略其不认识的响应码。

7.1.1. OK 响应

内容:OPTIONAL响应码,可读文本

OK响应指明来自服务器的一个信息邮件。其标签化时,它指明关联命令的成功完成。可读文本可能作为一个信息邮件展现给用户。其非标签化形式指明一个纯信息的邮件;信息的各类可能通过一个响应码来指明。

其非标签化形式也用于连接启动时的三个可能欢迎中的一个。它指明该连接是未认证的,且需要一个LOGIN命令。 例子:

S: * OK IMAP4rev1 server ready C: A001 LOGIN fred blurdybloop

S: * OK [ALERT] System shutdown in 10 minutes S: A001 OK LOGIN Completed

7.1.2. NO响应

内容:OPTIONAL响应码,可读文本

NO响应指明来自服务器的一个错误。其标签化时,它报告客户端命令的一个协议级的错误;标签指明导致该错误的命令。其非标签化形式指明关联命令不能抉择的一个协议级错误;它也指明一个内部服务器失败。可读文本描述了这种情况。 例子:

C: ? very long command line? S: * BAD Command line too long C: ?empty line ?

S: * BAD Empty command line C: A443 EXPUNGE

S: * BAD Disk crash, attempting salvage to a new disk! S: * OK Salvage successful, no data lost S: A443 OK Expunge completed

7.1.3. BAD响应

内容:OPTIONAL响应码,可读文本

BAD响应指明来自服务器的一个错误。其标签化时,它报告客户端命令的一个协议级的错误;标签指明导致该错误的命令。其非标签化形式指明关联命令不能抉择的一个协议级错误;它也指明一个内部服务器失败。可读文本描述了这种情况。 例子:

C: ?very long command line? S: * BAD Command line too long C: ?empty line?

S: * BAD Empty command line C: A443 EXPUNGE

S: * BAD Disk crash, attempting salvage to a new disk! S: * OK Salvage successful, no data lost S: A443 OK Expunge completed

7.1.4. PREAUTH响应

内容:OPTIONAL响应码,可读文本

PREAUTH响应永远是非标签化的,且是连接启动时三种可能欢迎中的一种。它指明连接已经通过外部手段认证了;因而不需要LOGIN命令。 例子:

S: * PREAUTH IMAP4rev1 server logged in as Smith

7.1.5. BYE响应

内容:OPTIONAL响应码,可读文本

BYE响应永远是非标签化的,且指明该服务器准备关闭连接。可读文本可能被客户端用一个状态报告呈现给用户。BYE响应在以下4种情形下的一种发送: 1)作为一个正常注销队列的一部分。服务器将在发送标签化的OK响应至LOGOUT命令后,关闭连接。

2)作为一个突然关机的公告。服务器突然关掉连接。

3)作为一个静止状态的自动注销的一个公告。服务器突然关掉连接。 4)作为连接开始时的三种可能欢迎的一个,表明服务器不愿接收来自该客户端的连接。服务器突然关掉连接。

作为一个正常的注销序列(第一种情况)的一部分发生的一个BYE,及因为一个失败(其它的情况)发生的一个BYE,两者的区别是,在失败的情况 下连接突然关掉。在所有情况下,客户端都应当继续读取来自服务器的响应数据,直到连接关闭;这将确保任何未决的、非标签化的,或者完成了的响应被读取及处 理。 例子:

S: * BYE Autologout; idle for too long

7.2. 服务器响应-服务器和邮箱状态

这些响应永远是非标签化的。这是服务器和邮箱的状态数据如何被从服务器传送至客户端(的所在)。这些响应的一个特点是,很多因为来自一个命令而有相同的名字。

7.2.1. CAPABILITY响应

内容:capability列表

CAPABILITY响应作为一个CAPABILITY命令的一个结果发生。capability列表包含一个用空格分隔的、服务器支持的功能列表。功能列表必须包含原语“IMAP4rev1”。 另外,客户端和服务器实现体必须实现STARTTLS,LOGINDISABLED,及AUTH=PLAIN(描述于[IMAP-TLS])功能。重要信息参看安全考虑一节。

以“AUTH=”开头的一个功能名表明服务器支持这种特别的认证机制。

LOGINDISABLED功能表明LOGIN命令是不可用的,并且,即使用户名和密码是正确的,服务器也将会以一个标签化的NO响应作为使用 LOGIN命令的任何尝试的响应。如果服务器宣告LOGINDISABLED功能,那么一个IMAP客户端就不能发送LOGIN命令。

其它的功能名表明服务器支持IMAP4rev1协议的一个扩展,修订版,或者改善版。服务器响应必须遵守本文档,直至客户端发送一个使用关联功能的命令。 功能名必须以“X”开头,或者是标准的,或者是标准的IMAP4rev1扩展,修订版,或者在IANA注册的改善版。一个服务器不能提供未注册的,或者非标准的功能名,除非这些名称以“X”为前缀。

客户端不应当请求“IMAP4rev1”以外的任何功能名,而且必须忽略任何未知的功能名。

通过在初始PREAUTH时使用一个CAPABILITY响应码,或者使用OK响应,通过发送标签化的OK响应中的一个更新的 CAPABILITY响应作为一个成功认证的一部分,服务器就可以自动地发送功能。如果客户端识别出了这些自动的功能,它就没必要发送一个单独的 CAPABILITY命令。 例子:

S: * CAPABILITY IMAP4rev1 STARTTLS AUTH=GSSAPI XPIG-LATIN

7.2.2. LIST响应

内容:名称属性,层级分隔符,名称

LIST响应作为一个LIST命令的一个结果发生。它返回符合LIST描述的一个单独的名称。一个单独的LIST命令可能会有多个LIST响应。 有四个名称属性被定义: /Noinferiors

该名称下不可能存在任何子层;现在没有子层,以后也不能创建。 /Marked

邮箱已经被服务器标记为“受关注的”;上次被选中后,这个邮箱大概有新的邮件加进来。 /Unmarked


RFC3501(imp4协议)中文版(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于大数据时代研究会计信息化风险与防范策略

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: