爱子日志

解决向国外发送邮件因PTR记录被退回问题、IP反向解析、Mail

目前许多邮件服务器如sina.com,hotmail.com,yahoo.com.cn,aol.com等等都采用了垃圾邮件识别阻拦技术+IP反向解析验证技术以更好的阻拦垃圾邮件。

1.
①A记录:解析域名到IP
PTR记录:解析IP到域名(DNS的反向解析、rDNS、IP反向解析),DNS服务器里有两个区域,即“正向查找区域”和“反向查找区域”,反向查找区域即是这里所说的IP反向解析,它的作用就是通过查询IP地址的PTR记录来得到该IP地址指向的域名。

2.一个IP可以反向解析N个域名,不过是排前的优先

3.中继服务(发不出去尝试中继)

4.如果国内邮件占多数,不建议开启PTR检查,因为国内很少有管理员做PTR。

5.需要向固定IP所属ISP服务商提供什么?
提供:IP和域名。

6.
双线机房,如何做反向解析?
可以试试两个IP同时反解。

7.
①有固定公网IP地址、可用域名
②做A记录:mail.XXX.com到公网IP(218.XX.XXX.173)
③与固定IP所属ISP联系,要求“IP反向解析至mail.XXX.com
④将HELO域名改为mail.XXX.com

8.查看反向解析是否生效:

①Windows:

SMTP邮件传输协议

典型的邮件传输协议有POP3、SMTP、IMAP及HTTP。

其中HTTP算不上标准的邮件协议,只是说有很多邮件系统只提供web方式收发邮件而已。

SMTP/POP3是一套配对的协议,SMTP是用来发送邮件的,目前所有的邮件服务器发送系统其实采用的协议都是SMTP协议。
POP3协议是收取邮件的协议,用来从服务器上收取属于自己的邮件。

IMAP协议是邮件管理协议,能够对自己的位于邮件服务器上的邮件进行阅读、删除甚至发送的协议,这里的发送并不是真正的发送,只是将要发送的邮件提交到自己的邮件服务器的发送队列中。


典型的邮件发送过程是这样的:




所以说,邮件发送接收的过程其实有三步:

1、客户端通过SMTP或者IMAP协议和自己的邮件服务器通信,将要发送的数据提交给自己的邮件服务器

2、发送方和接收方邮件服务器通过SMTP协议将邮件传输到接收方邮件服务器上

3、接收端通过POP3/IMAP/HTTP就可以自己的服务器上收取到邮件

这里我们说的是正常情况下的邮件发送的步骤,在实际情况下还存在一些特殊情况,如:

1、发送方和接收方是处于同一个邮件域或者同一个邮件服务器上,此时并不需要使用SMTP协议进行邮件传递,只需要邮件服务器自己直接通过自己的方式实现即可(文件复制或者数据库读写等)

2、发送方不是和自己的邮件服务器打交道,而是直接和接收方邮件服务器进行通话,直接让对方邮件服务器为你将邮件发送到目标信箱。

3、发送方和第三方的邮件服务器打交道,拜托它帮忙将邮件发送到其他邮件服务器上。

对于特殊情况1来说,没有任何问题,对于特殊情况2和3来说呢,门道可多啦。

其实,特殊情况2这种方式,就是Foxmail中所谓的“特快专递”邮件,使用这种方式,如果成功就基本能很确认邮件已经被投递到收件人的邮箱了(但是很多时候是无法成功的)

而特殊情况3,则是很久以前的垃圾邮件发送者的使用伎俩了。

由于垃圾邮件的泛滥,在几年前(大约2001年吧),相信大家都听过,国内的邮件服务器被大量封杀。也就在那个阶段,邮件服务器的安全性能开始慢慢的增强,各种防范垃圾邮件的软件方法也开始部署到服务器上。

1、禁止邮件服务器做“义工”,不再投递发送者不属于本邮件域的邮件。即特殊情况3,这个很简单,单纯的一个判断就可以了。

2、实施发信认证。以往只有在收取邮件的时候才需要进行认证(进行这个认证是很正常的,否则邮箱就能被任何人收取了)。现在对发送邮件也进行了认证,就是当发送邮件的时候,邮件服务器会验证发件人所使用的邮箱是否是的该发件人所拥有。在技术上,由SMTP协议升级到ESMTP协议。即使用EHLO替代了HELO。

3、收件服务器对接收到的邮件来源服务器进行认证。ESMTP协议可以用到客户端和自己的邮件服务器上,因为该邮件服务器肯定拥有发件邮箱的所有信息。但是却无法应用到邮件服务器之间的邮件传送,因为他没有办法去获取对方服务器的认证(很明显,一个Gmail.com的用户A给Hotmail.com的一个用户B发送邮件,Hotmail.com的邮件服务器接收到Gmail.com传来的邮件的时候是没有办法确认该邮件是不是由A来发送的,他没有办法得到Gmail.com上的用户A的认证信息)。

那么怎么办呢?难道真的没有办法了吗?有。最可靠的办法就是邮件域的反向解析。许多限制严格的邮件服务器只有在反相解析确定所接收的邮件是属于其邮件服务器时才会接收。但是这样做会耗费比较多的资源,目前还有一个办法就还是最土的IP地址认证机制(如Gmail.com使用的就是这个,在使用Foxmail的特快转递收到信件的邮件头内会包含类似下面的内容Received-SPF: neutral (google.com: 125.34.201.193 is neither permitted nor denied by best guess record for domain of xxxxx@xxxxx.com) client-ip=125.34.201.193;),如果发送人邮件没有在禁止IP范围内,则允许接收,否则就屏蔽。

