先月、AWSのDNSサーバーサービス「Amazon Route53」について書きましたが、今回はAWSのメール送信サービス「Amazon SES」についてになります。

サーバーからのSMTPプロトコルによるメール送信

サーバーからメールを送信するためには、送信用メールサーバーのミドルウェアが必要でした。
有名なのはPostfixやSendmailになります。

Amazon Linux1の頃は、Postfixを構築して、EC2サーバーからメールを送信していました。
通常はグローバルIPは固定になるので、万が一当該IPアドレスがスパム判定されると、そのサーバーから送信されたメールが迷惑メール扱いになるというリスクが介在していました。

Amazon Linux2が発表された頃から、AWSではEC2サーバーからのメール送信を基本禁止としました。
その代わり、AWSが用意したAmazon SESを使ってね、という方針に変更になりました。

Amazon SESとは

Amazon SESは(Amazon Simple Email Service)の略で、既存ドメインまたは既存メールアドレスを利用して、メール配信が可能なサービスです。
ホームページのお問い合わせの自動返信や、会員サイトであれば、会員登録時の自動返信メール、会員への一斉メールの配信等で利用可能です。

以下は、AWS公式の説明になります。

"Amazon SES はクラウドベースのEメールサービスプロバイダーで、あらゆるアプリケーションに統合して大量のEメールを自動化することができます。
Eメールソフトウェアを使用して取引Eメール、マーケティングEメール、ニュースレターEメールのいずれを送信する場合でも、お支払いいただくのは使用した分のみです。
Amazon SES は、専用IPアドレス、共有IPアドレス、所有IPアドレスなど、さまざまなデプロイもサポートしているEメールツールです。
送信者統計に関するレポートやEメール配信ツールは、企業がすべてのEメールを有効に活用するのに役立ちます。"

Amazon SESの利用方法

まずは送信ドメインまたは送信メールアドレスの登録が必要です。
送信ドメインを登録すれば、そのドメイン配下のアドレスに関しては、登録をしなくても利用可能です。
個別のアドレスでしかSESを使いたくないという場合は、送信メールアドレスの登録のみを行うイメージです。
DKIM認証はAWS側で発行してくれます。
DNSにAmazon Route53を利用していれば、連携されます。

初回設定時はサンドボックスが設定されており、送信制限がかかっているので、解除申請が必要になります。
これ、毎回AWSアカウント毎に必要なので、ちょっとだけめんどくさいです。

無事にサンドボックスが解除されたら本番利用可能です。
SESの無料枠は通常のアカウント開通から1年の無料枠とは別に用意されています。

"Amazon EC2またはAWS Lambda経由でホストされているアプリケーションからAmazon SESを呼び出した場合、月に62,000通のメッセージまでは無料で送信できます。この無料利用枠の有効期限はありません。"

ただし、無料枠適用外の場合でも、送信する各1,000通のEメールにつき0.10USDなので、コスト的には気になる部分はないですね。

無料枠適用外の使い方として、ローカルのメール配信アプリ等で、一斉配信をしたいケースがあります。
この場合、SESでSMTPアカウントを作成して、アプリケーションに設定することで、SES経由でメールが送信可能になります。

実際にフォローウインドでも、メルマガ配信サービスや一斉送信サービスは、SESではなく外部の専門のサービスを利用することが多いですが、やろうと思えばSESでも構築は可能です。
ただ構築の工数がかかるので、外部のサービスにAPIで連携しちゃった方が簡単なことが多いです。

外部サービスですと、ラクスライトクラウド社のブラストメールブラストエンジン、あとはラクス社の配配メールや構造化研究所社のSendGridなどの導入相談が多いです。