WordPressとAWS SESを連携してみた

WordPressとAWS SESを連携してみた

前回投稿(AWS SESを有効化してみた)の続き。

前回はAWS SESの有効化をしたところで断念してしまったので、今回本題となるWordpressとSESの連携設定を行うことにします。

SMTP認証情報の発行

WordPressにSESを使用するように設定するための認証情報を発行する。

1.SESの画面の左ペインにある「SMTP設定」から「SMTP認証情報の作成」をクリック。
(IAMの方でも作成可能だが、こちらの方が推奨とのことで。)

2.以下の通り値を設定して「次へ」をクリック。

項目備考
イングレスエンドポイント名任意の値を設定自動投入されているものをそのまま使用してもOK
認証タイプパスワードSecretsManagerでシークレット情報を管理したいなら「シークレット」を選択してもOK
パスワード任意の値を設定
ただし特段事情が無いなら「自動生成」することをおススメする
後段で認証情報をDLできるのでここではメモっておかなくてOK

3.以下の通り値を設定して「次へ」をクリック。

項目備考
トラフィックポリシー
トラフィックポリシー名
新しいトラフィックポリシーを作成する
→ 任意の名前を設定
ルールセット
ルールセット名
新しいルールセットを作成する
→ 任意の名前を設定
IAMロール「新しいロールの作成」から任意の名前でロールを作成して設定
ネットワークタイプパブリックプライベートは使用不可のため注意。
プライベートに設定した場合、VPCエンドポイント(AWS PrivateLink)経由で接続することになるが、AWS Lightsailインスタンスはユーザが管理できるVPCとは異なる特別なVPC環境下に構築されるため、Wordpressから接続できなくなる。
イングレスエンドポイントIPアドレスタイプIPv4デュアルスタックでも動くけど、ほぼメリットない、というかIPv6を使うことが無いのでIPv4のままにしておくのがおススメ。

4.内容を確認して「認証情報を作成する」をクリック。

5.画面が遷移しステータスが「プロビジョニング…」となったらしばらく待つ。(数秒~数十秒くらい)
ステータスが「アクティブ」になったらCSVファイルをダウンロードして安全な場所に保管しておく。
(画面にある通り、パスワードはこのCSVにしか記載されておらず、画面遷移すると二度と表示されないため忘れずにダウンロードしておくこと

ここまでくればSMTP認証情報の発行完了。

WordPressの設定

WordPressにメール送信機能を具備するにあたって、プラグインはWP Mail SMTPを使用する。
なお、有料ライセンスは使用しない方向で。ライセンスを買うとSESとの連携はもっと楽にできるらしいが、貧乏社会人にはツラいっす。。。

と、まあそれはともかく。Wordpressにて設定を進めていく。
なお、プラグインの導入については(そんなに難しくないので)説明を割愛する。

以降WP Mail SMTPの設定にフォーカスして話を進めていく。

1.セットアップウィザードを開いて、「始めましょう」をクリック。
開かない場合はWordpress管理画面の左ペインにある「WP Mail SMTP」の「設定」画面に「セットアップウィザードを起動」ボタンがあるのでそこから。

2.SMTPメーラを「その他のSMTP」を選択して続行。
(一応Amazon SESも選択肢にはあるものの…PROって書いてある通り有料ライセンスが必要なので断念。)

3.前項でダウンロードしたCSVファイルを参照しながらメーラの設定を投入する。

項目備考
SMTPホストCSVの「SMTP Endpoint」を設定
暗号化TLS
SMTPポート587CSVの「Port」と一致することを確認
認証を有効化チェックを付ける
SMTPユーザ名CSVの「Username」を設定Base64の方ではないので注意
SMTPパスワードCSVの「Password」を設定Base64の方ではないので注意
送信者名任意の名前を設定
送信者名を強制使用任意で設定他プラグインの設定に影響されて予期せぬ値が設定されるのを防ぐためONにしておくのがおススメ
送信元メールアドレスSESで登録した時に設定したカスタムMAIL FROMドメインを設定この件は前回投稿(AWS SESを有効化してみた)を参照。
詳細は後述。
送信元メールアドレスを強制使用任意で設定他プラグインの設定に影響されて予期せぬ値が設定されるのを防ぐためONにしておくのがおススメ

4.有効にしたい機能を適宜選択する
一部は有料ライセンスが必要なのでご注意ください。。。

設定については、「メールの到達性の向上」「メールエラー追跡」はチェックを付けておくのがおススメ。それ以外はご自由にどうぞ。

5.WP Mail SMTPからアドバイスを受けたいかを設定する
メールの到達性などを鑑みて色々アドバイスをしてくれるみたい…?
必要に応じて適宜設定すれば良さそう。

とはいえ個人ブログで、しかも送信先が作成者(Redherring)自身しかないので別に不要かと思いスキップすることに。

6.有料ライセンスのライセンスキーを聞かれるのでスキップ
有料ライセンスあるよ、ってお金持ちな方はここで連携すれば良さそう

設定のトラブルシューティング。。。

これで設定完了かと思ってたらなんかエラーになっちゃった。。。
とりあえず画面の指示に従ってトラシュ開始。

テストメールは届いたものの、なんかSPFが正しく設定されてないって言われてるなぁ…

Geminiに相談しつつ色々探してみてRoute53の設定が不一致になってることに気づいた。
(Route53のスクショはちょっとご勘弁を。あんまり公にするのはやめた方が良さげ&レコードが多すぎて一々ぼかしを入れるのが大変なのでw)

前回投稿時にSESの設定を行ったが、カスタムMAIL FROMドメインとしてサブドメインを発行し、それに基づいてSPFレコードを登録してた。
つまり、設定したカスタムMAIL FROMドメインと同じ値を「送信元メールアドレス」に設定する必要がある。いや、前項で設定したとき全然気にしてなかったw

もう一度セットアップウィザードを使わなくても、「WP Mail SMTP」の「設定」から送信元メールアドレスを編集できるので手動で変更し、カスタムMAIL FROMドメインと一致させる。

これで大丈夫だろう、ということでもう一度テストメール送信。
「WP Mail SMTP > ツール」に「メールテスト」というタブがあるのでそこから任意のアドレスにテストメールを送信できる。

で、テストメールを送信したら今度はDMARCが設定されてないって警告出てきた…
(あれー設定しなかったっけ…?)

もう一度Route53とにらめっこ。

よくよく見るとDMARCレコードがサブドメイン(カスタムMAIL FROMドメイン)ではなくて、メインドメインについてる。(_dmarc.hoge.example.comじゃなくて_dmarc.example.comになってる)
(この設定はSESの画面から自動投入したものだけどカスタムMAIL FROMドメインまでは考慮してくれないっぽい?)

ということでレコード名が”_dmarc.hoge.example.com”になるようにRoute53を修正。
TTLとして設定されている時間だけ待ってから再度テストメールを送信してみる。

さっきみたいな「ドメインチェック結果」の画面ではなくて、いきなり有料ライセンスへのアップグレード案内が出てきたからびっくりしたけど、「Test email sent successfully」って書いてあるから大丈夫っぽい。
(広告出すのは良いけど。SPF/DMARCがちゃんとPASSしてるのかくらいは結果として書いてほしかった…)

とまあ色々トラブったもののこれで正常に設定出来た!


これでWordpress管理画面のパスワード忘れても再設定できる…いや忘れるつもりは無いけどもw
早速管理者のメルアドを変更しておいた。いやメールが送れるって素晴らしい(^^♪

ということで今回はここまで。