Razones de Verificación
Referencia completa de todos los códigos reason de la API BillionVerify — qué significa cada razón y cómo actuar.
Cada resultado de verificación incluye un campo reason que explica por qué el correo electrónico recibió su estado. Use esta referencia para construir lógica de filtrado precisa, diagnosticar resultados inesperados y ajustar su estrategia de envío.
Cómo funcionan las razones
El campo reason aparece en todas las respuestas de verificación junto al campo status:
{
"email": "user@example.com",
"status": "valid",
"reason": "smtp_deliverable"
}Las razones son identificadores de cadena estables — puede usarlos directamente en reglas de filtrado o lógica condicional posterior.
Valid (Válido)
Los correos con status: "valid" están confirmados como entregables.
| Razón | Descripción |
|---|---|
smtp_deliverable | SMTP RCPT devolvió 250 OK — buzón confirmado como entregable. También se produce cuando el modo DBEB de Microsoft 365 confirma la entrega o cuando un dominio catch-all confirma adicionalmente la dirección específica. |
Invalid (Inválido)
Los correos con status: "invalid" deben eliminarse de su lista — la entrega no es posible.
| Razón | Descripción |
|---|---|
invalid_syntax | La dirección de correo falla el análisis de sintaxis — parte local malformada, dominio o falta el @. |
no_mx_records | El dominio no tiene registros MX (NXDOMAIN o resultado de búsqueda MX vacío). |
spf_reject_all | El dominio no tiene registros MX y tiene un registro SPF con -all — el dominio rechaza explícitamente todo el correo entrante. |
mailbox_not_found | SMTP 550/5xx confirmó que el buzón no existe en el servidor remoto. |
host_not_found | El nombre de host MX no respondió — host inalcanzable o inexistente. |
Unknown (Desconocido)
Los correos con status: "unknown" no pudieron verificarse de forma concluyente. Algunos son temporales (reintentables); otros representan limitaciones estructurales.
| Razón | Reintentable | Descripción |
|---|---|---|
smtp_unverifiable | No | El proveedor bloquea la verificación SMTP automatizada (Apple iCloud, Microsoft consumer, Proton, Tuta). El resultado se basa en heurísticas a nivel de dominio. |
smtp_blocked | No | El servidor SMTP remoto bloqueó o puso en lista negra explícitamente la conexión. |
smtp_eof_blocked | Sí | El MX cerró la conexión antes de enviar un banner — típicamente un limitador de velocidad por IP o una regla fail2ban. |
smtp_timeout | Sí | La operación SMTP expiró (plazo de contexto o cancelación). |
smtp_connection_failed | No | Fallo genérico de conexión SMTP — ninguna clase más específica coincidió. |
smtp_rate_limited | Sí | El servidor SMTP remoto devolvió una respuesta de límite de velocidad (421, 450, 451 o límite de mensajes excedido). |
smtp_greylisted | Sí | Respuesta genérica de greylisting detectada — reintente después de un retraso. |
mimecast_greylist | Sí | Greylisting específico de Mimecast / fallo temporal 451. |
proofpoint_ad_lookup | Sí | Búsqueda asíncrona de AD de Proofpoint en progreso (temp-fail 421 4.1.1 durante validación de destinatario). |
policy_temp_fail | Sí | Fallo temporal genérico 4xx por aplicación de política remota. |
google_rate_limit | Sí | Google MX devolvió una respuesta de límite de velocidad o rechazo temporal. |
google_dmarc_misalignment | No | La configuración DMARC del dominio está desalineada — Google rechaza según política DMARC. |
m365_ip_rep_block | Sí | Microsoft 365 rechazó la conexión debido a la reputación de IP (códigos 4.7.650 / 4.7.651). |
mailbox_full | No | El buzón existe pero está sobre cuota (SMTP 452 o respuesta de bandeja de entrada llena). |
mailbox_disabled | No | El buzón existe pero ha sido desactivado o dado de baja. |
dns_timeout | Sí | La búsqueda DNS o MX expiró — problema transitorio del resolutor. |
dns_lookup_error | Sí | La búsqueda DNS falló con un error que no es NXDOMAIN (SERVFAIL, tiempo de espera UDP o error del resolutor). |
yahoo_api_verified | No | La API de Registro de Yahoo confirmó que la dirección es entregable (ruta de lote). |
yahoo_api_not_deliverable | No | La API de Registro de Yahoo confirmó que la dirección no es entregable (ruta de lote). |
yahoo_api_error | Sí | La llamada a la API de Registro de Yahoo falló — error general. |
yahoo_api_unavailable | Sí | La API de Registro de Yahoo no estaba disponible (fallo de salud a nivel de lote). |
yahoo_api_eof | Sí | La API de Yahoo devolvió EOF anticipado — caída transitoria de TCP/TLS. |
yahoo_api_unavailable_after_fallback | Sí | La API de Yahoo falló y el fallback SMTP también falló. |
carrier_blocked | No | Dominio de operador japonés (docomo.ne.jp, au.com, etc.) — SMTP está bloqueado por política del operador. |
internal_verifier_error | Sí | Error interno del verificador no clasificado — fallo transitorio. |
rate_limited | Sí | El correo fue limitado en velocidad durante el procesamiento por lotes (alias de smtp_rate_limited en trabajos de archivo). |
bucket_default_skip_smtp_unknown | No | El modo de verificación a nivel de cuenta está configurado para omitir SMTP — el resultado se basa solo en verificaciones de dominio. |
mx_only_verification_semaphore_timeout | Sí | El semáforo de concurrencia SMTP expiró — el fallback solo-MX confirmó registros MX válidos pero el buzón no pudo verificarse individualmente. |
Risky (Arriesgado)
Los correos con status: "risky" casi siempre pueden recibir mensajes, pero el dominio del destinatario figura en una lista de bloqueo externa (Spamhaus Domain Blocklist) por spam, phishing, malware o C&C de botnets. Enviarles correo daña tu reputación de envío — trátalos como direcciones desechables y elimínalos de la lista.
El array risk_reasons del resultado explica el motivo. Estos resultados se facturan y nunca son reintentables.
Valor de risk_reasons | Descripción |
|---|---|
spamhaus_dbl_spam | El dominio está listado como fuente de spam. |
spamhaus_dbl_phish | El dominio está listado como dominio de phishing. |
spamhaus_dbl_malware | El dominio está listado como dominio de distribución de malware. |
spamhaus_dbl_botnet_cc | El dominio está listado como infraestructura de mando y control de botnets. |
Los dominios que Spamhaus marca como abused legitimate sites (un sitio web normal que fue comprometido) nunca producen un resultado risky: que hayan hackeado el sitio de una empresa no significa que sus buzones sean problemáticos.
Cambiado el 2026-08-04. Antes
riskysignificaba «no pudimos terminar la verificación» (un repliegue interno por capacidad SMTP), era reintentable y gratuito. Ese caso ahora se devuelve comounknowncon el mismo motivomx_only_verification_semaphore_timeout, sin cambios de comportamiento ni de facturación. Si tu integración tratariskycomo «reintentar más tarde», actualízala.
Catch-all
Los correos con status: "catchall" pertenecen a dominios que aceptan correo para todas las direcciones. La entregabilidad individual no puede confirmarse.
| Razón | Descripción |
|---|---|
catch_all_domain | Dominio confirmado como catch-all — sonda RCPT aleatoria aceptada por el servidor de correo. |
catch_all_deliverable | Dominio catch-all, y la dirección específica también devolvió 250 OK en RCPT. |
catch_all_inferred | Estado catch-all inferido de evidencia en caché (indirecto, no una sonda en vivo). |
m365_internal_relay | Dominio de Microsoft 365 configurado como retransmisión interna — todos los RCPT aceptados pero no verificados individualmente. |
gateway_accept_all | La puerta de enlace de seguridad (Mimecast, Proofpoint, etc.) está en modo accept-all. |
forwarding_alias | Servicio de alias de reenvío de correo (SimpleLogin, Firefox Relay, Duck.com). |
region_consumer_accept_all | Dominio de consumidor regional (p. ej. naver.com, daum.net) conocido por aceptar todo el correo entrante — se omite la sonda SMTP. |
bucket_default_skip_smtp_catchall | El modo de verificación a nivel de cuenta está configurado para omitir la detección catch-all de SMTP. |
Role (Dirección de rol)
Los correos con status: "role" pertenecen a bandejas de entrada compartidas (p. ej. info@, support@, noreply@). Estas direcciones son típicamente entregables pero tienen baja tasa de interacción.
Las direcciones de rol heredan el reason de su verificación SMTP subyacente — no existen códigos de razón dedicados para este estado. Por ejemplo, una dirección de rol que pasa SMTP mostrará reason: "smtp_deliverable".
Disposable (Desechable)
Los correos con status: "disposable" pertenecen a servicios de correo temporal. Aceptar estos generalmente conduce a registros de baja calidad.
| Razón | Descripción |
|---|---|
disposable_domain | El dominio está listado como proveedor de correo desechable / temporal conocido. |
Usando razones en el filtrado
Puede combinar status y reason para una segmentación precisa de listas. Por ejemplo, para mantener correos unknown que solo son desconocidos debido a problemas temporales:
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);
}