Domain-Name-System

如何將另一個發件人(例如 Sendgrid)列入 DMARC 的白名單?

  • April 1, 2020

我們託管自己的電子郵件,但使用 Sendgrid 代表一些無法輕鬆處理我們的郵件配置的內部 PHP 服務發送郵件(例如,預設情況下它們不允許自簽名證書,因此讓它們連接到我們的伺服器以發送諸如帳戶啟動電子郵件之類的東西是一個 PITA,就像不得不破解 CMS 的功能以傳遞一系列配置覆蓋一樣——對於少數電子郵件來說,這將是,我認為這很糟糕並且剛剛使用了 Sendgrid 的免費套餐)。

我能夠設置我們的 SPF 以明確允許 Sendgrid 代表我們發送電子郵件:

ourdomain.com. IN TXT "v=spf1 mx a ip4:OUR.IP.GOES.HERE/32 include:sendgrid.net -all"

因此,我們發送的郵件和 Sendgrid 發送的郵件都有平行的路徑來通過 SPF 和 DKIM。(我沒有為自己做任何特殊的 DKIM 設置,但這是一個過程 - FWIW,這是我遵循的教程。)

但現在我想用 DMARC 結束所有內容,而 Sendgrid 電子郵件失敗了,即使它們通過了 SPF 和 DKIM:

Authentication-Results: mx.google.com; dkim=pass header.i=@sendgrid.net header.s=smtpapi header.b=eI2rawkZ; spf=pass (google.com: domain of bounces+15288543-43bf-mygmailaccount=gmail.com@sendgrid.net designates SENDGRID.IP.GOES.HERE as permitted sender) smtp.mailfrom="bounces+15288543-43bf-mygmailaccount=gmail.com@sendgrid.net"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ourdomain.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sendgrid.net; h=from:subject:content-type:content-transfer-encoding:mime-version: x-feedback-id:to; s=smtpapi; bh=AZ+8LE7VkXTKxox/rLn7opOhEWv+baJWKr9E5fUOSKs=; b=eI2rawkZeMvtcJXThu7pufwbVPjRHa5xx46txJj0j9gNNDxNs68y8bcPlj1T9r7rxDK4 oi6e19GMvtdyttXR5WKjg2T+w0p5Ep3Ni6YRQhxq4ZsGcO0mZiRXyNf4BdZ3cOgLKXwECh dMSOaHyK0lR91Xp6eTnOYE7bT9hcRVrWA=

我們發送的電子郵件正在傳遞:

Authentication-Results: mx.google.com; dkim=pass header.i=@ourdomain.com header.s=default header.b=fySBSueO; spf=pass (google.com: domain of ourlocaluser@ourdomain.com designates OUR.IP.GOES.HERE as permitted sender) smtp.mailfrom=ourlocaluser@ourdomain.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ourdomain.com

我們的 DMARC 記錄是這樣設置的:

_dmarc.ourdomain.com. 299 IN TXT "v=DMARC1\; p=none\; pct=100\; rua=mailto:postmaster@ourdomain.com"

有沒有辦法可以調整我們的 DNS(或其他東西?)以允許 Sendgrid 電子郵件通過 DMARC 檢查?然後我們可以安全地將推薦的“p”操作升級為“隔離”或“拒絕”。雖然,如果這不會嚴重損害我們的聲譽,我很樂意將其保留為“無”。在我開始 SPF / DKIM / DMARC 之旅之前遇到的困難之後,把所有東西都整齊地捆綁起來真是太好了。

所以這絕對是專門針對 Sendgrid 的。流程將根據您嘗試使用的特定第 3 方電子郵件發件人而有所不同。甚至 Sendgrid 也可能會更改其 UI。

  1. 在 app.sendgrid.com 上
  2. 轉到設置 > 發件人身份驗證
  3. 點擊“驗證您的域”按鈕。
  4. 插入您的 DNS 主機。在我的情況下,它絕對不在列表中,所以我選擇“其他主機”並輸入它。我也沒有進入品牌連結 - 我不在乎我的自動帳戶管理員電子郵件中的連結是否有URLS 中的“sendgrid”。
  5. 輸入您發送的域,然後選中“自動安全”和“使用自定義 DKIM 選擇器”。[我必須承認,我沒有使用自定義選擇器嘗試這個過程。我們大部分的電子郵件都是從我們自己的伺服器發送的,我擔心會弄亂我現有的設置。] 對於 DIKM 選擇器,只需添加一些你不使用的東西,比如 Sendgrid 的“sg”。
  6. 您將獲得一堆 CNAME 記錄以添加到您的 DNS,如下所示:

Sendgrid:安裝 DNS 記錄

  1. 添加後(如果您需要向第三方授予訪問建議記錄的權限,您可以使用“發送給同事”),點擊驗證。您還可以在發件人身份驗證頁面上檢查驗證狀態。就我而言,它在一開始只是部分起作用-成功驗證所有三個記錄需要一天多的時間。我懷疑您還必須實際手動嘗試驗證。至少對我來說,一天左右的手動嘗試終於奏效了。
  2. 驗證 SPF、DKIM 和 DMARC 是否適用於您的伺服器Sendgrid 發送的電子郵件!如果適用,開香檳。如果沒有,請繼續下一次危機。

DKIM 簽名與d=sendgrid.net信封發件人Return-Pathmygmailaccount=gmail.com@sendgrid.net。由於 DKIM 和 SPF 驗證都在使用sendgrid.com,它與您的域不對齊:這是DMARC 對齊的要求。

幸運的是,Sendgrid 支持自定義DKIM 選擇器和自定義返迴路徑的自定義域身份驗證

雖然,如果這不會嚴重損害我們的聲譽,我很樂意將其保留為“無”。 

DMARC 不是為了獲得更好的聲譽。這是為了防止其他人在From標頭中使用您的域,這可能會導致聲譽不佳或更糟。

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