组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook.htm) E-mail:mailto:ouyang@china-pub.com 译者:() 译文发布时间:2001-11-4 版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须 保留本文档的翻译及版权信息。
Network Working Group R. Gellens Request for Comments: 2449 Qualcomm Updates: 1939 C. Newman Category: Standards Track Innosoft L. Lundblade Qualcomm November 1998
POP3扩展机制 (RFC2449——POP3 Extension Mechanism) 本备忘录的状态 本文档讲述了一种Internet社区的Internet标准跟踪协议,它需要进一步进行讨论和建 议以得到改进。请参考最新版的“Internet正式协议标准” (STD1)来获得本协议的标准化 程度和状态。本备忘录的发布不受任何限制。 版权声明 Copyright (C) The Internet Society (2001). IESG声明 此POP3协议的扩展是供服务器使用,来描述服务器管理员采取的对策的。它不是POP3 进一步扩展之实现的保证。普通的观点是,出于单纯的从一个邮件服务器下载邮件的目的, POP3协议应该保持简单。如果需要更复杂的操作,应该使用IMAP协议。第7节的第一段 应该仔细阅读。 目录 1.介绍 2 2.这篇文档使用的约定。 2 3.一般命令和响应语法 3 4.参数和响应长度 3 5.CAPA命令 4 6.功能的初始集合 4 6.1 TOP功能 5 6.2. USER 功能 5 6.3. SASL capability 5 6.4. RESP-CODES功能 5 6.5. LOGIN-DELAY 功能 6 6.6 PIPELINING功能 6 6.7 EXPIRE功能 7 6.8 UIDL功能 8 6.9 IMPLEMENTATION功能 8 7.POP3的未来扩展 9 8.扩展POP3响应码 9 8.1初始化POP3响应码 9 9.IANA考虑 10 10.安全考虑 10 11.致谢 11 12.参考文献 11 13.作者地址 11 14.完整版权说明 12
1.介绍 邮局协议第3版[POP3]使用广泛。但是,当它包含某些可选的命令时(以及某些已经发 布的协议扩展),它缺乏一种机制,来对这些扩展或动作变化提供公开的支持。 目前这些可选特征和扩展只能通过探测的方式检测到,如果可行的话。这种方式至少是 缺乏效率的,甚至可能更坏。因此,某些客户端有用于人工配置POP3功能的选项。 因为POP3的一个最重要的特征是它的简单,所以扩展的数目最好比较少。但是,某些 扩展是必需的(比如提供改善的安全性的扩展[POP-AUTH]),而其它的只在特定情况下是值 得要的。另外,需要一种发现服务器的方法。 此备忘录对RFC1939[POP3]进行改进,以提供一种机制用来声明对可选命令,扩展,和 无条件服务器行为的支持。它包含了已经配置的功能的初始配置,这些配置因服务器而异, 以及许多新功能(SASL, RESP-CODES, LOGIN-DELAY, PIPELINING, EXPIRE和 IMPLEMENTATION)。这篇文档也对POP3的错误信息进行了扩展,这样机器的可解析代码就能 够提供给客户端。还包含响应码的初始设置。另外,还定义了一个POP3命令和响应的[ABNF] 规格说明。 公开的评论应该发送到IETF POP3扩展邮件列表ietf-pop3ext@imc.org。想订阅的 话,可以向ietf-pop3ext-request@imc.org发送一条包含SUBSCRIBE的消息。 2.这篇文档使用的约定。 这篇文档里的"REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD NOT", 和“MAY”的解释和“Keywords for use in RFCs to Indicate Requirement Levels”[KEYWORDS] 里描述的一样。 在例子中,“C:”和“S:”表是客户端和服务器端分别发送的信息。 3.一般命令和响应语法 POP3命令和响应的一般形式使用[ABNF]进行描述: POP3命令: command = keyword (SP param) CRLF ;最大255八位组 keyword = 34VCHAR param = 1VCHAR POP3响应 response = greeting / single-line / capa-resp / multi-line capa-resp = single-line capability "." CRLF capa-tag = 1cchar capability = capa-tag (SP param) CRLF ;最大512八位组 cchar = %x21-2D / %x2F-7F ;可打印ASCII码, “.”除外 dot-stuffed = CHAR CRLF ;必须以圆点填充 gchar = %x21-3B / %x3D-7F ;可打印的ASCII码,“<"除外 greeting = "+OK" [resp-code] gchar [timestamp] gchar CRLF ;最大512八位组 multi-line = single-line dot-stuffed "." CRLF rchar = %x21-2E / %x30-5C / %x5E-7F ; 可打印的ASCII码,“/”和“]”除外 resp-code = "[" resp-level ("/" resp-level) "]" resp-level = 1rchar schar = %x21-5A / %x5C-7F ; 可打印的ASCII码, “[”除外 single-line = status [SP text] CRLF ;最大512八位组 status = "+OK" / "-ERR" text = schar / resp-code CHAR timestamp = "<" *VCHAR ">" ;必须符合RFC-822的msg-id规定 4.参数和响应长度 这里的阐述增加了RFC 1939提出的命令和参数长度限制。 一个命令的最大长度从47字符(4字符的命令,单空格,40个字符变量,CRLF)增加 到255八位组,包括有限CRLF。 支持CAPA命令的服务器必须支持长达255八位组的命令。服务器也必须支持任何支持 的功能所指定的最大命令长度。 命令响应的第一行的最大长度(包括开始的问候)还是512八位组不变(包括有限CRLF)。 5.CAPA命令 POP3的CAPA命令返回POP3服务器支持的功能列表。它在AUTHORIZATION和TRANSACTION 状态下均可使用。 一个功能描述必须记录在功能通告于何种状态下,以及在哪种状态下命令有效。 在AUTHORIZATION状态下可用的功能必须在两种状态下都予以通告。 如果某个功能在两种状态下都被通告了,但是在身份验证之后参数可能不同。这种可能 性必须在功能描述中说明。 (这些要求允许一个客户端在不使用任何TRANSACTION-only功能,以及任何在身份验证之 后参数值可能不同的功能时,只发送一个CAPA命令。) 如果身份验证这步商定了一个完整性保护层,客户端应该在验证重新发送CAPA命令, 以阻止活动的down-negotiation攻击。 每个功能都可能激活额外的协议命令,额外的参数和已存在命令的响应,或者描述服务 器行为的一个方面。这些细节在相应的功能描述中阐述。 第3节描述了使用[ABNF]的CAPA响应。当一个功能响应描述了一个可选命令时,
例:
EXPIRE 5 USER
EXPIRE 30
EXPIRE NEVER
EXPIRE 0
第一个例子表明服务器在五天后删除消息,但是这个期限因用户而异,并且通过在
TRANSACTION状态下发送另一个CAPA命令可以获得一个更精确的值。第二个例子表明服务
器在30天后删除消息。在第三个例子中,服务器声明它将不删除消息。第四个例子说明站
点不允许消息留在服务器上。
6.8 UIDL功能
CAPA标记:UIDL
参数:无
附加命令:UIDL
受影响的标准命令:无
声明的状态/可能的不同:两者/无
命令有效的状态:TRANSACTION
规范参考: [POP3]
讨论:UIDL功能表明支持可选UIDL命令。
6.9 IMPLEMENTATION功能
CAPA标记:IMPLEMENTATION
参数:字符串,给服务器提供实现信息
附加命令:无
受影响的标准命令:无
声明的状态/可能的不同:两者(或者只有TRANSACTION)/无
命令有效的状态:n/a
规范参考:此文档
讨论:识别出特定服务器的实现(比如,在登陆时)常常是很有用的。通常使用欢迎标
记,但是必须猜测字符串是不是一个实现ID。
IMPLEMENTATION功能的参数由一个或更多的标志服务器的标记组成。(注意因为CAPA
响应标记参数用空格分隔,因此IMPLEMENTATION功能的参数不带参数可能很方便,这样的
话它就是一个单独的标记了。)
一般地,服务器在两种状态下声明IMPLEMENTATION。但是,某个服务器可能选择只在
TRANSACTION状态下声明。
服务器可能在欢迎标记和IMPLEMENTATION功能中都包括有实现ID。
客户端禁止更改它们基于服务器实现的行为。相反地,服务器和客户端应该在私有扩展
上达成一致意见。
7.POP3的未来扩展
POP3的未来扩展大体来说是令人气馁的,因为POP3的有效性是建立在它的简洁性基础
上的。POP3的本意是作为一个download-and-delete协议;邮件存取功能可以在IMAP
[IMAP4]中获得。任何为附加邮箱提供支持,或者允许向服务器上传消息,或者偏离了POP
的download-and-delete模型的扩展,都是非常令人气馁的,因而不大可能被IETF标准批
准。
客户端不能对基本的功能要求任何扩展,验证命令(APOP, AUTH [6.3节]和 USER/PASS)
是个例外。
第9节说明了附加功能是如何定义的。
8.扩展POP3响应码
未扩展的POP3对大部分命令只能够说明是成功或是失败。不幸的是,客户端经常需要
有关失败原因的更多信息,以便适当地从中恢复。这在响应一个失败的登陆时特别重要(有
许多客户端配置试图解码一个PASS命令结果的错误文本,以在“不能得到邮箱密码”和“破
坏性登陆”之间区别)。
这一规范修定了POP3标准,使它允许一个可选的响应码,此响应码包含在方括号里面,
位于一个“+OK”或“-ERR”响应中的可读部分的开始。支持这个扩展的客户端能在向用户
显示可读文本之前删除方括号里面的信息。紧接着左方括号字符的是一个响应码,它由客户
端用一种大小写不敏感的方式来进行解释。
响应码是分等级的,一个“/”分隔不同等级的错误细节。客户端必须忽略不知道的关
于响应码的等级细节。这一点很重要,因为它是在将来为响应码提供更多细节的必要条件。
第3节用[ABNF]描述了响应码。
如果一个服务器支持扩展的响应码,它通过在CAPA 响应中包含RESP-CODES的方式来
声明。
例:
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: -ERR [IN-USE] Do you have another POP session running?
8.1初始化POP3响应码
此规范定义了两个用来确定登陆失败原因的POP3响应码.第9节说明了附加的响应码
是如何定义的。
8.1.1 LOGIN-DELAY响应码
当AUTH, USER (见注意), PASS o或者 APOP响应为一个-ERR时发生,表明用户最近
登陆过,并且不允许再次登陆直到过了登陆延时期。
注意:对USER命令返回LOGIN-DELAY响应码避免了验证用户,但是向用户说明那个特
定的用户已经存在。除非服务器正在工作的环境中,用户名不是秘密的(比如,许多流行的
email客户端在一个外发邮件头里面公开POP服务器和用户名),或者当服务器存取受到控
制,又或者当服务器能够确认那个连接是同一个用户的,此外服务器最好别对USER命令发
送此响应码。服务器也保存打开邮箱的花费,在某些环境中这是最费时的步骤。
8.1.2 IN-USE响应码
AUTH, APOP, 或者PASS的响应为-ERR时发生。它表明验证成功,但是用户的邮箱目前
正在使用中(可能是另一个POP3客户端)。
9.IANA考虑
此文档要求IANA维持两个新的注册项:POP3功能和POP3响应码。
新的POP3功能必须使用标准格式或IESG批准实验性RFC,并且不能以字母“X”开头。
新的POP3功能必须包含以下信息:
CAPA标记
参数
附加命令
受影响的标准命令
声明的状态/可能的不同
命令有效的状态
规范参考
讨论
另外,POP3命令和响应的新的长度限制可能需要包括在内。
新的POP3响应码必须在一个RFC或者其它的永久的、容易获得的参考中定义,并且细
节要足够详细,这样相互独立的实现间的相互协作才有可能。(这是在[IANA]里面描述的“规
范要求”策略)。
新的POP3响应码说明必须包含以下信息:完整的响应码,对哪个响应(+OK或 -ERR)
或命令有效,以及它的意义和期望的客户端行为的定义。
10.安全考虑
一个功能列表能反映关于服务器验证机制的信息,此机制用来确定某些攻击是否会成
功。但是,允许客户端自动检测更健壮的机制的可获取性,允许客户端使用它们的同时改变
它们的配置,这些措施能够全面改善一个站点的安全性。
8.1节讨论了对USER命令使用的LOGIN-DELAY响应码的安全问题。
11.致谢
这篇文档的部分修改有赖于IETF POP3扩展邮件列表上及其之外的评论和讨论。感谢花
时间评论此文档和提供建议的人们的帮助,特别是Alexey Melnikov, Harald Alvestrand,
和 Mike Gahrns。
12.参考文献
[ABNF] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", RFC 2234, November 1997.
[IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 2434,
October 1998.
[IMAP4] Crispin, M., "Internet Message Access Protocol --
Version 4rev1", RFC 2060, December 1996.
[KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[PIPELINING] Freed, N., "SMTP Service Extension for Command
Pipelining", RFC 2197, September 1997.
[POP3] Myers, J. and M. Rose, "Post Office Protocol -- Version
3", STD 53, RFC 1939, May 1996.
[POP-AUTH] Myers, J., "POP3 AUTHentication command", RFC 1734,
December 1994.
[SASL] Myers, J., "Simple Authentication and Security Layer
(SASL)", RFC 2222, October 1997.
[SMTP] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC
821, August 1982.
13.作者地址
Randall Gellens
QUALCOMM Incorporated
6455 Lusk Blvd.
San Diego, CA 92121-2779
USA
Phone: +1 619 651 5115
Fax: +1 619 845 7268
EMail: randy@qualcomm.com
Chris Newman Innosoft International, Inc. 1050 Lakes Drive West Covina, CA 91790 USA EMail: chris.newman@innosoft.com Laurence Lundblade QUALCOMM Incorporated 6455 Lusk Blvd. San Diego, Ca, 92121-2779 USA Phone: +1 619 658 3584 Fax: +1 619 845 7268 EMail: lgl@qualcomm.com 14.完整版权说明 Copyright (C) The Internet Society (1998). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. RFC2449——POP3 Extension Mechanism POP3扩展机制
1
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8