第 16 章 POP3
POP3 ( Post Office Protocol - Version 3 ) 郵件伺服器僅負責信件下載的相關工作, 其它處理工作交由電子郵件軟體負責。 郵件伺服器啟動後會傾聽 TCP Port 110 連線建立起來後, 郵件伺服器會傳回歡迎訊息。POP3 電子郵件軟體陸續送出指令, 郵件伺服器一一回應。
POP3 指令介紹 POP3 的指令列由『指令』與『參數』組成, 以 <CR> 加 <LF> 結尾。 指令與參數皆由可列印的 ASCII 字元組成, 兩者之間以一個空白字元隔開。
POP3 單列回應訊息 由『狀態指示碼』與『敘述文字』組成, 並以 <CR> 加 <LF> 結尾。 狀態指示碼:『+OK』代表『成功』,『-ERR』代表『錯誤』。
POP3 多列回應訊息 郵件伺服器送出第一列回覆訊息後, 便陸續送出其他敘述文字列, 最後再以一個『.』開頭的單獨列當作結尾:
POP3 各運作階段
認證階段 使用者必須通過身分認證程序。 郵件伺服器起碼得支援其中一種: 『USER』搭配『PASS』認證 『APOP』 (Authorization POP) 認證 『AUTH』 (Authorization) 認證
USER 搭配 PASS 認證 (1) 郵件軟體用 USER 指令送出者帳戶名稱, 再以 PASS 指令送出帳戶密碼:
USER 搭配 PASS 認證 (2) 伺服器回報『-ERR』訊息的情形:
APOP 認證 每次連上 POP3 伺服器, 都會取得不同的時間標記。 郵件軟體將時間標記與帳戶密碼以 MD5 (Message Digest 5) 編碼演算法處理, 產生編碼字串, 不需直接傳送密碼:
AUTH 認證 保留日後擴充『認證機制』與『信件完整性與私密性的保護機制』的彈性空間
處理階段 此階段下, 使用者可發出郵件處理指令, 要求郵件伺服器進行信件下載等工作。 郵件處理指令有: STAT、LIST 、RETR 、DELE 、NOOP 、RSET 、TOP 、UIDL
STAT (State, 狀態) 詢問郵件伺服器:信箱內共有幾封信、 共佔多少儲存空間。 所回應的訊息格式為: 如:
LIST (列示) 傳回每封信件的長度。
RETR (Retrieve, 下載信件) 下載指定的信件內容。 RETR 信件編號:
DELE (Delete, 刪除) 將指定的信件標示成『刪除』。 DELE 信件編號
NOOP (No Operation, 無動作) 是一個不附任何參數, 也沒有任何作用的指令。
RSET (Reset, 重設) 將所有標示為『刪除』的信件, 全部還原成尚未標示成刪除的狀態。
TOP (最頂端的資料) 尋找指定的信件, 並傳回該信件最前面數列的內容。 TOP 信件編號 列數:
UIDL (Unique-ID Listing, 識別碼列示) 將指定信件的識別碼列出來。 UIDL [信件編號] :
更新階段 完成所有信件下載工作後, 郵件軟體便可送出 QUIT 指令, 進入更新階段。 郵件伺服器會刪除掉『已標示刪除』的信件, 傳回『再見』訊息, 結束『更新』階段。
下載郵件實例 (1)
下載郵件實例 (2)
POP3 伺服器的其它功能 - 暫存郵件 以 RETR 指令下載一封信件後, 不再以 DELE 指令將該信件標示成刪除, 而讓信件保留在伺服器上。 為防止郵件信箱空間不夠用, 大多數的郵件伺服器都會設定信箱容量的上限值、 或定期刪除信件的機制。
POP3 伺服器的其它功能 - 限制服務對象 發信伺服器會依據使用者電腦的 IP 位址或發信人的電子郵件地址, 決定是否要轉送信件。 例如 ISP 機房裡的伺服器, 服務對象通常只限於它的用戶。 ( 以上是指支援 SMTP 的 POP3 伺服器 )