Comments
Description
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