EC2のメール送信について自社や常駐先での質問が意外に多かったので、メール送信制限や具体的なユースケースを例にしたベストプラクティスをまとめてみました。
メール送信制限
EC2はデフォルトでTCP25のトラフィックを制限されています。
世界中で送信されているメールの6割以上がスパムメールだといわれており、AWS利用者が意図せずスパム送信に加担するのを防止しています。
ちなみに、VPN経由でオンプレ側のメールサーバにメール送信をする場合もトラフィック制限の対象となります。
つまり、EC2より外向きTCP25番ポートを宛先とした送出を実施される場合、経路に関わらず制限が適用されます。
※20190521_AWS-BlackBelt_Amazon SES 抜粋
よくある勘違い
実はトラフィックが制限されていても、メール送信は成功する場合があります。
そのため、単発テストでメール送信が成功した場合は、トラフィック制限に気がつくのが遅れます。
ちなみに、成功率は不明のためメール送信制限解除や、Amazon SES等を利用するようにしましょう。
以下にメール送信方法をまとめたので参考にしてみてください。
メール送信方法
メール送信方法は以下3パターンのいずれかを選択します。
- Amazon SESを利用する
- サードパーティ製のSaaS製品を利用する
- 専用のメールサーバを構築する
上記のうち「専用のメールサーバを構築する」は他2つが要件を満たさない場合に検討しましょう。
その理由はメールサーバを独自で構築・管理・運用するのは大変で、技術負債になりやすいからです。
多くの企業にとってはメール送信は目的ではなく手段なので、マネージドサービスやSaaS製品をうまく活用して運用負荷を軽減しましょう。
ユースケース
メール送信は送信先によって方法やセキュリティを選択するのが好ましいです。
今回は構築に携わった案件をベースにユースケースをまとめました。
1. Webサイトの問合せフォーム返信メール
要件
- 社外向けWebサイト
- 問合せフォームに入力されたメールアドレスに自動返信
手順
- Amazon SES導入。導入手順はクラメソ様のAWS再入門ブログリレー Amazon SES編がわかりやすいです。
- Amazon SESとPostfixの連携
- Amazon SESから携帯キャリアメールに届く確率を上げるため、SPFレコード追加
- SPFレコード追加方法はこの記事を参考にしました。
- CloudWatch Alarmにてバウンス率や苦情率の監視追加
- スパムメール対策のため問合せフォームにreCAPTCHA等の仕組み導入
メリット
- Amazon SESの料金はEC2からのメールは月に62,000件まで無料であり、CloudWatchアラームの料金を含めても、低コストで運用可能
- EC2 Eメール上限緩和 / 逆引き(rDNS)設定の申請不要
デメリット
- サンドボックス解除時の送信制限を超えることはできません。
- バウンス率と苦情率が高い場合はSESが停止する危険性があります。そのためバウンス率や苦情率の監視、reCAPTCHA等の導入を怠るとAmazon SESのアカウントが止められちゃった話が現実に起こります。
- 携帯キャリアアドレスへの送信が多いシステムの場合、Amazon SESはあまり向いていません。これはドメイン拒否等でバウンスした場合は宛先メールアドレスがSuppression Listに登録され、登録されてからは14日間は自動でバウンスメール扱いとなるからです。このSuppression Listはアカウントを超えて共有され、削除は手動で行う必要があります。
所感
Amazon SESはデメリットによる影響が大きいため、大量のメール送信や携帯キャリアアドレスへの送信が想定される場合は、運用の仕組みづくりが重要となります。色々とデメリットを書きましたが、ちゃんと運用できれば今回のようなユースケースの場合は、メール運用コストをほぼ無料に抑えることが可能です。
また、2020年7月2日にAmazon SESは東京リージョンに対応しました。
2. マーケティングメール送信
要件
- マーケティングメールを、携帯キャリアアドレスを含む多数のメールアドレスに一括送信
手順
- SendGridというサードパーティ製SaaSのアカウント開設
※大量のマーケティングメール送信する場合は、固定IPアドレスが1つ割り当てられるPro以上のプランがオススメ - メール専用のAPIキーを作成しSMTPクライアント設定
- メール到達率の向上のため独自ドメイン利用設定
- バウンス通知有効化
- スパムレポート有効化
- 送信通数等のアラート設定
メリット
- アカウント開設から導入までが簡単
- 無期限で無料プランを使用可能(法人の場合は1社1アカウントのみ)
- 日本の携帯キャリアアドレス向けのメール送信に対応しており、メール専門家がサポート
- マーケティング配信に必要な宛先リストのCSV管理、指定日時による送信機能等が提供されている
- 日本語ドキュメントが豊富
- EC2 Eメール上限緩和 / 逆引き(rDNS)設定の申請不要
デメリット
- SESと比較すると料金が割高
所感
マーケティングメールや携帯キャリアアドレスに多数のメールを送信する場合は、日本語ドキュメントが豊富なSendGridがオススメです。類似サービスにMandrillやMailgun等もありますが今回は割愛します。
3. システムメールをオンプレのメールサーバに送信
要件
- Log監視ツールであるLogwatch等のシステムメール
- VPN経由でオンプレ側の社内メールサーバに送信
手順
- EC2 Eメール制限解除
※VPN経由等のプライベートIP間での通信の場合は、逆引き(rDNS)設定申請は不要です。 - postfix等のSMTPクライアント設定
メリット
- EC2にEIP不要
- Eメール制限解除のみを申請した場合は、アカウント単位での適用となるので一度の申請で済む
デメリット
- VPN導入やオンプレのメールサーバ利用が前提
所感
システムメールを運用管理者向けに社内メールサーバの特定メールアドレスへ送信するだけなので、事前にメール送信テストが完了すれば、メール到達率についてはあまり考慮する必要はありませんでした。
まとめ
ここまでお読みいただきありがとうございます。
ユースケース別のメール送信方法について、インターネット上に資料が見当たらなかったので、今回まとめてみました。