5dmail精华帖:通用快速检测电子邮件故障思路方法

 邮箱网  0条评论  18445次浏览  2013年01月18日 星期五 10:04

分享到: 更多
【导语】电子邮件出现了问题怎么办?企业邮箱出现了问题怎么办?自建的邮件系统出现了问题怎么办?当然,我们可以通过邮件厂商的400热线来寻求解决办法,但是包括域名、DNS以及反垃圾、系统配置等若干问题的其中任意一个环节出现了问题,均会导致电子邮件通信过程的不畅。

就像医生诊脉的望闻问切,邮件的故障与问题同样需要一些工具与方法,当然,也需要经验的积累与沉淀,非常高兴可以将邮件技术资讯网的文章推荐给邮件用户及读者。

[I]关于寻求问题解决方法

邮件服务器不能正常提供服务是很令人恼火的,心急也是大家的一个共同点,要求帮助解决问题却不提供详细的信息实在有点让人苦笑不得,而心急就不能很好的解决问题,鉴于此,本人建议大家在发帖子时考虑附加如下信息:

一、如果是服务器经常当机,工作不稳定,请考虑提供:

1、服务器硬件配置
2、服务器软件配置,包括使用的OS, SERVICE PACK版本、HOTFIX版本、安装的软件、已有的服务
3、机房环境,包括电源供应情况,数据线路情况
4、之前进行过的操作。

二、如果是邮件服务器故障,尤其是SMTP故障,请考虑提供:

1、主机的SMTP LOG文件(非常重要)
2、服务器使用的线路,是静态还是动态IP
3、服务器使用的DNS,DNS IP地址。
4、服务器或者是整个网络的配置情况,例如单网卡还是双网卡、有无防火墙、有无路由器(这里指正规路由器,而不是市场上所谓的ADSL ROUTER等这样的共享器)。
5、服务器上面已有的服务。
6、你目前邮件服务器软件,特别是SMTP的设置情况。
7、发不了邮件的退信或是错误信息是什么?
8、收不了邮件,发件方有没有退信或是错误信息? 
总之希望大家能尽可能把情况说情楚,以期大家能尽快了解问题,及解决问题!谢谢!

[II]电子邮件只能收不能发的几种可能原因

1.DNS 服务器的设置不对。 
2. DNS 服务器不正常工作。 
3. MX 记录不对或者没有刷新 
4.邮件服务器处于防火墙等后面,防火墙等的设置影响了邮件的发送。 
5.如果处于防火墙或路由等后面,没有设置好端口映射。 
6.由于处于防火墙等后面, DNS 解析无法解析到正确的邮件服务器地址或者 MX 记录 
7.服务器上同时运行了其他的 smtp 服务。 
8.服务器安装了某些代理服务器软件(如 wingate ),没有正确的配置代理服务器。 
9.服务器上安装了个人电脑用的防火墙软件(如 Norton Person Firewall),没有作好正确的配置。 
10.IP 可能被BLACK LIST 
11.请学会使用以下网站功能.

A.检查域名及相关记录

http://www.dnsreport.com/(检查域名及相关记录问题.)

http://www.dnsstuff.com/ (检查域名及相关记录问题.)

http://network-tools.com/nslook/Default.asp  (查检域名及相关记录问题.) 

B.查询自己的IP是否被列为垃圾邮件黑名单

http://www.dnsbl.info/(查询自己的IP是否被列为垃圾邮件黑名单)



(在IP=后填入你现在的IP地址用来查询你被多少RBL List)



C.有关SPF记录 


[III]通用快速检测邮件故障思路方法

本文作者:Freemikej (感谢Freemikej)

发一篇我几年前写的一些文章。因为看见很多朋友对于邮件故障的检测不是很熟。所以希望我的文章内对大伙有启发。

最早发表于2005年一个朋友的网站。

信息发达的今天,作为人们工作与生活的必不可少的工具,邮件技术与相关人才是何其重要。所以按纳不住,抛一块砖,希望能引起大家的共同关注,多多共同研究邮件方面的技术。

邮件服器软件种类繁多,但大都离不开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邮件纪录,下面开始真正的检测之旅吧,如果你是新手,你一定会觉得下面的检测居然这么神奇。下一节你在检测的同时,你也会明白垃圾邮件,匿名邮件产生的原理了。

上一篇文章我说到,如何判定DNS是否故障,以及如何获得对方域名的MX纪录。如果我们能正确获得上述信息也就说明不存在该类问题。则我们进行下一步的检测。

本章我将介绍如何使用 telnet 来检测运行简单邮件传输协议 (SMTP) 服务的邮件服务器上,以解决 SMTP 通信问题。默认情况下,SMTP 侦听端口 25。

