skillup

技術ブログ

メール

Amazon SESについて(Route53登録→SESで受信→S3で保存)

投稿日:2019年6月9日 更新日:

本日はAWSのSESのメモ。

2019年はJavaScriptとAWSを勉強する、と心に決め、JavaScriptの方は色々勉強しましたが、AWSの方が手付かずでした。

インフラ系はここ2年ぐらい進歩していないのでしっかりと勉強したいです。AWSは業務の方ではやっているのですが、リーダーのかたが作った環境に入っているだけで根本的なところが全然理解できていません・・(汗)

まだまだ調べ途中ですが、自分への備忘録として記述しておきます。

AWSのSESとは?

SESですが、AWSのメールサービスになります。

簡単な特徴としては下記のようなところでしょうか。

  • 配信数、クリック率などの数値を取ることが比較的簡単(管理画面で見れる)
  • AWSのSDKからメール送信のプログラムを簡単に送ることができる
  • 認証方法が豊富
  • サーバーの構築などは不要
  • 学習コストは比較的高め

実際にSESを使って送受信ということになりますと、当然SES単独では使用できず、S3やRoute53などAWSの他のサービスとの連携も必要になってくるかと思います。

参考リンク

AWSのSESを利用してメール送信

自動でメール配信をしたい!Amazon SESで効率的なメール配信をしよう!

メール受信について

元々は送信しかなかったようですが、今では送受信共にできるようです。

まずは受信に関して。

細かい設定などに関してはリンク先の方が優れていると思うので、大まかな流れについて書きます。

必要なプロセス

  1. Route53にてドメイン登録
  2. SESの設定画面にてRecordSetの登録
  3. SESのRuleSetの登録
  4. 別サービス側での処理(S3やLamdaなど)

Route53にてドメイン登録

まずドメインの登録です。

お名前やムームーなど他のレジストラのドメインを取っていてももちろん大丈夫かと思いますが、当然同じサービスを使っていた方が設定が楽ですので、私は新たにとりました。

ここら辺は一般のレジストラでドメインを取得する流れと一緒だと思います。

参考リンク

AWS Route53でドメインを取得する

 

SESの設定画面にてRecordSetの登録

ドメインを登録した後はDNSへの登録をしなくてはいけません。

今までWEBしかやったことなかったんでここら辺は知識がいい加減ですね・・

と言ってもAWSの場合は、ほぼ自動でてきます。

SESの画面からドメインを認証させることができます。

Gmail + AWSで独自ドメインのメールを受信する

↑この記事の「AmazonS3でメールを受け取れるようにする」のRecordSetの登録までが参考になる思います。

SESの画面でDomainsを選んで、「Verification Status」「DKIM Status」がverified「Enable for Sending」がYesになっていればOKです。

またRoute53の画面で「ホストゾーン」を選び、対象のドメイン名にMXタイプのレコードセットが登録されていればOKです。

他のレジストラでドメイン登録している場合はRoute53に直接レコードセットを登録することになります。

また、DNSの仕組みなどは下記リンクが非常にわかりやすいです。

DNSレコードってなんだ?

DNSとは? 全体像とDNSレコードの種類

SESのRuleSetの登録

DNSを設定したら、SESでメールを受信した時の動きを制御します。

これをSESではRuleSetというらしく、受信した後

  • S3に保存
  • SNSに通知
  • Lamdaで処理

など通知をトリガーにして様々なサービスと連携させることができます。

具体的な設置などは下記のリンクがわかりやすいかと思います。

[新機能]Amazon SES でメール受信が出来るようになりました!

別サービス側での処理(S3やLamdaなど)

例えばS3に登録する場合ですが、

SESからS3へアクセスさせる時ですが、そのままでは「could not write」などみたいなエラーが出て書き込みをすることができません。

そのため、S3に入り、アクセス権限→パケットポリシーというところで下記のようなコードを保存する必要があります。

ここまでやれば後はメールを送信した時にS3にメールの生データが入っていると思います。

私は実務ではここからメールパーサーを使ってデータをとり出していましたが、このままでは使えない(メールとして見れない)ので(注1)実際には転送するのが一般的かと思います。それらの設定についてはおって調べ中です。

注1 SESのメールを直接メールクライアント(例えばOutLook)で見ることはできないようです。

実際にメールを転送して一般のメールクライアントでみる方法はこちら
Amazon SESでの受信→S3→Lambdaでのメール転送

-メール
-,

執筆者:


  1. […] Amazon SESについて(Route53登録→SESで受信→S3で保存) […]

  2. […] Amazon SESについて(Route53登録→SESで受信→S3で保存) […]

  3. […] Amazon SESについて(Route53登録→SESで受信→S3で保存) […]

comment

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

関連記事

no image

POP3を使ったメール受信

メールの送信と比べると、プログラムで描く頻度は少ないですが、メールの受信について。 Contents1 POP3サーバー2 プログラムにてPOP3サーバーと通信3 PHPにてメールを取得する場合 PO …

no image

メールの文字化け対策

メールの文字コードに関して、色々ごまかしながらやってましたが真面目に取り組む必要があり、ここでメモ。 Contents1 前提条件2 ヘッダー部分3 メール本文3.1 Content-Transfer …

no image

Amazon SESでのメール送信

前回、AWSでのメール受信についてかいたので今回はメール送信に関して。 送信の場合、下記のような流れになります。 Contents1 Route53でドメイン登録し、MXレコードを登録している場合2 …

no image

Swift_Mailer(PHPのメール送信。Laravelに入っているライブラリ)

Laravelでメールを送信することがあったんですが使っていたライブラリがSwift_Mailerだったので、ここにメモ。 Swift Mailerのインストール&メールを送信する 今回最初 …

no image

Dockerでのメール送信に関して

Docker内でメール送信したいときなど。 通常であればWebコンテナ用にphp-7.4などのapache(or nginx)だけの最小構成になっていることがほとんどだと思いますので、メール送信ができ …

アーカイブ