SPF、DKIM和DMARC都已设置,但DMARC报告始终显示相反的结果。

5

我在处理有关电子邮件的事情时,感到很烦恼。

我有一台Kimsufi/OVH(Debian Wheezy 7.10)服务器,已经设置好了postfix和dovecot。

我的主域名/主机名是mywebsite.fr,并且我正在使用设置在mywebsite.fr上的mywebsite.fr。

我在两个域名的DNS区域中设置了spf、dkim和dmarc条目。从contact[at]mywebsite[dot]fr和no-reply[at]mywebsite[dot]fr发送的所有测试都是好的:

1) auth-resultats@verifier.port25.com

The Port25 Solutions, Inc. team

==========================================================
 Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
SpamAssassin check: ham

==========================================================
Details:
==========================================================

HELO hostname:  mywebsite.fr
Source IP:      91.121.166.194
mail-from:      contact@mywebsite.fr

----------------------------------------------------------
SPF check details:
----------------------------------------------------------
Result:         pass
ID(s) verified: smtp.mailfrom=contact@mywebsite.fr
DNS record(s):
    mywebsite.fr. SPF (no records)
    mywebsite.fr. 6055 IN TXT "v=spf1 a mx include:mx.ovh.com ~all"
    mywebsite.fr. 6054 IN A 91.121.166.194

----------------------------------------------------------
DomainKeys check details:
----------------------------------------------------------
Result:         neutral (message not signed)
ID(s) verified: header.From=contact@mywebsite.fr
DNS record(s):

----------------------------------------------------------
DKIM check details:
----------------------------------------------------------
Result:         pass (matches From: contact@mywebsite.fr)
ID(s) verified: header.d=mywebsite.fr

2) dmarcian.com

https://dmarcian.com/dmarc-inspector/mywebsite.fr
All seems good

3) dkimvalidator.com

DKIM Information:

DKIM Signature

Message contains this DKIM Signature:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mywebsite.fr;
    s=mail; t=1491673268;
    bh=g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=;
    h=Date:From:To:Subject:From;
    b=CScyX9ZvWCDL6FGLroXZi/8dFiWmgPbKwcTuSZqPuCHBOR4tv4QdGzxgZ3acWf6AP
     AwAt3Y2h+9IHeayu8mT2rl2Bz3E3XbMC6waEHoc645sAOq1nV9l8hAuw73hm6YsvXU
     QEAgcDIaD8b5fAXoX99rGkSfD6Rx5ygeuJOs0MzZcxnOzaJM+6mvOzusep4PRv0XvG
     eEJYYwL2sNd0qEJSLJ666fhvE781qtwnWaUewlceSgek5bnJ1DVEOsLkcl3uwTabau
     PsLZm9SPuqsc+aDRTTNNRKuI2noO1/w3M6XWfZxpYPIeoxwNnflWxP0s9O6+UbhsCJ
     PJbZeYVATVFKYKjFJlbwAqPMMmJAiqSWzsXvT06/P/Qw70nT5Q9qK1FI8Uu9NRFhWe
     g+35wx03zNG5OMgKzKsv9qH06qccBsbfhHXKm63YkxLDhO+2AtdicdWqrMlZQap7V0
     CC4VyTCNLZdOASWdLJdh8JDsY2TXNU/Pcpxw0uSf0BigY/0q3qj5O7GRzzSLG1rKz0
     +HpvDql/PpsscXt16URaOtO7/rZ6H3EsS1ZkutO5udiwJvoZulraMbI8sQQghR3Yyw
     OZqDardodYdVo1tHzTPQ4MJTEKI+2IO4ulCj7/kJ109xpTYo8+8x3I7Z5Bhmnyui7j
     TIxRT8MCD1sRUOoP7mD/7Pb0=


