Issuu on Google+

TCP/IP 成果報告 SMTP/POP3/IMAP 封包解析

指導老師 : 戴致禮 老師 班級 : UC104 學號 : C1000341 姓名 : 洪志龍


前言、事前準備及設定 這次的報告主要是透過封包來分析 SMTP/POP3/IMAP 這三個常使 用到的郵件傳輸協定,可以透過封包欄位及內容的不同來知道每一個協 定在 OSI 七層之中的定位及傳輸規則,現在我來介紹在這次的實驗當中 使用到的工具及相關軟體設定: A、 封包擷取工具:Wireshark 1.4.1 版 此工具的詳細功能就不在此處贅述了,比較要注意的是在擷取封 包的過程中由於我是利用虛擬機器(版本為 Windows2003;IP: 192.168.8.1)開啟 Outlook,並且利用主機自己的 MSN 信箱(IP: 192.168.8.66),相互傳遞信件,並抓取本機及虛擬網卡的封包流量 藉以分析封包的型態及差異。 至於過濾封包的條件我定為主機及虛擬機器的 IP 位址及 TCP(用 來抓取 POP、IMAP)、SMAP。 B、 信箱伺服器:由於我們平常使用的多半為未經加密的 POP3 及 IMAP 傳送,因此我這次到網路上申請了一個電子信箱伺服器, JUMBO(http://jumbo.webaq.com/),其好處是可以設定使用 SSL 的 POP3 及 IMAP 來當作內送郵件的伺服器,可提供更安全的傳輸, 不過其免費試用期為 30 天。 C、 郵件傳輸工具:Outlook Express 6(虛擬機器)及 Hotmail(本機) 我使用 Outlook Express 6 及 Hotmail 來當作本次實驗的兩方信箱, 而在 Outlook 的帳號設定方面,使用我在 JUMBO 上申請的信箱帳 號來設定: ●帳號、顯示名稱:(我的帳號)@jumbo.to ●POP 收信伺服器: pop.webaq.com (勾選 SSL) ●IMAP 收信伺服器: imap.webaq.com (勾選 SSL) ●寄信伺服器: smtp.webaq.com (勾選 SSL)


所有 Outlook 信箱信件存放區(包含 POP3、IMAP 信件存放及暫存區)路 徑:C:\Documents and Settings\Administrator\Local Settings\Application Data\Identities\{19218273-BE47-4DAA-91A7-5FB5336A54E8}\Microsoft\Outl ook Express


協定的介紹 SMTP 全名為 Simple Mail Transfer Protocol 為「簡易郵件傳送協定」,這個協 定定義了電子郵件訊息在伺服器間傳遞的方法。

SMTP 工作機制 SMTP 通常有兩種工作模式:發送 SMTP 和接收 SMTP。 具體工作方式為:發送 SMTP 在接到用戶的郵件請求後,判斷此郵件是 否為本地郵件,若是則直接投送到用戶的信箱,否則就向 DNS 查詢遠 端郵件伺服器的 MX 紀錄,並建立與遠端接收 SMTP 之間的一個雙向傳 送通道,此後 SMTP 命令由發送 SMTP 發出,由接收 SMTP 接收,而回 答則反向傳送。一旦傳送通道建立,SMTP 發送者發送 MAIL 命令直接 指向郵件發送者。如果 SMTP 接收者可以接收郵件則傳回 OK 答覆。 SMTP 發送者再發出 RCPT 命令確認郵件是否接收到。如果 SMTP 接收 者接收,則傳回 OK 答覆;如果不能接收到,則發出拒絕接收答覆(但 不中止整個郵件操作),雙方將如此重複多次。當接收者收到全部郵件 後會接收到特別的序列,如果接收者成功處理了信件,則傳回 OK 答覆。

SMTP 流程


POP3 POP3,全名為「Post Office Protocol - Version 3」,即「郵局協定版本 3」。 是 TCP/IP 協定族中的一員,由 RFC 1939 定義。本協定主要用於支援使 用用戶端遠端管理在伺服器上的電子郵件。提供了 SSL 加密的 POP3 協 定被稱為 POP3S。 POP 協定支援「離線」郵件處理。其具體過程是:郵件發送到伺服器上, 電子郵件用戶端呼叫郵件客戶機程式以連線伺服器,並下載所有未閱讀 的電子郵件。這種離線存取範式是一種儲存轉發服務,將郵件從郵件伺 服器端送到個人終端機器上,一般是 PC 機或 MAC。一旦郵件發送到 PC 機或 MAC 上,郵件伺服器上的郵件將會被刪除。但目前的 POP3 郵件伺服器大都可以「只下載郵件,伺服器端並不刪除」,也就是改進 的 POP3 協定。

POP3 協議的不足 POP 作為 Internet 上郵件的第一個離線協議標準,允許用戶從服務器上 把信件下載到本地主機上,同時刪除保存在郵件服務器上的郵件,從而 使用戶不必長時間地與郵件伺服器連接,很大程度上減少了伺服器和網 路的整體開銷。 但 POP3 有其天生的缺陷,即當用戶接收電子郵件時,所有的信件都從 伺服器上清除並下載到用戶端。在整個收信過程中,用戶無法知道郵件 的具體訊息,只有照單全收進硬碟後,才能慢慢瀏覽和刪除。這使用戶 幾乎沒有對郵件接收的控制決定權。一旦碰上郵箱被轟炸,或有比較大 的郵件,用戶不能通過分析郵件的內容及發信人地址來決定是否下載或 刪除,就造成系統資源的癱瘓及浪費。

IMAP IMAP(Internet 消息訪問協議)是與 POP3 對應的另一種協議,為美國斯坦 福大學在 1986 年開始研發的多重信箱電子郵件系統。它能夠從郵件伺 服器上獲取有關 E-mail 的訊息或直接收取郵件,具有高性能和可擴展 性的優點。


IMAP 工作原理及特性 支援連線和離線兩種操作模式。當使用 POP3 時,用戶端只會連線在伺 服器上一段的時間,直到它下載完所有新資訊,用戶端即斷開連線。在 IMAP 中,只要使用者介面是活動的和下載資訊內容是需要的,用戶端 就會一直連線在伺服器上。對於有很多或者很大郵件的使用者來說,使 用 IMAP4 範式可以獲得更快的響應時間。 支援多個客戶同時連線到一個郵箱。POP3 協定假定郵箱當前的連線是 唯一的連線。相反,IMAP4 協定允許多個使用者同時存取郵箱同時提供 一種機制讓客戶能夠感知其他當前連線到這個郵箱的使用者所做的操 作。 支援存取訊息中的 MIME 部分和部分獲取。幾乎所有的 Internet 郵件都 是以 MIME 格式傳輸的。MIME 允許訊息包含一個樹型結構,這個樹型 結構的葉子節點都是單一內容型別而非葉子節點都是多塊型別的組合。 IMAP4 協定允許用戶端獲取任何獨立的 MIME 部分和獲取資訊的一部 分或者全部。這些機制使得使用者無需下載附件就可以瀏覽訊息內容或 者在獲取內容的同時瀏覽。 支援在伺服器保留訊息狀態資訊。透過使用在 IMAP4 協定中定義的標 誌用戶端可以跟蹤訊息狀態,例如郵件是否被讀取,回復,或者刪除。 這些標識儲存在伺服器,所以多個客戶在不同時間存取一個郵箱可以感 知其他使用者所做的操作。 支援在伺服器上存取多個郵箱。IMAP4 用戶端可以在伺服器上建立,重 新命名,或刪除郵箱(通常以資料夾形式顯現給使用者)。支援多個郵 箱還允許伺服器提供對於共享和公共資料夾的存取。 支援伺服器端搜尋。IMAP4 提供了一種機制給客戶使客戶可以要求伺服 器搜尋符合多個標準的資訊。在這種機制下用戶端就無需下載郵箱中所 有資訊來完成這些搜尋。 支援一個定義良好的擴充功能機制。吸取早期 Internet 協定的經驗,IMAP 的擴充功能定義了一個明確的機制。很多對於原始協定的擴充功能已被 提議並廣泛使用。無論使用 POP3 還是 IMAP4 來獲取訊息,用戶端使用 SMTP 協定來發送。郵件客戶可能是 POP 用戶端或者 IMAP 用戶端,但 都會使用 SMTP。


封包的解析 ※(此為登入信箱伺服器的驗證圖,SMTP、POP3、IMAP 伺服器都是相 同圖示) 以下我將利用收信送信的流程來解讀封包的傳遞過程: 首先我在虛擬機器使用 Outlook 登入,由於我在這裡由於使用了 JUMBO 的設定,因此當要登入或進行傳送/接收時,會出現要輸入帳號密碼的 視窗,此時就是作伺服器的驗證。

不過在進行帳號驗證前,由於我們必須先確定信箱跟伺服器間的通道是 建立的,因此會由本機發出 ARP 及 DNS 封包詢問信箱伺服器的 IP 及 MAC 位址(如下圖):

緊接著由於是使用加密的傳輸,因此在這會利用 Secure Socket Layer version 2/Transport Layer Security version 1 (SSLv2/TLSv1)這兩種協定來協 助,此兩種協定用於提供數據完整性和安全性的網路通訊。它們使用加 密方法來加密數據,建立在傳輸層到應用層間。這些安全協議用於安全 的應用協議,如 HTTP,FTP、SMTP...等協議,和其他人。SSLv2/TLSv1 如同運行在傳輸層和應用層之間的一個層。在這個位置,它可以支持多 種應用層協議,通過及確保應用程序數據,然後將它發送到傳輸層。


SSLv2/TLSv1 協定運用的位置 Application HTTP

FTP

SIP

SMTP

NNTP

XMPP

LDAP

IMAP

Others

Layer

SSLV2/TLSV1

Handshake

Change Cipher Spec

Alert

Record

Transport TCP/IP Layer

然後其協定連線建立的交握模式可分為小型(Abbreviated)及完整(Full)兩 種,如下圖: Abbreviated HANDSHAKE


FULL HANDSHAKE

透過封包的解析我們可以知道這裡是採用 Full Handshake 的方式建立連 線,如下圖:

上面可以看到先進行一次三方交握然後連線伺服器,互相回應 HELLO


訊息,然後按照 SSLv2 及 TLSv1 的協定連線建立方式完成連線建立,因 此可以看到協定的 protocol 並不會是一般抓的到的 POP 或 IMAP,而是 TCP,我想是因為加密可以提供錯誤的驗證並且達成可靠的傳輸,因此 將 IMAPS 包在 TCP 封包當中,封包內所有 data 的欄位都經過加密,而 且在封包傳遞過程中並不會出現像 POP 及 IMAP 封包裡會忠實呈現帳號 密碼的缺點,因此安全性提高不少。 下圖紅框處(也就是上圖編號 25 的封包)是 IMAP 伺服器在做資料的同步 或信件的下載的時候所使用的資料封包,使用的就是上面說過的 TLSv1 協定而原本的封包協定是 IMAP,透過 TLS(版本 1.0)加以加密成長度為 289 的 Encrypted Application Data。

加下來開始寄送信件的實驗,首先在虛擬機器的 Outlook 裡撰寫信件並 且按下傳送,此時由於預設的 SMTP 伺服器也是 JUMBO 所提供的 smtp.jumbo.to,因此在傳送前一樣先透過 DNS 取得 SMTP 伺服器 IP,然 後進行帳號密碼的驗證,然後作 SMTP 的連線建立,如下圖:


我們還是可以看到在裡面一樣用 SMTP 原本的連線建立方式,但是假如 是該封包是有 data 的(無論是帳號密碼或是信件內容),都一樣會成為加 密過的 TLSv1 封包來傳送,因此可以說是將 SMTP 的交握機制包覆在 SSLv2/TLSv1 協定的交握模式下運作。

參考資料 ◎書籍 TCP/IP 通訊協定(第三版)-王振傑、陳中和 著作 ◎網站 信箱伺服器:JUMBO(http://jumbo.webaq.com/) 維基百科全書:http://zh.wikipedia.org/zh-tw/Pop3 http://zh.wikipedia.org/zh-tw/IMAP http://zh.wikipedia.org/zh-tw/SMTP SSLv2/TLSv1:http://www.vocal.com/network/ssltls.html


TCP/IP(SMTP/POP3/IMAP)