Amazon Simple Email Service (Amazon SES) の Simple Mail Transfer Protocol (SMTP) がタイムアウトします。Amazon SES における SMTP 接続またはタイムアウトの問題の解決方法を教えてください。

SMTP は、次の原因でタイムアウトすることがあります。

  • E メールアプリケーションが Transmission Control Protocol (TCP) 接続を確立できない。
  • E メールアプリケーションは TCP 接続の作成に成功したが、SSL/TLS ネゴシエーションに問題がある。(TLS ラッパー: ポート 465、2465 またはポート 25、587、2587 を使用する STARTTLS)
  • TCP 接続の確立と SSL/TLS ネゴシエーションには成功したが、Amazon SES サーバーが SMTP 420/421 タイムアウトエラーを送信した。

アプリケーションの TCP 接続のトラブルシューティング

1.    次のように telnet または netcat (nc) を実行します。

リージョンのエンドポイントを、使用している Amazon SES エンドポイントに置き換えてください。

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

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

2.    出力を記録します。

3.    接続がタイムアウトする場合は、ローカルファイアウォールルール、ルート、およびアクセスコントロールリスト (ACL) を確認します。

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスを使用している場合、関連付けられているインスタンスのセキュリティグループ、サブネットのネットワーク ACL、およびサブネットのルートテーブルを調べて、必要なルールとルートが設定されていることを確認します。 詳細については、Amazon SES SMTP エンドポイントに接続するを参照してください。

注意: デフォルトでは、Amazon EC2 はすべてのインスタンスで SMTP ポート 25 のトラフィックを絞ります。SMTP ポート 25 の使用で引き続きタイムアウトエラーを受信する場合は、このスロットルを削除するリクエストを行うか、送信に使用するポートを変更 (587 など) できます。詳細については、「EC2 インスタンスからポート 25 のスロットルを削除する方法を教えてください。」を参照してください。

TCP 接続のトラブルシューティングの例

EC2 インスタンスが TCP ポート 25、587、または 465 でアウトバウンドトラフィックを送信する場合、以下を確認します。

  • セキュリティグループのアウトバウンド (egress) ルールで、TCP ポート 25、587、または 465 を使用した SMTP サーバーへのトラフィックが許可されていることを確認します。詳細については、「セキュリティグループルール」を参照してください。
  • ネットワーク ACL のアウトバウンド (egress) ルールで、TCP ポート 25 を使用した SMTP サーバーへのトラフィックが許可されていることを確認します。また、ネットワーク ACL のインバウンド (ingress) ルールで、TCP ポート 1024-65535 を使用した SMTP サーバーからのトラフィックが許可されていることを確認します。詳細については、「ネットワーク ACL ルール」を参照してください。
  • EC2 インスタンスがインターネットに接続されていることを確認します。 詳細については、「インターネットアクセスを有効にする」を参照してください。

EC2 インスタンスが TCP ポート 25、587、または 465 でインバウンドトラフィックを受信する場合、以下を確認します。

  • セキュリティグループのインバウンド (ingress) ルールで、TCP ポート 25、587、または 465 を使用した SMTP クライアントからトラフィックが許可されていることを確認します。
  • ネットワーク ACL のインバウンド (ingress) ルールで、TCP ポート 25 を使用した SMTP クライアントへのトラフィックが許可されていることを確認します。また、ネットワーク ACL のアウトバウンド (egress) ルールで、TCP ポート 1024-65535 を使用した SMTP クライアントへのトラフィックが許可されていることを確認します。
  • EC2 インスタンスがインターネットに接続されていることを確認します。詳細については、「インターネットアクセスを有効にする」を参照してください。

SSL/TLS ネゴシエーションのトラブルシューティング

TCP 接続をトラブルシューティング (最初のセクションを参照) を行っても接続またはタイムアウトの問題が解決しない場合は、SSL/TLS に問題がないか調べます。

1.    Amazon Linux Amazon Machine Image (AMI) から起動した EC2 Linux インスタンスから、コマンド openssl を次のように実行します。

エンドポイントを、使用している Amazon SES エンドポイントに置き換えてください。

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

注意: デフォルトの CA バンドルファイルの場所が変更されている場合、これらのコマンドの実行で問題が発生することがあります。

2.    出力を記録します。前のステップのコマンドの予期される応答は SMTP 220 および SMTP 250 です。

SMTP 420/421 タイムアウトエラーのトラブルシューティング

TCP 接続が確立され SSL/TLS ネゴシエーションに成功したが、Amazon SES サーバーが SMTP 420/421 タイムアウトエラーを送信する場合、接続がアイドルであることを意味します。このエラーは通常、openssl を使用して手動で E メールを送信する場合にのみ発生します。​

注意: E メールアプリケーションを使用しているときにこのエラーが発生した場合は、アプリケーションのロジックを見直してください。

次のようにテスト E メールを作成して、手動の SMTP テストを改善します。

1.    次のようにテスト E メールメッセージを作成します。

E メールアドレスをご使用のドメイン名のものに置き換えてください。

cat >message.txt <<EOF
From: Verified Address <example-user@example.com>
To: success@simulator.amazonses.com
Subject: Curl Test

重要: 件名 行の後の空の行はそのままにしてください。

2.    出力を記録します。

出力例:

This is a Test Email by CURL Agent.
EOF

3.    E メールの送信に使用するポートによって、次のいずれかの curl コマンドを、SMTP 認証情報 (base64 エンコードは不要です) を使用して次のように実行します。

curl -v --mail-from 'verified_address@customersdomain.com' --mail-rcpt 'success@simulator.amazonses.com' --user 'SMTP-USERNAME:SMTP-SECRET-KEY' --ssl-reqd 'smtp://email-smtp.us-east-1.amazonaws.com:587' -T ./message.txt
curl -v --mail-from 'verified_address@customersdomain.com' --mail-rcpt 'success@simulator.amazonses.com' --user 'SMTP-USERNAME:SMTP-SECRET-KEY' --ssl-reqd 'smtp://email-smtp.us-east-1.amazonaws.com:25' -T ./message.txt
curl -v --mail-from 'verified_address@customersdomain.com' --mail-rcpt 'success@simulator.amazonses.com' --user 'SMTP-USERNAME:SMTP-SECRET-KEY' 'smtps://email-smtp.us-east-1.amazonaws.com:465' -T ./message.txt

4.    出力を記録します。

5.    SMTP 認証情報が有効であれば、テスト E メールが正常に送信されます。

Postfix、IIS SMTP、またはカスタムアプリケーションが 530/535 認証エラーを受信する場合、アプリケーションの設定でエラーを調べてください。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2018 年 09 月 26 日