Signature Information:
v= Version:         1
a= Algorithm:       rsa-sha256
c= Method:          relaxed/relaxed
d= Domain:          mywebsite.fr
s= Selector:        mail
q= Protocol:        
bh=                 g3zLYH4xKxcPrHOD18z9YfpQcnk/GaJedfustWU5uGs=
h= Signed Headers:  Date:From:To:Subject:From
b= Data:            CScyX9ZvWCDL6FGLroXZi/8dFiWmgPbKwcTuSZqPuCHBOR4tv4QdGzxgZ3acWf6AP
     AwAt3Y2h+9IHeayu8mT2rl2Bz3E3XbMC6waEHoc645sAOq1nV9l8hAuw73hm6YsvXU
     QEAgcDIaD8b5fAXoX99rGkSfD6Rx5ygeuJOs0MzZcxnOzaJM+6mvOzusep4PRv0XvG
     eEJYYwL2sNd0qEJSLJ666fhvE781qtwnWaUewlceSgek5bnJ1DVEOsLkcl3uwTabau
     PsLZm9SPuqsc+aDRTTNNRKuI2noO1/w3M6XWfZxpYPIeoxwNnflWxP0s9O6+UbhsCJ
     PJbZeYVATVFKYKjFJlbwAqPMMmJAiqSWzsXvT06/P/Qw70nT5Q9qK1FI8Uu9NRFhWe
     g+35wx03zNG5OMgKzKsv9qH06qccBsbfhHXKm63YkxLDhO+2AtdicdWqrMlZQap7V0
     CC4VyTCNLZdOASWdLJdh8JDsY2TXNU/Pcpxw0uSf0BigY/0q3qj5O7GRzzSLG1rKz0
     +HpvDql/PpsscXt16URaOtO7/rZ6H3EsS1ZkutO5udiwJvoZulraMbI8sQQghR3Yyw
     OZqDardodYdVo1tHzTPQ4MJTEKI+2IO4ulCj7/kJ109xpTYo8+8x3I7Z5Bhmnyui7j
     TIxRT8MCD1sRUOoP7mD/7Pb0=
Public Key DNS Lookup

Building DNS Query for mail._domainkey.mywebsite.fr
Retrieved this publickey from DNS: v=DKIM1; k=rsa;p=MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAomnPCDLufwn5YnIxZ+4veAqdQiTNyk3OsqxTXddGXstKjYefjeJZ/Wgd4vFRheS9DSRjtqLvc66KyM3Ubk37G3S2tXU6dpIPh/poiQuDhdZMWlp829YyR47sYtSSJqFrzd+dKDGfPwrlJb6iIeYksfXOXSHej6s9z1mDobl+fDhORKaB5JySZyPhh/FqCIVMHJffr8tod0Q55MAfRpl38WIJjRjjTXHS2OTNUSQq53kIqSZkx3iFdlxxZh5Tj1DU1bzIGfB4tQaJAGqGhSz4pyzkdc+uVuvXr6NbIrEQ/YnueDHWrbbPoMq77QcToMGqfypgB2CcEU2rlcDYq9aPqYAalv22zY6S0M5FUjlpiHDIR3Hb/ID2ZC2Q/XtCKgaOxr2C4T7Ad0CdcjjQMLnFkOY337U7/P0FgaSQaykiUvSkXDvURgunBv0GLqXfjfwK2Ge8fl+dhYN5bZ/59/GFPcyB/sLHB/cMFWEUyp63RXHBRm+q+c6PMdGIgmoTHYH/0FbYI+/9NHhYOLWhBrgds3x54vStQk0jqYKAipd2494v2dr3p5XlhXU4NEOSEH4FnBfiqoHiYDgjPEIm0ddqH2kBEiuymIoGtWPuBCmY993/1wevOMVjrQlysw2Gf1DZnlbnaytgcSAR0fHgIlLPPoRqGXodvgtW6Zj8ocy71qsCAwEAAQ==
Validating Signature

result = pass
Details: 

SPF Information:

Using this information that I obtained from the headers

Helo Address = mywebsite.fr
From Address = contact@mywebsite.fr
From IP      = 91.121.166.194
SPF Record Lookup

Looking up TXT SPF record for mywebsite.fr
Found the following namesevers for mywebsite.fr: ns.kimsufi.com nsXXXXXX.ip-91-XXX-166.eu
Retrieved this SPF Record: zone updated 20170408 (TTL = 46739)
using authoritative server (ns.kimsufi.com) directly for SPF Check
Result: pass (Mechanism 'a' matched)

