使用 TGZ Exports 備份和還原 Zimbra CE 郵箱

若要備份 Zimbra 社群版 (CE) 信箱,請使用 `git retreplace` 指令將其匯出為 TGZ 文件zmmailbox getRestURL,驗證歸檔文件,然後使用 `git restore` 指令將其還原postRestURL。如果要將郵件匯入已包含郵件的帳戶,請先執行 `git restore` 指令;在郵件信箱根目錄resolve=skip執行`git restore` 指令可能會刪除現有郵件。resolve=reset

了解按郵箱匯出保護的內容

Zimbra 透過其 REST 介面和zmmailbox實用程式提供 TGZ 檔案的匯出和匯入功能。此歸檔文件旨在承載郵箱內容和資料夾結構,包括打包為 EML 文件的電子郵件以及相關的日曆、聯絡人、任務或公文包資料。匯入後保留哪些內容和元資料取決於來源版本和目標版本以及要傳輸的項目。

請勿將此與完整的帳戶或伺服器備份混淆。 TGZ內容匯出不會重新設定缺少的帳戶,也不會獨立保留所有 LDAP 屬性、密碼、別名、服務等級分配、路由設定、過濾器、授權或伺服器設定。請使用管理程序單獨記錄任何所需的帳戶設定。zmbackup舊版 Zimbra 文件中所述的實用程式屬於網路版,而非標準 CE 工作流程。

命令範例遵循 Zimbra 官方文件中的接口,但並非針對每個獨立建置的 CE 版本進行即時測試。在規劃生產環境復原之前,請務必查看zmcontrol -v可用zmmailbox說明文件以及您所建置版本的發行說明。此外,如果使用者在 REST 導出過程中更改了數據,則不應假定即時導出能夠捕獲完全一致的數據。如果資料一致性至關重要,請安排在使用者活動較少的時段進行匯出。

匯出單一郵箱

1. 識別帳號及其郵件主機

使用具有管理員權限的作業系統帳戶連線到 Zimbra 伺服器。切換到 Zimbra 服務用戶,然後確認目標帳戶存在。在多伺服器部署中,請確保連接到正確的郵箱服務。

sudo -iu zimbra
zmcontrol -v
zmprov ga user@example.com zimbraMailHost zimbraAccountStatus
zmmailbox -z -m user@example.com getAllFolders

請替換user@example.com為實際帳戶。此-z開關使用本機 Zimbra 管理員憑證,而非最終使用者的密碼。如果您沒有必要的管理權限,請使用已核准的帳戶存取工作流程,而不是將密碼嵌入 shell 命令中。

終端機顯示 Zimbra 帳戶查找訊息,包括郵箱主機和活動狀態
開始匯出之前,請檢查郵件地址、託管伺服器和帳戶狀態。

2. 建立私有存檔位置

以特權作業系統使用者身份,建立一個 Zimbra 服務使用者可寫入的位置。請在公共服務目錄之外執行此操作,並先檢查可用空間。在切換到其他使用者zimbra或返回您的特權帳戶之前,請執行安裝命令。

sudo install -d -o zimbra -g zimbra -m 0700 /srv/zimbra-mailbox-backups
df -h /srv/zimbra-mailbox-backups
ls -ld /srv/zimbra-mailbox-backups

郵件存檔可能包含機密資訊和附件。請限製文件系統訪問,保護任何伺服器外的副本,並應用適當的保留策略。

終端機顯示私人郵箱備份目錄和 Unix 權限列表
使用私有備份目錄並驗證其檔案系統權限。

3. 將郵箱匯出為 TGZ 格式

在命令列介面 (shell)中zimbra使用以下 REST 導出器。此-t 0選項會停用大型操作的 CLI 逾時;但並不能保證代理程式、磁碟 I/O 或伺服器限制不會中斷匯出操作。

umask 077
zmmailbox -z -m user@example.com -t 0 getRestURL '//?fmt=tgz' > /srv/zimbra-mailbox-backups/user-20261010.tgz

每個帳戶運行一次匯出,並選擇一個帶有日期且唯一的檔案名稱。不要重複使用先前的存檔路徑,因為 shell 重定向會截斷該路徑。如果命令報告錯誤,請將產生的檔案視為不完整,直到它通過以下檢查為止。

終端機顯示 zmmailbox getRestURL 將郵箱匯出到 TGZ 文件
getRestURL 指令會將壓縮的郵件匣存檔寫入選取的目錄。

