89
1 Amazon Simple Email Service (Amazon SES) AWS Black Belt Tech Webinar 2016 舟﨑 健治

AWS Black Belt Tech シリーズ 2016 - Amazon SES

Embed Size (px)

Citation preview

Page 1: AWS Black Belt Tech シリーズ 2016 - Amazon SES

1

Amazon Simple Email Service (Amazon SES)

AWS Black Belt Tech Webinar 2016

舟﨑 健治

Page 2: AWS Black Belt Tech シリーズ 2016 - Amazon SES

2

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 3: AWS Black Belt Tech シリーズ 2016 - Amazon SES

3

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 4: AWS Black Belt Tech シリーズ 2016 - Amazon SES

4

Amazon SESとは?

• コスト効率に優れたEメールサービス

• 信頼性が高くスケーラブルなインフラストラクチャで構築されている

• メール送信– トランザクションメールやマーケティングメッセージ、その他あらゆする種類の高品質

なコンテンツを顧客に送信可能

• メール受信– 受信したメールをトリガーにしてAmazon S3バケットへ配信、AWS Lambda関数を使

用したカスタムコードの呼び出し、Amazon SNSへの通知の発行等が可能

• バージニア・オレゴン・アイルランドのリージョンで利用可能

NEW !!

Page 5: AWS Black Belt Tech シリーズ 2016 - Amazon SES

5

前回のSESのBlackbelt Tech Webinar(2014年11月)以降に追加された新機能

• メール受信とその処理 (2015/9/28)

• 送信承認 (2015/7/8)

• SESのAWS CloudTrailサポート (2015/5/7)

• SES上限緩和の統合 (2015/4/8)

Page 6: AWS Black Belt Tech シリーズ 2016 - Amazon SES

6

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 7: AWS Black Belt Tech シリーズ 2016 - Amazon SES

7

SESによるメール送信

• 以下2パターンの方法がある

–HTTP REST APIを使用する方法

–SMTPエンドポイントを使用する方法

Page 8: AWS Black Belt Tech シリーズ 2016 - Amazon SES

8

Amazon SESによるEmail送信〜HTTP REST API〜

• 他のAWSサービスと同様にSDK等からコール– SendEmail API: From, To, Subject, Bodyだけを用意すればAmazon

SES側でメッセージを生成して送信

– SendRawEmail API: メッセージ全体をアプリケーション側で生成して送信

• 認証はAWS アクセスキーとシークレットアクセスキーを使用

• アプリケーションから直接メール送信を行う場合に便利

Page 9: AWS Black Belt Tech シリーズ 2016 - Amazon SES

9

Amazon SESによるEmail送信〜SMTPエンドポイント〜

• 生成済みEmailメッセージを受け取って送信するSESのSMTPエンドポイント– ポート: 25 / 465(SMTP over SSL) / 587(Message Submission)

– 要TLS(Transport Layer Security)

– 要認証

• 認証には専用IAMユーザを作成してそのクレデンシャルを使用

• 既存の送信用SMTPサーバからリレーしたり、SMTPを前提としてプログラムから直接利用する場合などに便利

Page 10: AWS Black Belt Tech シリーズ 2016 - Amazon SES

10

SMTPエンドポイントを使う際の注意点

• デフォルトではEC2から外向きTCP 25番ポートは制限対象

– Spamのリレーを防ぐ

– 誤ったSpam送信から利用者様を守る

• リージョンが異なる場合、SESのエンドポイントもこの制限の対象

Tokyo Region

SMTP(TCP: 25)

SMTPS(TCP: 465 / 587)

認証付きで外部サービスを利用するのは特に制限なし

この制限は申請ベースで解除出来ます

MTAN. Virginia / Oregon /Ireland

Page 11: AWS Black Belt Tech シリーズ 2016 - Amazon SES

11

SESの送信制限

• 送信できるEメール数と送信レートを規制– SESとISP間の信頼関係を保つという意味で、すべてのSESのお客様に利益

をもたらす

• SESの送信制限– 送信クォータ:24時間当たりに送信できるEメールの最大数

• Eメールを送信しようとすると、その都度SESが直近24時間内に送信されたEメールの件数をチェックする。合計数が送信クォータ未満であれば、送信リクエストを受理し、送信される

– 最大送信レート:SESが1秒あたりにアカウントから受け付けるEメールの最大数• 最大送信レートを瞬間的に超えることは可能だが、制限を超えた状態を長時間続

けることは不可

Page 12: AWS Black Belt Tech シリーズ 2016 - Amazon SES

12

送信アクティビティのモニタリング

• 過去24時間の以下の情報をコンソール / APIで取得可能– 配信の試行数

– バウンス数(ハードバウンスのみ)

– 苦情

– 拒否した送信試行数

– 送信制限:送信クォータと最大送信レート

– 使用したクォータの割合

Page 13: AWS Black Belt Tech シリーズ 2016 - Amazon SES

13

Amazon SES Dashboardを使った送信制限の確認

Page 14: AWS Black Belt Tech シリーズ 2016 - Amazon SES

