Beta privadaMailbeam está en beta privada: la API pública todavía no está abierta.Únete a la lista de espera

Mailbeam
TécnicoPor The Mailbeam Team6 min de lectura15 de junio de 2025

Dominios catch-all: qué son y cómo tratarlos

La verificación de email estándar funciona haciéndole una pregunta al servidor de correo: «¿existe este buzón?». La mayoría de los servidores responden con sinceridad. Los dominios catch-all no: dicen que sí a cualquier dirección, la lea alguien o no.

Esta guía explica qué es una configuración catch-all, por qué es habitual, cómo detectarla y cómo tomar decisiones sensatas sobre estas direcciones sin caer en el rechazo indiscriminado.

¿Qué es un dominio catch-all?

Un dominio catch-all está configurado con una regla de buzón comodín: cualquier correo enviado a cualquier dirección de ese dominio se acepta y se entrega en un buzón designado, en vez de rebotar como no entregable.

Por ejemplo, si acme.com está configurado como catch-all:

  • john.smith@acme.com — se entrega (probablemente real)
  • xq87zk@acme.com — también se entrega (casi con certeza falsa)
  • ceo@acme.com — se entrega (probablemente real)
  • asdfjkl@acme.com — se entrega (probablemente no real)

El dominio las acepta todas. La verificación SMTP devuelve 250 OK para cualquier dirección de ese dominio.

¿Por qué se configura un catch-all?

Hay razones legítimas:

Alias de reenvío: una empresa puede querer que info@, sales@, hello@, contact@ —y cualquier variante que se le ocurra a alguien— acaben en el mismo buzón. En vez de crear cada alias a mano, la persona de IT pone una regla catch-all.

No perder correo: si un cliente tiene jane.smith@company.com en sus contactos y escribe a jsmith@company.com, el catch-all garantiza que el mensaje llega. En equipos de atención al cliente, eso reduce las consultas perdidas.

Privacidad: los empleados pueden usar un alias único por servicio (newsletter-amazon@company.com, newsletter-linkedin@company.com) sin crear cada dirección en el sistema de correo.

Migraciones heredadas: tras un cambio de dominio o una adquisición, el catch-all en el dominio antiguo recoge el correo dirigido a las direcciones viejas durante la transición.

Todas son configuraciones reales y habituales. El catch-all no es sospechoso de por sí: es una función estándar de servidor de correo que usa un porcentaje significativo de los dominios profesionales.

Cómo rompe el catch-all la verificación SMTP

La verificación SMTP estándar funciona así:

→ RCPT TO: <user@example.com> ← 250 2.1.5 OK ← el buzón existe

o así:

→ RCPT TO: <user@example.com> ← 550 5.1.1 User unknown ← el buzón no existe

En un dominio catch-all, cada RCPT TO recibe un 250 OK. La técnica de la dirección de sondeo —enviar una dirección deliberadamente aleatoria para comprobar el comportamiento del dominio— es como se detecta el catch-all:

→ RCPT TO: <xk9a2b3c4d@acme.com> ← aleatoria, casi seguro que no existe ← 250 2.1.5 OK ← catch-all confirmado

Si una dirección aleatoria recibe 250 OK, cualquier 250 OK de una dirección con pinta de real no significa nada: no podemos distinguir entregable de no entregable solo con SMTP.

¿Cómo de comunes son los dominios catch-all?

Los datos del sector apuntan a que entre el 10 % y el 20 % de los dominios de correo profesionales están configurados como catch-all. El porcentaje es mayor en ciertos segmentos:

  • Grandes empresas (los equipos de IT prefieren el control centralizado)
  • Servicios profesionales (despachos de abogados, consultoras)
  • Empresas antiguas con infraestructura heredada
  • Dominios B2B en general, frente a los B2C

En los proveedores de correo de consumo (Gmail, Outlook, Yahoo) la configuración catch-all no es posible: siempre rechazan las direcciones inválidas con un 550. Así que el catch-all es sobre todo un asunto B2B.

El problema de tratarlo como algo binario

Un enfoque ingenuo ante los dominios catch-all es rechazarlos todos. La lógica: si no puedo verificar la dirección, no debería aceptarla.

El problema es que estarías rechazando un porcentaje importante de tus clientes potenciales B2B legítimos. Una herramienta de ventas que rechaza cmo@acme.com porque acme.com es catch-all está funcionalmente rota para la captación profesional.

El modelo mejor es probabilístico: acepta las direcciones catch-all que tengan señales de legitimidad y rechaza las que parezcan generadas automáticamente.

Puntuar una dirección catch-all

Algunos servicios de verificación puntúan las direcciones catch-all con un modelo de machine learning entrenado con datos históricos de envío. Mailbeam no lo hace, y merece la pena explicar por qué: no tenemos un corpus de envíos con el que entrenar, y un número de confianza producido por un modelo que no puedes inspeccionar es difícil de usar cuando se equivoca.

