一段时间以来,我一直使用 Google Apps for Business 为我的域提供电子邮件服务。我正在设置新的存储服务器,并希望在本地服务器上单独处理通知类型的电子邮件。
我已经将 postfix 设置为内部 smtp 服务器,并且一切正常。但是,我在 dns 设置中使用 spf 记录,以便收件人能够验证电子邮件是否来自我。因此,我还需要指定从特定域(在本例中为我的内部邮件服务器的 fqdn)收到的所有邮件都是通过的。
问题是我找不到通过 CloudFlare 实现这一目标的明确方法,我只看到了两条潜在的途径:
- 在 SPF 记录中指定 FQDN - 这不起作用,因为邮件将根据 CloudFlare 的 IP 地址进行检查。
- 直接指定我的 IP 地址 - 这样做可行,但 DNS 记录中我的公共 IP 可供全世界查看。这首先否定了使用 CloudFlare 的好处?
是否存在一个配置选项,只针对域名验证邮件,而不进行扩展 IP 检查?
答案1
如果您需要直接从服务器发送电子邮件并且使用 SPF(您应该这样做),则需要将该 IP 发布到您的 SPF 中以允许 SPF 检查。它要么直接存在(ip4
/ip6
机制),要么通过其他机制间接存在,但必须存在。这不是一个大问题,因为 IP 地址并不是您需要不惜一切代价保护的神奇东西。
如果您需要将您的公共 IP 隐藏在 DNS 查找之外,则您无法直接从该服务器发送电子邮件,因为 SPF 将失败。作为第二种选择,您可以通过已在 SPF 记录中的服务器中继所有邮件。
- 将原始服务器列为
mynetworks
在您的 CloudFlare 服务器上(或任何允许从其中继的服务器)。 - 将该 SMTP 服务器添加为
relayhost
在需要发送这些通知的服务器上。
这样,执行 SPF 检查的服务器将检查 CloudFlare IP 的 SPF 并产生结果PASS
。仅对尝试在 SMTP 命令中使用您的域连接到收件人 MTA 的服务器检查 SPF MAIL FROM
;它不会检查From:
任何Received:
标头。