背景
AWS Lightsailを使用してWordPressを構築したところ、管理者メールアドレスをデフォルトのuser@example.comから変更できない。正確に言うと、変更後の承認が、本来は新しいメールアドレス(自分の場合gmailアドレス)に送信されるはずだが、送信されない。(「新しいアドレスは確認が完了するまで有効化されません」のままになる)
結論は仕様。デフォルトではメール機能が有効になっていない。これを有効化するのが今回のお題。ちなみに、管理者メールアドレスを変更したいだけなら、
http://ワードプレスサイトのURL/wp-admin/options.php
にアクセスすれば書き換えられる。ただ、メールが機能しないと他にもいろいろ面倒そうなので、有効化する。
大まかな流れ
公式で手順を公開している。ただこの通りに行かないのとわかりにくいので、できるだけシンプルに記載しておく。
- Amazon SESで、SMTPサーバのアドレスやTLS情報、SMTPクレデンシャルを確認する
- Amazon SESで、新しい管理者メールアドレスを、検証済みにする
- WordPress側で、プラグインを使ってSMTPを有効化し、SMTPサーバの情報を設定する
Amazon SESとは
AWS内で使用できるメールサービス。特に何もしなくてもデフォルトで自分が使用できるSMTPサーバは存在し、その情報はすぐ入手できる。
ただし、最初はSandbox状態になっていて、
- 検証済のID(ドメイン、メールアドレス)にしかメールできない
- メール送受信の量に制限がある
という制約がある。Sandboxから出すこともできるが、悪用される恐れもあるため、今回はそのまま使用する。
SMTPサーバのアドレスやTLS情報、SMTPクレデンシャルを確認する
SESのページから、「SMTP設定」に進む。ここにSMTPサーバのアドレスは表示されているので記録しておく。
「自分の SMTP 認証情報を作成する」を選択する。ここでは基本的に認証用にユーザを1つ作成することになる。ユーザ名はデフォルトでよい。作成後ユーザ名とパスワードを表示させて記録するか、CSVでダウンロードしておく。
新しい管理者メールアドレスを検証済みにする
SESのページから、「検証済みID」->「IDの作成」と進む。
IDタイプを「Eメールアドレス」として、設定したい管理者メールアドレスを指定する。ID作成すると、対象のアドレスに確認メールが飛ぶので、URLをクリックしてVerifyしておく。
上記リンクの公式では、いきなりドメインの検証となっているので混乱する(情報が古い?)が、実際にはメールアドレスタイプのIDを検証しないといけないということ。
WordPress側でSMTPを有効化
WP SMTP Pluginを有効化する。自分は最初からインストールはされていた。
SMTP Mailerとしては、Other SMTPを選択する。選択肢にAmazon SESもあるが、Pro限定(ライセンス購入が必要)となっている。実際にはProでなくても、Other SMTPとすることで使用可能。
次の「Configure Mailer Settings」で、先ほど記録したSMTPホストや、SMTPユーザ名、パスワードを入れる。Fromのメールアドレスはなんでもよいはずだが、いったん「admin@<自分のドメイン>」としている。
設定後、WP Mail SMTPプラグインの設定画面から、Email Testを選び、自分のgmailアドレス宛に送信すると、無事送られた。
所感
相変わらずAWS関連はマニュアルが整備されているけど、わかりにくい…