Windows命令实现匿名邮件发送

在日常工具开发中,经常会有发送邮件的需求。在一些高级语言中,如Python,C#中,都有专门的邮件发送模块,如Python 中的 smtplib 模块。那么,一封邮件到底是如何发送到一个特定的邮箱呢?

举个例子:使用test@163.com 发送一封邮件到 test@qq.com。

首先,看下邮件系统的组成部分,如下图

再看下邮件发送的整个过程,如下图:

①发送者使用SMTP协议,将邮件发送到自己邮箱服务器

②163邮件服务器使用SMTP协议,将邮件发送到QQ邮件服务器

③收件人使用POP3协议,从服务器端读取邮件

在上面过程中我们会发现两个问题:

①163邮件服务器需要验证发送方是否是合法用户。也就是说在整个发送过程中,需要使用到test@163.com的密码才能完成整个邮件发送过程。

②163邮件服务器如何发送邮件到QQ邮件服务器的呢?其实,这中间有个域名解析的过程。发送方会根据收件人的信箱来解析其服务器域名(qq.com),在该解析过程中,询问其邮件服务器的地址。

既然验证过程是在163邮件服务器,那么我们是不是可以直接绕过去,直接模拟请求跟QQ邮件服务器进行交互呢?答案是肯定的,,而邮件发送的整个过程可以抽象成下图

我们可以发现关键的地方是如何解析QQ邮件服务器的地址。此处我们使用Windows命令nslookup来进行域名解析。查看qq.com的邮件服务器地址,可以使用命令:nslookup -qt=mx qq.com,结果如下:

其中 mail exchanger 后面就是qq.com 的邮件服务器地址。

这样,我们就绕过了密码验证的过程,将邮件直接发送到了收件人的邮件服务器,想要了解代码如何实现,欢迎查看之前的文章“Python写自动化之邮件匿名发送”

多看书,看好书。

Windows命令实现匿名邮件发送

相关文章:

你感兴趣的文章:

标签云: