Amazon SES に SMTP認証設定を追加してメールクライアントから SMTPサーバとして利用してみた
Amazon SES に追加で SMTPインタフェースの設定を行うと SMTP認証で SES からメール送信できます。
たとえば監視システムのメール通知用途や、IoT デバイス、複合機などの SMTP認証しか対応していないデバイスから SES を使ってメール送信できます。
そんな SES の SMTPインタフェースの設定をする機会がありましたので設定方法を紹介します。
まとめ
- SMTP認証設定は追加は5分でできる
- SSL/TLS での暗号化は必須
- SSL/TLS 非対応のレガシーデバイスからの利用予定がある場合は注意
- SMTPパスワードと、SMTP用のユーザー(IAMユーザー)のシークレットアクセスキーは違うもの
- SMTP用ユーザー作成時に発行されるSMTPパスワードの再発行、変更はできないので注意
- シークレットアクセスキーはユーザーが直接使う機会はありません
- 知識として持っておくだけで十分です
検証環境
前提として以下のリンクで紹介されている環境が構築済みであることを想定しています。以下の環境でできることは任意の宛先に対してメール送信可能な状態です。
サンドボックス環境でメール送信できるまでの設定手順
- 事前に登録済みの宛先へのみメール送信が可能になる
- なりすましを防ぐ設定(SPF, DKIM)込み
サンドボックス環境を解除しプロダクション環境でメール送信できるまでの設定手順
- 任意の宛先へメール送信が可能になる
- なりすましを防ぐ設定に DMARC設定を追加
SMTPインタフェース設定
以下のドキュメントを参考に進めます。5分もあれば設定できました。
Create SMTP credentials
をクリックします。
ユーザー名を決めてSMTPユーザー作成します。作成されたSMTPユーザーはIAMユーザーとして追加されます。紛らわしいですね、後ほどIAMユーザーの画面からSMTPユーザーを確認します。
認証情報ダウンロードし大切に保管してください。パスワードの再発行はできません。
設定は以上です。
SMTPユーザー作成により、一般的なSMTPサーバーの設定で必要になる以下の情報が揃います。
- サーバー名(エンドポイント): アカウントダッシュボードで確認可能
- ポート番号: 同上
- ユーザー名: ダッシュボードした認証情報のCSVファイル
- パスワード: 同上
SES のアカウントダッシュボードに表示されています。注意すべき点は SES は SSL/TLS 必須のため、SSL/TLS 非対応のレガシーデバイスからは SMTPサーバーとしては利用できないことになります。
補足
SMTPインタフェースの設定は簡単でしたが、知っておいた方がよいなと思ったところをまとめます。
SMTPのパスワードと、AWSシークレットアクセスキーは違う
ドキュメント内でSMTPのパスワードと、AWSシークレットアクセスキーは違うと再三書かれています。どういうことか確認してみました。
まず、IAMユーザーにSMTPユーザーが作成されていることが確認できます。
SMTPユーザーのアクセスキーが発行済みとなっています。新規のアクセスキーを追加したら「実質SMTPユーザー・パスワードの再発行できるのでは?」と思い試してみました。
SMTPユーザー作成時にダウンロードした認証情報と、アクセスキー作成時にダウンロードしたCSVを見比べると載っている情報がそもそも違いました。
SMTPユーザーの認証情報だけ見てたときは、普段のアクセスキー情報のCSVファイルと何が違うのかわかっていませんでした。
SMTPユーザーとアクセスキーは同じ値だったのですが、SMTPパスワードをシークレットアクセスキーは値が異なりました。試しにシークレットアクセスキーをパスワードとしてSMTPサーバーに設定してみたのですが、パスワードエラーで送信できませんでした。
2022/2/4追記SMTPパスワードとシークレットアクセスキーの関係を調査しました。ご興味あれば以下のブログもご覧ください。
SMTPパスワード再発行はできない
SMTPユーザーのパスワードの再発行、変更はできませんのでご注意ください。再発行したいときはSMTPユーザーを削除して再作成することになります。
If you want to change your SMTP password, delete your existing SMTP user in the IAM console. Then, to generate a new set of SMTP credentials, complete the previous procedures.
数日に渡ってブログ書いている途中に気分でダウンロードディレクトリを一掃した結果、SMTPユーザーの認証情報を失いました。ドキュメントの記載通りに既存SMTPユーザーを削除後、同手順で再作成しました。お気をつけください。
SMTP認証を利用したメール送信テスト
メールクライアントは Thunderbird を使い、SMTPサーバーの設定で SES の情報を入力して動作確認を行います。
メール送信元のドメインとして、SESのダッシュボードから検証済みのドメインに登録があるか確認します。私の環境ではabashiri.hoge
ドメインが登録されています。
メールアカウント作成します。@
より前のメールアドレス部分はここで自由に決められます。ここではmyses@abashiri.hoge
としました。
次はSMTPサーバーの設定です。SESのアカウントダッシュボードから確認できる情報と、ダウンロードしたSMTPユーザーの認証情報を元に入力します。
最後にメール送信テストです。初回はパスワード入力が求められるのでSMTPユーザーのパスワードを入力してください。
宛先に指定したGmailでメールを受信を確認します。myses@abashiri.hoge
からメールが届いています。
メールの信頼性を上げるための諸々の設定(SPF, DKIM, DMARC)も PASS しており問題ありません。
以上で、SESのSMTPインタフェースの設定と、メールクライアントからのメール送信テストは完了です。
おわりに
SMTPインタフェースをはじめて設定したついでに設定方法をまとめました。普段 SES を利用していても SMTP の設定する機会は少ないように感じます。どちらかと言うと API を使ってメール送信することが多いのはでしょうか。
ご参考までに SMTP を使った他の例では Postfix から SES へリレーを紹介しているものもありました。