■ はじめに
AWS の Emailサービス である Amazon SES (Simple Email Service) について扱う。
目次
【1】Amazon SES (Simple Email Service) 1)料金 2)サポート・リージョン 【2】制限 1)送信制限の管理 2)E メールのサイズ制限 3)送信数制限 4)受信できるメッセージにはサイズの制限 【3】使用上の注意 1)バウンス率/苦情率について 【4】JavaでのMail送信 1)AWS SDK for Javaを使う方法 2)JavaMailを使う方法 【5】Java以外でのMail送信 【6】トラブルシューティング 1)エラー「Email address is not verified」が発生
【1】Amazon SES (Simple Email Service)
* Eメール送受信(昔の情報だと送信のみサポートだが、現在は受信もサポート) * Transport Layer Security(TLS)を使用して暗号化 => メール送信に使用される TLS バージョン : TLS v1 のみをサポート
1)料金
https://aws.amazon.com/jp/ses/pricing/
2)サポート・リージョン
* Tokyoリージョンは、2017/04/29現在時点ではサポートしてない?
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/regions.html#region-select
* 米国東部(バージニア北部) * 米国西部 (オレゴン) * 欧州 (アイルランド)
【2】制限
* 詳細は以下の公式サイトを参照のこと
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/limits.html
1)送信制限の管理
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/manage-sending-limits.html
2)E メールのサイズ制限
* 最大10MB のEメールメッセージを送信可能
3)送信数制限
* 送信するそれぞれのメッセージ当たり、最大 50 通の受信者まで (To:、CC:、 Bcc: の合計受信者数が 50 まで)
4)受信できるメッセージにはサイズの制限
* メッセージを Amazon S3 バケットに保存するよう選択した場合、 メッセージの最大サイズ (ヘッダーを含む) は 30 MB * Amazon SNS 通知を介してメッセージを受信するよう選択した場合、 メッセージの最大サイズ (ヘッダーを含む) は 150 KB
【3】使用上の注意
http://d36cz9buwru1tt.cloudfront.net/jp/wp/AWS_Amazon_SES_Best_Practices.pdf
* 基本的に、バウンス率/苦情率を以下のように維持する必要がある + ハードバウンス率は 5% 以下 + 苦情率は 0.1% 未満
1)バウンス率/苦情率について
バウンス(不達、Bounce)とは?
1) ハードバウンス (★こっちが重要★) =>「メールボックスが存在しない」などの恒久的な理由で、メールが到達しなかった場合 2) ソフトバウンス =>「メールボックスの容量超過」などの一時的な理由で、メールが到達しなかった場合
苦情(Complaint)とは?
* メールクライアントが、メールを「スパムとして報告」ボタンをクリックすると、 プロバイダ(ISP;Internet Services Provider)はこのことを苦情として記録する。
対策
* 以下の公式サイトを参照
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/best-practices-bounces-complaints.html
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/notifications-via-email.html#notifications-via-email-enabling
【4】JavaでのMail送信
1)AWS SDK for Javaを使う方法 2)JavaMailを使う方法
1)AWS SDK for Javaを使う方法
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-using-sdk-java.html
2)JavaMailを使う方法
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/send-using-smtp-java.html
* JavaMail 1.5 以上が必須?推奨? * Transport Layer Security (TLS)が必要 * ポート25, 465, 587が使える
ポート番号 | 説明 | 備考 |
---|---|---|
25 | SMTPの標準ポート | |
465 | SMTP over SSL (SMTPs) | 最初から暗号化して通信を行う |
587 | SMTP TLS/STARTTLS | セッション開始時は平文。クライアントから STARTTLS コマンドを送信した時点で暗号化。 |
http://www.atmarkit.co.jp/ait/articles/0811/21/news170.html
JavaMailでTransport Layer Security (TLS)を使う設定
Properties props = new Properties(); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.starttls.required", "true");
詳細は以下の関連記事を参照のこと
https://dk521123.hatenablog.com/entry/36860639
https://dk521123.hatenablog.com/entry/36867883
【5】Java以外でのMail送信
以下のMail送信については、以下の関連記事を参照のこと。 * Python * AWS CLI
Amazon EMR ~ EMR内部 から SES で Email を送る ~
https://dk521123.hatenablog.com/entry/2021/07/09/115553
【6】トラブルシューティング
* 例外が発生したら、以下の公式サイトが役に立つかも...
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/smtp-response-codes.html
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/ses-errors.html
実際に以下の例外が発生して、参考にした。
1)エラー「Email address is not verified」が発生
例外内容
STARTTLS is required but host does not support STARTTLS 554 Message rejected: Email address is not verified. The following identities failed the check in region EU-WEST-1: xxx@yyyy
原因
Amazon SES で確認していない E メールアドレスまたはドメインから E メールを送信しようとしているため。 => SES で、Emailを送受信する際には、 一度、そのメールを検証(確認)する必要がある # 指定したアドレスを変えたり、 # 通るアドレスを自分自身で送るなどして切り分けてみる
解決案
* AWSコンソールの「SES」画面でEmail検証を行う。 => 詳細は、以下の公式サイトを参照。
https://docs.aws.amazon.com/ja_jp/ses/latest/dg/creating-identities.html
参考文献
公式サイト
http://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/Welcome.html
http://d36cz9buwru1tt.cloudfront.net/jp/wp/AWS_Amazon_SES_Best_Practices.pdf
その他のサイト
http://dev.classmethod.jp/cloud/aws/amazon-ses-build-and-practice/
http://qiita.com/zaru/items/4be9b55ba807670cf224
http://blog.takuros.net/entry/20130625/1372168404
https://www.cuenote.jp/library/marketing/aws.html
Javaでの送信
http://kumasoft.blogspot.jp/2014/01/javamail-amazonses.html
http://dev.classmethod.jp/cloud/display-sender-for-aws-amazon-ses/
http://frmmpgit.blog.fc2.com/blog-entry-129.html
関連記事
Amazon SNS ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2021/06/03/175213
Amazon SNS ~ 基本編 / Email ~
https://dk521123.hatenablog.com/entry/2021/10/14/092313
Amazon EMR ~ EMR内部 から SES で Email を送る ~
https://dk521123.hatenablog.com/entry/2021/07/09/115553
Apache Airflow ~ 通知あれこれ編 ~
https://dk521123.hatenablog.com/entry/2021/10/06/141323
JavaでEmail ~ JavaMail / Text ~
https://dk521123.hatenablog.com/entry/2016/07/16/222422
JavaでEmail ~ JavaMail / 添付ファイル ~
https://dk521123.hatenablog.com/entry/2016/07/17/023459
JavaでEmail ~ SMTP認証 ~
https://dk521123.hatenablog.com/entry/2016/11/07/215251
JavaでEmail ~ SMTP認証 / DIGEST-MD5 ~
https://dk521123.hatenablog.com/entry/2016/12/07/222229
JavaでEmail ~ JavaMail / TLS ~
https://dk521123.hatenablog.com/entry/2017/05/03/163219
JavaでEmail ~ JavaMail / Return-Path・Errors-To ~
https://dk521123.hatenablog.com/entry/2017/05/07/000344