Amazon SES SMTP 問題 - Amazon Simple Email Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon SES SMTP 問題

本節包含有關透過 Amazon SES 簡易郵件傳輸協定 (SMTP) 界面傳送電子郵件的一些常見問題的解決方案。此外,也包含 Amazon SES 所傳回的 SMTP 回應代碼清單。

若要進一步了解如何透過 Amazon SES SMTP 界面傳送電子郵件,請參閱「使用 Amazon SES SMTP 介面傳送電子郵件」。

  • 您無法連線到 Amazon SES SMTP 端點。

    Amazon SES SMTP 端點的連線問題最常與下列情況有關:

    • 正確的認證 — 您用來連線至 SMTP 端點的認證與您的 AWS 認證不同。若要取得您的 SMTP 登入資料,請參閱 取得 Amazon SESSMTP憑證。如需憑證的詳細資訊,請參閱 Amazon SES 憑證的類型

    • 網路或防火牆問題 - 您的網路連線可能會阻擋透過您嘗試傳送電子郵件使用之連接埠傳輸的傳出連線。若要判斷是否由於本機網路上的問題導致連線發生問題,請在命令列上輸入下列命令,以您嘗試使用的連接埠 (通常是 465、587、2465、或 2587) 來取代 porttelnet email-smtp.us-west-2.amazonaws.com port

      如果您能使用此命令連線到 SMTP 伺服器,且您正在嘗試使用 TLS Wrapper 或 STARTTLS 來連線到 Amazon SES,請完成「使用命令列測試您與 Amazon SES SMTP 介面的連線」中顯示的程序。

      若您無法使用 telnetopenssl 來連線到 Amazon SES SMTP 端點,表示您的網路中有某個機制 (如防火牆) 正在阻擋透過您嘗試使用的連接埠傳輸的傳出連線。請諮詢您的網路管理員以診斷並解決問題。

  • 您使用連接埠 25 從 Amazon EC2 執行個體傳送到 Amazon SES,且發生逾時錯誤。

    Amazon EC2 會依預設限制連接埠 25。若要移除這些限制,請提交請求移除 Amazon EC2 電子郵件傳送限制。您也可以使用連接埠 465 或 587 來連接到 Amazon SES,這兩者都不會受到限制。

  • 網路錯誤造成電子郵件遺漏。

    請確認您的應用程式在連線到 Amazon SES SMTP 端點時使用重試邏輯,且您的應用程式在發生網路錯誤時可偵測和重新嘗試傳遞訊息。SMTP 是簡化的通訊協定,使用此通訊協定傳送的電子郵件需要多次網路往返。因為 SMTP 的本質,將增加網路錯誤的可能性。

  • 您失去與 SMTP 端點的連線。

    遺失連線通常因下列問題而產生:

    • MTU 大小 - 如果您收到逾時錯誤訊息,您用於連接 Amazon SES SMTP 界面的電腦之網路界面最大傳輸單位 (MTU) 可能過大。若要解決這個問題,將該電腦的 MTU 大小設為 1500 個位元組。

      如需有關在 Windows、Linux 與 macOS 上設定 MTU 大小的相關資訊,請參閱 Amazon Redshift 管理指南中的查詢疑似留滯於客戶端而無法送達叢集

      如需有關為 Amazon EC2 執行個體設定 MTU 大小的詳細資訊,請參閱 Amazon EC2 使用者指南中的 EC2 執行個體的網路最大傳輸單位 (MTU)

    • 長效連線 - 在一組 Amazon EC2 執行個體上的 Elastic Load Balancer (ELB) 後端執行的 Amazon SES SMTP 端點。為了確保系統具有容錯能力,作用中的 Amazon EC2 執行個體會定期終止,並以新執行個體取代。 up-to-date 由於您的應用程式透過 ELB 連線到 Amazon EC2 執行個體,Amazon EC2 執行個體終止時連線將會失效。您應該在經由單一 SMTP 連線來傳送固定數量的訊息後、或者使用該 SMTP 連線一段時間後,建立新的 SMTP 連線傳送。根據您的應用程式託管位置以及送出電子郵件到 Amazon SES 的方法而有所不同,因此您需要透過試驗來找到適當的閾值。

  • 您需要知道 Amazon SES SMTP 電子郵件伺服器的 IP 地址,才可以將網路內的 IP 地址加入允許清單。

    Amazon SES SMTP 端點的 IP 地址位於負載平衡器後端。因此,這些 IP 地址會經常變更。無法提供 Amazon SES 端點所有 IP 地址的明確清單。我們建議您將 amazonses.com 網域加入允許清單,而非將個別 IP 地址加入允許清單。

Amazon SES 傳回的 SMTP 回應代碼

本節包含 Amazon SES SMTP 界面所傳回的回應代碼清單。

您應該重試接收 400 錯誤的 SMTP 請求。我們建議您實作的系統,能夠不斷重試請求,並拉長每次請求間的等待時間 (例如,等待 5 秒鐘再重試、下一次等待 10 秒鐘、下一次等待 30 秒鐘)。若第三次重試不成功,請等待 20 分鐘,然後重複此程序。如需使用執行漸進式重試政策的實作範例,請參閱「 AWS 簡訊與目標鎖定部落格」中的如何處理「調節 - 超過最高傳送率錯誤」

