Amazon SES を使ってみた



Amazon SES を実際に使用してみて気づいたことです。
実際によくドキュメントを読んだり、設定してみて初めて気づいたことです。

Amazon SES 自体については公式サイトの紹介が分かりやすいですが、
要はメール送信サーバ (メールソフトに設定する SMTP 送信サーバ) を Amazon が提供するものです。
メール配送システムの中で通常は Sendmail とか Postfix が使われている部分を置き換えるものですが、単純にそれだけではありません。
気づきにくい制約や意外と高機能な部分がありました。

送信元の「検証」が必要

ここでいう送信元とは、

  • エンベロープ From
  • メッセージヘッダの From:

の両方です。

エンベロープ From の設定が適切でない Web アプリケーションはよくあるので注意が必要です。
また、メッセージヘッダの From: が、アプリケーションの機能で任意に設定できるようなものだと、それら全てを検証しなければならず問題になるかもしれません (そういった場合のためかどうか、Reply-To: ヘッダは検証されないことになっていますので、From: の代わりにそちらを使う手はあります)。

検証の具体的な方式としては、

  • 個別のメールアドレスの検証
  • ドメインの検証

があるようです。
(ドメインの検証はやったことが無いので内容がよく分かりません)

個別のメールアドレスの検証というのは、AWS の SES コンソールで 1 メールアドレスを入力すると、そのメールアドレスへ http (https だったかも) のリンクを含むメールが送られるので、そのリンクをクリックすると、ブラウザで HTTP アクセスして、認証が完了するというものです。
当然、そのメールアドレスは誰かが受信できるようにしておき、この検証作業について理解させておく必要があります。

送信の上限を上げるには、申請して承認を受ける必要がある

一度は上限を上げないと、上で書いた「検証」が、送信元だけではなく送信先でも必要なので、それまではテストでしか使えません。

この作業には最大 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 を使用しないシステムの設計のためにも参考になることが多いです。

ITエンジニア募集中!

キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。

下記よりITエンジニア募集の採用情報をご覧いただけます。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA