SMTP协议学习笔记

这几天敝人并没有及时更新博客,一是由于白天工作中的锁事比较繁杂,二来连续看了两个晚上的SMTP协议。

 

我比较喜欢用实践来证明一切,这样才会加深自己的理解!

 

一、准备工作:

1、本机环境:Windows XP SP3、ADSL 10M光纤

2、开发工具:WildPackets OmniPeek V5.1.4

                    Visual C++ 6.0

                    Outlook Express6.0

                    FlexEdit V2.3.1871

 

二、SMTP命令:

1、HELO 向服务器标识用户身份
2、MAIL 初始化邮件传输mail from: <xxx>
3、RCPT 标识单个的邮件接收人;常在MAIL命令后面可有多个rcpt to: <xxx>
4、DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,初始化数据传输,以.结束
5、NOOP 无操作,服务器应响应OK
6、RSET 重置会话,当前传输被取消
7、QUIT 结束会话

三、分析数据包:

1、打开Outlook Express6.0,创建新邮件,内容如下:

测试邮件

 

2、打开OmniPeek,选择SMTP:

选择滤镜/SMTP

 

3、先开始抓包,再发送上面的测试邮件,得到的数据包如下图:

     (要注意Source与Destination,即源地址与目标地址)

SMTP Packets

 

4、只需要看第20条数据包,其他可以比较容易理解:

SMTP

 

5、其他小技巧

 

     <CR> <LF>即对应C/C++中的"/r /n"

 

     比如 Line 8: charset="gb2312"<CR><LF>,因为需要用到转义字符

 

     所以对应的字符串应该为char * sData = "charset=/"gb2312/"/r/n";

 

四、相关代码:

1、以下代码通过socket与SMTP服务器建立连接并验证身份。打开Visual C++,新建一个控制台工程、并添加一个CPP文件:

 

2、下面是Base64加解密头与CPP文件:

 

 

3、程序运行效果:

 登录SMTP服务器并验证

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值