AWS

Laravel6 AWS SES連携 + Bounce, Complaint対応 その①

AWS

 

 

私たちが達成すべきゴール

 

  • Laravel → SES → SNS → SQS → Laravel → DB

 

送信処理

  1. LaravelからSESを利用してメール送信する
    →正常にメール送信出来たらクローズ
  2. SESがバウンスメールを検知してSNSに発火
  3. SNSからSQSにバウンスメール情報であるJSONを登録

受信処理

  1. LaravelからSQSをポーリングしてキューが入っていないか確認しつづける
  2. LaravelからSQSにキューがあることを検知する
  3. データベースに処理したキューと同一のMessageIdがないか確認する
    ●データベースに同一のMessageIdが存在しない
    → データベースに登録してキューを削除
    ●データベースに同一のMessageIdが存在する
    →何も処理をせずにキューを削除
    // SQSの標準キューは同一のキューを複製して送信する場合があるのが仕様

 

バックナンバー

 

SESの設定

東京リージョンにSESはないのでバージニアで設定
https://console.aws.amazon.com/ses/home?region=us-east-1

 

  • Domain: <ドメイン>
  • Generate DKIM Settingsにチェック

Verify This Domainをクリックします。

 

 

  • 1番目のオレンジ枠:Domain Verification Record
  • 2番目のオレンジ枠: DKIM Record Set
    スクロールで他に複数あるので注意

 

 

Route53

 

アクセスする
https://console.aws.amazon.com/route53/home?region=us-east-1#hosted-zones:

 

【ホストゾーン】をクリックして、【ホストゾーンの作成】をクリックします。

 

 

SPF設定

 

 

SPFが登録された。

 

 

DKIM

DKIMも同じように登録していきます。

 

 

DKIMを3レコード追加しました。

SPFと合わせて設定できました。

 

バリュードメイン設定

ドメインの管理をRoute53で統一したいので設定します。

NSレコードをメモします。

 

バリュードメイン管理画面

設定します。

 

 

Laravel+SESに必要なライブラリをインストール

 

これらのライブラリをインストールしていることが前提です😆

aws-sdk-php

 

guzzlehttp

 

laravel-sqs-fifo-queue

AWS SQSのFIFOを利用するのでlaravel-sqs-fifo-queueが必要

// 標準のQueueだと必要ないです。

  • 2回届いたりバグが怖いのでSQS FIFOで
  • FIFOは300/秒の性能
    それ以上の性能を求める場合は標準キュー採用を検討

 

 

SES操作用キーの取得

 

グループの作成

【グループ】をクリックして、【新しいグループの作成】をクリックします。

 

 

グループ名を”SES-Admin”に設定して、【次のステップ】をクリックします。

 

検索欄に”SES”を入力して、”AmazonSESFullAccess”にチェックをする。

【次のステップ】をクリックします。

 

 

 

 

ユーザの作成

【ユーザー】をクリックして、【ユーザーを追加】をクリックする。

 

  • ユーザ名:ses-admin
  • アクセスも種類:プログラムによるアクセス

【次のステップ:アクセス権限】をクリックします。

 

【ユーザをグループに追加】を選択し、”SES-Admin”にチェックを入れて、【次のステップ:タグ】をクリックします。

 

【次のステップ:確認】をクリックします。

 

【ユーザの作成】をクリックします。

 

アクセスキーIDとシークレットアクセスキーをメモしてください。

次に使いますよ!

 

 

コンフィグの設定

 

config/services.php

上記に設定

 

.env

 

 

設定反映

 

送信先アドレス登録

 

 

 

認証リンクをクリックします。

 

検証が成功しました。

これでこのメールアドレスからメール送信ができるようになります。

 

テスト送信

 

 

認証された送信先メール宛に送信テストを行います。

 

 

Gmailで受信できたので、【メッセージのソースを表示】をクリックします。

 

SPFとDKIMを確認してPASSになってればOK。

 

Laravelからのメール送信

 

make:mailを利用します。

ActivationMailableクラスの作成

 

app/Mail.ActivationMailable.php

 

 

 

登録用コントローラ

 

app/Http/Api/V1_0/RegisterController.php

 

ルーティング

 

routes/api.php

 

メソッド:POST

  • http://localhost/api/V1_0/users/me

JSON

 

Gmailで確認

 

SES経由であることが確認できました😊

 

 

その②へ

Laravel6 AWS SES連携 + Bounce, Complaints対応 その②

 

Laravel6 AWS SES連携 + Bounce, Complaint対応 その①”への1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)