POP3協議分析

POP3協議命令原始碼及工作原理 
一 簡介: 
1. POP適用於C/S結構的脫機模型的電子郵件協議,目前已發展到第三版,稱POP3。脫機 模型即不能在線操作,不像IMAP4(netscape支持IMAP4) 
2. 當客戶機與服務器連接並查詢新電子郵件時,被該客戶機指定的所有將被下載的郵件 都將被程序下載到客戶機,下載後,電子郵件客戶機就可以刪除或修改任意郵件,而無需與電子郵件服務器進一步交互。 
3. POP3客戶向POP3服務器發送命令並等待響應,POP3命令採用命令行形式,用ASCII碼 表示。 服務器響應是由一個單獨的命令行組成,或多個命令行組成,響應第一行以ASCII文本+ OK或-ERR指出相應 的操作狀態是成功還是失敗
4. 在POP3協議中有三種狀態,認可狀態,處理狀態,和更新狀態。 當客戶機與服務器建立聯繫時,一旦客戶機提供了自己身份併成功確認,即由認可狀態轉入處理狀態, 在完成相應的操作後客戶機發出quit命令,則進入更新狀態,更新之後最後重返認可狀態。如下圖 
等待連接 身份確認 quit命令 
—— |認可|————— |處理|——————|更新| 
|__________________________________| 
重返認可狀態 
5. 認可狀態的命令語句 
一般情況下,大多數現有的POP3客戶與服務器執行採用ASCII明文發送用戶名和口令,在 認可狀態等 待客戶連接的情況下,客戶發出連接,並由命令user/pass對在網絡上發送明文用戶名和 口令給服務器 
進行身份確認。一旦確認成功,便轉入處理狀態。爲了避免發送明文口令的問題,有一種新的認證方法,命令爲APOP,使用APOP,口令在 傳輸之前被加密。 當第一次與服務器連接時,POP3服務器向客戶機發送一個ASCII碼問候,這個問候由一串字符組成對每個客戶機是唯一的,與當時的時間有關,然後,客戶機把它的純文本口令附加到從服務器接 收到的字符串之後,然後計算出結果字符串的MD5單出函數消息摘要,客戶機把用戶名與MD5消息摘要作爲APOP命令的參數一起發送出去。目前,大多數windows上的郵件客戶軟件不支持APOP命令,qpopper支持。 
6. POP3命令碼如下: 
命令 參數 狀態 描述 
------------------------------------------ 
USER username 認可 此命令與下面的pass命令若成功,將導致狀態轉換 
PASS password 認可 
APOP Name,Digest 認可 Digest是MD5消息摘要 
------------------------------------------ 
STAT None 處理 請求服務器發回關於郵箱的統計資料,如郵件總數和總字節數 
UIDL [Msg#] 處理 返回郵件的唯一標識符,POP3會話的每個標識符都將是唯一的 
LIST [Msg#] 處理 返回郵件數量和每個郵件的大小 
RETR [Msg#] 處理 返回由參數標識的郵件的全部文本 
DELE [Msg#] 處理 服務器將由參數標識的郵件標記爲刪除,由quit命令執行 
RSET None 處理 服務器將重置所有標記爲刪除的郵件,用於撤消DELE命令 
TOP [Msg#] 處理 服務器將返回由參數標識的郵件前n行內容,n必須是正整數 
NOOP None 處理 服務器返回一個肯定的響應 
------------------------------------------ 
QUIT None 更新 
a.客戶機希望結束這次會話 
b.如果服務器處於‘處理’狀態,那麼將進入‘更新’狀態以刪除任何標記爲刪除的郵 
件 
c.導致由處理狀態到更新狀態,又重返認可狀態的轉變 
d.如果這個命令發出時服務器處於‘認可’狀態,則結束會話,不進行‘更新’狀態。

7. POP3協議在TCP/110端口上等待客戶連接請求。 
8. 若密碼爲明文,我如何監聽? 
下面的命令在服務器運行後在屏幕上顯示POP3連接及命令發送的過程: 
#sniffit -a -A. -p 110 -b -s 192.169.11.12 
note: 192.168.11.12是客戶機IP地址 
你需要事先安裝sniffit這個端口監聽程序 
9. 考慮這種情況,若客戶在收取郵件時,假定爲15封信等待接收,但由於線路問題,收 
到第10封時斷線了, 
爲什麼下次收時仍然從第一封開始,也即爲什麼前10封沒有被從服務器上刪除掉? 
任何郵件的刪除都必須在quit命令發出後對已標記爲刪除的郵件執行刪除操作,由於中 
途斷線,仍處於 處理狀態,沒有機會執行quit命令以進行狀態轉換。 

10. pop3 session is locked by another session, please wait 10 minutes then t 
ry again. 
由於非正常操作引起POP3程序內部機制鎖住該次會話。 
11. Foxmail與OE(outlook express)的處理機制的不同。 
a. 假定服務器上有三封郵件等待客戶機接收。用foxmail與OE的不同之處在於 
foxmail每收一封標記刪除一封,而OE則等全部接收完後再全部標記爲刪除最後執行qui 
t命令。 
Foxmail OE 
------------------------------- 
retr 1 retr 1 
dele 1 retr 2 
retr 2 retr 3 
dele 2 dele 1 
retr 3 dele 2 
dele 3 dele 3 
quit quit 
b. Foxmail的遠程郵件管理是非常優秀的管理工具,假定服務器上有三封信,對第一封 
,我們不想接收 
想從服務器直接刪除;對第二封,想接收但不刪除,對第三封,這一次不想接收,分別 
標記後 
最後foxmail發出的命令是 
dele 1 
retr 2 
quit 

c. 若沒有foxmail,正好有幾封很大的信堵住了,我不想接收,想直接刪除它,或者想 
查看這兩封是誰發的? 
直接在windows的DOS窗口下用命令行操作,如: 
# telnet my.isp.net 110 
user username 
pass password 
list

dele 3 
dele 5 
quit 

最後關於UIDL說說:

郵件服務器 UIDL排序

1.由早到晚,從1開始往後排,收到郵件的時間越晚,UIDL標識值越大
pop3.sina.com.cn ,   pop.21cn.com

2.由晚到早,從1開始往後排,收到郵件的時間越早,UIDL標識值越大,最新的一封郵件標識爲1

pop.163.com ,pop.163.net   pop.tom.com ,pop.netease.com



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章