在启动 Telnet 会话之前,必须具有要将此测试邮件发送到的目标用户的完整 SMTP 电子邮件地址。该电子邮件地址必须采用以下格式: 

User@Site.Domain.com
本例中对应为:
abc@163.com
我们已经使用NSLOOKUP获取 Internet 邮件交换器记录163.com的为:mx.mail.163.com 

在CMD窗口中键入:
c:\>telnet mx.mail.163.com 25
TELNET 使用格式:telnet 服务器名 端口号

获得以下信息:
220 Coremail SMTP(Anti Spam) System (163com[20050206])
虽然该条信息220后面的信息可能根据运行的邮件服务器软件不同而不同,但是符合运行有SMTP服务,并且已经正常启动了的话,那么都会给出220消息。所以,如果你已经获得了220信息,则说明已经成功连接到该服务器。

如果得到其他信息如:
Could not open connection to the host, on port 25: Connection failed
其他信息,则可以说明对方邮件服务存在故障,如服务器当机,相关服务没有启动等。导致邮件发送失败。
假设现在不存在该故障,我们获得了220信息。我们将进一步检测故障。

注意:

1.Microsoft Telnet 不允许您使用 Backspace 键。如果在键入时出错,必须按 Enter 键,然后开始键入新的命令。

2.有些 Telnet 应用程序要求您打开本地回显功能,以查看键入的命令。要在 Microsoft Telnet 会话中执行此操作,请在命令提示符处键入 set local_echo。 

在 Microsoft Windows XP 中,应键入 set localecho 而不是 set local_echo。

3.提示:500 Command not recognized

检查该命令并再次键入它,或者验证您是否正在与 Microsoft SMTP 服务器直接通信。

请按照我的说明观察以下步骤,红色字体为我敲入的命令。黑色部分为显示结果,中括号中是我写的说明:

220 Coremail SMTP(Anti Spam) System (163com[20050206])
helo me.com 
[ helo是SMTP动词集中的一个动词,me.com是告诉他将与他通讯的是me.com这个域名]
250 mx11    
[如果正常,则给出250消息。可能的故障为:me.com blocked.则说明你的域名已被该服务器阻止,不能向他发送邮件。解决办法:与对方管理员沟通将域名放行。]
mail from:mymail@me.com 
[mail from: 告诉他发件人是谁:mymail@me.com 注意,有些邮件服务器会对邮件地址进行反向检测,所以尽量使用存在的EMAIL地址,否则可能提示错误。]
250 Ok
[如果正常,则给出250消息。可能的故障为: XXX blocked/refused之类的信息.则说明你的域名或邮件地址已被该服务器阻止,不能向他发送邮件。特别说明:NORTON SMTP GATEWAY 等软件都可以设置域名,垃圾邮件过滤,他们会参照一些大型的垃圾邮件管理组织的数据库,如果你的IP已经被列入其中,则这些邮件服务器也会自动将你的邮件BLOCK掉,解决办法:与对方管理员沟通将域名或邮件地址加入例外中放行,或找ISP与垃圾邮件管理组织沟通将IP解锁]
rcpt to:abc@163.com
[如果正该域中存在这个邮件地址则给出250消息,否则550消息如下:]
550 <abc@163.com>: Invalid User 
[此处,我们得到我们的故障,abc@163.com不存在,或者被禁用所以不能向他发送邮件。故障解决。以下步骤我们学习使用TELNET直接向某邮件地址发送邮件]
rcpt to:webmaster@163.com
250 Ok
data 
[表示下面为邮件内容]
354 End data with <CR><LF>.<CR><LF> [如果提示邮件内容结束时需要以" . "(半角句号)+回车 结束]
subject:test mail form me.com 
[subject: 表示后面是邮件的标题,两次回车(为什么?参见相关SMTP相关文档)后开始输入邮件正文。]
as the title.
. [一个回车后输入 . 号一定要有哦]
250 Ok: queued as SkDBJDx3U0IpFdsF.1
[邮件已放入发送队列中,有些服务器直接发送出去]
quit
号[退出TELNET]
221 Bye
Connection to host lost.

好了。如果通过以上步骤,我们基本上可以了解到邮件发送到各个环节是是否存在故障,如果顺利通过而你仍然不能通过OUTLOOK或者其他软件向该邮箱地址发送邮件的话,则说明故障存在与其他部分,这里我们就不讨论了。留给后面的同志跟上吧。

第三节中我们将讲如何测试POP3协议是否运行正常。

设置问题:不能使用POP3协议接受邮件是我的问题,还是服务器问题?

