冼明星
【背景】
最近遇到了一個客戶的Exchange郵箱服務(wù)器完全崩潰,已經(jīng)兩天無法收發(fā)任何郵件了??蛻袈?lián)系到我,我遠(yuǎn)程檢查了Exchange服務(wù)器,發(fā)現(xiàn)大量文件被惡意篡改了文件后綴,導(dǎo)到Exchange相關(guān)的服務(wù)大部分都無法啟動。
進一步確認(rèn)檢查郵箱數(shù)據(jù)庫edb文件的狀態(tài),為Clean Shutdown,這樣就比較肯定數(shù)據(jù)是沒有問題的。
【恢復(fù)方案】
根據(jù)以上的情況,初步定了三種解決方法:
1. 批量修改被惡意篡改的文件的后綴;
2. 采取恢復(fù)安裝的方式安裝一臺Exchange服務(wù)器,重新掛載edb文件;
3. 采取普通安裝的方式安裝一臺Exchange服務(wù)器,重新掛載edb文件。
根據(jù)以往的經(jīng)驗:
? 采取方案1,很難確認(rèn)是否所有被惡意篡改的文件完全修復(fù),而且文件內(nèi)容是否正確,是難以保證的,最終決定棄用此方案;
? 采取方案2,恢復(fù)安裝的方式,直截了當(dāng),而且在很多情況都使用過,比較有把握的做法;
? 方案3作為備用方案,在方案2實在無法恢復(fù)的情況下采用。
【恢復(fù)過程】
1. 備份
作為一名合格的IT人員,在做變更前,充分的備份非常重要。因此,在恢復(fù)前,對AD和Exchange郵箱數(shù)據(jù)庫做了備份,非常耗時則是在所難免的了。
2. 恢復(fù)
采取恢復(fù)安裝方式,直奔主題,安裝一臺與原Exchange服務(wù)器操作系統(tǒng)一樣的服務(wù)器,當(dāng)然,Exchange的版本也安裝原版本Exchange 2013 CU3。
恢復(fù)安裝其實就是用的原來的服務(wù)器的計算機名,重新加域,通過setup /m:RecoverServer /IAcceptExchangeServerLicenseTerms命令實現(xiàn)恢復(fù)安裝,本以為一臺干凈的服務(wù)器,安裝會是非常順利,不料在安裝傳輸服務(wù)接近完成的最后步驟,傳輸服務(wù)始終無法啟動。
根據(jù)提示排查,嘗試過將IpV6啟用或完全禁用、手動接傳輸服務(wù)啟動,然后再運行以上命令重新安裝,此時卻提示,因上次安裝失敗,提示可以通過控制面板先卸載,或是直接運行setup文件來重新安裝。
而實際上,這樣的提示毫無意義,因為按提示來操作,都是不可能卸載或繼續(xù)安裝的。好吧,繼續(xù)排查,在博客中有提示安裝Exchange時的注冊表值的影響。果真,好不容易找到了相關(guān)的注冊表,把HubTransport里的注冊表的Action和WaterMark兩個鍵值刪除,這下再通過恢復(fù)安裝命令,就又可以重新開始安裝傳輸角色了。
無奈,還是傳輸服務(wù)無法啟動。這不就陷入死循環(huán)了?
之后,在另外一篇博客里提到,可以采用跳過不安裝指定某個角色的方式,先安裝其他角色,待其他角色安裝成功。這次思路又來了,完全可以把郵箱角色和客戶端訪問角色安裝了,傳輸角色即使安裝不了,也可以增加一臺新的Exchange服務(wù)器安裝傳輸角色,讓另外一臺來承擔(dān)傳輸?shù)墓δ堋?/span>
好吧,就這樣干了,使用setup /mode:install /roles:mb /IAcceptExchangeServerLicenseTerms和setup /mode:install /roles:ca /IAcceptExchangeServerLicenseTerms分別安裝郵箱角色和客戶端訪問角色,但問題又來了,在接近完成安裝郵箱角色的時候,會啟動郵件提交服務(wù),這下再次崩潰,郵件提交服務(wù)無法啟動,這是要陷入另外一個死循環(huán)的節(jié)奏?
事實上,確實如此。在已接近崩潰邊緣的時候,果斷要求要一臺Windows Server 2012 R2的服務(wù)器來恢復(fù)安裝,不過結(jié)果證明,錯誤是完全一樣的。
那只能認(rèn)倒霉,恢復(fù)安裝,并不好使。
啟用方案3,使用一臺Windows Server 2012 R2通過普通安裝的方式安裝Exchange 2013 CU3,這里的普通安裝與恢復(fù)安裝,區(qū)別就在于計算機名是否與原Exchange服務(wù)器的計算機名一樣,這個我相信搞Exchange的ITer都知道。
下面便是下一步下一步圖形界面點擊安裝,很愉快地竟安裝成功了,淚留滿面還來不及,趕緊新建一個新的數(shù)據(jù)庫,此處是db2,把原郵箱數(shù)據(jù)庫db1的整個文件夾拷貝到新的數(shù)據(jù)庫指定的路徑下,下面便是采用數(shù)據(jù)庫的修復(fù)了。
使用ESEUTIL /R命令軟修復(fù)數(shù)據(jù),失敗。
使用ESEUTIL /P及ESEUTIL /D命令硬修復(fù)數(shù)據(jù),成功了。
之后便是掛載db2數(shù)據(jù)庫,并將db1的郵箱指向到db2,命令為:Get-Mailbox –Database db1 | Set-Mailbox –Database db2,批量完成了郵箱路徑的指向。
3. 使用測試
訪問郵箱管理中心ECP,那熟悉的界面又回來了。
訪問OWA界面,郵件還在。
到此可以宣告數(shù)據(jù)恢復(fù)成功了。
4. 后續(xù)配置
虛擬目錄路徑、驗證方式等配置需要按照生產(chǎn)環(huán)境原來的配置修改,則更大程度上恢復(fù)了用戶訪問端的體驗,此處就不詳細(xì)描述了。