Amazon SESを用いたPDS メール認証の実装

@ise-ptk.v-laboratory.com

はじめに

セルフホストしてるPDSについて、数ヶ月放置してた認証メール送信機能の設定をしました。
せっかくなのでSES(Amazon Simple Email Service)を用いた自ドメインからのメール送信機能を実装したので、その設定内容を備忘がてら残します。

SES初期設定

  1. AWSマネジメントコンソール上で"Amazon Simple Email Service"のサービス画面へ行き、[使用を開始]を選択します。

  2. [メールアドレス]欄に利用可能なメールアドレスを入力します。(自分のBlueskyアカウントに紐付いてるアドレスが好ましいです)

  3. [送信ドメイン]欄に利用したい対象のドメイン、[MAIL FROM ドメイン]に任意のサブドメインを設定します。[MX 障害時の動作]はデフォルトで良いです。

  4. ステップ3は特に設定変更せず[次へ]、ステップ4の確認で設定した値に間違いがないことを確認し、[Get started]を押下します。

  5. 利用可能アドレスの検証をします。項番2で設定したアドレス宛てに「Email Address Verification Request」が飛んできてるはずなので、メールを開き、本文に記載されてるリンクをクリックします。

  6. DNSの設定をします。SESの[設定を始める]画面上にある[送信ドメインを検証]の[IDを作成]ボタンをクリックすると、DNSレコードが表示されるので、出てきたものを全てドメインを管理してるDNSに登録します。

SES SMTP設定

  1. SES上の左ペインより[SMTP設定]を選択し、表示された画面にて[SMTP認証情報の作成]を選択します。 image

  2. IAMの画面に飛ぶので、全てデフォルト値(特に値変更せず)で[ユーザーの作成]を押下します。

  3. IAMリソースが作成され、SMTPユーザ情報とSMTPパスワードが表示されるので、csvダウンロードなりで情報を控えます。 ※SMTPパスワードは作成時のみ取得可能です。紛失するとユーザ作り直しになるのでご注意下さい。 image

PDS側の設定

PDSがホストされてるサーバにログインし、/pds/pds.envを以下の通り編集します。

_SMTP_USERNAME=$iam_smtp_username
_SMTP_PASSWORD=$iam_smtp_secret
_SMTP_HOST=$smtp_host
PDS_EMAIL_SMTP_URL=smtps://${_SMTP_USERNAME}:${_SMTP_PASSWORD}@${_SMTP_HOST}
PDS_EMAIL_FROM_ADDRESS=no-reply@$maildomain

以下の項目は適宜実際の値に置き換えて設定してください。

項目設定する値
$iam_smtp_username上記で取得した"SMTPユーザ情報"
$iam_smtp_secret上記で取得した"SMTPパスワード"
$smtp_host[SES]-[SMTP設定]に表示されてる"SMTP エンドポイント"
$maildomainSES初期設定で設定した送信ドメイン

※注意事項※
URI表記での認識となるため、$iam_smtp_username および$iam_smtp_secretに記号が含まれている場合はURLエンコードした文字に置き換える必要があります。("+"→"%2b" 等)

最後に、設定反映のためPDSサービスを再起動します。

動作確認

パスワードリセットのリクエストなりで確認コードの発行を実施し、メール飛んできたら成功です。
飛ばない場合は設定内容の確認と、検証されてないメールアドレスへの送信になってないか(※)確認してください。

(※)
SESはデフォルトsandbox環境になってるため、検証済みメールアドレス(初期設定で指定したメールアドレス)以外へのメール送信はできない設定となっています。
認証外アドレスへの送信要件がある場合は、AWSへ本番アクセスリクエストを実施のうえ、制限解除してもらう必要があるのでご留意ください。

ise-ptk.v-laboratory.com
いせ

@ise-ptk.v-laboratory.com

PDS建ててみたアカウント

Post reaction in Bluesky

*To be shown as a reaction, include article link in the post or add link card

Reactions from everyone (0)

Amazon SESを用いたPDS メール認証の実装 | いせ | WhiteWind blog