实验6 电子邮件
1. 实验目的
-
理解电子邮件系统基本结构
-
理解客户端和服务器端,以及服务器之间的通信
-
分析理解SMTP,POP3协议
2.实验环境
-
硬件要求:阿里云云主机ECS 一台。
-
软件要求:Linux/ Windows 操作系统
3. 实验内容
3.1使用邮件代理收发邮件
配置邮件用户代理(例如windows Outlook Express,linux 雷鸟软件等;可以使用系统自带,也可以自行下载。),实现本地撰写,收取自己的QQ邮件。
3.2本地收发邮件
利用本地客户端撰写和发送QQ电子邮件。同时利用Wireshark抓包分析其通信过程和通信协议。
3.3 web邮件
利用浏览器登录QQ邮箱,撰写和发送QQ电子邮件。同时利用Wireshark抓包分析其通信过程和通信协议。
3.4 telnet收发邮件
利用telnet命令登陆qq邮件服务器,发送电子邮件。同时利用Wireshark抓包分析其通信过程和通信协议。
具体操作命令和端口查询自行网络资料解决。
4. 实验结果与分析
4.1使用邮件代理收发邮件
打开qq邮箱网站,点击账户进行设置,找到POP3/IMAP/SMTP/Exchange/GardDAV服务,点击开启服务
进行验证过后得到授权码,此授权码用于第三方客户端登录qq邮箱。
下载foxmail客户端,进行登录,进去foxmail界面后点开设置,点击取消SSL选项。
4.2 本地收发邮件
4.2.1 分析smtp协议
4.2.1.1 打开wireshark,在WLAN中进行抓包。
4.2.1.2 点击抓包后,利用本地foxmail客户端进行撰写与发送电子邮件。
4.2.1.3 对抓取的数据进行过滤。
4.2.1.4 对smtp进行追踪流,以此分析通信过程通信协议。
220,响应代码220表示连接建立成功。
EHLO,服务端返回220代码之后,客户端继续发送请求,首先是发送EHLO命令。
AUTH,服务端接收到客户端的EHLO请求之后,返回了一个250代码并且附带了支持的身份验证方式,身份验证成功后会返回235的成功代码。
MAIL FROM,客户端发送MAIL FROM命令声明邮件的发件人,服务器返回250代码确定操作成功。
RCPT,客户端发送RCPT TO命令声明邮件的收件人,服务器返回250代码确定操作成功。
DATA,客户端使用DATA命令,告知服务器要开始传输邮件的正文内容,服务端返回354代码,告知邮件的内容结束以<CR><LF>.<CR><LF>
为标记。
QUIT,在客户端发送完邮件内容之后,还会接着发送一个QUIT命令来表示结束这次的SMTP传输,服务器在接受到数据之后会返回250代码表示接受成功并且再返回221代码表示结束本次SMTP传输。
4.2.2 分析POP3协议
4.2.2.1 修改接受服务器类型,重复上述步骤,在wireshark中进行抓包。
4.2.2.2 打开wireshark,在WLAN中进行抓包,在foxmail界面点击收取,进行收取邮件。
4.2.2.3 在wireshark中过滤pop,分析通信协议与过程。
(1)由于POP3协议默认的传输协议是TCP协议,因此,客户端连接服务器需要先进行三次握手建立端到端的连接。
(2)客户端和服务器建立连接之后,pop3服务器会向pop3客户端吧发送一条消息,通知客户端服务器已经准备好了,客户端开始进行认证阶段。
(3)STAT,处理请求服务器发挥邮箱资料,邮件总数与字节数。
(4)LIST,列出每封邮件的字节数。左边为邮件的序号,右边为该邮件的大小
(5)UIDL,返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的.
(6)QUIT,退出连接。
4.3 web邮件
4.3.1 在网页上打开qq邮箱,编辑邮件发送,由wireshark进行抓包。
4.3.2 输入tls进行筛选。
4.3.3 对协议进行分析
(1)Client Hello,TLS握手过程的第一步就是客户端发起请求,主要包括了客户端生成的随机字符串(session key),还包含了客户端所支持所支持的加密套件列表、随机数等信息。
(2)Server Hello,服务器收到客户端的Client Hello数据包之后,根据客户端发来的加密套件列表,选择一个加密套件,也生成一个随机字符串返回给客户端。
(3)Certificate,返回服务器证书,该证书中含有一个公钥,用于身份验证和密钥协商。
(4)Server Key Exchange,Server Hello Done,服务器返回Server Key Exchange数据包,用于和客户端交换用于数据加密的密钥,Server Hello Done用于通知客户端已经发送用于密钥交换的数据等待客户端响应。
(5)Client Key Change,Change Cipher Spec,Encrypted HandShake Message
客户端根据服务器返回的DH数据生成DH数据发给服务器。
(6)New Session Ticket,Change Cipher Spec,Encrypted HandShake Message
每隔一段时间就要更新一次会话密钥。
4.4 telnet收发邮件
4.4.1 开启telnet客户端
打开控制面板–>程序–> 程序和功能 –> 打开或关闭Windows功能,找到Telnet Client–>点击勾选–>确定。
4.4.2 在cmd中输入telnet smtp.163.com 25 ,连接邮件服务器.
4.4.3 输入详细命令。
1.输入 helo 163.com,向服务器表明身份
2.输入 auth login
3.输入邮箱的 base64 编码(xxxxxxxxxx@163.com的base64编码)
4.输入开启 IMAP/SMPT 时授权码的 base64 编码(授权码无空格)
base64编码网址: http://tool.chinaz.com/Tools/Base64.aspx
5.输入发送人邮箱 mail from:<xxxxxxxxxx@163.com
6.输入收信人邮箱 rcpt to:xxxxxxxxxx@163.com
7.输入 data
8.from:xxxxxxxxxx@163.com
9.to:xxxxxxxxxx@163.com
10.subject: testEmail
11.输入内容,与上一行空一格,
12.“.“表示邮件结束。
13.抓包分析过程与4.3.3相同。
ps:4.4 telnet收发邮件我qq邮箱一直报错,始终找不到解决的方法,最后只能换成163。报错如下:
求助大佬,完全不知道为什么,授权码也可正常登录第三方客户端。