Email Verifier (SMTP, MX, Catch-All) について
Email Verifierは、メールを送信せずに、構文、DNS/MX、リスト照合、ライブSMTPハンドシェイクでアドレスを一括確認します。コード、n8nワークフロー、AIエージェント向けで、固定フィールドと、配信可能・リスクあり・不明・配信不能の状態を返します。
主な機能
- 01構文、DNS/MX、SMTPの一括チェック
- 02使い捨てアドレスと役割アドレスの検出
- 03キャッチオールドメインの判定
- 04一貫した状態とチェック項目の返却
- 05n8nワークフローテンプレート
活用シーン
- 01送信前のリードリストの選別
- 02登録時の使い捨てアドレスのブロック
- 03不明なアドレスの再試行や確認への振り分け
- 04AIエージェントへのメール検証の接続
MCP 対応
このプロジェクトは、対象Actorに限定したApify MCPサーバー経由で利用できます。READMEにはMCPクライアントの設定例もあります。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.apify.com/?tools=sumitr_mardy/email-verifierclaude mcp add --transport http sumitrmardy-email-verifier https://mcp.apify.com/?tools=sumitr_mardy/email-verifier{"mcpServers":{"sumitrmardy-email-verifier":{"type":"http","url":"https://mcp.apify.com/?tools=sumitr_mardy/email-verifier"}}}Cursor で開く{"servers":{"sumitrmardy-email-verifier":{"type":"http","url":"https://mcp.apify.com/?tools=sumitr_mardy/email-verifier"}}}VS Code で開く{"mcpServers":{"sumitrmardy-email-verifier":{"type":"http","url":"https://mcp.apify.com/?tools=sumitr_mardy/email-verifier"}}}{"mcpServers":{"sumitrmardy-email-verifier":{"serverUrl":"https://mcp.apify.com/?tools=sumitr_mardy/email-verifier"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.apify.com/?tools=sumitr_mardy/email-verifier認証が必要ツール
詳細
English | 简体中文
一括メールアドレス検証 API — n8n、AI エージェント、MCP 向け
メールアドレスを一括検証します:RFC 5322 の構文 → DNS/MX → 使い捨てアドレス、ロールアドレス、無料プロバイダーのリスト → 必須のキャッチオールプローブを含む、実際の SMTP ハンドシェイク。メールが送信されることはありません — このチェックでは SMTP セッションを開始し、応答コードを読み取って切断します。
➜ Apify で試す
{
"email": "[email protected]",
"status": "deliverable",
"sub_status": "valid_mailbox",
"score": 100,
"checks": {
"syntax": true, "domain_exists": true, "mx_found": true,
"smtp_connectable": true, "mailbox_exists": true, "catch_all": false,
"disposable": false, "role_based": false, "free_provider": false,
"a_record_fallback": false, "has_tag": false
},
"mx_record": "aspmx.l.google.com"
}
パイプラインで選ばれる理由
ほとんどの検証ツールは、人がダッシュボードを読むことを前提に作られています。このツールは、呼び出し元がコードであることを前提にしています。
そのため、出力で保証すべき内容が変わります。
1. status は常に4つの値のいずれかです。 deliverable、undeliverable、risky、unknown。nullにも空にもならず、5つ目の値もありません。一度列挙すれば、常に正しく扱えます。
2. すべてのレコードに、11個すべての checks キーが含まれます。 実行されなかったチェックは false となり、その理由は sub_status に記載されます。何も欠けません。
3. キャッチオールドメインやGmail系プロバイダーについて、正直な結果を返します。 「有効」という捏造された結果ではなく、理由とともに risky が返されます。
この3つにより、次のように記述できます。
const mailable = results.filter(r => r.status === 'deliverable');
const neverSend = results.filter(r => r.status === 'undeliverable' || r.checks.disposable);
const retryLater = results.filter(r => r.status === 'unknown');
次のようにする必要はありません。
const mailable = results.filter(r => r?.status === 'valid' && (r.checks?.catch_all ?? false) === false);
2行目は、デフォルトでnullを許容するAPIを使うと必ず必要になる記述です。これは人よりもエージェントにとって重要です。エージェントは ?? false と記述できません — 読み取った内容に基づいて動作します。フィールドが時々消えるのは不便なだけではありません。自信満々に届けられる、誤った答えです。
各結果への対処方法
status | sub_status | 対処方法 |
|---|---|---|
deliverable | valid_mailbox | 送信する |
risky | role_based | 共有受信箱でも問題ない場合に限り送信する |
risky | catch_all | メールボックスを確認できません — 少量ずつ送信するか、別の方法で情報を補完してください |
risky | free_provider_unverifiable | 個人用アドレスとして扱ってください。SMTPではメールボックスを確認できません |
risky | full_mailbox | 保留し、数日後に再試行してください |
risky | disposable | 送信せず、登録時にブロックしてください |
unknown | greylisted | 30~60分後に再試行してください — 無効なアドレスではありません |
unknown | smtp_timeout | 後で再試行してください。続く場合は未検証として扱ってください |
unknown | internal_error | 1回再試行してください |
undeliverable | any | リストから削除してください |
スコアと判定理由を含む完全な表:docs/statuses.md
重要な違いは、undeliverable は 無効だと判明した ことを意味し、unknown は 判明できなかった ことを意味する点です。この2つをまとめるツールは、見栄えのよい数値を報告しながら、実際の顧客をひそかにリストから削除します。
n8n で使用する
すべてのテンプレートは、コアの HTTP Request ノードで Actor を呼び出します。コミュニティノードのインストールは不要で、n8n Cloud とセルフホスト環境のどちらでも動作します。認証には、Apify API という名前の n8n Header Auth 認証情報を使用します。このリポジトリ内のファイルにトークンは保存されていません。
| テンプレート | 機能 | インポート |
|---|---|---|
| Google Sheets の見込み客リストを検証する | 判定結果のない行を読み込み、バッチ単位で検証し、status/score を書き戻します。安全に再実行でき、スケジュール設定にも対応します。 | t1-google-sheets.json |
| 登録時に使い捨てメールをブロックする | Webhook で受け取り、{allow|review|block} を返します。ポリシーは編集可能な Code ノード 1 つにまとめられています。 | t2-signup-check.json |
| コールドメール送信前に CSV を整理する | Apollo/Instantly/HubSpot のエクスポートをアップロードすると、send_safe/review/drop の 3 つの CSV が返されます。グレーリストに登録された行は 1 回再試行されます。 | t3-clean-csv.json |
| AI エージェントツール | 検証ツールのみを使用する AI Agent と、上記のアクション表を教えるシステムプロンプトです。 | t4-ai-agent-tool.json |
4 つのテンプレートすべてに、中国語版とローカライズ済みの付箋メモがあります:workflows/zh-CN/
インポート方法: JSON をダウンロードし、n8n で Workflows → Import from File を選択します。設定手順は各ワークフロー内の付箋メモに記載されています。
AI エージェントから使用する
MCP — この Actor のみにスコープを限定した Apify MCP サーバーです。Claude Desktop と Cursor の設定ファイルはこちらです:agents/mcp/
OpenAPI — Dify、Coze、GPT Actions、LangChain の OpenAPI toolkit でインポートできるファイルが 1 つあります:openapi/email-verifier.openapi.yaml
ツール定義 — OpenAI の function calling と Anthropic の tool API 用の、そのまま使える JSON です:agents/tool-definitions/
エージェント本体向け — llms.txt には、エンドポイント、入力、出力、アクション表、バッチ処理の上限といった契約全体がまとめて記載されています。
中国語を優先した設定ガイド:Dify · Coze / 扣子
コードから使用する
curl -X POST "https://api.apify.com/v2/acts/sumitr_mardy~email-verifier/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"emails":["[email protected]","[email protected]"]}'
SDK 不要で、それぞれ 25 行未満の Python と Node の例はこちらです:examples/
大量のリスト
アドレスは 1 件ずつではなく、呼び出しごとに 1 つのバッチにまとめて渡します。バッチ処理によって、低コストかつ高速に処理できます。
同期 Apify 実行は 300 秒以内に完了する必要があります。それを超える場合は、非同期パターンを使用してください。実行を開始し、完了を待ってから、データセットを取得します。動作する例はこちらです:examples/batch-large-list/
実測スループットと推奨バッチサイズはこちらです:docs/pricing-and-batching.md
料金
イベント単位の課金です。判定結果が得られたアドレス 1 件ごとに 1 回課金されます。undeliverable と unknown も対象です。どちらの場合も処理が行われており、確認済みの不達アドレスは、まさに料金を支払って得る結果だからです。実行ごとの課金はありません。
料金は Apify プランに応じて段階的に設定され、市場の動向に合わせて調整されます。情報が古くなるため、ここには再掲していません:現在の料金を見る。
API の呼び出しには Apify アカウントが必要です。無料プランもあります。
既知の制限
いずれにしてもわかることなので、明記しておきます。
- 無料メールプロバイダーのメールボックスは検証できません。 Gmail、Outlook、Yahoo、iCloud は、存在しないアドレスに対しても
250を返し、配信時にバウンスさせます。SMTP で Gmail のメールボックス単位の判定ができると主張するベンダーは、推測しているだけです。結果はrisky/free_provider_unverifiableとなり、checks.mailbox_exists: falseが返されます。 - キャッチオールドメインのメールボックスは検証できません。 その定義上、検証は不可能です。プローブはこれを検出し、確信ありげな推測を返すのではなく、その旨を示します。
- グレーリスト登録は判定結果ではありません。
421/450はunknown/greylistedとして返され、再試行できます。テンプレート T3 では、自動的に再試行します。
よくある質問
メールを送信しますか?
いいえ。SMTP セッションを開始して、EHLO、MAIL FROM、RCPT TOを送信し、応答コードを読み取って切断します。DATAは決して実行しないため、処理のどこにもメッセージ本文は存在しません。
Gmail アドレスを確認できますか? 構文とドメインが有効で、使い捨てアドレスではないことを確認します。特定の Gmail メールボックスが存在するかどうかは確認できません。Google は実在するアドレスと偽のアドレスに同じ応答を返します。SMTP を使うものに、これ以上の確認はできません。それができると主張するツールは推測しているだけです。
キャッチオールドメインとは何ですか?
実在するかどうかにかかわらず、すべてのアドレス宛てのメールを受け取るように設定されたドメインです。お使いのアドレスを確認する前に、検証ツールは存在し得ないランダムなローカルパートを使ってRCPT TOを送信します。これが受け入れられた場合、そのドメインはキャッチオールであり、そのドメイン上のすべてのアドレスがrisky/catch_allとして報告されます。
1 回の呼び出しで何件のメールを確認できますか? 300 秒の同期処理時間内に完了する件数までです。お手元のリストで測定してください。詳しくはdocs/pricing-and-batching.mdをご覧ください。それを超える場合は、非同期パターンを使用してください。
Apollo/Instantly/Lemlist のエクスポートデータでは、どのように使えますか? テンプレート T3 では、CSV をアップロードすると、クリーンアップ済みのリストが 3 つ返されます。メール列は自動的に選択され、最初に重複が除去されるため、同じアドレスに対して二重に課金されることはありません。
重複データはどうなりますか? 課金対象になります。呼び出し前に重複を除去してください。ここにあるすべてのテンプレートでは、すでにその処理を行います。
MIT ライセンスです。問題の報告やプルリクエストを歓迎します。特に、挙動が異なるバージョンを使用している方からの n8n テンプレートの修正をお待ちしています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。