Amazon SESからMailer To Goへの移行方法
Amazon SESは強力で安価ですが、IAMポリシー、リージョン選択、コンフィギュレーションセット、サンドボックスの制限、独自のレピュテーション監視など、多くの未分化な作業を押し付けてきます。トランザクショナルメールをMailer To Goに移行するのは、DNSと認証情報の制御された交換です。重要な作業は、サプレッションリストを持ち込み、レピュテーションを失わずにカットオーバーすることにあります。以下は、実際の設定と可逆的なロールアウトを含む、順序通りの移行全体です。
まだ検討中ですか?Amazon SES代替品の比較がその理由をカバーしています。このガイドはその方法です。
開始する前に:SESが何をしているかを把握する
SESは複数のAWS画面に設定を分散させています。何かに触れる前に、すべてをキャプチャしてください:
- 検証済みアイデンティティ — 送信元のドメインとメールアドレス、および検証されているリージョン。
- サンドボックスステータス — アカウントがまだSESサンドボックスにある場合、既に制限されています。移行することでその制約を取り除きますが、現在の送信クォータとレートに注意してください。
- サプレッションデータ — SESは、バウンスまたはクレームが発生したアドレスのアカウントレベルのサプレッションリストを保持します。これは持ち込む必要があります。サプレッションされたアドレスに再度メールを送信すると、新しいドメインのレピュテーションが直ちに破壊されます。
- 送信方法 — SMTP(
email-smtp.<region>.amazonaws.com)またはSESv2 API/SDK(またはその両方)。 - コンフィギュレーションセットとイベント宛先 — バウンス/クレーム/配信イベントが現在どこに行くか(SNS、CloudWatch、Kinesis)。
- 大まかな1日/ピークボリューム —ウォームアップ計画用。
ステップ1 — Mailer To Goの送信ドメインを作成する
mailertogo.comにサインアップし、送信サブドメインを追加します。ルートドメインではなくmtg.yourdomain.comをお勧めします。これはレピュテーションを分離し、委譲する場合、DNSを管理させてくれます。Mailer To Goがmtg.yourdomainからなぜ送信するのかを参照してください。
ステップ2 — 認証(SPF、DKIM、DMARC)
ダッシュボードからSPFおよびDKIMレコードを公開し、ルートでDMARC ポリシーを公開します。SESでDKIMダンスを既に実行しているため(アイデンティティごとにCNAMEを生成します)、これは見覚えのある領域です。新しい値だけです。オーバーラップ中、SESとMailer To Goの両方がドメイン上で認可されたままにしておいてください。実際のレコードとdig検証を使った完全なウォークスルー:エンドツーエンドのメール認証。
ステップ3 — 認証情報を交換する
SMTP。 SESの目玉は、email-smtp.us-east-1.amazonaws.comのようなホストと、IAM由来のSMTP認証情報(AWSアクセスキーではなく、ユーザーから生成された)です。同じメーラーをMailer To Goに向け直してください:
# 以前 — Amazon SES
host: email-smtp.us-east-1.amazonaws.com port: 587
username: <SES SMTP username> (IAM由来 — AWSアクセスキーではない)
password: <SES SMTP password>
# 後 — Mailer To Go
host: smtp.mailertogo.com port: 587 (またはSSL用465)
username: <MAILERTOGO_SMTP_USER>
password: <MAILERTOGO_SMTP_PASSWORD>
Railsでは、それは単なる新しい環境値です。コード変更はありません:
# config/environments/production.rb
config.action_mailer.smtp_settings = {
address: ENV["MAILERTOGO_SMTP_HOST"], # smtp.mailertogo.com
port: 587,
user_name: ENV["MAILERTOGO_SMTP_USER"],
password: ENV["MAILERTOGO_SMTP_PASSWORD"],
authentication: :plain,
enable_starttls: true
}
API。 SESv2 APIまたはSDKを呼び出す場合、メーラーをSMTP経由でMailer To Goに向け直す(最小コード)か、Mailer To Go REST APIに切り替えることができます:
# 以前 — Amazon SES v2(AWS CLI)
aws sesv2 send-email \
--from-email-address you@yourdomain.com \
--destination ToAddresses=user@example.com \
--content '{"Simple":{"Subject":{"Data":"Hello"},"Body":{"Html":{"Data":"Hi"}}}}'
# 後 — Mailer To Go REST API
curl -X POST https://api.mailertogo.com/v1/send \
-H "Authorization: Bearer $MAILERTOGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"you@yourdomain.com","to":"user@example.com","subject":"Hello","html":"Hi"}'
IAMユーザー、ポリシー、または地域的なエンドポイントを管理する必要はありません。1つのキーと1つのエンドポイント。(言語ごとの完全な例:Mailer To Go API&SMTPを使ってメールを送信。)
ステップ4 — サプレッションリストをインポートする(スキップしないでください)
カットオーバー前にSESのアカウントレベルのサプレッションリストをエクスポートします:
aws sesv2 list-suppressed-destinations --output json > ses-suppressed.json
これらのアドレスをMailer To Goサプレッションリストに読み込み、SESでバウンスまたはクレームが発生した人は誰でも再度メール送信されないようにします。この1つのステップだけで、SESで構築したレピュテーションを保護します。
ステップ5 — ウォームアップして段階的にカットオーバーする
新しい送信ドメインはレピュテーションがないため、すべてを一度にフリップしないでください。これは、1日で大量の既存ボリュームを移動するとインボックスプロバイダーにスパイクのように見える場合があるため、SESから来る場合はさらに重要です。両方のプロバイダーを並行して実行し、トラフィックを段階的にシフトさせます(1週間から2週間かけて10%→25%→50%→100%)。最初に最も関心度の高いメール(パスワードリセット、レシート)から開始してください。各ステップでバウンス率とクレーム率を監視し、完全にカットオーバーされるまでSESがトラフィックを引き継ぐ準備ができたままにしておいてください。
ステップ6 — 検証してから廃止する
- テストを送信し、SPF、DKIM、DMARCすべてが合格を確認してください(Gmail→元のを表示)。
- SESコンフィギュレーションセットから依存していたイベント処理をMailer To Go Webhookに対して再作成し、バウンス/クレームイベントが流れることを確認します。
- Mailer To Goを通してクリーンに100%実行されて数日後、SES SMTP/IAM認証情報を削除し、アイデンティティを削除します。ただし、ロールバック安全ネットとして1~2週間SESのDNSレコードを所定の位置に保ちます。その後削除します。
ロールバック
スイッチが認証情報+ DNSであるため、ロールバックは高速です。メーラーの環境変数をSESに戻すだけです。オーバーラップ中に両方のプロバイダーの認可を保つことは、緊急の代わりにワンラインの変更にするものです。
サブドメイン送信または認証が初めてですか?Mailer To Goがなぜmtg.yourdomainから送信するのかとSPF/DKIM/DMARCセットアップガイドから始めてください。別のプロバイダーから来ていますか?SendGridから移行とMailgunから移行を参照してください。