使用 CloudFlare 设置 SPF/DKIM 记录

Tif*_*ker 2 domain-name-system bind spf cloudflare

设置 SPF 记录的正确方法是什么?

使用TXT并添加以下内容?

v=spf1 a mx include:mydomain.tld ~all
Run Code Online (Sandbox Code Playgroud)

更新:

使用后如下:

v=spf1 a mx ~all
Run Code Online (Sandbox Code Playgroud)

我明白了:

Received-SPF: temperror (google.com: error in processing during lookup of PHPUSERNAME@SERVER.MYDOMAIN.TLD: DNS timeout) client-ip=x.x.218.7;
Authentication-Results: mx.google.com; spf=temperror (google.com: error in processing during lookup of PHPUSERNAME@SERVER.MYDOMAIN.TLD: DNS timeout) smtp.mail=PHPUSERNAME@SERVER.MYDOMAIN.TLD
Received: from PHPUSERNAME by SERVER.MYDOMAIN.TLD with local (Exim 4.77)
(envelope-from <PHPUSERNAME@SERVER.MYDOMAIN.TLD>)
id xxxxxxxxxxxxxxxx
for SOMEEMAIL@gmail.com;
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 8

如果您还没有找到 www.openspf.org,它是一个很好的资源。请注意 SPF 与发件人 ID 主题。查看http://www.openspf.org/SPF_Record_Syntax以了解故障和脏。

如果您托管自己的邮件服务器并且您的 MX 记录构成唯一的发送服务器,则可以仅使用“mx”机制。

如果您为电子邮件使用托管服务(例如 Google Apps),甚至将外发邮件从内部 SMTP 服务器转发到 SendGrid 等服务,请查看这些服务以获取特定的 SPF 配置说明。

编辑以添加对 SPF、机制和限定符的更好描述

当支持使用 SPF 的邮件交换收到一封电子邮件时,它会查看发件人的声称域 (someone@sendingdomain.tld) 和发送邮件的服务器的 IP 地址。问题是,该 IP 地址是否有权代表发件人的域 (sendingdomain.tld) 发送电子邮件?

为了回答这个问题,服务器从声称的域 (sendingdomain.tld) 中检索 SPF 记录(存储为 DNS TXT 记录),并根据该 SPF 记录检查发送服务器的 IP 地址。

SPF 使用机制来创建电子邮件的有效发送服务器列表。每个机制都可以用 +、-、~ 或 ? 前缀(此信息取自OpenSPF

'+' 表示通过(或有效) -注意:这是默认操作
'-' 表示失败(或无效)
'~' 表示软失败(被许多服务器视为中立)
'?' 表示中立(既不确认也不否认有效性)

当一个记录被评估时,它从左到右匹配第一个机制。如果没有机制匹配,默认结果是中立的

一般来说,“全部”机制匹配一切,所以......

“+All”机制意味着,所有服务器都是该域的有效发件人(不要使用此选项)。

“-All”机制使所有发送服务器失败。在 SPF 记录的末尾使用它可以用失败结果覆盖中性默认结果。一些服务(如谷歌)对此提出警告,但我还没有遇到任何问题。

'~All' 和 '?All' 机制相当于说,“如果发送服务器与列出的任何有效服务器都不匹配,请不要担心。” 这些仅用于测试 SPF 记录。

有关机制的完整列表,请参阅OpenSPF 的记录语法页面。

我想在这里讨论的另一种机制是“包括:<域>”。此机制指示解析 SPF 记录的服务器包含在由 <域> 托管的另一个 SPF 记录中指定的其他机制。

例子:

如果您的域使用相同的服务器(如在相同的 IP 地址中)进行发送和接收:

  • v=spf1 mx –all
  • 上面等价于,v=spf1 +mx –all

如果您使用 Google Apps 来托管邮件,但有时使用内部 SMTP 服务器来自动发送邮件:

  • v=spf1 ip:<内部服务器的ip地址> include:_spf.google.com -all

DKIM 是一个完全不同的野兽。如果您使用的是托管电子邮件服务,请查看该服务以获取说明。如果您托管自己的邮件交换,请查看服务器软件的文档以了解如何实现它。这有点超出了这个问题的范围。