はじめに
会員登録フォームでは、入力ミスや存在しないドメインのメールアドレスが一定数混ざります。確認メールがバウンスし、その割合が高くなると、メール送信サービス側でアカウントが審査・停止されることがあります。登録が一時的に急増したとき、小規模なアプリほど影響を受けやすくなります。
各社が公表している基準
- Resend: バウンス率4%未満、スパム率0.08%未満を求めています。超えると一時的に送信が停止されることがあります。
- Amazon SES: バウンス率5%または苦情率0.1%でアカウントが審査対象になり、バウンス10%または苦情0.5%で送信が停止される可能性があります。
数値は2026年10月時点で各社の公式ドキュメントに記載されていたものです。利用前に最新のページを確認してください。
小規模なアプリほど影響を受ける理由
割合は長期では公平ですが、短期では大きく振れます。1日に100通しか送らないアプリでは、存在しないアドレスが5件あるだけでバウンス率5%に見えます。アドレスの質が悪いわけではなく、希釈してくれる正常なメールが少ないだけです。
ドメインがメールを受信できるか確認する
メールサーバーのないドメインへの送信は必ずバウンスします。Node.jsでは次のように確認できます。
import { promises as dns } from "node:dns";
async function domainHasMailServer(email) {
const domain = email.split("@")[1];
try {
const records = await dns.resolveMx(domain);
return records.length > 0;
} catch {
return false; // MXレコードなし、またはドメインが存在しない(簡略化: 一時的なDNSエラーでもfalseになります)
}
}
MXレコードがなくても受信できるドメインはあります。登録フォームでは、強制的に拒否するのではなく警告として扱うほうが親切です。
そのほかの対策
- アドレスの形式を簡単に確認する(@が1つ、前後に文字がある、空白なし)
- 使い捨てメールのドメインを、定期的に更新する一覧でブロックする
- 確認リンクをクリックするまで、確認メール以外は送らない
- ハードバウンスしたアドレスには二度と送らない
- 自分のバウンス率を毎日確認し、上限の半分程度でアラートを設定する
作ったサービス
上記をまとめて扱えるよう、SentriSendを作りました。送信前のアドレス検証(使い捨てドメインの判定、DNSとメールサーバーの確認)ができ、SentriSend経由で送信するとAPIキーごとにバウンスの増加を検知して警告・減速・停止します。受信箱への到達を保証するものではなく、新しいサービスでまだ導入事例もありません。無料プランは月100リクエスト、カード不要です。
詳しい解説(英語・日本語)はこちらです。
https://sentrisend.com/ja/resources/why-email-accounts-get-paused