AWS SES + SNS メールイベントの通知について(前編)

Posted on 2018年11月19日 Under AWS 0 Comments
Pocket
LINEで送る

ses

 

何か最近寒くなってきたなと思っていると今年もそろそろ終わりか…という雰囲気になってきましたね!
フクロウラボ若杉です!これからしばらくAWS関連について書いていこうかと思っています。

今回は、SES(Simple Email Service)でのメール送信から、送信したメールに対するイベントをSNS(Simple Notification Service)を使って通知するまでについて書いてみたいと思います。

 

SESの設定について

2018年11月現在でも、使用できるリージョンは、

  • US East (N. Virginia):米国東部(バージニア北部)
  • US West (Oregon):米国西武(オレゴン)
  • EU (Ireland):EU(アイルランド)

しかありません。残念ながら、まだ、東京リージョンには対応していません。

対応リージョン

 

 

ドメインの認証

SESを始めるためには、まずドメインの認証を行います。

Domains の Verify a New Domainボタンを押してドメインの認証を行います。

Verify a New Domains

 

モーダルでVerify a New Domeinのウィンドウが表示されますので、Domain:に今回メール送信で使いたいドメインを入力します。

また、「Generate DKIM Settings」という項目にチェックを入れておきましょう。

Verify a New Domain Window

 

DKIMというのは、Domainkeys Identified Mail(ドメインキーアイデンティファイドメール)の略で、送信者がメール内にDKIM署名を追加することによって、送信されたのメッセージが本物であり、送信中に第三者によって改ざんされていないことをISPが証明するためのRFCで標準化されている規格です。

この設定は、必須ではないですが、絶対に行っておいた方がよいです。第三者が自分のドメインのなりすましを防ぐ事ができます。

「Verify This Domain」ボタンを押すと、新たなVarify a New Domainのモーダルウィンドウが出現します。この後で説明するTXTレコードやCNAMEレコードのDNS設定の情報などが表示されますが、とりあえず、右下の「close」ボタンを押して閉じましょう。ここの内容は後でも確認することができます。

そうすると、下記のように、pending状態になります。

Domain pending

 

DNSの設定

ここからは、お使いのドメインを取得した先の管理画面などを使って、DNSの設定を行います。

今回は、メールの受信は行わず、送信のみを行う想定のため、

  • TXTレコード
  • CNAMEレコード x 2

の設定を行います。

TXTレコードの設定内容は、Domainsのドメイン一覧でドメインを選択肢、「View Details」ボタンから確認することができます。

Domain View Details

ここで開いているVerificationの

  • TXT Name*:
  • TXT Value:

の内容をTXTレコードとして、DNSに追加します。

次に、CNAMEレコードですが、こちらは、同じ画面の「DKIM」を展開すると内容が表示されます。

DKIM CNAMEレコード

 

ここに表示されている「Name」と「Value」をCNAMEレコードとしてDNSへ追加しましょう。

設定をして、しばらくすると、各ステータスが「pending verification」から「verified」へ変化します。

Domain Status verified

この状態になると、「Send a Test Mail」というボタンがアクティブになるので、一旦、テストメールを送信してみましょう。

ボタンを押すとモーダルウィンドウが表示されるので、それぞれ入力して、「Send Tent Email」ボタンでメールを送信します。

Domain Send Test Email

 

問題なく入植したメールアドレスにメールが送信できていれば、ドメイン認証はOKになります。

メールアドレスの認証

先程はドメインの認証を行いましたが、次はメールアドレスの認証を行います。

メールアドレスに認証は、ドメインよりも簡単です。

まず、Email Addressesの「Verify a New Email Address」ボタンをクリックします。すると、モーダルウィンドウがあらわれますので、「Email Address:」に認証させたいメールアドレスを入力します。「Verify This Email Address」ボタンを押すとそのアドレスにメールが送信されます。

あとは、そのメール内に記載されている認証用のURLが記載されているので、クリックしましょう。

すると、Emailアドレスのステータスが「verified」に変化します。

この状態になると、ドメイン認証の時と同じく、「Send a Test Email」のボタンがアクティブになります。

送信テストをしてみましょう。「Send a Test Email」ボタンをクリックするとモーダルウィンドウが表示されますので、送信先メールアドレスと内容を記載し「Send Test Email」ボタンを押します。

Email Send a Test Email

指定したメールアドレスに、今回認証したメールアドレスからメールが届いているかを確認できたら、メールアドレス認証は完了です。

この状態で、SESが問題なく使用できるようになりました。あとは、APIやSDKを使って、メールを送信しましょう。

メール送信にあたって気をつけるべきことがあります。それは、バウンスメール(受取人のメールサーバーにより、受け取り拒否されたメール)です。

送信した全メールのうち、バウンスメールが一定の割合を超えると、SESでのメール送信が行えなくなります。ですので、バウンスメールはしっかりウォッチして、存在しないメールアドレスの送信など予め防げるものは防ぎ、バウンスメールは極力なくすようにしなければなりません。
そのために、送信したメールのうちそのメールアドレスのメールが、バウンスされたかをキャッチアップする必要が出てくると思います。

そこで、SESには、バウンス以外にも、いくつかメールイベントを取得できる仕組みがあります。

キャッチアップできるメールアドレスのイベントは下記です。

  • 送信
  • 拒否
  • バウンス
  • 苦情
  • 配信
  • オープン
  • クリック
  • レンダリング失敗

それぞれのイベントの詳細はこちらを参照してください。

ここからは、バウンスメールイベントをSNS(Simple Notification Service)へ送信し、SNSから通知を受け取る設定をおこないます。

が、ちょっと長くなってきたので、続きは次の記事にてご紹介したいと思います。

AWS SES + SNS メールイベントの通知について(後編)

ではまた!

Pocket
LINEで送る