第 4 部分:在 CentOS 8/RHEL 8 邮件服务器上使用 Postfix 设置 SPF 和 DKIM

完成第 1 部分和第 2 部分后,我们就有了一个可以工作的 Postfix SMTP 服务器和 Dovecot IMAP 服务器。 我们可以使用桌面电子邮件客户端发送和接收电子邮件。 虽然我已经创建了正确的 MX, 一种PTR 记录,我的电子邮件被 Gmail 和 Outlook 邮件标记为垃圾邮件。 所以在这一部分,我们将研究如何通过在 CentOS/RHEL 服务器上设置 SPF 和 DKIM 来改进电子邮件发送到收件人收件箱。

什么是 SPF 和 DKIM 记录?

SPF 和 DKIM 是 DNS 中的两种 TXT 记录,它们可以帮助防止电子邮件欺骗并使合法电子邮件发送到收件人的收件箱而不是垃圾邮件文件夹。 如果您的域被电子邮件欺骗滥用,那么如果收件人没有将您添加到地址簿中,您的电子邮件很可能会进入收件人的垃圾邮件文件夹。

防晒指数 (Sender Policy Framework) 记录指定 允许哪些主机或 IP 地址代表域发送电子邮件. 您应该只允许您自己的电子邮件服务器或您 ISP 的服务器为您的域发送电子邮件。

DKIM (DomainKeys Identified Mail) 使用私钥 为从您的域发送的电子邮件添加签名. 接收 SMTP 服务器使用相应的公钥验证签名,该公钥发布在您域的 DNS 记录中。

在 DNS 中创建 SPF 记录

在您的 DNS 管理界面中,创建一个新的 TXT 记录,如下所示。

TXT  @   v=spf1 mx ~all

在哪里:

  • 文本 表示这是一个 TXT 记录。
  • Enter @ 在名称字段中代表顶级域名。
  • v = spf1 表示这是一个 SPF 记录并且 SPF 记录版本是 SPF1。
  • 表示允许 MX 记录中列出的所有主机为您的域发送电子邮件,而不允许所有其他主机。
  • ~全部 表示来自您域的电子邮件应仅来自 SPF 记录中指定的主机。 从其他主机发送的电子邮件将被标记为不可信。 可能的选择是 +all, -all, ?all,但它们很少使用。

-all 意味着从不允许的主机发送的电子邮件应该被拒绝,永远不要进入收件人的收件箱或垃圾邮件文件夹。 我已经看到facebook.com 使用它,但我们通常不需要这么严格的政策。

有些人可能会认为 -all 会更好,因为它会拒绝来自不受信任的主机的电子邮件。 那么,使用 -all 在您的 SPF 策略中,当收件人有两个 SMTP 服务器并且主 SMTP 服务器脱机时,您自己的电子邮件可能会被拒绝,您的电子邮件将暂时存储在备用 SMTP 服务器上。 当主 SMTP 服务器重新联机时,电子邮件将从备用 SMTP 服务器中继到主 SMTP 服务器。 由于您没有在 SPF 策略中列出收件人的备用 SMTP 服务器,因此该电子邮件将被收件人的主 SMTP 服务器拒绝。 所以你应该使用 ~all 在您的 SPF 政策中。

请注意,某些 DNS 管理器要求您使用双引号将 SPF 记录括起来,如下所示。

TXT  @   "v=spf1 mx ~all"

要检查您的 SPF 记录是否传播到公共 Internet,您可以使用 dig Linux 机器上的实用程序,如下所示。 (在 CentOS/RHEL 上,您需要安装 bind-utils 打包以使用 dig 命令: sudo dnf install bind-utils.)

dig your-domain.com txt

txt 选项告诉 dig 我们只想查询 TXT 记录。