【问题标题】:Why SPF fail and DKIM passed in DMARC reports?为什么 SPF 失败而 DKIM 在 DMARC 报告中通过?
【发布时间】:2021-04-10 13:13:17
【问题描述】:

我的域(例如 xyz.com)电子邮件托管在 Gsuite 上。我正在尝试为我的域设置 DMARC。 第一天,我收到了来自多个邮件服务器的汇总报告。 在这些报告中,我发现我的域使用了其他一些服务(订阅、产品评级)。

这些服务通过我的域标头和服务域(例如 mail.service.com)向客户发送邮件。所以我使用 SendGrid(CNAME) 为这些服务设置了专用域。 另外,我为我的 Gsuite 域创建了 DKIM,并在域面板中创建了记录。

现在一切都很完美,但在汇总报告中,一些记录未能通过 SPF 验证,但 DKIM 通过了。为什么 DKIM 通过或 SPF 失败?

这里是示例记录

v=spf1 include:_spf.google.com ~all (main domain)
v=spf1 include:sendgrid.net ~all (email.xyz.com sendgrid)
v=spf1 ip4:149.72.201.23 ip4:149.72.27.244 *(multipal ip4 records)* -all (em1234.xyz.com sendgrid)

以下是汇总报告的两条记录:

<record>
    <row>
      <source_ip>104.47.56.175</source_ip>
      <count>1</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>pass</dkim>
        <spf>fail</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>xyz.com</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>xyz.com</domain>
        <result>pass</result>
        <selector>kl</selector>
      </dkim>
      <spf>
        <domain>xyz.com</domain>
        <result>softfail</result>
      </spf>
    </auth_results>
  </record>
<record>
<row>
  <source_ip>209.85.220.41</source_ip>
  <count>1</count>
  <policy_evaluated>
    <disposition>none</disposition>
    <dkim>pass</dkim>
    <spf>fail</spf>
  </policy_evaluated>
</row>
<identifiers>
  <header_from>xyz.com</header_from>
</identifiers>
<auth_results>
  <dkim>
    <domain>xyz.com</domain>
    <result>pass</result>
    <selector>kl</selector>
  </dkim>
  <dkim>
    <domain>sendgrid.info</domain>
    <result>pass</result>
    <selector>smtpapi</selector>
  </dkim>
  <spf>
    <domain>gmail.com</domain>
    <result>pass</result>
  </spf>
</auth_results>
</record>

【问题讨论】:

    标签: spf dkim dmarc


    【解决方案1】:

    一个域不能有多个 SPF 记录;您需要将它们组合成一条记录,根据您提供的内容应该是:

    v=spf1 ip4:149.72.201.23 ip4:149.72.27.244 include:_spf.google.com include:sendgrid.net ~all
    

    如果您使用的是 DMARC,通常不应使用 -all;短路 DMARC 处理是(或至少是)常见的。你最好使用~all 然后告诉 DMARC 拒绝基于此。

    【讨论】:

    • 由于医疗紧急情况,我没有回复 @Synchro 我正在使用子域从 SendGrid 发送邮件。那为什么要使用三个不同的 SPF 记录。我没有子域邮件记录访问权限,因为它们是由其他服务提供商处理的,例如订阅、产品评论服务。而这些提供商使用 SendGrid 作为发件人邮件服务器。
    • 我在想如果 SPF 和 DKIM 都失败了,那么 DKIM 策略应该“拒绝”邮件。这是个好主意吗?请提出建议。
    • 是的,这就是您在 DMARC 中使用p=reject 设置的内容。不过,请准备好应对一些后果 - 并非所有邮件服务器都对 DMARC 友好。
    • 设置策略的是 dmarc 记录。始终至少从仅报告开始,p=none,至少直到您确定所有邮件流都通过 SPF 或 DKIM 并且域对齐。理想情况下,spf 和 DKIM 都应该通过,因为仅通过 DKIM 或 spf 设置拒绝设置有点脆弱。有些事情会破坏其中的一个或另一个,所以两者兼而有之是很好的。 OR 逻辑使您能够对其进行设置,从而使 spf 和 DKIM 都不太可能失败..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2015-09-06
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-01
    相关资源
    最近更新 更多