Email

(為什麼)電子郵件伺服器會因為 DKIM 而停止發送 DMARC 報告嗎?

  • April 25, 2022

我有一台執行多年的個人電子郵件伺服器;發送郵件很少出現問題,所以我從來沒有真正了解過像 SPF、DMARC 和 DKIM 這樣的東西。最近,在升級系統時,我決定這樣做。

SPF 非常簡單,因為我使用一個固定的 IP 地址。

DMARC 幾乎一樣簡單;我最初使用“無”的策略來接收報告並將其放置一兩個星期,然後將其切換為拒絕。

我現在已經為郵件伺服器實現了一個 DKIM 簽名過濾器(Courier MTA,沒有為此做好準備)。對於我使用的複雜位dkimpy。這也有一個簡單的驗證工具,它適用於整個消息,是否有自己的查找等,這意味著它是偽證明,因為只有一種使用它的方法(而簽名可以通過各種方式配置,並且可能會離開留給我把它搞砸的空間)。這傳遞了我認為應該傳遞的消息,而傳遞了我認為不應該傳遞的消息,所以我對它的工作原理感到相當滿意;我已經在從伺服器收到的消息上執行它。目前,為了盡量減少問題,我只簽署了正文和 From 標頭。

但是,我的郵件都沒有通過我的測試帳戶——一個是 gmail,另一個來自我的 ISP。更重要的是,雖然我現在在 DMARC 記錄中同時擁有 rua 和 ruf 地址,但我沒有收到任何關於它們的報告。以前,他們都像發條一樣。

如果我所做的只是關閉過濾器(所以沒有 DKIM sig),一切都會再次執行。我已經檢查過伺服器實際上在所有情況下都在嘗試;失敗的 DKIM 似乎會超時並關閉連接,從而導致無休止的延期——這似乎有點奇怪,因為它意味著“被拒絕”的郵件甚至沒有被檢查,但刪除簽名就可以了讓它再次被接受。我將把它歸結為 Courier 日誌記錄中的模棱兩可。

我知道這裡沒有人受任何法律的約束,但這是正常的政策嗎?假設 DKIM 簽名錯誤,接收伺服器不應該向我發送 DMARC 報告嗎?

所以我現在在一條小溪上。儘管像 MXToolbox 這樣的東西給了我很好的色彩,但我還沒有找到一個免費的服務來通過接收郵件來主動測試 DKIM 簽名,除了一個似乎已經完成了其他伺服器所做的事情——從不接受它應該測試的郵件(不知道這是否是一個潛在的線索)。

以下是來自的相關 DNS 記錄dig

  • 防曬指數:cognitivedissonance.ca. 3600 IN TXT "v=spf1 ip4:138.197.150.177 -all"
  • 大金:
 aporia._domainkey.cognitivedissonance.ca. 3600 IN TXT "v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAosptGk+J2mdjjc7RWmcnQ3yBqx1JT/lA0bw4GJCzZ+esa0f8rjHhPiW6NnUr64Kf5h0fPEthQhYGTjjw3jAd/3EE28hGA30+jODxEK7A0+5aeI82fWa/ZZk9FvyIhf+UkkX1B0klYhCRW5r91smJ+rwYrr2B6jOrw0DReHTAZ51NACSWI7ov2mA" "UIh2l8blA8hFFBOBwxlzC+smRsYlZCKZfsSMkyS/XIm2m58QNfw/aCHp5VufSrf/hh7f6AGKTgxHfgs+8RBbYdHEM2LAMT+WYsITC3R0OYfgplzWna6PRB9lx+FFzTtT/8XClYfUJ6rwWwM4koeX0yt9gDr/03QIDAQAB"

請注意,郵件伺服器的 FQDN 是aporia.cognitivedissonance.ca,所以我aporia出於缺乏想像力將其用作 DKIM 選擇器。電子郵件域只是cognitivedissonance.ca. 我應該改用 FQDN(即。aporia._domainkey.aporia.cognitivedissonance.ca)嗎?

  • DMARC:
 _dmarc.cognitivedissonance.ca. 3600 IN  TXT     "v=DMARC1;p=reject;pct=100;rua=mailto:dmarc@cognitivedissonance.ca,mailto:8f3ae747@inbox.ondmarc.com;ruf=mailto:8f3ae747@inbox.ondmarc.com,mailto:dmarc@cognitivedissonance.ca; "

我註冊的 dmarc 驗證服務有一些額外的 mailto。不幸的是,他們不直接測試 DKIM 簽名。

最後,一個簽名的例子:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=cognitivedissonance.ca; i=@cognitivedissonance.ca; q=dns/txt;
s=aporia; t=1650468130; h=from;
bh=3N81YR+AxHZqpkdMAh4Jti6JpRmUrlzO5bUjUoWdGeg=;
b=kNzUid2LG8TfHoegur3JzlcktiJT+5A1E2en+IlV/GgDMZWL0Ft/4kE02LGFzb2kTMkav
c9jLUqd2+NCrLDzVRBxgwif++vDwoljCI1X0wvbcCqhfA3uElcCuhCAtBkl/ZNqLR0H1Gjq
XXA801KqyVrvottuv0+PmEOvqQ8skTpBvl4Da8JjQ73Zscm3/5Mfk0dGTLlggNgapszsP9z
nt/1Oi6gzLasX933wIdLZWVex8QNfKr8+MTx6bmpVodaeklR+281u8k1zhCBu5pWrzlavUh
CbWjUm4j3YbeztpG98r9MZOVKbJZyHaiHWcRa1vEq3Cz8AEnRyRkQhd5WtvA==

最後我確實找到了一個線上 DKIM 驗證器:https ://www.appmaildev.com/en/dkim他們會測試現有郵件的上傳或給你一個測試地址來發送。

我不能 100% 確定最初的問題是什麼,因為當我發現這個問題時,我已經創建了另一個問題:使用 Digital Ocean 的“浮動 IP”功能來設置我的 DNS 記錄。作業系統實際上並沒有看到這個地址,並且其他郵件伺服器正在報告來自那個“實際”IP 的郵件(這仍然有效)。 值得注意的是,如果您是 droplet 使用者。

需要明確的是,這不可能是最初的問題,因為我昨天才啟用浮動 IP,當時我絕望地決定移動節點,看看是否有任何東西從樹上掉下來。然而…

我還沒有找到一個免費服務,它通過接收郵件來主動測試 DKIM 簽名,除了一個,它似乎已經完成了其他伺服器所做的事情——從不接受它應該測試的郵件(不知道這是否是一個潛在的線索) .

請注意,服務不是此處第一段中連結的服務。無論如何,其他郵件伺服器通常拒絕連接(而不是退回郵件)似乎確實在尖叫“DNS問題”。為什麼當伺服器的新安裝已經執行了一個月我仍然不知道時,這到底是一個問題,所以這實際上只是一個部分答案——儘管它確實解釋了為什麼電子郵件伺服器會停止發送 DMARC 報告。使用 DNS 記錄(域和 aporia 節點的 A 記錄,匹配 SPF 等)將我所有的鴨子排成一排,最後一切正常。

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