首页 理论教育 深入解析 SMTP 和 POPv3 协议及实例分析

深入解析 SMTP 和 POPv3 协议及实例分析

时间:2023-06-30 理论教育 版权反馈
【摘要】:发送SMTP 负责向接收方发送SMTP 命令,而接收SMTP 则负责接收并反馈应答。目前,大部分电子邮件服务器都采用SMTP 发送邮件,同时使用POPv3 协议接收电子邮件消息。

深入解析 SMTP 和 POPv3 协议及实例分析

1.SMTP 协议简介

简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)是一个运行在TCP/IP 之上的协议,用于发送和接收电子邮件。SMTP 服务器在默认端口25 上监听。SMTP 用户使用一组简单的、基于文本的命令与SMTP 服务器进行通信。在建立了一个连接后,为了接收响应,SMTP 客户首先发出一个命令来标识其电子邮件地址。如果SMTP 服务器接受了发送者发出的文本命令,它就利用一个OK 响应和整数代码来确认每一个命令。用户发送的另一个命令意味着电子邮件消息体的开始,消息体以一个圆点“.”及回车符终止。

2.SMTP 协议通信模型

SMTP 协议的通信模型并不复杂,主要工作集中在发送SMTP 和接收SMTP 上: 针对用户发出的邮件请求,由发送SMTP 建立一条连接到接收SMTP 的双工通信链路。这里的接收SMTP 是相对发送SMTP 而言的,实际上它既可以是最终的接收者也可以是中间传送者。发送SMTP 负责向接收方发送SMTP 命令,而接收SMTP 则负责接收并反馈应答。SMTP 通信模型示意如图3-5-10 所示。

图3-5-10 SMTP 通信模型示意

3.SMTP 协议工作原理

SMTP 是个请求/响应协议,其命令和响应都基于ASCII 文本,并以CR 和LF 符结束,响应包括一个表示返回状态的3 位数字代码。

服务器端SMTP 在TCP 协议25 号端口监听连接请求,其连接和发送过程如下:

(1)监听到用户的连接请求后,建立TCP 连接。

(2)客户端发送HELO 命令,以标识发件人自己的身份;然后,客户端发送MAIL 命令,传递发件人地址。

(3)服务器端以OK 作为响应,表明准备接收。

(4)客户端发送RCPT 命令,传递接收人地址,可以有多个RCPT 行。

(5)服务器端表示是否愿意为收件人接收邮件(同意,返回“250 OK”作为响应)。

(6)协商结束,开始发送邮件,用命令DATA 发送邮件数据内容。

(7)以<CR> <LF>.<CR> <LF>来表示邮件内容发送结束。

(8)客户端结束此次发送,用QUIT 命令退出。

4.SMTP 基本命令集

SMTP 的基本命令有:

●HELO: 向服务器标识用户身份。

●MAIL FROM: 给出发件人的电子邮箱地址。

●RCPT TO: 给出收件人的电子邮箱地址。

●DATA: 出现在单个或多个RCPT 命令后,表示所有的电子邮件接收人已标识,并初始化数据传输,以“.”结束。

●HELP: 查询服务器支持什么命令。

●NOOP: 无操作,服务器应响应“OK”。

●QUIT: 结束会话。

●RSET: 重置会话,当前传输被取消。

5.SMTP 应答

对SMTP 协议的每一个命令,服务器都会返回一个应答码,不同的应答码有不同的特定含义。常用的SMTP 应答码有:

●220: 服务器服务准备就绪。

●221: 服务正在关闭传输通道。

●500: 命令无法识别。

●250: 要求的操作完成。

●354: 可以开始输入电子邮件。

6.POPv3 协议简介

邮局协议第3 版(Post Office Protocol version 3,POPv3)提供了一种对邮件消息进行排队的标准机制,这样接收者以后检索邮件。

(1)POPv3 协议运行在TCP/IP 之上,并且在默认端口110 上监听。

