ESMTP身份驗證機制探索手記 (轉)

gugu99發表於2007-08-16
ESMTP身份驗證機制探索手記 (轉)[@more@]

為了限制非本的正式利用散發垃圾郵件或進行其他不當行為,國內各大免費/收費提供商紛紛升級到ESMTP方式,開設了服務。在ESMTP伺服器上,傳送郵件需要對使用者的身份進行驗證。與傳統的SMTP方式相比,多了一道使用者身份的驗證手續,驗證之後的郵件傳送過程與傳統的SMTP方式一致。

幾乎所有的ESMTP伺服器都繼承了POP3伺服器的賬號和密碼設定體系,也就是說收發郵件用相同的賬號和密碼。當然,也可以用不同的賬號和密碼,但那樣無論是電子郵件服務提供商的維護還是使用者的使用都會很麻煩,故而很少採用。

ESMTP身份驗證的機制有很多種,最常見的是LOGIN機制,類似於POP3的身份驗證方式,即分兩步輸入賬號和密碼。在所有的驗證機制中,資訊全部採用Base64編碼。

例如,用smtp.elong.com傳送郵件,從開始連線到身份驗證的過程如下(紅色和藍色分別代表客戶端和伺服器):

(連線到smtp.elong.com:25) 220 sp1 ESMTP v2.1 EHLO ABCDEFG 250-smtp.elong.com 250-PIPELINING 250-SIZE 20480000 250-ETRN 250-AUTH LOGIN PLAIN DIGEST-MD5 CRAM-MD5 (支援的身份驗證機制種類: LOGIN, PLAIN等) 250 8BITMIME AUTH LOGIN 334 VXNlcm5hbWU6 (Base64解碼後: Username:) Ymh3YW5n (Base64編碼前: bhwang) 334 UGFzc3dvcmQ6 (Base64解碼後: Pass:) bXlwYXNzd29yZCFteXBhc3N3b3JkISE= (Base64編碼前: ********) 235 Authentication succesul


另外一種較常見的機制是PLAIN。與LOGIN機制的不同之處在於一次性輸入賬號和密碼,格式為“賬號密碼”,其中為位元組0。用PLAIN機制代替上面的身份驗證過程:

AUTH PLAIN 334 AGJod2FuZwBteXBhc3N3b3JkIW15cGFzc3dvcmQhIQ== (Base64編碼前: bhwang********) 235 Authentication successful


有的ESMTP伺服器,例如採用Core系統的smtp.163.com, smtp.163, smtp.tom.com, smtp.netease.com等,不回覆334程式碼行,客戶端在輸入AUTH PLAIN後,直接輸入符合格式要求的賬號和密碼即可。

LOGIN和PLAIN機制沒有對賬號和密碼進行,相當於明文傳輸,Base64編碼只是一層紙而已。DIGEST-MD5, CRAM-MD5, GSS, KERBEROS_V4等身份驗證機制能夠加密傳輸內容。

以CRAM-MD5為例,身份驗證過程為:
a. 客戶端宣告用CRAM-MD5驗證方式
b. 伺服器提供一個標記(戳)
c. 客戶端用郵箱密碼做金鑰,以MD5方式加密此標記,生成HMAC;然後將使用者名稱連同HMAC傳送出去
d. 伺服器收到使用者名稱與HMAC,檢驗其正確性,給出回覆

AUTH CRAM-MD5 334 PDExMjc5NDA4MTYuMTgwMDM5NEBzbXRwLmVsb25nLmNvbT4= (Base64解碼後: <1127940816.1800394@smtp.elong.com>) Ymh3YW5nIDVmZWIwYzcxMWVlMGQzYWU1ZTNlYjA4N2VhMGU2YTI3 (Base64編碼前: bhwang 5feb0c711ee0d3ae5e3eb087ea0e6a27) 235 Authentication successful


其中,“5feb0c711ee0d3ae5e3eb087ea0e6a27”是用“<1127940816.1800394@smtp.elong.com>”與郵箱密碼進行MD5運算得到的HMAC。具體演算法可參考 1321, RFC 2104等。

 

[相關資源]

  • RFC 2222 - Simple Authentication and Security Layer (SASL)
  • bhw98的專欄:http://www.csdn.net/develop/author/netauthor/bhw98/

    首次釋出: -07-22
    最後修訂: 2003-07-22

     


  • 來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-960527/,如需轉載,請註明出處,否則將追究法律責任。

    相關文章