我有一个域名 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 记录:
将主域 (example.com) 的 MX 记录设置为指向第一个邮件服务器 (例如,mail.server1.com)。
对于每个子域名(*.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 指令将子域定义分成不同的文件。