目的
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
で作った問い合わせフォームから無事にメールが飛ぶようになります。めでたしめでたし。