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/SMTP服务,获取授权码。

- 按照QQ邮箱给予教程,完成outlook对QQ邮箱的绑定

4.2 本地收发邮件
- 关闭账号SSL

- 使用
wireshark对WLAN进行抓包,并发送邮件

- 使用
wireshark对SMTP进行追踪

- 分析通讯过程及通讯协议
C: telnet imap.qq.com 25 //以telnet方式连接qq邮件服务器S: 220 newxmesmtplogicsvrszc10.qq.com XMail Esmtp QQ Mail Server. //连接成功,220为响应数字,后面为欢迎信息C: EHLO DREAIFEDESKTOP //向服务器表明身份S: 250-newxmesmtplogicsvrszc10.qq.com | PIPELINING | SIZE 73400320 | STARTTLS | AUTH LOGIN PLAIN XOAUTH XOAUTH2 | AUTH=LOGIN | MAILCOMPRESS | 8BITMIME //成功C: AUTH LOGIN //登录账号S: 334 VXNlcm5hbWU6C: User: ODc3MjYxNzkzQHFxLmNvbQ== //输入账号与授权码的base64编码S: 334 UGFzc3dvcmQ6C: Pass: enVqbnVobWFhcnB5YmJiYg==S: 235 Authentication successfulC: MAIL FROM: <[email protected]> //发送人邮箱S: 250 OKC: RCPT TO: <[email protected]> //收信人邮箱S: 250 OKC: DATA //邮件内容S: 354 End data with <CR><LF>.<CR><LF>.C: DATA fragment, 2429 bytesfrom: <[email protected]>, subject: , (text/plain) (text/html)S: 250 OK: queued as.C: QUIT //发送完成并退出S:221 Bye4.3 web邮件
- 使用
wireshark对WLAN进行抓包,并发送邮件

- 使用
wireshark对tls/ssl进行追踪

- 分析通讯过程及通讯协议
Client Hello
TLS握手过程的第一步就是客户端发起请求,主要包括了客户端生成的随机字符串(session key),还包含了客户端所支持所支持的加密套件列表、随机数等信息。
- Server Hello && Certificate
服务器收到客户端的Client Hello数据包之后,根据客户端发来的加密套件列表,选择一个加密套件,也生成一个随机字符串返回给客户端。密钥交换算法选择的是使用ECDHE_RSA,对称加密算法使用AES_128_GCM_SHA256:同时还有返回的服务器的证书信息。
- Server Key Exchange & Server Hello Done
服务器返回Server Key Exchange数据包,用于和客户端交换用于数据加密的密钥,Server Hello Done用于通知客户端已经发送用于密钥交换的数据等待客户端响应。
- Client Key Change & Change Cipher Spec & Encrypted HandShake Message
客户端根据服务器返回的DH数据生成DH数据发给服务器,用来生成最终的pre-master-secret。如图:
- Application Data
- Change Cipher Spec & Encrypted HandShake Message
每隔一段时间就要更新一次会话密钥
4.4 telnet收发邮件
- 开启电脑
Telnet并使用wireshark抓包

- 打开
cmd进行操作
输入telnet imap.qq.com 25连接服务器后输入代码如下
- 邮件发送完成
- 分析通讯过程及通讯协议
C: telnet imap.qq.com 25 //以telnet方式连接qq邮件服务器S: 220 newxmesmtplogicsvrszc10.qq.com XMail Esmtp QQ Mail Server. //连接成功,220为响应数字,后面为欢迎信息C: helo qq.com //向服务器表明身份S: 250-newxmesmtplogicsvrsza5.qq.com-9.22.14.83-57293480S: 250-SIZE 73400320S: 250 OK //成功C: auth login //登录账号S: 334 VXNlcm5hbWU6C: User: ODc3MjYxNzkzQHFxLmNvbQ== //输入账号与授权码的base64编码S: 334 UGFzc3dvcmQ6C: Pass: enVqbnVobWFhcnB5YmJiYg==S: 235 Authentication successfulC: MAIL FROM: <[email protected]> //发送人邮箱S: 250 OKC: RCPT TO: <[email protected]> //收信人邮箱S: 250 OKC: DATA //邮件内容S: 354 End data with <CR><LF>.<CR><LF>.C: DATA fragment, 2429 bytesfrom: <[email protected]>, subject: , (text/plain) (text/html)S: 250 OK: queued as.C: QUIT //发送完成并退出S:221 Bye5、实验小结
5.1 问题与解决办法
问题使用Xftp连接服务器时,出现连接错误的情况解决方法使用校园网连接后恢复正常,排查后发现为服务器防火墙原因
5.2 心得体会
- 本次实验报告熟系了对SMTP协议分析过程中代码及软件的操作,以及对SMTP报文的分析与提取,实现对课上知识的印证。通过这次实验,我掌握了telnet发送邮件的具体流程与步骤,了解了常用SMTP协议分析软件的基本用法,提高了自身编程能力。
- 通过这些常用的SMTP协议分析命令操作,对SMTP协议使用时的跟踪分析,SMTP报文的结构分析,让我印证了上课所学的知识。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时


















