我使用 Amazon Simple Email Service (Amazon SES) 傳送的電子郵件未通過寄件者政策架構 (SPF) 對齊,或網域金鑰識別郵件 (DKIM) 對齊的網域型訊息驗證、報告和符合 (DMARC) 驗證。如何修正此問題?
簡短描述
DMARC 是一個使用 SPF 和 DKIM 來偵測電子郵件詐騙的電子郵件驗證協定。為了符合 DMARC,您的訊息必須透過 SPF 或 DKIM 或兩者進行驗證。
如果是 SPF 對齊或 DKIM 對齊的 DMARC 驗證,電子郵件標頭中的主要元件是:
- 向訊息收件人顯示的寄件者地址
- 指出訊息來源位置的郵件寄件者或信封寄件者地址
- DKIM 簽章中的 d= 網域
DMARC 會將郵件寄件者或信封寄件者網域與寄件者網域進行比對,來檢查 SPF 對齊。必須符合下列其中一項對齊:
- 嚴格對齊:****郵件寄件者或信封寄件者網域與寄件者網域完全相同。
- 寬鬆對齊:****郵件寄件者或信封寄件者網域是寄件者網域的子網域。
DMARC 會比對 DKIM 簽章中的 d= 網域與寄件者網域,以檢查 DKIM 對齊。必須符合下列其中一項對齊:
- **嚴格對齊:**d= 網域與寄件者網域相同。
- **寬鬆對齊:**d= 網域是寄件者網域的子網域。
解決方法
若要通過 DMARC 驗證,您的電子郵件必須符合 SPF 驗證或 DKIM 驗證。
在 DMARC 記錄中使用 SPF 或 DKIM 的寬鬆對齊
使用 SPF 或 DKIM 的寬鬆對齊有助於您的電子郵件通過 DMARC 驗證。
若要判斷您網域的 SPF 和 DKIM 的 DMARC 對齊方式,請執行下列命令:
nslookup -type=TXT _dmarc.example.com
命令會傳回類似下列內容的 DMARC 記錄:
"v=DMARC1;p=quarantine;pct=25;rua=mailto:hello@example.com"
對於 SPF,如果記錄不含 aspf 字串 (如上一個範例中),或記錄包含字串 aspf=r,則您的網域是使用寬鬆對齊。如果記錄包含字串 aspf=s,則您的網域是使用嚴格對齊。
對於 DKIM,如果記錄不含 adkim 字串,或記錄包含字串 adkim=r,則您的網域是使用寬鬆對齊。如果記錄包含字串 adkim=s,則您的網域是使用嚴格對齊。
只能由您的系統管理員從嚴格對齊變更為寬鬆對齊。
透過 SPF 符合 DMARC
若要取得 SPF 記錄,請執行下列命令:
nslookup -type=TXT example.com
命令會傳回類似下列內容的 SPF 記錄:
"v=spf1 include:amazonses.com ~all"
為確保您的訊息透過 SPF 符合 DMARC,請檢查以下內容:
1. 您的訊息必須通過 SPF 檢查。這表示您網域的 SPF 記錄必須具有「include:amazonses.com」,授權 Amazon SES 代表您的網域傳送電子郵件。
2. 在電子郵件標頭的寄件者地址中的網域,必須符合傳送電子郵件伺服器向接收郵件伺服器指定的郵件寄件者或信封寄件者網域。
使用 Amazon SES 傳送電子郵件時,郵件寄件者或信封寄件者網域預設為 amazonses.com,而您的寄件者網域是您已驗證的網域。這些值未通過 SPF 對齊和 DMARC 驗證。
若要解決此問題,您必須設定自訂 MAIL FROM 網域,使郵件寄件者值是您已驗證網域的子網域。例如,如果您已驗證的網域 (寄件者網域) 是 example.com,則您可以將自訂郵件寄件者網域設定為 mail.example.com。這些值通過 SPF 對齊和 DMARC 驗證。
注意:透過 Amazon SES,您可以將 SPF 記錄新增為自訂郵件寄件者子網域的一部分。如需指示,請參閱設定 MAIL FROM 網域。
透過 DKIM 符合 DMARC
在 Amazon SES 中使用 Easy DKIM 時,您會收到三筆 CNAME 記錄。若要檢查各自的 DKIM 記錄,請在每個 CNAME 上執行下列命令:
nslookup -type=CNAME example1._domainkey.example.com
命令會傳回 DKIM 記錄:
example1.dkim.amazonses.com.
為確保您的訊息透過 DKIM 符合 DMARC,請檢查下列內容:
1. 訊息必須具有有效的 DKIM 簽章。
2. 電子郵件標頭中的寄件者地址必須符合 DKIM 簽章中的 d= 網域。
最佳實務是設定 Easy DKIM,因為此功能可讓您透過 DKIM 符合這兩項 DMARC 驗證要求。您也可以選擇手動簽署電子郵件,但 Amazon SES 不會驗證您建構的 DKIM 簽章。