前段时间单位的邮件服务器出现了一些问题,经过一番分析和实验现在恢复了正常,这里介绍一下这次抢修的过程和其中的一些细节,希望能对以后的类似问题的解决提供一点借鉴。
关于这次发生的邮件服务器无法发送邮件的事故,存在一些特殊的地方。这里说的特别是指,和大多数邮件服务器的事故相比,它有一个很明显的特点,就是无法向外部发送邮件,而本域的传输却是正常的。另外,对于收取邮件也没有任何问题,所以显然故障应该局限在在
smtp
这块。但这是一个看似理所当然的结论,或者至少说是一个很粗浅的结论。而且如果简单地按照这个方向去解决,将碰到更加不可收拾的局面,很遗憾我恰恰就是这样被套进去的。因为
exchange
与
iis
有绑定关系,卸载并重新安装
iis
中的
smtp
组件将导致
exchange
无法正常工作,不得不
reinstall
。
为了更多地了解邮件发送过程中的细节,需要打开
exchange
的邮件跟踪,这样就可以对于一些试验用的收发行为进行针对性地分析,找出问题发生的确切位置。之后,分别发送了一份本域邮件和通往
yahoo
的邮件,在跟踪中发现本域邮件最终的处理结果是成功地从本地对列发送至目标,而通往
yahoo
的邮件则停止在路由阶段,这么看来是出在路由的问题上。在同时打开的
isa2004
实时跟踪中,当邮件停止在路由阶段的这个时间段,
isa2004
上没有收到一个来自
exchange
服务器的数据包。由此可以推断路由失败的地点是在
exchange
服务器,而和
isa2004
没有关系。
这样抽丝剥茧地分析,得出了
exchang
路由失败的结论。那么什么是
exchange
路由呢?我个人认为与一般意义上的路由相比,它是将邮件域名解析为可用的
ip
地址,然后再通过服务器或交换机已知的路由发送给下一个结点的过程。这其中涉及到一个前期
dns
解析过程,而这也是真正问题最可能出现的地方,说到底还不是和路由本身有关。
通常情况下,无论
win32
还是
linux
,操作系统的
dns
配置发生在本地网卡的设置中,通过试验证明这样不可行,邮件在发送过程中依然停止在路由阶段,说明
exchange
不依赖于系统
dns
解析。经过仔细查找,在
exchange
中的服务器的协议组
smtp
一项里,有一个
smtp
虚拟服务器,这其实就是和
iis
的关联所在,因为在
iis
中也可以看到它。而这个虚拟服务器便是被
exchange
连接器用来发送外部邮件的,将其中的传递选项卡中的
dns
配置为正常可用的服务器地址即可。
讲到这里,问题大致解决了,但是好好的用了四年多了的邮件服务器怎么会出现
dns
问题?这还要从一年多前的换网说起,当时由于各种各样的原因,最终决定将网络由联通换到了电信,在
isa
上对各个设置也相应做了修改,但是由于当时联通的
dns
依然有效并且
dns
解析的数据量并不大,使得
exchange
服务器表现得很正常,因而忽略了
exchange
上也需要作出相应的变动。随着最近本地联通
dns
服务器的故障,
exchange
的运行也表现得很不稳定。而在这次邮件服务器完全故障之前,有不少联通的个人用户向我抱怨说
qq
能登陆但网页打不开,这是典型的
dns
失效表现,只是没有将它与这次故障联系起来考虑。
理论的知识只有在实践中才能被真正掌握,“书上得来终觉浅,绝知此事要躬行”讲得就是这个道理。这次事故也说明,一步步地分析并定位确切故障是很重要,这个过程来不得一点急躁,不然可能会造成火上浇油的后果。