我最近在 digitalocean 服务器上用 postfix 和 dovecot 设置了一个邮件服务器。它对主域名 example.com 运行良好
我还设置了一个子域名:verify.example.com
发送和接收对它们都有效。直到我最近遇到了子域的问题。一位用户试图在[电子邮件保护]来自他的服务器。但我从未收到过那封邮件。
这是 /var/log/mail.log 部分:
postfix/smtpd[2627]: connect from gproxy3-pub.mail.unifiedlayer.com[69.89.30.42]
postfix/policy-spf[2635]: Policy action=PREPEND Received-SPF: pass (userdomain.com: Sender is authorized to use '[email protected]' in 'mfrom' identity (mechanism 'include:hostmonster.com' matched)) receiver=example.com; identity=mailfrom; envelope-from="[email protected]"; helo=gproxy3-pub.mail.unifiedlayer.com; client-ip=69.89.30.42
postfix/smtpd[2627]: warning: connect to mysql server 127.0.0.1: Access denied for user 'UNKNOWN_USER'@'localhost' (using password: YES)
postfix/smtpd[2627]: warning: mysql:/etc/postfix/mysql/virtual_mailbox_maps.cf lookup error for "[email protected]"
postfix/smtpd[2627]: NOQUEUE: reject: RCPT from gproxy3-pub.mail.unifiedlayer.com[69.89.30.42]: 451 4.3.0 <[email protected]>: Temporary lookup failure; from=<[email protected]> to=<[email protected]> proto=SMTP helo=<gproxy3-pub.mail.unifiedlayer.com>
postfix/smtpd[2627]: disconnect from gproxy3-pub.mail.unifiedlayer.com[69.89.30.42]
请注意,日志文件中显示[电子邮件保护]但电子邮件已发送至[电子邮件保护].电子邮件似乎已从子域“重定向”到主域。我仅在该用户的服务器上遇到此问题。对于其他用户,到目前为止没有出现此类问题。
我已为 verify.example.com 设置了 MX 和 CNAME 记录
答案1
抱歉,我没有立即发现这个问题,因为问题是这样的:
我已为 verify.example.com 设置了 MX 和 CNAME 记录
CNAME 只能作为单个记录存在,不能与任何其他资源记录合并。这在RFC 1034,第 3.6.2 节。
电子邮件中断的原因在于RFC 5321,第 5.1 节:
查询该域名时,必须返回至少一个地址记录(例如 A 或 AAAA RR),该记录提供应将邮件定向到的 SMTP 服务器的 IP 地址。任何其他响应(特别是包括在查询时将返回 CNAME 记录的值)不在本标准的范围内。RFC 2181 第 10.3 节更详细地讨论了禁止在数据中使用解析为 CNAME 的标签。
当您将 CNAME 更改为 A 记录时,您就从错误操作变成了正确操作,这就是它开始起作用的原因。
顺便说一句,这是一个典型的例子,说明为什么混淆域名毫无用处。如果你给出了你的真实域名,我可能只需验证你的设置就能发现错误。