当前位置:文档之家› SMTP与POP协议简析

SMTP与POP协议简析

SMTP、POP协议简析

作者:李鹏博

时间:2016/06

1.SMTP协议与POP协议说明

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

POP(Post Office Protocol)即邮局协议,用于电子邮件的接收。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。本文只介绍POP3。

2.SMTP协议简析

通过抓包,可以看到清晰的服务器与客户端的交流过程。如下图。

如上图,将整个流程分为三部分:握手阶段、认证阶段、发送数据阶段。其中TCP三次握手在上图中未体现,握手成功后,进入认证阶段。

SMTP命令字说明

HELO客户端为标识自己的身份而发送的命令(通常带域名)

EHLO使服务器可以表明自己支持扩展简单邮件传输协议(ESMTP) 命令。

MAIL FROM标识邮件的发件人;以MAIL FROM: 的形式使用。

RCPT TO标识邮件的收件人;以RCPT TO: 的形式使用。

DATA客户端发送的、用于启动邮件内容传输的命令。

RSET使整个邮件的处理无效,并重置缓冲区。

QUIT终止会话。

对于服务器的每个回复,都有一个返回码,这个返回码标志着上次的请求操作完成状态。如果第一个数字是2表示操作成功;3表示操作正在进行;5表示操作失败。

握手阶段

认证阶段

握手成功后,邮件服务器(上面示例是163的邮件服务器)会发送欢迎连接信息。然后是客户端HELO(或EHLO),向服务器标识用户身份;接下来进行认证操作。认证成功后,客户端告诉服务器这封邮件从哪个邮箱来,到哪个邮箱去,mail from只有一个,但是recpt to 后面可以跟多个收件人地址。成功后,客户端请求发送邮件数据。

数据发送阶段

服务器回复DATA命令后,会有一个结束符说明。如上图,就是以.结束邮件DATA。其中即为“\r\n”;

数据内容规格一般是按照MIME协议生成,具体参见《MIME协议的内容分析及解析说明》。

数据发送完成后客户端以QUIT命令主动退出。邮件发送完成,流程结束。

3.POP协议简析

POP命令字说明

USER <用户名> 用户登录。

PASS <密码> 发送用户密码。

STAT返回邮箱列表(邮件数量、字节)。

LIST 返回邮件数量和每个邮件的大小。

UIDL 返回邮件的唯一标识符,pop3会话的每个标识符都将是唯一的。

RETR <邮件编号> 传回指定的邮件,以只有一个“.”号的行结束。

QUIT关闭连接。

服务器命令回应的第一行以“+OK”或“-ERR”(+OK指成功,-ERR指失败)指出相应的操作状态是成功还是失败。

握手阶段

邮件客户端与服务器的110端口(POP默认端口)三次握手连接。

认证阶段

客户端以USER和PASS关键字带参数完成认证。如果不勾选SSL,认证过程为明文。检查阶段

认证结束后,客户端发起STAT请求,服务器返回邮件总数量和总大小。(该处总数不包括已归档的邮件)

客户端发起LIST请求,服务器返回每封邮件的大小。以.结尾。

之后,客户端发送UIDL 请求,服务器返回每封邮件的唯一ID,此时,客户端会对本地已有邮件和收到的邮件列表进行比较。发现没有的,会收取该邮件。

收取阶段

如上图,客户端发送RETR 192来收取第192封邮件。

需要说明的是,有时,客户端还会发送TOP命令来获取某封邮件的包头信息。具体作用不明。

收取完成后,客户端主动退出,断开连接。

4.其他说明

.以及.都是指一个只有“.”的行。其中在代码中即是“\r\n”。

SMTP协议服务器默认监听端口是25,POP协议服务器默认监听端口是110。

SMTP和POP在不勾选SSL的情况下,都是明文传递,有泄密风险。

相关主题