Amazon SES における SMTP 接続またはタイムアウトの問題をトラブルシューティングするにはどうすればよいですか?

所要時間2分
0

Amazon Simple Email Service (Amazon SES) の Simple Mail Transfer Protocol (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 コマンドを実行します。email-smtp.us-east-1.amazonaws.com を、使用している Amazon SES SMTP エンドポイントに置き換えてください。

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 インスタンスを使用して E メールを送信し、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

**注意:**email-smtp.us-east-1.amazonaws.com を、使用している Amazon SES SMTP エンドポイントに置き換えてください。デフォルトの認証局 (CA) の場所を変更すると、前述のコマンドを実行したときに問題が発生する可能性があります。OpenSSL をインストールするときは、デフォルトの CA バンドルファイルの場所を確認してください。

2.    出力を記録します。予想される応答は、SMTP 220 および SMTP 250 です。

3.    予想した出力が得られない場合は、以下を確認してください。

  • SSL/TLS 証明書ストアが正しく設定されているか検証します。
  • 送信アプリケーションに証明書への正しいパスがあることを確認します。
  • Amazon SES 証明書がサーバーにインストールされているか検証します。

注意: 正しい証明書がインストールされているかどうかをテストできます。手順については、「Amazon Trust Services の移行について」を参照し、「証明書について」セクションを確認してください。


関連情報

Amazon SES SMTP インターフェイスを使用した E メールの送信

コメントはありません

関連するコンテンツ