協議 POP3簡單郵件傳輸協議

2021-06-15 02:20:25 字數 2978 閱讀 6557

post office protocol - version 3  郵局協議版本3 rfc1939

user username    認可

pass password    認可  執行成功則狀態轉換

apop name,digest  認可  一種安全傳輸口令的辦法,執行成功導

致狀態轉換,請參見rfc 1321

stat        處理  請求server回送郵箱統計資料,如郵件數、郵件總位元組數

uidl n       處理  server返回用於該指定郵件的唯一標識,如果沒有指定,返回所有的

list n       處理  server返回指定郵件的大小等

retr n       處理  server返回郵件的全部文字

dele n       處理  server標記刪除,quit命令執行時才真正刪除

rset        處理  撤消所有的dele命令

top n,m       處理  返回n號郵件的前m行內容,m必須是自然數

noop        處理  server返回乙個肯定的響應

quit            client希望結束會話。如果server處於"處理"狀態,則現在進入"更新"狀態,

刪除那些標記成刪除的郵件。如果server處於"認可"狀態,

則結束會話時server不進入"更新"狀態

pop3郵件伺服器通過偵聽tcp埠110提供pop3服務。客戶端軟體讀取郵件之前,需要事先與伺服器建立tcp連線。連線成功後,pop3伺服器會向該客戶端傳送確認訊息。然後客戶端根據伺服器回送的資訊決定下一步的操作。

客戶端每次向pop3伺服器傳送命令後,都要等待伺服器響應,並處理接收的資訊,然後再接著傳送下乙個命令,如此往復多次,一直持續到連線終止。這個過程經歷了三個狀態:授權(authorization)狀態、操作(transaction)狀態和更新(update)狀態。

pop3

伺服器回送的響應資訊由乙個狀態碼和乙個可能跟有附加資訊的命令組成。所有響應

也以回車換行結束(傳送命令也是)

。狀態碼有兩種:「確定」(「

+ok」)和「失敗」(「

-err

」)。對於客戶端傳送的每一條命令,伺服器都會回送狀態碼。因此在客戶端程式中,可以通過伺服器回送的狀態碼對應的字元,即判斷第乙個字元是「

+」號還是「

-」號來確定伺服器是否正確響應客戶端傳送的命令。

1. 授權狀態

客戶端首先與pop3伺服器建立tcp連線,伺服器接收後傳送乙個單行的確認資訊。例如「+ok pop3 server ready」,此時pop3會話就進入了授權狀態。在授權狀態,客戶需要向伺服器傳送使用者名稱和密碼進行確認。

假設用c表示客戶端(client),s表示伺服器端(server),下面是客戶端接收郵件前需要與伺服器傳輸的資訊。

1) 傳送使用者名稱。

語法形式:user 《使用者名稱》

功能:將客戶的使用者名稱傳送到伺服器。

伺服器返回:+ok正確的使用者名稱;-err錯誤的使用者名稱。

示例:c:user [email protected]

s:+ok welcome on this server.

上述兩行**的含義為:客戶端傳送「user [email protected]」,伺服器端回送資訊「+ok welcome on this server.」。

2) 使用者名稱確認成功後,需要輸入密碼。

語法形式:pass 《密碼》

功能:將客戶的密碼傳送給伺服器。

伺服器返回:+ok正確的使用者名稱;-ok錯誤的使用者名稱。

示例:c:pass ***** 

s:+ok myname logged in at 19:04

授權成功後,進入操作狀態。

2. 操作狀態

客戶端向伺服器成功確認了自己的身份後,pop3會話將進入操作狀態,客戶就可以執行pop3命令進行相應的操作。對於每個命令,伺服器都會返回應答資訊。下面是在操作狀態中使用的命令。

(1) stat命令

語法形式:stat

功能:從伺服器中獲取郵件總數和總位元組數。

伺服器返回:郵件總數和總位元組數。

示例:c:stat

s:+ok 2 320

(2) list命令

語法形式:list

功能:從服務中獲得郵件列表和大小。

伺服器返回:列出郵件列表和大小。

示例:c:list(

list命令針對pop3郵箱會首先返回+ok 郵件總數 郵件總大小,但對於pop郵箱則只返回+ok狀態字元,因此最好還是通過stat來判斷郵件總數)

s:+ok 2 messages (320 octets)

s:1  120

s:2  200

s: .

(3) retr命令

語法形式:retr  《郵件的序號》 

功能:從伺服器中獲得乙個郵件。

伺服器返回:+ok成功;-err錯誤。

示例:c:    retr 1

s:+ok 120 octets

s:《伺服器傳送信件1內容》

s: .

注意,這裡的「.」是單獨傳送的。

(4) dele命令

語法形式:dele 《郵件的序號》 

功能:伺服器將郵件標記為刪除,當執行quit命令時才真正刪除。(

可以通過rset 命令進行撤消刪除 )

伺服器返回:+ok成功;-err錯誤。

示例:c:dele 1

s:+ok 1 deleted

當客戶傳送quit命令時,會話進入更新狀態。

3. 更新狀態

當客戶在操作狀態下傳送quit命令後,會話進入更新狀態。

quit命令

語法形式:quit 

功能:關閉與伺服器的連線。

伺服器返回:+ok;-err。

示例:c:quit

s:+ok

然後伺服器自動斷開與該客戶端的tcp連線。

郵件的未讀和已讀

基於POP3協議收取郵件

收取郵件就是編寫乙個mua作為客戶端,從mda把郵件獲取到使用者的電腦或者手機上。收取郵件最常用的協議是pop協議,目前版本號是3,俗稱pop3。python內建乙個poplib模組,實現了pop3協議,可以直接用來收郵件。注意到pop3協議收取的不是乙個已經可以閱讀的郵件本身,而是郵件的原始文字,...

pop3協議簡介

8學院 vb教程 發布日期 2008年07月09日 將本文收藏到 收藏到本地 在internet,pop3 postofficeprotocol3 協議通常被用來接收電子郵件。這個協議很容易學,因為它只包含12個命令 其中有3個你完全可以忽略它們的存在 這些命令被客戶端計算機用來傳送給遠端伺服器。反...

POP3協議分析

pop3協議分析 pop3全稱為post office protocol version3,即郵局協議第3版。它被使用者 用來郵件伺服器取得郵件。pop3採用的也是c s通訊模型,對應的rfc文件為rfc1939。該協議非常簡單,所以我們只重點介紹其通訊過程,而相關的一些概念和術語請參考rfc文件或...