我很好奇当主机名在两台机器之间平衡时邮件服务器如何表现。
例如,当给定以下记录时:
example.com MX 10 mailer.example.com
mailer.example.com A 123.123.123.1
mailer.example.com A 123.123.123.2
当123.123.123.1
暂时无法处理邮件时,邮件程序会立即重试吗123.123.123.2
?还是会立即将其视为(暂时)失败?
RFC 974 描述了 MX 记录回退的行为,其中以下内容应按预期工作,其中在失败之前尝试每个主机:
example.com MX 10 mailer-1.example.com
example.com MX 10 mailer-2.example.com
mailer-1.example.com A 123.123.123.1
mailer-2.example.com A 123.123.123.2
我可能会采用这种设置,因为它被定义为可以工作,但我喜欢第一种格式中更简单的记录的想法。我是否遗漏了什么,以使第一种格式具有明确定义的行为?或者你会说不推荐这样做,因为邮件程序可能会将两个 A 记录视为“同一台机器”并快速失败。
答案1
MX 记录回退(如 RFC 974 中所定义)是在其中一个服务器不可用时处理电子邮件传递的标准和推荐方法。
根据标准,邮件服务器应按优先顺序尝试 MX 记录中列出的每个主机,直到成功发送或用尽所有选项。您提到的第一种格式(同一主机名的多个 A 记录)虽然可以工作,但这不是常用方法。
为了确保一致且定义明确的行为,建议使用 RFC 974 中所述的第二种格式(MX 记录中列出的单独主机名)。
答案2
均匀分配负载的最佳方法是使用负载平衡器。如果没有负载平衡器,负载分配取决于 MTA 对 RFC 的实现质量。即使 gmail 似乎也同时做到了这两点,但我更喜欢
example.com MX 10 mailer-1.example.com
example.com MX 10 mailer-2.example.com
mailer-1.example.com A 123.123.123.1
mailer-2.example.com A 123.123.123.2