一、 实验环境
- 通过普通路由器连接英特网的计算机一台;
- 通过VMWare安装的Linux虚拟机一台;
- 抓包工具:Wireshark;
- 邮件处理软件:Foxmail。
二、 实验原理
SMTP工作原理
SMTP提供了一种邮件传输的机制,当收件方和发件方都在一个网络上时,可以把邮件直传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP建立双向的通信渠道,收件方可以是最终收件人也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双发就可以开始通信。
SMTP协议的工作过程:
- SMTP的连接建立阶段
当SMTP需要身份验证时,此过程可能还包括AUTH等命令
-
SMTP客户与目的主机的SMTP服务器建立TCP连接,在TCP连接建立后,SMTP服务器要发出“220(服务就绪)”。
-
SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。
-
SMTP服务器若有能力接收邮件,则回答:“250OK”,表示已准备好接收。
- 邮件的传送过程
-
SMTP连接建立后,就准备开始邮件的传送。邮件的传送从MAIL命令开始。MAIL 命令后面有发信人的地址。
-
SMTP服务器回答“2500K"。否则返回-个错误代码,指出原因。
-
下面跟着一个或多个RCPT命令,它取决于将同一个邮件发给一一个或多个收信人。
-
邮件服务器每收到一个RCPT命令,都会返回相应的信息。如“250 0K”或“550 Nosuch user here”。
-
接着是SMTP客户向SMTP服务器发送DATA命令,此命令表示要开始传送邮件的内容了。
-
若SMTP服务器能够接收邮件,则返回信息“354”,否则,返回信息“421”或“500”。
-
SMTP 客户发送邮件的内容,发送完毕后,再发送\r\n. \r\n表示邮件内容结束。
-
SMTP服务器返回信息“250OK",表示邮件收到。
- SMTP的连接释放过程
-
邮件发送完毕后,SMTP客户应发送QUIT命令。
-
SMTP服务器返回信息“221”(服务关闭)。
SMTP定义了14个命令,本次实验主要用到的命令有:
-
HELO–发件方问候收件方,后面是发件人的服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表明两台机器可以进行通信,同时状态参量被复位,缓冲区被清空。
-
MAIL–这个命令用来开始传送邮件,它的后面跟随发件方邮件地址(返回邮件地址)。它也用来当邮件无法送达时,发送失败通知。
-
RCPT–这个命令告诉收件方收件人的邮箱。
-
DATA–收件方把该命令之后的数据作为发送的数据。数据被加入数据缓冲区中,以单独一行是"."的行结束数据。
-
QUIT–SMTP要求接收方必须回答OK,然后中断传输;在收到这个命令并回答OK前,收件方不得中断连接,即使传输出现错误。发件方在发出这个命令并收到OK答复前,也不得中断连接。
POP3工作原理
POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件,采用的也是C/S通信模型。
用户从邮件服务器上接收邮件的典型通信过程如下。
- 用户运行用户代理(如Foxmail, Outlook Express)。
- 用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连接。
- 客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。
- 服务端解析用户的命令,做出相应动作并返回给客户端一个响应。
- 3和4交替进行,直到接收完所有邮件转到步骤6,或两者的连接被意外中断而直接退出。
- 用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。
其中2、3和4用POP3协议通信。
POP3协议中有三种状态,认证状态,处理状态,和更新状态。命令的执行可以改变协议的状态,而对于具体的某命令,它只能在具体的某状态下使用。客户机与服务器刚与服务器建立连接时,它的状态为认证状态;一旦客户机提供了自己身份并被成功地确认,即由认可状态转入处理状态; 在完成相应的操作后客户机发出QUIT命令,则进入更新状态,更新之后又重返认可状态;当然在认可状态下执行QUIT命令,可释放连接。状态间的转移如图所示。
四、 实验步骤
DNS服务器和邮件服务器的安装与配置
参考博客:CentOS 7下通过PostFix+dovecot+blind搭建邮件服务器