AWS SES(Simple Email Service)のメモ
概要
料金
無料枠
- SES の使用開始後の最初の 12 か月間は、毎月最大 3,000 件のメッセージ料金が無料
- 無料枠対象
- 送信 E メール
- 受信 E メール
- Virtual Deliverability Manager の送信 E メール処理
メッセージ=基本的には1つの送信や受信するメール
送信と受信合算して月3000件までが無料ということ。
Virtual Deliverability Manager の送信 E メールについては1つの送信で2メッセージになる。
料金体系
サービスタイプ | 料金 | 追加料金 |
---|---|---|
アウトバウンドメール | 0.10 USD/1,000 件の E メール | 送信する添付ファイルの 1 ギガバイト (GB) のデータごとに 0.12 USD* |
インバウンドメール | 0.10 USD/1,000 件の E メール | 着信 E メールチャンク 1,000 件につき 0.09 USD (詳細については、「料金の詳細」をご覧ください) |
Mail Manager | ||
-オープンイングレスエンドポイント** | エンドポイントあたり 50 USD/月 | |
-E メール処理*** | 0.15 USD/1,000 件の E メール | 着信 E メールチャンク 1,000 件につき 0.09 USD (詳細については、「料金の詳細」をご覧ください) |
-アーカイブ | 2 USD/GB (取り込まれた E メール) | 0.19 USD/GB/月 (アーカイブの保存と検索) |
-E メールのアドオン | 選択したアドオンソリューションによって異なります |
アウトバウンドメールは送信メール、インバウンドメールは受信メール
ざっくり1,000件単位で料金が増えていくと思っておけばよい。
その他
- 送信先のIPを固定(専用IPを使用)したい場合、1IPあたり月24.9ドル
- 送信メールの添付ファイルデータ 1 ギガバイト (GB) ごとに 0.12USD
- 受信メールのデータ量256Kバイトで受信メールチャンク 1 単位として計算し、1000チャンク毎に0.09ドル、256K未満の場合はチャンク0扱い
ガイド
開始方法
個別メールの場合
アドレスを登録すると、登録したアドレスに承認用のメールが送られてくるので、メールのリンクをクリックして送信可能に。
コンソールからテストメール送信確認などして送信テスト可能。
ドメインの場合
- ドメインを登録したあと、AWS側でドメインの検証が行われる。
- ドメインの検証が通るには、おそらくDKIMの設定をDNSに登録し、それが検証通らないとダメそう。
DNSの設定をしくじって1日程度たってから間違いに気づきDNSを修正したが、3日たっても検証通らず検証エラーに。
検証エラーになると、再検証の依頼を出せるが、結局1日たっても検証されないので、一度SESのドメイン設定を削除して、作り直したら1時間ほどで検証通りました。 - 検証には最大3日掛かると注意書きがあるが、DNS側のTTLにもよるが、日本で設定している分には数時間~せいぜい1日たっても検証通らない場合は設定がおかしいと思った方が良い。
本番用は上記の通り時間を要したが、STG用に作成した設定は1時間立たずに検証済みになりました。 - ちなみに、SESを再作成した際、DKIMのDNS登録内容が変わるかと思いましたが、削除前と同じ値。都度ランダムではなく、指定ドメインで固定なのかも?
- DKIMの設定値はTXTレコードではなく、CNAMEに設定する。設定内容はコンソールですべて確認可能なので、そこからコピペ可能。レコード情報をCSVダウンロードも可能なので、DNS管理者が別だったりする場合はダウンロードした内容を共有してあげるのも良いでしょう。
Laravelからの使用
ただ送るだけなら、AWSアカウントのキーとリージョンを環境変数で指定して、メール用の環境変数にチャネルses、sesのhostを指定したら基本OK
Fromのアドレスは、普通のサービスだと自身のドメインを指定すると思いますので、
事前にSESにカスタムFROM用ドメインを登録し、MXレコードやSPF用のレコードをDNSに登録して検証済みになっておく必要があります。
昨今のご時世的にはSPF、DKIM、DMARCはすべて設定しておくのが良いでしょう。
これがまとまっていると思います。
メール受信
受信可能なリージョンが意外と少ないので注意。
東京は利用可能。東京からは送れないという1年位前の記事も見たので、割と最近受信できるようになったのかもしれません。
地域名 | リージョン | メール受信エンドポイント |
---|---|---|
米国東部(バージニア州北部) | us-east-1 | inbound-smtp.us-east-1.amazonaws.com |
米国東部(オハイオ) | us-east-2 | inbound-smtp.us-east-2.amazonaws.com |
米国西部(オレゴン) | us-west-2 | inbound-smtp.us-west-2.amazonaws.com |
アジア太平洋(ジャカルタ) | ap-southeast-3 | inbound-smtp.ap-southeast-3.amazonaws.com |
アジア太平洋(シンガポール) | ap-southeast-1 | inbound-smtp.ap-southeast-1.amazonaws.com |
アジア太平洋(シドニー) | ap-southeast-2 | inbound-smtp.ap-southeast-2.amazonaws.com |
アジア太平洋(東京) | ap-northeast-1 | inbound-smtp.ap-northeast-1.amazonaws.com |
カナダ(中部) | ca-central-1 | inbound-smtp.ca-central-1.amazonaws.com |
ヨーロッパ(フランクフルト) | eu-central-1 | inbound-smtp.eu-central-1.amazonaws.com |
ヨーロッパ(アイルランド) | eu-west-1 | inbound-smtp.eu-west-1.amazonaws.com |
ヨーロッパ(ロンドン) | eu-west-2 | inbound-smtp.eu-west-2.amazonaws.com |
SESでメール受信するためには、MXレコードに上記のメール受信エンドポイントを登録する必要があります。
送信用(カスタムFROM用)とは別に登録が必要です。また、送信用と同じサブドメインにせず別ドメインになる点、注意しましょう。
設定例:
送信用:mail.example.com
受信用:example.com
メール受信ルール
あとで
SESのメール受信
いわゆるメーラーのような受信ボックス的なものではない。
メアドやドメインを事前に登録しておき、そこに対してメールが送られたことをきっかけにAWSのサービスを起動する系の統合機能
受信ルールを設定することで実現する。
受信ルール
送信同様、個別のアドレスかドメインを指定し、指定先にメールを受信した後のアクションを取り決めていく。
アクションは1つの受信ルールに対して複数設定が可能。
アクションの並び順を指定できるため、並列で動作するというよりはシーケンシャルに順番に動作する感じか? 調べ中
IP アドレスフィルタも可能
アクション
- Amazon S3 バケットへの配信
- Amazon SNS トピックへの公開
- Amazon WorkMail への送信
- Amazon Lambdaの実行
受信ルールセット
受信ルールセットは、複数の受信ルールをひとまとめにする入れ物。
- 受信ルールを作るために、まずは受信ルールセットを作る必要があります。
- 受信ルールセットを有効化することで受信ルールが適用されます。作成時は無効状態
- 有効化できる受信ルールセットはリージョン単位で1つのみ
- 受信ルールセット内の受信ルールは順番を持ち、並び順の上から順に受信ルールを評価していきます。受信ルールに該当するアドレスやドメインがあればアクションを実行。
- 順序が上の受信ルールを実施した後も、次の受信ルールを評価して、該当すればアクションを実行、とすべての受信ルールを評価するまで行います。
参考
概要
概念とユースケース(ここ見るとイメージ沸きやすい)メールの転送
直接的な転送機能はSESとしては、受信ルールを用いてWorkMailへ送信するのが王道か。
WorkMail
- 1ユーザあたり4ドル/月かかる
- 東京リージョンでは提供されていない。下記3リージョンのみ(2024年6月時点)
eu-east-1:米国東部 (バージニア北部)
eu-west-2:米国西部 (オレゴン)
eu-west-1:欧州 (アイルランド)
小規模だったり、送信メインで受信はほぼない、みたいだとコスト面で微妙
海外リージョンを通ることに抵抗がある場合も現状選択できない。
Lambda実行アクションを用いるのがよさそう。
お試しで実装してみると、SESからLambdaに送られるイベントの中にはメール本文が含まれていないため、S3への配信アクションもセット必須となりそう。
参考