Amazon SES SMTP の問題 - Amazon Simple Email Service

Amazon SES SMTP の問題

このセクションでは、SMTP (Amazon SES Simple Mail Transfer Protocol) インターフェイスを使用した E メールの送信に関連するいくつかの一般的な問題の解決策について説明します。また、Amazon SES から返される SMTP 応答コードも一覧表示します。

Amazon SES SMTP インターフェイス経由の E メール送信の詳細については、「Amazon SES SMTP インターフェイスを使用して E メールを送信」を参照してください。

  • Amazon SES SMTP エンドポイントに接続できない。

    Amazon SES SMTP エンドポイントへの接続の問題は、ほとんどの場合以下の問題が関係しています。

    • 認証情報の誤り - SMTP エンドポイントへの接続に使用する認証情報がAWS 認証情報と異なっています。SMTP 認証情報を取得する方法については、「Amazon SES SMTP 認証情報を取得」を参照してください。認証情報の詳細については、「Amazon SES 認証情報の種類」を参照してください。

    • ネットワークまたはファイアウォールの問題 - ネットワークにより、E メールを送信しようとしているポートでのアウトバウンド接続がブロックされている可能性があります。ローカルネットワークが原因で接続の問題が発生しているかどうかを確認するには、コマンドラインに次のコマンドを入力します。port は、使用するポート (通常は 465、587、2465 または 2587) に置き換えてください。telnet email-smtp.us-west-2.amazonaws.com port

      このコマンドを使用して SMTP サーバーに接続でき、さらに TLS ラッパーまたは STARTTLS を使用して Amazon SES に接続しようとしている場合は、コマンドラインを使用して、Amazon SES SMTP インターフェイスへの接続をテストする に示されている手順を実行してください。

      telnet または openssl を使用して Amazon SES SMTP エンドポイントに接続できない場合は、ネットワークのどこか (ファイアウォールなど) で、使用しようとしているポートでのアウトバウンド接続がブロックされているということです。ネットワーク管理者と協力して、問題を診断および解決してください。

  • ポート 25 を使用して Amazon EC2 インスタンスから Amazon SES に送信しているときに、タイムアウトエラーを受信する。

    Amazon EC2 はデフォルトでポート 25 を制限します。これらの制限を削除するためには、E メール送信制限解除申請に Amazon EC2 リクエストを送信します。制限されないポート 465 または 587 を使用して Amazon SES に接続することもできます。

  • ネットワークエラーが原因で E メールのドロップが発生している。

    アプリケーションが Amazon SES SMTP エンドポイントに接続するときに再試行ロジックを使用していること、およびアプリケーションがネットワークエラーを検出しメッセージ配信を再試行できることを確認します。SMTP は冗長プロトコルで、このプロトコルを使用して E メールを送信する場合は複数のネットワークラウンドトリップが必要になります。SMTP の性質上、ネットワークエラーの可能性は高くなります。

  • SMTP エンドポイントとの接続が失われる.

    ほとんどの場合、接続の切断は以下の問題によって発生します。

    • MTU サイズ - タイムアウトエラーメッセージが表示された場合、Amazon SES SMTP インターフェイスとの接続に使用しているコンピュータのネットワークインターフェイスの最大送信単位 (MTU) が大きすぎる可能性があります。この問題を解決するには、そのコンピュータの MTU サイズを 1500 バイトに設定します。

      Windows、Linux、macOS の各オペレーティングシステムで MTU サイズを設定する方法の詳細については、Amazon Redshift クラスター管理ガイド「クライアントでクエリがハングし、クラスタに到達しないように見える」を参照してください。

      Amazon EC2 の MTU サイズ設定の詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「EC2 インスタンスのネットワーク最大送信単位 (MTU)」を参照してください。

    • 存続時間の長い接続 - Amazon SES SMTP エンドポイントは、Elastic Load Balancer (ELB) の背後の複数の Amazon EC2 インスタンスのフリートで実行されます。システムの最新の状態と耐障害性を維持するために、アクティブな Amazon EC2 インスタンスは定期的に終了され、新しいインスタンスと置き換えられます。アプリケーションは ELB を介して Amazon EC2 インスタンスに接続するため、 Amazon EC2 インスタンスが終了すると接続が無効になります。単一の SMTP 接続を使用して所定の数のメッセージを配信した後、または SMTP 接続がある程度の時間にわたってアクティブであった場合は、新しい SMTP 接続を確立する必要があります。アプリケーションがホストされている場所やアプリケーションがどのように E メールを Amazon SES に送信するかに応じて、いろいろな値を試しながら適切なしきい値を見つける必要があります。

  • 本稼働環境のネットワークのホワイトリストに登録できるように、Amazon SES の SMTP メールサーバーの IP アドレスを知りたい。

    Amazon SES SMTP エンドポイントの IP アドレスは、ロードバランサーの背後に存在します。その結果、これらの IP アドレスは頻繁に変更されます。Amazon SES エンドポイントのすべての IP アドレスの明確なリストを提供することはできません。個々の IP アドレスをホワイトリストに登録するのではなく、amazonses.com ドメインをホワイトリストに登録することをお勧めします。

Amazon SES から返される SMTP 応答コード

このセクションでは、Amazon SES SMTP インターフェイスから返される応答コードを一覧表示します。

