人们将如何设计有弹性的使用 Linux 设置邮件服务器?
在应用程序层面,系统需要提供的是收发邮件服务(即 SMTP 和 IMAP),以及过滤和存档存储(存档部分还不是很重要,所以我们可能会稍后再讨论)。
除此之外,还需要一个弹性系统,即能够在不中断服务的情况下处理单个服务器故障的系统。因此,我将其称为高可用性邮件系统。这与高性能邮件设置,在我们的例子中,处理的邮件量并不是重要因素,而只是它保持在线。
由于之前没有遇到过这个问题,我首先想到的是一个集群文件系统(gfs/gluster/etc),结合心跳,以便在服务器发生故障时将浮动 IP 故障转移到另一个机器。
结合 postfix 和 dovecot,这对人们来说听起来可行吗?
答案1
或者在 IMAP/POP 级别进行聚类,例如赛勒斯 IMAP。我在邮件服务器迁移期间使用了它的复制功能,效果非常好。没有消息丢失,而且它们到达哪个节点并不重要。
答案2
我猜 SMTP 部分相当简单 - 既用于过滤传入流量,又提供传出服务 - 它们是无状态的。因此对于这些 - 通常的主服务器 + 热备用服务器设置基于心跳并且分配给活动节点的“虚拟 IP”就可以了。
但是...当给定的服务器崩溃时,存在丢失传输中的消息的风险[例如,被反垃圾邮件检查或由于另一方的灰名单而被排队等待外发传递]。
对于负载不是太重的系统中邮箱的 imap/access,我会再次使用 master + hot-standby 配置,但这次我们需要添加邮箱复制。根据大小 - 每 10 分钟运行一次简单的 rsync 就可以了,但如果我们谈论的是数千个邮箱和每个邮箱中的数千条消息 -基于drdb复制的效果会更好。
通常的警告:如果您设置了 HA 集群 - 请定期检查 - 例如每季度左右检查一次。当您需要 HA 时发现您期望的 HA 并不是真正的 HA,这是一种非常不愉快的感觉。
对于 MTA 我通常使用后缀,对于 IMAP -导游,用于反垃圾邮件 -欧洲呼吸协会[现在似乎已经死了,但人们试图使它复活复活了] 或邮件清理器。
答案3
在我的大学,我们使用 Cyrus IMAP 和 Postfix 的组合。Cyrus 在 3 个 VM 上进行复制。HA 集群具有相当不错的性能,并且服务于约 30,000 个唯一邮箱。