原文地址:http://www.csna.cn/viewthread.php?tid=569&sid=FbE5VS
一、 郵件傳輸協(xié)議簡介
1. 郵件傳輸概念
郵件服務(wù)是Internet上最常用的服務(wù)之一,它提供了與操作系統(tǒng)平臺無關(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ā)送和接收郵件都需要以下兩個組件:用戶代理(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ā)送一個OK命令,表示可以開始報(bào)文傳輸;
5) 客戶端使用MAIL命令將郵件發(fā)送者的名稱發(fā)送給SMTP服務(wù)器;
6) SMTP服務(wù)器發(fā)送OK命令做出響應(yīng);
7) 客戶端使用RCPT命令發(fā)送郵件接收者地址,如果SMTP服務(wù)器能識別這個地址,就向客戶端發(fā)送OK命令,否則拒絕這個請求;
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捕獲并分析一個使用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è)定一個過濾器,只捕獲本機(jī)的數(shù)據(jù)通訊。
打開客戶端主機(jī)上的Foxmail 5.0 beta2,新建兩個郵件賬戶,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ù)器有多個端口時(shí),多個端口之間用分號分隔,如25;125。
科來網(wǎng)絡(luò)分析系統(tǒng)5.0對上面發(fā)送郵件操作的報(bào)文跟蹤,詳細(xì)信息如下:
A. 第1、2、3個數(shù)據(jù)包是TCP連接的三次握手?jǐn)?shù)據(jù)包,連接的雙方是本機(jī)與域名ns1.colasoft.com對應(yīng)的IP地址;
B. 從第4個數(shù)據(jù)包開始,客戶端開始通過TCP協(xié)議連接SMTP服務(wù)器,并與SMTP服務(wù)器進(jìn)行命令的交互,及郵件的發(fā)送,具體的交互過程詳見圖3以及對圖3的分析。
[attach]604[/attach]
科來網(wǎng)絡(luò)分析系統(tǒng)5.0對上面發(fā)送郵件操作的TCP原始數(shù)據(jù)流重組信息。具體分析數(shù)據(jù)流重組信息,可以得到上面發(fā)送郵件操作的詳細(xì)過程如下:
A. 客戶端使用EHLO(或HELO)命令向SMTP服務(wù)器發(fā)送HELO報(bào)文,啟動郵件傳輸過程,并同時(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就會進(jìn)行這種檢測,禁用此檢測功能即可避免此種情況的發(fā)生。
2) 接收郵件
我們再使用科來網(wǎng)絡(luò)分析系統(tǒng)5.0捕獲并分析一個使用POP3協(xié)議的接收郵件過程,客戶端主機(jī)名為“wangym”,客戶端用戶代理使用Foxmail 5.0 beta2,郵件接收者test2@colasoft.com。
在客戶端主機(jī)上打開科來網(wǎng)絡(luò)分析系統(tǒng)5.0。與上面相同,設(shè)定一個過濾器,只捕獲本機(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ù)器有多個端口時(shí),多個端口之間用分號分隔,如110;1110。
科來網(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個數(shù)據(jù)包開始,客戶端開始通過TCP協(xié)議連接POP3服務(wù)器,并與POP3服務(wù)器進(jìn)行命令的交互,及郵件的接收,具體的交互過程詳見圖4以及對圖4的分析。
科來網(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ā)送一個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直接使用明文傳輸;
? 直接重組出了接收到的郵件內(nèi)容,此信息不經(jīng)過任何編碼或加密處理,直接為明文方式,與圖1所示的郵件原始信息一致。
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)識郵件接收者列表
QUIT 終止客戶端與SMTP服務(wù)器間的連接
POP3命令如表2所示:
命令 作用
USER 客戶端向POP3服務(wù)器傳送賬號
PASS 客戶端向POP3服務(wù)器傳送密碼
STAT 客戶端請求POP3服務(wù)器返回郵箱的統(tǒng)計(jì)信息
UIDL 客戶端請求POP3服務(wù)器返回郵件的唯一標(biāo)識符
LIST 客戶端請求POP3服務(wù)器返回郵件數(shù)量和每封郵件的大小
RETR 客戶端請求POP3服務(wù)器返回由參數(shù)標(biāo)識的郵件的全部文本
DELE POP3服務(wù)器將由參數(shù)標(biāo)識的郵件標(biāo)記為刪除
RSET POP3服務(wù)器重置所有標(biāo)記為刪除的郵件,用于撤消DELE命令
NOOP POP3服務(wù)器返回一個肯定的響應(yīng)
QUIT 終止客戶端POP3服務(wù)器間的連接
三、 總結(jié)
以上簡單介紹了SMTP和POP3協(xié)議,并使用科來網(wǎng)絡(luò)分析分析系統(tǒng)5.0跟蹤分析了一個基于SMTP/POP3協(xié)議的郵件收發(fā)操作。據(jù)此,用戶在遇到不能正常收發(fā)郵件(使用SMTP/POP3協(xié)議)的問題時(shí),即可結(jié)合上述的SMTP/POP3相關(guān)知識,使用網(wǎng)絡(luò)檢測分析軟件(這兒是科來網(wǎng)絡(luò)分析系統(tǒng)5.0)對郵件接收和郵件發(fā)送的報(bào)文進(jìn)行跟蹤分析,以完成對此類故障的快速排查。
本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http://blog.csdn.net/hyde82/archive/2007/06/13/1650581.aspx