0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS SAP対策】SES の SMTP エンドポイントを完全理解!STARTTLS と TLS Wrapper の違いまで

0
Posted at

どーも!shihopowerです🙋‍♀️

AWS SAP の対策をしていて、SES の SMTP 周りの問題でまったく太刀打ちできなかったので、公式ドキュメントを読み込んでまとめました。

「SMTP くらい知ってるけど、SES と組み合わさると急に頭が真っ白になる…」という方、ぜひ一緒に整理しましょう!


目次

  1. Amazon SES の SMTP インターフェースって何?
  2. SES SMTP エンドポイントへの接続方法:2種類ある!
  3. SMTP 認証情報の取得方法
  4. まとめ

1. Amazon SES の SMTP インターフェースって何?

Amazon SES でメールを送信する方法は大きく 2つ あります。

方法 概要
SMTP インターフェース 既存の SMTP 対応アプリ・メールサーバーからそのまま利用できる
Amazon SES API AWS SDK や HTTP リクエストを使ってプログラムから直接呼び出す

SMTP インターフェースは、レガシーなアプリや既存のメールサーバーは SMTP を使ったやり取りしかできないケースも多いので、既存のアプリケーションを大きく改修せずに SES を使い始めたいときに便利な方法です。

参考:Using the Amazon SES SMTP interface to send email


2. SES SMTP エンドポイントへの接続方法:2種類ある!

ここが今回のポイントです🎯

Amazon SES の SMTP エンドポイントは、すべての接続を TLS で暗号化することを要求しています。

Amazon SES SMTP endpoint requires that all connections be encrypted using Transport Layer Security (TLS).

TLS 暗号化接続を確立する方法として、SES は次の 2種類 をサポートしています。


STARTTLS

STARTTLS は、最初は平文(暗号化なし)で接続し、途中から TLS 暗号化に切り替える仕組みです。

接続の流れはこうなります:

  1. クライアントが SMTP エンドポイントにポート 25・587・2587 のいずれかで接続
  2. EHLO コマンドを発行
  3. サーバーが STARTTLS 拡張をサポートしていることを確認
  4. クライアントが STARTTLS コマンドを発行 → TLS ネゴシエーション開始
  5. TLS 確立後、改めて EHLO コマンドを発行して SMTP セッションが始まる

参考:Connecting to an Amazon SES SMTP endpoint - STARTTLS


TLS Wrapper

TLS Wrapper(SMTPS・Handshake Protocol とも呼ばれます)は、接続の最初から TLS 暗号化を開始する方式です。STARTTLS とは異なり、平文のやり取りが一切発生しません。

接続の流れはこうなります:

  1. クライアントが SMTP エンドポイントにポート 465・2465 のいずれかで接続
  2. サーバーが証明書を提示
  3. クライアントが EHLO コマンドを発行して SMTP セッションが始まる

参考:Connecting to an Amazon SES SMTP endpoint - TLS Wrapper


2つの比較まとめ

STARTTLS TLS Wrapper
接続方式 平文から始まり、途中で TLS に切り替え 最初から TLS で接続
使用ポート 25・587・2587 465・2465
別名 - SMTPS、Handshake Protocol
特徴 既存の SMTP ポート(25番など)をそのまま使える よりシンプルだが専用ポートが必要

EC2 からポート25を使う場合の注意点

Amazon EC2 はデフォルトでポート 25 のメールトラフィックをスロットリングします。EC2 から SES へポート 25 経由で送信するとタイムアウトになる可能性があるため、「メール送信制限の解除リクエスト」を提出するか、別のポート(587 など)を使用することが推奨されています。

参考:Connecting to an Amazon SES SMTP endpoint


3. SMTP 認証情報の取得方法

SES の SMTP インターフェースを使うには、専用の SMTP 認証情報(ユーザー名・パスワード) が必要です。

ここで超重要な注意点があります⚠️

Your SMTP password is different from your AWS secret access key.

SMTP 認証情報は、IAM のアクセスキーや AWS コンソールのログインパスワードとはまったく別物です!

また、SMTP 認証情報は AWS リージョンごとに固有です。複数リージョンで SES を使う場合は、リージョンごとに認証情報を作成する必要があります。

取得手順(SES コンソールから)

  1. Amazon SES コンソール を開く
  2. 左ナビゲーションの「SMTP 設定」を選択
  3. 右上の「SMTP 認証情報の作成」をクリック(IAM コンソールに遷移)
  4. SMTP ユーザー名を入力 → 「ユーザーの作成
  5. 表示された SMTP パスワードを必ずコピーまたはダウンロード(このダイアログを閉じると二度と確認できません)
  6. 「SES コンソールに戻る」をクリックして完了

参考:Obtaining Amazon SES SMTP credentials


4. まとめ

今回のポイントをざっくりおさらいします!

  • SES でメールを送る方法は SMTP インターフェースAPI の2種類
  • SMTP エンドポイントへの接続には STARTTLS(ポート 25・587・2587)と TLS Wrapper(ポート 465・2465)がある
  • 既存の SMTP ポート(25番など)をそのまま使いたい場合は STARTTLS が適切
  • SMTP 認証情報は IAM 認証情報とは別物。SES コンソールから別途取得が必要

最後まで読んでいただきありがとうございました!
間違いや補足などあればコメントで教えてもらえると嬉しいです🙌

参考ドキュメント

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?