◆ Amazon SES を使ってみなイカ?
AWS に新メニューが1月25日に追加されました。Amazon Simple Email Service (Amazon SES) は、その名の通り、メールを送ることが出来るサービスなのです。メールが送るといっても、そこは Amazon Web Services が提供するサービスはひと味違いまっせ。Postfix や Sendmail のような MTA 的な機能を、API を使って利用できるのです。 これまでメールを送るときは、MTA のセットアップや、外部の SMTP サーバを利用しないと送ることができませんでした。ですが、今回リリースされた Amazon SES を使えば、プログラム的にメールを送信できるので、面倒なメールサーバの調達・準備から解放されます。正直、これは画期的だと思います。
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ メールを送るためには AWS でも MTA の設定をするか
| |r┬-| | 外部の SMTP 鯖を建てる必要があるお
\ `ー’´ /
ノ \
/´ ヽ
___
/ \
/ノ \ u. \ !?
/ (●) (●) \
| (__人__) u. | クスクス Amazon SES を知らないひとってw>
\ u.` ⌒´ /
ノ \
/´ ヽ
…という状況になっていたりする訳です。
イカ、簡単に SES 概要と、実際に linux サーバからテストメールを送るまでを、チュートリアルとしてまとめてみました。
◆ Amazon SES の特長
Amazon SES の機能的な特長を簡単にまとめると、次の通り。
- シンプル! … メールを送るために特化したシステム。これまでメールを送るには、何かインストールしたり、セットアップしたり、ライセンスが必要だったり。でも、Amazon SES は単純に API を使うだけで利用出来ます。
- 高くないよ! … 前払いが不要で、使った分だけ課金される方式。しかも料金は、メールを一日にどれだけ送るかによって決まります。
- 信頼性があるよ! … Amazon SES は、当然 Amazon Web Services のデータセンタやネットワークインフラを使用。メールの送信用データは複数のデータセンタとサーバで冗長化されてるので、高い可用性があります。
- スケーラブルだよ! … 年あたり10億通のメールを捌く世界中の Amazon のウェブサイトに使われている技術がベースになってます。
- 他の AWS のサービスとの連携ができるよ!… Amazon EC2 や Beanstalk からも簡単にメールを送ることができます。
◆ 気になるお値段は?
「でも、お高いんでしょう?」という感じもあるのですが、Amazon EC2 / Beanstalk からダイレクトのアクセスであれば、Free Tier として2,000通/日 は無料で利用することができます(ただし、データ転送量は別。1GB /月まで Free Tier では無償だけれど、それ以上は課金されるので注意)。
一般的料金は、「メール 1,000 通あたり $0.1 」です。更に、データ転送量が、In 側「 $0.1/GB 」の料金が発生します。Out 側は転送量によって料金が変わっています。
- 1GB/月まで … $0.00
- ~ 10TB/月 … $0.15/GB
- ~ 40TB/月 … $0.11/GB
- ~ 100TB/月 … $0.09/GB
- ~ 150TB/月 … $0.08/GB
◆ Amazon SES のしくみ
Amazon SES の構造は、とてもシンプル。
クライアント側のアプリケーションが、API を使い Amazon SES にメール送信リクエストを送ります。次に、Amazon SES はリクエストを処理し、指定されたパラメータを元にしてメールの配送を開始します。あとは通常のインターネットを経由し、メールが配送されます。もしメールの受信者がいない場合は、バウンスメールが送信者のアドレス宛に戻ってきます。
※ 詳細は Developer Guide 参照
さて、では、実際に Amazon SES を使ってみましょう! 以下の手順では、コマンドラインから Amazon SES を使えるようになるまでを纏めてみました。
◆ Amazon SES チュートリアル。メールを SES で送ってみよう!
Amazon SES を使うには、まずサインアップを行います。
- http://aws.amazon.com/sec/ にアクセス
- ページ右側にある 【 Sign Up For Amazon SES 】 ボタンをクリック
- 料金説明が表示されます。【 Complete Sign Up 】をクリック
- 画面が切り替わります
- 同時に「Amazon Simple Email Service Sign-Up Confirmation」という件名のメールも届きます。これでサインアップは完了です。
サインアップの次に「Amazon SES」用のメールアドレスの「認証」を行う必要があります。From: 部分が認証されたメールアドレスでないと、Amazon SES を使ってメールを送ることは出来ません。手順は次の通りです。
- Security Credentials の確認
Access Key ID と Secret Access Keys を確認しておきます。確認するには、AWS のサイトの 「 Account 」→ 「 Security Credentials 」 を選びます(URL はこちらです)。API を使うときにはおなじみですね。どんな操作もできる魔法の鍵のようなものなので、取り扱いには十分気をつけて下さい。
- Amazon SES Developer Tools から、ツール群 Amazon Simple Email Service Script をダウンロードして、展開します。私の場合は、次のように作業しました。
$ cd $ wget http://aws-catalog-download-files.s3.amazonaws.com/AmazonSES-2011-01-24.zip $ unzip AmazonSES-2011-01-24.zip $ cd AmazonSES-2010-12-01
- それから、Access Key ID と Secret Access Key を記録するファイルを作成します。
$ vi ./aws-credentials
- 中身は、次のように記述します。
AWSAccessKeyId=先ほど確認したAceess Key ID AWSSecretKey=先ほど確認したSecret Access Key
- 認証用のコマンドを実行します。
$ ./ses-verify-email-address.pl -k ./aws-credentials -v 認証したいメールアドレス
※実行する環境によっては、Perl のモジュールが出ないと警告が出る場合があります。私の場合は、次のように表示されました。
$ ./ses-verify-email-address.pl -k ./aws-credentials -v zem@pocketstudio.jp $ Can't locate object method "new" via package "XML::LibXML::XPathContext" (perhaps you forgot to load "XML::LibXML::XPathContext"?) at ./ses-verify-email-address.pl line 74
エラー内容は「XML::LibXML::XPathContext」というモジュールが無いよ、というものなので、CPAN からサクッとインストールしました。
# cpan XML::LibXML::XPathContext
-
実行時にエラーがなければ、指定したアドレス宛に「Amazon SES Address Verification Request」というメールが届いています。メール本文のリンクをクリックすると、認証が完了し、次のように画面が切り替わります。
以上でアドレスの認証は終わりです。上手くいきましたか?
◆ 実際にメールを送ってみる
この流れで、実際にメールを送ってみることも出来ます。認証済みのアドレスが me@example.jp であれば、
$ ./ses-send-email.pl -k ./aws-credentials -s "Test of Amazon SES" -f me@example.jp \
me@example.jp < msgbody.txt
このように実行します。ちょっと待てば、すぐにサンプルのメールが届くはずです。本文「This message was sent using Amazon SES.」と書かれたメールが届きましたか?
ちなみに、登録直後はサンドボックス環境しか利用出来ず、制限がかかった状態です。認証アドレス意外にメールを送信しようとしても「Email address is not verified」とエラーが出て送信出来ません。テスト環境以外にメールを送りたい場合は、以下の申請用フォームからリクエストを送る必要があります。
Request for Production Access to Simple Email Service
http://aws.amazon.com/ses/fullaccessrequest
所定の項目を記入して、【 submit 】 を押すと、リクエストが送信されます。申請は24時間以内に処理されるようで、私の場合は数時間後には使えるようになっていました。
申請後は、登録したアドレス意外にもメールを送ることができるようになります。
◆ 日本語のメールを処理したい
ses-send-email.pl では、メールを送ることができますが、恐らく多くの方が本文の文字化けにハマると思います。これはスクリプトが多言語環境を意識されてないようなので、スクリプト中 30 行目あたりに
binmode STDIN, ":utf8";
このように書いておけば回避できます。別の方法としては -r オプションを付けて raw モードで送るのも有りですね。どうやら Amazon SES の内部的には UTF-8 で処理されているようなので、おまじないみたいなもの、と覚えておくと幸せになれるかもしれません。
◆ 感想とか、次回予告…!?
というわけで、どうですか、みんなで使ってみなイカ?という訳でまとめてみました。内容が分かりにくい、リクエストなどありましたら、お知らせ下さい。次回があるかもしれません。ネタ的には、スクリプトからのメール送信を極めるとか、ケータイに送るための Sender ID 指定(BINDなら IN TXT “v=spf1 ~” の中に include:amazonses.com を記述)などあります。
個人的には、Amazon SES はとっても面白いと思います。特にインフラエンジニア向けにとって。普通、メールを送ろうとすると MTA のセットアップは必要なのですが、「メールを送る」という目的を達成するためのオプションが、Amazon SES によって選択が広まったと思います。特に、ローカル環境や Windows Server など、一筋縄にメールを送ることが出来ない環境からも、サクッとメールを送ることが出来るのは大きいと思います。僕自身は、この機能のリリースを見たときに
/ ,.-――┴- 、
. / | /: : l、: : : ;l: : : : :\
┏┓ ┏━━┓ / :! ./: : :、: :!_\;/ _V\ : |` ┏━┓
┏━┛┗━┓┃┏┓┃. .〈 ___V: : : :|∧| __`|∨. ┃ ┃
┗━┓┏━┛┃┗┛┃┏━━.` ̄丁 |: |:l :| __ 〃⌒V|..━━━━━┓┃ ┃
┏━┛┗━┓┃┏┓┃┃ ヽ|: NV:!〃⌒__ //}|. ┃┃ ┃
┗━┓┏━┛┗┛┃┃┗━━━━ /: :{_|: :|//f´ ヽ} 八━━━━━┛┗━┛
┃┃ ┃┃. _/: :/:/ : ト .丶___,ノイ\_:\. ┏━┓
┗┛ ┗┛ __,/: :_;/: /,.イ⌒ヽ!ヽ: ト、\ !: |__. ┗━┛
|: : : : :/__/: ;.イ:/ ,リ }、\| : | └┐:|__
/: : | ̄ 「: :__∧fニyイ|:〉 Vにう: 〉 \/
. \/ _,|: :|_〉:(/:/ ,Vト-‘ :|
\/―ヘ《O\___/O〉 ̄
>、O_O,.イ
(/  ̄ ̄|_ノ
という妙なうれしさを覚えました。
是非、みなさんもチャレンジしてみて下さいね。
/ ヽ
// ‘, おれたちにできない事を
| { _____ | 平然とやってのけるッ!
(⌒ヽ7´ ``ヒニ¨ヽ
ヽ、..二二二二二二二. -r‐”′ そこにシビれる!
/´ 〉'”>、、,,.ィ二¨’ {. ヽ _ _ あこがれるゥ!
`r、| ゛._(9,)Y´_(9_l′ ) ( , -‘′ `¨¨´‾`ヽ、
{(,| `”’7、,. 、 ⌒ |/ニY { \
ヾ| ^’^ ′-、 ,ノr’)リ ,ゝ、ー`——-‘- ∠,_ ノ
| 「匸匸匚| '”|ィ’( (,ノ,r’゛へ.‾‾,二ニ、゛}了
, ヘー‐- 、 l | /^”⌒| | | ,ゝ )、,>(_9,`!i!}i!ィ_9,) |人
-‐ノ .ヘー‐-ィ ヽ !‐}__,..ノ || /-‐ヽ| -イ,__,.>‐ ハ }
””//ヽー、 ノヽ∧ `ー一’´ / |′ 丿! , -===- 、 }くー- …_
//^\ ヾ-、 :| ハ ‾ / ノ |. { {ハ. V’二’二ソ ノ| | `ヽ
,ノ ヽ,_ ヽノヽ_)ノ:l ’ーー<. / |. ヽヽヽ._ `二¨´ /ノ ノ
/ <^_,.イ `r‐'゛ :::ヽ \ `丶、 |、 \\'ー--‐''"//
\___,/| ! ::::::l、 \ \| \ \ヽ / ノ
参考URL:
- Amazon Simple Email Service (Amazon SES)
http://aws.amazon.com/ses/ - Amazon Simple Email Service (SES)
http://aws.amazon.com/documentation/ses/ - 【AWS発表】 Amazon Simple Email Serviceの発表 – Amazon Web Services ブログ
http://aws.typepad.com/aws_japan/2011/01/introducing-the-amazon-simple-email-service.html
Pingback: Tweets that mention Amazon SES(Simple Email Service)でメールを送ってみなイカ? | Pocketstudio.jp log3 -- Topsy.com