Skip to content

Nuface Blog

隨意隨手記 Casual Notes

Menu
  • Home
  • About
  • Services
  • Blog
  • Contact
  • Privacy Policy
  • Login
Menu

郵件系統備份、災難復原(DR)、異地部署策略完整指南

Posted on 2025-11-212025-11-21 by Rico

【Mail Server 系列文:第 18 篇】

在前 1–17 篇中,我們已經完成一套完整且企業級的郵件系統架構,包括:

  • Postfix SMTP
  • Dovecot IMAP/LMTP
  • Amavis + ClamAV + SpamAssassin
  • SQL Bayes / TxRep
  • Piler 郵件歸檔
  • Manticore 中文全文檢索
  • Roundcube Webmail
  • Docker 容器化部署
  • 反向代理 + HTTPS
  • DKIM / SPF / DMARC

但真正企業級系統還缺「最後一塊」:
Backup(備份)、DR(災難復原)、Business Continuity(業務持續)。

本篇將完整整理:
如何備份、備份哪些資料、如何在災難發生時迅速重建郵件系統、如何規劃異地備援。


1. 為什麼郵件系統的備份與 DR 特別重要?

郵件是公司最關鍵的溝通系統之一,屬於:

  • 法規性證據(稽核、法務)
  • 業務往來紀錄(供應商、客戶)
  • 高風險攻擊目標(駭客常以郵件作為入口)

郵件系統一旦損壞或資料毀損:

  • 相關法律與財務證據可能喪失
  • 過去的往來紀錄無法查詢
  • 業務與財務作業受阻
  • 公司可能面臨合規風險(7 年信件保存義務)

因此,郵件系統的備份與災難復原,必須做到:


2. 全系統備份項目總表(最重要的 8 大項)

郵件系統不是單一元件,而是多個服務一起構成,因此備份必須完整:


