SMTP 服务器的 SPF 记录

SMTP 服务器的 SPF 记录

我正在尝试设置我的 SPF 记录,以考虑到我直接在 Outlook 等中通过 office365 发送电子邮件,以及在 AWS 中托管的 Web 应用程序中发送电子邮件到 smtp.office365.com (JavaMailSender 将 MIME 电子邮件发送到 smtp 服务器进行传递等)

我的 SPF 记录目前是:

v=spf1 include:spf.protection.outlook.com include:amazonses.com include:smtp.office365.com ~all

如果我通过 Outlook 发送电子邮件,SPF 会通过并得到验证,一切正常。

如果我的网络应用程序向 smtp.office365.com 发送电子邮件,SPF 未经验证。

我该如何解决这个问题?

解决此问题的唯一方法是将我的 Web 应用程序的 IP 地址放入 SPF 记录中吗?

谢谢

答案1

(JavaMailSender 将 MIME 电子邮件发送到 smtp 服务器进行传送等)

听起来 JavaMailSender 可以执行授权 SMTP,因此如果 Office 365 支持它,请使用它。用户名和密码应该绕过 Office 365 的 SPF 检查(就像它对其他经过身份验证的 smtp 客户端(如 Outlook 或 Thunderbird 等)一样),然后,如果它不是邮件的最终目的地,Office 365 服务器就是使用 SPF 验证的服务器,因此您应该已经没问题了。

include:amazonses.com

或者,使用 SES。你实际上并没有在问题中提到 ses,但同样的事情也适用 - 你可以通过 smtp 身份验证到 ses 并让它转发你的邮件。SES 是 AWS 的电子邮件发送服务。哪个更可取的商业决策当然远远超出了你的问题范围。

将我的 Web 应用的 IP 地址放入 SPF 记录中

这也行得通,但无法维护,因为每个新服务器都必须在 SPF 记录中拥有自己的 IP 地址。在 AWS 中,IP 会发生变化(仅当没有 EIP 的服务器停止时),一旦它们从一个实例中释放出来,就可以在另一个实例上使用,这是我建议不要尝试将所有可能在某一天发送邮件的服务器的 IP 添加到 SPF 中的一些原因。将 SMTP 凭据放在服务器上更有意义,并且扩展性更好,因为无论如何都必须配置新服务器,但 SPF 不必经常更改。

答案2

在为 AWS 中的简单电子邮件服务设置 DKIM 之前,我也遇到了同样的问题。

看:https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-authentication-dkim.html

相关内容