好,这些就是邮件SMTP协议的最表层的一些理解了,下面用几个稍具专业的东西来结束这篇文章。

1、同SMTP/ESMTP相关的几个RFC协议:RFC 821、RFC 1869、RFC 2554

2、标准的Smtp协议交互内容如下


S:
C:
S:220 standard smtp Mail Server Ready...
C:HELO XXX
S:250 OK
C:MAIL FROM:Sender
S:250 OK
C:RCPT TO:Receiver Receiver@XXX.com
S:250 OK
C:DATA
S:354 Start mail input; end with .
C:XXXXXXXX
C:XXXXXXXX
C:.
S:250 OK
C:QUIT
S:221 Bye


支持认证的SMTP(ESMTP)协议交互内容如下:

S:
C:
S:220 esmtp with Authentication Mail Server Ready...
C:EHLO XXX
S:250-SMTP.XXX.COM
S:250 AUTH LOGIN
C:AUTH LOGIN
S:334 VXNlcm5hbWU6
C:VXNlcm5hbWU6
S:334 UGFzc3dvcmQ6
C:UGFzc3dvcmQ6535
S:235 Authentication successful
C:MAIL FROM:Sender
S:250 OK
C:RCPT TO:Receiver Receiver@XXX.com
S:250 OK
C:DATA
S:354 Start mail input; end with .
C:XXXXXXXX
C:XXXXXXXX
C:.
S:250 OK
C:QUIT
S:221 Bye



3、典型的ESMTP邮件发送流程图



邮件发送流程:


S: 我这个邮政局是顾客上门才服务,我不上门接快递的
C: >>敲门
S:220 esmtp with Authentication Mail Server Ready... 你好,邮政局营业中
C:EHLO XXX >>你好
S:250-SMTP.XXX.COM 噢,我是XXX.com邮政局
S:250 AUTH LOGIN 250啊,我需要认证
C:AUTH LOGIN >>那么就开始认证吧
S:334 VXNlcm5hbWU6 说出你的用户名(Base64编码的)
C:VXNlcm5hbWU6 >>我BASE64编码的用户名是VXNlcm5hbWU6
S:334 UGFzc3dvcmQ6 说出你的密码
C:UGFzc3dvcmQ6535 >>我BASE64编码的密码是UGFzc3dvcmQ6535
S:235 Authentication successful 你认证通过了
C:MAIL FROM:Sender >>我的这封邮件是从Sender发送的
S:250 OK 好的,没问题
C:RCPT TO:Receiver >>将他发送给Receiver
S:250 OK 好的,没问题
C:DATA >>下面我说邮件内容了啊
S:354 Start mail input; end with . 成,开始吧,结束的时候记得用“回车换行+小数点+回车换行”噢
C:XXXXXXXX >>书写邮件中
C:XXXXXXXX
C:. >>回车换行+小数点+回车换行
S:250 OK 成,邮件开始发送了
C:QUIT >>好,那么谢谢了,我就走了
S:221 Bye Good Bye


From:落伍 http://www.im286.com/thread-3125586-1-1.html

架设邮箱、MX设置、邮件反垃圾、Mail、相同主机名的MX记录与CNAME记录不能共存

架设邮箱步骤

1.开放端口
1) 如果服务器在防火墙后面,注意防火墙要开25/110/80三个TCP端口
2) 如果服务器在路由器后面,注意路由器要做25/110/80端口映射

2.域名MX的设置
1)新建一条A记录: mail.tzgx.net,IP地址为您的服务器地址: 123.123.123.123。
2)新建一条MX记录,设置为mail.tzgx.net

3.安装企业邮箱系统

4.是否成功检测

①telnet 127.0.0.1 25(local地址)
成功会看到220 tzgx.net DBMail/Pro VER 3.99....等反馈信息。
如果不成功,说明SMTP服务没有正常运行。
原因常是两种:
1)服务器上已运行了微软的SMTP服务,需要去IIS中关闭默认SMTP服务。
2)杀毒软件禁止了DBMail接管25端口,需要去杀毒软件中设置为允许。

②telnet 192.168.0.3 25(本机内网地址)
如果不成功,请去检查防火墙中是否开启了25端口。有的杀毒软件也会禁掉25端口,请同样去检查一下。
如果这个通了,则说明邮件服务在局域网范围内已经OK。

③telnet 123.123.123.123 25(外网IP)
如果不成功,请去检查您的路由器中是否做好了25端口的端口映射(或叫端口转发)。这个要到路由器的控制面板中去做设置,即映射25端口从路由器到192.168.1.2。有少数的客户还有2级路由,那么则注意要做二级路由映射。

④nslookup -qt=mx tzgx.net
这一步是查询tzgx.net的MX设置



也可以到http://www.dbmailserver.com/mx.php查询域名MX记录是否已经生效;
查询端口:http://www.emule.org.cn/porttest
注:MX设置以后常需要几分钟到48小时才能在整个互联网中生效,如果您刚刚设置过MX则要等待一段时间后再试。

⑤telnet mail.tzgx.net 25
这一步得到的反馈应该与telnet 127.0.0.1 25是一样的。如果不成功,则应该第3步和第4步就有问题,请回过头去检查第3步和第4步。

⑥和Gmail,263,163,Sina等互发邮件测试