Domini catch-all: che cosa sono e come trattarli
La verifica delle email standard funziona facendo una domanda al server di posta: «questa casella esiste?». La maggior parte dei server risponde con sincerità. I domini catch-all no: dicono di sì a qualsiasi indirizzo, che qualcuno lo legga o meno.
Questa guida spiega che cos'è una configurazione catch-all, perché è comune, come rilevarla e come prendere decisioni sensate su questi indirizzi senza cadere nel rifiuto indiscriminato.
Che cos'è un dominio catch-all?
Un dominio catch-all è configurato con una regola di casella jolly: qualsiasi messaggio inviato a qualsiasi indirizzo di quel dominio viene accettato e consegnato a una casella designata, invece di rimbalzare come non recapitabile.
Per esempio, se acme.com è configurato come catch-all:
john.smith@acme.com— viene consegnato (probabilmente reale)xq87zk@acme.com— viene consegnato anche lui (quasi certamente falso)ceo@acme.com— viene consegnato (probabilmente reale)asdfjkl@acme.com— viene consegnato (probabilmente non reale)
Il dominio li accetta tutti. La verifica SMTP restituisce 250 OK per qualsiasi indirizzo di quel dominio.
Perché si configura un catch-all?
Ci sono ragioni legittime:
Alias di inoltro: un'azienda può volere che info@, sales@, hello@, contact@ — e qualsiasi variante venga in mente a qualcuno — finiscano nella stessa casella. Invece di creare ogni alias a mano, chi si occupa dei sistemi mette una regola catch-all.
Non perdere posta: se un cliente ha jane.smith@company.com in rubrica e scrive a jsmith@company.com, il catch-all garantisce che il messaggio arrivi. Nelle squadre di assistenza clienti questo riduce le richieste perse.
Privacy: i dipendenti possono usare un alias diverso per ogni servizio (newsletter-amazon@company.com, newsletter-linkedin@company.com) senza creare ciascun indirizzo nel sistema di posta.
Migrazioni da assetti precedenti: dopo un cambio di dominio o un'acquisizione, il catch-all sul vecchio dominio raccoglie la posta diretta ai vecchi indirizzi durante la transizione.
Sono tutte configurazioni reali e diffuse. Il catch-all non è di per sé sospetto: è una funzione standard dei server di posta usata da una percentuale significativa dei domini professionali.
Come il catch-all manda in crisi la verifica SMTP
La verifica SMTP standard funziona così:
→ RCPT TO: <user@example.com>
← 250 2.1.5 OK ← la casella esiste
oppure così:
→ RCPT TO: <user@example.com>
← 550 5.1.1 User unknown ← la casella non esiste
Su un dominio catch-all, ogni RCPT TO riceve un 250 OK. La tecnica dell'indirizzo di sondaggio — mandare un indirizzo deliberatamente casuale per verificare il comportamento del dominio — è il modo in cui si rileva il catch-all:
→ RCPT TO: <xk9a2b3c4d@acme.com> ← casuale, quasi certamente inesistente
← 250 2.1.5 OK ← catch-all confermato
Se un indirizzo casuale riceve 250 OK, qualsiasi 250 OK per un indirizzo dall'aria vera non significa niente: non possiamo distinguere recapitabile da non recapitabile con il solo SMTP.
Quanto sono comuni i domini catch-all?
I dati del settore indicano che fra il 10% e il 20% dei domini di posta professionali è configurato come catch-all. La percentuale è più alta in certi segmenti:
- Grandi aziende (le squadre di sistemi preferiscono il controllo centralizzato)
- Servizi professionali (studi legali, società di consulenza)
- Aziende di vecchia data con infrastruttura ereditata
- Domini B2B in generale, rispetto ai B2C
Presso i fornitori di posta per il grande pubblico (Gmail, Outlook, Yahoo) la configurazione catch-all non è possibile: rifiutano sempre gli indirizzi non validi con un 550. Il catch-all è quindi soprattutto una questione B2B.
Il problema di trattarlo come una cosa binaria
Un approccio ingenuo ai domini catch-all è rifiutarli tutti. La logica: se non posso verificare l'indirizzo, non dovrei accettarlo.
Il problema è che così rifiuteresti una percentuale importante dei tuoi potenziali clienti B2B legittimi. Uno strumento di vendita che rifiuta cmo@acme.com perché acme.com è catch-all è funzionalmente rotto per la raccolta di contatti professionali.
Il modello migliore è probabilistico: accetta gli indirizzi catch-all che portano segnali di legittimità e rifiuta quelli che sembrano generati automaticamente.
Assegnare un punteggio a un indirizzo catch-all
Alcuni servizi di verifica assegnano un punteggio agli indirizzi catch-all con un modello di apprendimento automatico addestrato su dati storici di invio. Mailbeam non lo fa, e vale la pena spiegare perché: non abbiamo un corpus di invii su cui addestrarci, e un numero di fiducia prodotto da un modello che non puoi ispezionare è difficile da usare quando sbaglia.
Quello che Mailbeam restituisce al suo posto è un punteggio additivo costruito a partire da un insieme fisso di segnali con pesi e limiti pubblicati:
- Sintassi, percorso di posta, esito del sondaggio, usa e getta, indirizzo di ruolo, catch-all
- Un indirizzo catch-all è limitato a 70, perché nessun sondaggio può confermarlo
- Il campo
reasondicecatch_all_unverifiable, estatustorna comeriskyinvece chedeliverable
Ogni punto è tracciabile fino a un controllo, quindi quando un punteggio sorprende si può capire perché. Il compromesso è onesto: una griglia di regole non batterà un buon modello sugli indirizzi ambigui. Quello che farà è dirti che cosa sa e dove si è fermata, che è ciò che ti serve per fissare la tua soglia.
Applicare un trattamento a livelli
// Non ci sono ancora SDK: questo è il wrapper di 12 righe di /docs/quickstart.
import { verifyEmail } from "./lib/mailbeam";
async function verifyEmailForUseCase(
email: string,
useCase: "signup" | "cold_outreach" | "lead_import"
) {
const result = await verifyEmail(email);
// Nessun catch-all: dritto per la sua strada
if (!result.catchAll) {
return { accept: result.valid && result.score >= 50 };
}
// Catch-all: usa soglie di punteggio diverse secondo il caso d'uso
const thresholds = {
signup: 40, // permissivo — l'utente è davanti allo schermo e motivato
cold_outreach: 70, // severo — un bounce a freddo costa caro
lead_import: 55, // equilibrato
};
const threshold = thresholds[useCase];
return { accept: result.score >= threshold, catchAll: true };
}Ogni contesto merita una soglia diversa:
| Caso d'uso | Punteggio minimo consigliato | Motivo |
|---|---|---|
| Registrazione (utente presente) | 40 | Sbagliare costa poco; l'utente può correggere |
| Importazione di newsletter | 55 | Rischio moderato; facile da pulire dopo |
| Contatto a freddo | 70 | Rischio alto per la reputazione a causa dei bounce |
| Prospezione commerciale | 65 | Equilibrio fra copertura e rischio di bounce |
Che cosa fare nell'interfaccia
Quando rilevi un indirizzo catch-all hai diverse possibilità:
Opzione 1: accettare in silenzio. Usa una soglia permissiva e accetta senza dirlo all'utente. Va bene nelle registrazioni B2B, dove non vuoi mettere attrito agli utenti aziendali.
Opzione 2: accettare con un avviso. Mostra un messaggio che non blocca: «Non siamo riusciti a verificare del tutto questo indirizzo; controlla che sia corretto prima di continuare». Utile nei moduli di raccolta contatti.
Opzione 3: chiedere conferma. Manda un'email di conferma e richiedi un clic prima di attivare l'account. È lo standard nelle registrazioni di alto valore.
Quello che non devi fare è mostrare un errore che dica che l'indirizzo non è valido: non lo è. È non verificabile con l'SMTP standard, che è un'altra cosa.
Il catch-all nella verifica massiva
Pulendo una lista ti troverai davanti lotti di indirizzi catch-all. L'approccio giusto:
const auth = { Authorization: `Bearer ${process.env.MAILBEAM_KEY}` };
// Invia la lista; la risposta è un id di lavoro, non i risultati.
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());
// Aspetta il webhook batch.completed, oppure interroga /v1/jobs/:id fino alla fine.
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 accetta tutto, quindi l'esito torna come "risky"
// invece di un sì o di un no netti. Segmenta in base al punteggio.
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);
}
}Non eliminare gli indirizzi catch-all in blocco. Segmentali per punteggio e decidi segmento per segmento.
In sintesi
I domini catch-all sono una funzione normale dell'infrastruttura di posta professionale, non un'anomalia. Riguardano fra il 10% e il 20% dei domini B2B. La verifica SMTP standard è cieca davanti a loro: ogni indirizzo di un dominio catch-all restituisce un risultato positivo.
La risposta giusta non è il rifiuto generalizzato, ma il punteggio probabilistico:
- Rileva il catch-all con un indirizzo di sondaggio
- Assegna un punteggio all'indirizzo usando segnali del dominio e della parte locale
- Applica soglie adatte al tuo caso d'uso
- Accetta quelli ad alta fiducia, marca quelli intermedi, rifiuta quelli bassi
Così mantieni la qualità della lista senza voltare le spalle a un segmento importante di utenti B2B legittimi.