对 SMTP 服务器使用 CNAME

对 SMTP 服务器使用 CNAME

我正在开展一个涉及使用事务性电子邮件服务(如 sendgrid)的项目。我的问题是,我们可以在域 DNS(即 smtp.example.com 或 client1.example.com)中创建指向电子邮件服务 smtp 服务器的 CNAME 吗?

这将屏蔽我们使用的服务(即 sendgrid、mailgun)的 SMTP 服务器。

我们的目标是根据客户端改变 DNS 条目。例如,我们可能有 client1.example.com、client2.example.com 等。每个客户端子域将是电子邮件服务的 CNAME。如果需要,我们还可以仅通过更改 CNAME 引用的位置来切换电子邮件服务。例如:

    NAME                    TYPE   VALUE
--------------------------------------------------
client1.example.com        CNAME  smtp.emailservice.com
client2.example.com        CNAME  smtp.emailservice.com

在研究这个方面,它似乎有效,但我想看看是否有我应该寻找的问题。我们不是处理 MX 记录、POP3 或任何传入电子邮件,也不能使用 API 发送。它必须通过 SMTP。

谢谢你!

答案1

对你的问题的天真回答是简单的“是”。你显然按照建议的方式创建 CNAME RR。至于由此可能出现哪些问题,则是另一回事了 - CNAME 常常被误解,使用时容易出错。

需要考虑的要点是:

  • 您不得将 CNAME 用作 MX RR 的目的地(RFC 2181 第 10.3 节
  • 您不得为定义为 CNAME 的标签创建任何其他 RR 类型定义(性病 13,RFC 1034,第 3.6.2 节)

因此,以您问题中的 RR 定义作为先决条件,以下情况将导致无效使用:

; these are INVALID RR definitions, don't even try!
mail.example.com.     IN MX  client1.mydomain.com. ; no MX to CNAME RRs
client1.mydomain.com. IN A   198.51.100.203        ; no other RR types for CNAMEd labels

在以后的文章中,当使用 IP 地址和名称空间作为示例和/或文档目的时,请考虑遵循以下定义为文档保留的 IPv4 地址块 (RFC 5737)特殊用途域名 (RFC 6761)以避免混淆。

相关内容