Email Spam Tester

Home › 整合 › 指南 › Amazon SES

指南 · 不需連線

測試 Amazon SES 郵件

SES 會原樣寄出你交給它的內容,本身幾乎不會添加任何東西。因此,只要你的帳戶已脫離沙盒,測試就很容易。這也表示,報告中發現的大多數問題都需要由你修正。

指南 · Amazon SES

測試來自 Amazon SES 的郵件

一個地址,一封郵件,有效時間一小時。不需帳戶或 API 金鑰。

取得測試地址

步驟 1

驗證網域

Easy DKIM:三筆 CNAME。如果你也希望 SPF 對齊,請使用自訂 MAIL FROM 子網域。

步驟 2

寄送一封真實郵件到測試地址

在具有正式環境存取權限的 Region 中執行 aws sesv2 send-email。一個地址、一封郵件、一小時。

步驟 3

查看報告

預期 SPF 會針對 amazonses.com 通過,但顯示為未對齊,而 DMARC 會透過 DKIM 通過。取消訂閱標頭需由你自行設定。

先檢查沙箱狀態,因為這會直接決定是否能正常運作。新的 SES 帳戶在每個區域一開始都處於沙箱中。在沙箱期間,SES 只會將郵件寄送至已驗證的地址、已驗證的網域,以及 SES 自己的信箱模擬器。此外,每 24 小時最多只能寄送 200 封郵件,且每秒最多一封。

驗證 Email Spam Tester 地址也無法繞過這項限制。SES 會寄送一封包含連結的郵件來驗證收件者,而我們的地址在收到一封郵件後就會關閉,因此這封驗證郵件會直接用掉該地址。實際上,你需要在寄件來源區域取得正式環境存取權。AWS 承諾會在 96 小時內對該申請做出初步回覆。

由於沙箱狀態是依區域分別設定,因此即使帳戶在 eu-west-1 已進入正式環境,在 us-east-1 仍可能處於沙箱中。寄件身分也依區域分開設定,每個區域都有各自的 DKIM 記錄。

取得地址並傳送一封郵件

開啟 email-spam-tester.com 並複製顯示的地址。這不需要帳戶或 API 金鑰,格式是 test- 加上二十個字元,再接 t.email-spam-tester.com。你有一小時的時間,而且只能傳送一封郵件,因此請先準備好傳送指令,再取得地址。

最精簡的傳送方式是使用 CLI。以下指令改寫自 AWS 在 SES 租戶頁面上的範例,移除了租戶和設定集旗標:

aws sesv2 send-email \
  --from-email-address "sender@yourdomain.com" \
  --destination "ToAddresses=test-xxxxxxxxxxxxxxxxxxxx@t.email-spam-tester.com" \
  --content "Simple={Subject={Data='Test Subject',Charset=utf-8},Body={Text={Data='Test email body',Charset=utf-8}}}"

即使在正式環境中,From 也必須是已驗證的身分。這種純文字內文足以測試驗證機制和 IP,但幾乎無法提供任何內容方面的資訊。若要取得實際判定結果,請傳送你的應用程式實際會傳送的郵件,並包含 HTML 部分和標頭。也請使用相同的程式碼路徑,無論是 boto3 的 send_email、SMTP 程式庫或其他方式。如果正式環境使用設定集,也請在這裡加入 --configuration-set-name,讓測試經過相同的設定。

收件匣測試可直接加入同一個指令。將其各服務供應商的收件匣和測試地址一起放進 ToAddresses,並將其標記放進 Subject 資料中。一次呼叫就會產生兩份報告,第二份報告會列出郵件在 Gmail、Outlook、Yahoo 和其他服務供應商中進入的資料夾。這些收件匣也未經驗證,因此同樣需要正式環境存取權。

你也可以使用主控台。開啟 Configuration > Identities,按一下該身分並選擇 Send test email。如果你要貼上包含自訂標頭的完整 MIME 郵件,請選擇 Raw。AWS 將主控台描述為通常只用於測試郵件的工具,而文件並未提到要為郵件加入測試前綴或進行其他變更。在沙盒中,Custom recipient 欄位必須填入已驗證的地址,因此又會回到上述問題。

報告中的新 SES 身分會是什麼樣子

來自報告 · 驗證

  • SPF通過未對齊MAIL FROM 是 amazonses.com 的子網域,不是你的網域。
  • DKIM通過已對齊Easy DKIM 會使用你網域上的 2048 位元金鑰簽署每封郵件。
  • DMARC通過發布 DMARC 記錄後,會透過對齊的 DKIM 簽章通過驗證。

預設 SES 身分:SPF 會通過,但驗證的是 amazonses.com。自訂 MAIL FROM 才能讓它對齊。

DKIM。 Easy DKIM 是網域身分的預設選項,會使用 2048 位元金鑰簽署每封郵件。設定方式是建立三筆名為 token._domainkey.yourdomain.com 的 CNAME 記錄,並指向 token.dkim.<region>.amazonses.com。如果 DKIM 檢查失敗,請先檢查兩件事:DNS 是否已完成傳播(AWS 表示最多可能需要 72 小時),以及 DNS 主機是否在名稱後附加了網域,因而建立成 token._domainkey.yourdomain.com.yourdomain.com。使用 BYODKIM 時,則是在你自己的選擇器上發布一筆 TXT 記錄。在兩者切換期間,SES 可能完全不加簽章就寄出郵件,報告會將其標示為缺少 DKIM。DKIM 檢查工具會將 token 當作選擇器。

