Amazon SES を使ってみた
Amazon SES を実際に使用してみて気づいたことです。 実際によくドキュメントを読んだり、設定してみて初めて気づいたことです。 Amazon SES 自体については公式サイトの紹介が分かりやすいですが、 要はメール送信サーバ (メールソフトに設定する SMTP 送信サーバ) を Amazon が提供するものです。 メール配送システムの中で通常は Sendmail とか Postfix が使われている部分を置き換えるものですが、単純にそれだけではありません。 気づきにくい制約や意外と高機能な部分がありました。
送信元の「検証」が必要
ここでいう送信元とは、- エンベロープ From
- メッセージヘッダの From:
- 個別のメールアドレスの検証
- ドメインの検証
送信の上限を上げるには、申請して承認を受ける必要がある
一度は上限を上げないと、上で書いた「検証」が、送信元だけではなく送信先でも必要なので、それまではテストでしか使えません。 この作業には最大 1 営業日かかるとのことです。実際、即座には設定されません。 記入した内容によっても上限が異なるそうなので、人の目でチェックされているのかもしれません。外部へメールが送信される際、SES がエンベロープ From を書き換える
これは制限というわけではないのですが、少し意外でした。 こうすることで、SES はバウンスを自分で受け取ることができ、コンソールでバウンスの数や、存在しないアドレスの管理ができる、ということのようです。 また、SPF に関しても、SES を利用する側で気にする必要が無く、SES のエンベロープ From ドメインに SES の IP アドレスが登録されていれば良いので、Amazon 任せにすることができます。東京リージョンではまだサービスされていない
これは 2015 年 6 月現在の話です。 AWS は頻繁に新しいリージョンで新しいサービスを始める印象があるので、すぐに状況は変わるかもしれません。 https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/regions.html もちろん、日本国内から米国東部などのリージョンの SES は使用できますが、ネットワーク的に遠いことが問題になるかもしれません。送信できない場合のトラブルシューティングに役立つ機能はあまり無い
メール 1 通毎の詳しいログなどがあれば助かるのですが、そういったものは無いようです。 SES コンソールでアクセスできるのは、全般の統計的な情報のみです。SMTP の場合、何らかの暗号化が必須
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/smtp-connect.html SMTP の STARTTLS か、SMTP over SSL (TLS) のいずれかが必須のようです。 設定しようとする SMTP クライアントが、いずれかの暗号化をサポートしているかどうか、またサーバ証明書をうまく検証できる状態になっているかどうかは、確認しておいた方が良いでしょう。ウイルスチェックが行われる
既存の MTA のインフラを置き換える際に、設定済みのウイルスチェックが使えなくなるのではないかと思いましたが、どうも SES でもウイルスチェックが行われるようです。 https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/monitor-sending-activity.html拒否した送信試行数(拒否された E メールは、Amazon SES によって最初は許可されたが、E メールにウイルスが含まれていたため、後で拒否された E メールです。Amazon SES によって E メールで通知されますが、メッセージは送信されません)全般に、SES は質の低いメール (spam とか、バウンスを無視するようなシステムからのメールとか) を送出しないよう、相当に気を遣って設計されているようです。 そういう意味で、SES を使用することは、SES を使用しないシステムの設計のためにも参考になることが多いです。