(2)在客户机和服务器之间进行了初始的会话之后,基于文本的命令序列可以被交换。

(3)POPv3 客户利用用户名和口令向POP3 服务器认证。

(4)POPv3 中的认证是在一种未加密的会话基础上进行的。

(5)POPv3 客户发出一系列命令发送给POP3 服务器,如请求客户邮箱队列的状态、请求列出的邮箱队列的内容、请求检索实际的消息。

目前,大部分电子邮件服务器都采用SMTP 发送邮件,同时使用POPv3 协议接收电子邮件消息。

7.POPv3 工作原理

在POPv3 协议中有3 种状态,即认可状态、处理状态、和更新状态。

当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态;在完成相应的操作后,客户机发出QUIT 命令,则进入更新状态;更新之后,重返认可状态。

服务器响应是由单独的命令行或多个命令行组成的,响应第一行以“ <ASCII 文本> +OK (或-ERR)”指出相应的操作状态成功(或失败)。

8.POPv3 的命令集

POPv3 的基本命令有:

●USER username: 向服务器汇报用户名。

●PASS password: 给出口令。

●STAT: 请求服务器发回邮箱中的邮件总数和总字节数。

●LIST: 列出邮件编号和每个邮件的大小。

●RETR n: 返回编号为n 的邮件的内容。

●DELE n: 将编号为n 的邮件标记为删除。

●RSET: 撤销DELE 命令,将所有删除标记取消。

●UPDATE: 删除有删除标记的邮件。

●TOP n m: 显示编号为n 的邮件的前m 行内容。

●QUIT: 断开与服务器的连接。

9.发邮件实例分析

用Outlook 发邮件,发件人的电子邮箱地址是bnu-test@sohu.com,口令是cist001,收件人的电子邮箱地址是bnu-test@yeah.net,口令是cist001。Outlook 运行在IP 地址为202.112.88.96 的主机A 上。图3-5-11 所示为成功发送邮件的全程抓包。

图3-5-11 Outlook 利用SMTP 协议发送邮件

分析如下:

(1)成功发送一封邮件共交互了31 个数据包,从链路层的角度而言,共31 帧数据。

(2)Wireshark 将每帧的关键信息提炼出来,按不同的字段显示,从左到右分别是“ +帧编号”“源地址”“目的地址”“信息”等。(www.xing528.com)

(3)第1 ~3 帧完成了客户机A 主动发起的与sohu 邮箱服务器B 的三次握手,建立了A 的52353 端口(IP 202.112.88.96 客户端)到B 的25 端口(IP 111.202.126.72 sohu)的TCP 连接。

(4)第4 帧是服务器发给客户机A 的SMTP 应答,数据内容是“220 stephen 16-68-120.localdomain ESMTP ready”,表明该服务器提供的是ESMTP 服务,即发送邮件时需要对用户进行身份认证。

(5)第5 ~13 帧是客户机与服务器的身份认证交互。其中,第10 帧是客户机A 将经过加密的用户名发送给服务器,第12 帧是将加密过的口令发送给服务器。在Wireshark 窗口中,可以看到加密后的用户名和口令。

(6)第15 帧是客户机A 向服务器发出“MAIL FROM”命令,告知发件人的邮箱地址是bnu-test@sohu.com;第16 帧是服务器发来的认可应答。

(7)第18 帧是客户机A 向服务器发出“RCPT TO”命令,告知收件人的邮箱地址是bnutest@yeah.net;第17 帧是服务器发来的认可应答。

(8)第21 帧是客户机A 向服务器发出“DATA”命令,表明客户机A 准备向往服务器发送邮件内容数据。

(9)第23 帧是客户机A 向服务器发送的邮件数据,具体内容可以通过在Wireshark 窗口中单击该帧,在下面的协议树窗口中看到。注意观察第23 帧的数据内容,其中有表示邮件结束的<CR> <LF>.<CR> <LF>。

