• 2008-10-20

    (转载)通用快速检测邮件故障思路方法(一) - [技术资料]

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://hifotech.blogbus.com/logs/30424783.html

    信息发达的今天,作为人们工作与生活的必不可少的工具,邮件技术与相关人才是何其重要。所以按纳不住,抛一块砖,希望能引起大家的共同关注,多多共同研究邮件方面的技术。
    邮件服器软件种类繁多,但大都离不开SMTP(简单邮件传输协议),本文就从SMTP协议入手讲解如何检测一般性邮件故障。所以这里不必考虑你用的是EXCHANGE还是IMAIL等等。
    故障设置案例:

    突然发现:自己的公司的邮件:mymail@me.com 不能发邮件给 abc@163.com 了?
    老板问你:为什么?
    常见可能故障:
    1.对方邮箱爆满,附件超过对方邮箱允许容量。
    2.对方DNS故障。
    3.对方邮件服务器故障。
    4.对方拒绝收取你的邮件。
    5.其他方面故障,为省篇幅这里不做讨论。
    开刀啦。

    一、分析故障从读NDR开始。

    一般邮件传送失败,服务器都会给你NDR(NOT DELIVERY REPORT未送达报告)。通过阅读报告能获得很多信息。

    NDR通常是英文的,夹带着N多数据如MSID,组织,目的地等,显得有点乱。不过幸好这种故障NDR都会比较容易的捕捉汇报,通常包含size exceed; data exceed等就说明对方邮箱已满或者附件过大。

    而类似:HOST NOT FIND,COMMUNICATION FAILURE的NDR或者干脆什么信息都没有的呢就需要我们进一步测试了。这也是今天我主要想说的。
    二、NSLOOKUP打先锋。

    作用:他的用途很广泛,基本上作为一个学网络尤其是广域网的人要对这个命令非常熟悉。这里我们用他来完成以下任务:

    1.测试对方的域名是否可以解析,如果不能解析则可能这一时刻对方的DNS服务器故障。导致通讯邮件发送失败。
    2.获得对方的MX(邮件)纪录
    从NDR中我们可以得到一些信息,HOST NOT FIND(主机未找到),COMMUNICATION FALURE(通讯失败),这些提示都显示着网络的某个地方出现了故障。所以我们就要先从这里下手。事实上当我从DNR中得不到任何有帮助的信息的时候我 也是先这样开始的:

    运行:CMD 键入:NSLOOKUP 命令。(WINDOWS系列需NT级系统才有,你可以使用在CMD中HELP命令获得NSLOOKUP的使用指南)。
    进入操作界面,操作提示符如下:
    >
    表示开始接受命令状态。

    我只讲解两个有用的关键词

    第一个:SERVER

    进入NSLOOKUP后,系统会将默认的SERVER设置为你当前获得的DNS SERVER。显示如下
    >Default Server:   dns.me.com
    >Address:   10.10.10.2

    >

    有时候因为CACHE的原因,我们需要用外部更好的DNS SERVER来帮助我们完成测试。比如我LAN网内的DNS为10.10.10.2,为了更快更好的获得结果,我需要用广东省的铁通的DNS服务器来帮我完成测试,则敲入:

    键入:
    >SERVER 211.98.2.4

    显示为:
    >Default Server:   ns.cn-railway.net
    >Address:   211.98.2.4

    >
    表示当前默认的DNS解析服务器更改为211.98.2.4,随后我们敲入的请求都将从这台服务器获得反馈。我们可以测试一下键入:
    > 163.com
    Server:   [ ns.cn-railway.net]
    Address: 211.98.2.4
    Non-authoritative answer:
    Name: 163.com
    Addresses:   202.106.168.103, 202.106.168.104, 202.106.168.109, 202.106.168.121
          202.108.36.153

    这里得到的是163.com域名中www这个主机的IP。一般情况下只会有一个IP纪录。为什么有这么多呢?这里牵涉到DNS循环来解决服务器负担问题。我们不做详细介绍。

    第二个:SET TYPE=MX (SET Q=MX)

    通常进入NSLOOKUP,默认操作类型为A纪录.但是我们要解决的是邮件问题,当然需要查看的是邮件MX纪录。也就是发送给 abc@163.com 的邮件会送到哪台邮件服务器上去。 这条命令就告诉服务器,我需要获得该域名的邮件纪录。set type=mx set q=mx 效果是一样的。当然如果你要察看A纪录,也可以用set q=A 切换。
    键入命令:
    >set q=mx
    再敲:
    >163.com
    得到不同结果如下:
    Server:   [ ns.cn-railway.net]
    Address: 211.98.2.4
    Non-authoritative answer:
    163.com MX preference = 50, mail exchanger = mx.mail.163.com

    mx.mail.163.com internet address = 202.108.44.208
    mx.mail.163.com internet address = 202.108.44.209
    mx.mail.163.com internet address = 202.108.44.210
    mx.mail.163.com internet address = 202.108.44.211
    mx.mail.163.com internet address = 202.108.44.215
    mx.mail.163.com internet address = 202.108.44.223
    mx.mail.163.com internet address = 202.108.44.224
    mx.mail.163.com internet address = 202.108.44.228
    mx.mail.163.com internet address = 202.108.44.133
    mx.mail.163.com internet address = 202.108.44.154
    mx.mail.163.com internet address = 202.108.44.155
    mx.mail.163.com internet address = 202.108.44.180
    mx.mail.163.com internet address = 202.108.44.203
    mx.mail.163.com internet address = 202.108.44.207

    由上可知,邮件纪录会发送给mx.mail.163.com这台服务器。同样下面列出很多条纪录对应到不同IP,都是处于缓解服务器负担,以及备用,分流作用。

    特别注意:
    1.请多更换几台DNS服务器进行测试,因为不同的DNS会因CACHE不同而得到不同的结果。这样比较准确的判断是否为对方的DNS故障,或者是自己的DNS服务故障。
    2.如果使用NSLOOKUP在同一DNS服务器上测试多次以及在不同的服务器上测试多次,如果无法得到A纪录或者无法得到MX纪录。则说明对方的DNS出现问题。所以导致无法通讯,发送邮件。某些时候因为网络原因会得到
    DNS request timed out.
    timeout was 2 seconds.
    *** Request to [211.98.4.1] timed-out

    类似的结果。请试多几次。

    好了,找到了MX邮件纪录,下面开始真正的检测之旅吧,如果你是新手,你一定会觉得下面的检测居然这么神奇。下一节你在检测的同时,你也会明白垃圾邮件,匿名邮件产生的原理了。

    http://www.musemailsvr.com

    收藏到:Del.icio.us