2009年4月2日 星期四

RFC1939-POP3協定摘要

POP3伺服器
1.POP3伺服器偵聽 TCP 埠口 110。
2.當客戶主機需要使用服務時,它將與伺服器建立TCP連接。
3.當連接建立,POP3發送確認消息。客戶和POP3服務器相互(分別)交換命令和回應,這一過程一直要持續到連接終止。

POP3伺服器和客戶端的運作
1.在生命周期中,POP3會話有幾個不同的狀態(確認、操作及更新)。
2.一旦TCP連接被打開,而且POP3服務器發送了確認信息,此過程就進入了"確認"狀態。在此狀態中,客戶必須向POP3服務器確認自己是其的客戶。一旦確認成功,服務器就獲取與客戶郵件相關的資源,此時這一過程進入了"操作"狀態。在此狀態中,客戶提出服務,當客戶發出QUIT命令時,此過程進入了"更新"狀態。在此狀態中,POP3服務器釋放在"操作"狀態中取得的資源,並發送消息,終止連接。

POP3命令及訊息的交換
1.POP3命令由一個命令和一些參數組成。
2.所有命令以一個CRLF結束。
3.命令和參數由可顯示的ASCII字元組成,由空格間隔。
4.命令一般是三到四個字母,每個參數長度可達40個字元長度。
5.在發送第一行回應和一個CRLF之後,任何的附加信息行發送也由CRLF結束。
6.當所有信息發送結束時,發送最一行,包括一個結束字符(十進制碼46,也就是".")和一個CRLF。
7.如果信息中的任何一行以結束字符開始,此行就是通過在那一行預先裝入結束而進行字符填充的。因此,多行回應由五個CRLF.CRLF 結束。
8.當檢測多行回應時,客戶檢測以確認此行是否以結束字符開始。如果是的,而且其的字符不是CRLF,此行的第一個字符(結束字符)將被拋棄;如果其緊跟CRLF,從POP服務器來的回應終止,包括.CRLF 的行也不被認為是多行回應的一部分了。

一、基礎的POP3命令:

指令名稱

說明狀態
USER name送出帳號名稱確認
PASS string 送出帳號密碼確認
QUIT 結束POP3連線作業確認、操作、更新
STAT傳回信件狀況操作
LIST [msg]

列出信件大小

【參數】信件編號

操作
RETR msg

傳回信件內容

【參數】信件編號

操作
DELE msg

刪除指定信件

【參數】信件編號

操作
NOOP NOOP操作
RSET重設信件狀態操作


二、可選的POP3命令:
指令名稱說明
狀態
APOP name digest

使用 name digit md5 方式取代 USER/PASS 方式作確認

【參數】指定郵箱的字串和MD5摘要串。
【限制】僅在POP3確認的"確認"狀態中使用。

確認
TOP msg n

傳回信件指定行數的內容

【參數】一個是未被標記為刪除的信件數,另一個是非負數(必須提供),如果要求的行數比信件體中的行數大,會發送整個信件。

操作
UIDL [msg]

傳回信件序號

【參數】信件數(可選)。如果給出信件數,不包括被標記為刪除的信件。

操作


三、POP3 回應:
1.POP3回應由一個狀態碼和一個可能跟有附加信息的命令組成。
2.所有回應也是由 CRLF 結束。
3.有兩種狀態碼,"成功" ("+OK") 和 "失敗" ("-ERR")。
4.對特定命令的回應是由許多字符組成的。
5.除了STAT,LIST和UIDL的回應外,其它命令的回應均為"+OK"和 "-ERR"。

參考文件 http://www.ietf.org/rfc/rfc1939.txt

沒有留言: