こんにちは、クラウドインテグレーション2部 技術1課 宮形 です。
アプリケーションから利用者へEメール配信を行う場合、AWSで利用されるサービスとして Amazon SES (Simple Email Service) があります。SES は、自身でMTA(SendmailやPostfix)を管理する必要が無いことや、Eメール送受信に応じた従量課金であることがメリットです。
今回業務で、利用中の SES を別AWSアカウントへ移行する要件がありました。調査・検証した内容を本BLOGでご紹介させていただきます。
概要
移行概要としては下記の図のようになります。本BLOGではSES は「Eメールを送信(=配信)」するだけに利用するサービスとしています(設定によりSESでメール受信も利用可能)。データ移行は不要とし、移行先AWSアカウントでもEメールを同条件で配信することを目的としています。
結論としては、本検証により下記のことがわかりました。
- 送信者Eメールアドレスは、移行元と移行先で同じ独自ドメイン(@serverworks.co.jp 等)を利用可能
- 送信元のアプリケーションは SES 利用のための認証情報が変更必要
検証内容
アプリケーションから SES へEメール送信をリクエストするには、AWS SDK と SMTP の方法があります。今回は後者の SMTP で検証しています。 独自ドメインの名前解決は Amazon Route 53 は利用せず、外部DNSホスティングサービス「お名前.com」を利用しました。
移行先AWSアカウントでの SES セットアップ
移行先AWSアカウントにて SES をセットアップします。
独自ドメインの承認
送信者Eメールアドレスに利用する独自ドメインを、移行先AWSアカウントの SES で認証して利用可能とします。 AWSマネージメントコンソールより SESコンソールへ移動します。SESコンソールのトップページより「Create identity」をクリックします。
「Create identity」の画面が表示されます。本BLOGの検証では、下記のように設定します。 移行元AWSアカウントと同じ設定とすればOKです。
- Identity details セクション
項目 | 設定値 |
---|---|
Identity type | Domain |
Domain | 独自ドメイン (本例では miyagata.■■■) |
Use a custom MAIL FROM domain | チェックON |
MAIL FROM domain | |
Behavior on MX failure | Use default MAIL FROM domain |
Publish DNS records to Route53 | チェックOFF |
- Verifying your domain セクション
項目 | 設定値 |
---|---|
Advanced DKIM settings - Identity type | Easy DKIM |
DKIM signing key length | RSA_2048_BIT |
Publish DNS records to Route53 | チェックOFF |
DKIM signatures | Enabled |
設定しましたら、画面下部の「Create identity」をクリックします。
次画面では設定した Identity の「Authentication」タブが表示されます。DomainKeys Identified Mail (DKIM) セクションでは「DKIM configuration」が「Pending」となっています。「Publish DNS records」に表示されるDNSレコードを控えます。後で独自ドメインのDNSサーバーに登録します。
画面を下へスクロールします。Custom MAIL FROM domain セクションでは「MAIL FROM configuration」が「Successful」となっている筈です。下部に指示されているDNSレコードは移行元AWSアカウントで SES セットアップした際、すでにDNSサーバーへ登録済みのためです。もし「Pending」の場合はやはり登録が必要なので「Publish DNS records」の表示を控えておきます。
外部DNSホスティングサービスの設定画面などで、SESより指示されたDNSレコードを設定します。下記画面は「お名前.com」の場合です。
私の場合、5分程待つと「DKIM configuration」「MAIL FROM configuration」の両方が「Successful」と表示されました。
サンドボックスの解除
SES はデフォルトではサンドボックス内に配置されており、認証外のメールアドレスやドメイン宛にはメールが送信できません。サンドボックス外とする申請を行います。移行元AWSアカウントの SES でも同様の申請を行っている筈です。
SES コンソールメニューの「Account dashboard」より表示される「Request production access」をクリックします。
「Request production access」の画面が表示されます。サンドボックス外とする申請の内容を記載します。私は下記画面のように申請しました。「Acknowledgement:I agee。。。」をチェックONとして「Submit request」をクリックします。
3分程で「お客様の申請が承認されました。」というメールが届きました。「Account dashboard」に表示されていたサンドボックスの警告もなくなりました。
Eメール送信テスト
この時点で SES よりEメールが送信できるかテストします。
「Verified identities」の画面に「Send test email」ボタンがあるのでクリックします。
「Message details」の画面が表示されます。「Scenario」より「Custom」を選択すると、任意のEメールアドレス宛にテストメールを送信できます。「Email format:Formatted」「From-address」「Subject」「Body」を入力し、「Send test email」をクリックします。
無事、SES よりEメールが送信されました。
この時、受け取ったテストメールのヘッダーを確認し、SPF と DKIM が PASS となっていることを確認します。 GMail だと「メッセージのソースの表示」をクリックすると、下記のように簡単に確認できます。
SMTP 認証情報の生成
「Account dashboard」の「Simple Mail Transfer Protocol (SMTP) settings」セクションを確認します。 「SMTP endpoint」と「STARTTLS Port」の値を確認し、移行元AWSアカウントの SES で利用していた値と一致していることを確認します。「Create SMTP Credentials」をクリックします。
画面指示に従って進めると、SMTP認証に利用するユーザー名、パスワードが表示されます。情報をCSVファイルでダウンロードするボタンもあります。ここで1度しか確認できないので、忘れず控えておきます。同時に「ses-smtp-user.xxxx」というIAMユーザーも作成されます。SMTP 情報情報を削除したい場合には、IAMユーザーを削除します。
以上で 移行先AWSアカウントでの SES セットアップは完了です。
アプリケーションからEメール送信の確認
移行先 AWSアカウントの SES よりEメール送信を行うよう、アプリケーションを修正します。移行元、移行先の SES が同じAWSリージョンであれば、SMTP 認証情報を書き換えるだけの筈です。
本BLOGでは、EC2 Amazon Linux 2の mailコマンドの例としています。homeディレクトリ配下の .mailrc ファイルを修正しました。
.mailrc
set smtp=smtp://email-smtp.ap-northeast-1.amazonaws.com:587 set smtp-auth=login set smtp-auth-user=■■■(書き換え)■■■ set smtp-auth-password=■■■■■■(書き換え)■■■■■■■ set smtp-use-starttls set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb set from=test@miyagata.■■■
mailコマンドでEメール送信を行います。
mail -s "SES Send Mail Test" "■■■■■■@serverworks.co.jp" < mail.txt
無事、移行先AWSカウントの SES よりEメールが送信されました。SPF、DKIM も PASS で問題ありません。
まとめ
ネットで「SES 移行」など検索しても情報がみあたらず困っておりましたが、検証するとそれほど難しくなく対応できることがわかり安心しました。 今回は SMTP を使って検証していますが、AWS SDK の場合は IAMユーザーのアクセスキー・シークレットキー、またはIAMロールの修正対応が必要と考えられます。
本検証では、下記AWS公式ドキュメントを参考にしました。
別の E メール送信ソリューションから Amazon SES への移行 - Amazon Simple Email Service
本BLOGの内容が、皆様の参考になれば幸いです。