使用 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 定時器可靠地執行 ownCloud 後台作業

將按需作業運行替換為 systemd 定時器,該定時器每 15 分鐘執行一次 ownCloud 支援的 occ system:cron 命令。

透過尋找故障路由來恢復 ownCloud WebDAV 同步

透過 Apache、Nginx 或反向代理程式追蹤 WebDAV 請求,然後使用經過驗證的 PROPFIND 測試確認 ownCloud 同步功能正常。

設定 Nextcloud 的公共 URL,以便它可以存取自身。

透過設定其規範 URL 並從伺服器本身檢查 DNS、HTTPS 和反向代理路由,修復 Nextcloud 缺少出站位址警告的問題。

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

在 Ubuntu 24.04 上設定 Nextcloud Redis 快取

透過本機 Unix 套接字配置 APCu 和 Redis,以實現 Nextcloud 快取和檔案鎖定,並提供目前和舊版 Nextcloud 的步驟。

使用 Systemd 定時器自動執行 Nextcloud Cron

檢查 Nextcloud 的 cron 模式,修復其 systemd 服務和計時器,並驗證後台作業在啟動後以及每隔五分鐘運行一次。

使用 Redis 清除 Nextcloud 的檔案鎖定警告

啟用可靠的 Nextcloud 檔案鎖定,選擇適當的 Redis 或 Valkey 後端,並驗證警告是否清除,同時避免並發檔案變更的風險。

如何才能獲得 Nextcloud A+ 安全評級

如何才能獲得 Nextcloud A+ 安全評級

使用最新更新、HTTPS 和 HSTS、精確的反向代理信任以及針對公共伺服器的檢查,修復 Nextcloud 掃描中常見的錯誤。

啟用 Nextcloud 伺服器端加密,並評估其影響

為需要加密的儲存配置 Nextcloud SSE,保護加密金鑰,並在加密現有文件之前測量傳輸和 CPU 影響。

將 Elasticsearch 全文搜尋功能新增至 Nextcloud

將 Nextcloud 的檔案搜尋連接到 Elasticsearch,索引文件內容,並選擇適合您的伺服器和安全需求的設定。

為 Nextcloud 已刪除檔案設定可靠的過期策略

為 Nextcloud 已刪除檔案設定可靠的過期策略

配置 Nextcloud 在規定的保留期後刪除已刪除的文件,可靠地安排後台作業,並避免執行清除所有使用者回收站的命令。