首页 > 解决方案 > PHPMailer 和 DKIM,使用经过身份验证的 SMTP 服务器进行 SPF 验证

问题描述

我有一个带有电子邮件通知的 Web 应用程序。我正在使用 PHPMailer 通过我的提供商提供的 SMTP 服务器通过经过身份验证的 SMTP 发送邮件。

所有邮件都被 SPF 和 DKIM 设置无效,因为不知何故,我的网络服务器应该包含在 SPF 列表中,并且 PHPMailer 必须对邮件进行签名。

有什么方法可以让 SMTP 服务器为我封装并签署电子邮件?我认为经过身份验证的 SMTP 连接会将第一台服务器定义为被包封的服务器,而不是第一个客户端。这是错误的策略还是 SMTP 服务器的错误配置?

标签: emailsmtpphpmailerspf

解决方案


您的邮件服务器是否会为您进行 DKIM 签名取决于邮件服务器 - 通常最好这样做,因为您不必担心它。

但是,如果可以的话,最好自己签名。如果您通过托管服务提供商的邮件服务器发送邮件,他们将需要访问您的私钥才能作为您的域进行签名。出于这个原因,如果他们确实签名,通常是作为中间人而不是作为原始发件人,这可能意味着他们无法保证From您需要签名才能通过 DMARC 检查的地址。您可以同时执行这两项操作,因为消息包含多个 DKIM 签名是完全合法的,这些签名在消息传输的不同点由不同方签名。

SPF 确实包含原始 IP,但您需要了解“常规”SMTP 与RFC6409中定义的 SMTP 提交协议之间的区别,并特别提到您可能希望提交服务器添加签名。提交客户端通常不会被视为来源(从 SPF 的角度来看)。如果该服务器在您自己的网络中,那么您在持有私钥方面没有任何问题。


推荐阅读