Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Validate a list of 10,000 emails without SMTP for about $10

2026年10月19日に「Dev.to」が公開したITニュース「Validate a list of 10,000 emails without SMTP for about $10」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

メールリストから無効なアドレスを効率的に除去する方法を紹介。SMTP接続を使わず、メールアドレスの構文、DNS情報、使い捨てドメインなどを確認することで、1万件を約10ドルで高速に検証できる。実際のメールボックス存在確認はできないが、安価な事前フィルタとして活用できる。

ITニュース解説

システム開発において、顧客データやリード情報として大量のメールアドレスを扱う機会は多い。しかし、これらのメールアドレスの中には、タイプミスや架空のドメイン、すでに使われていないアドレス、あるいは一時的にしか使われない使い捨てアドレスなどが含まれていることがよくある。このような「質の悪い」メールアドレスをそのまま利用すると、メールが相手に届かずにエラー(バウンス)になったり、スパム判定を受けやすくなったりして、ビジネス上のコミュニケーションに支障をきたす可能性がある。また、メール送信にかかるコストも無駄になる。そのため、大量のメールアドレスを利用する前には、その有効性を検証する作業が非常に重要となる。

多くのメールアドレス検証サービスは、各メールアドレスのドメインにあるメールサーバーと実際に通信を試みる「SMTP検証」という方法を採用している。SMTPとは、メールを送受信するためのプロトコル(通信規約)のことである。SMTP検証では、メールサーバーに「このアドレスは存在するか?」という問い合わせを送り、その応答を確認することでメールボックスの存在を検証する。しかし、このSMTP検証にはいくつかの問題点がある。まず、一つ一つのメールサーバーと通信を確立するため、処理に時間がかかり、大量のアドレスを検証する際には膨大な時間がかかる。次に、短時間に多数の検証リクエストを送ると、そのIPアドレスがスパム行為とみなされてメールサーバーからブロックされてしまうリスクがある。一度ブロックされると、正規のメール送信まで影響を受ける可能性があるため、これは大きな問題となる。さらに、SMTP検証は一般的にコストが高い傾向にある。

今回紹介する検証方法は、これらのSMTP検証の問題点を回避しつつ、メールアドレスの品質を効率的かつ安価にチェックする画期的なアプローチである。この方法は、SMTP通信を行わず、メールアドレスの書式(シンタックス)と、そのドメインに関する公開情報(DNSレコード)のみを利用して検証を行う。これにより、高速な処理とIPブロックのリスク低減、そして大幅なコスト削減を実現している。具体的には、10,000件のメールアドレスを約10ドルという非常に低コストで検証できる点が特徴である。

この非SMTP検証で具体的に何がチェックされるのか。まず最も基本的なのは、メールアドレスの「構文(シンタックス)」のチェックである。これは、メールアドレスが「ユーザー名@ドメイン名」という正しい形式になっているか、特殊な文字が含まれていないか、長さ制限を超えていないかなどを検証する。例えば、「bad@@example.com」のような不正な形式のアドレスは、この段階で無効と判断される。次に、ドメインに関する「DNS(Domain Name System)」情報を確認する。DNSは、ウェブサイトのドメイン名とIPアドレスを紐付けるインターネットの電話帳のような仕組みである。メールの送受信においては、そのドメインがメールを受け取るための「MXレコード(Mail Exchanger Record)」を持っているかが非常に重要である。MXレコードが存在しないドメインは、そもそもメールを受け付ける設定になっていないため、そのドメインのメールアドレスは無効であると判断できる。また、MXレコードが見つからない場合に「Aレコード」や「AAAAレコード」(ドメインに対応するIPアドレスを示すレコード)が存在するかどうかも確認し、サーバーが存在するかを判断する。

さらに、この検証方法では、特定の種類のドメインやアカウントを識別する機能も備わっている。例えば、「使い捨てドメイン」の検出である。「10minutemail.com」のように、短時間だけ有効な一時的なメールアドレスを提供するサービスがあり、これらは登録や試用目的で使われることが多く、長期的なコミュニケーションには不向きである。このような使い捨てドメインリストと照合することで、そのメールアドレスが使い捨てかどうかを判断する。また、「info@」や「sales@」のような汎用的な「役割アカウント(ロールアカウント)」であるかどうかも識別する。これらのアカウントは特定の個人に紐付かないことが多く、通常のリードリストとは別に扱うべきケースがある。加えて、「gmail.com」や「outlook.com」のような「フリープロバイダー」のドメインであるかどうかも判別できる。さらに便利な機能として、一般的なメールプロバイダーのドメインでよくあるタイプミス(typo)を検出し、正しいドメイン名を提案する機能も持っている。例えば、「bob@yaho.com」というアドレスに対して「bob@yahoo.com」という正しい候補を提示するといった具合である。

