`
txf2004
  • 浏览: 6867156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

POP3邮局协议的一些命令

 
阅读更多

POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信 模型,对应的RFC文 档为RFC1939。 该协议非常简单,所以我们只重点介绍其通信过程,而相关的一些概念和术语请参考RFC文档

. 通信过程

用户从邮件服务器上接收邮件的典型通信过程如下。

1) 用户运行用户代理(如Foxmail, Outlook Express)。

2) 用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连 接。

3) 客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。

4) 服务端解析用户的命令,做出相应动作并返回给客户端一个响应。

5) 3)和4)交替进行,直到接收完所有邮件转到步骤6),或两者的连接被意外中断而直接退出。

6) 用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。

其中2)、3)和4)用POP3协议通信。通信过程,可以用图1表示。可以看出命令和响应是POP3通信的重点,我们将予以重点讲述。

图片2

图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。

分享到:
评论

相关推荐

    网络协议大全

    ARP协议 PPP(Point-to-Point Protocol点到点协议 RIP协议 1.矢量距离算法 2.RIP的原理 ...POP3 邮局协议-版本3 CIP 传输协议 802.1x协议解析 X.25 协议 XKMS协议介绍及其工作原理 技术简述

    网络应用程序设计.docx

    RFC822 (7) 接收电子邮件的邮局协议是 POP3 (8) 因特网上使用最多的一种应用是 email (9) SMTP命令的一般的格式命令关键字参数&lt;CRLF&gt; (10) SMTP客户问候SMTP服务器命令格式是 HELO 发送方的主机名&lt;CRLF&gt; ...

    TCPIP协议详解(4-1)

    ARP和RARP 41 5.1 使用地址 41 5.1.1 子网寻址 41 5.1.2 IP地址 43 5.2 使用地址解析协议 44 5.2.1 ARP cache 45 5.2.2 代理ARP 47 5.2.3 反向地址解析协议 47 5.3 使用ARP命令 47 5.4 ...

    中文版RFC,共456

    RFC1957 邮局协议(POP3)执行的一些观察 RFC1962 PPP压缩控制协议 (CCP) RFC1977 PPP BSD 压缩协议 RFC1979 PPP压缩协议 RFC1981 IP 版本 6的路径MTU探索 RFC1982 序列号算法 RFC1988 有条件地授予权利给特殊的HP专利...

    RFC中文文档-txt

    RFC1957 邮局协议(POP3)执行的一些观察 RFC1962 PPP压缩控制协议 (CCP) RFC1977 PPP BSD 压缩协议 RFC1979 PPP压缩协议 RFC1981 IP 版本 6的路径MTU探索 RFC1982 序列号算法 RFC1988 有条件地授予权利给特殊的HP专利...

    KitTerm TCP终端

    这个工具我自己写了拿来学习POP3和IMAP协议的, 连接了几个主要的邮局效果还不错. 拿出来共享了. 想要源码的给我发信. 用法请自行看程序的帮助信息. 另外注意: 在命令行环境下用, 知道怎么回事的就知道了, 不知道...

    电子邮件服务器的建立及设置.docx

    电子邮件程序从邮件服务器中读取邮件时,可以使用邮局协议POP3或交互式邮件存取协议IMAP,它取决于邮件服务器支持的协议类型。配置电子邮件服务器的准备知识如下: 1.相关协议 (1)SMTP(Simple Mail Transfer ...

    rfc中文文档目录,包含部分翻译

    RFC1957 邮局协议(POP3)执行的一些观察 RFC1962 PPP压缩控制协议 (CCP) RFC1977 PPP BSD 压缩协议 RFC1979 PPP压缩协议 RFC1981 IP 版本 6的路径MTU探索 RFC1982 序列号算法 RFC1988 有条件地授予权利给特殊的...

    python制作企业邮箱的爆破脚本

    按照师傅给的任务,写了一个企业邮箱的爆破脚本,后续还有FTP,SSH等一些爆破的脚本。 我先说下整体思路: 总体就是利用python的poplib模块来从pop3服务器上交互,根据获取的相关信息,产生结果。POP3协议并不复杂,...

    TCP/IP技术大全(中文PDF非扫描版)

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    TCP-IP技术大全

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

    TCP/IP教程TCP/IP基础

    5.3 使用ARP命令 47 5.4 小结 47 第6章 DNS:名字服务器 48 6.1 域名系统概述 48 6.2 授权局 50 6.3 DNS分布数据库 50 6.4 域和区 50 6.5 Internet顶级域 51 6.6 选择一个域名服务器 52 6.7 名字服务解析过程 52 ...

    TCP/IP技术大全

    14.3 内部网关协议和外部网关协议 147 14.3.1 网关-网关协议(GGP) 147 14.3.2 外部网关协议(EGP) 147 14.3.3 内部网关协议(IGP) 148 14.4 小结 148 第五部分 网络服务 第15章 互联网打印协议 149 15.1 IPP历史 149 ...

    TCP/IP详解

    5.3 使用ARP命令 47 5.4 小结 47 第6章 DNS:名字服务器 48 6.1 域名系统概述 48 6.2 授权局 50 6.3 DNS分布数据库 50 6.4 域和区 50 6.5 Internet顶级域 51 6.6 选择一个域名服务器 52 6.7 名字服务解析过程 52 ...

    网络端口查询

    109、110端口:109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,110端口是为POP3(邮件协议3)服务开放的,POP2、POP3都是主要用于接收邮件的。 111端口:111端口是SUN公司的RPC(Remote ...

    RED HAT LINUX 6大全

    7.1.2 邮局协议 105 7.1.3 Internet邮件访问协议 106 7.2 SMTP和sendmail 106 7.2.1 Internet邮件协议 106 7.2.2 域名系统和电子邮件 107 7.2.3 sendmail的工作 110 7.2.4 sendmail的辅助文件 111 7.2.5 别名文件 ...

Global site tag (gtag.js) - Google Analytics