我正在尝试在 Mandrill 上设置发送域,但收到 SPF 缺失错误。
我的 APP 在 AWS 上运行,我正在使用 EC2 和 Elastic Beanstalk,我的域名在 Namecheap 上。
DNS 设置如下:
CNAME 记录 @'my-instance-id'.elasticbeanstalk.com。
TXT 记录 @ v=spf1 include:spf.mandrillapp.com ?all
TXT 记录 @ v=DKIM1; k=rsa;参数
URL 重定向记录 wwwhttps://myapp.com永久 (301)
今天早上我能够验证 SPF 地址,并且在使用 CNAME 条目更新我的 DNS 后开始出现 SPF 缺失错误(实际上我刚刚将我的应用程序移动到 AWS)。
有什么办法可以解决这个问题吗?谢谢!
编辑
Mandrill 支持人员的回答是:
感谢您的来信。您的“myapp.com”域名似乎是“myapp.eu-central-1.elasticbeanstalk.com”的 CNAME。这会使事情变得棘手,因为在 DNS 中您不能拥有两个具有相同名称的记录(TXT 类型和 CNAME 类型)。因此,您将无法为“myapp.com”设置 SPF。此外,通过 CNAME 重定向的方式,理论上可以在这些重定向指向的最终目的地设置 SPF 记录,但不幸的是,Mandrill 的 SPF 和 DKIM 验证器过于具体,因此无法验证 CNAME 指向另一个域的域的 DNS 记录。鉴于这些限制,唯一真正的选择是将您的“myapp.com”从 CNAME 更改为直接指向该 CNAME 链末尾的 IP 地址的 A 记录。然后您应该能够为该域设置 SPF。
实际上我不确定我是否有这样的 IP 可以指向。。你解决了类似的问题吗?谢谢
答案1
ACNAME
不能与其他记录同时存在。TXT(或任何其他记录,如 MX、A 等)记录请求将紧随其后,CNAME
并接收my-instance-id.elasticbeanstalk.com.
的TXT
记录(如果有)。
建议使用 Route53 的ALIAS
记录类型来代替。对于外界来说,这看起来像是一条普通记录,但会自动将 IP 地址更改反映到 Elastic Beanstalk 实例中。CNAME
ALIAS
A
答案2
我解决了这个问题,并且能够在 Mandrill 中验证我的发送域。
我告诉 namecheap 使用 AWS 名称服务器,然后在 AWS Route53 上设置一个 A 记录以指向 AWS EB 实例,然后直接在 AWS 中添加 Mandrill 域验证所需的 TXT 记录。
希望这可以帮助其他有同样问题的人。