4. 驗證歸檔文件並記錄其校驗和

非空的 TGZ 檔案並不能證明備份可恢復。請測試整個 tar 流,檢查具有代表性的資料夾條目,並計算摘要。如果 tar 檢查失敗,則應調查匯出過程,而不是匯入檔案。

test -s /srv/zimbra-mailbox-backups/user-20261010.tgz
tar -tzf /srv/zimbra-mailbox-backups/user-20261010.tgz > /dev/null
tar -tzf /srv/zimbra-mailbox-backups/user-20261010.tgz | head -n 20
cd /srv/zimbra-mailbox-backups
sha256sum user-20261010.tgz > user-20261010.tgz.sha256

將校驗和檔案保存在歸檔檔案旁邊,然後將兩者都移至原始伺服器之外的受保護儲存位置。複製完成後,sha256sum -c user-20261010.tgz.sha256在包含這兩個檔案的目錄中執行命令。校驗和驗證成功僅確認位元組完整性,並不代表所有郵箱功能都能正確恢復。

終端機顯示歸檔檔案是否存在、gzip 壓縮完整性、郵件信箱資料夾列表
在將匯出檔案視為可用的復原副本之前,請先檢查歸檔檔案。
終端機顯示郵箱 TGZ 檔案的 SHA-256 校驗和
記錄 SHA-256 摘要,以便檢查傳輸的存檔是否發生變更。

恢復存檔而不覆蓋即時郵件

5. 準備並檢查目標信箱

如果目標帳戶尚不存在,請依照您已核准的 Zimbra 設定流程建立該帳戶;TGZ 匯入不會自動建立該帳戶。檢查其地址、配額、服務存取權限和現有資料夾。首次測試時,請使用獨立的非生產帳戶,尤其是在進行跨版本遷移時。

sudo -iu zimbra
zmprov ga user@example.com zimbraMailHost zimbraAccountStatus
zmmailbox -z -m user@example.com getAllFolders

將已驗證的歸檔檔案複製到目標 Zimbra 服務使用者可讀取的目錄,並保留受限權限。對於遠端傳輸,請在目標位置再次驗證校驗和。不要假設具有相同地址的帳戶為空。

終端機顯示 Zimbra 設定指令的帳戶屬性
匯入郵箱項目前,請確認目標帳戶是否存在。

6. 使用符合目標位置的衝突策略進行匯入

若要在保留匹配項的同時新增缺失項,請使用此方法resolve=skip。這是文件中記錄的預設重複項處理行為,但並不能保證對每種項目類型或版本都能完美合併。

zmmailbox -z -m user@example.com -t 0 postRestURL '//?fmt=tgz&resolve=skip' /srv/zimbra-mailbox-backups/user-20261010.tgz

避免將破壞性範例複製到生產環境中。 Zimbra文件resolve=reset會在匯入前清除目標項目。replace相關modify策略也會改變現有項目的處理方式。僅在測試並獲得針對特定帳戶和資料夾範圍的批准後,才考慮進行受控恢復。

終端機顯示 zmmailbox postRestURL,並附有 resolve=skip 選項
當需要保留現有郵箱內容時,使用跳過衝突原則匯入存檔。

處理匯出失敗並驗證恢復情況

如果遇到逾時,請保留-t 0並檢查伺服器或代理程式的逾時時間和儲存限制;命令列介面 (CLI) 逾時設定為零並不能解決所有網路問題。 Zimbra 的支援 wiki 也警告說,某些大型郵箱匯出操作可能會出現歸檔檔案損壞和 I/O 故障。對於過大或不可靠的匯出操作,請按資料夾或日期拆分工作,然後在備用帳戶上測試每個歸檔檔案及其匯入操作。

例如,文件中記錄的搜尋查詢under:Inbox會選擇收件匣內容及其子資料夾。 REST URL 周圍的引號至關重要,因為 & 符號必須傳遞給 Zimbra 而不是 shell。

zmmailbox -z -m user@example.com -t 0 getRestURL '//?fmt=tgz&query=under:Inbox' > /srv/zimbra-mailbox-backups/inbox-20261010.tgz

資料夾範圍的歸檔不能取代完整的郵箱匯出。請獨立驗證其內容,並記錄遺漏的資料夾或日期。如果帳戶已停用或要求回傳授權錯誤,請檢查帳戶狀態和管理驗證,而不是繞過 TLS 憑證檢查或洩漏憑證。

