参数:
一个包含标志的被提交给传送系统的addr-spec,或者是两个字符组成的序列"<>" ,
表明这个标志是未知的或被验明为不完成的。
讨论:
AUTH中一个可选的参数的MAIL FROM 命令允许一个协同工作的代理与一单独的消息就行通信在一个被信任的环境里。
如果服务器认为最初提交消息的Addr-dec的客户端是可信任的话,将会发出一个声明,接着服务器应当提供一个相同的addr-dec给任何其他支持AUTH扩展的用来中转消息的服务器。
如果MAIL FROM命令中那个可选的AUTH命令的参数没有得到提供的话,而客户端已经得到认证,那么服务器认为消息是由客户端提交的原始的信息,那么在中转给其他的中继服务器的时候,当前服务器就会把addr-dec做为Auth命令的可选的参数提供给其它的服务器。
如果服务器不是充分的相信客户端的身份或者客户端并没有得到认证的话,那么服务器必须自己提供AUTH命令的那个参数一个值。并且将这个值写入到日志文件中。
如果AUTH命令的可选的参数已经提供了的话,不管是明确的提出还是由于前面段落的需要,服务器应当提供这个参数给任何其他支持AUTH扩展的用来中转消息的服务器。
服务器将把邮件列表的扩充视为一个新的任务,AUTH命令加入到邮件地址列表中,或者在中转这些消息到列表签署者的时候管理邮件列表。
为了一致,在一个执行很难被编码的时候,服务器将认为所有的这些客户端都是不可信任的。在这种情况下,服务器能做的仅仅就是解析有效的AUTH命令的参数,并把它提供给任所有使用AUTH扩展的认证机制的服务器,并遗弃无效的参数。
例如:
C: MAIL FROM:<
e=mc2@example.com> AUTH=e+3Dmc2@example.comS: 250 OK
6 错误代码
以下的错误代码常常用来描述和标识各种情况。
432 需要进行密码的转换
这个响应码表示,对于服务器的认证机制来讲,用户必须进行一个转换。比较由代表性的就是一旦你使用了PLAIN认证机制的话,就必须进行转换。
534 认证机过于简单
这个响应码表示的是选择的认证机制相对于服务器所允许的认证机制来说显得太弱了。
538 请求的认证机制需要加密
这个响应码表示的是所选的认证机制只有在SMTP连接是需要加密的情况下才用的着
454 暂时的认证失败
这个响应码表示的是认证失败的原因是由于服务器暂时出现问题
530 认证是必须的
除了AUTH,EHLO,HELO,NOOP,RESET或者QUIT这几个命令之外的任何一个命令,都将返回这个响应码。这表示服务器需要为了执行被请求的操作,需要一个认证。
7 正规的语法
以下的用在扩展的BNF符号和用在ABNF中的语法的规格是一样的。
除了那些被标注的以外,所有的按字母顺序排列的特征都是适合于固定场合的。排在上面的或者下面的被用来定义为有象征意义的字符串的用处仅仅是为了编辑时的便利以及清晰。执行这些必须在以固定的格式在一定的场合来接受这些字符串。
UPALPHA = %x41-5A ;; Uppercase: A-Z
LOALPHA = %x61-7A ;; Lowercase: a-z
ALPHA = UPALPHA / LOALPHA ;; case insensitive
DIGIT = %x30-39 ;; Digits 0-9
HEXDIGIT = %x41-46 / DIGIT ;; hexidecimal digit (uppercase)
hexchar = "+" HEXDIGIT HEXDIGIT
xchar = %x21-2A / %x2C-3C / %x3E-7E
;; US-ASCII except for "+", "=", SPACE and CTL
xtext = *(xchar / hexchar)
AUTH_CHAR = ALPHA / DIGIT / "-" / "_"
auth_type = 1*20AUTH_CHAR
auth_command = "AUTH" SPACE auth_type [SPACE (base64 / "=")]
*(CRLF [base64]) CRLF
auth_param = "AUTH=" xtext
;; The decoded form of the xtext MUST be either
;; an addr-spec or the two characters "<>"
base64 = base64_terminal /
( 1*(4base64_CHAR) [base64_terminal] )
base64_char = UPALPHA / LOALPHA / DIGIT / "+" / "/"
;; Case-sensitive
base64_terminal = (2base64_char "==") / (3base64_char "=")
continue_req = "334" SPACE [base64] CRLF
CR = %x0C ;; ASCII CR, carriage return
CRLF = CR LF
CTL = %x00-1F / %x7F ;; any ASCII control character and DEL
LF = %x0A ;; ASCII LF, line feed
SPACE = %x20 ;; ASCII SP, space
9 安全问题考虑
如果客户端使用这个扩展得到不加密的渠道但是通过一个不安全的网络连接到协同工作的服务器的话,客户端将被阻断而永远不能发送邮件到服务器,当服务器不能够互助地进行验证和加密的时候。否则,攻击者将会通过截断SMTP的连接而偷取客户端的信件,或者假装服务器不支持认证,从而导致所有的AUTH命令失败。
在SASL商议开始之前,任何协议之间的交互都可以畅通无阻的进行,但也有可能被活动着的攻击者修改。因此客户端和服务器都必须抛弃在SASL之前获得的所有消息。
认证机制并不保护TCP端口,攻击者就会通过修改中转的连接而试图连接(SUBMIT)。AUTH命令的参数就可以阻止这种攻击。
一个消息子服务客户端可能会要求用户通过验证,在任何它得到一个合适的SASL的时候。
因此,对于一个声明SASL机制的SUBMIT来说并不是合算的,在使用一个同意匿名子任务的客户端而没有任何利益的机制的时候。
这个扩展并不是有意的取代或者被用来取代端到端的消息签名在加密系统S/MIME或者PGP中。此扩展和端到端的系统有一些细微的差别,主要是以下的部分。
(1)它通常只在一个被信任的范围里有效
(2)它保护整个消息的封装替,而不仅仅是正文
(3)它鉴证消息的子任务而不是消息的内容
(4)在发信者协同验证下一个中转点并且穿越一个合理的安全层的情况下,它可以给发信者一个保证,那就是可以把消息安全地传递到下一个地点。
另外需要说明的是,安全问题的考虑在SASL说明里面也有提到。上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
电子邮件客户端软件开题报告+论文+源代码+英文文献 第8页下载如图片无法显示或论文不完整,请联系qq752018766