冼明星
【背景】
最近遇到了一个客户的Exchange邮箱服务器完全崩溃,已经两天无法收发任何邮件了。客户联系到我,我远程检查了Exchange服务器,发现大量文件被恶意篡改了文件后缀,导到Exchange相关的服务大部分都无法启动。
进一步确认检查邮箱数据库edb文件的状态,为Clean Shutdown,这样就比较肯定数据是没有问题的。
【恢复方案】
根据以上的情况,初步定了三种解决方法:
1.批量修改被恶意篡改的文件的后缀;
2.采取恢复安装的方式安装一台Exchange服务器,重新挂载edb文件;
3.采取普通安装的方式安装一台Exchange服务器,重新挂载edb文件。
根据以往的经验:
Ø采取方案1,很难确认是否所有被恶意篡改的文件完全修复,而且文件内容是否正确,是难以保证的,最终决定弃用此方案;
Ø采取方案2,恢复安装的方式,直截了当,而且在很多情况都使用过,比较有把握的做法;
Ø方案3作为备用方案,在方案2实在无法恢复的情况下采用。
【恢复过程】
1.备份
作为一名合格的IT人员,在做变更前,充分的备份非常重要。因此,在恢复前,对AD和Exchange邮箱数据库做了备份,非常耗时则是在所难免的了。
2.恢复
采取恢复安装方式,直奔主题,安装一台与原Exchange服务器操作系统一样的服务器,当然,Exchange的版本也安装原版本Exchange 2013 CU3。
恢复安装其实就是用的原来的服务器的计算机名,重新加域,通过setup /m:RecoverServer /IAcceptExchangeServerLicenseTerms命令实现恢复安装,本以为一台干净的服务器,安装会是非常顺利,不料在安装传输服务接近完成的最后步骤,传输服务始终无法启动。
根据提示排查,尝试过将IpV6启用或完全禁用、手动接传输服务启动,然后再运行以上命令重新安装,此时却提示,因上次安装失败,提示可以通过控制面板先卸载,或是直接运行setup文件来重新安装。
而实际上,这样的提示毫无意义,因为按提示来操作,都是不可能卸载或继续安装的。好吧,继续排查,在博客中有提示安装Exchange时的注册表值的影响。果真,好不容易找到了相关的注册表,把HubTransport里的注册表的Action和WaterMark两个键值删除,这下再通过恢复安装命令,就又可以重新开始安装传输角色了。
无奈,还是传输服务无法启动。这不就陷入死循环了?
之后,在另外一篇博客里提到,可以采用跳过不安装指定某个角色的方式,先安装其他角色,待其他角色安装成功。这次思路又来了,完全可以把邮箱角色和客户端访问角色安装了,传输角色即使安装不了,也可以增加一台新的Exchange服务器安装传输角色,让另外一台来承担传输的功能。
好吧,就这样干了,使用setup /mode:install /roles:mb /IAcceptExchangeServerLicenseTerms和setup /mode:install /roles:ca /IAcceptExchangeServerLicenseTerms分别安装邮箱角色和客户端访问角色,但问题又来了,在接近完成安装邮箱角色的时候,会启动邮件提交服务,这下再次崩溃,邮件提交服务无法启动,这是要陷入另外一个死循环的节奏?
事实上,确实如此。在已接近崩溃边缘的时候,果断要求要一台Windows Server 2012 R2的服务器来恢复安装,不过结果证明,错误是完全一样的。
那只能认倒霉,恢复安装,并不好使。
启用方案3,使用一台Windows Server 2012 R2通过普通安装的方式安装Exchange 2013 CU3,这里的普通安装与恢复安装,区别就在于计算机名是否与原Exchange服务器的计算机名一样,这个我相信搞Exchange的ITer都知道。
下面便是下一步下一步图形界面点击安装,很愉快地竟安装成功了,泪留满面还来不及,赶紧新建一个新的数据库,此处是db2,把原邮箱数据库db1的整个文件夹拷贝到新的数据库指定的路径下,下面便是采用数据库的修复了。
使用ESEUTIL /R命令软修复数据,失败。
使用ESEUTIL /P及ESEUTIL /D命令硬修复数据,成功了。
之后便是挂载db2数据库,并将db1的邮箱指向到db2,命令为:Get-Mailbox –Database db1 | Set-Mailbox –Database db2,批量完成了邮箱路径的指向。
3.使用测试
访问邮箱管理中心ECP,那熟悉的界面又回来了。
访问OWA界面,邮件还在。
到此可以宣告数据恢复成功了。
4.后续配置
虚拟目录路径、验证方式等配置需要按照生产环境原来的配置修改,则更大程度上恢复了用户访问端的体验,此处就不详细描述了。