BillionVerify LogoBillionVerify

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ónDescripción
smtp_deliverableSMTP 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ónDescripción
invalid_syntaxLa dirección de correo falla el análisis de sintaxis — parte local malformada, dominio o falta el @.
no_mx_recordsEl dominio no tiene registros MX (NXDOMAIN o resultado de búsqueda MX vacío).
spf_reject_allEl dominio no tiene registros MX y tiene un registro SPF con -all — el dominio rechaza explícitamente todo el correo entrante.
mailbox_not_foundSMTP 550/5xx confirmó que el buzón no existe en el servidor remoto.
host_not_foundEl 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ónReintentableDescripción
smtp_unverifiableNoEl 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_blockedNoEl servidor SMTP remoto bloqueó o puso en lista negra explícitamente la conexión.
smtp_eof_blockedEl MX cerró la conexión antes de enviar un banner — típicamente un limitador de velocidad por IP o una regla fail2ban.
smtp_timeoutLa operación SMTP expiró (plazo de contexto o cancelación).
smtp_connection_failedNoFallo genérico de conexión SMTP — ninguna clase más específica coincidió.
smtp_rate_limitedEl servidor SMTP remoto devolvió una respuesta de límite de velocidad (421, 450, 451 o límite de mensajes excedido).
smtp_greylistedRespuesta genérica de greylisting detectada — reintente después de un retraso.
mimecast_greylistGreylisting específico de Mimecast / fallo temporal 451.
proofpoint_ad_lookupBúsqueda asíncrona de AD de Proofpoint en progreso (temp-fail 421 4.1.1 durante validación de destinatario).
policy_temp_failFallo temporal genérico 4xx por aplicación de política remota.
google_rate_limitGoogle MX devolvió una respuesta de límite de velocidad o rechazo temporal.
google_dmarc_misalignmentNoLa configuración DMARC del dominio está desalineada — Google rechaza según política DMARC.
m365_ip_rep_blockMicrosoft 365 rechazó la conexión debido a la reputación de IP (códigos 4.7.650 / 4.7.651).
mailbox_fullNoEl buzón existe pero está sobre cuota (SMTP 452 o respuesta de bandeja de entrada llena).
mailbox_disabledNoEl buzón existe pero ha sido desactivado o dado de baja.
dns_timeoutLa búsqueda DNS o MX expiró — problema transitorio del resolutor.
dns_lookup_errorLa búsqueda DNS falló con un error que no es NXDOMAIN (SERVFAIL, tiempo de espera UDP o error del resolutor).
yahoo_api_verifiedNoLa API de Registro de Yahoo confirmó que la dirección es entregable (ruta de lote).
yahoo_api_not_deliverableNoLa API de Registro de Yahoo confirmó que la dirección no es entregable (ruta de lote).
yahoo_api_errorLa llamada a la API de Registro de Yahoo falló — error general.
yahoo_api_unavailableLa API de Registro de Yahoo no estaba disponible (fallo de salud a nivel de lote).
yahoo_api_eofLa API de Yahoo devolvió EOF anticipado — caída transitoria de TCP/TLS.
yahoo_api_unavailable_after_fallbackLa API de Yahoo falló y el fallback SMTP también falló.
carrier_blockedNoDominio de operador japonés (docomo.ne.jp, au.com, etc.) — SMTP está bloqueado por política del operador.
internal_verifier_errorError interno del verificador no clasificado — fallo transitorio.
rate_limitedEl correo fue limitado en velocidad durante el procesamiento por lotes (alias de smtp_rate_limited en trabajos de archivo).
bucket_default_skip_smtp_unknownNoEl 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_timeoutEl 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_reasonsDescripción
spamhaus_dbl_spamEl dominio está listado como fuente de spam.
spamhaus_dbl_phishEl dominio está listado como dominio de phishing.
spamhaus_dbl_malwareEl dominio está listado como dominio de distribución de malware.
spamhaus_dbl_botnet_ccEl 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 risky significaba «no pudimos terminar la verificación» (un repliegue interno por capacidad SMTP), era reintentable y gratuito. Ese caso ahora se devuelve como unknown con el mismo motivo mx_only_verification_semaphore_timeout, sin cambios de comportamiento ni de facturación. Si tu integración trata risky como «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ónDescripción
catch_all_domainDominio confirmado como catch-all — sonda RCPT aleatoria aceptada por el servidor de correo.
catch_all_deliverableDominio catch-all, y la dirección específica también devolvió 250 OK en RCPT.
catch_all_inferredEstado catch-all inferido de evidencia en caché (indirecto, no una sonda en vivo).
m365_internal_relayDominio de Microsoft 365 configurado como retransmisión interna — todos los RCPT aceptados pero no verificados individualmente.
gateway_accept_allLa puerta de enlace de seguridad (Mimecast, Proofpoint, etc.) está en modo accept-all.
forwarding_aliasServicio de alias de reenvío de correo (SimpleLogin, Firefox Relay, Duck.com).
region_consumer_accept_allDominio 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_catchallEl 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ónDescripción
disposable_domainEl 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);
}

On this page