【问题标题】:How to use msmtp with DKIM to send as other organisation如何使用带有 DKIM 的 msmtp 作为其他组织发送
【发布时间】:2020-09-02 20:38:15
【问题描述】:

我有一个现成的 PHP 应用程序,它使用 msmtp 进行邮件发送。我的一些用户是另一个 external_organisation 的一部分,他们需要从我的 php 应用程序发送电子邮件作为他们的 external_organisation.com 电子邮件地址。还有一些需要作为 mycompany.com 发送

在大多数情况下,这一切都很好,直到现在......

external_organisation 最近设置了 DKIM,并告诉我我需要给他们一个密钥并签署作为他们发送的电子邮件,否则他们将很快停止工作。我已经在互联网上搜索了三遍,但我不知道如何实现这一点。

我能指点一下吗?

我假设我需要配置 msmtp,而不是 PHPMailer ?我真的不确定。

【问题讨论】:

  • 您需要配置 DNS 和 SMTP 中继(服务器),而不是客户端。
  • 您可以将 sendmail 配置为使用上游 SMTP 中继服务器并进行 DKIM 签名。我已经使用本身不执行 DKIM 的 SMTP 服务器做到了这一点。它现在工作得很好,但设置起来确实很麻烦。 Sendmail 的配置比 msmtp 复杂得多。

标签: php email phpmailer dkim msmtp


【解决方案1】:

这个问题更适合 ServerFault,因为它是一个服务器配置问题,而不是一个编程问题。

将邮件服务器配置为进行签名肯定比 PHPMailer 更好更快,但是您需要某种方式来指定要使用的选择器进行签名(假设您要使用多个)。大多数支持 DKIM 的邮件服务器都允许您通过一个特别命名的标头来执行此操作,但您需要参考他们的文档。

最简单的配置方法是使用您自己的私钥进行签名,并让外部组织将 您的 公钥放入 他们的 DNS 中的 TXT 记录中在你的选择器下,例如yourservice._domainkey.external-org.example.com

或者,他们可以在他们的 DNS 中为您的 服务设置CNAME,然后您就可以控制 DNS 中的公钥。类似external-org.yourservice.example.com

无论哪种方式,无论在哪里进行签名都需要访问私钥,并且域和选择器需要指向 DNS 中的公钥。

小提示:说“我已经在互联网上搜索了 3 次”之类的话不太可能给人留下好印象。有无数关于如何使用 DKIM 的文章,他们都会说基本相同的东西,因为它相同的东西。

【讨论】:

  • 感谢您。第一步我迷路了,之后我觉得我还可以。所以我想用我的私钥签署我所有的电子邮件,而不仅仅是发往特定外部组织的电子邮件?
  • 不,你可以签任何你喜欢的消息;你不必做所有这些,但如果可以的话,这不是一个坏主意。如果您这样做,则意味着 DMARC 变得更加有效。我描述的两种 DNS 方法都是外部组织表示“允许该域为我们的域签名消息”的一种方式。
猜你喜欢
  • 2021-04-05
  • 2012-02-01
  • 2014-05-15
  • 1970-01-01
  • 2019-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-03
相关资源
最近更新 更多