文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» Mail服务器 » 通用快速检测邮件故障思路方法       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: 通用快速检测邮件故障思路方法  ( 查看:319  回复:3 )   
 
xiaoxinlucky
助理工程师  点击可查看详细


十二生肖之鼠   双子座   行业勋章   技术勋章   诚信兄弟  
帖子 603
精华 12
无忧币 2017
积分 1392
阅读权限 40
来自 (保密)
注册日期 2007-12-12
最后登录 2008-6-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-22 10:41   标题:通用快速检测邮件故障思路方法
上一帖 |


QUOTE:
  邮件服器软件种类繁多,但大都离不开SMTP(简单邮件传输协议),本文就从SMTP协议入手讲解如何检测一般性邮件故障。所以这里不必考虑你用的是EXCHANGE还是IMAIL等等。

  故障设置案例:

  突然发现:自己的公司的邮件:mymail@me.com 不能发邮件给 abc@163.com 了?

  老板问你:为什么?

  常见可能故障:

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

  2.对方DNS故障。

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

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

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

  开刀啦。


QUOTE:
  一、分析故障从读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的使用指南)。

  进入操作界面,操作提示符如下:

  >

  表示开始接受命令状态。


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

  第一个: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循环来解决服务器负担问题。我们不做详细介绍。


QUOTE:
  第二个: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,都是处于缓解服务器负担,以及备用,分流作用。




最全面的资料《SQL Server数据管理》
2008-1-22 10:411楼
[ 顶部 ]
 
xiaoxinlucky
助理工程师  点击可查看详细


十二生肖之鼠   双子座   行业勋章   技术勋章   诚信兄弟  
帖子 603
精华 12
无忧币 2017
积分 1392
阅读权限 40
来自 (保密)
注册日期 2007-12-12
最后登录 2008-6-21 离线

[查看资料]  [发短消息]  [Blog
  QQ       
发表于:2008-1-22 10:44 


QUOTE:
  特别注意:

  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邮件纪录,下面开始真正的检测之旅吧,如果你是新手,你一定会觉得下面的检测居然这么神奇。下一节你在检测的同时,你也会明白垃圾邮件,匿名邮件产生的原理了。当然建议大家不要干坏事哦!


QUOTE:
  如何判定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 服务器直接通信。


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

  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 tabc@163.com

  [如果正该域中存在这个邮件地址则给出250消息,否则550消息如下:]

  550 : Invalid User

  [此处,我们得到我们的故障,abc@163.com不存在,或者被禁用所以不能向他发送邮件。故障解决。以下步骤我们学习使用TELNET直接向某邮件地址发送邮件]

  rcpt twebmaster@163.com

  250 Ok

  data

  [表示下面为邮件内容]

  354 End data with . [如果提示邮件内容结束时需要以" . "(半角句号)+回车 结束]

  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或者其他软件向该邮箱地址发送邮件的话,则说明故障存在与其他部分,这里我们就不讨论了。留给后面的同志跟上吧。


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

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

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

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


QUOTE:
  本文介绍如何远程登录 (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 ; 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 ; Fri, 7 Jan 2005 16:32:19 +0800 (CST)

  Message-ID: <9175756.1105086779838.JavaMail.root@bj66.163.com>

  From: "网易部落"

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




最全面的资料《SQL Server数据管理》
2008-1-22 10:442楼
[ 顶部 ]
 
hziee606
副版主  点击可查看详细


帖子 3012
精华 0
无忧币 2782
积分 3054
阅读权限 140
注册日期 2007-4-29
最后登录 2008-9-8 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-11 23:11 
学习学习!~ 谢谢LZ共享 ^_^



QQ:49664253 MSN:biwei_nb@hotmail.com E-mail:biwei_nb@163.com
2008-6-11 23:113楼
[ 顶部 ]
 
warud
新新人类  点击可查看详细



帖子 57
精华 0
无忧币 32
积分 57
阅读权限 20
注册日期 2008-4-12
最后登录 2008-8-1 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-6-13 15:19 
顶 谢楼主!



网络虽虚拟,技术无边界,来看看大家“真面目”!
2008-6-13 15:194楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号