作者:leconte (http://blog.oolec.com)
今天在调试一个客户邮件服务器postfix的时候遇到了传说中的551错误("551 User not local; please try [forward-path]")
错误现象是这样的,用户采用smtp认证的方式自己给自己的邮箱发信,outlook或者foxmail会报551错误或者直接报未知错误。
而如果给别的信箱发信就不会有问题,在本机采用webmail发信也很正常。
很快就可以排除是postfix邮件系统的问题,因为我登录到服务器上采用telnet手工smtp认证发信没有任何问题。
那么问题一定出现在通往邮件服务器的路由中,只能通过抓包分析了。
我在我的本机采用wireshark抓包
同时邮件服务器采用tcpdump -w packet tcp port 25将数据包保存为文件packet
然后我在本机通过smtp发信,重复错误现象,然后将两边抓到的包用wireshark分析,结果果然不出所料。
先看截图(ip地址和邮箱域名等已经被处理掉)
1。邮件服务器端的截图
图中红色圈中可以看到,mail from指令和rcpt to指令服务器都正确的返回了250 OK
但是在随后蓝色圈中突然不断收到rst中断连接。
2。本地客户端的截图
图中红色圈中可以看到,服务器返回的信息由250 OK被替换成了"551 User not local; please try [forward-path]"。
随后又是一堆的Rst中断连接。
注意,蓝色圈中是服务器的真正返回,但是这时候连接已经中断,没有意义了。
3。很明显,双方的连接在通讯途中被干预了。更能证明这一点的一个例子是ttl值的变化。
正常情况下服务器返回信息Ip包头中的ttl值是48,大约经过了16跳。
而"551 User not local; please try [forward-path]"这条消息的ttl值是50,发生什么事情已经很明显了。。
在google上可以搜索到很多关于551错误的例子,从大家的评论来看,这件事情多半是gfw干的了。
只是我不太明白的是,gfw管这个做什么,出于什么目的?:em12:
补充:根据iceblood的提醒,我检查了一下邮件服务器,果然是放在国外的。
看来邮件服务器放在国外,使用smtp自己给自己发信就会报错。
作者:leconte (http://blog.oolec.com)
[ 本帖最后由 leconte 于 2007-6-28 20:37 编辑 ]
ronaldogreat910 回复于:2007-06-28 09:15:25
顶,辛苦LZ了
abel 回复于:2007-06-28 09:19:42
這文章非常好,
不過圖看得較辛苦些,
建議樓主可以讓圖更美觀些,文字再大一些
以造福後進的閱讀
此外,也建議版本可以加精
chifeng 回复于:2007-06-28 13:03:02
赞。。。分析的不错。
ffxskffxsk 回复于:2007-06-28 13:13:58
俺公司一个同事的发国外的邮件就这样。郁闷死了,什么时候能好呢,或者怎么做,才能不发过去呀??
leconte 回复于:2007-06-28 13:31:33
to abel:
晚上回家我改进一下截图效果
思一克 回复于:2007-06-28 13:32:47
iceblood原来也分析过几乎同样的结果
abel 回复于:2007-06-28 14:33:32
引用:原帖由 思一克 于 2007-6-28 13:32 发表
iceblood原来也分析过几乎同样的结果
是的 !
不過 GFW 的個案太多
我認為每個個案都需要證明,這些證明如果都在 CU mail 版
效果及幫助我想對於不了解的朋友用處非常大的
ffxskffxsk 回复于:2007-06-28 14:40:36
Connection reset by ntvirus.url.com.tw 那这个是不是也是又gfw造成的?
iceblood 回复于:2007-06-28 17:13:26
这个早在去年的时候我就已经肯定了跨国际出口的邮件,如果服务器在境外,使用 SMTP自己给自己发邮件100%出错。
我当时只能对国内某些部门愕然~
因为实在是太无耻,太下流到极点了。
国内刚出问题的时候,是在2004年11月左右。当时我公司出现拦截问题,我在整个Internet都查不到任何资料。
由于当时找不到原因,被领导对我的能力怀疑了很长时间,当然那个时候到这个公司时间也不长。有些东西还没适应。
[ 本帖最后由 iceblood 于 2007-6-28 17:15 编辑 ]
abel 回复于:2007-06-28 18:33:15
我從沒有碰過,但是想也知道 reverse "DCG" 搞什麼東西
ctuyoung 回复于:2007-06-28 20:55:12
兄弟们,我有个好办法穿透GFW,大家有没有兴趣知道啊?不过需要改MTA的投递程序的
Linux@初学者 回复于:2007-06-29 10:22:48
每年一到重大节日时就出现这样的问题呀,肯定是ZF在干预
为什么用hotmail.yahoo.gmail出现错误的概率小啊?
ffxskffxsk 回复于:2007-06-29 10:50:50
今天 我也进行了抓包分析,发现同样的现象,另外是不是 自己家的防火墙 电信的路由器,对方国家的防火墙也可能出问题呢?
ffxskffxsk 回复于:2007-06-29 10:52:49
to ctuyoung:什么办法?公布下吧,我们公司现在生死存亡的关头啊,再不弄好,intel客户要发彪了!!!!
ctuyoung 回复于:2007-06-29 11:11:48
ffxskffxsk, 把邮件地址给我,我email给你,不想明盘,怕东厂的阉人们看到,这样的话这个办法就无效了
ctuyoung 回复于:2007-06-29 11:20:50
ffxskffxsk, 我PM你了,查看你的站内短信信箱就可以了
思一克 回复于:2007-06-29 11:26:15
yahoo, gmail估计是在国内有邮件SERVER,你发直接到这SERVER上了,然后走专线。
ffxskffxsk 回复于:2007-06-29 15:43:28
to ctuyoung:谢谢已经收到,正在研究
to 思一克:对于你提供的方法,不太了解,你的意思是说,让yahoo或者gmail的服务器做我们的中转服务器吗?
这样的话他们允许relay我们的邮件吗?
hongfengyue 回复于:2007-06-29 22:38:35
引用:原帖由 ctuyoung 于 2007-6-28 20:55 发表
兄弟们,我有个好办法穿透GFW,大家有没有兴趣知道啊?不过需要改MTA的投递程序的
能不能给我一份呀,我也遇到这样的问题了。包括最近的aaazzz的文件也是一大堆呀。
谢谢!
hongfengwbw # yahoo.com.cn
feiwupiaoxue 回复于:2007-07-01 21:57:47
我也碰到了这样的问题,也包括aaazzz的问题,请ctuyoung大哥也发送一封邮件给我,谢谢!unixsir at 163.c.com
ffxskffxsk 回复于:2007-07-02 13:58:42
另外还有个问题:国外发给我们的邮件也会被弹回,怎么样设置我们的inbound服务器才不会弹回国外的邮件呢?
难道也用那个方法发邮件?
ctuyoung 回复于:2007-07-02 15:57:16
To: ffxskffxsk
其实彻底解决这个问题的办法是在海外搭建镜像服务器,对outbound的邮件辨别IP网段,如果属于海外的邮件则通过镜像服务器进行转发。对于inbound服务器,设置不同的DNS view,是海外的投递方将邮件投递至镜像服务器然后再转发至原服务器。我提供的方法只是没有镜像服务器的情况下做的一种trick而已 :D
yj11 回复于:2007-07-02 16:26:21
引用:原帖由 ctuyoung 于 2007-7-2 15:57 发表
To: ffxskffxsk
其实彻底解决这个问题的办法是在海外搭建镜像服务器,对outbound的邮件辨别IP网段,如果属于海外的邮件则通过镜像服务器进行转发。对于inbound服务器,设置不同的DNS view,是海外的投递方将邮件 ...
给补充一下,别忘记加密.
ffxskffxsk 回复于:2007-07-03 11:13:54
ai.不管了,看人家怎么处理吧,反正咱又不是做主的!
|