14

SESの送信制限に達するとどうなるか?

• 送信クォータまたは最大送信レートに達した後にメールを送信しようとすると、スロットリングエラーが発生、Eメールは破棄される– その後、再度送信するには、必要な送信クォータの量に増えるまで待つ必

要あり

• スロットリングエラーの内容– SES HTTP REST APIで送信した場合

• Daily message quota exceeded• Maximum sending rate exceeded

– SMTPで送信した場合• 454 Throttling failure: Maximum sending rate exceeded• 454 Throttling failure: Daily message quota exceeded

Page 15: AWS Black Belt Tech シリーズ 2016 - Amazon SES

15

SESの送信制限を引き上げるには?

• 自動的に引き上げるには以下のガイドラインに従う必要がある– 質の高いコンテンツを送信する– 実際の本稼働のコンテンツを送信する– 現在のクォータに近い送信ボリュームを維持する– バウンスと苦情の件数を低く抑える※多くの場合、実際に必要となる前に、システムによって自動的に引き上げられるため、特別なアクションは不要

• サポートセンターで上限緩和も可能

Page 16: AWS Black Belt Tech シリーズ 2016 - Amazon SES

16

SESの上限緩和申請

Page 17: AWS Black Belt Tech シリーズ 2016 - Amazon SES

17

SES上限緩和の統合

• 変更前– Production Access申請

– 送信制限緩和申請

• 変更後 (2015/4/8以降)– 送信制限緩和申請のみ

• こちらの申請をすると、自動的にsandboxの外になり、宛先に自由にEメールアドレスを指定できるようになる。

NEW !!

Page 18: AWS Black Belt Tech シリーズ 2016 - Amazon SES

18

アクセスレベル

• アクセスレベル– サンドボックス(初期状態)

• 指定されたアドレスにのみ送信可(Verify済みのe-mailアドレス)

• 小さな送信制限

– 200通/24時間

– 最大送信レート 1通/秒

– プロダクション

• 送信先に制限なし

• 送信制限緩和申請で送信クォータおよび最大送信レートを指定可能

Page 19: AWS Black Belt Tech シリーズ 2016 - Amazon SES

19

送信承認

• 異なるAWSアカウントまたはIAMユーザーから当該アカウントのドメインやEメールアドレスを使ってEメールを送信する権限を許可

• Eメール送信時の送信承認の流れ– 1. Eメール送信リクエストまたはEメールのヘッダーでID(ドメインま

たはEメールアドレス)のARN(例: arn:aws:ses:us-east-1:123456789012:identity/example.com)をSESへ渡す

– 2. IDのポリシーを確認し、承認されている場合はSESはEメールを受け入れる。未承認の場合はSESはエラーメッセージを返す

NEW !!

Page 20: AWS Black Belt Tech シリーズ 2016 - Amazon SES

20

送信承認のユースケース

• 指定されたEメールアドレスからのみ送信を許可

• Return Pathに特定のEメールアドレスを指定したときのみ送信を許可

• 指定された期間のみ送信を許可

• Fromアドレスの表示名に特定のフレンドリ名が指定された時のみ送信を許可

• 詳細は以下を参照– http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send

ing-authorization-policy-examples.html

Page 21: AWS Black Belt Tech シリーズ 2016 - Amazon SES

21

送信承認ポリシーの例{

"Version": "2008-10-17",

"Statement": [

{

"Sid": "stmt1451270794581",

"Effect": "Allow",

"Principal": {

"AWS": "arn:aws:iam::123456789012:root"

},

"Action": [

"ses:SendEmail",

"ses:SendRawEmail"

],

"Resource": "arn:aws:ses:us-east-1:987654321098:identity/example.com"

}

]

}

Page 22: AWS Black Belt Tech シリーズ 2016 - Amazon SES

22

送信承認を使った別のAWSアカウントからのEメール送信の例

• AWS CLIを使った例

aws ses send-email --from [email protected] \--destination file:///home/ec2-user/destination.json \--message file:///home/ec2-user/message.json \--source-arn arn:aws:ses:us-east-1:987654321098:identity/example.com

別のAWSアカウントが保持するドメインを指定

Page 23: AWS Black Belt Tech シリーズ 2016 - Amazon SES

23

Eメールアドレス制限

• Eメール送信アクション(SendEmailとSendRawEmail)でのみ下記Condition Keyを指定して制限可能– 送信承認のリリースに伴い、新たに下記Condtion Keyが利用可能に

ses:Recipients 受信者アドレスを制限します。To:、“CC”、“BCC” アドレスが含まれる

ses:FromAddress “From” アドレスを制限する

ses:FromDisplayName 表示名として使用される “From” アドレスを制限する

ses:FeedbackAddress “Return-Path” アドレス(E メールのフィードバック転送によりバウンスや苦情を送信できるアドレス)を制限する

NEW !!

Page 24: AWS Black Belt Tech シリーズ 2016 - Amazon SES

24

Suppression List機能

