目的
WordPressで問い合わせフォームを作ろうとして、Contact Form 7プラグインを導入しました。これが、送信元のメールアドレスがWordPress自体のドメインでなければならないという制約があったので、独自メールアドレスを利用できるSMTPサーバが必要になりました。smtpサーバ構築しようと思っていたのですが、心が折れたのでAWS SESを利用してみました。個人的メモなので、細かいところの説明はしません。
メールを送信するだけの設定でいっかと思ってましたが、メール受信も行う設定もしています。(受信メールはスマートではない)
構築した内容
- 独自ドメインからSMTPを利用したメールを送信出来る
- AWS S3に受信メールを保管する
- せっかくなので、受信したメールを他のメールアドレスに転送する
- メールはオレゴンリージョンから飛びます(SESが日本にないので…)
構築手順
お名前.comでもRoute53でも自分でDNS設定が出来ればなんでもいいです。私はxdomain使ってます。簡易メール機能があるので、正直そっちでもよいのですが、何かと不便なので独自構築の道を選びました。
Route53とxdomainを連携する
SESの設定はRoute53を利用していると楽なので、Route53のネームサーバを読み込めるようにしました。
- AWS側の作業
- Route53でHosted Zoneを作る(mayuki12.com)
作成するドメイン名と同じ。
- NSレコードにある4つのドメインをコピーする
- xdomain側の作業
- 【ドメイン管理のネームサーバの確認・変更】を開く
- さっきコピーしたドメインを貼り付ける
Route53にMXレコードを追加する
SESの設定
おおまかな流れとしては、下記の感じ
- ドメインの認証
- メールアドレスの受信設定
- メール送信用メールアドレスの認証
ドメインの認証
SES -> Identity Management / Domains を開く
Verifty a New Domain で ドメインを認証させる
- 問題がなければ数十分後に
Verification Status = verifiedとなる
メールアドレスの受信設定
Email Receiving/Rule Setsを開く
View Active Rule setを押してCreate Ruleする
Recipientsでメールアドレスを入力して次にいく
Actionsでメールの受信先を指定する
Add ActionでS3を選ぶ
bucket名と格納場所のprefixを入力する
- 他のメールに転送したいときは
SNS topicを設定する
Rule DetailsでRuleの設定を行う
Reviewで設定内容を確認してCreate Ruleを行う
- 利用できるメールアドレスからメールを送って見る
- 問題なくメール受信できるようなら
S3にファイルが格納される
- 人が読むには辛いので、読みやすくする工夫がいりそう。
メール送信用メールアドレスの認証
- 作ったメールアドレスでメール送信を出来るように
Identity Management/Email Addressesから認証をする
Verifty a New Email Addresseで作ったメールアドレスを入力する
Verification Statusが pending verificationになると、指定のメールアドレスにメールが飛ぶ(S3に格納される)
- S3に格納されたメールから認証URLを開く(かなり見辛い)
- 認証URLを開くと、SMTPでメールが送れるようになる
Email Sending/SMTP Settingsでサーバを確認する
SMTPを指定できるメーラからメールを送る。今回はWordPressのWP Mail SMTPを利用する
WP Mail SMTPの設定画面を開く
送信元アドレスをさきほど認証したメールアドレスにする
メーラでOther SMTPを選択する
SMTP ホストで前項で確認したSMTPサーバのホストを指定する
SMTP UsernameとSMTP Passwordは入手したAWSのキーを設定する(どこで入手できたか忘れた…)
- 他の設定はよしなに。
WP Mail SMTPのEmail Testからテストメールを送信してみる。
- 問題なくメールが送られたらSMTP設定が出来ている
問い合わせフォームの確認
WP Mail SMTPが問題なく設定できているようなら、Contact Form 7で作った問い合わせフォームから無事にメールが飛ぶようになります。めでたしめでたし。