【Mail Server 系列文:第 12 篇】
在前 11 篇中,你已完成一套穩定、模組化、功能完整的郵件系統。
本篇將帶你從「可正常運作」走向「企業級高可用性」,並加入自動化、監控與防濫用能力。
🔶 1. 為什麼需要 Mail Server 高可用性?
郵件是公司最重要的基礎服務之一,當服務中斷時會造成:
- 客戶無法寄信、訂單流失
- 公司內部無法溝通
- ERP、EIP 通知無法發送
- 總務、人資、財務流程卡住
- DNS MX 追不上、外部郵件被退信
因此企業等級的 Email 系統必須能:
✔ 自動切換
✔ 可跨機房
✔ 可維護、不中斷
✔ 可監控
✔ 可自動應對濫用 / 攻擊事件
🔶 2. Mail Server 高可用性架構選項
以下架構以你目前的組合(Postfix + Dovecot + Amavis + Piler + Docker)為基礎。
2.1 選項 A:主備 (Primary / Secondary) 架構
最常見、部署最簡單。
結構:
- 主機:收信 / 寄信 / 使用者 IMAP / Webmail
- 備機:同步資料、在主機掛掉後接手 25/587/993 服務
同步方式:
| 模組 | 同步方式 |
|---|---|
| Postfix 設定 | rsync + git |
| Dovecot user maildir | dovecot-sync / rsync --inplace |
| MariaDB | 主從同步 |
| DKIM key | rsync |
| Piler Archive | rsync + incremental |
| Manticore Index | 只能備援,不建議同步(重新建索引即可) |
優點:
- 成本最低
- 架構直覺
- 故障切換最快可 < 60 秒
缺點:
- 需要手動或半自動切換
- Dovecot 郵件同步不能做到像分散式儲存那樣完美
2.2 選項 B:多 MX 架構(具有耐受性)
你的 DNS MX 可以設定:
MX 10 mail1.example.com
MX 20 mail2.example.com
mail2 的任務:
- 當 mail1 不可用 → mail2 暫時收信
- 信放在 mail2 的 queue → mail1 恢復後轉送
優點:
- 外部郵件不會遺失
- 設定最簡單
缺點:
- 使用者無法透過 mail2 收信
- 無法處理 webmail / IMAP 高可用性
多 MX 算是「防最糟糕情況」的保險,而非 HA。
2.3 選項 C:HAProxy + Keepalived + CARP 虛擬 IP(完整 HA)
這是企業最常用的 HA 架構。
設計:
VIP:10.0.0.10
Master HAProxy:mail1
Backup HAProxy:mail2
Backend:郵件容器節點(Postfix、Dovecot)
流量控制:
- 25/465/587 → Postfix
- 143/993 → Dovecot
- 4190 → ManageSieve
- Webmail/Archive → Apache
切換:
- 若 mail1 掛掉 → VIP 自動漂移到 mail2
- 使用者完全不感受中斷
2.4 選項 D:跨區域多機房(Active-Active)
最完整、成本最高。
用到的技術:
- GeoDNS
- Anycast
- 兩個 Postfix 集群
- Dovecot replication
- Manticore 分散式查詢
- 前端容器經由 global load balancer
這類架構多出現在大型企業,對你的 IT 部門來說可以作為長期規劃。
🔶 3. Failover 設計細節
你可以透過兩種方式來實現自動 Failover:
3.1 DNS Failover(建議用於 Webmail / Archive)
適合:
- webmail.it.demo.tw
- archive.it.demo.tw
透過 DNS provider(Cloudflare / Route53)設定:
- 健康檢查(HTTP 200)
- A record 自動切換
缺點:
DNS 生效有時間差,不建議用於 smtp。
3.2 VIP Failover(推薦用於 SMTP/IMAP)
Keepalived + VIP → 秒級切換
優於 DNS,因為:
- 不依賴 DNS TTL
- 所有用戶端連線立即轉向備援機
- Postfix / Dovecot 都支援重連
🔶 4. GeoDNS — 多區域入口
如果你希望:
- 台灣 → 連線台灣 mail gateway
- 越南 → 連線越南 mail gateway
- 馬來西亞 → 連線馬來西亞 mail gateway
可設定:
| 地區 | 解析結果 |
|---|---|
| TW | mail.tw.example.com |
| SG / MY | mail.sg.example.com |
| CN | mail.cn.example.com |
適合跨國企業。
Postfix 與 Dovecot 本身不需要修改,只需修改:
- Nginx/Apache proxy
- Inbound MX
- Outbound relay
🔶 5. 監控(Monitoring)設計
完整監控包含:
5.1 Postfix 監控
✔ Queue 長度
✔ Deferred 數量
✔ Outbound delivery 失敗率
✔ Blacklist 指標(DNSBL)
✔ TLS handshake 成功率
工具建議:
- Prometheus + Grafana
- postfix_exporter
- Loki 收集 logs
5.2 Dovecot 監控
✔ IMAP/POP3 連線數
✔ SASL Login 失敗
✔ LMTP 錯誤
✔ IO / 排隊
5.3 Amavis / SpamAssassin / ClamAV
✔ 病毒偵測率
✔ Spam score 分佈
✔ sa-update 成功率
✔ ClamAV signature update
5.4 Piler / Manticore
✔ Index 活躍度
✔ Query time
✔ 掃描速度
✔ Store 空間使用率
🔶 6. SOAR(安全事件自動化)— 自動防濫用機制
你可以根據 mail log 事件,建立自動防護流程:
6.1 自動封鎖暴力登入攻擊(IMAP/SMTP)
觸發條件:
10 分鐘內 20 次 SASL 失敗
自動處理:
- 封鎖來源 IP(防火牆)
- 通知系統管理員
- 允許白名單例外
6.2 檢測異常大量寄信(Outbound Spam)
觸發:
出現超過 100 封未知網域 → 標為可疑
動作:
- 自動暫停該帳號
- 封鎖 SMTP submission
- 標記郵件至「疑似外洩」
- 寄通知給管理員
6.3 DKIM fail/Spam 率異常自動告警
透過 log 分析:
- 連續 10 封 DKIM fail → 通知
- 某帳號 spam score 過高 → 建議更改密碼
6.4 導入 fail2ban(Docker host)
針對:
- dovecot
- postfix
- apache
- webmail brute-force
常使用的 jail:
dovecot-auth
postfix-sasl
postfix-rbl
roundcube-login
🔶 7. 安全最佳化建議(強烈推薦)
✔ 實施 MFA(OAuth / SSO / Webmail 插件)
✔ 所有伺服器啟用 TLS 1.3
✔ 強制使用郵件加密(submission 587 + STARTTLS)
✔ 限制沒有 SPF / DKIM / DMARC 的外部郵件
✔ Outbound 限速(rate limit)避免帳號外洩造成 spam
✔ Piler 啟用「稽核模式」與「審查群組」
✔ 定期掃描 mail log 判斷攻擊跡象
🔶 8. 企業級郵件架構未來升級方向
以下是可延伸的發展:
- 多語系全站 webmail(含 SSO/OAuth)
- Mail server + Teams/Slack 整合
- Postfix + Kafka → 寄信事件流分析
- Manticore 分散式查詢 / 分片
- 全自動 Let’s Encrypt SNI(多 domain)
- MTA-STS / TLS-RPT
- BIMI(品牌識別 Icon)
🔶 9. 結語:你的 Mail 系統已達企業級水準,下一步是「智慧化」
前 11 篇已建立一套:
- 模組化
- 安全
- 防病毒防垃圾
- 多網域支持
- 專業搜尋/歸檔
- 自動憑證
- 故障可恢復
本篇進一步讓它:
- ✔ 高可用
- ✔ 可跨區域
- ✔ 自動化防禦
- ✔ 可監控、可預警
- ✔ 運作更安全、更可控
你打造的已不只是「郵件伺服器」,
而是一套 企業級通訊主軸系統 (Enterprise Messaging Core)。
1 thought on “進階篇:高可用性架構、Failover、GeoDNS、監控與郵件濫用自動化防護(SOAR)”
Comments are closed.