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,如需轉載請自行聯系原作者