如何發出你的郵件

首先了解下郵件發送的原理(下面的操做僅限 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/(但願打開的時候項目尚未被我本身徹底叫停)。

若是對該項目、或者郵件發送感興趣,歡迎聯繫。

相關文章
相關標籤/搜索