sasl
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'名字空间中的<mechanisms/>元素声明一个或多个验证机制.
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)是<domain>的格式(对于服务器来说)或<node@domain>的格式(对于客户端来说).
8.在成功进行包括安全层的SASL握手之后,接收实体必须(MUST)丢弃任何从初始化实体得到的而不是从SASL协商本身获得的信息。
9.在成功进行包括安全层的SASL握手之后,初始化实体必须(MUST)丢弃任何从接收实体得到的而不是从SASL协商本身获得的信息。
10.参看强制执行的技术,了解关于必须(MUST)支持的机制.
身份验证
默认是不进行身份验证的
sendmail要借助sasl(简单认证层)进行身份验证
服务器saslauthd--------》提供这crysasl软件
而sasl依赖于软件包:cyrus-sasl,
可以检测相关包是否安装rpm-qa|grepsasl,并安装
cyrus-sasl-lib-2.1.22-5.el5
cyrus-sasl-2.1.22-5.el5
cyrus-sasl-devel-2.1.22-5.el5
cyrus-sasl-plain-2.1.22-5.el5
[root@mailsasl2]#vimSendmail.conf于smtp结合的文件
[root@mailsasl2]#chkconfig--list|grepsasl查看是否开机自动启动
[root@mailsasl2]#servicesaslauthdstart
[root@mailsasl2]#chkconfigsaslauthdon
图20
强制进行身份验证
[root@mailsasl2]#vim/etc/mail/sendmail.mc
图21
图22
[root@mailsasl2]#servicesendmailrestart
通过telnet来测试
telnet验证的地址25(端口)
图23
验证的时候通过来产生base64的编码
[root@mailsasl2]#echo-n"user3@sina.com.cn"|opensslbase64
[root@mailsasl2]#echo-n"123"|opensslbase64
客户端设置身份验证
24
25
26
27