Skip to content

Nuface Blog

隨意隨手記 Casual Notes

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

備援架構、維運策略與長期擴充指南

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

【Mail Server 系列文:第 15 篇】

在前 14 篇中,我們完成了郵件平台的核心建置:
Postfix、Dovecot、SpamAssassin、ClamAV、Amavis、Roundcube、Piler、Manticore 全部成功以 Docker 模組化部署,並具備完整的企業級功能。

從本篇開始,我們進入更「工程化」的層級:
如何讓這套郵件系統在未來保持可維護、可擴充、可備援?

本篇目標是:

  • 提供可落地的 高可用方案(HA)
  • 針對平台各服務提出 備援選項與擴充方向
  • 建議監控、備份與自動化策略
  • 逐項列出若跨地部署、多 Domain、跨國團隊如何維運
  • 分享實務上的 故障排除 SOP 與 災難恢復流程(DR)

這篇文章可以視為整套郵件系統的「運維藍圖」。


1. 全系統備援與擴充觀念總覽

郵件系統不像 Web 伺服器可以只靠 Load Balancer 就好。完整 Mail Flow 包含:

  • SMTP 收信/送信
  • IMAP/POP3
  • Spam/Virus 檢查
  • DKIM/DMARC/SPF
  • 歸檔與全文檢索
  • 網頁郵件與管理介面

每個服務都需要自己的 HA 策略。

在 Docker 化之後,我們可以用以下概念建立:


2. Postfix + Dovecot HA 方案

2.1 多機叢集基本模型

        [VIP / Load Balancer / DNS Round Robin]
                    |
     ┌──────────────┴──────────────┐
     |                               |
[Mail-Node 1]                  [Mail-Node 2]
 Postfix                           Postfix
 Dovecot                           Dovecot
 Amavis                            Amavis
 SpamAssassin                      SpamAssassin
 ClamAV                            ClamAV

2.2 HA 核心策略

✔ 1. DNS MX 多筆紀錄

MX 10 mail1.it.demo.tw
MX 20 mail2.it.demo.tw

→ 若 mail1 故障,mail2 會接手。


✔ 2. mailbox 需要共用儲存

Dovecot 需要共享:

/var/vmail/

可採:

  • NFS v4 + fsync
  • CephFS
  • GlusterFS
  • TrueNAS NFS + 網路隔離

最建議:
單向 Master → Backup(以 Dovecot Replication)

Dovecot 有原生的 replication:
https://doc.dovecot.org/replication/


✔ 3. Postfix queue 不同步也沒關係

Postfix queue 不用同步。
因為:

  • 多 MX 架構下,每封信重新排隊皆可
  • sender 若連線失敗會自動重試另一台

✔ 4. Amavis / SA / ClamAV 可獨立運作

這些內容過濾服務皆為 stateless:
只要資料庫連線正確,兩台系統可以互相備援。


3. 資料庫(MariaDB)備援策略

MariaDB 儲存:

  • PostfixAdmin:domain、mailbox、aliases
  • SpamAssassin:Bayes、TxRep
  • Piler:metadata

推薦三種 HA:

3.1 Galera Cluster(三節點最佳)

優點:

  • 真正同步
  • 任何節點可讀寫
  • 適合郵件系統

架構:

[DB1] ─ [DB2] ─ [DB3]

3.2 主從複寫(Master → Slave)

簡單快速:

Master → Slave

Slave 可在主機掛掉時手動提升為 Master。


3.3 Backup-only(最簡單)

每日 dump:

postfix
sa40
piler

雖然不是 HA,但災難復原最容易。


4. Piler + Manticore 的備援

Piler 由兩部分組成:

  • Mail Store(大量檔案,archive)
  • MySQL(metadata)
  • Manticore(索引)

4.1 Storage HA

可以用:

  • ZFS replication(推到第二台)
  • Rsync + incremental
  • GlusterFS / CephFS(大公司)

4.2 Manticore HA

支援「同步叢集」:

Manticore 1 <── sync ──> Manticore 2

即使一台掛掉,搜尋仍可運作。


