跳至內容

如何針對 Amazon SES 的 SMTP 連線或逾時問題進行疑難排解?

3 分的閱讀內容
0

我的 Amazon Simple Email Service (Amazon SES) 簡易郵件傳輸協定 (SMTP) 已逾時。

簡短描述

當您的用戶端無法與公用 Amazon SES 端點建立 TCP 連線,就會發生連線逾時問題。若要解決 Amazon SES 的 SMTP 連線或逾時錯誤,請先對應用程式的 TCP 連線進行疑難排解。如果 TCP 連線成功,則對 SSL/TLS 交涉進行疑難排解。

根據預設,Amazon Elastic Compute Cloud (Amazon EC2) 會針對所有 Amazon EC2 執行個體,限制 Amazon Virtual Private Cloud (Amazon VPC) 在連接埠 25 上的輸出流量。如果您的應用程式需要使用 SMTP 連接埠 25 進行流量傳輸,您可以請求解除此限制。或者,您可以改用連接埠 587 (STARTTLS) 和連接埠 465 (TLS Wrapper) 進行 SMTP 連線,這些連接埠不同於連接埠 25,沒有此類預設限制。

解決方法

針對應用程式的 TCP 連線進行疑難排解

請完成下列步驟:

  1. 執行以下 telnet 命令:

    telnet email-smtp.us-east-1.amazonaws.com 587  
    telnet email-smtp.us-east-1.amazonaws.com 25  
    telnet email-smtp.us-east-1.amazonaws.com 465

    **注意:**請將 email-smtp.us-east-1.amazonaws.com 替換成您使用的 Amazon SES SMTP 端點。
    -或-

    執行以下 netcat (nc) 命令:

    nc -vz email-smtp.us-east-1.amazonaws.com 587  
    nc -vz email-smtp.us-east-1.amazonaws.com 25  
    nc -vz email-smtp.us-east-1.amazonaws.com 465

    -或-

    在 Windows PowerShell 中,執行以下命令以連線至 Amazon SES SMTP 伺服器:

    Test-NetConnection -Port 587 --ComputerName email-smtp.us-west-2.amazonaws.com
  2. 請留意輸出結果。如果連線成功,請繼續進行「對 SSL/TLS 交涉進行疑難排解」一節的步驟。如果連線失敗,則繼續執行步驟 3。如果連線成功,telnet 命令會傳回類似以下範例的輸出內容:

    Trying 35.170.126.22...  
    Connected to email-smtp.us-east-1.amazonaws.com.  
    Escape character is '^]'.  
    220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-A12BCD3EF example0mJncW410pSau

    如果連線逾時,telnet 命令會傳回類似以下範例的輸出內容:

    Trying 18.232.32.150...  
    telnet: connect to address 18.232.32.150: Connection timed out

    如果連線成功,Test-NetConnection 命令會傳回類似以下範例的輸出內容:

    ComputerName     : email-smtp.us-west-2.amazonaws.com  
    RemoteAddress    : 198.51.100.126  
    RemotePort       : 587  
    InterfaceAlias   : Ethernet  
    SourceAddress    : 203.0.113.46  
    TcpTestSucceeded : True

    如果連線逾時,Test-NetConnection 命令會傳回類似以下範例的輸出內容:

    WARNING: Ping to 52.39.11.136 failed with status: TimedOut  
    
    ComputerName           : email-smtp.us-west-2.amazonaws.com  
    RemoteAddress          : 35.155.47.104  
    RemotePort             : 587  
    InterfaceAlias         : Ethernet 2  
    SourceAddress          : 10.0.0.140  
    PingSucceeded          : False  
    PingReplyDetails (RTT) : 0 ms  
    TcpTestSucceeded       : False
  3. 若連線失敗,請確認本機防火牆規則、路由和網路存取控制清單 (網路 ACL) 是否皆允許在您使用的 SMTP 連接埠上傳輸流量。另外,請確認發信應用程式可以存取網際網路。

例如,如果您使用 EC2 執行個體傳送電子郵件並連線至 SMTP 端點,請確認是否符合下列條件:

對 SSL/TLS 交涉進行疑難排解

如果 TCP 連線成功,但您仍遇到連線或逾時問題,請完成下列步驟來檢查 SSL/TLS 是否出現問題:

  1. 連線至 Amazon SES SMTP 伺服器。
    針對 EC2 Linux 執行個體,請執行以下命令:

    openssl s_client -crlf -connect email-smtp.us-east-1.amazonaws.com:465

    **注意:**請將 email-smtp.us-east-1.amazonaws.com 替換成您使用的 Amazon SES SMTP 端點。
    若您使用的是 EC2 Windows 執行個體,請參閱 Testing your connection to the Amazon SES SMTP interface using the command line (使用命令列測試 Amazon SES SMTP 介面連線) 中的 PowerShell 索引標籤。

  2. 若要檢查是否有 SSL 問題,請執行以下命令:

    openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

    如果連線成功,您會收到類似以下內容的 SMTP 220 回應:

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1  
    verify return:1  
    depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon  
    verify return:1  
    depth=0 CN = email-smtp.us-west-2.amazonaws.com  
    verify return:1  
    220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-VCSHDP1YZ A1b2C3d4E5f6G7h8I9j0
  3. 若要檢查是否有 TLS 問題,請執行以下命令:

    openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587

    如果連線成功,您會收到類似以下內容的 SMTP 250 回應:

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1  
    verify return:1  
    depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon  
    verify return:1  
    depth=0 CN = email-smtp.us-west-2.amazonaws.com  
    verify return:1  
    250 Ok
  4. 若沒有收到 SSL 的 SMTP 220 回應,或是 TLS 的 SMTP 250 回應,請確認是否符合以下條件:
    您已正確設定 SSL/TLS 憑證存放區。
    發信應用程式已設定正確的憑證路徑。
    伺服器上安裝了 Amazon SES 憑證。

**注意:**若要確認您是否已安裝正確的憑證,請參閱 About the Amazon Trust Services migration (關於 Amazon Trust Services 遷移) 中的「About the certificates」(關於憑證) 一節。

相關資訊

使用 Amazon SES SMTP 介面傳送電子郵件