Lo que Mailbeam devuelve en su lugar es una puntuación aditiva construida a partir de un conjunto fijo de señales con pesos y topes publicados:

  • Sintaxis, ruta de correo, resultado del sondeo, desechable, dirección de rol, catch-all
  • Una dirección catch-all está limitada a 70, porque ningún sondeo puede confirmarla
  • El campo reason dice catch_all_unverifiable, y status vuelve como risky en lugar de deliverable

Cada punto es trazable hasta una comprobación, así que cuando una puntuación sorprende se puede averiguar por qué. El compromiso es honesto: una rúbrica no va a superar a un buen modelo en direcciones ambiguas. Lo que hará es decirte qué sabe y dónde se detuvo, que es lo que necesitas para fijar tu propio umbral.

Implementar un tratamiento por niveles

// Todavía no hay SDK: este es el envoltorio de 12 líneas de /docs/quickstart.
import { verifyEmail } from "./lib/mailbeam";

async function verifyEmailForUseCase(
  email: string,
  useCase: "signup" | "cold_outreach" | "lead_import"
) {
  const result = await verifyEmail(email);

  // Sin catch-all: directo
  if (!result.catchAll) {
    return { accept: result.valid && result.score >= 50 };
  }

  // Catch-all: usa umbrales de puntuación según el caso de uso
  const thresholds = {
    signup:        40,   // permisivo — el usuario está delante y motivado
    cold_outreach: 70,   // estricto — un rebote en frío sale caro
    lead_import:   55,   // equilibrado
  };

  const threshold = thresholds[useCase];
  return { accept: result.score >= threshold, catchAll: true };
}

Cada contexto merece un umbral distinto:

Caso de usoPuntuación mínima recomendadaMotivo
Registro (usuario presente)40Equivocarse cuesta poco; el usuario puede corregirlo
Importación de newsletter55Riesgo moderado; fácil de limpiar después
Captación en frío70Riesgo alto de reputación por rebotes
Prospección comercial65Equilibrio entre alcance y riesgo de rebote

Qué hacer en la interfaz

Cuando detectas una dirección catch-all, tienes varias opciones:

Opción 1: aceptar en silencio. Usa un umbral permisivo y acepta sin decírselo al usuario. Va bien en registros B2B, donde no quieres poner fricción a los usuarios corporativos.

Opción 2: aceptar con un aviso. Muestra un mensaje que no bloquee: «No hemos podido verificar del todo esta dirección; comprueba que es correcta antes de continuar». Útil en formularios de captación de leads.

Opción 3: exigir confirmación. Envía un correo de confirmación y exige un clic antes de activar la cuenta. Es lo estándar en registros de alto valor.

Lo que no debes hacer es mostrar un error diciendo que la dirección es inválida: no lo es. Es inverificable por SMTP estándar, que es otra cosa.

El catch-all en la verificación masiva

Al limpiar una lista te encontrarás con lotes de direcciones catch-all. El enfoque correcto:

const auth = { Authorization: `Bearer ${process.env.MAILBEAM_KEY}` };

// Envía la lista; la respuesta es un id de trabajo, no los resultados.
const job = await fetch("https://api.mailbeam.dev/v1/verify/batch", {
  method: "POST",
  headers: { ...auth, "Content-Type": "application/json" },
  body: JSON.stringify({ emails }),
}).then((r) => r.json());

// Espera al webhook batch.completed, o consulta /v1/jobs/:id hasta que termine.
const { results } = await fetch(
  `https://api.mailbeam.dev/v1/jobs/${job.job_id}/results?format=json`,
  { headers: auth }
).then((r) => r.json());

for (const result of results) {
  // Un dominio catch-all lo acepta todo, así que el veredicto vuelve como
  // "risky" en lugar de un sí o un no rotundo. Segmenta por la puntuación.
  if (result.status === "risky" && result.reason === "catch_all") {
    if (result.score >= 70)      keepInList(result.email);
    else if (result.score >= 40) flagForReview(result.email);
    else                         suppress(result.email);
  } else if (result.status === "undeliverable") {
    suppress(result.email);
  }
}

No suprimas las direcciones catch-all en bloque. Segméntalas por puntuación y decide por segmento.

Resumen

Los dominios catch-all son una función normal de la infraestructura de correo profesional, no una anomalía. Afectan a entre el 10 % y el 20 % de los dominios B2B. La verificación SMTP estándar es ciega ante ellos: toda dirección de un dominio catch-all devuelve un resultado positivo.

La respuesta correcta no es el rechazo generalizado, sino la puntuación probabilística:

  • Detecta el catch-all con una dirección de sondeo
  • Puntúa la dirección con señales del dominio y de la parte local
  • Aplica umbrales acordes a tu caso de uso
  • Acepta las de confianza alta, marca las medias, rechaza las bajas

Así mantienes la calidad de la lista sin dar la espalda a un segmento importante de usuarios B2B legítimos.

Siguientes pasos