はじめに
セルフホストしてるPDSについて、数ヶ月放置してた認証メール送信機能の設定をしました。
せっかくなのでSES(Amazon Simple Email Service)を用いた自ドメインからのメール送信機能を実装したので、その設定内容を備忘がてら残します。
SES初期設定
-
AWSマネジメントコンソール上で"Amazon Simple Email Service"のサービス画面へ行き、[使用を開始]を選択します。
-
[メールアドレス]欄に利用可能なメールアドレスを入力します。(自分のBlueskyアカウントに紐付いてるアドレスが好ましいです)
-
[送信ドメイン]欄に利用したい対象のドメイン、[MAIL FROM ドメイン]に任意のサブドメインを設定します。[MX 障害時の動作]はデフォルトで良いです。
-
ステップ3は特に設定変更せず[次へ]、ステップ4の確認で設定した値に間違いがないことを確認し、[Get started]を押下します。
-
利用可能アドレスの検証をします。項番2で設定したアドレス宛てに「Email Address Verification Request」が飛んできてるはずなので、メールを開き、本文に記載されてるリンクをクリックします。
-
DNSの設定をします。SESの[設定を始める]画面上にある[送信ドメインを検証]の[IDを作成]ボタンをクリックすると、DNSレコードが表示されるので、出てきたものを全てドメインを管理してるDNSに登録します。
SES SMTP設定
-
SES上の左ペインより[SMTP設定]を選択し、表示された画面にて[SMTP認証情報の作成]を選択します。
-
IAMの画面に飛ぶので、全てデフォルト値(特に値変更せず)で[ユーザーの作成]を押下します。
-
IAMリソースが作成され、SMTPユーザ情報とSMTPパスワードが表示されるので、csvダウンロードなりで情報を控えます。 ※SMTPパスワードは作成時のみ取得可能です。紛失するとユーザ作り直しになるのでご注意下さい。
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 エンドポイント" |
$maildomain | SES初期設定で設定した送信ドメイン |
※注意事項※
URI表記での認識となるため、$iam_smtp_username
および$iam_smtp_secret
に記号が含まれている場合はURLエンコードした文字に置き換える必要があります。("+"→"%2b" 等)
最後に、設定反映のためPDSサービスを再起動します。
動作確認
パスワードリセットのリクエストなりで確認コードの発行を実施し、メール飛んできたら成功です。
飛ばない場合は設定内容の確認と、検証されてないメールアドレスへの送信になってないか(※)確認してください。
(※)
SESはデフォルトsandbox環境になってるため、検証済みメールアドレス(初期設定で指定したメールアドレス)以外へのメール送信はできない設定となっています。
認証外アドレスへの送信要件がある場合は、AWSへ本番アクセスリクエストを実施のうえ、制限解除してもらう必要があるのでご留意ください。