Result code: pass
Local Explanation: mywebsite.fr: 91.121.166.194 is authorized to use 'contact@mywebsite.fr' in 'mfrom' identity (mechanism 'a' matched)
spf_header = Received-SPF: pass (mywebsite.fr: 91.121.166.194 is authorized to use 'contact@mywebsite.fr' in 'mfrom' identity (mechanism 'a' matched)) receiver=ip-172-31-3-128.us-west-1.compute.internal; identity=mailfrom; envelope-from="contact@mywebsite.fr"; helo=mywebsite.fr; client-ip=91.121.166.194

等等,等等,等等。

看起来一切都很好,所有我发送电子邮件的邮件测试者都说“10/10,你可以放心了伙计”。

问题是,我收到了 DMARC 报告,它们并不好。例如,最近从雅虎收到的报告:

<?xml version="1.0"?>   
<feedback>  
  <report_metadata> 
    <org_name>Yahoo! Inc.</org_name>    
    <email>postmaster@dmarc.yahoo.com</email>   
    <report_id>1491615950.716847</report_id>    
    <date_range>    
      <begin>1491523200</begin> 
      <end>1491609599 </end>    
    </date_range>   
  </report_metadata>    
  <policy_published>    
    <domain>mywebsite.fr</domain>   
    <adkim>r</adkim>    
    <aspf>r</aspf>  
    <p>none</p> 
    <pct>100</pct>  
  </policy_published>   
  <record>  
    <row>   
      <source_ip>91.121.166.194</source_ip> 
      <count>1</count>  
      <policy_evaluated>    
        <disposition>none</disposition> 
        <dkim>fail</dkim>   
        <spf>fail</spf> 
      </policy_evaluated>   
    </row>  
    <identifiers>   
      <header_from>mywebsite.fr</header_from>   
    </identifiers>  
    <auth_results>  
      <dkim>    
        <domain>mywebsite.fr</domain>   
        <result>permerror</result>  
      </dkim>   
      <spf> 
        <domain>mywebsite.fr</domain>   
        <result>pass</result>   
      </spf>    
    </auth_results> 
  </record> 
</feedback> 

最新的来自google.com:

<?xml version="1.0" encoding="UTF-8" ?>
<feedback>
  <report_metadata>
    <org_name>google.com</org_name>
    <email>noreply-dmarc-support@google.com</email>
    <extra_contact_info>https://support.google.com/a/answer/2466580</extra_contact_info>
    <report_id>14868783784049997701</report_id>
    <date_range>
      <begin>1491523200</begin>
      <end>1491609599</end>
    </date_range>
  </report_metadata>
  <policy_published>
    <domain>mywebsite.fr</domain>
    <adkim>r</adkim>
    <aspf>r</aspf>
    <p>none</p>
    <sp>none</sp>
    <pct>100</pct>
  </policy_published>
  <record>
    <row>
      <source_ip>2001:41d0:1:e7c2::1</source_ip>
      <count>1</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>fail</dkim>
        <spf>fail</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>mywebsite.fr</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>mywebsite.fr</domain>
        <result>fail</result>
        <selector>mail</selector>
      </dkim>
      <spf>
        <domain>mywebsite.fr</domain>
        <result>softfail</result>
      </spf>
    </auth_results>
  </record>
  <record>
    <row>
      <source_ip>2001:41d0:1:e7c2::1</source_ip>
      <count>1</count>
      <policy_evaluated>
        <disposition>none</disposition>
        <dkim>pass</dkim>
        <spf>fail</spf>
      </policy_evaluated>
    </row>
    <identifiers>
      <header_from>mywebsite.fr</header_from>
    </identifiers>
    <auth_results>
      <dkim>
        <domain>mywebsite.fr</domain>
        <result>pass</result>
        <selector>mail</selector>
      </dkim>
      <spf>
        <domain>mywebsite.fr</domain>
        <result>pass</result>
      </spf>
    </auth_results>
  </record>
</feedback>

我迷茫了,不知道该做什么除了已经设置的内容。如果需要的话,请毫不犹豫地向我询问更多信息。谢谢...