• Suppression List:ハードバウンスしたEmailアドレスが登録されるリスト– 一度登録されると2週間程度は残る(手動削除は可)

– アカウントを越えて共有

– 登録済みアドレスに送信を試みた場合は、SESへのCallは成功するが、SESから外部へは送信されずにハードバウンスとして処理される

• Suppression Listの役割– バウンスを起こし続ける事で送信元ドメインやSESのIPアドレスプー

ルの評判が落ちないよう保護

Page 25: AWS Black Belt Tech シリーズ 2016 - Amazon SES

25

Amazon SESでのコンテンツフィルタリング

• アプリケーションからの送信リクエストを受け取ると、Amazon SESはメールメッセージを組立て(assemble)、ISPがSpamと見做さないか、HeaderとBodyをスキャンする。もしAmazon SESによりSpamのように見えると判断された場合は、Amazon SES内の評価(Reputation)が低下

• ウイルスやマルウェアが含まれるメッセージを検出するとブロックし、これらが送信されるのを未然に防止

Page 26: AWS Black Belt Tech シリーズ 2016 - Amazon SES

26

Amazon SESからメールを送信する時の注意点

• コンテンツ・送信先リストの正しい管理運用が必須– BounceやComplaintの処理を行っていないと送信レートの抑制や送信停止

措置が取られる事もある(IPアドレスプールをクリーンに保つとともに、世の中のメールの信頼性・健全性向上を促すため)

– Spamと判定されるようなメールを定常的に配信していると送信停止措置の可能性あり

• 現状日本国内の携帯キャリアの制限を十分考慮した配信アルゴリズムになっていない– 携帯キャリアのアドレスに送信する時には、SES以外の選択肢も検討する

Page 27: AWS Black Belt Tech シリーズ 2016 - Amazon SES

27

メール送信の信頼性を維持するために

Page 28: AWS Black Belt Tech シリーズ 2016 - Amazon SES

28

SMTPにおける送信元認証のための技術

• 送信元IPアドレスに基づく認証– Sender Policy Framework (SPF)

– Sender ID

各ドメインでメール送信元であるべきホストのIPアドレスやドメイン名をDNSで公開各DNSドメインにレコードを追加するだけで開始できる

• 送信元による署名に基づく認証– Domain Keys Identified Mail (DKIM)

送信元で各メールにデジタル署名をし、公開鍵をDNSで公開

送信者あるいは送信元サーバでの対応が必要

※Amazon SESから送信する場合 は、Amazon SES が所有する “Mail-From” ドメインから E メールを送信する。そのため、E メールが SPF での認証用に DNS レコードを変更する必要はない。

Page 29: AWS Black Belt Tech シリーズ 2016 - Amazon SES

29

2. 署名付きEmail送信From: [email protected]: [email protected]: s=xyz; d=sender.com …1. Email送信

From: [email protected]: [email protected]

DKIM有効化時のメール送受信の流れ

• MTAでキーペアを管理、公開鍵をTXTレコードで送信元ドメインに設定

sender.com

MTA smtp.receiver.com3. 公開鍵問い合わせTXT xyz._domainkey.sender.com

4. 公開鍵返答TXT “公開鍵”

MTA及びDNSに必要な設定をすることで導入

Page 30: AWS Black Belt Tech シリーズ 2016 - Amazon SES

30

2. 署名付きEmail送信From: [email protected]: [email protected]: s=xyz; d=sender.com …1. Email送信

From: [email protected]: [email protected]

DKIM有効化時のメール送受信の流れ(SESの場合)

• SES側でキーペアを管理、公開鍵をCNAMEでユーザドメインに設定

sender.com

amazonses.com

SES smtp.receiver.com3. 公開鍵問い合わせTXT xyz._domainkey.sender.com

4. CNAMEレコード返答CNAME xyz.dkim.amazonses.com

5. 公開鍵問い合わせTXT xyz.dkim.amazonses.com

6. 公開鍵返答TXT “公開鍵”

Page 31: AWS Black Belt Tech シリーズ 2016 - Amazon SES

31

バウンス処理の実装

Page 32: AWS Black Belt Tech シリーズ 2016 - Amazon SES

32

SMTPの正常時のシグナリング

sender.example.com

HELO sender.example.com

250 OK

MAIL FROM: [email protected]

250 OK

RCPT TO: [email protected]

250 OK

example.jp

DATA

354 Start

ヘッダ,本文.. <CRLF>.<CRLF>

250 OK

QUIT250 OK

MTAMUA

Page 33: AWS Black Belt Tech シリーズ 2016 - Amazon SES

33

SMTPのステータスコード

• 200番台– 正常応答

– 情報提供

• 300番台– データ入力を促す(354)

• 400番台– 一時的なエラー: サーバシャットダウン、メールボックスbusy、メール

ボックス溢れ

• 500番台– システムエラー: コマンド間違い

– 転送エラー: メールアドレスなし、処理失敗通知

Page 34: AWS Black Belt Tech シリーズ 2016 - Amazon SES

34

配信エラーメール

• SMTPセッション時のエラー– 送信元のMTAが作成。

