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