【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.lmdbtransport.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 | 網域、帳號、別名 |
| sa40 | Bayes 與 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 每日備份
| 項目 | 方式 |
|---|---|
| MariaDB | mysqldump |
| /var/vmail | rsync + 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)