如果 SPF 過於嚴格,郵件列表會“中斷”嗎?
我最近配置了自己的郵件伺服器(基於 Linux 的 postfix + dovecot 方案)。這僅供個人使用 - 我沒有大量郵件發出,沒有自動生成的從主機出站的郵件,沒有類似的。我已經解決了配置所有其他有趣的電子郵件 DNS 記錄的麻煩:
@ IN TXT v=spf1 +mx -all _domainkey IN TXT o=-; r=dkim@example.com mail._domainkey IN TXT v=DKIM1; h=sha256; k=rsa; s=email; p=deadbeef _adsp._domainkey IN TXT dkim=all _dmarc IN TXT adkim=s; aspf=s; fo=1; p=none; pct=100; rf=afrf; ri=86400; rua=mailto:aggrep@example.com; ruf=mailto:authfail@example.com; sp=none; v=DMARC1;
我的 IP 不在任何黑名單上,PTR 配置正確,DKIM 簽名完美驗證,我認為一切設置正確。
但是現在我不能為郵件列表做貢獻了。當我發送到列表地址時,有時消息會進入黑洞,有時我會收到一封電子郵件到我的
authfail@
地址,而在其他情況下,我會看到我認為與發送到的報告相關的條目aggrep@
。我的理論是 SPF 政策過於嚴格。郵遞員(或其他)列表伺服器充當我的郵件的 SMTP 中繼,對嗎?所以我改變了
@ IN TXT v=spf1 +mx -all
到
@ IN TXT v=spf1 +mx ~all
使預設操作成為軟故障而不是硬故障。問題是,我不想無緣無故地繞過垃圾郵件列表來測試此更改。以前有沒有其他人來過這裡並且可以驗證/反駁我的理論?
編輯1:
回想起來,感謝@Alex 讓我直截了當,我真的沒有提供足夠的數據來做出準確的評估。
authfail@
以下是我在嘗試向郵件列表發帖時收到的通知範例:This is a spf/dkim authentication-failure report for an email message received from IP 66.211.214.132 on Thu, 10 Jul 2014 20:58:52 +0800. Below is some detail information about this message: 1. SPF-authenticated Identifiers: archlinux.org; 2. DKIM-authenticated Identifiers: none; 3. DMARC Mechanism Check Result: Identifier non-aligned, DMARC mechanism check failures; For more information please check Aggregate Reports or mail to abuse@126.com. Feedback-Type: auth-failure User-Agent: NtesDmarcReporter/1.0 Version: 1 Original-Mail-From: <arch-general-bounces@archlinux.org> Arrival-Date: Thu, 10 Jul 2014 20:58:52 +0800 Source-IP: 66.211.214.132 Reported-Domain: example.com Original-Envelope-Id: w8mowEA5UUwMjr5TlWQfBA--.250S2 Authentication-Results: 126.com; dkim=fail (signature error: RSA verify failed) header.d=example.com; spf=pass smtp.mailfrom=arch-general-bounces@archlinux.org DKIM-Domain: example.com Delivery-Result: delivered
在我看來這是 DKIM 簽名失敗,但我不知道為什麼。接收伺服器是否嘗試根據郵件列表伺服器的密鑰驗證我的DKIM 簽名,反之亦然?出於某種原因,我不希望發生這種情況 - 我記得在某處讀過,在這種情況下,繼電器之類的有時會刪除/刪除這樣的標頭以確保不會發生這些類型的故障?
編輯2:
感謝@Christopher Karel 在 dmarcian.com 上引用了 DMARC 報告解析工具。大部分條目被列為轉發器(這是有道理的)。有一台伺服器 (*.mailhop.org) 列為“preserv
$$ ing $$DKIM” - 我已經成功地通過其中一個有效的 Ruby 語言論壇發送了郵件,我從我的研究中知道他們使用 mailhop.org。 在“破壞 DKIM 簽名(或創建欺騙性簽名)的伺服器”類別下列出了
*.archlinux.org
,,*.google.com
(*.mailhop.org
不知道為什麼會出現在這裡,也許我正在使用的另一個列表也在不同的配置中使用它們),除此之外還有我的列表最活躍的是 Arch 和一些由 Google Groups 託管的,所以這是有道理的。總共大約 400 條消息 - 我幾乎沒有發送那麼多消息,所以我想可能是在計算重試次數。我越來越沮喪 - 目前看來我的選擇是:
- 保留 SPF、DKIM、DMARC 和 ADSP 並放棄使用郵件列表,或
- 刪除此 DNS 安全/報告層,讓我的正常外發郵件被 Google、Yahoo!、Live 等拒絕。
電子郵件安全很爛。所以最後,你可能會面臨一個決定,你所有的選擇都很糟糕,並且出於不同的原因破壞不同的東西。
具體到 SPF 而言,如果郵件列表轉發郵件,而不重寫 headers,則會導致失敗。列表可以根據需要自行配置,因此沒有一個好的通用答案。但是,如果列表中的消息似乎來自列表本身,則它正在重寫標題。如果它似乎來自發件人,則可能不是。一般來說,郵件列表本身*應該可以很好地與 SPF 配合使用。*另一方面,正常郵件轉發不會。
對於 DKIM,對消息的任何修改都會導致失敗。這幾乎總是發生在郵件列表中。所以 DKIM 通常會用郵件列表轟炸。但是郵件轉發應該沒問題。
最重要的是,您已經實現了DMARC。這本質上是一個圍繞 DKIM 和 SPF 的報告基礎架構。如果您同時實施這兩種身份驗證措施,效果最好,但也可以只使用一種。您可以配置 DMARC 來傳達您的消息的丟棄請求,但更重要的是,您可以指定一個地址來接收成功/失敗報告。大多數主要的電子郵件接收器都支持這些功能。(GMail、Hotmail、Yahoo)這可以讓您深入了解哪些郵件未通過 SPF 檢查以及原因。使用它來告知您的
-all
vs~all
決定。不幸的是,DMARC 規範要求發件人域和檢查的 SPF 記錄之間保持一致。在您的情況下,郵件列表的 SPF 正在檢查並通過,但與您的域不一致。所以 DMARC 炸彈。這是一個郵件列表管理員的參考資料,他對此也有同樣的不滿。
結論與我的開場白相同:電子郵件安全很爛。你所有的選擇也很糟糕。恕我直言,郵件列表也很糟糕,如果我們更換它們,生活會更好。;-)
我沒有看過 DKIM 部分。
關於 SPF 記錄,我在大多數範例中看到以下內容:
v=spf1 mx -全部
這記錄在這裡:http ://www.openspf.org/SPF_Record_Syntax
然而,根據 RFC 7208,“+mx”也應該是正確的(感謝 Chris 指出這一點)。也許它仍然值得一試……
我真的不知道該建議什麼…仔細檢查您的所有 DNS 記錄(A / PTR / MX)。你可能已經這樣做了。了解實際域名可能有助於人們進行故障排除 - 至少與 DNS 相關。