技術解説 · 出典付きの回答
AWS SESのエンドポイントとは?
AWS SESのエンドポイントは、アカウントがホストされているリージョンと接続方法によって異なります。APIリクエストの場合、エンドポイントはemail.region.amazonaws.comという形式です。SMTPの場合、エンドポイントはemail-smtp.region.amazonaws.comという形式です。IDを検証したリージョンに対応するエンドポイントを使う必要があります。
APIエンドポイント
AWS SESのAPIエンドポイントはリージョンごとに異なります。たとえば、SESのIDを米国東部(バージニア北部)で設定している場合、エンドポイントはemail.us-east-1.amazonaws.comです。米国西部(オレゴン)で設定している場合は、email.us-west-2.amazonaws.comを使います。これらのエンドポイントは、AWS SDKやCLIからのHTTPSリクエストで、IDの管理、メールの送信、受信ルールの設定に使われます。
SMTPエンドポイント
SMTPエンドポイントは、簡易メール転送プロトコル(SMTP)でメールを送信するために使われます。形式はemail-smtp.region.amazonaws.comです。たとえば、米国東部(バージニア北部)のSMTPエンドポイントはemail-smtp.us-east-1.amazonaws.comです。これらのエンドポイントは標準的なSMTP認証をサポートしており、使用するTLSの設定に応じて、通常はポート25、465、587のいずれかでアクセスします。
リージョンの選択
ドメインやメールアドレスを検証していないリージョンのエンドポイントからは、メールを送信できません。別のリージョンのエンドポイントを使おうとすると、APIはInvalidParameterValueなどのエラーを返します。アプリケーションの設定が、SESの本番アクセスが許可されたリージョンと一致していることを必ず確認してください。
接続のセキュリティ
SESのエンドポイントに接続する際、AWSは安全な接続を必須としています。SMTPの場合はSTARTTLSまたは暗黙的TLSを使います。API呼び出しではHTTPSが必須です。開発者はSendHQの無料ツール(https://sendhq.cc/tools)を使って、SPFやDKIMなどのDNSレコードがSESの設定と正しくアライメントされていることを確認し、確実に配信されるようにできます。
エンドポイントのトラブルシューティング
接続のタイムアウトが発生する場合は、選択したポートでの送信トラフィックがネットワークで許可されているかを確認してください。ポート25は、迷惑メールを防ぐためにクラウドプロバイダーによってブロックされていることがよくあります。STARTTLSにはポート587を、暗黙的TLSにはポート465を使ってください。また、AWS IAMの認証情報に、対象リージョンのエンドポイントに対するses:SendRawEmailまたはses:SendEmailの権限があることを確認してください。
よく寄せられる質問
AWS SESでグローバルなエンドポイントを使えますか?
いいえ、AWS SESには単一のグローバルなエンドポイントはありません。IDを検証したリージョンのエンドポイントを指定する必要があります。
SESのSMTPエンドポイントではどのポートを使うべきですか?
STARTTLSにはポート587を、暗黙的TLSにはポート465を使ってください。ポート25も利用できますが、ISPやクラウドプロバイダーによってブロックされていることがよくあります。
自分のSESのリージョンを確認するには?
AWSマネジメントコンソールのSESダッシュボードを確認してください。リージョンはコンソールの右上、またはURLに表示されています。
間違ったエンドポイントを使うとどうなりますか?
リクエストは接続に失敗するか、そのリージョンではIDが検証されていないことを示すエラーを返します。
一次情報源
- Amazon SES開発者ガイド — Amazon Web Services
- サービス名およびトランスポートプロトコルのポート番号レジストリ — IANA