(10)第24、25 帧是客户机A 向服务器B 发送两个1460 字节的数据。

(11)第26、27 帧是确认信息。

(12)第28 帧是客户机通过Outlook 的zxm 账户向sohu 邮箱服务器发送邮件。通过Wireshark 可以看到,邮件的内容是加密传输的,如图3-5-12 所示。

图3-5-12 通过Outlook 发送加密邮件

(13)第29 帧说明客户机确认发送完毕;第30 帧说明服务器收到数据完毕,第31 帧是服务器接收数据完毕的确认信息。

(14)如图3-5-13 所示,第32 帧是客户机向服务器提出断开连接请求QUIT。

(15)第33 ~36 帧是TCP 的四次挥手信息。

图3-5-13 Outlook 发送邮件过程的抓包数据2

10.接收邮件实例分析

用Outlook 接收邮件,收件人的邮箱地址是test-test@sohu.com,口令是cist001。Outlook 运行在IP 地址为202.112.88.96 的客户机A 上。图3-5-13 是成功发送邮件的全程抓包,分析如下:

(1)成功接收一封邮件,共抓取到了36 个数据包,如图3-5-14 和图3-5-18 所示,从链路层角度而言,共36 帧。

图3-5-14 Outlook 接收邮件过程的抓包数据1

(2)Wireshark 将每帧的关键信息提炼出来,按不同的字段显示,从左到右分别是“帧编号”“源地址”“目的地址”“主要内容”等。

(3)第1 ~3 帧完成了客户机A (IP 202.112.88.96)主动发起的与sohu 邮箱服务器B(IP 111.202.126.72)的三次握手,建立了A 的57970 端口到B 的110 端口的TCP 连接。

(4)三次握手成功后,第4 帧是服务器发给客户机A 的POPv3 应答,表明POP3 服务器已准备好。

(5)第5 ~12 帧是客户机与服务器的身份认证交互。其中,第5 帧是客户机A 发送出了第一个指令CAPA,用于取得服务器的功能选项清单;第8 帧告知服务器用户名;第10 帧是告知口令。可以看到,收邮件时,用户名和口令的传送是明文的,这些信息一旦被抓包分析,即可被获取数据,所以很不安全。

(6)第13 帧是客户机A 向服务器发送的“STAT”命令,要求返回邮箱的状况,即总的邮件数和邮件容量。

(7)第15 帧是客户机A 向服务器告知有6 个文件,共17428 字节。第20 帧是第18 帧的重传信息,可以看到第18 帧和第20 帧的Sqe 和Ack 信息相同。在此也印证了TCP 在网络中将数据丢弃重传的传输过程。

(8)第22 帧“LIST”命令,要求返回各邮件的编号和大小。第23 帧是服务器告诉客户机确认信息。第24 帧是TCP 确认信息。

(9)第25 帧列出了邮件编号和大小,如图3-5-15 所示。

图3-5-15 邮箱中邮件的编号和大小

(10)第26 帧是客户机要求服务器返回编号为1 的邮件的内容。

(11)第27 帧是服务器B 向客户机A 发送确认信息。

(12)第28 帧是邮件的具体信息,如图3-5-16 所示。

图3-5-16 第28 帧数据信息

从第28 帧数据可以看出,这封邮件是从bnutest@yeah.net 发往bnu-test@sohu.com,邮件的标题是hello。

(13)第29 帧是TCP 的确认信息;第30 帧是编号为1 的邮件的内容,如图3-5-17所示。

图3-5-17 第30 帧数据的内容

从图3-5-16 中可以看出,编号为1 的邮件,其内容就是一个单词test,在这里是用明文传送的。

(14)第31 帧是客户机A 向服务器发送的“QUIT”命令,表明要断开与服务器的连接。

(15)第32 帧是服务器发来的同意断开连接的应答,如图3-5-18 所示。

图3-5-18 Outlook 接收邮件过程的抓包数据2

