BillionVerify LogoBillionVerify

検証理由コード

BillionVerify API が返す全 reason コードの完全リファレンス——各コードの意味と対応方法。

すべての検証結果には reason フィールドが含まれており、そのメールアドレスがそのステータスを受けた理由を説明します。このリファレンスを使用して、正確なフィルタリングロジックを構築し、予期しない結果を診断し、送信戦略を最適化してください。

reason の仕組み

reason フィールドは、すべての検証レスポンスで status フィールドと並んで表示されます:

{
  "email": "user@example.com",
  "status": "valid",
  "reason": "smtp_deliverable"
}

reason は安定した文字列識別子です——フィルタリングルールや下流の条件付きロジックで直接使用できます。

Valid(有効)

status: "valid" のメールは配信可能と確認されています。

reason説明
smtp_deliverableSMTP RCPT が 250 OK を返した——メールボックスの配信可能を確認。Microsoft 365 DBEB モードが配信を確認した場合、または catch-all ドメインが特定のアドレスを追加で確認した場合にも使用されます。

Invalid(無効)

status: "invalid" のメールはリストから削除してください——配信は不可能です。

reason説明
invalid_syntaxメールアドレスが構文解析に失敗——ローカル部分、ドメインの形式が不正または @ が欠如。
no_mx_recordsドメインに MX レコードがない(NXDOMAIN または MX ルックアップ結果が空)。
spf_reject_allドメインに MX レコードがなく、-all を含む SPF レコードがある——ドメインはすべての受信メールを明示的に拒否。
mailbox_not_foundSMTP 550/5xx がリモートサーバーにメールボックスが存在しないことを確認。
host_not_foundMX ホスト名が応答しなかった——ホストに到達不能または存在しない。

Unknown(不明)

status: "unknown" のメールは決定的に検証できませんでした。一部は一時的なもの(再試行可能)で、その他は構造的な制限を表します。

reason再試行可能説明
smtp_unverifiableいいえプロバイダーが自動化された SMTP 検証をブロックしている(Apple iCloud、Microsoft コンシューマー、Proton、Tuta)。結果はドメインレベルのヒューリスティックに基づく。
smtp_blockedいいえリモート SMTP サーバーが接続を明示的にブロックまたはブラックリストに登録した。
smtp_eof_blockedはいMX がバナーを送信する前に接続を閉じた——通常は IP レート制限または fail2ban ルール。
smtp_timeoutはいSMTP 操作がタイムアウトした(コンテキストデッドラインまたはキャンセル)。
smtp_connection_failedいいえ汎用 SMTP 接続失敗——より具体的なクラスが一致しなかった。
smtp_rate_limitedはいリモート SMTP サーバーがレート制限レスポンスを返した(421、450、451 またはメッセージ制限超過)。
smtp_greylistedはい汎用グレーリストレスポンスを検出——遅延後に再試行。
mimecast_greylistはいMimecast 固有のグレーリスト / 451 一時的失敗。
proofpoint_ad_lookupはいProofpoint AD 非同期ルックアップが進行中(受信者検証中の 421 4.1.1 一時的失敗)。
policy_temp_failはいリモートポリシー適用による汎用 4xx 一時的失敗。
google_rate_limitはいGoogle MX がレート制限または一時的拒否レスポンスを返した。
google_dmarc_misalignmentいいえドメインの DMARC 設定が不整合——Google が DMARC ポリシーに基づいて拒否。
m365_ip_rep_blockはいMicrosoft 365 が IP レピュテーションにより接続を拒否(4.7.650 / 4.7.651 コード)。
mailbox_fullいいえメールボックスは存在するがクォータを超えている(SMTP 452 または満杯レスポンス)。
mailbox_disabledいいえメールボックスは存在するが無効化または停止されている。
dns_timeoutはいDNS または MX ルックアップがタイムアウトした——一時的なリゾルバーの問題。
dns_lookup_errorはいDNS ルックアップが NXDOMAIN 以外のエラーで失敗した(SERVFAIL、UDP タイムアウト、またはリゾルバーエラー)。
yahoo_api_verifiedいいえYahoo 登録 API がアドレスの配信可能を確認した(バッチパス)。
yahoo_api_not_deliverableいいえYahoo 登録 API がアドレスの配信不可を確認した(バッチパス)。
yahoo_api_errorはいYahoo 登録 API 呼び出しが失敗した——一般的エラー。
yahoo_api_unavailableはいYahoo 登録 API が利用不可だった(バッチレベルのヘルス失敗)。
yahoo_api_eofはいYahoo API が早期 EOF を返した——一時的な TCP/TLS 切断。
yahoo_api_unavailable_after_fallbackはいYahoo API が失敗し、SMTP フォールバックも失敗した。
carrier_blockedいいえ日本のキャリアドメイン(docomo.ne.jp、au.com など)——キャリアポリシーにより SMTP がブロックされている。
internal_verifier_errorはい未分類の内部検証エラー——一時的な障害。
rate_limitedはいバッチ処理中にレート制限された(ファイルジョブでの smtp_rate_limited のエイリアス)。
bucket_default_skip_smtp_unknownいいえアカウントレベルの検証モードが SMTP をスキップするよう設定されている——結果はドメインチェックのみに基づく。

