Razões de Verificação
Referência completa de todos os códigos reason retornados pela API BillionVerify — significado e como agir em cada código.
Cada resultado de verificação inclui um campo reason que explica por que o e-mail recebeu seu status. Use esta referência para construir lógica de filtragem precisa, diagnosticar resultados inesperados e ajustar sua estratégia de envio.
Como as razões funcionam
O campo reason aparece em todas as respostas de verificação ao lado do campo status:
{
"email": "user@example.com",
"status": "valid",
"reason": "smtp_deliverable"
}As razões são identificadores de string estáveis — você pode usá-los diretamente em regras de filtragem ou lógica condicional downstream.
Valid (Válido)
E-mails com status: "valid" são confirmados como entregáveis.
| Razão | Descrição |
|---|---|
smtp_deliverable | SMTP RCPT retornou 250 OK — caixa de correio confirmada como entregável. Também produzido quando o modo DBEB do Microsoft 365 confirma a entrega ou quando um domínio catch-all confirma adicionalmente o endereço específico. |
Invalid (Inválido)
E-mails com status: "invalid" devem ser removidos da sua lista — a entrega não é possível.
| Razão | Descrição |
|---|---|
invalid_syntax | O endereço de e-mail falha na análise de sintaxe — parte local malformada, domínio ou @ ausente. |
no_mx_records | O domínio não possui registros MX (NXDOMAIN ou resultado de pesquisa MX vazio). |
spf_reject_all | O domínio não possui registros MX e tem um registro SPF com -all — o domínio rejeita explicitamente todos os e-mails de entrada. |
mailbox_not_found | SMTP 550/5xx confirmou que a caixa de correio não existe no servidor remoto. |
host_not_found | O nome de host MX não respondeu — host inacessível ou inexistente. |
Unknown (Desconhecido)
E-mails com status: "unknown" não puderam ser verificados conclusivamente. Alguns são temporários (repetíveis); outros representam limitações estruturais.
| Razão | Repetível | Descrição |
|---|---|---|
smtp_unverifiable | Não | O provedor bloqueia a verificação SMTP automatizada (Apple iCloud, Microsoft consumer, Proton, Tuta). O resultado é baseado em heurísticas de nível de domínio. |
smtp_blocked | Não | O servidor SMTP remoto bloqueou ou colocou a conexão na lista negra explicitamente. |
smtp_eof_blocked | Sim | O MX fechou a conexão antes de enviar um banner — normalmente um limitador de taxa por IP ou regra fail2ban. |
smtp_timeout | Sim | A operação SMTP expirou (prazo de contexto ou cancelamento). |
smtp_connection_failed | Não | Falha genérica de conexão SMTP — nenhuma classe mais específica correspondeu. |
smtp_rate_limited | Sim | O servidor SMTP remoto retornou uma resposta de limite de taxa (421, 450, 451 ou limite de mensagens excedido). |
smtp_greylisted | Sim | Resposta genérica de greylisting detectada — tente novamente após um atraso. |
mimecast_greylist | Sim | Greylisting específico do Mimecast / falha temporária 451. |
proofpoint_ad_lookup | Sim | Pesquisa assíncrona de AD do Proofpoint em andamento (temp-fail 421 4.1.1 durante validação de destinatário). |
policy_temp_fail | Sim | Falha temporária genérica 4xx de aplicação de política remota. |
google_rate_limit | Sim | Google MX retornou uma resposta de limite de taxa ou rejeição temporária. |
google_dmarc_misalignment | Não | A configuração DMARC do domínio está desalinhada — Google rejeita com base na política DMARC. |
m365_ip_rep_block | Sim | Microsoft 365 rejeitou a conexão devido à reputação de IP (códigos 4.7.650 / 4.7.651). |
mailbox_full | Não | A caixa de correio existe mas está acima da cota (SMTP 452 ou resposta de caixa de entrada cheia). |
mailbox_disabled | Não | A caixa de correio existe mas foi desativada ou desativada. |
dns_timeout | Sim | A pesquisa de DNS ou MX expirou — problema transitório do resolvedor. |
dns_lookup_error | Sim | A pesquisa de DNS falhou com um erro que não é NXDOMAIN (SERVFAIL, tempo limite UDP ou erro do resolvedor). |
yahoo_api_verified | Não | A API de Registro do Yahoo confirmou que o endereço é entregável (caminho em lote). |
yahoo_api_not_deliverable | Não | A API de Registro do Yahoo confirmou que o endereço não é entregável (caminho em lote). |
yahoo_api_error | Sim | A chamada da API de Registro do Yahoo falhou — erro geral. |
yahoo_api_unavailable | Sim | A API de Registro do Yahoo estava indisponível (falha de saúde em nível de lote). |
yahoo_api_eof | Sim | A API do Yahoo retornou EOF antecipado — queda transitória de TCP/TLS. |
yahoo_api_unavailable_after_fallback | Sim | A API do Yahoo falhou e o fallback SMTP também falhou. |
carrier_blocked | Não | Domínio de operadora japonesa (docomo.ne.jp, au.com, etc.) — SMTP é bloqueado pela política da operadora. |
internal_verifier_error | Sim | Erro interno do verificador não classificado — falha transitória. |
rate_limited | Sim | O e-mail foi limitado em taxa durante o processamento em lote (alias de smtp_rate_limited em trabalhos de arquivo). |
bucket_default_skip_smtp_unknown | Não | O modo de verificação no nível da conta está configurado para pular SMTP — o resultado é baseado apenas em verificações de domínio. |
Risky (Arriscado)
E-mails com status: "risky" têm um risco moderado de entregabilidade.
| Razão | Repetível | Descrição |
|---|---|---|
mx_only_verification_semaphore_timeout | Sim | O semáforo de concorrência SMTP expirou — o fallback somente-MX confirmou registros MX válidos, mas a caixa de correio não pôde ser verificada individualmente. |
Catch-all
E-mails com status: "catchall" pertencem a domínios que aceitam e-mail para todos os endereços. A entregabilidade individual não pode ser confirmada.
| Razão | Descrição |
|---|---|
catch_all_domain | Domínio confirmado como catch-all — sonda RCPT aleatória aceita pelo servidor de e-mail. |
catch_all_deliverable | Domínio catch-all, e o endereço específico também retornou 250 OK no RCPT. |
catch_all_inferred | Status catch-all inferido de evidências em cache (indireto, não uma sonda ao vivo). |
m365_internal_relay | Domínio do Microsoft 365 configurado como retransmissão interna — todos os RCPT aceitos mas não verificados individualmente. |
gateway_accept_all | Gateway de segurança (Mimecast, Proofpoint, etc.) está em modo accept-all. |
forwarding_alias | Serviço de alias de encaminhamento de e-mail (SimpleLogin, Firefox Relay, Duck.com). |
region_consumer_accept_all | Domínio de consumidor regional (p. ex. naver.com, daum.net) conhecido por aceitar todos os e-mails de entrada — sonda SMTP ignorada. |
bucket_default_skip_smtp_catchall | O modo de verificação no nível da conta está configurado para pular a detecção catch-all SMTP. |
Role (Endereço de função)
E-mails com status: "role" pertencem a caixas de entrada compartilhadas (p. ex. info@, support@, noreply@). Esses endereços são tipicamente entregáveis mas têm baixo engajamento.
Os endereços de função herdam o reason de sua verificação SMTP subjacente — não existem códigos de razão dedicados para este status. Por exemplo, um endereço de função que passa pelo SMTP mostrará reason: "smtp_deliverable".
Disposable (Descartável)
E-mails com status: "disposable" pertencem a serviços de e-mail temporário. Aceitar esses geralmente leva a cadastros de baixa qualidade.
| Razão | Descrição |
|---|---|
disposable_domain | O domínio está listado como provedor de e-mail descartável / temporário conhecido. |
Usando razões na filtragem
Você pode combinar status e reason para segmentação precisa de listas. Por exemplo, para manter e-mails unknown que são desconhecidos apenas devido a problemas temporários:
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);
}