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"[email protected]"|opensslbase64
[root@mailsasl2]#echo-n"123"|opensslbase64
客戶端設置身份驗證
24
25
26
27