你试过 mailtest@unlocktheinbox.com 吗?它是最全面的测试工具。 - Henry
2个回答

2
无论如何,从其他测试者的结果来看,您正在使用4096 DKIM,这会产生超过512字节的密钥大小。将您的DKIM大小降至2048,我认为您的问题将随着DKIM错误而消失。我见过很多大型密钥大小导致DKIM错误的情况。
此外,来自谷歌的结果显示一个ipv6地址作为源IP,我有一种感觉谷歌可能出了问题,关于aaaaa记录的SPF查找可能不正确,您应该将ip6:2001:41d0:1:e7c2:: 1 添加到您的SPF中,看看是否解决了谷歌的SPF故障。
理论上,当ESP接收到ipv6 IP时,如果指定了a机制,则应查找SPF的aaaa记录,如果指定了IPv4,则查找a

谢谢!你所说的关于密钥大小的问题可能是个诀窍,unlocktheinbox实际上说“753字节-UDP只能读取512字节,一些不使用TCP的电子邮件提供商将无法验证您的DKIM”。奇怪的是它有时候可以工作,而有时候却不能。我会尝试这些更改,再次感谢,我会保持联系。 - Vae
1
结果看起来不错,但你需要关闭那个端口上的贵宾犬漏洞。你还应该创建一个“postmaster@”账户。此外,请记住,一些邮件服务器可能有多个MTA,这可能解释了间歇性的行为。SSL证书不匹配也可能导致其他问题,你可以在https://letsencrypt.org/生成免费证书。 - Henry
是的,我希望Poodle问题现在已经正确关闭了。邮件管理员账户也已创建。我已经为我的域名获得了一些免费证书。说实话,我不知道如何将它们应用于邮件事务。 - Vae
嗯,我在想我是否还有其他问题。当我从Roundcube发送邮件到unlocktheinbox时,报告非常清晰,只涉及“calendridel.fr”(当然,在谈到主机名“vaeserveur.fr”时除外)。 但是,当我使用php mail()从我的网站发送邮件时,报告有点混乱,记录了关于“vaeserveur.fr”的内容,然后是关于“calendridel.fr”的内容(对于rDNS、电子邮件端口检查等也是如此)。也许这会引起一些麻烦...你有什么想法它可能来自哪里? - Vae
没有看到任何相关数据,很难提供任何建议。似乎unlocktheinbox.com的旧报告已被删除。无论如何,关注反向DNS中的LSIP条目-这是最重要的。其余部分更多是信息性的。 - Henry
实际上,我尝试了DKIMValidator,它返回了“result = fail / Details: body has been altered”。我不得不编辑电子邮件内容,现在一切都很好!我等待一两个晚上,然后我会发布我所做的所有事情来解决这个问题。感谢你的帮助@Henry。 - Vae

1
您看到的SPF问题是一个对齐问题。当Return-Path域和Header From域在同一组织域上时,SPF仅在DMARC计数。简单来说,它们需要相同或具有不是TLD的共同父域。
从报告中,您可以看到您的Return-Path域(用于SPF)为vaeserveur.fr,而Header From域为calendridel.fr。在这种情况下,SPF产生的通过并不重要-DKIM不会使用该值。请参见此处的讨论-https://www.rfc-editor.org/rfc/rfc7489#section-3.1 至于DKIM,另一个答案是正确的。验证程序通常不支持4096位密钥,根据RFC,他们实际上也不必支持-https://www.rfc-editor.org/rfc/rfc6376#section-3.3.3

谢谢,我会看一下你提供的讨论。问题是,calendridel.fr在vaeserveur.fr上,它们是相互关联的,SPF返回“通过”很多次...但有时候不行。无论如何,我希望2048位密钥足以解决这个问题。再次感谢。 - Vae
这个语句 - 'calendridel.fr is on vaeserveur.fr' - 是不正确的。两个域名使用相同的主机或IP地址是无关紧要的。它们不是同一个。DMARC是关于域名的。它们不是同一个域名。请阅读上面有关对齐的注释。 - Peter Goldstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接