如何发出你的邮件

首先了解下邮件发送的原理(下面的操做仅限 mac/linux):linux

$ dig MX qq.com +short安全

30 mx1.qq.com.
10 mx3.qq.com.
20 mx2.qq.com.服务器

若是要发送邮件给 xxx@qq.com,首先要查找 qq.com 对应的 MX 记录,若是没有记录的话,某种特点状况下还要查看他的 cname 值。app

一般接受邮件的端口都是 25 端口,下面使用 telnet 命令进行尝试工具

$ telnet mx1.qq.com 25测试

Trying 113.108.16.62...
Connected to mx1.qq.com.
Escape character is '^]'.
220 newmx30.qq.com MX QQ Mail Server
550 Connection denied. please try again later
Connection closed by foreign host.google

固然,咱们这里是在本地测试,直接就被 ban 掉,因此能够考虑对 189.cn 的邮箱进行测试。orm

下面就是一些通信的内容,这里暂很少讲,直接谷歌“使用 telnet进行邮件发送便可”,只强调一些关键的内容。对象

  1. HELO $HOSTNAME
  2. MAIL FROM: $EAMIL
  3. RCPT TO: $EMAIL
  4. DATA 而后邮件的内容中又会出现发件人和收件人

换位思考阶段

除了你主动告诉他的这些信息(您是谁,来自哪儿,要到哪儿去,带着什么),接收方还能够获取到你的 IP。因此,收件人第一件事情就是验证你IP的信誉度,而后验证你提供的全部信息的合法/正确性。ip

  1. IP 是否在黑名单中。就和人的第一印象同样,若是IP在黑名单,很容易被直接ban掉。查询传送门:http://mxtoolbox.com/blacklists.aspx
  2. 你的IP和你的在 HELO 时说的域名是否存在绑定关系。关键字:反向域名解析。国内多数ip提供商不提供该功能,因此有时候邮件服务建议使用国外的VPS/服务器。
  3. 你的 MAIL FROM 中的域名是否能够经过该IP发送,会不会被冒充呢?这个就要涉及到另一些规范,例如 SPF,DKIM 规范,其中 DKIM 除了验证发送者的身份外,还能防止邮件内容被篡改。详情自行谷歌。而且在 DNS 中设置。
  4. 你的 DATA 中也有发件人选项,若是你是收件的人会不会也要验证下因此同上,而且建议和 HELO 中的域名、 MAIL FROM 中的域名还有如今 DATA 中的发件人三者一致。

折腾了这么多,邮件应该能够成功的发出去了。可是,你会发现国外(例如hotmail)邮件一直都进入不了。如何 http://wiki.wordtothewise.com/ISP_Summary_Information 。这个是个体力活,根据你发送的对象进行信息注册,而后就OK了。


因而恭喜你,你的邮件能够发送出去了。可是一段时间后会发现常常会出现发送失败的状况。如何获取到更多的反馈呢?

  1. 邮件发送完毕后对方服务器的返回内容,他会告诉你例如收件人不存在、发送频率太高的状况,有可能的话及时处理。
  2. bounce 邮件,即弹回邮件。你须要一个专门的收件服务对他们进行分析,而后再也不向那些邮箱发送邮件。
  3. QQ Mail提供了举报反馈服务,具体参考 QQ邮箱开放平台

最后,仍是要提醒一个关于 IP 预热的概念,简单的说就是对于一个新的 IP,你要在前期控制你的发送总量,好让收件服务一个能够给你打分的阶段。

再附上一些邮件相关的测试工具:

  1. http://www.checktls.com/perl/TestReceiver.pl => 收件安全性测试
  2. http://www.mail-tester.com/ => 垃圾邮件检测
  3. https://toolbox.googleapps.com/apps/messageheader/ => 邮件头部信息分析

技术的东西到此基本结束了,经验总结至我最近的一个邮件服务(如今处在徘徊期),非技术观点传送门: http://vincenting.com/think/give-up-jianxin/,项目地址传送门:http://jianxin.io/(但愿打开的时候项目尚未被我本身彻底叫停)。

若是对该项目、或者邮件发送感兴趣,欢迎联系。

相关文章
相关标签/搜索