网络分析学习资料 -10bet十博欢迎您

email电子邮件应用分析

一、 邮件传输协议简介

1. 邮件传输概念

邮件服务是internet上最常用的服务之一,它提供了与操作系统平台无关的通信服务,使用邮件服务,用户可通过电子邮件在网络之间交换数据信息。邮件传输包括将邮件从发送者客户端发往邮件服务器,以及接收者从邮件服务器将邮件取回到接收者客户端。

2. smtp和pop3

在tcp/ip协议簇中,一般使用smtp协议发送邮件,pop3协议接收邮件。
smtp,全称simple message transfer protocol,中文名为简单邮件传输协议,工作在tcp/ip层次的应用层。smtp采用client/server工作模式,默认使用tcp 25端口,提供可靠的邮件发送服务。
pop3,全称post office protocol 3,中文名为第三版邮局协议,工作在tcp/ip层次的应用层。pop3采用client/server工作模式,默认使用tcp 110端口,提供可靠的邮件接收服务。
3. smtp和pop3的工作原理
发送和接收邮件都需要以下两个组件:用户代理(ua,常用的是foxmail或outlook)和smtp/pop3服务器。

smtp工作原理:

1) 客户端使用tcp协议连接smtp服务器的25端口;
2) 客户端发送helo报文将自己的域地址告诉给smtp服务器;
3) smtp服务器接受连接请求,向客户端发送请求账号密码的报文;
4) 客户端向smtp服务器传送账号和密码,如果验证成功,向客户端发送一个ok命令,表示可以开始报文传输;
5) 客户端使用mail命令将邮件发送者的名称发送给smtp服务器;
6) smtp服务器发送ok命令做出响应;
7) 客户端使用rcpt命令发送邮件接收者地址,如果smtp服务器能识别这个地址,就向客户端发送ok命令,否则拒绝这个请求;
8) 收到smtp服务器的ok命令后,客户端使用data命令发送邮件的数据。
9) 客户端发送quit命令终止连接。

pop3工作原理:

1) 客户端使用tcp协议连接邮件服务器的110端口;
2) 客户端使用user命令将邮箱的账号传给pop3服务器;
3) 客户端使用pass命令将邮箱的账号传给pop3服务器;
4) 完成用户认证后,客户端使用stat命令请求服务器返回邮箱的统计资料;
5) 客户端使用list命令列出服务器里邮件数量;
6) 客户端使用retr命令接收邮件,接收一封后便使用dele命令将邮件服务器中的邮件置为删除状态;
7) 客户端发送quit命令,邮件服务器将将置为删除标志的邮件删除,连接结束。
(注:客户端ua可以设定将邮件在邮件服务器上保留备份,而不将其删除。)

二、 跟踪分析email电子邮件通讯过程

1. 分析email的具体流程

1) 发送邮件

我们使用科来网络分析系统捕获并分析一个使用smtp协议的发送邮件过程,客户端主机名为“wangym”,客户端用户代理使用foxmail 5.0 beta2,邮件发送者test1@colasoft.com,邮件接收者test2@colasoft.com。
在客户端主机上打开科来网络分析系统。为避免数据干扰,设定一个过滤器,只捕获本机的数据通讯。
打开客户端主机上的foxmail 5.0 beta2,新建两个邮件账户,test1@colasoft.com和test2@colasoft.com,设置好账户的smtp/pop3服务器地址、用户名、密码等信息并测试成功。
在科来网络分析系统中开始数据捕获,在foxmail中使用test1@colasoft.com向test2@colasoft.com发送一封邮件,邮件原始信息如图1所示。发送完成后即可在科来网络分析系统对刚才的邮件发送操作进行分析(为避免数据包干扰,分析时可停止捕获。)。
注意:此文里提到的发送邮件均指使用tcp 25端口的标准smtp通信,对于非25端口的邮件发送,用户可在“工程->高级分析模块->邮件分析模块->smtp设置->smtp端口”处进行更改,系统默认为25,当smtp服务器有多个端口时,多个端口之间用分号分隔,如25;125。

图1 发送邮件的原始信息

图2 使用smtp协议发送邮件的原始数据包

图2所示的是科来网络分析系统对上面发送邮件操作的报文跟踪,详细信息如下:
a. 第1、2、3个数据包是tcp连接的三次握手数据包,连接的双方是本机与域名ns1.colasoft.com对应的ip地址;
b. 从第4个数据包开始,客户端开始通过tcp协议连接smtp服务器,并与smtp服务器进行命令的交互,及邮件的发送,具体的交互过程详见图3以及对图3的分析。

图3 使用smtp协议发送邮件的原始数据流

图3所示的是科来网络分析系统对上面发送邮件操作的tcp原始数据流重组信息。具体分析数据流重组信息,可以得到上面发送邮件操作的详细过程如下:
a. 客户端使用ehlo(或helo)命令向smtp服务器发送helo报文,启动邮件传输过程,并同时将客户端地址发送smtp服务器端,此处为wangym;
b. smtp服务器接受了客户端的连接请求,并请求输入账号和密码进行认证;
c. 客户端向服务器端传送账号和密码;
d. smtp服务器通过验证,客户端使用mail命令将邮件发送者的名称传送给smtp服务器;
e. 客户端使用rcpt命令将邮件接收者的名称传送给smtp服务器;
f. 客户端使用data命令传送邮件数据给smtp服务器;
g. 数据传送完毕后,客户端发送quit命令关闭连接。
注意:
 smtp传输使用的是base64编码,图4中auth login下的“dgvzddfay29syxnvznquy29t”是当前使用账号对应的base64编码;
 图3所示的smtp数据流中,客户端向smtp服务器传送了两次发件人名称和收件人名称,可能的原因有两种:
