我有一個個人電子郵件伺服器,已經運行多年;發送郵件很少出現問題,因此我從來沒有真正掌握 SPF、DMARC 和 DKIM 等功能。最近,在升級系統的同時,我決定這麼做。
SPF 非常簡單,因為我使用單一固定 IP 位址。
DMARC 幾乎同樣簡單;我最初將其設定為「無」接收報告的政策,並將其保留一兩週,然後將其切換為拒絕。
我現在已經為郵件伺服器實作了 DKIM 簽章過濾器(快遞MTA,並且沒有為此做好準備)。對於我使用的複雜位德金皮。這還有一個簡單的驗證工具,可以處理整個訊息,是否有自己的查找等,這意味著它是虛擬證明,因為只有一種方法可以使用它(而簽名可以通過多種方式配置,並且可能會留下給我留下了把它搞砸的空間)。這傳遞了我認為應該傳遞的訊息,並失敗了我認為不應該傳遞的訊息,所以我對它的工作相當滿意;我已經在從伺服器收到的訊息上運行了它。目前,為了最大限度地減少問題,我只簽署正文和 From 標頭。
但是,我的測試帳戶沒有收到任何郵件 - 一封是 gmail,另一封來自我的 ISP。更重要的是,雖然我現在在 DMARC 記錄中同時擁有 rua 和 ruf 地址,但我沒有收到他們的任何報告。以前,他們兩個就像發條一樣。
如果我所做的只是關閉過濾器(所以沒有 DKIM 簽名),一切恢復正常。我已經檢查過伺服器實際上在所有情況下都在嘗試;失敗的 DKIM 似乎會超時並關閉連接,從而導致無休止的延遲——這看起來有點奇怪,因為它意味著「被拒絕」的郵件甚至沒有被檢查,但刪除簽名就足夠了再次接受它。我將其歸因於 Courier 日誌記錄中的含糊之處。
我知道這裡沒有人受到任何法律的約束,但這是一項正常政策嗎?假設 DKIM 簽章錯誤,接收伺服器是否應該向我發送 DMARC 報告?
所以我現在在一條小溪上。雖然像MXToolbox 這樣的東西給了我很大的幫助,但我還沒有找到一個免費的服務,可以透過接收郵件來主動測試DKIM 簽名,除了一個,它似乎做了其他伺服器所做的事情——從不接受它應該測試的郵件(不知道這是否是一個潛在的線索)。
以下是相關 DNS 記錄dig
:
防曬指數:
cognitivedissonance.ca. 3600 IN TXT "v=spf1 ip4:138.197.150.177 -all"
DKIM:
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:[email protected],mailto:[email protected];ruf=mailto:[email protected],mailto:[email protected]; "
我註冊的 dmarc 驗證服務有一些額外的 mailto。不幸的是,他們不直接測試 DKIM 簽章。
最後是一個簽名的例子:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=cognitivedissonance.ca; [email protected]; 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==
答案1
最終我確實找到了一個線上 DKIM 驗證器:https://www.appmaildev.com/en/dkim他們將測試現有郵件的上傳或為您提供一個要發送到的測試地址。
我不能 100% 確定最初的問題是什麼,因為當我發現這個問題時,我已經創建了另一個問題:使用 Digital Ocean 的「浮動 IP」功能來設定我的 DNS 記錄。作業系統實際上並沒有看到這個位址,而其他郵件伺服器正在報告來自該「實際」IP 的郵件(仍然有效)。 值得注意如果你是水滴用戶。
需要明確的是,這不可能是最初的問題,因為我昨天才啟用了浮動 IP,在絕望中,我決定移動節點以查看是否有任何東西從樹上掉下來。然而...
我還沒有找到一項免費服務,可以透過接收郵件來主動測試 DKIM 簽名,除了一個服務,它似乎做了其他伺服器所做的事情——從不接受它應該測試的郵件(不知道這是否是潛在的線索)。
請注意,服務不是此處第一段中連結的服務。不管怎樣,其他郵件伺服器通常拒絕連線(而不是退回郵件)似乎確實在尖叫「DNS 問題」。當新安裝的伺服器已經運行一個月時,為什麼這會成為一個問題,我仍然不知道,所以這實際上只是部分答案 - 儘管它確實解釋了為什麼電子郵件伺服器會停止發送 DMARC 報告。讓我的所有鴨子與 DNS 記錄(域和 aporia 節點的 A 記錄,匹配 SPF 等)排成一排,最後一切都按預期工作。