SASL全称SimpleAuthenticationandSecurityLayer,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。
SASL提供了一个通用的方法为基于连接的协议增加验证支持,而XMPP使用了一个普通的XML名字空间来满足SASL的需要。
1.如果SASL协商发生在两台服务器之间,除非服务器宣称的DNS主机名得到解析,不能(MUSTNOT)进行通信。
2.如果初始化实体有能力使用SASL协商,它必须(MUST)在初始化流的头信息中包含一个值为"1.0"的属性'version'。
3.如果接收实体有能力使用SASL协商,它必须(MUST)在应答从初始化实体收到的打开流标签时(如果打开的流标签包含一个值为"1.0"的'version'属性),通过'urn:ietf:params:xml:ns:xmpp-sasl'名字空间中的元素声明一个或多个验证机制.
4.当SASL协商时,一个实体不能(MUSTNOT)在流的根元素中发送任何空格符号(匹配production[3]contentof[XML])作为元素之间的分隔符(在以下的SASL例子中任何空格符号的出现仅仅是为了增加可读性);这条禁令帮助确保安全层字节的精确度。
5.当SASL握手时,在XML元素中使用的任何XML字符数据必须被编码成base64,编码遵循RFC3548第三章的规定。
6.如果一个简单名字"simpleusername"规范被选定的SASL机制所支持,(比如,这被DIGEST-MD5和CRAM-MD5机制支持但不被EXTERNAL和GSSAPI机制支持),验证的时候初始化实体应该(SHOULD)在服务器间通信时提供简单名字自身的发送域(IP地址或包含在一个域标识符中的域名全称),在客户端与服务器之间通信时提供注册用户名(包含在一个XMPP节点标识符中的用户或节点名)。
7.如果初始化实体希望以另一个实体的身份出现并且SASL机制支持授权ID的传输,初始化实体在SASL握手时必须(MUST)提供一个授权ID。如果初始化实体不希望以另一个实体的身份出现,初始化实体在SASL握手时不能(MUSTNOT)提供一个授权ID。在[SASL]的定义中,除非授权ID不同于从验证ID(详见[SASL])中得到的缺省的授权ID,初始化实体不能(MUSTNOT)提供授权ID。如果提供了,这个授权ID的值必须(MUST)是的格式(对于服务器来说)或的格式(对于客户端来说).
8.在成功进行包括安全层的SASL握手之后,接收实体必须(MUST)丢弃任何从初始化实体得到的而不是从SASL协商本身获得的信息。
9.在成功进行包括安全层的SASL握手之后,初始化实体必须(MUST)丢弃任何从接收实体得到的而不是从SASL协商本身获得的信息。
相关阅读:
CentOS 6.4下Postfix邮件服务安装和基本配置
CentOS上Redmine2.3.0邮件服务器报SSL错误的解决方案
Ubuntu下安装Postfix+Extmail邮件服务器
邮件服务系列之 postifx+sasl+dovecot+虚拟域+虚拟用户+webmail+webman综合演练