(16)第33 ~36 帧是客户机A 和服务器交互进行的四次挥手,断开TCP 连接。

11.电子邮件的探讨

1)电子邮件的特点

从前面的实验可以看出,电子邮件有以下特点:

(1)Web 版的电子邮件移动性强,可以随时随地收发邮件,因为这些操作都在电子邮件服务器上进行。

(2)操作简单,不需要填写各种服务器的地址。

(3)安全性强,所有密码都是加密发送的,不易被截获。

(4)如果有多个邮箱,则操作起来比较烦琐,需要逐个地输入密码。此时,可以用电子邮件管理软件Outlook 或Foxmail。它们有以下特点:

①可以很方便地将所有邮件存储到本地硬盘,而不是服务器。

②可以比较方便地管理多个邮箱,不用多次输入用户名和密码。

③设置管理软件比较麻烦,要有一定的计算机知识。

④用Outlook 收发信件时,所有的密码和用户名都是用明文传递的,内容也会明文传送,保密性差,容易被他人截获。但可以选择密文发送,或者要求安全认证。

⑤Outlook 的移动性差,因为它是将邮件接收到本地磁盘,所以不能在其他计算机上收取邮件。

2)电子邮件的发展

1969年,全世界建立了第一个互联网。1972年,Ray Tomlinson 编写了第一个电子邮件程序。由此可见,电子邮件伴随着互联网的产生而产生,伴随着互联网的发展而发展。可以说,电子邮件是互联网中十分重要的应用。在国内,电子邮件服务的发展也是非常引人注目的。1987年9月20日,钱天白教授通过意大利公用分组交换网在北京发出我国第一封电子邮件,与德国卡鲁斯尔厄大学进行通信,揭开了中国人使用因特网的序幕。中国的互联网发展是以发送电子邮件为标志的,这说明电子邮件在互联网中的地位十分重要。

电子邮件的发展经历了两个过程: 开始的电子邮件服务器都是用命令行来操作的,对于一个普通人来说,收发电子邮件是不容易的事情,要有一些计算机的基础知识才可以发送电子邮件,这就影响了电子邮件的普及和发展;后来,发明了一些收发和管理电子邮件的工具(如Outlook 和Foxmail 等),使发送邮件变得比较轻松了,这使更多的人开始使用电子邮件。可以说,电子邮件管理工具的发明,推动了电子邮件的发展。

1995年12月,Sabeer Bhatia 和Jack Smith 拜访了因特网风险投资人Draper Fisher Jurvetson,建议他开发一个免费的、基于Web 的电子邮件系统。他的基本思想就是为任何想要发送电子邮件的人分配一个免费的电子邮件账户。当然,这个电子邮件账户应可以在Web 上使用。使用这种基于Web 的电子邮件,任何访问Web 的人无论在哪里都可以阅读和发送邮件。此外,基于Web 的邮件为其用户提供了很大的移动性。以15%的公司股份作为条件,Draper Fisher Jurvetson 向Sabeer Bhatia 和Jack Smith 提供了资金,后者组建了一家公司,叫Hotmail。在3 名全职员工和12 ~14 名兼职人员的共同努力下,在1996年7月,他们研发并提供了Web 版的电子邮件服务,之后的1 个月内,他们拥有了10 万名用户。用户的数目不断迅速增长。所有用户在阅读邮件时都会看到展现在他们眼前的广告条。1997年2月,在启动不到18 个月,Hotmail 的用户就超过了1200 万名,并且以4 亿美元的价格被微软公司收购。这就是电子邮件发展的第二个历程,也就是出现了Web 版的电子邮件服务。

电子邮件在人们的生活中扮演着十分重要的角色,正式场合一般都通过电子邮件发送信息。很多涉及保密工作的单位要求工作邮箱和私人邮箱分开,严禁用私人邮箱处理公务。另外,重要事情通常都采用电子邮件通知。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