L'email è uno dei servizi più vecchi di Internet e ancora uno dei più complessi da gestire bene. Dietro un semplice "invia" ci sono più server, più protocolli e diverse verifiche DNS. Quando un messaggio non arriva, conoscere questo percorso permette di capire in quale punto si è fermato invece di procedere per tentativi.
I componenti
| Componente | Ruolo |
|---|---|
| Client di posta (MUA) | L'applicazione con cui scrivi e leggi: programma, app o webmail |
| Server di invio (submission) | Riceve i messaggi dai tuoi client autenticati |
| MTA (Mail Transfer Agent) | Trasferisce i messaggi tra server di domini diversi |
| Server di ricezione e caselle | Accetta la posta per il dominio e la conserva |
| Server di accesso (IMAP o POP3) | Permette ai client di leggere la posta conservata |
Il percorso di un messaggio
Supponiamo che anna@esempio.it scriva a luca@altrodominio.it:
- Il client di Anna si collega al server di invio del suo provider sulla porta 587 (o 465), si autentica con nome utente e password e consegna il messaggio su un canale cifrato.
- Il server di Anna deve capire dove consegnare la posta per altrodominio.it. Interroga il DNS chiedendo i record MX di quel dominio.
- Ottiene, per esempio, due risposte:
10 mx1.altrodominio.ite20 mx2.altrodominio.it. Prova prima il valore più basso. - Si collega a mx1 sulla porta 25 usando il protocollo SMTP, normalmente cifrato con STARTTLS, e trasferisce il messaggio.
- Il server ricevente esegue i controlli: reputazione dell'indirizzo IP, DNS inverso, politiche di autenticazione del dominio mittente, filtri antispam e antivirus.
- Se il messaggio supera i controlli, finisce nella casella di Luca, che lo leggerà con il suo client via IMAP sulla porta 993.
Se mx1 non risponde, il server mittente prova mx2. Se nessuno risponde, mette il messaggio in coda e riprova per un periodo che di solito arriva a qualche giorno, prima di restituire un avviso di mancata consegna.
Il record MX nel dettaglio
- Il numero è la priorità: più è basso, più il server è preferito. Server con la stessa priorità si dividono il carico.
- Il valore deve essere un nome host con record A o AAAA, non un indirizzo IP e non un CNAME.
- Se un dominio non ha record MX, i server mittenti provano a consegnare all'indirizzo indicato dal record A del dominio stesso. Per un dominio che non deve ricevere posta, si può pubblicare un "null MX" (
0 .), che dichiara esplicitamente l'assenza di un server di posta.
Gli MX di riserva
Un tempo era comune avere un MX secondario presso un altro fornitore, per ricevere la posta quando il primario era irraggiungibile. Oggi è meno necessario, perché i server mittenti mettono comunque in coda e ritentano. Un MX secondario mal configurato, inoltre, è spesso meno protetto dallo spam e diventa la porta d'ingresso preferita degli spammer.
Il DNS inverso e la reputazione
Chi invia posta da un proprio server deve curare alcuni aspetti infrastrutturali che i servizi gestiti risolvono da soli:
- DNS inverso (record PTR): l'indirizzo IP del server deve risolvere a un nome, e quel nome deve risolvere di nuovo allo stesso IP. Molti server riceventi rifiutano o penalizzano la posta da IP senza PTR coerente. Il PTR si configura presso chi possiede l'indirizzo IP, cioè il provider o il fornitore di hosting, non nel pannello DNS del dominio.
- Nome nel saluto SMTP: il server deve presentarsi con un nome valido, coerente con il PTR.
- Reputazione dell'IP: indirizzi già usati per spam o appartenenti a blocchi residenziali vengono spesso bloccati a priori.
- Autenticazione del dominio: i record SPF, DKIM e DMARC sono ormai indispensabili perché i grandi provider accettino la posta.
Perché non puoi inviare posta da casa
Molti provider di connettività domestica bloccano la porta 25 in uscita, e gli indirizzi IP residenziali compaiono in liste che i server di posta usano per rifiutare i messaggi. È una misura contro i computer infetti che inviano spam.
Se ospiti un server di posta in casa o su un server virtuale con IP di scarsa reputazione, la soluzione più praticabile è usare un relay (smarthost): il tuo server consegna la posta in uscita, autenticandosi, a un servizio di invio con buona reputazione, che la recapita al destinatario.
Cifratura tra server
STARTTLS tra server è opportunistico: se fallisce, molti server consegnano comunque in chiaro. Per rendere obbligatoria la cifratura verso il tuo dominio esistono due meccanismi: MTA-STS, che pubblica una politica tramite DNS e HTTPS, e DANE, che richiede DNSSEC. Sono utili soprattutto per domini che ricevono dati riservati.
Quando la posta non arriva
- Controlla i record MX del dominio destinatario con
dig MX altrodominio.itonslookup -type=mx. - Leggi il messaggio di mancata consegna: contiene un codice e spesso la ragione precisa del rifiuto.
- Verifica che il tuo server abbia PTR coerente e non compaia in liste di blocco pubbliche.
- Esamina le intestazioni di un messaggio arrivato: le righe "Received" mostrano, dal basso verso l'alto, ogni server attraversato.
In sintesi
- La posta passa da client a server di invio, poi tra server via SMTP sulla porta 25.
- I record MX indicano i server riceventi; il numero più basso ha la priorità.
- Un MX deve puntare a un nome con record A o AAAA, mai a un IP o a un CNAME.
- Per inviare da un proprio server servono PTR coerente, buona reputazione e autenticazione del dominio.
- Dalle linee domestiche conviene usare un relay, perché la porta 25 è spesso bloccata.