その辺にいるITインフラ屋さん

たまーに気が向いた時に適当な事を書く個人の日記みたいなもの。個人で作ったアプリのサポートページとしても利用しています。

メール送信を出来るようにする(AWS SES)

目的

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の設定

おおまかな流れとしては、下記の感じ

  1. ドメインの認証
  2. メールアドレスの受信設定
  3. メール送信用メールアドレスの認証

  1. ドメインの認証

    • SES -> Identity Management / Domains を開く
    • Verifty a New Domain で ドメインを認証させる
    • 問題がなければ数十分後にVerification Status = verifiedとなる
  2. メールアドレスの受信設定

    • Email Receiving/Rule Setsを開く
    • View Active Rule setを押してCreate Ruleする
    • Recipientsでメールアドレスを入力して次にいく
    • Actionsでメールの受信先を指定する
      • Add ActionS3を選ぶ
      • bucket名格納場所のprefixを入力する
      • 他のメールに転送したいときはSNS topicを設定する
    • Rule DetailsRuleの設定を行う
    • Reviewで設定内容を確認してCreate Ruleを行う
    • 利用できるメールアドレスからメールを送って見る
    • 問題なくメール受信できるようならS3にファイルが格納される
      • 人が読むには辛いので、読みやすくする工夫がいりそう。
  3. メール送信用メールアドレスの認証

    • 作ったメールアドレスでメール送信を出来るようにIdentity Management/Email Addressesから認証をする
    • Verifty a New Email Addresseで作ったメールアドレスを入力する
    • Verification Statuspending verificationになると、指定のメールアドレスにメールが飛ぶ(S3に格納される)
    • S3に格納されたメールから認証URLを開く(かなり見辛い)
    • 認証URLを開くと、SMTPでメールが送れるようになる
    • Email Sending/SMTP Settingsでサーバを確認する

SMTPの確認

SMTPを指定できるメーラからメールを送る。今回はWordPressWP Mail SMTPを利用する

  • WP Mail SMTPの設定画面を開く
    • 送信元アドレスをさきほど認証したメールアドレスにする
    • メーラOther SMTPを選択する
    • SMTP ホストで前項で確認したSMTPサーバのホストを指定する
    • SMTP UsernameSMTP Passwordは入手したAWSのキーを設定する(どこで入手できたか忘れた…)
    • 他の設定はよしなに。
    • WP Mail SMTPEmail Testからテストメールを送信してみる。
      • 送信先は利用できるメールアドレスならなんでもよい
    • 問題なくメールが送られたらSMTP設定が出来ている

問い合わせフォームの確認

WP Mail SMTPが問題なく設定できているようなら、Contact Form 7で作った問い合わせフォームから無事にメールが飛ぶようになります。めでたしめでたし。