网络工作组J.Myers征求意见:2554 Netscape Communications类别:标准跟踪1999年3月SMTP服务扩展用于身份验证此备忘录的状态本文档为互联网社区,并请求讨论和建议改进。请参阅“互联网”的最新版本标准化状态的官方协议标准”(STD 1)以及该协议的状态。此备忘录的分发不受限制。版权声明版权所有(C)互联网协会(1999)。保留所有权利。1.简介本文档定义了SMTP服务扩展[ESMTP],其中SMTP客户端可能会向服务器指示身份验证机制,执行身份验证协议交换,并可以选择协商用于后续协议交互的安全层。这个扩展是简单身份验证和安全的配置文件图层[SASL]。2.本文件中使用的惯例在示例中,“C:”和“S:”表示客户端发送的行服务器。关键词“MUST”、“MUST NOT”、“SHOULD”、“SHOULD NOT”和“MAY”本文件中的定义见“在RFC中用于指示需求级别“[KEYWORDS]。3.身份验证服务扩展(1) SMTP服务扩展名为“身份验证”(2) 与此扩展关联的EHLO关键字值为“AUTH”迈尔斯标准跟踪[第1页] RFC 2554 SMTP身份验证1999年3月(3) AUTH EHLO关键字包含一个以空格分隔的参数支持的SASL机制的名称列表。(4) 定义了新的SMTP谓词“AUTH”(5) 将使用关键字“AUTH”的可选参数添加到MAIL FROM命令,并扩展MAIL FROM命令由500个字符组成。(6) 此扩展适用于提交协议[提交]。4.AUTH命令AUTH机制[初始响应]论据:标识SASL身份验证机制的字符串。可选的base64编码响应限制:成功完成AUTH命令后,不再执行AUTH命令可以在同一会话中发出。成功后AUTH命令完成后,服务器必须拒绝任何进一步的AUTH带有503回复的命令。在邮件事务处理期间不允许使用AUTH命令。讨论:AUTH命令指示对服务器。如果服务器支持请求的身份验证机制,它执行身份验证协议交换验证并识别用户。也可以选择协商后续协议的安全层互动。如果请求的身份验证机制不是受支持,服务器使用504拒绝AUTH命令回复。身份验证协议交换由一系列特定于身份验证机制。服务器挑战,其他已知作为一个现成的回复,是带有文本部分的334回复包含BASE64编码字符串。客户端答案包括包含BASE64编码字符串的行。如果客户端希望取消身份验证交换,它会发出一行带有一个“*”。如果服务器收到这样的回答必须通过发送501回复来拒绝AUTH命令。迈尔斯标准跟踪[第2页] RFC 2554 SMTP身份验证1999年3月AUTH命令的可选初始响应参数为使用身份验证机制时用于节省往返定义为在初始质询中不发送数据的。当initial-response参数与这样的机制,初始的空质询不会发送到客户端和服务器使用初始响应中的数据就好像它是为了回应空的挑战而发送的。与零长度客户端响应334回复不同,零-长度初始响应以单个等号(“=”)发送。如果客户端使用AUTH的初始响应参数带有发送初始数据机制的命令质询,服务器用535拒绝AUTH命令回复。如果服务器无法BASE64解码参数,它将拒绝带有501应答的AUTH命令。如果服务器拒绝身份验证数据,它应该使用535回复,除非有更具体的错误代码,例如列出的错误代码在第6节中是适当的。客户是否应该成功完成身份验证交换,SMTP服务器发出235回复。此协议的SASL配置文件指定的服务名称为“smtp”。如果通过SASL协商安全层身份验证交换,它会立即生效结束身份验证交换的CRLF客户端,以及服务器成功回复的CRLF。安全层生效,SMTP协议重置为初始状态(服务器发出220服务就绪问候语)。服务器必须丢弃从客户那里获得的知识,例如EHLO命令,不是从SASL协商中获得的自身。客户必须放弃从服务器,例如SMTP服务扩展列表不是从SASL谈判本身获得的(与客户端可以比较广告SASL列表的例外情况身份验证前后的检测机制主动向下谈判攻击)。客户应发送EHLO命令作为成功SASL后的第一个命令导致启用安全层的协商。服务器不需要支持任何特定的身份验证机制,也不是身份验证机制需要支持任何安全层。如果AUTH命令失败,客户端可以尝试其他身份验证机制发出另一个AUTH命令。迈尔斯标准跟踪[第3页] RFC 2554 SMTP身份验证1999年3月如果AUTH命令失败,服务器的行为必须与客户端未发出AUTH命令。BASE64字符串通常可以是任意长的。客户服务器必须能够支持挑战和响应与身份验证生成的一样长它们支持的机制,与任何线路长度无关客户端或服务器在其其他部分可能具有的限制协议实现。示例:S: 220 smtp.example.com ESMTP服务器就绪C: EHLO jgm.example.comS: 250-smtp.example.comS: 250 AUTH CRAM-MD5挖泥机-MD5C: 授权FOOBARS: 504无法识别的身份验证类型。C: 授权CRAM-MD5S: 334个PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4型=C: ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ公司==S: 235身份验证成功。5.MAIL FROM命令的AUTH参数AUTH=添加规范论据:包含提交消息的标识的addr-spec发送到传送系统,或两个字符序列“<>”表明这种身份未知或不够经过身份验证。遵守对ESMTP施加的限制参数,addr-spec在xtext中编码。语法[ESMTP-DSN]第5节中描述了xtext的。讨论:MAIL FROM命令的可选AUTH参数允许在可信环境中协作代理,以通信单个消息的身份验证。如果服务器信任客户端的已验证身份断言消息最初是由提供的addr规范,那么服务器应该在将消息中继到任何服务器时的AUTH参数支持AUTH扩展。迈尔斯标准跟踪[第4页] RFC 2554 SMTP身份验证1999年3月AUTH=<>的MAIL FROM参数表示原始消息的提交者未知。服务器不得处理消息最初是由客户端提交的。如果没有向MAIL FROM提供AUTH参数,则客户端已进行身份验证,服务器认为消息是客户端提交的原始文件,服务器可以提供将消息中继到支持AUTH的任何服务器扩展。如果服务器不充分信任经过身份验证的客户端的身份,或者如果客户端未经身份验证,则服务器必须表现为AUTH=<>参数为提供。然而,服务器可能会写入AUTH的值参数设置为日志文件。如果显式或由于以下原因提供了AUTH=<>参数上一段中的要求,则服务器必须将消息中继到任何已使用AUTH扩展对其进行身份验证的服务器。服务器可能会将邮件列表的扩展视为新的提交,将AUTH参数设置为邮件列表中继时的地址或邮件列表管理地址消息以列出订户。实现经过硬编码处理是符合要求的所有客户都不够信任。在这种情况下实现只做解析和丢弃MAIL FROM命令的语法有效AUTH参数和将AUTH=<>参数提供给它要访问的任何服务器使用AUTH扩展进行身份验证。示例:C: 邮寄地址:授权=e+3Dmc2@example.comS: 250正常迈尔斯标准轨道[第5页] RFC 2554 SMTP身份验证1999年3月6.错误代码以下错误代码可用于指示各种情况如上所述。432需要密码转换对AUTH命令的此响应表明用户需要转换到选定的身份验证机制。这通常是通过使用PLAIN认证机制进行一次认证来完成。534身份验证机制太弱对AUTH命令的此响应表明身份验证机制弱于服务器策略允许的该用户。538请求的身份验证机制需要加密对AUTH命令的此响应表明身份验证机制只能在基础SMTP连接已加密。454临时身份验证失败对AUTH命令的此响应指示身份验证由于临时服务器故障而失败。530需要身份验证此响应可以由AUTH、EHLO、,HELO、NOOP、RSET或QUIT。它指示服务器策略需要身份验证以执行请求的操作。迈尔斯标准跟踪[第6页] RFC 2554 SMTP身份验证1999年3月7.形式语法以下语法规范使用增强的Backus Naur[ABNF]中规定的形式(BNF)符号。除非另有说明,否则所有字母字符都是大小写-不敏感。使用大写或小写字符定义标记字符串仅供编辑使用。实施必须以区分大小写的方式接受这些字符串。UPALPHA=%x41-5A;;大写:A-ZLOALPHA=%x61-7A;;小写:a-zALPHA=UPALPHA/LOALPHA;;不区分大小写数字=%x30-39;;数字0-9十六进制数字=%x41-46/数字;;十六进制数字(大写)六进制字符=“+”六进制数字xchar=%x21-2A/%x2C-3C/%x3E-7E;; US-ASCII,“+”、“=”、SPACE和CTL除外xtext=*(xchar/hexchar)AUTH_CHAR=字母/数字/“-”/“_”auth_type=1*20AUTH_CHARauth_command=“auth”空格auth_type[SPACE(base64/“=”)]*(CRLF[base64])CRLFauth_param=“auth=”xtext;; xtext的解码形式必须是;; addr-spec或两个字符“<>”base64=base64_终端/(1*(4base64_CHAR)[base64_terminal])base64_char=UPALPHA/LOALPHA/DIGIT/“+”/“/”;; 区分大小写base64_terminal=(2base64_char“==”)/(3base64_car“=”)continue_req=“334”空格[base64]CRLF迈尔斯标准跟踪[第7页] RFC 2554 SMTP身份验证1999年3月CR=%x0C;;ASCII CR,回车CRLF=CR LFCTL=%x00-1F/%x7F;;任何ASCII控制字符和DELLF=%x0A;;ASCII LF,换行空格=%x20;;ASCII SP,空格8.参考文献【ABNF】Crocker,D.和P.Overell,“语法增强的BNF”规范:ABNF”,RFC 22341997年11月。[CRAM-MD5]Klensin,J.、Catoe,R.和P.Krumviede,“IMAP/POP简单质询/响应的授权扩展”,RFC1997年9月2195日。【ESMTP】Klensin,J.、Freed,N.、Rose,M.、Stefferud,E.和D。Crocker,“SMTP服务扩展”,RFC 1869,11月1995[ESMTP-DSN]Moore,K,“发送状态的SMTP服务扩展通知”,RFC 18911996年1月。[KEYWORDS]Bradner,S.,“RFC中用于指示的关键词需求水平”,BCP 14,RFC 21191997年3月。[SASL]Myers,J.,“简单身份验证和安全层(SASL)”,RFC 22221997年10月。【提交】Gellens,R.和J.Klensin,《信息提交》,RFC24761998年12月。[RFC821]Postel,J.,“简单邮件传输协议”,STD 10,RFC8211982年8月。[RFC822]克罗克,D.,“ARPA互联网格式标准文本消息”,STD 11,RFC 8221982年8月。迈尔斯标准跟踪[第8页] RFC 2554 SMTP身份验证1999年3月9.安全注意事项本备忘录中讨论了安全问题。如果客户端使用此扩展通过对于协作服务器的不安全网络,需要进行配置当连接不相互时,不要向该服务器发送邮件经过身份验证和加密。否则,攻击者可能会窃取通过劫持SMTP连接或假装服务器不支持身份验证扩展或导致所有AUTH命令都将失败。在SASL协商开始之前,任何协议交互都是在明文中执行,并且可能被主动攻击者修改。因此,客户端和服务器必须放弃任何知识在SASL谈判开始前获得导致安全层的SASL协商。此机制不保护TCP端口,因此主动攻击者可以将中继连接尝试重定向到提交端口[提交]。AUTH=<>参数可防止此类攻击导致没有信封身份验证的中继消息中继客户端的身份验证。消息提交客户端可能要求用户进行身份验证每当公布合适的SASL机制时。因此,它可能提交服务器[SUBMIT]不希望发布SASL机制时,使用该机制不会给客户带来任何好处匿名提交。此扩展不是为了取代或使用而不是结束-对端消息签名和加密系统,如S/MIME或PGP。此扩展解决了与端到端不同的问题系统;它有以下主要区别:(1) 它通常仅在受信任的飞地内有用(2) 它保护消息的整个信封,而不仅仅是消息的正文。(3) 它对消息提交进行身份验证,而不是对消息内容(4) 它可以给发送者一些信息的保证如果发送方与下一个跃点相互验证并协商适当的安全层。迈尔斯标准跟踪[第9页] RFC 2554 SMTP身份验证1999年3月SASL中提到了其他安全注意事项规范[SASL]。10.作者地址约翰·加德纳·迈尔斯网景公司Middlefield东路501号邮递站MV-029加利福尼亚州山景城,邮编94043电子邮件:jgmyers@netscape.com迈尔斯标准跟踪[第10页] RFC 2554 SMTP身份验证1999年3月11.完整版权声明版权所有(C)互联网协会(1999)。保留所有权利。本文件及其翻译可复制并提供给其他,以及对其进行评论或以其他方式解释的衍生作品或协助其实施全部或部分分发,不受任何限制种类,前提是上述版权声明和本段包括在所有此类副本和衍生作品中。然而,这文档本身不能以任何方式修改,例如删除版权声明或提及互联网协会或其他互联网组织,除非出于以下目的需要制定互联网标准,在这种情况下互联网标准过程中定义的版权必须或根据需要将其翻译为其他语言英语。上述授予的有限权限是永久的,不会被互联网协会或其继承人或受让人撤销。本文件及其所含信息在“现状”基础与互联网协会和互联网工程TASK FORCE否认所有明示或暗示的担保,包括但不限于保证信息的使用本协议不会侵犯针对特定目的的适销性或适用性。迈尔斯标准跟踪[第11页]