日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

邮件服务器之POP3协议分析

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 邮件服务器之POP3协议分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

第1章. POP3概述

?

POP3全稱為Post Office Protocol version3,即郵局協議第3版。它被用戶代理用來郵件服務器取得郵件。POP3采用的也是C/S通信 模型,對應的RFC文 檔為RFC1939。 該協議非常簡單,所以我們只重點介紹其通信過程,而相關的一些概念和術語請參考RFC文檔或另外一篇文章《SMTP協議分析》

?

第2章. POP3詳解

?

2.1. 通信過程

?

用戶從郵件服務器上接收郵件的典型通信過程如下。

1) 用戶運行用戶代理(如Foxmail, Outlook Express)。

2) 用戶代理(以下簡稱客戶端)與郵件服務器(以下簡稱服務器端)的110端口建立TCP連 接。

3) 客戶端向服務器端發出各種命令,來請求各種服務(如查詢郵箱信息,下載某封郵件等)。

4) 服務端解析用戶的命令,做出相應動作并返回給客戶端一個響應。

5) 3)和4)交替進行,直到接收完所有郵件轉到步驟6),或兩者的連接被意外中斷而直接退出。

6) 用戶代理解析從服務器端獲得的郵件,以適當地形式(如可讀)的形式呈現給用戶。

其中2)、3)和4)用POP3協議通信。通信過程,可以用圖1表示。可以看出命令和響應是POP3通信的重點,我們將予以重點講述。

???????????????????????????

???????????????????????????????????????????????????????????? 圖1.POP3通信過程

?

2.2. 命令和響應

?

2.2.1. 格式

POP3的命令不多,它的一般形式是:COMMAND [Parameter] <CRLF>。

COMMAND:ASCII形式的命令名

Parameter:相應的命令參數
<CRLF>:回車換行符(0DH, 0AH)(C語言中為\r\n)

?

服務器響應是由一個單獨的命令行組成,或多個命令行組成,響應第一行“+OK”或“-ERR”開頭,然后再加上一些ASCII文本。

+OK:操作成功

-ERR:操作失敗

2.2.2. 三個狀態

POP3協議中有三種狀態,認正狀態,處理狀態,和更新狀態。命令的執行可以改變協議的狀態,而對于具體的某命令,它只能在具體的某狀態下使用,這些請參看表1和RFC193。

客戶機與服務器剛與服務器建立連接時,它的狀態為認證狀態;一旦客戶機提供了自己身份并被成功地確認,即由認可狀態轉入處理狀態; 在完成相應的操作后客戶機發出QUIT命令(具體說明見后續內容),則進入更新狀態,更新之后又重返認可狀態;當然在認可狀態下執行QUIT命令,可釋放連接。

---建立連接---|認可|--認證成 功--|處理|--執行QUIT--|更新|
|_______ -QUIT結束_________________|

?

2.2.3. 一個例子

命令和響應的格式是語法,各命令和響應的意思則是語義,各命令和各響應在時間上的關系則是同步。我們還是通過以個簡單的POP3通信過程來說明協議的這三個 要素。

C:telnet pop3.126.com 110 /* 以telnet方式連接126郵件服務器 */

S:+OK Welcome to coremail Mail Pop3 Server (126coms[3adb99eb4207ae5256632eecb8f8b4855]) /* +OK,代表命令成功,其后的信息則隨服務器的不同而不同*/

C:USER bripengandre /*采用明文認證*/

S:+OK core mail

C:PASS Pop3world /*發送郵箱密碼*/

S:+OK 654 message(s) [30930370 byte(s)] /*認證成功,轉入處理狀態*/

C:LIST 1 /*顯示第一封郵件的信息*/

S:+OK 1 5184 ./*第一封郵件 的大小為5184字節 */

C:UIDL 1 /*返回第一封郵件的唯一標識符*/

S:+OK 1 1tbisBsHaEX9byI9EQAAsd /*數字1后的長字符串就是第一封郵件的唯一標志符*/

C:RETR 1 /*下載第一封郵件*/

S:+OK 5184 octets /*第一封郵件的大小為5184字節 */

S:Receive… /*第一封郵件的具體內容 */

S:…

C:QUIT /*轉入更新狀態,接著再轉入認證狀態*/

S:+OK

C: QUIT /*退出連接*/

S:+OK core mail /*成功地退出了連接*/

對于上述的過程,補充如下幾點內容。

1) “C:”開頭的行(不包括"C:")是客戶端的輸入,而以“S:”開頭的行(不包括"S:")則是服務器的輸出。

2) 上述的命令并不一定會一次性成功,服務器會返回錯誤響應(以“-ERR”開頭),客戶端應該按照協 議規定的時序,來輸入后續的命令(或重復執行失敗的命令,或重置會話,或退出會話等等)。

3) 上述過程是示意性的,實際過程可能與其有較大不同。例如,實際過程中可能使用加密認證(MD5摘要認證)。

4) RETR下載下來的郵件可能會難以看懂,這是因為其可能使用了quoted-printable編碼或base64編碼,我們可用Foxmail等用戶代理軟件來解碼它。

?

2.2.4. 常用命令和響應

SMTP命令不區分大小寫,但參數區分大小寫,有關這方面的詳細說明請參考RFC1939。常用的命令如表 1所示。

命 令

參 數

使 用在何種狀態中

描 述

USER

Username

認證

此命令與下面的pass命令若成功,將導致狀態轉 換

PASS

Password

認證

此命令若成功,狀態轉化為更新

APOP

Name,Digest

認證

Digest是MD5消息摘要

STAT

None

處理

請求服務器發回關于郵箱的統計資料,如郵件總數和總字節數

UIDL

[Msg#](郵件號,下同)

處理

返回郵件的唯一標識符,POP3會話的每個標識符都將是唯一的

LIST

[Msg#]

處理

返回郵件的唯一標識符,POP3會話的每個標識符都將是唯一的

RETR

[Msg#]

處理

返回由參數標識的郵件的全部文本

DELE

[Msg#]

處理

服務器將由參數標識的郵件標記為刪除,由QUIT命 令執行

TOP

[Msg#]

處理

服務器將返回由參數標識的郵件的郵件頭+前n行內容,n必須是正整數

NOOP

None

處理

服務器返回一個肯定的響應,用于測試連接是否成功

QUIT

None

處理、認證

1) 如果服務器處于“處理”狀態,么將進入“更新”狀態以刪除任何標記為 刪除的郵件,并重返“認證”狀態。

2) 如果服務器處于“認證”狀態,則結束會話,退出連接

表 1 POP3的常用命令

至于響應則如2.2.1所述,由“+OK”或“-ERR”開頭,后跟一些可讀的說明和一些其它參數(對RETR,這個參數就是郵件的內容)。更詳細的說明請參考RFC1939。

轉載于:https://www.cnblogs.com/foxmin/archive/2011/10/16/2214425.html

總結

以上是生活随笔為你收集整理的邮件服务器之POP3协议分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。