SPF 與 Return-Path。 SES 預設使用 amazonses.com 的子網域作為 MAIL FROM。SPF 會通過,但驗證的是 amazonses.com,因此報告會顯示 SPF 未與你的 From 對齊。如果 DKIM 已對齊,這只會扣少量分數(100 分制中扣 2 分,而不是 5 分),DMARC 仍會透過 DKIM 通過驗證。若也要對齊 SPF,請設定自訂 MAIL FROM 子網域,並只建立一筆 MX 記錄 10 feedback-smtp.<region>.amazonses.com,以及一筆 TXT 記錄 v=spf1 include:amazonses.com ~all。不要選擇會接收郵件的子網域,也不要在 DMARC 記錄中加入 aspf=s,因為 AWS 表示,在嚴格 SPF 政策下,SPF 與 SES 無法對齊。

DMARC。 SES 不會替你發布 DMARC 記錄。AWS 的範例是 v=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.com。如果目前沒有人閱讀你的 DMARC 報告,我會從 p=none 開始,之後再逐步收緊政策。DMARC 檢查工具會顯示你目前的設定,DMARC fail則說明常見的問題。

這些是範例值。請從你的帳戶複製實際值。

名稱類型值用途複製
token._domainkey.yourdomain.comCNAMEtoken.dkim.<region>.amazonses.comEasy DKIM。共三筆,每個 token 一筆。
mail.yourdomain.comMX10 feedback-smtp.<region>.amazonses.com自訂 MAIL FROM。只建立一筆 MX 記錄,並使用不接收郵件的子網域。
mail.yourdomain.comTXTv=spf1 include:amazonses.com ~all自訂 MAIL FROM 的 SPF,讓 SPF 與你的 From 對齊。
_dmarc.yourdomain.comTXTv=DMARC1;p=quarantine;rua=mailto:my_dmarc_report@example.comDMARC,這是 AWS 的範例。如果目前沒有人閱讀報告,請從 p=none 開始,並省略 aspf=s。

List-Unsubscribe。 只有在你使用指向聯絡人清單和主題的 ListManagementOptions 寄送時,SES 才會加入 List-Unsubscribe 和 List-Unsubscribe-Post。即使如此,也只適用於單一收件者的郵件,而且只能使用 Easy DKIM,SES 還會覆寫你自行設定的任何取消訂閱標頭。其他郵件寄出時完全不會包含取消訂閱標頭。對電子報而言,除非你自行加入這些標頭,否則 List-Unsubscribe 檢查和一鍵取消訂閱檢查都會失敗。自 2024 年 3 月起,v2 API 可接受自訂標頭,不必使用原始 MIME。以下兩個標頭改寫自 AWS 的一鍵取消訂閱部落格文章:

"Headers": [
  { "Name": "List-Unsubscribe",
    "Value": "<https://yourdomain.com/unsub?address=x&topic=x>, <mailto:unsubscribe@yourdomain.com>" },
  { "Name": "List-Unsubscribe-Post",
    "Value": "List-Unsubscribe=One-Click" }
]

接著,你的端點必須處理 POST。不含清單標頭的密碼重設郵件和收據屬於另一種情況,報告會將這類郵件的批次寄件者檢查群組標示為已略過。如需進一步了解此標頭,請參閱我們的 List-Unsubscribe 頁面。

IP 與封鎖名單

新帳戶會透過與其他 SES 使用者共用的 IP 寄信。除非你的寄送量大且穩定,否則 AWS 建議繼續使用共用 IP。報告會針對寄件 IP 查詢 21 個封鎖名單。使用共用位址時,命中封鎖名單代表該 IP 集區被列入。專用 IP 分為 Standard 和 Managed,Standard 需要你手動暖機,Managed 則由 SES 處理暖機。使用專用 IP 時,列入封鎖名單的紀錄會直接與你自己的寄送活動相關。你可以將「Headers」分頁中找到的任何 IP 直接放入封鎖名單檢查工具。

AWS 也會監控你的帳戶。其執行政策常見問題指出,應使用可實際接收郵件的真實地址或模擬器進行測試,避免虛構的收件者導致退信率升高。當退信率達到 5%,或客訴率達到 0.1% 時,AWS 會將帳戶列入審查。

底部的修正計畫最多會列出八項變更。適用時,每項都會附上可複製的 DNS 記錄,而每項修正旁的分數,代表其涉及的檢查目前扣除的分數。模型會選擇並說明修正方式,但不會估算價格。如果你不明白某個檢查名稱,文件會說明全部 42 項檢查。

常見問題

可以從 SES sandbox 測試嗎?

無法使用本站的地址測試。在 sandbox 中,SES 只會寄送給已驗證的收件者,而驗證本站地址會用掉該地址唯一可接收的一封郵件。請為該區域申請正式環境存取權,同時可使用免費的 DKIM、SPF 和 DMARC 檢查工具檢查你的記錄。

SES mailbox simulator 會提供相同的資訊嗎?

不會。它只會顯示 SES 如何處理退信、投訴或郵件投遞,並比照一般寄信計費。它不會分析你的郵件標頭、驗證或內容。

應該將 SES 加入根網域的 SPF 記錄嗎?

收件伺服器會根據 MAIL FROM 網域檢查 SPF。此網域預設是 amazonses.com 的子網域,也可以是你的自訂 MAIL FROM 子網域。SES 的 SPF 記錄應放在該子網域。根據 MAIL FROM 頁面,根網域不需要設定任何記錄。

其他平台的指南

所有整合功能與指南 →

立即測試郵件

一個地址,一封郵件,有效時間一小時。不需帳戶。各項檢查完成後,報告會自動產生。

取得測試地址