通用快速检测邮件故障思路方法【转】

信息发达的今天,做为人们工做与生活的必不可少的工具,邮件技术与相关人才是何其重要。因此按纳不住,抛一块砖,但愿能引发你们的共同关注,多多共同研究邮件方面的技术。web

邮件服器软件种类繁多,但大都离不开SMTP(简单邮件传输协议),本文就从SMTP协议入手讲解如何检测通常性邮件故障。因此这里没必要考虑你用的是EXCHANGE仍是IMAIL等等。数据库

故障设置案例:服务器

忽然发现:本身的公司的邮件:mymail@me.com 不能发邮件给 abc@163.com 了?网络

老板问你:为何?dom

常见可能故障:koa

1.对方邮箱爆满,附件超过对方邮箱容许容量。ide

2.对方DNS故障。工具

3.对方邮件服务器故障。学习

4.对方拒绝收取你的邮件。测试

5.其余方面故障,为省篇幅这里不作讨论。

开刀啦。

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

通常邮件传送失败,服务器都会给你NDR(NOT DELIVERY REPORT未送达报告)。经过阅读报告能得到不少信息。

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

而相似:HOST NOT FIND,COMMUNICATION FAILURE的NDR或者干脆什么信息都没有的呢就须要咱们进一步测试了。这也是今天我主要想说的。

2、NSLOOKUP打先锋。

做用:他的用途很普遍,基本上做为一个学网络尤为是广域网的人要对这个命令很是熟悉。这里咱们用他来完成如下任务:

1.测试对方的域名是否能够解析,若是不能解析则可能这一时刻对方的DNS服务器故障。致使通信邮件发送失败。

2.得到对方的MX(邮件)纪录

从NDR中咱们能够获得一些信息,HOST NOT FIND(主机未找到),COMMUNICATION FALURE(通信失败),这些提示都显示着网络的某个地方出现了故障。因此咱们就要先从这里下手。事实上当我从DNR中得不到任何有帮助的信息的时候我也是先这样开始的:

运行:CMD 键入:NSLOOKUP 命令。(WINDOWS系列需NT级系统才有,你可使用在CMD中HELP命令得到NSLOOKUP的使用指南)。

进入操做界面,操做提示符以下:

>

表示开始接受命令状态。

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

第一个:SERVER

进入NSLOOKUP后,系统会将默认的SERVER设置为你当前得到的DNS SERVER。显示以下

默认服务器: localhost

Address: 127.0.0.1

>

有时候由于CACHE的缘由,咱们须要用外部更好的DNS SERVER来帮助咱们完成测试。好比我LAN网内的DNS为127.0.0.1,为了更快更好的得到结果,我须要用电信的DNS服务器来帮我完成测试,则敲入:

键入:

>server dns.cd.hn.cn

显示为:

默认服务器: dns.cd.hn.cn

Address: 220.168.208.3

>

表示当前默认的DNS解析服务器更改成220.168.208.3,随后咱们敲入的请求都将从这台服务器得到反馈。咱们能够测试一下键入:

> www.163.com

服务器: localhost

Addresses: ::1

          127.0.0.1

非权威应答:

名称:    www.cache.split.netease.com

Addresses: 220.181.28.51

          220.181.28.52

          220.181.28.53

          220.181.28.54

          220.181.28.50

Aliases: www.163.com

这里获得的是www.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

获得不一样结果以下:

服务器: localhost

Addresses: ::1

          127.0.0.1

非权威应答:

163.com MX preference = 50, mail exchanger = mx.mail.163.split.netease.com

mx.mail.163.split.netease.com   internet address = 220.181.12.59

mx.mail.163.split.netease.com   internet address = 220.181.12.60

mx.mail.163.split.netease.com   internet address = 220.181.12.61

mx.mail.163.split.netease.com   internet address = 220.181.12.62

mx.mail.163.split.netease.com   internet address = 220.181.12.63

mx.mail.163.split.netease.com   internet address = 220.181.12.64

mx.mail.163.split.netease.com   internet address = 220.181.12.65

mx.mail.163.split.netease.com   internet address = 220.181.12.66

mx.mail.163.split.netease.com   internet address = 220.181.12.67

mx.mail.163.split.netease.com   internet address = 220.181.12.68

mx.mail.163.split.netease.com   internet address = 220.181.12.69

mx.mail.163.split.netease.com   internet address = 220.181.12.70

mx.mail.163.split.netease.com   internet address = 220.181.12.71

mx.mail.163.split.netease.com   internet address = 220.181.12.72

mx.mail.163.split.netease.com   internet address = 220.181.12.73

mx.mail.163.split.netease.com   internet address = 220.181.12.74

mx.mail.163.split.netease.com   internet address = 220.181.12.75

mx.mail.163.split.netease.com   internet address = 220.181.12.76

mx.mail.163.split.netease.com   internet address = 220.181.12.77

mx.mail.163.split.netease.com   internet address = 220.181.12.51

mx.mail.163.split.netease.com   internet address = 220.181.12.52

mx.mail.163.split.netease.com   internet address = 220.181.12.53

mx.mail.163.split.netease.com   internet address = 220.181.12.55

mx.mail.163.split.netease.com   internet address = 220.181.12.56

mx.mail.163.split.netease.com   internet address = 220.181.12.57

mx.mail.163.split.netease.com   internet address = 220.181.12.58

由上可知,邮件纪录会发送给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 [dns.cd.hn.cn] timed-out

相似的结果。请试多几回。

好了,找到了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 163.com Anti-spam GT for Coremail System (163com[071018])

虽然该条信息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 OK  

[若是正常,则给出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 (163coms[14ecc65ff3fdc52ceba9a1aac95f83d9s])

经过使用如下命令登陆到邮箱开始通信:

USER [domain / Windows_NT_account /] Exchange_mailbox

如:user abcd

随后将显示如下回应:

+OK core mail

输入如下命令:

PASS 邮箱的密码

随后将显示如下回应信息,根据不一样的服务器而不一样。:

+OK 3 message(s) [178607 byte(s)]

输入如下命令列出邮箱中的全部邮件:

LIST

将显示下面的回应信息(取决于邮箱中的邮件数,该信息会有变化):

+OK 69 3286469

1 3035

2 142802

3 32770

.

邮件编号是左侧的数字

输入如下命令来检索邮件:

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 上的邮箱之间的通信问题。

相关文章
相关标签/搜索