我正在尝试寻找最佳解决方案,以便即使邮件服务器崩溃,通过切换到后备服务器,邮件服务器仍能完全正常运行。
我们使用 Postfix 和 Courier-IMAP 在 Debian 上运行我们的邮件服务器。
我知道 MX 记录和启用中继不会错过任何新收到的电子邮件。但是我需要能够继续访问旧电子邮件。
在两台服务器前面放置一个负载均衡器并设置自动回退是一个考虑,但我不确定这种解决方案对邮件服务器的效果如何,因为我使用 LB 的经验很少。
我并不反对使用 GlusterFS 或类似的东西来存储邮件目录,只要对性能的影响可以忽略不计。但是我听说/研究过,这样的解决方案会带来很高的性能成本。
最后一个要求是,当发生回退时,使用邮件客户端时的连接详细信息不应更改。然而,这个要求相对于所有其他因素来说是最不重要的。
本质上,我正在寻找一种行业标准解决方案。如果行业决定不需要这样的解决方案,任何潜在的解决方法都会受到欢迎。
答案1
有两种可能的解决方案:
将邮箱存储在复制存储中。根据您的性能需求,您有几种选择:如果我们停留在开源/软件定义领域,我建议使用 Gluster 支持的 NFS 导出(http://www.gluster.org)或 DRBD(http://www.drbd.org) 设备。根据邮箱的预期大小,Gluster 可能不适合。
使用 IMAP 复制功能在两个服务器之间复制并不断同步您的邮箱,我建议使用 Dovecot (https://wiki.dovecot.org/Replication)
共享存储解决方案:
假设你使用性能不错的 DRBD,你需要设置 Linux-HA(http://www.linux-ha.org) 以确保一次只有一台服务器处于活动状态,并且只有一台服务器安装了 DRBD 设备。MX 记录指向 Linux-HA 管理的浮动 IP。
SMTP/POP/IMAP 服务应该从相同的复制查找服务(如 MySQL/LDAP)读取任何会计信息(邮箱、别名、加密密码)。
这将是一个主动/被动集群。
IMAP 复制解决方案:
每个邮件服务器都有自己独立的本地存储。设置两个相同的服务器,确保 Postfix 和 Dovecot 从相同的复制查找服务 (MySQL / LDAP) 读取记帐信息。设置 Dovecot 在两个服务器之间复制邮箱。
这将是一个主动/主动集群。在这种情况下,收到的邮件会随机发送到两个邮件服务器之一,并最终进入其本地存储。Dovecot Sync 会定期在存储在每个服务器上的邮件之间执行双向复制,并自动解决冲突。在很短的时间窗口(两次同步之间的间隔)内,某些消息可能会丢失。您可以自行决定是否可以接受这种情况。