...

SESによるメール送信

by user

on
Category: Documents
8

views

Report

Comments

Transcript

SESによるメール送信
Amazon Simple Email Service
(Amazon SES)
AWS Black Belt Tech Webinar 2016
舟﨑 健治
1
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
2
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
3
Amazon SESとは?
• コスト効率に優れたEメールサービス
• 信頼性が高くスケーラブルなインフラストラクチャで構築されている
• メール送信
– トランザクションメールやマーケティングメッセージ、その他あらゆする種類の高品質
なコンテンツを顧客に送信可能
• メール受信
NEW !!
– 受信したメールをトリガーにしてAmazon S3バケットへ配信、AWS Lambda関数を使
用したカスタムコードの呼び出し、Amazon SNSへの通知の発行等が可能
• バージニア・オレゴン・アイルランドのリージョンで利用可能
4
前回のSESのBlackbelt Tech Webinar(2014年11
月)以降に追加された新機能
•
•
•
•
5
メール受信とその処理 (2015/9/28)
送信承認 (2015/7/8)
SESのAWS CloudTrailサポート (2015/5/7)
SES上限緩和の統合 (2015/4/8)
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
6
SESによるメール送信
• 以下2パターンの方法がある
– HTTP REST APIを使用する方法
– SMTPエンドポイントを使用する方法
7
Amazon SESによるEmail送信
〜HTTP REST API〜
• 他のAWSサービスと同様にSDK等からコール
– SendEmail API: From, To, Subject, Bodyだけを用意すればAmazon
SES側でメッセージを生成して送信
– SendRawEmail API: メッセージ全体をアプリケーション側で生成し
て送信
• 認証はAWS アクセスキーとシークレットアクセスキー
を使用
• アプリケーションから直接メール送信を行う場合に便利
8
Amazon SESによるEmail送信
〜SMTPエンドポイント〜
• 生成済みEmailメッセージを受け取って送信するSESのSMTP
エンドポイント
– ポート: 25 / 465(SMTP over SSL) / 587(Message Submission)
– 要TLS(Transport Layer Security)
– 要認証
• 認証には専用IAMユーザを作成してそのクレデンシャルを使
用
• 既存の送信用SMTPサーバからリレーしたり、SMTPを前提
としてプログラムから直接利用する場合などに便利
9
SMTPエンドポイントを使う際の注意点
• デフォルトではEC2から外向きTCP 25番ポートは制限対象
– Spamのリレーを防ぐ
– 誤ったSpam送信から利用者様を守る
• リージョンが異なる場合、SESのエンドポイントもこの制限の対象
SMTP
(TCP: 25)
MTA
Tokyo Region
この制限は申請ベースで解除出来ます
10
SMTPS
(TCP: 465 / 587)
認証付きで外部サービスを
利用するのは特に制限なし
N. Virginia /
Oregon /
Ireland
SESの送信制限
• 送信できるEメール数と送信レートを規制
– SESとISP間の信頼関係を保つという意味で、すべてのSESのお客様に利益
をもたらす
• SESの送信制限
– 送信クォータ:24時間当たりに送信できるEメールの最大数
• Eメールを送信しようとすると、その都度SESが直近24時間内に送信されたE
メールの件数をチェックする。合計数が送信クォータ未満であれば、送信リクエ
ストを受理し、送信される
– 最大送信レート:SESが1秒あたりにアカウントから受け付けるEメールの
最大数
• 最大送信レートを瞬間的に超えることは可能だが、制限を超えた状態を長時間続
けることは不可
11
送信アクティビティのモニタリング
• 過去24時間の以下の情報をコンソール / APIで取得可能
–
–
–
–
–
–
12
配信の試行数
バウンス数(ハードバウンスのみ)
苦情
拒否した送信試行数
送信制限:送信クォータと最大送信レート
使用したクォータの割合
Amazon SES Dashboardを使った送信制限の確認
13
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
14
SESの送信制限を引き上げるには?
• 自動的に引き上げるには以下のガイドラインに従う必要があ
る
– 質の高いコンテンツを送信する
– 実際の本稼働のコンテンツを送信する
– 現在のクォータに近い送信ボリュームを維持する
– バウンスと苦情の件数を低く抑える
※多くの場合、実際に必要となる前に、システムによって自動的に引き上げら
れるため、特別なアクションは不要
• サポートセンターで上限緩和も可能
15
SESの上限緩和申請
16
SES上限緩和の統合
NEW !!
• 変更前
– Production Access申請
– 送信制限緩和申請
• 変更後 (2015/4/8以降)
– 送信制限緩和申請のみ
• こちらの申請をすると、自動的にsandboxの外になり、宛先に自由にEメー
ルアドレスを指定できるようになる。
17
アクセスレベル
• アクセスレベル
– サンドボックス(初期状態)
• 指定されたアドレスにのみ送信可(Verify済みのe-mailアドレス)
• 小さな送信制限
– 200通/24時間
– 最大送信レート
1通/秒
– プロダクション
• 送信先に制限なし
• 送信制限は実績によって決定、下記からのスタート
– 1,000通/24時間
– 最大送信レート
18
5通/秒
送信承認
NEW !!
• 異なるAWSアカウントまたはIAMユーザーから当該ア
カウントのドメインやEメールアドレスを使ってEメー
ルを送信する権限を許可
• Eメール送信時の送信承認の流れ
– 1. Eメール送信リクエストまたはEメールのヘッダーでID(ドメインま
たはEメールアドレス)のARN(例: arn:aws:ses:us-east1:123456789012:identity/example.com)をSESへ渡す
– 2. IDのポリシーを確認し、承認されている場合はSESはEメールを受
け入れる。未承認の場合はSESはエラーメッセージを返す
19
送信承認のユースケース
• 指定されたEメールアドレスからのみ送信を許可
• Return Pathに特定のEメールアドレスを指定したときのみ送
信を許可
• 指定された期間のみ送信を許可
• Fromアドレスの表示名に特定のフレンドリ名が指定された
時のみ送信を許可
• 詳細は以下を参照
– http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send
ing-authorization-policy-examples.html
20
送信承認ポリシーの例
{
"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"
}
]
}
21
送信承認を使った別の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アカウントが保持するドメインを指定
22
Eメールアドレス制限
NEW !!
• Eメール送信アクション(SendEmailとSendRawEmail)
でのみ下記Condition Keyを指定して制限可能
– 送信承認のリリースに伴い、新たに下記Condtion Keyが利用可能に
23
ses:Recipients
受信者アドレスを制限します。To:、“CC”、“BCC” アドレスが
含まれる
ses:FromAddress
“From” アドレスを制限する
ses:FromDisplayName
表示名として使用される “From” アドレスを制限する
ses:FeedbackAddress
“Return-Path” アドレス(E メールのフィードバック転送によ
りバウンスや苦情を送信できるアドレス)を制限する
Suppression List機能
• Suppression List:ハードバウンスしたEmailアドレス
が登録されるリスト
– 一度登録されると2週間程度は残る(手動削除は可)
– アカウントを越えて共有
– 登録済みアドレスに送信を試みた場合は、SESへのCallは成功するが、
SESから外部へは送信されずにハードバウンスとして処理される
• Suppression Listの役割
– バウンスを起こし続ける事で送信元ドメインやSESのIPアドレスプー
ルの評判が落ちないよう保護
24
Amazon SESでのコンテンツフィルタリング
• アプリケーションからの送信リクエストを受け取ると、
Amazon SESはメールメッセージを組立て(assemble)、
ISPがSpamと見做さないか、HeaderとBodyをスキャ
ンする。もしAmazon SESによりSpamのように見える
と判断された場合は、Amazon SES内の評価
(Reputation)が低下
• ウイルスやマルウェアが含まれるメッセージを検出する
とブロックし、これらが送信されるのを未然に防止
25
Amazon SESからメールを送信する時の
注意点
• コンテンツ・送信先リストの正しい管理運用が必須
– BounceやComplaintの処理を行っていないと送信レートの抑制や送信停止
措置が取られる事もある
(IPアドレスプールをクリーンに保つとともに、世の中のメールの信頼
性・健全性向上を促すため)
– Spamと判定されるようなメールを定常的に配信していると送信停止措置
の可能性あり
• 現状日本国内の携帯キャリアの制限を十分考慮した配信アル
ゴリズムになっていない
– 携帯キャリアのアドレスに送信する時には、SES以外の選択肢も検討する
26
メール送信の信頼性を維持するために
27
SMTPにおける送信元認証のための技術
• 送信元IPアドレスに基づく認証
– Sender Policy Framework (SPF)
– Sender ID
 各ドメインでメール送信元であるべきホストのIPアドレスやドメイン名を