7. 驗證已恢復的項目,而不僅僅是命令退出。

列出目標資料夾,並將其與記錄的來源資料夾和TGZ清單進行比較:

zmmailbox -z -m user@example.com getAllFolders
zmmailbox -z -m user@example.com getMailboxSize

然後登入目標測試帳戶,開啟已收發郵件、附件、聯絡人和日曆事件樣本。檢查日期和資料夾路徑,並查看是否有任何匯入錯誤。必要時,單獨重新建立或檢查別名、共用權限、規則和其他帳戶級設定。只有在預期資料可存取且檢查結果已記錄後,才能將恢復視為成功。

終端機顯示 getAllFolders 傳回的 Zimbra 資料夾名稱
將復原的收件匣、已傳送郵件、行事曆和其他資料夾與預期的存檔內容進行比較。

主要參考資料:Zimbra zmmailbox 指令參​​考、Zimbra REST API 參考、Zimbra zmprov 管理參考以及Zimbra 關於作用域匯出和大型歸檔注意事項的文章。部分 Zimbra Wiki 範例較為舊或標記為正在開發中;在生產環境中使用之前,請先在您已安裝的 CE 版本上驗證其行為。

留下評論

診斷卡在 systemd 關閉螢幕的 SUSE 伺服器

診斷卡在 systemd 關閉螢幕的 SUSE 伺服器

使用 systemd 作業和先前的啟動日誌來尋找運行緩慢的服務、掛載點或儲存依賴項,然後修正它,而不掩蓋原因。

僅開放 SLES 15 伺服器所需的網路流量

僅開放 SLES 15 伺服器所需的網路流量

使用 firewall-cmd 檢查活動區域,安全地允許 HTTP,保留 SSH 訪問,並驗證該規則在 SLES 15 上重新加載後是否仍然存在。

診斷 SLES PAM 登入失敗問題,避免被鎖定

診斷 SLES PAM 登入失敗問題,避免被鎖定

追溯 PAM 故障到其服務、帳戶原則或身分提供者,然後在保持管理員會話正常運作的情況下修復正確的 SLES 配置。

在 ONLYOFFICE 文件伺服器中新增字型:Docker 與 Linux

在 ONLYOFFICE 文件伺服器中新增字型:Docker 與 Linux

在 ONLYOFFICE 文件伺服器中安裝自訂字體,比較持久 Docker 掛載與直接複製,重建字體列表,並驗證結果。

使用 Restic 和 Cron 實現 Nextcloud 的自動化和一致性備份

使用 Restic 和 Cron 實現 Nextcloud 的自動化和一致性備份

將 Nextcloud 的檔案和 MariaDB 一起備份,使用 cron 安排加密的 Restic 快照,並在不危及執行伺服器的情況下驗證復原。

使用 TGZ Exports 備份和還原 Zimbra CE 郵箱

使用 TGZ Exports 備份和還原 Zimbra CE 郵箱

匯出單一 Zimbra Community Edition 信箱,驗證其 TGZ 備份,並在不覆寫現有郵件的情況下還原遺失的項目。

允許已批准的使用者使用 Keycloak 登入建立 Jitsi 會議室

允許已批准的使用者使用 Keycloak 登入建立 Jitsi 會議室

僅允許已批准的帳戶使用 Keycloak 和令牌身份驗證啟動 Jitsi Meet 會議室,同時在需要時允許訪客加入。

透過 LDAP 將 Active Directory 使用者與 ONLYOFFICE DocSpace 同步。

透過 LDAP 將 Active Directory 使用者與 ONLYOFFICE DocSpace 同步。

將 ONLYOFFICE DocSpace 連接到 Active Directory 或 OpenLDAP,安全地匯入使用者和群組,映射帳戶字段,並安排可靠的同步。

在 SLES 15 安全啟動上安裝和簽署自訂核心模組

在 SLES 15 安全啟動上安裝和簽署自訂核心模組

在不停用安全啟動的情況下載入自訂 SLES 15 核心模組。匹配正在運行的內核,對 .ko 檔案進行簽名,註冊 MOK 金鑰,並驗證載入情況。

將 ONLYOFFICE Docs 置於 HAProxy 之後而不影響編輯功能

將 ONLYOFFICE Docs 置於 HAProxy 之後而不影響編輯功能

為 ONLYOFFICE Docs 設定 HAProxy HTTPS、轉送標頭、WebSocket 逾時和執行狀況檢查,然後驗證編輯和儲存功能。