2.1 Postfix(SMTP)

  • /etc/postfix(全部設定)
  • /etc/postfix/sql/*.cf(資料庫查詢設定)
  • tls_sni.lmdb
  • transport.lmdb
  • /var/spool/postfix(不建議備份,可在災難時重新投遞)

SMTP queue 不建議做 DR 備份
(重建時讓外部郵件伺服器重新排信即可)


2.2 Dovecot(IMAP/LMTP/Sieve)

  • /etc/dovecot/(所有 conf)
  • /var/vmail/*(所有使用者信件 !!! 最重要)
  • Sieve 規則 /etc/dovecot/sieve/*

📌 Dovecot 的 /var/vmail 是唯一不可損失的核心資料。


2.3 MariaDB(PostfixAdmin + SA + Piler)

必備備份:

DB用途
postfix網域、帳號、別名
sa40Bayes 與 TxRep
piler用戶權限、索引對應

備份方式:

mysqldump --single-transaction --routines --triggers --databases postfix sa40 piler > backup.sql

2.4 Piler(郵件歸檔)

對企業最重要,包含:

  • /var/piler/store(所有歸檔信件)
  • /etc/piler/(主設定)
  • Piler pem 金鑰(必備 !!!)
  • 索引交由 Manticore 重建

2.5 Manticore Search(全文檢索)

最重要:

  • /var/lib/manticore

一般建議災難時 重建 RT 表,不需要備份整個資料夾。

資料可透過 manticore_piler_table.sql 重建。


2.6 Roundcube(Webmail)

需備份:

  • /var/roundcube/config
  • SQLite DB:/var/roundcube/db

但 Webmail 本身相對可重建,屬低風險資料。


2.7 自簽或 Let’s Encrypt 憑證

  • /etc/letsencrypt/*
    (務必備份!)

2.8 Docker Compose 設定與所有 Dockerfile

最重要元素:

  • docker-compose.yaml
  • 各 container 的 Dockerfile
  • 所有 Shell 啟動腳本

這是災難時用來重建環境的核心。


3. 備份策略建議(企業級 3-1-2 原則)

郵件系統建議採用:

✔ 3-1-2 備援模型

項目意義
3 份資料原始 + 內部外接儲存 + 雲端
1 份異地備份物理上與主機分離
2 種不同技術例如本機檔案快照 + rsync + S3

4. 每日 / 每週 / 每月 備份排程(企業建議)


4.1 每日備份

項目方式
MariaDBmysqldump
/var/vmailrsync + hardlink
Piler store(新增部分)rsync incremental
Dovecot 設定file-level backup
Postfix 設定file-level backup
Piler 產生日誌file backup

4.2 每週備份

  • 完整 /var/vmail 全備份
  • 完整 /var/piler/store 全備份
  • 生成 snapshot(ZFS / Btrfs 皆可)

4.3 每月備份

  • 將整份備份複製到異地(S3 / NAS / 另一資安網段)
  • 對備份進行復原演練(table restore)

5. 災難復原 DR(Disaster Recovery)完整 SOP

當伺服器、資料中心或儲存毀損,需立即重建郵件系統。

以下是完整 DR 流程:


5.1 Step 1 — 建立新的 VM / Docker 主機

快速部署:

  • Ubuntu 24.04 LTS
  • Docker + Docker Compose
  • 防火牆開放 SMTP/IMAP 相關 port

5.2 Step 2 — 恢復 Docker 目錄與設定

從備份中回復:

/opt/docker/mail/postfix
/opt/docker/mail/dovecot
/opt/docker/mail/piler
/opt/docker/mail/manticore
/opt/docker/mail/roundcube
/opt/docker/mail/spamassassin

5.3 Step 3 — 回復 MariaDB

mysql < backup.sql

5.4 Step 4 — 回復 /var/vmail(最重要)

rsync -av /backup/vmail/ /opt/docker/mail/dovecot/usermail/

5.5 Step 5 — 回復 Piler store

rsync -av /backup/piler_store/ /opt/docker/mail/piler/piler_store/

5.6 Step 6 — 重建 Manticore 索引(如需要)

mysql -h manticore -P 9306 < manticore_piler_table.sql

5.7 Step 7 — 依序啟動所有容器

docker compose up -d manticore
docker compose up -d piler
docker compose up -d maildb
docker compose up -d postfix
docker compose up -d dovecot
docker compose up -d spamassassin
docker compose up -d webmail

5.8 Step 8 — 測試 SMTP 與 IMAP 功能

  • swaks 測試送信
  • Roundcube 測試收信
  • DKIM、SPF、DMARC 驗證
  • SpamAssassin 學習功能測試

6. 異地備援架構(可選進階部署)

若希望達到更高的可靠性,可採:


6.1 雙站(Active/Passive)架構

  • A 主站:正常運作
  • B 備站:備份、資料同步、出問題時切換

同步方式:

  • MariaDB 主從
  • vmail 透過 rsync 每 5 分鐘同步
  • Piler store incremental 同步

6.2 S3 雲端冷備份

將資料推至:

  • AWS S3
  • Backblaze B2
  • MinIO 私有雲

6.3 Manticore 搜尋可災難後重建

因此 DR 不需同步搜尋索引。


7. 建議的自動化備份腳本

  • MariaDB 自動備份腳本
  • vmail incremental rsync 腳本
  • Piler store incremental 腳本
  • 備份壓縮與簽章
  • 傳送到 S3 或異地 NAS 的腳本

8. 本篇總結

第 18 篇完成後,你的郵件系統已具備企業級穩定性:

✔ 配置完整

✔ 高度安全

✔ 可審計

✔ 具可擴充性

✔ 同時具備備份、災難復原、異地備援能力

你的 Mail Server 已經達到大型企業等級架構,符合:

  • 內控
  • 企業治理
  • 資安規範
  • 稽核與法律保存
  • 業務連續運作(BCP)

Recent Posts

  • Postfix + Let’s Encrypt + BIND9 + DANE Fully Automated TLSA Update Guide
  • Postfix + Let’s Encrypt + BIND9 + DANE TLSA 指紋自動更新完整教學
  • Deploying DANE in Postfix
  • 如何在 Postfix 中部署 DANE
  • DANE: DNSSEC-Based TLS Protection

Recent Comments

  1. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on High Availability Architecture, Failover, GeoDNS, Monitoring, and Email Abuse Automation (SOAR)
  2. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on MariaDB + PostfixAdmin: The Core of Virtual Domain & Mailbox Management
  3. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Daily Operations, Monitoring, and Performance Tuning for an Enterprise Mail System
  4. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Final Chapter: Complete Troubleshooting Guide & Frequently Asked Questions (FAQ)
  5. Building a Complete Enterprise-Grade Mail System (Overview) - Nuface Blog on Network Architecture, DNS Configuration, TLS Design, and Postfix/Dovecot SNI Explained

Archives

  • December 2025
  • November 2025
  • October 2025

Categories

  • AI
  • Apache
  • Cybersecurity
  • Database
  • DNS
  • Docker
  • Fail2Ban
  • FileSystem
  • Firewall
  • Linux
  • LLM
  • Mail
  • N8N
  • OpenLdap
  • OPNsense
  • PHP
  • QoS
  • Samba
  • Switch
  • Virtualization
  • VPN
  • WordPress
© 2025 Nuface Blog | Powered by Superbs Personal Blog theme