AWS

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

AWS

 

その①でLaravel + SESのメール認証までできました😊

 

バックナンバー

 

その②ではAWS SESを利用する上で必須となる、Bounce対策を行っていきます。

 

バウンス用のアドレスにメールを送る

  • バウンス
    bounce@simulator.amazonses.com
  • 苦情
    complaint@simulator.amazonses.com

 

 

SNSトピックの作成

 

https://console.aws.amazon.com/sns/v3/home?region=us-east-1#/topics

 

【トピックの作成】をクリックします。

 

名前:SES-Bounce-Notify

と入力します。

【トピックの作成】をクリックします。

 

 

トピックが作成できました😆

ARNの値をメモしてください、SQSの設定で利用します。

 

SQSの作成

  • キュー名:SESBouceMailQueue
  • キューのタイプ:標準キュー

【キューのクイック作成】をクリックします。

 

【アクセス許可】のタブをクリックして、【アクセス許可の追加】をクリックします。

 

  • プリシンパルの項目:全員にチェック
  • アクション:SendMessageにチェック

 

【条件の追加(オプション)】をクリックします。

 

 

aws:SourceArn: <SNSで作成したトピックのarn名>

SNSのARNを入力して、【アクセス許可の追加】をクリックします。

 

 

SESのNotification設定

【Domains】から設定したいドメインをクリックします。

 

 

【Notifications】をクリックします。

 

 

【Edit Configuration】をクリックします。

 

BounceにSNSで作成したトピック名を指定し、【Save Config】をクリックします。

 

 

SNSのサブスクリプション設定

SES-Bounce-Notifyトピックにて、【サブスクリプションの作成】をクリックします。

 

 

  • プロトコル:Amazon SQS
  • エンドポイント:SQSのARN名

【サブスクリプションの作成】をクリックします。

 

Bounceメールのテスト

ユーザ登録APIを叩いてSESにメール送信します。

指定しているメールアドレスはSESのBounceシミュレータであるメールアドレスを指定しるので確実にバウンスされます。

 

SQSを確認する

利用可能なメッセージに1になっています。連携に成功しています。

 

QUEUEの隙を見逃すな!

Laravelから無防備を晒しているSQSのキューの隙をついてキューを首を叩き落とせ。

キューに保存されているバウンスメールアドレス情報をデータベースに登録しろ!

 

SQSに入っているJSONデータ

これをうまいこと料理しよう。

 

 

コンフィグの設定

標準キューを利用

.env

  • QUEUE_CONNECTION=sqsになっています。
  • SQS_PREFIX + SQS_QUEUE = “SQSのキューURL”になるようにしてください😆

 

config/queue.php

 

コンフィグの設定反映

 

 

※FIFOキューを利用する場合

一応書いておきます。

.env

config/queue.php

コンフィグの設定反映

 

 

 

 

コマンドを作る

 

 

 

app/Http/Console/Commands/registerBounceEmailAddressFromSQS.php

 

コマンドの実行

 

 

SQSのキューは0に変わってるな!

DBにも登録されてるな!

 

はい、できました!😊

お疲れ様でした。

 

 

 

そんなんじゃねぇだろ?

忘れるな!😤

  • バウンスキューをDBに登録すること
  • メール送信時にバウンスされたメールアドレスではないか?確認してからSESでメール送信すること。

これだ。

ぼぅっと生きてんじゃねぇ!🐱

 

バウンスされたメールアドレスを保存するテーブル bounce_emailsを作成

 

database/migrations/xxxxx_create_bounceEmails_table

 

app/Http/Models/BounceEmail.php

 

マイグレーションの実行

 

キューの受信処理

 

app/Http/Console/Commands/registerBounceEmailAddressFromSQS.php

 

バウンスメールアドレスに送信を行い、キューを貯めよう。

そして…

コマンドの実行

ちゃんとデータベースに登録されていますか?

確認しよう。

 

メール送信処理

 

app/Http/Console/Commands/RegisterController.php

 

バウンスメールの登録と送信処理がうまくできていたら終わりです😊

お疲れ様でした〜。

 

 

 

 

生殺与奪の権を他人に握らせるな!!

コマンド状態でのキューのポーリングでは作成したコマンドの実行を止めたら、キューの処理が止まってしまう。

そんなことで守ったつもりか?🐱

 

Dockerfileを作成する

 

このphp artisan command:ほにゃららコマンドを実行し続けるワーカーとなるコンテナをこしらえるのだ!

 

Dockerは嫌なんだよな…って人はsupervisordを利用しよう。EC2を1台で動かすならsupervisordでしょう。

私が今回DockerでやるのはAWS ECS Fargateで動かすことが前提で作っているからなのだ🐱

docker-files/php-ses-bounce-queue-listener/Dockerfile

 

cat docker-compose.yml

 

 

これでSQSのキューを処理するリスナーが自動起動します😊

 

その③へ

 

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

 

 

 

[YouTube] IT速報 よわよわエンジニア優さん

5年後のキャリアについて 現役WEBエンジニアが語る

童貞を救いたい ナンパのすすめ 最強ナンパ師優さん

恥ずかしい?それ、ゴミだからwww

失恋の話 ニューハーフだけど彼氏になった話 ナンパ再開で思うこと

LGBTの就職戦略 トランス・X ジェンダー向け ( トランスジェンダー)

フリーターから正社員 インフラは2か月!

コメントを残す

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

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