Verificatieredenen
Volledige referentie van alle reason-codes die de BillionVerify API teruggeeft — betekenis en aanbevolen actie voor elke code.
Elk verificatieresultaat bevat een reason-veld dat verklaart waarom het e-mailadres zijn status heeft gekregen. Gebruik deze referentie om nauwkeurige filterlogica te bouwen, onverwachte resultaten te diagnosticeren en uw verzendstrategie te verfijnen.
Hoe redenen werken
Het reason-veld verschijnt in alle verificatiereacties naast het status-veld:
{
"email": "user@example.com",
"status": "valid",
"reason": "smtp_deliverable"
}Redenen zijn stabiele tekenreeksidentificatoren — u kunt ze direct gebruiken in filterregels of downstream conditionele logica.
Valid (Geldig)
E-mails met status: "valid" zijn bevestigd afleverbaar.
| Reden | Beschrijving |
|---|---|
smtp_deliverable | SMTP RCPT heeft 250 OK teruggegeven — mailbox bevestigd afleverbaar. Ook geproduceerd wanneer Microsoft 365 DBEB-modus aflevering bevestigt of wanneer een catch-all-domein het specifieke adres aanvullend bevestigt. |
Invalid (Ongeldig)
E-mails met status: "invalid" moeten van uw lijst worden verwijderd — aflevering is niet mogelijk.
| Reden | Beschrijving |
|---|---|
invalid_syntax | Het e-mailadres slaagt niet voor syntaxisanalyse — ongeldig lokaal gedeelte, domein of ontbrekende @. |
no_mx_records | Het domein heeft geen MX-records (NXDOMAIN of leeg MX-opzoekresultaat). |
spf_reject_all | Het domein heeft geen MX-records en een SPF-record met -all — het domein weigert expliciet alle inkomende e-mail. |
mailbox_not_found | SMTP 550/5xx bevestigde dat de mailbox niet bestaat op de externe server. |
host_not_found | De MX-hostnaam reageerde niet — host onbereikbaar of niet-bestaand. |
Unknown (Onbekend)
E-mails met status: "unknown" konden niet afdoende worden geverifieerd. Sommige zijn tijdelijk (opnieuw proberen); andere vertegenwoordigen structurele beperkingen.
| Reden | Opnieuw proberen | Beschrijving |
|---|---|---|
smtp_unverifiable | Nee | De provider blokkeert geautomatiseerde SMTP-verificatie (Apple iCloud, Microsoft consumer, Proton, Tuta). Resultaat is gebaseerd op heuristiek op domeinniveau. |
smtp_blocked | Nee | De externe SMTP-server blokkeerde of plaatste de verbinding op een zwarte lijst. |
smtp_eof_blocked | Ja | De MX sloot de verbinding voordat een banner werd verzonden — doorgaans een IP-snelheidsbegrenzer of fail2ban-regel. |
smtp_timeout | Ja | SMTP-bewerking is verlopen (context-deadline of annulering). |
smtp_connection_failed | Nee | Algemene SMTP-verbindingsfout — geen specifiekere klasse gevonden. |
smtp_rate_limited | Ja | Externe SMTP-server gaf een snelheidsbeperkingsreactie terug (421, 450, 451 of berichtlimiet overschreden). |
smtp_greylisted | Ja | Algemene greylistingreactie gedetecteerd — probeer opnieuw na een vertraging. |
mimecast_greylist | Ja | Mimecast-specifieke greylisting / 451 tijdelijke fout. |
proofpoint_ad_lookup | Ja | Proofpoint AD async opzoeken in uitvoering (421 4.1.1 temp-fail tijdens ontvangersvalidatie). |
policy_temp_fail | Ja | Algemene 4xx tijdelijke fout door externe beleidshandhaving. |
google_rate_limit | Ja | Google MX gaf een snelheidsbeperkings- of tijdelijke weigeringsreactie terug. |
google_dmarc_misalignment | Nee | Domein DMARC-configuratie is niet uitgelijnd — Google weigert op basis van DMARC-beleid. |
m365_ip_rep_block | Ja | Microsoft 365 weigerde de verbinding vanwege IP-reputatie (4.7.650 / 4.7.651 codes). |
mailbox_full | Nee | Mailbox bestaat maar is over quota (SMTP 452 of volle inbox reactie). |
mailbox_disabled | Nee | Mailbox bestaat maar is uitgeschakeld of gedeactiveerd. |
dns_timeout | Ja | DNS- of MX-opzoeken is verlopen — tijdelijk resolverprobleem. |
dns_lookup_error | Ja | DNS-opzoeken mislukt met een niet-NXDOMAIN-fout (SERVFAIL, UDP-time-out of resolverfout). |
yahoo_api_verified | Nee | Yahoo Registration API bevestigde dat het adres afleverbaar is (batchpad). |
yahoo_api_not_deliverable | Nee | Yahoo Registration API bevestigde dat het adres niet afleverbaar is (batchpad). |
yahoo_api_error | Ja | Yahoo Registration API-aanroep mislukt — algemene fout. |
yahoo_api_unavailable | Ja | Yahoo Registration API was niet beschikbaar (batchniveau gezondheidsfout). |
yahoo_api_eof | Ja | Yahoo API retourneerde vroegtijdig EOF — tijdelijke TCP/TLS-verbreking. |
yahoo_api_unavailable_after_fallback | Ja | Yahoo API mislukt en SMTP-fallback ook mislukt. |
carrier_blocked | Nee | Japans carrierdomein (docomo.ne.jp, au.com, enz.) — SMTP wordt geblokkeerd door carrierbeleid. |
internal_verifier_error | Ja | Niet-geclassificeerde interne verificatiefout — tijdelijke storing. |
rate_limited | Ja | E-mail was snelheidsbegrensd tijdens batchverwerking (alias voor smtp_rate_limited in bestandstaken). |
bucket_default_skip_smtp_unknown | Nee | Accountniveau verificatiemodus is ingesteld om SMTP over te slaan — resultaat is alleen gebaseerd op domeincontroles. |
Risky (Riskant)
E-mails met status: "risky" hebben een matig afleverbaarheidsrisico.
| Reden | Opnieuw proberen | Beschrijving |
|---|---|---|
mx_only_verification_semaphore_timeout | Ja | SMTP-gelijktijdigheidssemafoor verlopen — MX-only fallback bevestigde geldige MX-records maar de mailbox kon niet afzonderlijk worden geverifieerd. |
Catch-all
E-mails met status: "catchall" behoren tot domeinen die e-mail accepteren voor alle adressen. Individuele afleverbaarheid kan niet worden bevestigd.
| Reden | Beschrijving |
|---|---|
catch_all_domain | Domein bevestigd als catch-all — willekeurige RCPT-probe geaccepteerd door de mailserver. |
catch_all_deliverable | Catch-all domein, en het specifieke adres gaf ook 250 OK op RCPT. |
catch_all_inferred | Catch-all-status afgeleid uit gecachede bewijzen (indirect, geen live probe). |
m365_internal_relay | Microsoft 365-domein geconfigureerd als intern relay — alle RCPT geaccepteerd maar niet afzonderlijk geverifieerd. |
gateway_accept_all | Beveiligingsgateway (Mimecast, Proofpoint, enz.) is in accept-all modus. |
forwarding_alias | E-mail doorstuur alias service (SimpleLogin, Firefox Relay, Duck.com). |
region_consumer_accept_all | Regionaal consumentendomein (bijv. naver.com, daum.net) waarvan bekend is dat het alle inkomende e-mail accepteert — SMTP-probe wordt overgeslagen. |
bucket_default_skip_smtp_catchall | Accountniveau verificatiemodus is ingesteld om SMTP catch-all detectie over te slaan. |
Role (Roladres)
E-mails met status: "role" behoren tot gedeelde inboxen (bijv. info@, support@, noreply@). Deze adressen zijn doorgaans afleverbaar maar hebben lage betrokkenheid.
Roladressen erven de reason van hun onderliggende SMTP-controle — er bestaan geen toegewijde reason-codes voor deze status. Bijvoorbeeld, een roladres dat SMTP doorstaat toont reason: "smtp_deliverable".
Disposable (Wegwerp)
E-mails met status: "disposable" behoren tot tijdelijke e-mailservices. Het accepteren hiervan leidt doorgaans tot registraties van lage kwaliteit.
| Reden | Beschrijving |
|---|---|
disposable_domain | Domein is geregistreerd als bekende wegwerp-/tijdelijke e-mailprovider. |
Redenen gebruiken bij filteren
U kunt status en reason combineren voor nauwkeurige lijstsegmentatie. Bijvoorbeeld, om unknown e-mails te bewaren die alleen onbekend zijn vanwege tijdelijke problemen:
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);
}