如何设置我的 MX 记录,以便发送到我的域的邮件发送到一个地方,而发送到所有子域的邮件发送到其他地方?

如何设置我的 MX 记录,以便发送到我的域的邮件发送到一个地方,而发送到所有子域的邮件发送到其他地方?

我有一个域名 example.com,我想根据情况将其邮件路由到不同的服务器。

发送到 @example.com 地址的邮件应发送到服务器 mail.server1.com,发送到任何子域 @*.example.com 的邮件应发送到 mail.server2.com

有没有办法配置 MX 记录来执行此操作(或者任何其他方法都可以执行此操作)?我可以使用通配符 DNS 条目作为 MX 记录吗?

答案1

我发帖后几乎立即就发现了答案:)

按预期将 example.com 的 MX 记录设置为 mail.server1.com。

然后设置通配符,您可以创建一个通配符 CNAME *.example.com,它指向某个通用子域 sub.example.com,然后为 sub.example.com 创建一个 MX 记录,它指向 mail.server2.com。

答案2

通配符 MX 记录完全有效,不需要额外的 CNAME。

你可以简单地...

example.com    IN MX 10 mail.server1.com
*.example.com  IN MX 10 mail.server2.com

您的 CNAME 只会导致额外的 DNS 查找

答案3

要将主域和子域的电子邮件路由到不同的邮件服务器,您可以在 DNS 区域文件中配置单独的 MX 记录:

  1. 将主域 (example.com) 的 MX 记录设置为指向第一个邮件服务器 (例如,mail.server1.com)。

  2. 对于每个子域名(*.example.com),设置一个指向第二个邮件服务器的单独 MX 记录(例如,mail.server2.com)。

这样您就可以为主域和子域指定特定的邮件服务器。但是,请注意,给定域或子域内的所有电子邮件地址必须由同一邮件服务器处理。您不能仅使用 MX 记录将域内的各个电子邮件地址拆分到多个服务器。

下面是如何使用 BIND 进行配置的示例:

; zone fragment for 'zone name' example.com
$TTL 2d
$ORIGIN example.com.

; main domain
@              IN      SOA   ns1.example.com. hostmaster.example.com. (
                   2003080800 ; serial number
                   2h         ; refresh =  2 hours 
                   15M        ; update retry = 15 minutes
                   3W12h      ; expiry = 3 weeks + 12 hours
                   2h20M      ; minimum = 2 hours + 20 minutes
                   )
               IN      NS     ns1.example.com.
               IN      NS     ns2.example.com.
               IN      MX 10  mail.server1.com.

; subdomains
$ORIGIN subdomain.example.com.
@              IN      MX 10  mail.server2.com.

在此示例中:

  • 主域名(example.com)有一个指向 mail.server1.com 的 MX 记录
  • 子域名 (subdomain.example.com) 有一个单独的 MX 记录指向 mail.server2.com

您可以使用相同的策略定义其他子域。为方便起见,您还可以使用 $INCLUDE 指令将子域定义分成不同的文件。

相关内容