a. 网络的延迟较大,客户端在规定时间内未收到smtp服务器的响应,认为传送发件人名称和收件人名称的数据包丢失而进行的重传;
b. 客户端主机上的防病毒软件在邮件发送前对邮件进行的检测,如norton antivirus就会进行这种检测,禁用此检测功能即可避免此种情况的发生。

2) 接收邮件

我们再使用科来网络分析系统捕获并分析一个使用pop3协议的接收邮件过程,客户端主机名为“wangym”,客户端用户代理使用foxmail 5.0 beta2,邮件接收者test2@colasoft.com。
在客户端主机上打开科来网络分析系统。与上面相同,设定一个过滤器,只捕获本机的数据通讯,选择高级分析模块,在邮件分析模块的常规设置中,将保存邮件选择为“是”,并选择好邮件的保存位置,如图1所示。
在科来网络分析系统中开始数据捕获,同时在foxmail中选中test2@colasoft.com,并收取邮件。接收完成后即可在科来网络分析系统对刚才的邮件接收操作进行分析(为避免数据包干扰,分析时可停止捕获。)。
注意:此文里提到的接收邮件均指使用tcp 110端口的标准pop3通信,对于非110端口的邮件发送,用户可在“工程->高级分析模块->邮件分析模块->smtp设置->pop3端口”处进行更改,系统默认为110,当smtp服务器有多个端口时,多个端口之间用分号分隔,如110;1110。

图4所示的是科来网络分析系统对上面接收邮件操作的报文跟踪。
a. 1、2、3数据包是tcp连接的三次握手数据包,连接的双方是本机与域名ns1.colasoft.com对应的ip地址;
b. 从第4个数据包开始,客户端开始通过tcp协议连接pop3服务器,并与pop3服务器进行命令的交互,及邮件的接收,具体的交互过程详见图4以及对图4的分析。

图4 使用pop3协议接收邮件的原始数据包

图5所示的是科来网络分析系统5.0对上面接收邮件操作的tcp原始数据流重组信息。具体分析其数据流重组信息,可以得到上面接收邮件操作的详细过程:
a. 客户端使用user命令向pop3服务器传送用户账号test2@colasoft.com;
b. 客户端使用pass命令向pop3服务器传送用户密码1234567890;
c. pop3服务器通过验证,向客户端发送一个ok报文;
d. 客户端使用stat命令请求pop3服务器返回邮箱的统计资料信息,pop3服务器返回当前有一封邮件;
e. 客户端使用list命令列出pop3服务器里的邮件数量,当前为1封邮件;
f. 客户端使用retr命令接收邮件,接收后使用dele命令将邮件pop3服务器中的邮件置为删除状态;
g. 客户端发送quit命令,邮件服务器将将置为删除标志的邮件删除,连接结束。
注意:
 pop3直接使用明文传输;
 图5中最后部分(由于篇幅,图5中未列出),直接重组出了接收到的邮件内容,此信息不经过任何编码或加密处理,直接为明文方式,与图1所示的邮件原始信息一致。

图5 使用pop3协议接收邮件的原始数据流

3) smtp/pop3命令码

通过smtp/pop3协议进行邮件收发操作时,均通过不同的命令码进行不同的操作,现将其命令码总结如下:
smtp命令如表1所示:
命令 作用
helo 客户端发送此命令与smtp服务器建立连接,将发送者邮件地址发送给smtp服务器
mail 客户端将邮件发送者的名称传送给smtp服务器
rcpt 客户端将邮件接收者的名称传送给smtp服务器
data 客户端将邮件报文内容传送给smtp服务器
send 用于向指定用户传送邮件
saml/soml 用于发送邮件
rset 取消客户端与smtp服务器间的当前事务,释放与当前事务相关的内存
expn 标识邮件接收者列表
quit 终止客户端与smtp服务器间的连接
(表1 smtp协议命令)
pop3命令如表2所示:
命令 作用
user 客户端向pop3服务器传送账号
pass 客户端向pop3服务器传送密码
stat 客户端请求pop3服务器返回邮箱的统计信息
uidl 客户端请求pop3服务器返回邮件的唯一标识符
list 客户端请求pop3服务器返回邮件数量和每封邮件的大小
retr 客户端请求pop3服务器返回由参数标识的邮件的全部文本
dele pop3服务器将由参数标识的邮件标记为删除
rset pop3服务器重置所有标记为删除的邮件,用于撤消dele命令
noop pop3服务器返回一个肯定的响应
quit 终止客户端pop3服务器间的连接
(表2 pop3协议命令)

三、 总结

以上简单介绍了smtp和pop3协议,并使用科来网络分析分析系统跟踪分析了一个基于smtp/pop3协议的邮件收发操作。据此,用户在遇到不能正常收发邮件(使用smtp/pop3协议)的问题时,即可结合上述的smtp/pop3相关知识,使用网络检测分析软件(科来网络分析系统)对邮件接收和邮件发送的报文进行跟踪分析,以完成对此类故障的快速排查。

购买咨询

您的姓名 : *

10bet十博欢迎您的联系方式 : *

您的邮箱 : *

您的职位 : *

公司全称 : *

公司地址 : *

网络规模 : *

咨询产品: *

购买用途 : *

补充留言:

网站地图