5. Roundcube、PostfixAdmin、Piler Web HA

這三者都是 web service → 完全可做 Load Balance。

使用:

  • HAProxy
  • Nginx
  • Apache mod_proxy_balancer
  • 或 Cloudflare Load Balancer

Session 儲存可以:

  • 容器內 SQLite(可接受)
  • 或 Memcached / Redis(較好)

6. 信件傳遞的跨國部署(多國據點)

假設你的企業有:

  • 台灣總公司
  • 新加坡
  • 越南
  • 馬來西亞
  • 泰國

郵件系統可以:

方案 A:各地共用同一套郵件平台(最常見)

  • MX 都指向台灣主機
  • 儲存都集中
  • 管理效率最高
  • 等於中央郵件平台

方案 B:多國分散服務(大型企業)

  • 每個國家有自己的 Postfix/Dovecot
  • 使用 Piler 做集中歸檔
  • DNS 指向當地 SMTP

方案 C:Hybrid

  • 台灣為伺服器
  • 東南亞有一台備援(Mail Relay)
  • 網路不穩時,可就地收信暫存

7. 監控架構(必做)

郵件系統的監控非常重要。

建議用:

  • Prometheus + Grafana
  • 或 Zabbix

監控指標:

SMTP

  • Postfix queue 長度
  • Reject rate(被拒絕比率)
  • Outbound deliver time

IMAP/POP3

  • Dovecot process 數量
  • 登录失敗(暴力破解指標)

SpamAssassin / ClamAV

  • 病毒更新是否成功
  • spam 命中率

Piler

  • store 增長速度
  • index 延遲
  • 搜尋 fail ratio

8. 自動化維運(可節省大量時間)

8.1 自動 renew SSL(Let’s Encrypt)

透過 Apache 容器內 certbot。

8.2 自動更新 SpamAssassin

Amavis 內的 cron 已自動做:

sa-update && sa-compile && HUP amavisd

8.3 自動備份 maildb

排程 mysqldump:

postfix
piler
sa40

8.4 自動同步 Piler Store

以 rsync:

rsync -a /var/piler/store remote:/backup/piler/

9. 故障排除快速指南(SOP)

9.1 Dovecot 無法登入

  • 查 /opt/docker/mail/dovecot/log/dovecot.log
  • 確認防火牆允許 143/993
  • 確認 SQL 帳密無誤
  • 檢查磁碟是否滿了

9.2 Postfix 無法收信

看 /var/log/postfix/postfix.log:

  • 是否 DNS/MX 設錯
  • 是否收到中斷封包(firewall)
  • SQL domain / mailbox 是否存在
  • Amavis 10024/10025 是否正常

9.3 Outbound 被 gmail / outlook 拒絕

檢查:

  • DKIM
  • SPF
  • DMARC
  • Reverse DNS (PTR)
  • IP reputation(可查 spamhaus)

9.4 Piler 無法搜尋中文

  • 確認 manticore morphology='icu_chinese'
  • 表格為 ngram
  • 檢查 piler 是否正確發入 manticore

10. 災難恢復流程(DR)

假設你的主機完全故障。

只要你有以下資料:

/opt/docker/mail/*        ← 所有 configs
/var/vmail                ← 所有 mailbox
/var/piler/store          ← 所有 archive
MySQL dumps               ← postfix + sa40 + piler

你可以在任何一台 Linux 主機:

  1. 安裝 Docker + docker compose
  2. Restore /opt/docker/mail/*
  3. Restore /var/vmail /var/piler/store
  4. 匯入 MariaDB dumps
  5. docker compose up -d

只要 DNS 還在,你的郵件系統就能完全復原。


結語:從 Mail Server → 到企業級 Mail Platform

你目前建立的系統已經達到:

  • 企業級功能
  • 高可用準備
  • 可擴充架構
  • 完整的安全與稽核
  • 跨國使用能力
  • 中文全文檢索的郵件歸檔

這不是「自架 Mail Server」而已。
這已經是一套完整的 企業郵件總管平台。

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