子域邮件误路由至主域服务器问题咨询
看起来你遇到的麻烦是:子域subdomain.example.com的邮件没按预期跑到AWS SES,反而误路由到主域的Outlook服务器了对吧?我先帮你梳理下当前的DNS配置,再聊聊可能的问题点和排查方向。
先修正下你给出的DNS记录格式(原表格列有点错位)
| 记录名称 | 记录类型 | 记录值 |
|---|---|---|
| example.com | A | accthash.cloudfront.net |
| example.com | MX | 10 example-com.mail.protection.outlook.com |
| subdomain.example.com | MX | 0 inbound-smtp.my-aws-region.amazonaws.com |
| mail.subdomain.example.com | MX | 20 feedback-smtp.my-aws-region.amazonses.com |
可能的问题原因及排查步骤
1. DNS缓存搞的鬼
很多邮件服务器和公共DNS都会缓存MX记录,如果之前你没给子域设置过MX,或者之前配置过指向主域的记录,现在刚改完的话,缓存可能还没过期。你可以自己动手验证:
- 打开终端,运行
dig subdomain.example.com MX(Windows系统用nslookup -type=MX subdomain.example.com),看看返回的是不是只有你设置的那条0优先级的AWS SES记录。如果结果里还出现主域的MX记录,那大概率是缓存没更新,等TTL过期就行(一般几小时到一天,要是着急的话可以把DNS记录的TTL改短点,比如300秒)。
2. 主域有没有通配MX记录?
你没提到这个,但如果主域配置了*.example.com的MX记录,那会直接覆盖子域的MX配置——毕竟通配记录会匹配所有没单独设置的子域。你得去DNS控制台检查下有没有这条记录,要是有的话要么删掉,要么确保子域MX的优先级比通配的更高(不过你子域设的是0,已经是最高优先级了,理论上能覆盖,但最好还是删掉通配MX避免冲突)。
3. AWS SES的验证没做全
AWS SES的规则很严:要么验证整个subdomain.example.com子域,要么单独验证user@subdomain.example.com这个收件人,不然SES会直接拒收邮件。要是SES拒收了,有些发件服务器可能会出现异常路由的情况。
- 你去AWS SES控制台看看,子域的验证状态是不是“已验证”,另外SPF和DKIM的TXT记录也得配上——你当前的DNS里没这两条,不仅可能影响路由,还会导致邮件被当成垃圾邮件,这个得补上。
4. MX记录的服务器地址对不对?
你设置的inbound-smtp.my-aws-region.amazonaws.com得是对应AWS区域的正确地址,比如us-east-1就是inbound-smtp.us-east-1.amazonaws.com,要是写错了区域,邮件服务器找不到这个主机,就可能乱路由。你可以对照AWS SES控制台里的入站设置确认下地址。
另外,你给mail.subdomain.example.com设置的MX记录是SES的反馈服务器,这个是用来收退信和投诉的,和subdomain.example.com的邮件路由没关系,不用管它。
快速测试方法
找个邮箱发一封测试邮件到user@subdomain.example.com,然后:
- 看SES控制台的收件箱或日志有没有收到;
- 要是发件人收到退信,退信内容会直接告诉你原因(比如“收件人未验证”“MX主机不存在”),照着改就行。
备注:内容来源于stack exchange,提问作者WBT

