(Mailcow Multi‑Node Architecture)
1️⃣ 文件目的
本文件定義公司郵件平台(Mailcow 架構)的:
- 災難復原流程
- 定期演習標準
- 目標恢復時間(RTO)
- 操作步驟
- 成功驗證標準
目標:
✅ 任何受訓工程師可在 45–60 分鐘內重建一台 mailcow 節點
2️⃣ 系統架構概覽
2.1 架構摘要
- 4–5 台 Email Gateway(按 domain 分流)
- 多台獨立 Mailcow Server
- S3 Object Storage Snapshot 備份
- Restic Snapshot
- Rsync 冗餘備份
- DB 同步機制
2.2 設計原則
- Domain Sharding(每個 domain 固定歸屬)
- 無 Shared Storage
- 無跨節點強依賴
- 可獨立重建
3️⃣ Recovery 目標定義
| 指標 | 目標 |
|---|---|
| RTO | ≤ 60 分鐘 |
| RPO | ≤ 5 分鐘 |
| MTTR | 每季統計 |
4️⃣ 演習類型分類
✅ Level 1:單節點完全損毀(每月)
模擬:
mailcow-3 完全不可用
目標:
- 在新 VM 上重建 mailcow
- 恢復資料
- Gateway 切換
- 完成收發測試
✅ Level 2:Gateway 故障(每季度)
模擬:
gateway-2 關閉
測試:
- MX fallback
- Queue retention
- 是否有 mail drop
✅ Level 3:無預警 Chaos Drill(半年)
- 隨機關閉一台 mailcow
- 不通知工程師
- 記錄反應時間
5️⃣ Level 1 演習完整流程(標準版)
以下為「單 mailcow 節點完全重建」標準操作流程。
✅ Step 1:宣告演習開始
- 指定演習節點
- 指定計時開始
- 指定負責工程師
- 指定觀察員
開始計時。
✅ Step 2:模擬節點失效
操作:
- 關閉 VM
或 - Block network
確認:
- 無法 SSH
- Gateway 出現 delivery defer
✅ Step 3:建立新 VM
標準規格:
- CPU: ___
- RAM: ___
- Disk: ___
- OS: Ubuntu ___
驗證:
ssh 正常
✅ Step 4:基礎環境準備
apt update
apt install docker docker-compose
Clone mailcow:
git clone https://github.com/mailcow/mailcow-dockerized
✅ Step 5:還原資料
5.1 還原 mail data volume
使用 restic:
restic restore latest --target /restore
或使用 S3 snapshot:
aws s3 sync ...
將:
/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data
恢復。
5.2 還原資料庫
方式:
- restore SQL dump
或 - 啟用 DB replication
確認:
mysql -u root -p
show databases;
✅ Step 6:啟動 mailcow
docker-compose up -d
確認:
docker ps
所有 container 正常。
✅ Step 7:健康檢查
檢查:
- Postfix
- Dovecot
- Rspamd
- Nginx
測試:
✅ IMAP login
✅ SMTP auth
✅ Webmail
✅ 外部寄信
✅ Step 8:Gateway 切換
在 gateway:
- 更新 routing IP
或 - 修改 upstream
Reload postfix。
✅ Step 9:功能驗證
發送測試信:
- 外部 → 內部
- 內部 → Gmail
- 內部 → 同 server
確認:
- 無 queue 堆積
- DKIM 正常
- SPF pass
- TLS 正常
✅ Step 10:記錄時間
記錄:
- 開始時間
- 完成時間
- 卡住時間點
- 改進建議
停止計時。
6️⃣ 演習後檢討會議
每次演習必須:
- 討論瓶頸
- 是否文件不清晰
- 是否需要自動化
- 是否某步驟過慢
7️⃣ 自動化改進方向
✅ 建立:
- 一鍵 restore script
- 基礎 VM provisioning script
- 自動 DB restore
- 自動 health check script
目標:
人只需要輸入 domain 名稱
系統自動完成 80% 重建
8️⃣ 成功標準
演習成功必須符合:
- 60 分鐘內恢復
- 無資料遺失
- 收發正常
- 用戶無感
9️⃣ 進階目標(未來)
- Immutable mailcow node
- Blue/Green 切換
- 完全自動 rebuild
- 15 分鐘 RTO
🔟 核心文化
可靠性 ≠ 有備份
可靠性 = 定期還原
✅ 最終目標
當新人加入公司:
- 給他這份文件
- 不協助
- 他能 45–60 分鐘內完成
你嘅郵件平台就真正成熟。