top
Loading...
用VB設計有安全認證服務的Email

以往各網站的EMail系統均是根據標準的SMTP協議編寫的,現在為了更有效地抑制垃圾郵件的泛濫,國內各大免費郵箱提供商紛紛開始采用ESMTP的方式設計E-mail收發服務。發送郵件需要對用戶的身份進行驗證,如果帳號和密碼有誤,ESMTP服務器則拒絕發送該郵件返回553錯誤代碼。通過對協議的分析我找到設計這樣EMail的方法,我們可以用Visual Baisc輕松完成。

一、 相關知識的介紹

ESMTP(Extension SMTP)即認證的郵件傳輸方式,是郵件服務器系統為了限制非本系統的正式用戶利用本系統散發垃圾郵件或其他不當行為而開設的一項安全認證服務。它與傳統的SMTP方式相比,主要的不同有兩點:

1. 支持8-bit MIME格式的編碼。

2. 支持用戶身份的驗證。

多了一道用戶身份的驗證手續,驗證之后的郵件發送過程與傳統的SMTP方式一致。為了方便用戶的使用,絕大多數的ESMTP服務器都繼承了POP3服務器的帳號和密碼設置體系,也就是說收發郵件都用同一個帳號和密碼。

根據[RFC 2554]規范,SMTP的認證功能主要是增加了AUTH命令。AUTH命令有多種用法,而且有多種認證機制。AUTH支持的認證機制主要有LOGIN,CRAM-MD5[注1]等。LOGIN應該是大多數免費郵件服務器都支持的,網易與新浪都支持。下面主要針對LOGIN方式進行介紹,其它方式請根據相應的RFC 規范進行修改。
LOGIN 方式口令-應答過程如下(S:表示服務器返回,C:表示客戶端發送)

1. C: AUTH LOGIN

2. S: 334 dXNlcm5hbWU6

3. C: dXNlcm5hbWU6

4. S: 334 cGFzc3dvcmQ6

5. C: cGFzc3dvcmQ6

6. S: 235 Authentication successful.

(1). 為客戶端向服務器發送認證指令。

(2). 服務端返回base64編碼串,成功碼為334。編碼字符串解碼后為"username:",說明要求客戶端發送用戶名。

(3). 客戶端發送用base64編碼的用戶名,此處為"username:"。

(4). 服務端返回base64編碼串,成功碼為334。編碼字符串解碼后為"password:",說明要求客戶端發送用戶口令。

(5). 客戶端發送用base64編碼的口令,此處為"password:"。

(6). 成功后,服務端返回碼為235,表示認證成功可以發送郵件了

二、 具體步驟

1. 啟動VB6新建一工程,加載控件Microsoft Winsock Control 6.0,在窗體上放置1個
Winsock控件,8個TextBox控件,按下圖修改他們的屬性,CheckBox控件用于選擇是否需要安全認證服務。


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