email - PHPMailer 和 DKIM,使用经过身份验证的 SMTP 服务器进行 SPF 验证
问题描述
我有一个带有电子邮件通知的 Web 应用程序。我正在使用 PHPMailer 通过我的提供商提供的 SMTP 服务器通过经过身份验证的 SMTP 发送邮件。
所有邮件都被 SPF 和 DKIM 设置无效,因为不知何故,我的网络服务器应该包含在 SPF 列表中,并且 PHPMailer 必须对邮件进行签名。
有什么方法可以让 SMTP 服务器为我封装并签署电子邮件?我认为经过身份验证的 SMTP 连接会将第一台服务器定义为被包封的服务器,而不是第一个客户端。这是错误的策略还是 SMTP 服务器的错误配置?
解决方案
您的邮件服务器是否会为您进行 DKIM 签名取决于邮件服务器 - 通常最好这样做,因为您不必担心它。
但是,如果可以的话,最好自己签名。如果您通过托管服务提供商的邮件服务器发送邮件,他们将需要访问您的私钥才能作为您的域进行签名。出于这个原因,如果他们确实签名,通常是作为中间人而不是作为原始发件人,这可能意味着他们无法保证From
您需要签名才能通过 DMARC 检查的地址。您可以同时执行这两项操作,因为消息包含多个 DKIM 签名是完全合法的,这些签名在消息传输的不同点由不同方签名。
SPF 确实包含原始 IP,但您需要了解“常规”SMTP 与RFC6409中定义的 SMTP 提交协议之间的区别,并特别提到您可能希望提交服务器添加签名。提交客户端通常不会被视为来源(从 SPF 的角度来看)。如果该服务器在您自己的网络中,那么您在持有私钥方面没有任何问题。
推荐阅读
- css - YouTube 视频 iframe 上的 4 个圆角
- github - 警告:无法从“http://gems.github.com”中提取数据:未找到错误响应 404 (http://gems.github.io/specs.4.8.gz)
- sql-server - How can I execute "for json path" in dqe and insert result of execute in temp table in SQL Server?
- mysql - 导出openshift的mysql数据库
- vagrant - 如何解决hyper v问题
- python - 如何在使用 CANard 库的 Python-can 中使用 ISOTP 协议发送和接收 CAN 消息?
- c++ - 从 WebBrowser 控件打印时如何等待 IWebBrowser2::ExecWB() 完成?
- vue.js - 重新启用按需加载 [NativeScript Vue]
- python - 如何/为什么全局变量在嵌套类实例中可用/在范围内,但“非局部”变量不可用?
- javascript - 使用 Node 和 Webpack 在 Heroku 上托管 - 找不到模块,无法解析“./Navbar”