[Auth0] メールプロバイダーとして Amazon SES を使用しメール配信制限を解除する

2021.06.20

こんにちは、CX事業本部の若槻です。

認証管理プラットフォームAuth0では、既定ではユーザーへのトランザクションメールの配信にAuth0ビルトインのメールプロバイダーが使用されますが、その場合はドキュメントによるとメール配信に関して下記のような制限が適用され、本番環境での利用は非推奨とされています。

  • メールテンプレートのカスタマイズ不可
  • 送信元アドレス(no-reply@auth0user.net)のカスタマイズ不可
  • 配信レート上限10通/1分

これら制限の回避方法としては、外部のメールプロバイダーを使用する方法が用意されています。

今回は、Auth0のメールプロバイダーとしてAmazon SESを使用しメール配信制限を解除してみました。

やってみた

前提

  • 送信元メールアドレスに使用したいドメインがAmazon SESで承認されていること。

設定方法については下記の[ドメインのSESでの承認]をご確認ください。

IAM Userの作成

SESでメールを送信が可能なIAMポリシーを作成します。

policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ses:SendRawEmail",
        "ses:SendEmail"
      ],
      "Resource": "*"
    }
  ]
}
% POLICY_NAME=auth0-send-email-policy
% POLICY_FILE_PATH=policy.json
% aws iam create-policy \
  --policy-name ${POLICY_NAME} \
  --policy-document file://${POLICY_FILE_PATH}

IAMユーザーを作成して先ほどのポリシーをアタッチします。

% USER_NAME=auth0-send-email-user
% AWS_ACCOUNT_ID=<アカウントID>
% aws iam create-user --user-name ${USER_NAME}
% aws iam attach-user-policy \
  --user-name ${USER_NAME} \
  --policy-arn "arn:aws:iam::${AWS_ACCOUNT_ID}:policy/${POLICY_NAME}"

作成したIAMユーザーのAPIキーを発行し、アクセスキーIDとシークレットアクセスキーを控えます。

% aws iam create-access-key --user-name ${USER_NAME}

Auth0の設定

Auth0 管理ダッシュボードにログインしたら、サイドバーメニューより[Branding]-[Email Provider]を開き、[Use my own email provider]を有効にして、[Email Provider]の一覧からAmazon SESを選択します。

ページを下にスクロールして[Amazon SES Settings]で先ほど確認したAWSリソースの情報を下記の通り指定し、[Save]をクリックして設定を保存します。

  • From:送信元の名前とメールアドレス
  • Access Key Id:IAM UserのアクセスキーID
  • Secret Access Key:IAM Userのシークレットアクセスキー
  • Region:使用するAmazon SESのリージョン

動作確認

先ほどのページの[Send test email]をクリックします。

送信されたテストメールが受信できました。

実際のトランザクションメール(下記はパスワード変更要求メール)もちゃんとAmazon SES経由で送信されていますね。

おわりに

Auth0のメールプロバイダーとしてAmazon SESを使用しメール配信制限を解除してみました。

Auth0を利用した商用システムを構築する上ではほとんどの場合に必須設定となるので忘れずに行いたいですね。

参考

以上