對於仍然在使用 Ubuntu Server 18.04 運作 Zimbra OSE 8.8.15 版本的朋友,應儘早將作業系統發行版本升級至 20.04 以上,以免因 18.04 進入 EOL (End of Life) 後可能有無法修補的漏洞帶來資安風險。
升級 Ubuntu Server 18.04 至 20.04 本身不是難事,而是難在安裝於其上的 Zimbra 伺服器。本文整理 Zimbra OSE 8.8.15 版本由 Ubuntu Server 18.04 升級至 20.04 的完整過程,提供參考。
步驟一:備份重要設定
以將目前系統的相關密碼顯示出來,包括 Ldap、Nginx、等等系統重要密碼,請於執行後將結果複製存好。
# 切換至 Zimbra 帳戶 su - zimbra zmlocalconfig -s | grep -i password
接著將系統組態檔備份出來至獨立路徑,以備後面使用。
# 以 root 帳戶執行 mkdir -p /opt/{zimbra_backup/.saveconfig,ldap_backup} chown zimbra:zimbra /opt/{zimbra_backup,ldap_backup} -R cp -pvr /opt/zimbra/.install_history /opt/zimbra_backup/.saveconfig/.install_history cp -pvr /opt/zimbra/conf/localconfig.xml /opt/zimbra_backup/.saveconfig/localconfig.xml apt list --installed | grep -i 'zimbra-' | cut -d'/' -f1 > /opt/zimbra_backup/.saveconfig/.installedPackages # 切換至 Zimbra 帳戶 su - zimbra # -c 是匯出組態資料庫, -a 是存取記錄資料庫, 沒加是主資料庫 /opt/zimbra/libexec/zmslapcat -c /opt/ldap_backup/ /opt/zimbra/libexec/zmslapcat -a /opt/ldap_backup/ /opt/zimbra/libexec/zmslapcat /opt/ldap_backup/
步驟二:升級作業系統發行版本
將 Ubuntu Server 18.04 升級至 20.04
# 以 root 帳戶執行 apt update apt upgrade apt dist-upgrade reboot # 重開機完成後,切換至 Zimbra 帳戶以停止相關服務 su - zimbra zmcontrol stop exit # 建議進 screen 再做,以免斷線程序中止,並用 root 帳戶執行 screen do-release-upgrade reboot
步驟三:修復 Zimbra 系統
由於系統套件大量更新,因此需要執行 Zimbra OSE 8.8.15 for Ubuntu Server 20.04 的安裝程序,以進行系統的升級與修復。
請先下載好安裝檔並且以 sftp 上載至 /root 資料夾,下載連結為
# 解開安裝檔壓縮包 cd /root tar -xvzf zcs-8.8.15_GA_4179.UBUNTU20_64.20211118033954.tgz cd zcs-8.8.15_GA_4179.UBUNTU20_64.20211118033954 # 進行相關檢查、安裝與跳過產品安裝設定過程 ./install.sh -s --skip-activation-check # 注意!在這個階段請輸入 N 以免刪除先前既有郵件伺服器資料 Would you like to delete /opt/zimbra before installing? [N] N # 程序完成後,將先前備份設定檔案放回來 cp -pvr /opt/zimbra_backup/.saveconfig/.install_history /opt/zimbra/.install_history cp -pvr /opt/zimbra_backup/.saveconfig/localconfig.xml /opt/zimbra/conf/localconfig.xml # 重跑一次安裝設定程序 /opt/zimbra/libexec/zmsetup.pl # 在安裝的設定選單,將以下填入前面步驟一匯出的對應密碼,再以 r 回到主選單即可,其它未列在下面的不需要填 ******* +Ldap Admin password: Not Verified ******* +Ldap postfix password: Not Verified ******* +Ldap amavis password: Not Verified ******* +Ldap nginx password: Not Verified ******* +Ldap Bes Searcher password: Not Verified ******* +Bind password for postfix ldap user: Not Verified ******* +Bind password for amavis ldap user: Not Verified ******* +Admin Password UNSET
回到安裝主選單後,按下 a (apply) 當它跑完所有安裝程序後,Zimbra 的修復作業即已完成。
問題處理
多個服務無法啟動
升級完成後若有如下服務無法啟動的訊息,表示為憑證問題,請依下方程序進行處理。
# 以 Zimbra 帳戶檢視服務狀況 su - zimbra zmcontrol status Host mail.yourserver.com.tw amavis Running antispam Running antivirus Running dnscache Running ldap Running logger Stopped zmlogswatchctl is not running mailbox Stopped zmmailboxdctl is not running. memcached Running mta Running opendkim Running proxy Running service webapp Stopped zmmailboxdctl is not running. snmp Running spell Running stats Running zimbra webapp Stopped zmmailboxdctl is not running. zimbraAdmin webapp Stopped zmmailboxdctl is not running. zimlet webapp Stopped zmmailboxdctl is not running. zmconfigd Running # 上述狀況為憑證問題,可先讓 Zimbra 重新產生自簽憑證以讓服務正常啟動 # 以 root 帳戶執行 cp -r /opt/zimbra/ssl/zimbra/commercial ~/ssl-backup mv /opt/zimbra/mailboxd/etc/keystore /root/keystore.old mv /opt/zimbra/conf/imapd.keystore /root/imapd.keystore su - zimbra /opt/zimbra/bin/zmcertmgr createca -new /opt/zimbra/bin/zmcertmgr createcrt -new -days 3650 /opt/zimbra/bin/zmcertmgr deployca /opt/zimbra/bin/zmcertmgr deploycrt self exit # 上面程序如果執行到最後一行 deploycrt self 發生錯誤,請接著做 # 用 root 帳戶執行 mv /opt/zimbra/mailboxd/etc/keystore /root/keystore.old2 rm /opt/zimbra/ssl/zimbra/jetty.pkcs12 su - zimbra /opt/zimbra/bin/zmcertmgr createca -new /opt/zimbra/bin/zmcertmgr createcrt -new -days 3650 /opt/zimbra/bin/zmcertmgr deployca /opt/zimbra/bin/zmcertmgr deploycrt self exit reboot # 重開機完成後,再次升級相關套件 apt update apt upgrade reboot
第三方套件 PostSRSd 服務無法啟動
嚴格來說它與 Zimbra 本身套件沒有直接關係,如果您的 Zimbra 沒有搭配 PostSRSd 使用,無需處理本段。
PostSRSd 是一個 Sender Rewriting Scheme (SRS,寄件人重寫機制),用來解決轉寄郵件時 SPF 驗證相關問題,最常出現在 Gmail 被退信機制上。
# 編輯 PostSRSd 服務定義檔 nano /lib/systemd/system/postsrsd.service # 找到這行 ExecStartPre=/bin/sh -c '{ echo -n SRS_DOMAIN= ; postconf -h mydomain ; } >/run/postsrsd/default' # 將它改為 ExecStartPre=/bin/sh -c '{ echo -n SRS_DOMAIN= ; /opt/zimbra/bin/postconf -h mydomain ; } >/run/postsrsd/default' # 存檔離開後,重啟服務即可 systemctl daemon-reload systemctl restart postsrsd systemctl status postsrsd
結論
如果可以,建議在由正式機另外複製出來的實驗環境先模擬過,沒有問題再到正式環境實作。
升級完成後應做好全面的檢視,至少包括以下項目:
- 服務執行狀況 (zmcontrol status)
- 相關設定是否均可開啟 (Admin Console)
- 網頁郵件是否可以正常操作 (Web Client)
- 測試 Web Client 收信與寄信
- 測試 SMTP 協定寄信
- 測試 POP3/IMAP 協定收信
- 檢查郵件佇列狀況 (Admin Console - 監視)
- 檢查 Zimbra 記錄 (zimbra.log)
- 檢查作業系統記錄 (syslog / message / dmesg)
最後,即便升級到 Ubuntu Server 20.04,但 Zimbra OSE 8.8.15 已經在 2023/12/31 宣告終止支援,為了解決這個問題有兩條路可以選擇:
- 升級至 Zimbra NE (商用版) 9 或 10 版本
- 升級至 Zimbra OSE (開源版) 9 或 10 版本
商用版需要付費購買授權方可升級,而開源版自 9 起原廠不再提供二進位安裝檔,如有需要可自行編譯打包出來進行安裝;有關自行打包 9 或 10 開源版的作法,我會另外再寫一篇技術文章。
參考資料