第三节中我们将讲如何测试POP3协议是否运行正常。

设置问题:不能使用POP3协议接受邮件是我的问题,还是服务器问题?

本文介绍如何远程登录 (Telnet) 到邮件服务器的 110 端口。 

备注: 输入每一行之后请按 ENTER 键: 

运行以下命令启动 Telnet 会话,格式如下: 

Telnet 服务器IP或域名 110
如telnet pop3.163.com 110
如果建立了连接,将显示来自服务器的一个说明服务器版本的信息,它类似如下: 
+OK Welcome to coremail Mail Pop3 Server (163com[20050206]) ( server_name . domain .com) 
通过使用以下命令登录到邮箱开始通讯: 
USER [domain / Windows_NT_account /] Exchange_mailbox
如:user abcd
随后将显示以下回应: 
+OK core mail
输入以下命令: 
PASS 邮箱的密码
随后将显示以下回应信息,根据不同的服务器而不同。: 
+OK 9 message(s) [5622801 byte(s)]
输入以下命令列出邮箱中的所有邮件: 
LIST
将显示下面的回应信息(取决于邮箱中的邮件数,该信息会有变化): 
+OK 
1 2895
2 1160
3 11050
4 126278
5 1503752
6 2858596
7 3352
8 54042
9 1061676
邮件编号是左侧的数字 

输入以下命令来检索邮件: 
RETR message number
如:
retr 1
使用邮件编号选中的邮件将显示在回应信息中,类似如下: 
+OK 1160 octets
Received: from bj.163.com (unknown [202.108.248.91])
        by mx10 (Coremail) with SMTP id GMDGY+9I3kEY8KsE.1
        for <abcd@163.com>; Fri, 07 Jan 2005 16:31:43 +0800 (CST)
X-Originating-IP: [202.108.248.91]
Received: from bj66.163.com (unknown [202.108.248.66])
        by bj.163.com (Postfix) with ESMTP id CEA05180A2
        for <abcd@163.com>; Fri,  7 Jan 2005 16:32:19 +0800 (CST)
Message-ID: <9175756.1105086779838.JavaMail.root@bj66.163.com>
From: "网易部落" <admin@bulo.163.com>
To: abcd@163.com
Subject: =?GBK?B?u7bTrcT6vNPI68340teyv8LkoaM=?=
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
charset: gb2312
Date: Fri,  7 Jan 2005 16:32:19 +0800 (CST)
下面是邮件的征文省略。
退出
quit
+OK core mail
这个过程有助于诊断和解决 POP3 客户端和位于 Exchange Server 上的邮箱之间的通讯问题。



丁国茂,Exchange方向微软最有价值专家,邮件技术资讯网(http://www.5dmail.net)创始人。精通Exchange Server企业邮件系统,了解各类邮件系统软件部署和运维,并长期关注邮件行业发展。曾先后参与多家公司邮件系统项目实施,担任邮件系统技术顾问工作,并为众多事业单位、企业提供培训和技术支持服务。

2001年,丁国茂辞去了在家乡中学稳定的教师工作,来到了广东中山,成了一家台资企业的网管。上班的第一个项目便是为公司构建一台邮件服务器。从此他对邮件技术,特别是对Exchange Server产品产生了浓厚的兴趣,并开始用“钉子”的网名活跃在网易,Winmag等社区。

2003年,为了给大家提供一个学习、交流、分享邮件技术的专业平台,钉子利用业余时间创办了邮件技术资讯网(http://www.5dmail.net)。网站建设推广、回答网友技术问题,提供免费技术支持、收集转载技术文章、组织社区活动、制作邮件周刊…每每夜深人静,也许正是他埋头工作的时候。为了这个网站,他倾注了全部热忱,奉献了所有业余时间。长期的辛勤工作甚至让他不得不戴起了眼镜。

6年过去了,而今5dmail.net论坛拥有近5万名会员,帖子二十多万条,尤其是Exchange Server的技术帖子就占了50%,成为中国Exchange Server 技术最具影响的论坛之一。一向热心帮助网友的钉子也成了网友心目中的“邮件技术专家”。凭着不懈的坚持,对技术钻研热情,,邮件系统顾问和讲师成了他现在从事的工作。当初的爱好,成了他的职业,当自己由一个普通的网管成为一位Exchange Server方向的微软最有价值专家(MVP)时,他感慨的说:“在技术分享的过程中,我不仅为能帮助不少网友而欣慰,而且为在这过程中不断的学习和提高而满足。”

(酷邮差)

标签:电子邮件Exchange5dmail丁国茂钉子邮件故障DNSnslookuptelnetspam

我的评论:

请  后发表评论。