使用 CNAME 进行域根和负载平衡时的邮件反弹

使用 CNAME 进行域根和负载平衡时的邮件反弹

我们最近迁移到了 EC2,并开始使用 amazon 的 elb 进行负载平衡。我们使用 CloudFlare 进行 DNS,这允许我们使用 cname 域根。但是,偶尔会有人告诉我们,我们的电子邮件被退回,并出现以下错误:

[电子邮件保护]... 延期:our-production-loadbalancer.elb.amazonaws.com 拒绝连接。

我们正在使用 Google 应用程序来收发邮件,并且我们的 MX 记录配置正确,所以我不确定邮件客户端或服务器在什么时候尝试解析我们的域名并接收 cname 记录。

有人知道为什么 MX 记录会被忽略吗?这是使用 CNAME 的结果吗?我想如果我们将 A 记录指向同样不接受邮件的 IP 地址,也会发生同样的事情。

答案1

如果您有域名example.invalid

; example.invalid
$TTL    604800
@       IN      SOA     ns1.example.invalid. root.example.invalid. (
                     2006020201 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1
        IN      MX      10 mail
        IN      CNAME   anotherdomain.invalid

你是说:

嘿,你可以在任何可以找到的example.invalid地址下找到。anotherdomain.invalid顺便说一句,任何 MX 记录、SRV 记录或其他内容example.invalid也都是anotherdomain.invalid告诉您的。这意味着发送到的邮件example.invalid将使用 MX 记录anotherdomain.invalid

参考:

答案2

依据 RFC1034§3.6.2

If a CNAME RR is present at a node, no other data should be present; this 
ensures that the data for a canonical name and its aliases cannot be different.

因此,如果您在配置了 CNAME,example.com那么它就是您在那里配置的唯一记录。与该域相关的所有记录都必须在别名下。

例如。如果您有,example.com IN CNAME acme.hosting-co.com那么您的 NS、SOA、MX 等记录必须全部位于 之下acme.hosting-so.com。它们可能不位于 之下example.com

此外,如果未找到某个域的 MX 记录,则可能会尝试该域的 A 记录作为最后的手段。因此,正常运行的 MTA 应该查找您的域,找到 CNAME,尝试别名,如果找不到 MX 记录,则改为尝试 A 记录(在本例中是您的负载均衡器)。您的负载均衡器显然无法接收电子邮件。

发生故障的 MTA 实际上运行正常。任何找到您的邮件服务器的 MTA 均运行不正常。

答案3

我假设您在 CloudFlare 的 DNS 设置中将平衡器的 CNAME 标记为橙色云?如果是这样,您应该登录并将该 CNAME 记录的云从橙色更改为灰色。

相关内容