Risky(リスクあり)

status: "risky" のメールは中程度の配信リスクがあります。

reason再試行可能説明
mx_only_verification_semaphore_timeoutはいSMTP 並行性セマフォがタイムアウトした——MX のみのフォールバックが有効な MX レコードを確認したが、メールボックスを個別に検証できなかった。

Catch-all(全受信)

status: "catchall" のメールは、すべてのアドレスのメールを受け入れるドメインに属しています。個別の配信可能性は確認できません。

reason説明
catch_all_domainドメインが catch-all と確認——ランダム RCPT プローブがメールサーバーに受け入れられた。
catch_all_deliverableCatch-all ドメインで、特定のアドレスの RCPT も 250 OK を返した。
catch_all_inferredキャッシュされた証拠から catch-all ステータスを推定(間接的、ライブプローブではない)。
m365_internal_relayMicrosoft 365 ドメインが内部リレーとして設定されている——すべての RCPT が受け入れられるが個別には検証されない。
gateway_accept_allセキュリティゲートウェイ(Mimecast、Proofpoint など)が全受信モード。
forwarding_aliasメール転送エイリアスサービス(SimpleLogin、Firefox Relay、Duck.com)。
region_consumer_accept_allすべての受信メールを受け入れることで知られる地域コンシューマードメイン(例:naver.com、daum.net)——SMTP プローブをスキップ。
bucket_default_skip_smtp_catchallアカウントレベルの検証モードが SMTP catch-all 検出をスキップするよう設定されている。

Role(役割アドレス)

status: "role" のメールは共有受信箱に属しています(例:info@support@noreply@)。これらのアドレスは通常配信可能ですが、エンゲージメント率が低い。

役割アドレスは基礎となる SMTP チェックの reason を継承します——このステータスには専用の reason コードは存在しません。例えば、SMTP を通過した役割アドレスは reason: "smtp_deliverable" を表示します。

Disposable(使い捨て)

status: "disposable" のメールは一時的なメールサービスに属しています。これらを受け入れると、通常は低品質な登録につながります。

reason説明
disposable_domainドメインが既知の使い捨て/一時的メールプロバイダーとしてリストされている。

フィルタリングでの reason の使用

statusreason を組み合わせて正確なリストセグメンテーションを実現できます。例えば、一時的な問題のみが原因で unknown の unknown メールを保持するには:

function isRetryableUnknown(result) {
  const retryableReasons = new Set([
    'smtp_eof_blocked', 'smtp_timeout', 'smtp_rate_limited',
    'smtp_greylisted', 'mimecast_greylist', 'proofpoint_ad_lookup',
    'policy_temp_fail', 'google_rate_limit', 'm365_ip_rep_block',
    'dns_timeout', 'dns_lookup_error', 'yahoo_api_error',
    'yahoo_api_unavailable', 'yahoo_api_eof',
    'yahoo_api_unavailable_after_fallback', 'internal_verifier_error',
    'rate_limited', 'mx_only_verification_semaphore_timeout',
  ]);
  return result.status === 'unknown' && retryableReasons.has(result.reason);
}

On this page