Security

如果 SPF 過於嚴格,郵件列表會“中斷”嗎?

  • July 10, 2014

我最近配置了自己的郵件伺服器(基於 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 條消息 - 我幾乎沒有發送那麼多消息,所以我想可能是在計算重試次數。

我越來越沮喪 - 目前看來我的選擇是:

  1. 保留 SPF、DKIM、DMARC 和 ADSP 並放棄使用郵件列表,或
  2. 刪除此 DNS 安全/報告層,讓我的正常外發郵件被 Google、Yahoo!、Live 等拒絕。

電子郵件安全很爛。所以最後,你可能會面臨一個決定,你所有的選擇都很糟糕,並且出於不同的原因破壞不同的東西。

具體到 SPF 而言,如果郵件列表轉發郵件,而不重寫 headers,則會導致失敗。列表可以根據需要自行配置,因此沒有一個好的通用答案。但是,如果列表中的消息似乎來自列表本身,則它正在重寫標題。如果它似乎來自發件人,則可能不是。一般來說,郵件列表本身*應該可以很好地與 SPF 配合使用。*另一方面,正常郵件轉發不會。

對於 DKIM,對消息的任何修改都會導致失敗。這幾乎總是發生在郵件列表中。所以 DKIM 通常會用郵件列表轟炸。但是郵件轉發應該沒問題。

最重要的是,您已經實現了DMARC。這本質上是一個圍繞 DKIM 和 SPF 的報告基礎架構。如果您同時實施這兩種身份驗證措施,效果最好,但也可以只使用一種。您可以配置 DMARC 來傳達您的消息的丟棄請求,但更重要的是,您可以指定一個地址來接收成功/失敗報告。大多數主要的電子郵件接收器都支持這些功能。(GMail、Hotmail、Yahoo)這可以讓您深入了解哪些郵件未通過 SPF 檢查以及原因。使用它來告知您的-allvs~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 相關。

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