一方で、この非SMTP検証方法には限界もある。それは、「メールボックスが実際に存在するかどうか」を正確に判断できない点である。例えば、「jane@company.com」というアドレスが文法的に正しく、ドメインもメールを受け付ける設定になっていたとしても、実際に「jane」という名前のユーザーのメールボックスがそのサーバー上に存在するかどうかまではわからない。これは、SMTP通信を介して初めて確認できる情報だからである。したがって、ドメインがメールを受け付ける設定になっているが、任意のユーザー名でメールを受け入れてしまう「キャッチオール(Catch-all)ドメイン」や、存在しないユーザー名でも「有効」と判断されてしまう場合がある。また、メールボックスが容量オーバーでメールを受け付けられない状態であっても、この方法では検知できない。もし、このようなメールボックスレベルでの厳密な存在確認が必要な場合は、前述のSMTPベースの検証ツールを利用する必要がある。ただし、SMTPベースの検証は高価であり、また「不明」という結果が返ってくることも多いため、この非SMTP検証は「最初の、安価なフィルター」として活用するのが賢明である。

この検証サービスは、Apifyというプラットフォーム上で「Email Verifier & Validator (No SMTP)」という「アクター」(プログラムを実行する単位)として提供されている。Apifyは、Webスクレイピングやデータ処理などの自動化タスクを実行するためのクラウドプラットフォームである。利用者は、JSON形式で検証したいメールアドレスのリストを直接渡すか、CSVファイルの公開URLを指定して、簡単に検証を実行できる。例えば、CSVファイルの場合、「email」というヘッダーを持つカラムを自動的に読み込むように設定することも可能である。入力として、メールアドレスのリストと同時に、並行処理(concurrency)の数を指定して、処理速度を調整することもできる。

検証結果は、各メールアドレスについて詳細な情報がJSON形式で返される。これには、元の入力アドレス、検証後のアドレス、有効性(valid)、状態(status)、理由(reason)、ドメイン名、MXレコードの有無、Aレコードの有無、使い捨てドメインか、役割アカウントか、フリープロバイダーか、そしてタイプミスの修正候補(didYouMean)などが含まれる。例えば、「jane.doe@gmail.com」であれば「valid: true」で「status: deliverable_domain(配信可能なドメイン)」、「bob@yaho.com」であれば「valid: false」で「status: invalid_domain(無効なドメイン)」、そして「didYouMean: bob@yahoo.com」といった具体的な情報が提供される。この詳細な情報に基づいて、開発者は必要な基準でメールアドレスをフィルタリングし、有効なアドレスのみを抽出できる。

実際にシステムに組み込む際には、ApifyのAPIを通じてプログラムからこのアクターを呼び出すことが可能である。curlコマンドでの同期実行例や、Pythonの公式クライアントライブラリを使った非同期実行の例が示されている。大量のメールアドレスを処理する場合は、非同期実行を利用することで効率的に処理を進めることができる。

推奨されるメールアドレス検証のパイプラインは以下の通りである。まず、大量のメールアドレスリスト全体をこの非SMTP検証ツールにかける。この段階で、「構文が無効なアドレス(invalid_syntax)」、「ドメインが無効なアドレス(invalid_domain)」、「使い捨てドメインのアドレス(disposable)」を排除する。また、提示されたタイプミスの修正候補(didYouMean)に基づいて、正しいアドレスに修正することも検討する。さらに、「役割アカウント(isRole)」と判断されたアドレスは、コールドアウトリーチ(新規顧客開拓のための営業活動)など、特定の目的に応じて通常の個人アドレスとは別に扱う。この最初の安価なフィルターを通過した「生き残った」アドレスのみを、もし必要であれば、より高価なSMTPベースの検証ツールに送るという流れである。この多段階のアプローチを取ることで、高価なSMTP検証の対象を最小限に抑え、全体のコストを大幅に削減することが可能となる。ただし、このツールを本番環境の大量データに適用する前に、まずは数百件程度のテストリストで検証を行い、その結果が自身の持つバウンスデータなどと比較して信頼できるものかどうかを確認することが重要である。

関連コンテンツ

関連IT用語

関連ITニュース