Smtp

如何閱讀這份 DMARC 報告?為什麼雅虎仍然拒絕來自我伺服器的郵件?

  • August 7, 2019

我在我的伺服器上設置了 hMailServer,它將時事通訊批量發送到選擇加入的訂閱者群。我已經設置了 DKIM 簽名,一個 SPF 記錄明確地允許我的伺服器代表我的域發送電子郵件,甚至是反向 DNS 記錄。我的 senderscore.org 評分為 97。我的郵件很高興地發送給了我所有的訂閱者,除了那些有 Yahoo 或 Rocketmail 地址的訂閱者。我發送到這些地址的每封電子郵件都會被拒絕,並顯示以下消息:

遠端伺服器回复:421 4.7.0

$$ TSS04 $$由於使用者投訴,來自 23.102.xx 的消息暫時推遲 - 4.16.55.1;見https://help.yahoo.com/kb/postmaster/SLN3434.html

此消息是 100% 虛假和誤導性的。沒有人抱怨來自該伺服器的郵件,因為在過去的一周裡,我已經停止向任何Yahoo/Rocketmail 地址發送郵件。這並沒有什麼暫時的:這種情況已經持續了大約兩個星期了。每天或兩天我都會發送一封調查郵件,看看他們是否已將我的伺服器從他們的黑名單中刪除,但是,唉!相同的退回消息。在雅虎幾乎沒有人可以交談。他們沒有任何類型的客戶服務,更不用說技術支持了。

所以我想我會註冊 DMARC 通知,看看雅虎對什麼感到不安。這是我最近的報告:

<?xml version="1.0"?>    
<feedback>    
 <report_metadata>    
   <org_name>Yahoo! Inc.</org_name>    
   <email>postmaster@dmarc.yahoo.com</email>    
   <report_id>1562461153.62437</report_id>    
   <date_range>    
     <begin>1562371200</begin>    
     <end>1562457599</end>    
   </date_range>    
 </report_metadata>    
 <policy_published>    
   <domain>mydomain.com</domain>    
   <adkim>r</adkim>    
   <aspf>r</aspf>    
   <p>none</p>    
   <pct>100</pct>    
 </policy_published>    
 <record>    
   <row>    
     <source_ip>197.96.187.217</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>mydomain.com</domain>    
       <result>softfail</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>197.97.112.17</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>mydomain.com</domain>    
       <result>softfail</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.178</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.41</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.43</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.47</source_ip>    
     <count>4</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.49</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.53</source_ip>    
     <count>2</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.208.54</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>209.85.215.171</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>gmail.com</domain>    
       <result>pass</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>54.202.181.118</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>mydomain.com</domain>    
       <result>softfail</result>    
     </spf>    
   </auth_results>    
 </record>    
 <record>    
   <row>    
     <source_ip>62.4.22.164</source_ip>    
     <count>1</count>    
     <policy_evaluated>    
       <disposition>none</disposition>    
       <dkim>pass</dkim>    
       <spf>fail</spf>    
     </policy_evaluated>    
   </row>    
   <identifiers>    
     <header_from>mydomain.com</header_from>    
   </identifiers>    
   <auth_results>    
     <dkim>    
       <domain>mydomain.com</domain>    
       <result>pass</result>    
     </dkim>    
     <spf>    
       <domain>mydomain.com</domain>    
       <result>softfail</result>    
     </spf>    
   </auth_results>    
 </record>    
</feedback>    

我要提請您注意的第一件事是根本沒有提及我的伺服器的IP(23.102.xx)。我不知道這些其他伺服器(例如 197.97.112.17)是什麼,也不知道它們為什麼會導致我的伺服器被列入黑名單。這份報告的意義是什麼?如何讓雅虎停止退回我的郵件?

**更新:**幸運的是,某個很小的域發回了一條拒絕消息,告訴我我沒有反向 DNS 記錄。我以為我做到了!結果我聽從了 Azure 支持代理的錯誤建議,他告訴我為x.102.23.in-addr.arpa. 事後看來,我意識到這顯然沒有意義,因為那樣我將有效地控制 255 台其他可能的伺服器的 PTR 記錄。所以我重新打開了 Azure 的支持票,要求他們設置 PTR 記錄。如果可行,我會將其發佈為答案。

**更新 2:**我得到了 Azure 的支持,他們幫助我設置了反向 DNS 記錄。所以現在當我從 Linux 提示符執行以下命令時,我得到了預期的結果:

$ 主機 23.102.xx

xx102.23.in-addr.arpa 域名指針 mail.mydomain.com

不幸的是,雅虎仍然拒絕來自我伺服器的郵件。我已經註冊了他們的回饋循環,但沒有收到他們的一封郵件。但是我所有發送到雅虎地址的郵件仍然會以同樣的虛假和誤導性錯誤消息退回。還有什麼事情要做嗎?

所以,我的故事的美好結局是,在正確設置我的反向 PTR 記錄*幾週後(在 Azure 支持的幫助下),雅虎開始收到消息。*請注意,這不是瞬間的;它始於少數訂閱者報告他們的電子郵件服務已恢復。但是,大部分郵件還是被拒絕了。然後慢慢地,慢慢地,成功傳遞的百分比增加了,直到經過大約兩天的過渡期後,反彈完全停止了。

總之,答案是設置反向 DNS 記錄……然後等待

在您的 DMARC 報告中找到許多免費郵件提供商並不罕見。

例如,在他們的Google地址收到您的郵件的人可能會選擇將您的郵件轉發給雅虎,從而導緻雅虎將這些收據報告給您。該報告實際上包括一個線索——說 SPF 檢查通過了gmail.com。如果報告中沒有包含該資訊,您仍然可以根據 IP 地址的 whois 資訊進行猜測 - 它已分配給 Google。

沒有人抱怨”部分讓我懷疑您沒有與雅虎建立回饋循環- 他們只會在您簽署郵件明確選擇加入後告訴您投訴。如果您完全閱讀了幫助頁面,您就會知道這一點錯誤消息中提到的,因此雅虎可能會根據其“最佳實踐”列表中的其他項目推遲您的消息。因此,這是您解決問題的最佳選擇——驗證您已經理解並實施了該列表中的每一項。

引用自:https://serverfault.com/questions/974265