2011-09-04 187 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服务。

相关问题