– エンベロープの発信者メールアドレスにエラーメールが戻る(Return-Path or Errors-To ヘッダに記載)

• SMTPセッション時以外– 送信先のMTAが作成

– エンベロープの発信者メールアドレスにエラーメールが戻る

エラー発生時、ユーザが存在しないなどの恒久的なエラー(ハードバウンス)については再度送信しないように送信側で対処(バウンス処理)が必要

Page 35: AWS Black Belt Tech シリーズ 2016 - Amazon SES

35

バルク配信とバウンス処理の例(SESの場合)

顧客情報

Message to each receiver

MessageProducer

Bounce記録のある宛先を除いて送信先を抽出

送信ステートテーブル

Amazon SES

Amazon SNS

送信中/送信済ステートを記録(送信中/送信済はスキップ)

Bounce/Complaint

Page 36: AWS Black Belt Tech シリーズ 2016 - Amazon SES

36

SESの配信通知

• SESが正常に受信者の電子メールサーバーにメッセージを配信するたびに、Amazon SNSの通知を受け取ることを選択可能– E-mailはBounce、Complaintsのみ

• 配信、バウンス、Complaintsの全てをSNSトピックへの通知を介して追跡可能

{"notificationType":"Delivery",

"mail":{

"timestamp":"2014-05-28T22:40:59.638Z",

"messageId":"0000014644fe5ef6-9a483358-9170-4cb4-a269-f5dcdf415321-000000",

"source":"[email protected]",

"destination":[

"[email protected]",

"[email protected]" ]

},

"delivery":{

"timestamp":"2014-05-28T22:41:01.184Z",

"recipients":["[email protected]"],

"processingTimeMillis":1546,

"reportingMTA":"a8-70.smtp-out.amazonses.com",

"smtpResponse":"250 ok: Message 64111812 accepted"

}

}

Page 37: AWS Black Belt Tech シリーズ 2016 - Amazon SES

37

