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

2 分的閱讀內容
0

我的 Amazon Simple Email Service (Amazon SES) 簡易郵件傳輸協定 (SMTP) 已逾時。如何解決 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 上傳輸流量的應用程式,您可以請求移除此限制

解決方法

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

1.    執行下列 telnet、netcat (nc) 或 Test-NetConnection 命令。用您使用的 Amazon SES SMTP 端點取代 email-smtp.us-east-1.amazonaws.com

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

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

-或-

在 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

PowerShell 命令會傳回類似下列內容的輸出:

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

連線失敗 (逾時)

telnet 命令會傳回類似下列內容的輸出:

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

PowerShell 命令會傳回類似下列內容的輸出:

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.    從 EC2 Linux 執行個體執行 openssl 命令。對於 Amazon EC2 Windows 執行個體,請參閱使用命令列測試 Amazon SES SMTP 介面的連線,然後選擇 PowerShell 標籤。

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

**注意:**用您使用的 Amazon SES SMTP 端點取代 email-smtp.us-east-1.amazonaws.com。在您執行上述命令時,修改預設憑證認證機構 (CA) 的位置可能會造成問題。安裝 OpenSSL 時,請確保已識別預設憑證認證機構 (CA) 套件檔案的位置。

2.    注意輸出。預期回應為 SMTP 220 和 SMTP 250。

3.    如果沒有得到預期輸出,請檢查以下內容:

  • 確認已正確設定 SSL/TLS 憑證存放區。
  • 確認傳送應用程式具有正確的憑證路徑。
  • 確認伺服器上已安裝 Amazon SES 憑證。

注意:您可以測試是否已安裝正確的憑證。如需說明,請前往關於 Amazon 信任服務遷移,並檢閱關於憑證一節。


相關資訊

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