2011-09-04 83 views
4

我試過在python中玩耍以瞭解更多關於smtp協議。更確切地說,我一直在試圖直接向主機的SMTP服務器發送郵件,但收效甚微。SMTP直接到主機的MX記錄

例如,假設我想將郵件發送到gmail.com地址,我查找的MX記錄gmail.com:

>> nslookup -type=MX gmail.com 
gmail.com  MX preference = 40, mail exchanger = alt4.gmail-smtp-in.l.google.com 
gmail.com  MX preference = 5, mail exchanger = gmail-smtp-in.l.google.com 
gmail.com  MX preference = 10, mail exchanger = alt1.gmail-smtp-in.l.google.com 

那我該在python以下幾點:

import smtplib 
# Tried both port 465 and 587 (can't test port 25 since it's blocked by my ISP) 
s = smtplib.SMTP("alt1.gmail-smtp-in.l.google.com", 587) 

我試了,和適合所有人,但一個我一直有一個:
「[錯誤10051]套接字操作試圖無法訪問網絡」
「[Errno 10060]連接嘗試失敗,因爲連接方在一段時間後未正確響應,或建立的連接失敗,因爲連接的主機未能響應」「異常。

我在某處讀某些郵件服務器對您的IP進行反向查找,並在它沒有域的情況下拒絕連接。他們如何做到這一點?
我也讀過很多郵件服務器拒絕來自動態IP地址(我顯然作爲私人客戶到我的ISP)的郵件。他們如何檢查IP地址是動態的還是靜態的?

這些是大多數服務器似乎拒絕我的連接的原因嗎?還是有更多的東西呢?

+0

負責任的ISP將其動態IP範圍提交給公共垃圾郵件阻止列表。其他人必須被強迫或猜測,或許是基於他們反向DNS中的命名模式,或者在最壞的情況下是批量阻止。 – tripleee

回答

4

嗯,你的問題正是這個:

# Tried both port 465 and 587 (can't test port 25 since it's blocked by my ISP) 

谷歌的MX服務器監聽端口25。如果您的ISP不允許在這個端口上的傳出連接,那麼你將無法發送SMTP郵件你正在努力的方式。你應該把它與你的ISP整理出來。

關於拒絕郵件,像這樣直接發送電子郵件確實會增加郵件被拒絕或被標記爲垃圾郵件的可能性。特別是如果您將「發件人」地址設置爲與您的IP地址相關的域名不匹配,或者您的SMTP客戶端在其郵件中發送了不匹配域名,或者郵件內容看起來像「垃圾郵件」一樣。實際行爲將根據每個MX服務器的配置情況而有所不同。

0

如上所述,直接到MX電子郵件將被Gmail的SMTP服務器阻止,並顯示錯誤消息"421-4.7.0",但是許多其他SMTP服務器(如MailEnable)將允許Direct To MX。

以下網站的源代碼爲.NET和PHP直接到MX代碼,http://www.directtomx.com - 您可以使用SUDS在python中使用web服務。

相關問題