参考情報: Sendy (http://sendy.co)

• Sendy: メールの作成からSESでの配信やレポート作成をワンストップで実現するパッケージソフトウェア– PHPとMySQLの環境があれば動作

– Bounce/Complaint処理なども対応

Page 38: AWS Black Belt Tech シリーズ 2016 - Amazon SES

38

送信停止措置について

• 下記のような場合、送信停止措置が適用される可能性有り– Bounce/Complaintレートが高い状態が続く– Spam Filterのヒットレートが高い

• 送信停止措置の警告とProbation(猶予)– SESから警告のメールが管理者アドレスに届く– メッセージ例:

Dear Amazon Simple Email Service Customer:

We have detected a problem with your Amazon Simple Email Service (Amazon SES) sending that has put your Amazon SES account on probationary status.

上記のような通知を受け取った場合には次のページを参照の上で注意深く対応のこと

Page 39: AWS Black Belt Tech シリーズ 2016 - Amazon SES

39

Probationの通知があった場合の対処方法

• まず理由とProbationの間に送信可能な数を確認– メッセージ例:

• 原因を取り除き、効果を確認した後、実施した改善内容を返信– nの値は普段送信しているボリュームを鑑みて設定される

• 但し、リスクを考えると改善適用までは代替手段でメール配信を行うことを推奨

*Unacceptably Low Content Quality: Over the last approximately xxx email messages you sent, an unacceptably high percentage were identified as spam by our filters.

*This issue must be fixed within the next n emails you send.

上記の場合次のn通のメッセージを送り終えるまでにメールのコンテンツを改善(*)

しないと送信停止措置適用へ

* 個別のメールがSpam Filterにかかるかどうかはご案内出来ないので一般的なSpam Filterソフトウェアでご確認下さい

改善方法や改善結果のアピールに不安があれば担当営業/SAまでご相談ください

Page 40: AWS Black Belt Tech シリーズ 2016 - Amazon SES

40

SES以外のメール送信選択肢

Page 41: AWS Black Belt Tech シリーズ 2016 - Amazon SES

41

AWSからのメール配信の選択肢

1. EC2上にMail Transfer Agent (MTA)を構築して配信

2. Amazon Simple Email Service (SES)の利用

3. 外部Email配信サービスの利用

3.についてはAWS特有の手順はないため省略

Page 42: AWS Black Belt Tech シリーズ 2016 - Amazon SES

42

EC2上にMTAを構築して配信

• 利点– 慣れたMTAや既存のノウハウを活かして構築・運用が可能

– 携帯キャリア向けの送信ルールの適用など、柔軟な制御が可能

• 注意点– 構築・運用・障害対策やスケールの調整などは自身で行わなければな

らない

– Email送信のための制限解除やDNS逆引きなどフォームによる申請が必要な項目あり(後述)

Page 43: AWS Black Belt Tech シリーズ 2016 - Amazon SES

43

メール送信時の構成について

Bounce処理を実装予定

NoBounce処理はどちらの方法でも重要です。

実装しましょう。

携帯キャリアのアドレスに送信予定あり

Yes

Yes 1. EC2上のMTA構築も検討

No

Bounceやコンテンツの問題による送信レート抑制を受入可

No

2. SESの利用も考慮に

Yes

Page 44: AWS Black Belt Tech シリーズ 2016 - Amazon SES

44

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 45: AWS Black Belt Tech シリーズ 2016 - Amazon SES

45

SMTPエンドポイントを使う際の注意点

• デフォルトではEC2から外向きTCP 25番ポートは制限対象

– Spamのリレーを防ぐ

– 誤ったSpam送信から利用者様を守る

Tokyo Region

SMTP(TCP: 25)

SMTPS(TCP: 587)

ポート587番で認証付きで外部サービスを利用するのは特に制

限なしこの制限は申請ベースで解除出来ます

MTA

Page 46: AWS Black Belt Tech シリーズ 2016 - Amazon SES

46

EC2でMTAを構築するまで

1. MTAのホスト名とIPアドレスを用意– ホスト名を決める– Elastic IPを取得– ホストのAレコードをドメインに登録する

2. 制限解除と逆引きDNSの登録を申請する

3. メール関連のDNS設定を行う– SPFレコード– DKIM– MXレコード (Optional: 受信もする場合)

Page 47: AWS Black Belt Tech シリーズ 2016 - Amazon SES

47

構成とDNSレコードの例

• DNSレコード例

;; example.com@ IN A 203.0.113.3@ IN MX 10 mx1@ IN MX 20 mx2

mx1 IN A 203.0.113.4mx1 IN A 203.0.113.5

mta1 IN A 203.0.113.6mta2 IN A 203.0.113.7

@ IN TXT "v=sfp1 ip……"@ IN SPF "v=sfp1 ip……” mta1 mta2 mx1 mx2

DNS*.113.0.203

1. RCPT TO [email protected] FROM [email protected]

mx.receiver.com

2. 203.0.113.6?

3. PTRmta1.example.com

(Bounce/error) *

DNSexample.com

4. SPF?

5. SPF"v=sfp1 ip…"

逆引き申請で登録

*一般にバウンス等のエラーは受信側MXサーバによりセットされるreturn-pathヘッダに記載のアドレスに返される。

Page 48: AWS Black Belt Tech シリーズ 2016 - Amazon SES

48

1. MTAのホスト名とIPアドレス

• MTAのホスト名を決める– 例:mta1.example.com, mta2.example.com

• IPアドレスの取得– 通常通りElastic IPをホスト名の数だけ取得

• DNS Aレコードを登録– mta1.example.com IN A <EIP 1>

– mta2.example.com IN A <EIP 2>

Page 49: AWS Black Belt Tech シリーズ 2016 - Amazon SES

49

2. 逆引きDNSの申請

• メール送信の目的を記入

• 申請対象のEIP

• EIPの逆引き結果となるべきホスト名を記入

DNSの正引きの一致が必要

https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limit-

rdns-request

Page 50: AWS Black Belt Tech シリーズ 2016 - Amazon SES

50

SPFの設定例

• 送信元サーバの逆引き結果が*.example.comである場合に正当な送信者であると宣言する場合の設定例

• 一致しない場合はソフトフェイルとする場合

example.com. TXT "v=spf1 include:example.com ~allexample.com. SPF "v=spf1 include:example.com ~all“

• 一致しない場合はハードフェイルとする場合(一致しない場合に受信側MTAに受信拒否を要求)

example.com. TXT "v=spf1 include:example.com -all“example.com. SPF "v=spf1 include:example.com -all“

注:RFC4408によれば、SPFかTXTどちらかが定義されていれば動作するものの、両方のレコードに同内容を設定することが推奨される

Page 51: AWS Black Belt Tech シリーズ 2016 - Amazon SES

51

バルク配信とバウンス処理の例(EC2の場合)

smtp

顧客情報

Message to each receiver

MessageProducer

Bounce記録のある宛先を除いて送信先を抽出

送信ステートテーブル

送信中/送信済ステートを記録(送信中/送信済はスキップ)

Page 52: AWS Black Belt Tech シリーズ 2016 - Amazon SES

52

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 53: AWS Black Belt Tech シリーズ 2016 - Amazon SES

53

SESのメール受信とその処理

• ご自身のドメイン宛のメールを受信可能なメールサーバとして利用が可能– SMTPエンドポイントのみ利用可能、APIエンドポイントは利用不可

(2016/1/6時点)

• メール受信系の以下の処理を行う– 他のメールサーバとの通信

– スパムやウィルスのスキャン

– 信用されていない送信元からのメールを拒否

– ご自身のドメインに含まれる受信者宛てのメールを受信

• 受信したメールに対してアクションを実行可能

NEW !!

Page 54: AWS Black Belt Tech シリーズ 2016 - Amazon SES

54

メール受信時に利用可能なアクション

• Amazon S3バケットへのメールの配信

• Amzon SNSトピックへのメールの公開

• AWS Lambdaを使ったカスタムコードの呼び出し

• バウンスアクション

• 受信ルールセットの評価停止

• ヘッダーの追加

• Amazon WorkMailアクション SNS

SES

S3 Bucket

Lambda

WorkMail

Page 55: AWS Black Belt Tech シリーズ 2016 - Amazon SES

55

SESのメール受信機能の利用例

• お客様からのメールに応じて自動的にサポートチケットを生成

• Eメールの自動返信の実装

• Eメールリストの購読解除リクエスト処理

• Eメールのバウンスおよび苦情の処理

• Eメールのアーカイブソリューションの作成

• お客様からEメールでファイルを受け取る

Page 56: AWS Black Belt Tech シリーズ 2016 - Amazon SES

56

SESのメール受信制御

• 受信者ベースの制御

• 送信元IPアドレスベースの制御– ブロックリストと許可リストを指定可能

Page 57: AWS Black Belt Tech シリーズ 2016 - Amazon SES

57

受信者ベースの制御

• 受信者ベースの制御受信者に基づいて処理方法を指定– 受信ルールに、条件にマッチした時の処理を指定する

– 受信ルールがグループ化されたものが受信ルールセット

受信ルールセット

受信ルール(例):[email protected]宛のメールはバウンスさせる

受信ルール(例):[email protected]宛のメールはS3に配信する

Page 58: AWS Black Belt Tech シリーズ 2016 - Amazon SES

58

IPアドレスベースの制御

• IPアドレスフィルタをセットアップすることで、特定のIPアドレスまたはIPアドレスレンジから送信されるメールを許可または拒否する指定が可能– IPアドレスフィルタの設定はオプション

• SESはスパムの送信元として知られるIPアドレスの独自のブロックリストを保持– 該当するIPアドレスを許可リストに追加することで、そのIPアドレスから

のメール受信が可能

• EC2から送信される全てのメールは、デフォルトでブロックされているため、許可リストに追加する必要がある

Page 59: AWS Black Belt Tech シリーズ 2016 - Amazon SES

59

Eメール受信のプロセス(1)

• 1. SES は最初に送信者の IP アドレスを確認する。以下に該当しない場合は、2以降に進む– IP アドレスがブロックリストに含まれている– IP アドレスが Amazon SES のブロックリストに含まれており、指定した許可リスト

には含まれない。

• 2. SES は、設定された有効な受信ルールセットを調査して、受信する E メールのいずれかの受信者と一致する条件が受信ルールに含まれているかどうかを判定する。

• 3. 受信ルールの条件に一致がない場合、SES は当該メールを拒否する。そうでない場合、SES はメールを受け入れる。(次頁へ続く)

Page 60: AWS Black Belt Tech シリーズ 2016 - Amazon SES

60

Eメール受信のプロセス(2)

• 4. メールを受け入れる場合、SES は有効な受信ルールセットを評価する。– アクションまたは受信ルールによって受信ルールセットの評価が明示的に

終了されない限り、受信者の条件のうち少なくとも 1 つと一致するすべての受信ルールが、定義された順序で適用される。

Page 61: AWS Black Belt Tech シリーズ 2016 - Amazon SES

61

Eメール受信のセットアップ手順

• ドメインの検証

• MXレコードの公開

• パーミッションの付与

• IPアドレスフィルターの作成

• 受信ルールセットの作成

• 受信ルールの作成

Page 62: AWS Black Belt Tech シリーズ 2016 - Amazon SES

62

ドメインの検証

• SESでメールを受信(および送信)するには、まず使用するドメインを所有していることを証明する必要がある

• その確認プロセスには、SESでのドメイン利用開始処理およびDNSサーバ上でのTXTレコードの公開が必要(SESコンソール上で”Verified Sender”と表示されることを確認する)

Page 63: AWS Black Belt Tech シリーズ 2016 - Amazon SES

63

MXレコードの公開

• Mail exchanger (MX)レコードは、ドメインのメールを処理するメールサーバを示すためにDNSサーバ上に登録されるレコード

• SESのメール受信用のエンドポイントをMXレコードに指定可能– 例:inbound-smtp.us-west-2.amazonaws.com

Page 64: AWS Black Belt Tech シリーズ 2016 - Amazon SES

64

DNSサーバへのTXTおよびMXレコードの登録

Page 65: AWS Black Belt Tech シリーズ 2016 - Amazon SES

65

メール受信用にSESへ他のAWSサービスの利用権限を付与

• 以下のようなアクションをEメール受信時に実行させるには、SESにその権限を事前に付与する

SNS

SES

S3 Bucket Lambda

S3バケットへの書き込み権限

Lambda functionの呼び出し権限

KMS

他のアカウントのSNSトピックへの公開権限

KMSの鍵を使ったEメールの暗号化権限

Page 66: AWS Black Belt Tech シリーズ 2016 - Amazon SES

66

IPアドレスフィルターの作成

• 特定のIPアドレスまたはIPアドレスレンジからのメールを受信または拒否するためのフィルター

Page 67: AWS Black Belt Tech シリーズ 2016 - Amazon SES

67

受信ルールセットの作成

• ああ

Page 68: AWS Black Belt Tech シリーズ 2016 - Amazon SES

68

受信ルールの作成

Page 69: AWS Black Belt Tech シリーズ 2016 - Amazon SES

69

事前にS3書き込み等該当する権限をSESに対して許可する必要あり

Page 70: AWS Black Belt Tech シリーズ 2016 - Amazon SES

70

設定した受信用メールアドレスにEメールを送信してみる

• S3に保存されたメールを確認する(S3へ保存する設定の場合)

• 保存されたメールの中身の例Return-Path: <送信元メールアドレス>

Received: from XXXXXXXXXXX (XXXXXXXXXXXXX [xxx.xxx.xxx.xxx])

by inbound-smtp.us-east-1.amazonaws.com with SMTP id xxxxxxx

for 受信メールアドレス;

(途中省略)

--001a11427a60fa62c80527f1f0b7

Content-Type: text/plain; charset=UTF-8

Content-Transfer-Encoding: base64

VGVzdOOBp+OBme+8ge+8ge+8gQ0K

--001a11427a60fa62c80527f1f0b7

(以下省略)

base64でデコードすると「Testです!!!」というメール本文を取得

Page 71: AWS Black Belt Tech シリーズ 2016 - Amazon SES

71

SESでメール受信時のAWS Lambda関数の呼び出し

• Lambda関数の呼び出しタイプ– Request Response: 即座に呼び出される。30秒のタイムアウトがある

– Event: 非同期で呼び出される。同期実行が必要とされる場合を除き、Eventタイプの利用を推奨

• Event呼び出しを利用して、Lambda関数に渡されるEventオブジェクトに受信メールのメタデータを含めることが可能– メタデータを使って、S3に保存したメールの本文のメッセージコンテンツ

を取得可能※メタデータに本文のメッセージコンテンツは含まれない

Page 72: AWS Black Belt Tech シリーズ 2016 - Amazon SES

72

SESでEメール受信時にEメールコンテンツを保持する

• 以下2パターン– S3バケットへの保存

– SNSトピックへのEメールのコピーを含むを通知を送る

• MIME形式にて、raw, 編集されない形で保存される– MIME形式については、RFC 2045参照

Page 73: AWS Black Belt Tech シリーズ 2016 - Amazon SES

73

Eメールの暗号化

• S3にEメールを保存する前に、S3クライアントサイド暗号化を使用してSESによって暗号化可能– S3サーバサイド暗号化が使用されるわけではない– 以下のSDKでクライアントサイド暗号化が可能

• AWS SDK for Java• AWS SDK for .NET• AWS SDK for Ruby

• Amazon KMSキーを使って暗号化する– デフォルトのマスターキーかKMSで作成したカスタムのマスターキーを使用

• コンテンツを取得するには、S3からEメールを取得後、S3クライアントサイド復号化を使用して、復号化する必要がある

Page 74: AWS Black Belt Tech シリーズ 2016 - Amazon SES

74

SESのメール受信の注意事項

• EメールをS3バケットに格納する場合は、Eメールは1通あたり30MBまで

• EメールをSNS通知を通して取得する場合は、Eメールは1通当たり150KBまで(ヘッダを含む)

• Eメールの本文を取得するには、S3またはSNSを利用する必要がある

• SESはスパムの送信元として知られるIPアドレスの独自のブロックリストを保持しているが、該当する送信元IPアドレスを許可リストに追加することで、そのIPアドレスから受信が可能

Page 75: AWS Black Belt Tech シリーズ 2016 - Amazon SES

75

メール受信のメトリックスの表示

• Amazon CloudWatchを使用して、受信ルールの失敗に関するメトリックスを表示可能– PublishFailure: 構成されたアクションをSESが実行しようとしたときにエラー

が発生

– PublishExpired: 構成されたアクションをSESが実行しようとしたときにエラーが発生し、SESは当該Eメールの配信をそれ以上再試行しない• このエラーは永続的あるいは一時的な場合があるが、8時間以内にアクションが成功し

なかったため、SESはそれ以上再試行しない

Page 76: AWS Black Belt Tech シリーズ 2016 - Amazon SES

76

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 77: AWS Black Belt Tech シリーズ 2016 - Amazon SES

77

Amazon WorkMailとの統合

• Amazon WorkMailでは、SESを使用してメールが送受信される

• WorkMailを設定すると、SESの構成設定に以下が作成されるので、削除してはいけない。– 送信承認ポリシー

• WorkMailからお客様のドメインを介して送信されることを許可

– 受信ルール

• お客様のドメインの受信メールをWorkMailに配信するWorkMailアクションが設定されている

Page 78: AWS Black Belt Tech シリーズ 2016 - Amazon SES

78

SESのAmazon CloudTrail対応

• SESのAPIコールのログをCloudTrailにて取得可能

• サポートされるAPIコールCloneReceiptRuleSet DeleteVerifiedEmailAddress GetSendStatistics SetIdentityDkimEnabled

CreateReceiptFilter DescribeActiveReceiptRuleSet ListIdentities SetIdentityFeedbackForwardingEnabled

CreateReceiptRule DescribeReceiptRule ListReceiptFilters SetIdentityNotificationTopic

CreateReceiptRuleSet DescribeReceiptRuleSet ListReceiptRuleSets UpdateReceiptRule

DeleteIdentity GetIdentityDkimAttributes ListVerifiedEmailAddresses VerifyDomainDkim

DeleteReceiptFilter GetIdentityNotificationAttributes ReorderReceiptRuleSet VerifyDomainIdentity

DeleteReceiptRule GetIdentityVerificationAttributes SetActiveReceiptRuleSet VerifyEmailAddress

DeleteReceiptRuleSet GetSendQuota SetReceiptRulePosition VerifyEmailIdentity

Page 79: AWS Black Belt Tech シリーズ 2016 - Amazon SES

79

料金

• Eメール1,000 通当たり 0.10 USD

• 添付ファイル料金– 0.12 USD / GB

• データ転送料金はEC2のデータ転送料金と同じ– 受信は無料– 送信は複数Tier

• 各月の最初の1GBまでは無料(その他のサービスも合算)

• 各月の次の10TBまでは0.12 USD/GB (us-east-1, us-west-2, eu-west-1)• 詳細は http://aws.amazon.com/ec2/pricing/#DataTransfer

注:リージョンを越えた送信は送信元リージョンからのリージョン間転送料金が追加適用(2016年1月現在、Tokyoリージョンでは0.09 USD/GB)

Page 80: AWS Black Belt Tech シリーズ 2016 - Amazon SES

80

無料利用枠

• Amazon EC2インスタンスから直接、またはAWS Elastic Beanstalkを介してAmazon SESを呼び出す際には、毎日無料で2,000件のメッセージを送信可能。

• 1年が過ぎても有効期限は切れません。

• 注: ただしデータ転送料金は適用されます。

Page 81: AWS Black Belt Tech シリーズ 2016 - Amazon SES

81

アジェンダ

• Amazon SESとは

• Amazon SESによるメール送信

– ご参考:Amazon EC2インスタンスからのメール送信

• Amazon SESによるメール受信

• Amazon SESその他詳細

• まとめ

Page 82: AWS Black Belt Tech シリーズ 2016 - Amazon SES

82

まとめ

• SESはスケーラブル・高信頼・低コストなEmailサービス

• ただし、メール送信のお作法や受取手に迷惑にならない使い方をしないと最悪利用停止措置も– でもこれって本来やるべきことですよね?

• SESのメール受信機能を使って、他のAWSサービスと連携したさまざまなアクションが可能

Page 83: AWS Black Belt Tech シリーズ 2016 - Amazon SES

83

メール送信時の構成について(再掲)

Bounce処理を実装予定

NoBounce処理はどちらの方法でも重要です。

実装しましょう。

携帯キャリアのアドレスに送信予定あり

Yes

Yes 1. EC2上のMTA構築も検討

No

Bounceやコンテンツの問題による送信レート抑制を受入可

No

2. SESの利用も考慮に

Yes

Page 84: AWS Black Belt Tech シリーズ 2016 - Amazon SES

84

参考資料

• Amazon Simple Email Service Email Sending Best Practicesホワイトペーパー– http://media.amazonwebservices.com/AWS_Amazon_SES_Best

_Practices.pdf

• Amazon SES Blog– http://sesblog.amazon.com/

Page 85: AWS Black Belt Tech シリーズ 2016 - Amazon SES

85

その他の参考情報

• 携帯キャリア各社からのメール送信に関する注意事項– 送信ドメイン認証(Sender ID/SPF)について | NTTドコモ

• http://www.nttdocomo.co.jp/service/communication/imode_mail/notice/sender_id/

– 同報メールを大量に送信されるお客様へ | NTTドコモ• http://www.nttdocomo.co.jp/service/communication/imode_mail/notice/mass

_send/

– EZwebへメール送信する際の注意事項(概要)│au• http://www.au.kddi.com/mobile/service/mail/attention/

– メール送信時のお願い│EZwebへメール送信する際の注意事項(概要)│au• http://www.au.kddi.com/mobile/service/mail/attention/request/

– 迷惑メールに対するソフトバンクモバイルの取り組み | ソフトバンクモバイル• http://www.softbank.jp/mobile/support/antispam/wrestle/

• メールシステムのおはなし #Mailerstudy– http://www.slideshare.net/ar_maniacs/mailerstudy

Page 86: AWS Black Belt Tech シリーズ 2016 - Amazon SES

86

Q&A

Page 87: AWS Black Belt Tech シリーズ 2016 - Amazon SES

87

Webinar資料の配置場所

• AWS クラウドサービス活用資料集– http://aws.amazon.com/jp/aws-jp-introduction/

Page 88: AWS Black Belt Tech シリーズ 2016 - Amazon SES

88

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

Page 89: AWS Black Belt Tech シリーズ 2016 - Amazon SES

89

ご参加ありがとうございました。