Mais conteúdo relacionado Semelhante a AWS初心者向けWebinar AWSからのEメール送信 (20) Mais de Amazon Web Services Japan (20) AWS初心者向けWebinar AWSからのEメール送信3. 2
自己紹介
• 舟﨑 健治(ふなさき けんじ)
• 担当
– アマゾン データ サービス ジャパン株式会社
ソリューションアーキテクト
– 業種を問わず幅広くAWS利用をご検討される
お客様をサポート
– AWS初心者向けWebinarを企画・運営中
• 好きなAWSのサービス:AWS OpsWorks
15. 14
SMTPにおける送信元認証のための技術
• 送信元IPアドレスに基づく認証
– Sender Policy Framework (SPF)
– Sender ID
各ドメインでメール送信元であるべきホストのIPアドレスやドメイン名をDNSで公開
各DNSドメインにレコードを追加するだけで開始できる
• 送信元による署名に基づく認証
– Domain Keys Identified Mail (DKIM)
正当な送信者から送信された改ざんされていないメールかどうかを確認することがで
きるデジタル署名方式の送信元ドメイン認証技術
送信元で各メールに秘密鍵を使って生成したデジタル署名を行い、受信側でDNSで公
開された公開鍵を使って検証する
送信者あるいは送信元サーバでの対応が必要
20. 19
AWSからのEメール送信の選択肢
1. Amazon Elastic Compute Cloud (EC2)インスタンス
上にMail Transfer Agent(MTA)を構築して配信
2. Amazon Simple Email Service (SES)の利用
3. 外部Email配信サービスの利用
3についてはAWS特有の手順はないため、省略して
以降1,2について取り扱います
21. 20
Amazon Elastic Compute Cloud (EC2)
• 特徴 (http://aws.amazon.com/jp/ec2/)
– 必要な時に必要なだけ1時間単位の従量課金で
利用できる仮想サーバリソース
– 世界11箇所のリージョンで利用可能
– 様々なスペック・OSを選択可能
• 価格体系 (http://aws.amazon.com/jp/ec2/pricing/)
– インスタンス利用料($0.02/hour 〜)
– データ転送量(OUT $0.14/GB )
仮想クラウドサーバ
23. 22
Amazon Simple Email Service (SES)
• 特徴 (http://aws.amazon.com/jp/ses/)
– SMTP / REST APIによるメール送信
– バージニア、オレゴン、ダブリンで提供
• 価格体系 (http://aws.amazon.com/jp/ses/pricing/)
– 月62000件までの送信は無料
– 1000ドルあたり0.10ドル
– 添付ファイルは0.12ドル/GB
スケーラブル、高信頼、低コストなEmail送信サービス
Amazon SES
24. 23
Amazon SESを利用して配信
• 利点
– AWSが管理するクリーンに保たれた(Spammer登録などされていない)⼤きなIPア
ドレスプールを使ってメール送信可能
– MTAを自前で⽴てなくてもAPIを叩く事でメール送信可
– 簡単DKIM設定
• 注意点
– 現状⽇本国内の携帯キャリアの制限を⼗分考慮した配信アルゴリズムにはなっていな
い(特に迷惑メールフィルタの考慮など)
– BounceやComplaintの処理を行っていないと送信レートの抑制や送信停⽌措置が取
られる事もある(IPアドレスプールをクリーンに保つとともに、世の中のメールの信
頼性・健全性向上を促すため)
– SESのエンドポイント及び送信元IPアドレスは米国東部、EU、米国西部となる(2015
年8月現在)
28. 27
1. EC2上でMTAを構築する
• MTAの例
– Postfix
– Sendmail
– qmail
– Exim
– MS Exchange
• EC2 1インスタンス上で複数IPから送信可能
• ENIとElastic IPは1:1で紐づけ可能
EC2
MTA
ENI 1
Private IP:
10.0.0.10
ENI 2
Private IP:
10.0.0.11
Elastic IP:
x.x.x.x
Elastic IP:
x.x.x.x
29. 28
Elastic Network Interfaces
• EC2インスタンスごとに仮想ネットワークインタフェースを複数持
てる機能
– VPC内でのみ利用可能
• 以下をENIに紐づけて維持可能
– Private IP
– Elastic IP
– MACアドレス
– セキュリティグループ
• インスタンスによって割り当て可能な数が異なる。詳細は以下。
– http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-eni.html
EC2
MTA
ENI 1
IP: 10.0.0.10
ENI 2
IP: 10.0.0.11
32. 31
2. MTAのホスト名とIPアドレス
• MTAのホスト名を決める
– 例:mta1.example.com, mta2.example.com
• IPアドレスの取得
– 通常通りElastic IPをホスト名(または使用するENI)の数だけ取得
• DNS Aレコードを登録
– mta1.example.com IN A <EIP 1>
– mta2.example.com IN A <EIP 2>
※これらは送信制限解除に
必要な項目です。
※送信制限解除申請時点で
に正引きが出来る必要があ
ります。
※お使いの既存のDNS、ま
たはAmazon Route 53を
DNSとして利用可能です。
33. 32
Amazon Route53
• 特徴 (http://aws.amazon.com/jp/route53/)
– 高い可用性:Amazon Route53は世界中に配置され
たサーバーによって、非常に高い可用性を提供。
– 多様な機能:管理ホストに対するヘルスチェックや
様々なアルゴリズムによるラウンドロビンなど、柔
軟なアプリケーションの運用を助ける機能が豊富。
– アプリケーションの内部DNSをとしても利用可能。
• 価格体系 (http://aws.amazon.com/jp/route53/pricing/)
– 非常に低価格なのが特徴。
– ホストするゾーンあたり 0.5USD/月
– 標準クエリ: 10億クエリあたり0.4USD
高い可用性と豊富な機能を提供するフルマネージドな権威DNS
• 各ネームサーバは冗長化され世界中に
分散配置。
• ヘルスチェック/DNSフェイルオーバー
• 重み付けラウンドロビン
• レイテンシーベースルーティング
• ジオルーティング
• ドメイン取得と管理
Route53の特徴的な機能
36. 35
4. メール関連の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……” mta1 mta2 mx1 mx2
DNS
*.113.0.203
1.
RCPT TO alice@receiver.com
MAIL FROM bounce@example.com
mx.receiver.com
2.
203.0.113.6?
3. PTR
mta1.example.com
(Bounce/error) *
DNS
example.com
4. SPF?
5. SPF
"v=sfp1 ip…"
逆引き申請
で登録
*一般にバウンス等のエラーは受信側MXサーバによりセットされるreturn-pathヘッダに記載のア
ドレスに返される。
38. 37
2. 署名付きEmail送信
From: foo@sender.com
To: bar@receiver.com
DKIM-Signature: s=xyz; d=sender.com …1. Email送信
From: foo@sender.com
To: bar@receiver.com
DKIM有効化時のメール送受信の流れ
• MTAでキーペアを管理、公開鍵をTXTレコードで送信元
ドメインに設定
sender.com
MTA smtp.receiver.com
3. 公開鍵問い合わせ
TXT xyz._domainkey.sender.com
4. 公開鍵返答
TXT “公開鍵”
MTA及びDNSに必要な設定をすることで導入
42. 41
Amazon SESでEメールを送信する方法
• HTTP REST APIを利用する方法
– 他のAWSサービスと同様にSDK等からコール
• SendEmail API: From, To, Subject, Bodyだけを用意すればAmazon SES側で
メッセージを生成して送信
• SendRawEmail API: メッセージ全体をアプリケーション側で生成して送信
– 認証はAWS アクセスキーとシークレットアクセスキーを使用
– アプリケーションから直接Eメール送信を行う場合に便利
• SMTPエンドポイントを利用する方法
– 生成済みEmailメッセージを受け取って送信するSESのSMTPエンドポイント
• ポート: 25 / 465(SMTP over SSL) / 587(Message Submission)
• 要TLS(Transport Layer Security)
• 要認証
– 認証用にSMTPユーザー名とパスワードを作成
– 既存の送信用SMTPサーバからリレーしたり、SMTPを前提としてプログラムから直接
利用する場合などに便利
43. 42
Amazon SES利用時の注意点
• コンテンツ・送信先リストの正しい管理運用が必須
– BounceやComplaintの処理を行っていないと送信レートの抑制や送信停⽌措置が取
られる事もある
(IPアドレスプールをクリーンに保つとともに、世の中のメールの信頼性・健全性向
上を促すため)
– Spamと判定されるようなメールを定常的に配信していると送信停⽌措置の可能性あ
り
• 国内モバイルキャリア等の迷惑メールフィルタとは相性悪い
1. 迷惑メールフィルタに引っかかった場合にBounceエラーが返る
2. SESのSuppression Listに送信先アドレスが登録される
3. ホワイトリストされたドメインからもメールが送れなくなる
45. 44
Amazon SES利用開始時の送信制限について
• 初めてAmazon SESにサインアップすると、Amazon SESサンドボッ
クス環境にある
• サンドボックス環境下の制限
– 最⼤で1秒間に1通、24時間に200通までのEメール送信に制限される
– 送信先のEメールアドレスは確認済みのもののみ
• プロダクション環境下の制限
– 送信先に制限なし
– 送信クォータは実績によって決定、下記からのスタート
• 1000通/24時間
• 最⼤送信率 5通/秒
• プロダクションに上げるには?
– 下記申請フォームから申請する
• http://aws.amazon.com/ses/fullaccessrequest/
46. 45
送信クォータによる制限
• 送信クォータ:送信可能メール数及びレート
2つのしきい値
SendingQuota: 24時間で送信出来るメールの最⼤数
現時点で送れる数 = SendingQuota - 直近24時間に送信した数
SendingRate: 秒間あたりに送信出来るメールの最⼤数
GetSendQuota API or マネージメントコンソールで確認可
– 送信クォータを超えるとスロットリング
• 送信クォータを増やすには?
– 実績に応じて自然に増えていく
• 良質なコンテンツをQuotaに近い量送信していると増えます
– 急にクォータを増やす必要があるときには?
• 下記フォームからご申請下さい
http://aws.amazon.com/ses/extendedaccessrequest/
454 Throttling failure: Maximum sending rate exceeded
454 Throttling failure: Daily message quota exceeded
47. 46
認証 - SESでのSPFとSenderID
• Amazon SESを利用するときには、すぐに使用できる構
成済みのDNSレコードが用意される
• SPFもセットアップ済み
• amazonses.comから送信するIPアドレスはすべてSPF
経由で認証される
• ただし、SenderIDによる認証も行うことを推奨
– SenderIDによる認証を行うには、Amazon SESのドメインへのポインタを送信
者のTXTレコードに追加する
(設定例は次頁)
• RFC4408によれば、SPFかTXTどちらかが定義されていれば動作するもの
の、両方のレコードに同内容を設定することが推奨されるため
49. 48
2. 署名付きEmail送信
From: foo@sender.com
To: bar@receiver.com
DKIM-Signature: s=xyz; d=sender.com …1. Email送信
From: foo@sender.com
To: bar@receiver.com
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 “公開鍵”
52. 51
Amazon Simple Notification Service (SNS)
• 特徴 (http://aws.amazon.com/jp/sns/)
– 個々のメッセージ送信や、多数の受信者にメッセージを
ファンアウトすることが可能
– AWSの様々なサービスと連携して通知可能
– フルマネージドなので高速かつスケーラブルで管理不要で
非常に安価
• 価格体系 (http://aws.amazon.com/jp/sns/pricing/)
– 無料枠:
• Email/Email-JSON: 1,000件
• HTTP/HTTPS: 100,000件
• Simple Queue Service(SQS): 無料
– リクエスト単価(64KBのチャンク毎に1リクエストとして
課金)
• Email/Email-JSON: 100,000件あたり2 USD
• HTTP/HTTPS: 100万件あたり0.6 USD
• Simple Queue Service(SQS): 無料
マルチプロトコルに対応したフルマネージド通知サービス
Publis
h
1.Topicに
メッセージを送信
2. マルチプロトコルで通知
Amazon SNS
Publisher Topic
HTTP
HTTPS
EMAIL
SQS
Mobile
Push
Subscriber
54. 53
詳細はAWS Blackbelt Tech Webinar資料をご覧くだ
さい
• http://www.slideshare.net/AmazonWebServicesJap
an/aws-black-belt-tech-amazon-ses
59. 58
参考文献・リンク
• Amazon Simple Email Service
Eメール送信のベストプラクティス
http://d36cz9buwru1tt.cloudfront.net/jp/wp/AWS_Am
azon_SES_Best_Practices.pdf