1. 程式人生 > >POP3協議備註

POP3協議備註

【參考資料】
【1】https://tools.ietf.org/html/rfc1939
【2】https://baike.baidu.com/item/POP3/175122?fr=aladdin
【3】https://max.book118.com/html/2017/0712/121958968.shtm

一 基本概念
  1. POP3 (Post Office Protocol - Version 3) 郵局協議版本3,RFC1939定義,用於客戶端向郵件伺服器接受郵件;在POP3指定的年代,人們認為個人電腦儲存郵件檔案是奢侈的。
  2. POP3 基於TCP協議,採用110埠
  3. POP3 的每個命令採用關鍵字 + 若干引數的形式,以CRLF結尾
二 協議流程
認證狀態 The AUTHORIZATION State
  1. 當客戶端與服務端建立了TCP連結,服務端會發送一條確認訊息,例如
    S: +OK POP3 server ready
    此時POP3會話即進入“認證狀態” 。

  2. 進入該狀態後,客戶端可採用兩種方式進行認證:
    2.1 使用者名稱/密碼:
    1)客戶端傳送USER命令 --》 服務端以確認狀態響應
    2)客戶端收到確認響應後傳送PASS命令
    3)若服務端返回失敗 --》 客戶端傳送QUIT命令終止會話

    2.2 APOP:
    1)客戶端向伺服器傳送APOP命令,引數包括[email protected]

    以及一個加密串

操作狀態 The TRANSACTION State
  1. 當客戶端完成認證後,進入操作狀態,POP3伺服器會鎖住並開啟相應的郵箱;
  2. 該狀態下的一些常用命令:

2.1 STAT
引數: 無
功能: 返回郵箱統計資訊,如郵件數目和總位元組數
例子:

C: STAT
S: +OK 2 320

2.2 LIST
引數: 訊息編號(可選),不包含標記為刪除的郵件
功能: 返回郵件數量及大小
例子:

C: LIST
注:無引數情況下返回全部訊息,分多次返回,如下例(320 = 120 + 200)
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
注:有引數情況下,返回指定訊息
C: LIST 2
S: +OK 2 200
注:也可能返回錯誤訊息
C: LIST 3
S: -ERR no such message, only 2 messages in maildrop

2.3 RETR
引數: 郵件編號(必選),不包含標記為刪除的郵件
功能: 返回郵件的全部文字資訊
例子:

C: RETR 1
S: +OK 120 octets
S: the POP3 server sends the entire message here

備註:將郵件的文字資料解析出來,得到如主送、抄送、正文(文字或HTML)等不屬於POP3協議,包括附件的解析遵循MIME規範。

2.4 DELE
引數: 郵件編號(必選),不包含標記為刪除的郵件
功能: 將某個郵件標記為刪除
例子:

C: DELE 1
S: +OK message 1 deleted
注:也可能返回錯誤訊息如下
C: DELE 2
S: -ERR message 2 already deleted

2.5 NOOP
引數: 無
功能: 什麼都不做,只要求服務端返回確認響應
例子:

C: NOOP
S: +OK

2.6 RSET
引數: 無
功能: 撤銷全部郵件的刪除標記
例子:

C: RSET
S: +OK maildrop has 2 messages (320 octets)

更新狀態 The UPDATE State
  1. 當客戶端傳送QUIT命令後,服務端進入更新狀態
  2. 例如服務端操作階段在接收DELE命令後,真正執行刪除是在更新階段