技術解説 · 出典付きの回答

メールを送らずにメールアドレスを検証する方法

メールを送らずにメールアドレスを検証するには、構文のバリデーション、DNSレコードのルックアップ、SMTPプロトコルのハンドシェイクを順に実行します。このプロセスでは、実際にメッセージを配信することなく、メールアドレスの形式が正しいか、受信側サーバーがそのドメイン宛てのメールを受け付けるよう設定されているかを確認します。

構文のバリデーション

最初のステップは、メールアドレスの文字列をRFC 5322の標準に照らして検証することです。これにより、アドレスにローカル部、@記号、有効なドメイン部が含まれていることを確認します。通常は正規表現を使い、ネットワークリクエストを行う前に、よくある入力ミス、使用できない文字、誤った書式を検出します。

DNSレコードの検証

構文を確認したら、ドメインに有効なMX(Mail Exchanger)レコードがあることを検証する必要があります。ドメインに対するDNSクエリで、少なくとも1つのMXレコードが返されるはずです。MXレコードが存在しなければ、そのドメインはメールを受信できません。SendHQの無料ツールなどを使えば、DNSの設定を確認し、ドメインが有効であることを確かめられます。

SMTPハンドシェイクのプロセス

技術的な検証方法では、MXサーバーへのSMTP接続を開始します。クライアントはHELOコマンドを送り、続いてMAIL FROMとRCPT TOを送ります。サーバーがRCPT TOコマンドに250 OKで応答すれば、サーバーはそのアドレスを有効とみなしています。その後、DATAコマンドを送る前にQUITコマンドで接続を終了します。

サーバー側の制限への対処

最近のメールサーバーの多くは、検証を防ぐためにキャッチオール設定やグレイリスティングを採用しています。キャッチオールのサーバーは、ローカル部に関係なくそのドメイン宛てのすべてのメールを受け付けます。グレイリスティングは最初の試行を一時的に拒否して送信者に後で再試行させるため、リアルタイムの検証スクリプトが複雑になることがあります。

実装時の考慮事項

これらのチェックを実装する際は、送信元IPのレピュテーションが良好で、逆引きDNSが正しく設定されていることを確認してください。メールを送らずにSMTPハンドシェイクを頻繁に行うと、受信側サーバーに不審な振る舞いと判定され、セキュリティフィルターによってIPがブロックされたり送信を制限されたりするおそれがあります。

よく寄せられる質問

SMTPチェックをすれば配信は保証されますか?

いいえ。確認できるのは、サーバーがRCPT TOコマンドを受け付けたことだけです。メッセージがスパムフィルターを通過したり、受信トレイに届いたりすることを保証するものではありません。

キャッチオールのメールアドレスとは何ですか?

キャッチオールとは、特定のローカル部が存在しない場合でも、そのドメイン宛てに送られたすべてのメールを受け付けるサーバー設定です。

これに通常のAPIを使えますか?

はい。多くのメールアドレスのバリデーションサービスが、構文、DNS、SMTPハンドシェイクのプロセスをREST APIで自動化しています。

一部のサーバーがSMTPチェックを拒否するのはなぜですか?

ボットがアドレスを推測して有効なユーザーを探し出すディレクトリハーベスト攻撃を防ぐために、サーバーがこうしたチェックを拒否することがあります。

一次情報源