400 エラーを受け取った SMTP リクエストは、再試行する必要があります。待機時間を少しずつ増やしながらリクエストを再試行するシステムを実装することをお勧めします (たとえば、待機時間を 5 秒、10 秒、30 秒と増やしながら再試行します)。​ 3 回目の再試行が失敗した場合は、20 分待ってからプロセスを繰り返してください。​ 段階的な再試行ポリシーを使用する実装例については、AWS メッセージングとターゲティングブログ で「"Throttling – Maximum sending rate exceeded (スロットリング – 最大送信レートの超過)" エラーの対処法」を参照してください。

注記

AWS SDK は、再試行ロジックを自動的に実装しますが、SMTP の代わりに HTTPS インターフェイスを使用します。

​500 エラーが発生した場合は、もう一度リクエストを送信する前に、リクエストを修正して問題を修正する必要があります。たとえば、AWS 認証情報が無効な場合は、要求を再度送信する前に正しい認証情報を使用するようにアプリケーションを更新する必要があります。

説明 Response Code (レスポンスコード) 詳細情報

認証に成功

235 Authentication successful

SMTP クライアントは SMTP サーバーに正常に接続してサインインしました。​

正常に配信

250 Ok MessageID

メッセージ ID は、Amazon SES がメッセージを一意に識別するために使用する文字列です。

Service unavailable

421 Too many concurrent SMTP connections

SMTP サーバーへの接続が現在多すぎるため、Amazon SES はリクエストを処理できません。​

ローカル処理エラー

451 Temporary service failure

Amazon SES はリクエストを処理できませんでした。リクエストを処理できないという問題がある可能性があります。​

タイムアウト

451 Timeout waiting for data from client

リクエストの間の経過時間が長すぎるため、SMTP サーバーが接続を閉じました。

日次送信クォータの超過

454 Throttling failure: Daily message quota exceeded

24 時間の期間に送信することが Amazon SES によって許可されたメッセージの最大数を超えました。詳細については、「Amazon SES 送信制限の管理」を参照してください。

最大送信レートの超過

454 Throttling failure: Maximum sending rate exceeded

Amazon SES によって許可された、1 秒あたりに送信できる E メールの最大数を超えました。詳細については、「Amazon SES 送信制限の管理」を参照してください。

SMTP 認証情報を検証するときの Amazon SES の問題

454 Temporary authentication failure

この問題の原因となる可能性のある問題には、以下が含まれます (ただし、これらに限定されません)。​

  • E メール送信アプリケーションと Amazon SES の間で暗号化に関する問題が発生しています。Amazon SES に接続するときは暗号化された接続を使用する必要があることに注意してください。詳細については、「Amazon SES SMTP エンドポイントへの接続」を参照してください。

  • Amazon SES に問題が発生している可能性があります。更新のために、AWS Service Health Dashboardをチェックします。

リクエストの受信に関する問題

454 Temporary service failure

Amazon SES はリクエストを受信できませんでした。​ その結果、メッセージは送信されませんでした。

認証情報の誤り

530 Authentication required

E メールの送信に使用するアプリケーションは、Amazon SES SMTP インターフェイスに接続したときに認証を試みませんでした。

無効な認証情報

535 Authentication Credentials Invalid

E メールを送信するのに使用するアプリケーションは Amazon SES に正しい SMTP 認証情報を提供しませんでした。SMTP 認証情報は AWS 認証情報と同じではありません。詳細については、「Amazon SES SMTP 認証情報を取得」を参照してください。

Amazon SES にサブスクライブされないアカウント

535 Account not subscribed to SES

SMTP 認証情報を所有する AWS アカウント は、Amazon SES にサインアップされていません。

メッセージが長すぎます

552 Message is too long.

送信しようとしているメッセージのサイズが 10 MB を超えています。

Amazon SES にサブスクライブされないアカウント

535 Account not subscribed to SES

SMTP 認証情報を所有する AWS アカウント は、Amazon SES にサインアップされていません。

MAIL FROM 構文エラー

553 <email-address> Invalid email address

SMTP メッセージの MAIL FROM 部分に構文エラーがあります。正しい形式に従っていることを確認し、電子メールアドレスを「<>」で囲むことを忘れないでください。

RCPT TO 構文エラー

553 <email-address> address unknown

SMTP メッセージの RCPT TO 部分に構文エラーがあります。正しい形式に従っていることを確認し、電子メールアドレスを「<>」で囲むことを忘れないでください。

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 送信承認ポリシーでは、 SMTP エンドポイントを呼び出すことが許可されません。

未確認の E メールアドレス

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

Amazon SES アカウントからのメール送信が確認されていないメールアドレスまたはドメインからメールを送信しようとしています。​ このエラーは、「From」、「Source」、「Sender」、または「Return-Path」のアドレスに該当する場合があります。アカウントがサンドボックスにまだある場合は、Amazon SES メールボックスシミュレーターから提供されているアドレスを除く、すべての受信者のアドレスも確認する必要があります。Amazon SES が検証チェックに失敗したすべての ID を表示できない場合、エラーメッセージは 3 つのピリオド (...) で終わります。

注記

Amazon SES は複数のAWS リージョンにエンドポイントを持ち、Eメールアドレスの検証ステータスはAWS リージョンごとに別個に扱われます。使用する AWS リージョン の各送信者について、検証プロセスを完了する必要があります。