天天看點

pop3的基本流程

1."确認"狀态 

TCP連接配接由POP3客戶打開,POP3伺服器發送一個單行的确認。這個消息可以是由CRLF結 

束的任何字元。例如,它可以是:  

S: +OK POP3 server ready 

注意:這個消息是一個POP3應答。POP3伺服器應該給出一個"确定"響應作為确認。 

此時POP3會話就進入了"确認"狀态。此時,客戶必須向伺服器證明它的身份。在文檔中介紹 

兩種可能的處理機制,一種是USER和PASS指令,另一種是在後面要介紹的APOP指令。 

用USER和PASS指令進行确認過程,客戶必須首先發送USER指令,如果POP3伺服器以"确認"狀 

态碼響應,客戶就可以發送PASS指令以完成确認,或者發送QUIT指令終止POP3會話。如果POP3服 

務器傳回"失敗"狀态碼,客戶可以再發送确認指令,或者發送QUIT指令。 

當客戶發送了PASS指令後,伺服器根據USER和PASS指令的附加資訊決定是否允許通路相應的 

存儲郵件。 

一旦伺服器通過這些資料決定允許客戶通路儲存郵件,伺服器會在郵件上加上排它鎖,以防 

止在進入"更新"狀态前對郵件的改變。如果成功獲得了排它鎖,伺服器傳回一個"确認"狀态碼。 

會話進入"操作狀态",同時沒有任何郵件被标記為删除。如果郵件因為某種原因不能打開(例如, 

排它鎖不能獲得,客戶不能通路相應的郵件或者郵件不能進行文法分析),伺服器将傳回"失敗" 

狀态碼。在傳回"失敗"狀态碼後,伺服器會關閉連接配接。如果伺服器沒有關閉連接配接,客戶可以重新 

發送确認指令,重新開始,或者發送QUIT指令。 

在伺服器打開郵件後,它為每個消息指定一個消息号,并以八進制表示每個消息的長度。第 

一個消息被指定為1,第二個消息被指定為2,以此類推,第N個消息被指定為N。在POP3指令和響應

中,是以的消息号和長度以十進制表示。 

2. "操作"狀态 

一旦客戶向伺服器成功地确認了自己的身份,伺服器将鎖住并打開相應的郵件,這時POP3會 

話進入"操作"狀态。現在客戶可以重複下面的POP3指令,對于每個指令伺服器都會傳回應答。最 

後,客戶發送QUIT指令,會話進入"更新"狀态。 

3."更新"狀态 

當客戶在"操作"狀态下發送QUIT指令後,會話進入"更新"狀态。(注意:如果客戶在"确認"狀 

态下發送QUIT後,會話并不進入"更新"狀态。) 

如果會話因為QUIT指令以外的原因中斷,會話并不進入"更新"狀态,也不從伺服器中删除任何 

信件。

見下面的例子:

recv  buf0 100

 "+OK infosec.com.cn POP MDaemon 6.8.5 準備好 <MDAEMON-F200601201105.AA05442"

send  buf1 11

 "USER libh\r\n"

recv  buf2 24

 "+OK libh... 收信人确定\r\n"

send  buf3 13

 "PASS 112358\r\n"

recv  buf4 59

send  buf5 6

 "STAT\r\n"

recv  buf6 9

 "+OK 0 0\r\n"

send  buf7 6

 "QUIT\r\n"

recv  buf8 63

本文轉自 fish_yy 51CTO部落格,原文連結:http://blog.51cto.com/tester2test/137531,如需轉載請自行聯系原作者