在 Ubuntu 上做邮件服务器容灾,核心目标是:邮件不丢、服务可恢复、切换时间短。下面我从常见架构 → 具体实现 → 推荐方案三个层次给你一个可落地的方案。
一个完整邮件系统通常包括:
| 组成 | 容灾重点 |
|---|---|
| MTA(Postfix / Exim) | 服务高可用 |
| MDA / IMAP(Dovecot) | 邮件存储 |
| 用户认证(MySQL / LDAP) | 数据一致性 |
| 邮件队列 | 不丢未发送邮件 |
| 配置文件 | 可快速恢复 |
| DNS(MX 记录) | 容灾切换 |
架构
主服务器(Production)
↓
定期 rsync / 备份
备服务器(Standby)
实现要点
rsync -aAX --delete /var/mail/ root@backup:/var/mail/
rsync -aAX --delete /etc/postfix /etc/dovecot backup:/etc/
mysqldump -u root maildb > maildb.sql
✅ 优点:简单
❌ 缺点:RTO 较长(分钟~小时)
架构
Postfix + Dovecot(主)
↓
DRBD / Rsync + Inotify
Postfix + Dovecot(备)
关键点
inotifywait -r -m /var/mail -e modify,create,delete |
while read path action file; do
rsync -a /var/mail/ backup:/var/mail/
done
keepalivedvrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
virtual_ipaddress {
192.168.1.10
}
}
✅ 优点:切换快(秒级)
✅ 邮件几乎不丢
架构
DNS MX
├─ Mail Server A
└─ Mail Server B
✅ 优点:高可用、可扩展
❌ 缺点:配置复杂
Postfix 队列目录:
/var/spool/postfix
✅ 同步队列目录
✅ 或启用 队列镜像
dsync 实时同步doveadm sync -u user@domain maildir:~/Maildir
MySQL 主从复制
server-id=1
log-bin=mysql-bin
备库:
server-id=2
relay-log=relay-bin
domain.com. MX 10 mail1.domain.com.
domain.com. MX 20 mail2.domain.com.
✅ 主服务器宕机,邮件自动到备机
✅ 中小企业推荐
Postfix + Dovecot
Rsync + inotify
Keepalived(VIP)
MySQL 主从
✅ 企业级推荐
Postfix + Dovecot
DRBD + Heartbeat
Dovecot dsync
DNS 多 MX
| 指标 | 建议 |
|---|---|
| RPO | ≤ 5 分钟 |
| RTO | ≤ 5 分钟 |
| 数据丢失 | 0 |
| 切换方式 | 自动 |
你可以告诉我:
我可以直接给你一套可复制的配置文件 + 脚本。