- 投稿日2011-01-26 (水)
- 更新日2011-01-27 (木) 13:35
- サーバー技術情報
amazon AWSに新しいサービスであるAmazon Simple Email Serviceが発表されましたので
早速、試験環境を使用してみましたのでメモです
概要
amazonのEmail送信サービスです。年間10億通のメールを送っているらしいAmazonのテクノロジーを利用して
マーケティングの為の大量のメール配信ソリューションの構築に最適、だそうです。
要はメルマガ等のメール配信サービスに使用を想定されてるようです。
簡単に使用してみた所、大まかなイメージとしては
smtpサーバーがもらえる!といった形ではなく、
こちら側からメール内容を含む情報をxml形式でamazon側へ送信し、
その内容に則りamazon側がメール配信を行ってくれる、といったイメージでしょうか。
「不達で戻るバウンスメール、送信試行の失敗と成功、スパム申し立てなどの通知の機能」
「送信メッセージを精査してインターネットサービスプロバイダー(ISP)の基準を満たしていることを確認し、受信者のスパム用フォルダに振り分けられないにする」
なども備えているようです。
SESへのサインアップ
今回は「Get Started with Amazon SES」という事でこちらを参考にAmazon Simple Email Service Scriptsを利用して使ってみました。
①Amazon SESのサインアップ
http://aws.amazon.com/ses へアクセスし、SESサービスにサインアップします。
②Access Key ID と Secret Access Keyの取得
http://aws.amazon.com のAccountからSecurity Credentialsへ移動。
アクセス証明書のアクセスキータブをクリックし、アクセスキーを作成し、
アクセスキーIDとシークレットアクセスキーをメモします
SESを利用する
以下の操作は適当なサーバーで行います。
③アクセス証明書ファイルを作成
サーバーの任意の場所に以下のような内容が書かれたテキストファイルを作成します。
名前は何でもいいのですが、今回はaws-credentialsというファイル名で作成しました。
AWSAccessKeyId=アクセスキー AWSSecretKey=シークレットキー
アクセスキーとシークレットキーは②でメモしたものを入力して下さい。
④Developer Tools の Amazon Simple Email Service Scripts を取得
http://aws.amazon.com/developertools/Amazon-SES からAmazon Simple Email Service Scriptsを取得します。
任意の場所で展開して下さい。
ses-get-stats.pl 情報を取得 ses-send-email.pl メールを送信 ses-verify-email-address.pl メールアドレスを認証 SES.pm 共通モジュール
また、これらのスクリプトはPerl 5.6以上でのみ動作し、
いくつかのモジュールが必要になってきます。
スクリプト実行の際にCant Locate @NIC … といった形のエラーが出たら
適宜CPAN等からモジュールをインストールして下さい。
以下のコマンドを実行すると必要なモジュールが全て入るようです。
(READMEファイルから引用) perl -MCPAN -e 'install Digest::SHA' perl -MCPAN -e 'install URI::Escape' perl -MCPAN -e 'install Bundle::LWP' perl -MCPAN -e 'install MIME::Base64' perl -MCPAN -e 'install Crypt::SSLeay' perl -MCPAN -e 'install XML::LibXML'
⑤メールアドレスの登録
現在は試験環境である為、受信/送信共に認証されたメールアドレスにしか送信できません。
まずはテストを行うメールアドレスの認証をAmazon Simple Email Service Scriptsを行います。
以下のようなコマンドで認証が可能です。
ses-verify-email-address.pl -k aws-credentials -v user@example.com
コマンドが正常に終了すればuser@example.com宛へ認証URLを含めたメールが送信されますので
受信を行い、URLをクリックして認証をします。
メールの送信
メールの送信は以下のコマンドを実行します。現在、認証を行ったメールアドレスは「user@example.com」だけである為、
送受信共に同じメールアドレスを指定しています。
ses-send-email.pl -k aws-credentials -s "Test of Amazon SES" -f user@example.com user@example.com < msgbody.txt
msgbody.txtには送信したいメッセージ内容を記述しています。
また送信元のドメインはSPFレコードへ
include:amazonses.com
を記述しておくとよいでしょう。
本番環境リクエスト
現在は試験環境である為、送信先が認証されたアドレスのみであったり1日200メッセージまでであったり、、といった制限があります。
十分にテストが出来たら本番環境申請を以下のフォームより行います。
SES Production Access Request Form
本番環境へのアクセスが許可されると、送信先アドレスを認証する必要がなくなり、
どのアドレスにもメールを送れるようになります。
基本使用例
公式サイトでは「利用しているMTAからses-send-email.plを呼び出して使用するような形」 や、
「Amazon SES APIを利用してアプリケーションから送信」
といった形で利用できるとされていました。
料金
【送信数】
1000件につき$0.10 (EC2上からであれば2000件まで無料)
【転送量】
In
1GBにつき$0.10
Out
First 1 GB per Month $0.00 per GB
Up to 10 TB per Month $0.15 per GB
Next 40 TB per Month $0.11 per GB
Next 100 TB per Month $0.09 per GB
Over 150 TB per Month $0.08 per GB
問題点・疑問点
・日本語のタイトルや本文にすると文字化けまだ開発環境としてしか利用していないが
Amazon Simple Email Service Scriptsを利用した送信方法だと
日本語のタイトルや本文にすると文字化けした。
->解決策
Rawモードを使い、メール本文をファイルとして渡す。
エンコード済みのメール本文自体をファイルとして渡し、送信する。
(参考)Amazon SES(Simple Email Service)で日本語メールを出す – log4moto
以下の例だと タイトル「テストメール」 本文「これはテストメールです」として無事文字化けせず受信出来た。
cat msgbody.txt ------------------------------- Date: Wed, 26 Jan 2011 19:49:03 +0900 From: user@example.com To: user@example.com Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrGyhC?= Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit ^[$B$3$l$O%F%9%H%a!<%k$G$9^[(B ------------------------------- ses-send-email.pl -k aws-credentials -r < msgbody.txt
・携帯電話への対応
日本ではメルマガと言えば携帯電話への配信がかなり大きいけど、
携帯電話への大量配信についてどのように対応していくのか。(携帯への配信に使えるのか)
まだまだ検証していきたいですね。
ひとまず本番環境の申請を行いたいと思います。
コメント:0
トラックバック:0
- この記事のトラックバックURL
- http://www.ahref.org/tech/server/server-tips/781.html/trackback
- この記事へのリンク
- エーエイチレフ linuxサーバー技術情報 からの記事 Amazon Simple Email Service (Amazon SES)を使ってみました















関連記事