DNSで公開
 各DNSドメインにレコードを追加するだけで開始できる
※Amazon SESから送信する場合 は、Amazon SES が所有する “Mail-From” ドメインから E メールを送信する。
そのため、E メールが SPF での認証用に DNS レコードを変更する必要はない。
• 送信元による署名に基づく認証
– Domain Keys Identified Mail (DKIM)
送信元で各メールにデジタル署名をし、公開鍵をDNSで公開
送信者あるいは送信元サーバでの対応が必要
28
DKIM有効化時のメール送受信の流れ
• MTAでキーペアを管理、公開鍵をTXTレコードで送信元
ドメインに設定
1. Email送信
From: [email protected]
To: [email protected]
2. 署名付きEmail送信
From: [email protected]
To: [email protected]
DKIM-Signature: s=xyz; d=sender.com …
MTA
3. 公開鍵問い合わせ
TXT xyz._domainkey.sender.com
sender.com
MTA及びDNSに必要な設定をすることで導入
29
4. 公開鍵返答
TXT “公開鍵”
smtp.receiver.com
DKIM有効化時のメール送受信の流れ
(SESの場合)
• SES側でキーペアを管理、公開鍵をCNAMEでユーザド
メインに設定
1. Email送信
From: [email protected]
To: [email protected]
30
2. 署名付きEmail送信
From: [email protected]
To: [email protected]
DKIM-Signature: s=xyz; d=sender.com …
smtp.receiver.com
SES 3. 公開鍵問い合わせ
TXT xyz._domainkey.sender.com
4. CNAMEレコード返答
CNAME xyz.dkim.amazonses.com
sender.com
5. 公開鍵問い合わせ
TXT xyz.dkim.amazonses.com
6. 公開鍵返答
TXT “公開鍵”
amazonses.com
バウンス処理の実装
31
SMTPの正常時のシグナリング
HELO sender.example.com
250 OK
sender.example.com
MAIL FROM: [email protected]
250 OK
RCPT TO: [email protected]
250 OK
MTA
MUA
DATA
354 Start
ヘッダ,本文.. <CRLF>.<CRLF>
250 OK
QUIT
250 OK
32
example.jp
SMTPのステータスコード
• 200番台
– 正常応答
– 情報提供
• 300番台
– データ入力を促す(354)
• 400番台
– 一時的なエラー: サーバシャットダウン、メールボックスbusy、メール
ボックス溢れ
• 500番台
– システムエラー: コマンド間違い
– 転送エラー: メールアドレスなし、処理失敗通知
33
配信エラーメール
• SMTPセッション時のエラー
– 送信元のMTAが作成。
– エンベロープの発信者メールアドレスにエラーメールが戻る
(Return-Path or Errors-To ヘッダに記載)
• SMTPセッション時以外
– 送信先のMTAが作成
– エンベロープの発信者メールアドレスにエラーメールが戻る
エラー発生時、ユーザが存在しないなどの恒久的なエラー(ハードバウンス)
については再度送信しないように送信側で対処(バウンス処理)が必要
34
バルク配信とバウンス処理の例(SESの場合)
Message
Producer
Message to
each receiver
Bounce/C
omplaint
Amazon SNS
Bounce記録のあ
る宛先を除いて
送信先を抽出
顧客情報
35
送信中/送信済
ステートを記録
(送信中/送信済
はスキップ)
Amazon SES
送信ステート
テーブル
SESの配信通知
•
SESが正常に受信者の電子メール
サーバーにメッセージを配信するた
びに、Amazon SNSの通知を受け
取ることを選択可能
–
•
36
E-mailはBounce、Complaintsのみ
配信、バウンス、Complaintsの全
てをSNSトピックへの通知を介して
追跡可能
{"notificationType":"Delivery",
"mail":{
"timestamp":"2014-05-28T22:40:59.638Z",
"messageId":"0000014644fe5ef6-9a483358-91704cb4-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"
}
}
参考情報: Sendy (http://sendy.co)
• Sendy: メールの作成からSESでの配信やレポート作
成をワンストップで実現するパッケージソフトウェア
– PHPとMySQLの環境があれば動作
– Bounce/Complaint処理なども対応
37
送信停止措置について
• 下記のような場合、送信停止措置が適用される可能性有り
– 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.
上記のような通知を受け取った場合には次のページを参照の上で注意深く対応のこと
38
Probationの通知があった場合の対処方法
•
まず理由とProbationの間に送信可能な数を確認
–
メッセージ例:
*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通のメッセージを送り終えるまでにメールのコンテンツを改善(*)
しないと送信停止措置適用へ
•
原因を取り除き、効果を確認した後、実施した改善内容を返信
–
nの値は普段送信しているボリュームを鑑みて設定される
•
但し、リスクを考えると改善適用までは代替手段でメール配信を行うことを推奨
改善方法や改善結果のアピールに不安があれば担当営業/SAまでご相談ください
* 個別のメールがSpam Filterにかかるかどうかはご案内出来ないので一般的なSpam Filter
ソフトウェアでご確認下さい
39
SES以外のメール送信選択肢
40
AWSからのメール配信の選択肢
1. EC2上にMail Transfer Agent (MTA)を構築して配信
2. Amazon Simple Email Service (SES)の利用
3. 外部Email配信サービスの利用
3.についてはAWS特有の手順はないため省略
41
EC2上にMTAを構築して配信
• 利点
– 慣れたMTAや既存のノウハウを活かして構築・運用が可能
– 携帯キャリア向けの送信ルールの適用など、柔軟な制御が可能
• 注意点
– 構築・運用・障害対策やスケールの調整などは自身で行わなければな
らない
– Email送信のための制限解除やDNS逆引きなどフォームによる申請が必
要な項目あり(後述)
42
メール送信時の構成について
Bounce処理
を実装予定
No
Bounce処理はどちら
の方法でも重要です。
実装しましょう。
Yes
1. EC2上のMTA構築
も検討
Yes
携帯キャリア
のアドレスに
送信予定あり
No
Bounceやコンテン
ツの問題による送信
レート抑制を受入可
Yes
2. SESの利用も考慮に
43
No
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
44
SMTPエンドポイントを使う際の注意点
• デフォルトではEC2から外向きTCP 25番ポートは制限対象
– Spamのリレーを防ぐ
– 誤ったSpam送信から利用者様を守る
SMTP
(TCP: 25)
MTA
Tokyo Region
この制限は申請ベースで解除出来ます
45
SMTPS
(TCP: 587)
ポート587番で認証付きで外部
サービスを利用するのは特に制
限なし
EC2でMTAを構築するまで
1. MTAのホスト名とIPアドレスを用意
– ホスト名を決める
– Elastic IPを取得
– ホストのAレコードをドメインに登録する
2. 制限解除と逆引きDNSの登録を申請する
3. メール関連のDNS設定を行う
– SPFレコード
– DKIM
– MXレコード (Optional: 受信もする場合)
46
構成とDNSレコードの例
• DNSレコード例
;; example.com
@ IN A 203.0.113.3
@ IN MX 10 mx1
@ IN MX 20 mx2
mx1 IN A 203.0.113.4
mx1 IN A 203.0.113.5
mta1 IN A 203.0.113.6
mta2 IN A 203.0.113.7
@ IN TXT "v=sfp1 ip……"
@ IN SPF "v=sfp1 ip……”
47
DNS
example.com
DNS
*.113.0.203
逆引き申請
で登録
4. SPF?
3. PTR
mta1.example.com
5. SPF
"v=sfp1 ip…"
2.
203.0.113.6?
mx.receiver.com
1.
(Bounce/error) *
RCPT TO [email protected]
MAIL FROM [email protected]
mta1
mta2
mx1
*一般にバウンス等のエラーは受信側MXサーバによりセットされるreturn-pathヘッダに記載のア
ドレスに返される。
mx2
1. MTAのホスト名とIPアドレス
• MTAのホスト名を決める
– 例:mta1.example.com, mta2.example.com
• IPアドレスの取得
– 通常通りElastic IPをホスト名の数だけ取得
• DNS Aレコードを登録
– mta1.example.com
– mta2.example.com
48
IN A
IN A
<EIP 1>
<EIP 2>
2. 逆引きDNSの申請
49
•
メール送信の目的を記入
•
申請対象のEIP
•
EIPの逆引き結果
となるべきホスト
名を記入
DNSの正引きの
一致が必要
https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/ec2-email-limitrdns-request
SPFの設定例
•
送信元サーバの逆引き結果が*.example.comである場合に正当な送信者である
と宣言する場合の設定例
•
一致しない場合はソフトフェイルとする場合
example.com.
example.com.
•
TXT "v=spf1 include:example.com ~all
SPF "v=spf1 include:example.com ~all“
一致しない場合はハードフェイルとする場合
(一致しない場合に受信側MTAに受信拒否を要求)
example.com.
example.com.
TXT "v=spf1 include:example.com -all“
SPF "v=spf1 include:example.com -all“
注:RFC4408によれば、SPFかTXTどちらかが定義されていれば動作するも
のの、両方のレコードに同内容を設定することが推奨される
50
バルク配信とバウンス処理の例(EC2の場合)
Message
Producer
Message to
each receiver
smtp
Bounce記録のあ
る宛先を除いて
送信先を抽出
顧客情報
送信中/送信済
ステートを記録
(送信中/送信済
はスキップ)
51
送信ステート
テーブル
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
52
SESのメール受信とその処理
NEW !!
• ご自身のドメイン宛のメールを受信可能なメールサーバ
として利用が可能
– SMTPエンドポイントのみ利用可能、APIエンドポイントは利用不可
(2016/1/6時点)
• メール受信系の以下の処理を行う
–
–
–
–
他のメールサーバとの通信
スパムやウィルスのスキャン
信用されていない送信元からのメールを拒否
ご自身のドメインに含まれる受信者宛てのメールを受信
• 受信したメールに対してアクションを実行可能
53
メール受信時に利用可能なアクション
•
•
•
•
•
•
•
Amazon S3バケットへのメールの配信
Amzon SNSトピックへのメールの公開
AWS Lambdaを使ったカスタムコードの呼び出し
SES
バウンスアクション
受信ルールセットの評価停止
ヘッダーの追加
Amazon WorkMailアクション
S3 Bucket
Lambda
SNS
WorkMail
54
SESのメール受信機能の利用例
• お客様からのメールに応じて自動的にサポートチケット
を生成
• Eメールの自動返信の実装
• Eメールリストの購読解除リクエスト処理
• Eメールのバウンスおよび苦情の処理
• Eメールのアーカイブソリューションの作成
• お客様からEメールでファイルを受け取る
55
SESのメール受信制御
• 受信者ベースの制御
• 送信元IPアドレスベースの制御
– ブロックリストと許可リストを指定可能
56
受信者ベースの制御
• 受信者ベースの制御受信者に基づいて処理方法を指定
– 受信ルールに、条件にマッチした時の処理を指定する
– 受信ルールがグループ化されたものが受信ルールセット
受信ルールセット
受信ルール(例):
[email protected]宛の
メールはバウンスさせる
57
受信ルール(例):
[email protected]宛の
メールはS3に配信する
IPアドレスベースの制御
• IPアドレスフィルタをセットアップすることで、特定のIPア
ドレスまたはIPアドレスレンジから送信されるメールを許可
または拒否する指定が可能
– IPアドレスフィルタの設定はオプション
• SESはスパムの送信元として知られるIPアドレスの独自のブ
ロックリストを保持
– 該当するIPアドレスを許可リストに追加することで、そのIPアドレスから
のメール受信が可能
• EC2から送信される全てのメールは、デフォルトでブロック
されているため、許可リストに追加する必要がある
58
Eメール受信のプロセス(1)
• 1. SES は最初に送信者の IP アドレスを確認する。以下に該当しな
い場合は、2以降に進む
– IP アドレスがブロックリストに含まれている
– IP アドレスが Amazon SES のブロックリストに含まれており、指定した許可リスト
には含まれない。
• 2. SES は、設定された有効な受信ルールセットを調査して、受信
する E メールのいずれかの受信者と一致する条件が受信ルールに
含まれているかどうかを判定する。
• 3. 受信ルールの条件に一致がない場合、SES は当該メールを拒否
する。そうでない場合、SES はメールを受け入れる。(次頁へ続
く)
59
Eメール受信のプロセス(2)
• 4. メールを受け入れる場合、SES は有効な受信ルールセッ
トを評価する。
– アクションまたは受信ルールによって受信ルールセットの評価が明示的に
終了されない限り、受信者の条件のうち少なくとも 1 つと一致するすべて
の受信ルールが、定義された順序で適用される。
60
Eメール受信のセットアップ手順
•
•
•
•
•
•
61
ドメインの検証
MXレコードの公開
パーミッションの付与
IPアドレスフィルターの作成
受信ルールセットの作成
受信ルールの作成
ドメインの検証
• SESでメールを受信(および送信)するには、まず使用
するドメインを所有していることを証明する必要がある
• その確認プロセスには、SESでのドメイン利用開始処理
およびDNSサーバ上でのTXTレコードの公開が必要
(SESコンソール上で”Verified Sender”と表示される
ことを確認する)
62
MXレコードの公開
• Mail exchanger (MX)レコードは、ドメインのメールを
処理するメールサーバを示すためにDNSサーバ上に登録
されるレコード
• SESのメール受信用のエンドポイントをMXレコードに
指定可能
– 例:inbound-smtp.us-west-2.amazonaws.com
63
DNSサーバへのTXTおよびMXレコードの登録
64
メール受信用にSESへ他のAWSサービスの利用権限を
付与
• 以下のようなアクションをEメール受信時に実行させる
には、SESにその権限を事前に付与する
SES
S3バケットへの
書き込み権限
S3 Bucket
65
Lambda function
の呼び出し権限
Lambda
他のアカウントの
SNSトピックへの
公開権限
SNS
KMSの鍵を使った
Eメールの暗号化
権限
KMS
IPアドレスフィルターの作成
• 特定のIPアドレスまたはIPアドレスレンジからのメール
を受信または拒否するためのフィルター
66
受信ルールセットの作成
• ああ
67
受信ルールの作成
68
事前にS3書き込
み等該当する権
限をSESに対し
て許可する必要
あり
69
設定した受信用メールアドレスに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
70
VGVzdOOBp+OBme+8ge+8ge+8gQ0K
--001a11427a60fa62c80527f1f0b7
(以下省略)
base64でデコードすると
「Testです!!!」という
メール本文を取得
SESでメール受信時のAWS Lambda関数の呼び出し
• Lambda関数の呼び出しタイプ
– Request Response: 即座に呼び出される。30秒のタイムアウトがある
– Event: 非同期で呼び出される。同期実行が必要とされる場合を除き、
Eventタイプの利用を推奨
• Event呼び出しを利用して、Lambda関数に渡されるEventオ
ブジェクトに受信メールのメタデータを含めることが可能
– メタデータを使って、S3に保存したメールの本文のメッセージコンテンツ
を取得可能
※メタデータに本文のメッセージコンテンツは含まれない
71
SESでEメール受信時にEメールコンテンツを保持する
• 以下2パターン
– S3バケットへの保存
– SNSトピックへのEメールのコピーを含むを通知を送る
• MIME形式にて、raw, 編集されない形で保存される
– MIME形式については、RFC 2045参照
72
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クラ
イアントサイド復号化を使用して、復号化する必要がある
73
SESのメール受信の注意事項
• EメールをS3バケットに格納する場合は、Eメールは1通あたり
30MBまで
• EメールをSNS通知を通して取得する場合は、Eメールは1通当た
り150KBまで(ヘッダを含む)
• Eメールの本文を取得するには、S3またはSNSを利用する必要が
ある
• SESはスパムの送信元として知られるIPアドレスの独自のブロッ
クリストを保持しているが、該当する送信元IPアドレスを許可リ
ストに追加することで、そのIPアドレスから受信が可能
74
メール受信のメトリックスの表示
• Amazon CloudWatchを使用して、受信ルールの失敗に関するメ
トリックスを表示可能
– PublishFailure: 構成されたアクションをSESが実行しようとしたときにエラー
が発生
– PublishExpired: 構成されたアクションをSESが実行しようとしたときにエ
ラーが発生し、SESは当該Eメールの配信をそれ以上再試行しない
• このエラーは永続的あるいは一時的な場合があるが、8時間以内にアクションが成功し
なかったため、SESはそれ以上再試行しない
75
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
76
Amazon WorkMailとの統合
• Amazon WorkMailでは、SESを使用してメールが送受
信される
• WorkMailを設定すると、SESの構成設定に以下が作成
されるので、削除してはいけない。
– 送信承認ポリシー
• WorkMailからお客様のドメイン
を介して送信されることを許可
– 受信ルール
• お客様のドメインの受信メールを
WorkMailに配信するWorkMailア
クションが設定されている
77
SESのAmazon CloudTrail対応
• SESのAPIコールのログをCloudTrailにて取得可能
• サポートされるAPIコール
78
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
料金
• 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)
79
無料利用枠
• Amazon EC2インスタンスから直接、またはAWS
Elastic Beanstalkを介してAmazon SESを呼び出す際
には、毎日無料で2,000件のメッセージを送信可能。
• 1年が過ぎても有効期限は切れません。
• 注: ただしデータ転送料金は適用されます。
80
アジェンダ
• Amazon SESとは
• Amazon SESによるメール送信
– ご参考:Amazon EC2インスタンスからのメール送信
• Amazon SESによるメール受信
• Amazon SESその他詳細
• まとめ
81
まとめ
• SESはスケーラブル・高信頼・低コストなEmailサービス
• ただし、メール送信のお作法や受取手に迷惑にならない
使い方をしないと最悪利用停止措置も
– でもこれって本来やるべきことですよね?
• SESのメール受信機能を使って、他のAWSサービスと連
携したさまざまなアクションが可能
82
メール送信時の構成について(再掲)
Bounce処理
を実装予定
No
Bounce処理はどちら
の方法でも重要です。
実装しましょう。
Yes
1. EC2上のMTA構築
も検討
Yes
携帯キャリア
のアドレスに
送信予定あり
No
Bounceやコンテン
ツの問題による送信
レート抑制を受入可
Yes
2. SESの利用も考慮に
83
No
参考資料
• 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/
84
その他の参考情報
• 携帯キャリア各社からのメール送信に関する注意事項
– 送信ドメイン認証(Sender ID/SPF)について | NTTドコモ
• http://www.nttdocomo.co.jp/service/communication/imode_mail/notice/send
er_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
85
Q&A
86
AWS Black Belt Tech Webinar
•
2016
1月は「エッジ&アプリケーションサービス月間」です!
–
–
–
–
1/06
1/13
1/20
1/27
(水)
(水)
(水)
(水)
:Amazon
:Amazon
:Amazon
:Amazon
SES
Route53
SQS & SNS
CloudFront
• イベントスケジュール
http://aws.amazon.com/jp/about-aws/events/
87
Webinar資料の配置場所
• AWS クラウドサービス活用資料集
– http://aws.amazon.com/jp/aws-jp-introduction/
88
公式Twitter/Facebook
AWSの最新情報をお届けします
検索
@awscloud_jp
もしくは
http://on.fb.me/1vR8yWm
最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを
日々更新しています!
89
ご参加ありがとうございました。
90
Fly UP