注意

AWS SDK 會自動實作重試邏輯,但它們使用 HTTPS 介面而非 SMTP。

若接收到 500 錯誤,您必須修改您的請求以修正問題,之後再提交請求一次。例如,如果您的 AWS 驗證憑證無效,您必須先更新應用程式以使用正確的認證,然後再次提交要求。

描述 回應代碼 其他資訊

驗證身分成功

235 Authentication successful

您的 SMTP 用戶端成功連線並登入到 SMTP 伺服器。

成功傳遞

250 Ok MessageID

MessageID 是一個不重複的字元字串,Amazon SES 會用來識別訊息。

服務無法使用

421 Too many concurrent SMTP connections

Amazon SES 無法處理請求,因為目前 SMTP 伺服器有過多連線。

本機處理錯誤

451 Temporary service failure

Amazon SES 無法處理請求。請求可能有問題,因此無法加以處理。

逾時

451 Timeout waiting for data from client

兩次請求之間已經過太長的時間,因此 SMTP 伺服器已關閉連線。

超過每日傳送份額

454 Throttling failure: Daily message quota exceeded

您已超過 Amazon SES 允許您在 24 小時期間內傳送的最大電子郵件數量。如需詳細資訊,請參閱 管理您的 Amazon SES 傳送限制

超過最高傳送速率

454 Throttling failure: Maximum sending rate exceeded

您已超過 Amazon SES 允許您在每秒內傳送的最大電子郵件數量。如需詳細資訊,請參閱 管理您的 Amazon SES 傳送限制

驗證 SMTP 憑證時發生 Amazon SES 問題

454 Temporary authentication failure

可能導致此問題的原因包括 (但不限於):

  • 您的電子郵件傳送應用程式和 Amazon SES 之間的加密發生問題。請注意,連線到 Amazon SES 時需使用加密連線。如需詳細資訊,請參閱「連線至 Amazon SESSMTP端點」。

  • Amazon SES 可能遇到問題。查看 AWS Service Health Dashboard 以取得更新消息。

接收請求發生問題

454 Temporary service failure

Amazon SES 接收請求失敗。因此,訊息未傳送。

不正確的登入資料

530 Authentication required

您用來傳送電子郵件的應用程式,在連接 Amazon SES SMTP 界面時未嘗試進行身分驗證。

身分驗證登入資料無效

535 Authentication Credentials Invalid

您用來傳送電子郵件的應用程式未將正確的 SMTP 憑證提供給 Amazon SES。請注意,您的 SMTP 認證與您的 AWS 認證不同。如需詳細資訊,請參閱 取得 Amazon SESSMTP憑證

帳戶未訂閱 Amazon SES

535 Account not subscribed to SES

擁 AWS 帳戶 有 SMTP 登入資料的未註冊 Amazon SES。

訊息太長

552 Message is too long.

您嘗試傳送的訊息大小超過最大訊息大小

帳戶未訂閱 Amazon SES

535 Account not subscribed to SES

擁 AWS 帳戶 有 SMTP 登入資料的未註冊 Amazon SES。

「寄件人」語法錯誤

553 <email-address> Invalid email address

SMTP 訊息的「寄件人」部分中存在語法錯誤。請檢查您使用的格式是否正確,並且不要忘記將電子郵件地址括在「<>」中。

「收件人」語法錯誤

553 <email-address> address unknown

SMTP 訊息的「收件人」部分中存在語法錯誤。請檢查您使用的格式是否正確,並且不要忘記將電子郵件地址括在「<>」中。

使用者未獲授權呼叫 Amazon SES SMTP 端點

554 Access denied: User UserARN is not authorized to perform ses:SendRawEmail on resource IdentityARN

不允許擁有 SMTP 登入資料的使用者的 AWS Identity and Access Management (IAM) 政策或 Amazon SES 傳送授權政策來呼叫 Amazon SES SMTP 端點。

未驗證的電子郵件地址

554 Message rejected: Email address is not verified. The following identities failed the check in region region: identity0, identity1, identity2

您嘗試傳送電子郵件的電子郵件地址或網域未通過驗證以從您的 Amazon SES 帳戶傳送電子郵件。此錯誤可以套用到「寄件人」、「來源」、「寄件者」或「傳回路徑」地址。若您的帳戶仍在沙盒中,除非收件人是由 Amazon SES 信箱模擬器提供,否則您也必須驗證每個收件人的電子郵件地址。若 Amazon SES 無法顯示所有驗證檢查失敗的身分,則錯誤訊息的結尾為三個句點 (...)。

注意

Amazon SES 具有個端點 AWS 區域,每個端點的電子郵件地址驗證狀態是分開的 AWS 區域。您必須為您要使用的每個寄件者完成驗證程序。 AWS 區域

注意

對於此頁面上疑難排解未解決的 SMTP 問題,請嘗試聯絡我們下列出的 SES 支援選項。