协议分析之POP3协议与SMTP协议

文章目录
  1. 1. 一、实验原理:#
  2. 2. 二、实验目的:#
  3. 3. 三、实验内容:#
    1. 3.1. 1、选择环境
    2. 3.2. 2、安装虚拟机
      1. 3.2.1. 关闭selinux
      2. 3.2.2. 检查swap
      3. 3.2.3. 邮箱域名
      4. 3.2.4. 安装
  4. 4. SMTP协议分析
  5. 5. 总结:

本报告搭建了POP3服务器和SMTP服务器,对其进行了简单的流量分析,并且简单总结了其异同。

一、实验原理:#

POP3协议,全名为“Post Office Protocol - Version3”,即“邮局协议版本3”。是TCP/IP协议族中的一员,由RFC1939定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。

POP协议,支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或MAC。一旦邮件发送到 PC机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。

SMTP协议,是一种提供可靠且有效的电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

二、实验目的:#

利用开源软件ewomail搭建自己的邮件服务器并且对其流量进行分析。

三、实验内容:#

1、选择环境

在这里我使用了开源软件EwoMail邮件服务器软件进行邮件服务器搭建。EwoMail是基于Linux的开源邮件服务器软件,集成了众多优秀稳定的组件,是一个快速部署、简单高效、多语言、安全稳定的邮件解决方案,帮助你提升运维效率,降低
IT 成本,兼容主流的邮件客户端,同时支持电脑和手机邮件客户端。

我认为这个软件很适合用来搭建邮件服务器,原因有以下三点:

  1. 该软件完全开源,所有代码都可见。而且作为一个成熟的项目,该软件可以方便地找到资料。

  2. 集成组件Postfix:邮件服务器Dovecot:IMAP/POP3/邮件存储Amavisd:反垃圾和反病毒。符合了我们的要求。(主要探究POP3协议)

  3. 部署简单,只需要一台centos的服务器就可以搭建。

https://github.com/gyxuehu/EwoMail

2、安装虚拟机

这里有一个坑一定要记得,centos安装时候默认不开启网络的,需要手动打开。如果错过了这一步,那只有等安装好之后用命令好修改打开,十分麻烦(我在这一步上一直出错)。

在这里贴上如果忘记打开网络,命令行的做法。

1.打开网络配置文件

1
vi /etc/sysconfig/network-scripts/ifcfg-eth0

2.在文件末尾追加DNS

1
2
3
DNS1=8.8.8.8

DNS2=4.2.2.2

3.重启网络

ifup eth0

这里要注意一点,centos默认是不带图形界面的,只有命令行界面,虽然说我们依然可以利用命令行界面搭建,但是这样不方便而且也很难以操作。所以我们选择下载图形界面。

这里需要注意的是,centos在命令行下好像没法粘贴复制,所以需要手打。

注意空格。

1
yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

完成之后我们用另一个指令打开图形界面。

1
2
3
ln -sf /lib/systemd/system/runlevel5.target /etc/systemd/system/default.target 

startx

成功。

安装ewomail

参考文档:http://doc.ewomail.com/docs/ewomail/jianjie

关闭selinux

1
vi /etc/sysconfig/selinux

SELINUX=enforcing 改为 SELINUX=disabled

检查swap

如果没启动swap,这会导致EwoMail的防病毒组件不能启动,所以在安装前先检查swap是否已经启动,如已启动可跳过该步骤。

查看swap

1
free -m

邮箱域名

EwoMail本身是可以配置多个域名来收发邮件的,但在安装前需要一个邮箱的主域名。
本次教程例子使用的主域名是ciaofox.cn

查看当前主机名

1
hostname -f

安装

安装前请服务器必须已链接网络,安装时间将会根据你的系统配置和网络环境大概会在10分钟内安装完成。(需要root权限)

打开:http://www.ewomail.com/list-11.html 输入你的域名获取安装代码

这里要记得用sudo指令,或者切换进入root账户下。否则会出现问题。

这种问题。

对POP3流量进行分析

使用telnet直接进入163邮箱服务器。输入o(连接主机),然后通过110端口连接进163邮箱服务器。

可以看到POP协议的内容,和我们得到的东西很接近。那么我们再查看流量包,尤其是TCP协议。

从这里我们可以看出TCP
的三次握手,对110端口。连接建立之后返回了一个POP报文,内容是

1
+OK Welcome to coremail Mail Pop3 Server(163coms[b62aaa251425b4be4eaec4ab4744cf47s])

接下来我们尝试登陆163邮箱(账号来自于别人),得到了明文的报文。

跟踪流可知每次输入都会进行ACK上传,密码是通过明文传输的。(好像不太安全)

输入quit退出,可以看到ACK报文,确认之后经过四次挥手结束流程。

总结:可以看出POP3协议在登陆时会先进行身份验证,即账号和密码。验证之后可以通过发送对应指令获得所有未读信息到主机,完成登陆与邮件的获取。从抓到的包中可以看出几点,1,它是通过一个字符一个字符地上传。2,密码与账号都是通过明文上传。

SMTP协议分析

一样的方法,可以看出是先经过TCP3次握手再传送回SMTP报文。

1
220 163.com Anti-spam GT for Coremail System (163com[20141201])

helo 和ehlo指令的作用是向服务器标示用户身份,返回邮件服务器身份。

输入auth login验证用户(验证用户使用auth
login进行验证时用户名和密码是经过base64编码过后的字符)

502是telnet没有设置到SMTP服务。设置之后就好了。

账号经过base64编码后为bGVlYW5ua2FAMTYzLmNvbQ。但是同样是明文传递。

客户端向服务器发送用户登录命令“AUTH LOGIN”,服务器回复表示接受(“334”表示接受)

客户端分别向服务器发送编码后的用户名和密码, 服务器分别回复“ 334”“235”表示接受。

总结:

SMTP和POP3的特点之一在于POP3无法发送邮件,更多是接受,而SMTP可以接受与发送。另一个特点在于POP3完全是明文发送,而SMTP会经过base64转码。