20111207 11 aws-meister-ses-public
DESCRIPTION
ほぼ週間AWSマイスターシリーズのAmazon Simple Email Serviceの回の資料です。TRANSCRIPT
AWSマイスターシリーズ ~Simple Email Service (SES)~
2011年12月7日
荒木 靖宏 (@ar1 ) ソリューションアーキテクト
玉川憲(@kentamagawa)
エバンジェリスト
Amazon Simple Email Service (SES)とは
メール送信のためにMTAを運用する手間から開放するAWSのサービス
初期費用やコミッションなし。低価格。
配送機能のみの提供
Email配送APIの提供
Java, .NET, PHP, Perlによるスクリプトの提供
APIの直接コール(HTTPS)
スケーラブル
稼働時間とメール到達性に最適化
Amazonで証明された配送実績
アジェンダ
Amazon SESとは
1枚にまとめました
メールシステム超基本編
これであなたもメール談義ができるように!
メールシステム現実編
これであなたもメール騙りができるように!
Amazon SESの紹介
本編
メールシステム 超基本編 これであなたもメールの話題の輪に加われます
キレイゴトの世界
インターネット
メールシステム全体
メールサーバ
Mail User Agent (MUA)
Mailbox Mail Transfer Agent (MTA)
Mail Delivery
Agent
DNS
NTP
Mail User Agent
ユーザが利用するアプリケーション
メールを読む
メールを書く
メールを保存する
メールを検索する
例 Thunderbird, Outlook, ….
単純な利用者にとってはこれだけがメールとの接点
Mail Transfer Agent
メールの受信
送信先の決定
メールの送信
リモートへ(SMTP)
ローカルへ(MDAへ)
キューイング
エラー通知
実装例
Sendmail, qmail, Exchange, Postfix, Exim,..
メールメッセージ
メールアドレス
発信者と受信者を特定する情報
(失われた)その他形式
user % example.com @ relay
@relay: [email protected]
example.com ! user
ユーザ部 ドメイン部
ヘッダと本文
RFC5322(822->2822と変遷)で定義
ヘッダ
ヘッダ名: ヘッダ内容
ヘッダと本文は空行で分ける
From: [email protected]
Subject: test
本文の1行目
ヘッダとエンベロープ
SMTPのRFCで定義。5321(821->2821と変遷)
エンベロープ
送信手続をした人と、配送先。封書の表書きのイメージ
MUAやMTAが作成する。MTAは配信ホップ毎に書きかえる。
ヘッダ
封書の中身に「だれだれさんから、だれだれさんへ」と書くのに相当
本文を書いた人(From)が読んで欲しい人(To)を記述
ヘッダとエンベロープが一致しない例
個人にあてられたbcc
メーリングリスト
インターネット
プロトコル
メールサーバ
ローカル
ファイル操作
DNS
NTP
IMAP
POP3
SMTP
SMTP
DNSとメール
[email protected]にどう届く?
送信側: MXレコードに書かれたアドレスのAレコード宛に送信する
MXレコード
優先度を指定できる(数値が小さいほうが優先される)
たまに見る間違い
CNAMEを指定する(RFC2181で禁止)
MTAによってはメールが届かない
DNSを使った送信先決定
MTA DNS
cache server
DNS root server
.com SOA
.example.com SOA
1,5
2
3
4
1. Example.comのMXレコード?
2. Example.comのMXレコード?→.comに聞け
3. Example.comのMXレコード?→.example.comに聞け
4. Example.comのMXレコード?→10 mail.example.comだよ
5. Mail.example.comのAレコード?....
$ dig mx hiroba.org
;; QUESTION SECTION:
;hiroba.org. IN MX
;; ANSWER SECTION:
hiroba.org. 86400 IN MX 5 alt1.aspmx.l.google.com.
hiroba.org. 86400 IN MX 5 alt2.aspmx.l.google.com.
hiroba.org. 86400 IN MX 10 aspmx2.googlemail.com.
hiroba.org. 86400 IN MX 10 aspmx3.googlemail.com.
hiroba.org. 86400 IN MX 10 aspmx4.googlemail.com.
hiroba.org. 86400 IN MX 10 aspmx5.googlemail.com.
hiroba.org. 86400 IN MX 1 aspmx.l.google.com.
;; AUTHORITY SECTION:
hiroba.org. 170129 IN NS ns-165.awsdns-20.com.
hiroba.org. 170129 IN NS ns-1624.awsdns-11.co.uk.
hiroba.org. 170129 IN NS ns-1347.awsdns-40.org.
hiroba.org. 170129 IN NS ns-1003.awsdns-61.net.
;; ADDITIONAL SECTION:
aspmx.l.google.com. 185 IN A 74.125.127.27
alt1.aspmx.l.google.com. 187 IN A 74.125.45.27
alt2.aspmx.l.google.com. 197 IN A 74.125.93.27
aspmx2.googlemail.com. 2212 IN A 74.125.43.27
aspmx3.googlemail.com. 2213 IN A 74.125.127.27
aspmx4.googlemail.com. 2945 IN A 209.85.229.27
aspmx5.googlemail.com. 1888 IN A 74.125.157.27
ns-165.awsdns-20.com. 44352 IN A 205.251.192.165
ns-1003.awsdns-61.net. 44352 IN A 205.251.195.235
ns-1347.awsdns-40.org. 162645 IN A 205.251.197.67
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
QUIT
250 OK
MTA
MUA
SMTPのステータスコード
200番台
正常応答
情報提供
300番台
データ入力を促す(354)
400番台
一時的なエラー: サーバシャットダウン、メールボックスbusy、メールボックス溢れ
500番台
システムエラー: コマンド間違い
転送エラー: メールアドレスなし、処理失敗通知
メーリングリスト配送の場合
MLプログラム
HELO sender.example.com
250 OK
MAIL FROM: [email protected]
250 OK
RCPT TO: [email protected]
250 OK
配送サーバ
DATA
354 Start
ヘッダ,本文.. <CRLF>.<CRLF>
250 OK
QUIT
250 OK
RCPT TO: [email protected]
250 OK
参加者分くりかえし
SMTPの規
定ではすくなくとも50
まで
配信エラーメール
SMTPセッション時のエラー
送信元のMTAが作成。
エンベロープの発信者メールアドレスにエラーメールが戻る
SMTPセッション時以外
送信先のMTAが作成
エンベロープの発信者に戻る or Errors-To:
メールシステム 現実編 これであなたもメール管理者の穴にはいれます
参加者みなさまと
おはなししていきたい
vs SPAM
メールの悲しみ
他者からの入力を認証なしにうけつけてしまったのが発端
個人として
受信したときの対応はどうとでもなる: フィルタでもなんでもできる
自分のメールアドレスでSPAMを送信されたときは大変。
サーバ管理者として
受信する側: 下手な対応はできない
送信する側: ものすごく厳しくするのオススメ
Port25 blocking
ターゲットの主体は動的IPアドレス
動的っぽい(機械生成チック)アドレス名を手で更新する例も。
動的IPアドレスから外向きPort25のブロック
全てのEmailはISPのMTA経由に
submission portへの対応
AWSでも外向き25のブロックは頻繁に行われます
動的IPアドレスからの内向きPort25のブロック
MAPS DUL (Dynamic User List)等
メールブロック(AntiSpam)手法:受信側
ネットワーク事業者によるもの
Portブロック
受け手によるもの
IPアドレスブロック
国ブロック
地域ブロック
DNS逆引きブロック
DNS性逆一致ブロック
ヘッダブロック
本文ブロック
維持管理団体の出現
DNSBL (DNS Blacklist)
フィルタリング情報をDNSにのせて配布
メジャーどころ
spamhous
Trendmicro(MAPS)
日本
スパムちゃんぷるーdnsbl
• http://spam-champuru.livedoor.com/dnsbl/
rbl.jp
他にも山のように存在
http://en.wikipedia.org/wiki/Comparison_of_DNS_blacklists
spam扱いされない送信側作法
超基本の第三者中継チェック http://spamlinks.net/prevent-secure-relay-test.htm
DBの定期的確認 http://www.dnsbl.info/dnsbl-database-check.php http://www.senderbase.org/help/blocked
DNS 逆引きを忘れずに
• 正逆一致しないと受けとらないMTA多数あり SPFレコード
• RFC4408参照。 DKIM DKIM導入リコメンド
• http://www.dkim.jp/dkim-jp/recommend/ 国内の主要送信事業者11社がDKIMに対応完了(2011年7月26日)
現状のメール環境の意識は人によって大きく異なる
対Spam意識が高い(=メールボックスが割りとクリーン)
メールアドレスの使い分け(ステアドレスの使用)
MUAでのアンチスパム機能の利用とDBメンテナンス
一方でメールを諦める人も
各種ソーシャルネットワーキングサービスの利用
SMS
受信側の現実解
アプライアンス
メール専用機:
• Mirapoint, Ironport…..
UTM:
• Sonicwall, UTM-1 (checkpoint)….
SaaS
Gmail, McAfee, Trend Micro HES…
送信側の現実解
アプリケーション
MailPublisher(エイケア), Cuenote (ユミルリンク), SIELLA (レピカ), WEBCAS(エイジア)
Amazon Simple Email Service
Amazon Simple Email Serviceのご紹介
SESはメール配送機能のみを提供
Bodyやヘッダを使ったサービスを提供するものではありません。
メール送信API
SendEmailAPI (定形フォーマット)
From, To, Subject, BodyをAPIで指定
SendRawEmailAPI (自由フォーマット)
すべて設定する必要あり
• ヘッダ
• MIME Type
• Body
既存MTAからのリレーも可能
PostfixやSendmail等で使えるAPIコールスクリプト公開
Feedback API
GetSendStatistics API
配送終了
拒否されたメッセージ
Hard Bounces(永続的配送エラー)
Complaints(受信者がSpamとして処理)
配送環境管理
制限
自動でだんだんと緩和
GetSendQuota API
• 24時間毎の配送数制限
• 配送速度(秒単位)制限
Web Formから緩和リクエスト可能
Anti-Spam
配信内容はAWSにより全スキャン
DKIM, SPF, SenderIDのサポート
ISPからのフィードバックのリアルタイム監視
利用までの流れ
登録
送信元メールアドレス(ホワイトリスト)の登録
サンドボックス環境でのテスト
Amazon SES script または APIのダイレクトコール
定形形式または自由形式
production accessへのリクエスト
Amazon SES Production Access formへの入力
送信メールアドレスの登録
確認メールが届きます
確認画面
配送のリミット
同時に扱えるアドレス数は50まで
SMTPのRFCに準拠
メッセージサイズは10MBまで
配送能力制限
配送コスト
メール総数+転送量
1000通毎に0.1ドル。添付ファイル GB 当たり 0.12ドル
転送量
コスト例
20KBのメールを月間2億通
配送数課金:200 * 10^6 * 0.1 / 10^3 = 20000ドル
転送量課金:10000 * 0.15 + 22000 * 0.11 = 3920ドル
100KBのメールを毎日1000通:10.7ドル
10KBのメールを毎日1000通:3.73ドル
EC2からのAPIで配送すると一日2000通までは無料
追加情報
Amazon SES Detail Page:
http://aws.amazon.com/ses/
Amazon SES FAQs:
http://aws.amazon.com/ses/faqs/
Amazon SES Documentation:
http://aws.amazon.com/documentation/ses/
Tools:
http://aws.amazon.com/developertools/Amazon-SES
Amazon SES Production Access:
http://aws.amazon.com/ses/fullaccessrequestsuccess
Amazon SES Limit Increase:
http://aws.amazon.com/ses/extendedaccessrequest
日本のお客様からのFAQ
配送元は国内か?
現在は米国から(US-EASTから)
携帯キャリア対応?
SenderID, DKIM, SPFに対応しています
特定接続サービス等は未対応とお考え下さい
絵文字対応?
変換サービスなどはありません。
開封確認?
SESは配送機能のみの提供です。
既存メールサーバとの統合?
APIをコールするスクリプト等を使ったリレーが可能
AWSプレミアムサポート アーキテクチャ設計に関するガイダンス、ベストプラクティスも日本語でご案内できます aws.amazon.com/jp/premiumsupport/
Copyright © 2011 Amazon Web Services
ブロンズ シルバー ゴールド プラチナ
初回応答時間 12時間 4時間 1時間 15分
サポート連絡先 1人 2人 3人 無制限
24/365対応 なし なし あり あり
TEL可能 不可 不可 可能 可能
専任スタッフ なし なし なし あり
特別サポート なし なし なし あり
料金 $49 AWS利用総額の
5%
AWS利用総額の
$0~$10K: 10%
$10K~$80K: 7%
$80K~: 5%
(最低$400)
AWS利用総額の
10%
(最低$15K)
Amazon Simple Email Service (SES)とは
メール送信のためにMTAを運用する手間から開放するAWSのサービス
初期費用やコミッションなし。低価格。
配送機能のみの提供
Email配送APIの提供
Java, .NET, PHP, Perlによるスクリプトの提供
APIの直接コール(HTTPS)
スケーラブル
稼働時間とメール到達性に最適化
Amazonで証明された配送実績