Email電子郵件應(yīng)用分析2007-01-16 09:13:01
標(biāo)簽:
Email [
推送到技術(shù)圈]
Email電子郵件應(yīng)用分析
一、 郵件傳輸協(xié)議簡介
1. 郵件傳輸概念
郵件服務(wù)是Internet上最常用的服務(wù)之一,它提供了與操作系統(tǒng)平臺(tái)無關(guān)的通信服務(wù),使用郵件服務(wù),用戶可通過電子郵件在網(wǎng)絡(luò)之間交換數(shù)據(jù)信息。郵件傳輸包括將郵件從發(fā)送者客戶端發(fā)往郵件服務(wù)器,以及接收者從郵件服務(wù)器將郵件取回到接收者客戶端。
2. SMTP和POP3
在TCP/IP協(xié)議簇中,一般使用SMTP協(xié)議發(fā)送郵件,POP3協(xié)議接收郵件。
SMTP,全稱Simple Message Transfer Protocol,中文名為簡單郵件傳輸協(xié)議,工作在TCP/IP層次的應(yīng)用層。SMTP采用Client/Server工作模式,默認(rèn)使用TCP 25端口,提供可靠的郵件發(fā)送服務(wù)。
POP3,全稱Post Office Protocol 3,中文名為第三版郵局協(xié)議,工作在TCP/IP層次的應(yīng)用層。POP3采用Client/Server工作模式,默認(rèn)使用TCP 110端口,提供可靠的郵件接收服務(wù)。
3. SMTP和POP3的工作原理
發(fā)送和接收郵件都需要以下兩個(gè)組件:用戶代理(UA,常用的是Foxmail或Outlook)和SMTP/POP3服務(wù)器。
SMTP工作原理:
1) 客戶端使用TCP協(xié)議連接SMTP服務(wù)器的25端口;
2) 客戶端發(fā)送HELO報(bào)文將自己的域地址告訴給SMTP服務(wù)器;
3) SMTP服務(wù)器接受連接請求,向客戶端發(fā)送請求賬號密碼的報(bào)文;
4) 客戶端向SMTP服務(wù)器傳送賬號和密碼,如果驗(yàn)證成功,向客戶端發(fā)送一個(gè)OK命令,表示可以開始報(bào)文傳輸;
5) 客戶端使用MAIL命令將郵件發(fā)送者的名稱發(fā)送給SMTP服務(wù)器;
6) SMTP服務(wù)器發(fā)送OK命令做出響應(yīng);
7) 客戶端使用RCPT命令發(fā)送郵件接收者地址,如果SMTP服務(wù)器能識(shí)別這個(gè)地址,就向客戶端發(fā)送OK命令,否則拒絕這個(gè)請求;
8) 收到SMTP服務(wù)器的OK命令后,客戶端使用DATA命令發(fā)送郵件的數(shù)據(jù)。
9) 客戶端發(fā)送QUIT命令終止連接。
POP3工作原理:
1) 客戶端使用TCP協(xié)議連接郵件服務(wù)器的110端口;
2) 客戶端使用USER命令將郵箱的賬號傳給POP3服務(wù)器;
3) 客戶端使用PASS命令將郵箱的賬號傳給POP3服務(wù)器;
4) 完成用戶認(rèn)證后,客戶端使用STAT命令請求服務(wù)器返回郵箱的統(tǒng)計(jì)資料;
5) 客戶端使用LIST命令列出服務(wù)器里郵件數(shù)量;
6) 客戶端使用RETR命令接收郵件,接收一封后便使用DELE命令將郵件服務(wù)器中的郵件置為刪除狀態(tài);
7) 客戶端發(fā)送QUIT命令,郵件服務(wù)器將將置為刪除標(biāo)志的郵件刪除,連接結(jié)束。
(注:客戶端UA可以設(shè)定將郵件在郵件服務(wù)器上保留備份,而不將其刪除。)
二、 跟蹤分析Email電子郵件通訊過程
1. 分析Email的具體流程
1) 發(fā)送郵件
我們使用科來網(wǎng)絡(luò)分析系統(tǒng)5.0捕獲并分析一個(gè)使用SMTP協(xié)議的發(fā)送郵件過程,客戶端主機(jī)名為“wangym”,客戶端用戶代理使用Foxmail 5.0 beta2,郵件發(fā)送者
test1@colasoft.com,郵件接收者
test2@colasoft.com。
在客戶端主機(jī)上打開科來網(wǎng)絡(luò)分析系統(tǒng)5.0。為避免數(shù)據(jù)干擾,設(shè)定一個(gè)過濾器,只捕獲本機(jī)的數(shù)據(jù)通訊。
打開客戶端主機(jī)上的Foxmail 5.0 beta2,新建兩個(gè)郵件賬戶,
test1@colasoft.com和
test2@colasoft.com,設(shè)置好賬戶的SMTP/POP3服務(wù)器地址、用戶名、密碼等信息并測試成功。
在科來網(wǎng)絡(luò)分析系統(tǒng)5.0中開始數(shù)據(jù)捕獲,在Foxmail中使用
test1@colasoft.com向
test2@colasoft.com發(fā)送一封郵件,郵件原始信息如圖1所示。發(fā)送完成后即可在科來網(wǎng)絡(luò)分析系統(tǒng)5.0對剛才的郵件發(fā)送操作進(jìn)行分析(為避免數(shù)據(jù)包干擾,分析時(shí)可停止捕獲。)。
注意:此文里提到的發(fā)送郵件均指使用TCP 25端口的標(biāo)準(zhǔn)SMTP通信,對于非25端口的郵件發(fā)送,用戶可在“工程->高級分析模塊->郵件分析模塊->SMTP設(shè)置->SMTP端口”處進(jìn)行更改,系統(tǒng)默認(rèn)為25,當(dāng)SMTP服務(wù)器有多個(gè)端口時(shí),多個(gè)端口之間用分號分隔,如25;125。
圖片附件:
發(fā)送郵件的原始信息.gif (2006-7-13 14:35, 13.09 K)
(圖1 發(fā)送郵件的原始信息)
圖片附件:
發(fā)送郵件的原始數(shù)據(jù)包.gif (2006-7-13 14:35, 44.32 K)
(圖2 使用SMTP協(xié)議發(fā)送郵件的原始數(shù)據(jù)包)
圖2所示的是科來網(wǎng)絡(luò)分析系統(tǒng)5.0對上面發(fā)送郵件操作的報(bào)文跟蹤,詳細(xì)信息如下:
A. 第1、2、3個(gè)數(shù)據(jù)包是TCP連接的三次握手?jǐn)?shù)據(jù)包,連接的雙方是本機(jī)與域名ns1.colasoft.com對應(yīng)的IP地址;
B. 從第4個(gè)數(shù)據(jù)包開始,客戶端開始通過TCP協(xié)議連接SMTP服務(wù)器,并與SMTP服務(wù)器進(jìn)行命令的交互,及郵件的發(fā)送,具體的交互過程詳見圖3以及對圖3的分析。
圖片附件:
發(fā)送郵件的原始數(shù)據(jù)流.gif (2006-7-13 14:35, 34.01 K)
(圖3 使用SMTP協(xié)議發(fā)送郵件的原始數(shù)據(jù)流)
圖3所示的是科來網(wǎng)絡(luò)分析系統(tǒng)5.0對上面發(fā)送郵件操作的TCP原始數(shù)據(jù)流重組信息。具體分析數(shù)據(jù)流重組信息,可以得到上面發(fā)送郵件操作的詳細(xì)過程如下:
A. 客戶端使用EHLO(或HELO)命令向SMTP服務(wù)器發(fā)送HELO報(bào)文,啟動(dòng)郵件傳輸過程,并同時(shí)將客戶端地址發(fā)送SMTP服務(wù)器端,此處為wangym;
B. SMTP服務(wù)器接受了客戶端的連接請求,并請求輸入賬號和密碼進(jìn)行認(rèn)證;
C. 客戶端向服務(wù)器端傳送賬號和密碼;
D. SMTP服務(wù)器通過驗(yàn)證,客戶端使用MAIL命令將郵件發(fā)送者的名稱傳送給SMTP服務(wù)器;
E. 客戶端使用RCPT命令將郵件接收者的名稱傳送給SMTP服務(wù)器;
F. 客戶端使用DATA命令傳送郵件數(shù)據(jù)給SMTP服務(wù)器;
G. 數(shù)據(jù)傳送完畢后,客戶端發(fā)送QUIT命令關(guān)閉連接。
注意:
SMTP傳輸使用的是base64編碼,圖4中AUTH LOGIN下的“dGVzdDFAY29sYXNvZnQuY29t”是當(dāng)前使用賬號對應(yīng)的base64編碼;
圖3所示的SMTP數(shù)據(jù)流中,客戶端向SMTP服務(wù)器傳送了兩次發(fā)件人名稱和收件人名稱,可能的原因有兩種:
a. 網(wǎng)絡(luò)的延遲較大,客戶端在規(guī)定時(shí)間內(nèi)未收到SMTP服務(wù)器的響應(yīng),認(rèn)為傳送發(fā)件人名稱和收件人名稱的數(shù)據(jù)包丟失而進(jìn)行的重傳;
b. 客戶端主機(jī)上的防病毒軟件在郵件發(fā)送前對郵件進(jìn)行的檢測,如Norton Antivirus就會(huì)進(jìn)行這種檢測,禁用此檢測功能即可避免此種情況的發(fā)生。
2) 接收郵件
我們再使用科來網(wǎng)絡(luò)分析系統(tǒng)5.0捕獲并分析一個(gè)使用POP3協(xié)議的接收郵件過程,客戶端主機(jī)名為“wangym”,客戶端用戶代理使用Foxmail 5.0 beta2,郵件接收者
test2@colasoft.com。
在客戶端主機(jī)上打開科來網(wǎng)絡(luò)分析系統(tǒng)5.0。與上面相同,設(shè)定一個(gè)過濾器,只捕獲本機(jī)的數(shù)據(jù)通訊,選擇高級分析模塊,在郵件分析模塊的常規(guī)設(shè)置中,將保存郵件選擇為“是”,并選擇好郵件的保存位置,如圖1所示。
在科來網(wǎng)絡(luò)分析系統(tǒng)5.0中開始數(shù)據(jù)捕獲,同時(shí)在Foxmail中選中
test2@colasoft.com,并收取郵件。接收完成后即可在科來網(wǎng)絡(luò)分析系統(tǒng)5.0對剛才的郵件接收操作進(jìn)行分析(為避免數(shù)據(jù)包干擾,分析時(shí)可停止捕獲。)。
注意:此文里提到的接收郵件均指使用TCP 110端口的標(biāo)準(zhǔn)POP3通信,對于非110端口的郵件發(fā)送,用戶可在“工程->高級分析模塊->郵件分析模塊->SMTP設(shè)置->POP3端口”處進(jìn)行更改,系統(tǒng)默認(rèn)為110,當(dāng)SMTP服務(wù)器有多個(gè)端口時(shí),多個(gè)端口之間用分號分隔,如110;1110。
圖4所示的是科來網(wǎng)絡(luò)分析系統(tǒng)5.0對上面接收郵件操作的報(bào)文跟蹤。
A. 1、2、3數(shù)據(jù)包是TCP連接的三次握手?jǐn)?shù)據(jù)包,連接的雙方是本機(jī)與域名ns1.colasoft.com對應(yīng)的IP地址;
B. 從第4個(gè)數(shù)據(jù)包開始,客戶端開始通過TCP協(xié)議連接POP3服務(wù)器,并與POP3服務(wù)器進(jìn)行命令的交互,及郵件的接收,具體的交互過程詳見圖4以及對圖4的分析。
圖片附件:
接收郵件的原始數(shù)據(jù)包.gif (2006-7-13 14:40, 48.62 K)
(圖4 使用POP3協(xié)議接收郵件的原始數(shù)據(jù)包)
圖5所示的是科來網(wǎng)絡(luò)分析系統(tǒng)5.0對上面接收郵件操作的TCP原始數(shù)據(jù)流重組信息。具體分析其數(shù)據(jù)流重組信息,可以得到上面接收郵件操作的詳細(xì)過程:
A. 客戶端使用USER命令向POP3服務(wù)器傳送用戶賬號
test2@colasoft.com;
B. 客戶端使用PASS命令向POP3服務(wù)器傳送用戶密碼1234567890;
C. POP3服務(wù)器通過驗(yàn)證,向客戶端發(fā)送一個(gè)OK報(bào)文;
D. 客戶端使用STAT命令請求POP3服務(wù)器返回郵箱的統(tǒng)計(jì)資料信息,POP3服務(wù)器返回當(dāng)前有一封郵件;
E. 客戶端使用LIST命令列出POP3服務(wù)器里的郵件數(shù)量,當(dāng)前為1封郵件;
F. 客戶端使用RETR命令接收郵件,接收后使用DELE命令將郵件POP3服務(wù)器中的郵件置為刪除狀態(tài);
G. 客戶端發(fā)送QUIT命令,郵件服務(wù)器將將置為刪除標(biāo)志的郵件刪除,連接結(jié)束。
注意:
POP3直接使用明文傳輸;
圖5中最后部分(由于篇幅,圖5中未列出),直接重組出了接收到的郵件內(nèi)容,此信息不經(jīng)過任何編碼或加密處理,直接為明文方式,與圖1所示的郵件原始信息一致。
圖片附件:
接收郵件的原始數(shù)據(jù)流.gif (2006-7-13 14:40, 37.46 K)
(圖5 使用POP3協(xié)議接收郵件的原始數(shù)據(jù)流)
3) SMTP/POP3命令碼
通過SMTP/POP3協(xié)議進(jìn)行郵件收發(fā)操作時(shí),均通過不同的命令碼進(jìn)行不同的操作,現(xiàn)將其命令碼總結(jié)如下:
SMTP命令如表1所示:
命令 作用
HELO 客戶端發(fā)送此命令與SMTP服務(wù)器建立連接,將發(fā)送者郵件地址發(fā)送給SMTP服務(wù)器
MAIL 客戶端將郵件發(fā)送者的名稱傳送給SMTP服務(wù)器
RCPT 客戶端將郵件接收者的名稱傳送給SMTP服務(wù)器
DATA 客戶端將郵件報(bào)文內(nèi)容傳送給SMTP服務(wù)器
SEND 用于向指定用戶傳送郵件
SAML/SOML 用于發(fā)送郵件
RSET 取消客戶端與SMTP服務(wù)器間的當(dāng)前事務(wù),釋放與當(dāng)前事務(wù)相關(guān)的內(nèi)存
EXPN 標(biāo)識(shí)郵件接收者列表
QUIT 終止客戶端與SMTP服務(wù)器間的連接
圖片附件:
SMTP協(xié)議命令.gif (2006-7-13 14:40, 7.86 K)
(表1 SMTP協(xié)議命令)
POP3命令如表2所示:
命令 作用
USER 客戶端向POP3服務(wù)器傳送賬號
PASS 客戶端向POP3服務(wù)器傳送密碼
STAT 客戶端請求POP3服務(wù)器返回郵箱的統(tǒng)計(jì)信息
UIDL 客戶端請求POP3服務(wù)器返回郵件的唯一標(biāo)識(shí)符
LIST 客戶端請求POP3服務(wù)器返回郵件數(shù)量和每封郵件的大小
RETR 客戶端請求POP3服務(wù)器返回由參數(shù)標(biāo)識(shí)的郵件的全部文本
DELE POP3服務(wù)器將由參數(shù)標(biāo)識(shí)的郵件標(biāo)記為刪除
RSET POP3服務(wù)器重置所有標(biāo)記為刪除的郵件,用于撤消DELE命令
NOOP POP3服務(wù)器返回一個(gè)肯定的響應(yīng)
QUIT 終止客戶端POP3服務(wù)器間的連接
圖片附件:
POP3協(xié)議命令.gif (2006-7-13 14:40, 8.18 K)
(表2 POP3協(xié)議命令)
三、 總結(jié)
以上簡單介紹了SMTP和POP3協(xié)議,并使用科來網(wǎng)絡(luò)分析分析系統(tǒng)5.0跟蹤分析了一個(gè)基于SMTP/POP3協(xié)議的郵件收發(fā)操作。據(jù)此,用戶在遇到不能正常收發(fā)郵件(使用SMTP/POP3協(xié)議)的問題時(shí),即可結(jié)合上述的SMTP/POP3相關(guān)知識(shí),使用網(wǎng)絡(luò)檢測分析軟件(這兒是科來網(wǎng)絡(luò)分析系統(tǒng)5.0)對郵件接收和郵件發(fā)送的報(bào)文進(jìn)行跟蹤分析,以完成對此類故障的快速排查。