Il sintomo
L'applicazione di gestione flotta taxi invia un'email di conferma a ogni prenotazione tramite Nodemailer e un account SMTP dedicato. In locale tutto funzionava perfettamente. In produzione sono arrivati i primi feedback degli utenti: «non ho ricevuto nessuna email», o peggio, «l'ho trovata nello spam».
Eliminare la falsa pista: il codice
Primo riflesso, verificare che Nodemailer inviasse davvero senza errori:
const info = await transporter.sendMail({
from: '"Taxi Management" <noreply@mondomaine.com>',
to: booking.customerEmail,
subject: 'Confirmation de votre réservation',
html: renderBookingEmail(booking),
});
console.log('Message envoyé :', info.messageId);
Il log confermava un invio riuscito lato server SMTP, con un messageId valido. Il problema quindi non era nel codice di invio — bisognava cercare altrove, tra il server SMTP e la casella di posta del destinatario.
Il vero colpevole: l'autenticazione del dominio
Un server SMTP può tecnicamente inviare un'email «from» qualsiasi dominio — ed è proprio questo che controllano i filtri anti-spam. Senza SPF, DKIM e DMARC correttamente configurati sul dominio mittente, provider come Gmail o Outlook trattano l'email come potenzialmente contraffatta.
Ho verificato con dig cosa era realmente pubblicato sul dominio:
dig TXT mondomaine.com +short
# rien ! aucun enregistrement SPF n'existait
La correzione DNS
Tre record da aggiungere presso il registrar del dominio:
; SPF : autorise explicitement le serveur SMTP à envoyer pour ce domaine
mondomaine.com. TXT "v=spf1 include:_spf.mon-hebergeur-smtp.com ~all"
; DKIM : signature cryptographique fournie par le service SMTP
selector._domainkey.mondomaine.com. TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSq..."
; DMARC : politique de traitement si SPF/DKIM échouent
_dmarc.mondomaine.com. TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@mondomaine.com"
Lo SPF elenca i server autorizzati a inviare a nome del dominio. Il DKIM aggiunge una firma verificabile in ogni email. Il DMARC indica ai provider di posta cosa fare delle email che non superano queste verifiche (qui, metterle in quarantena invece di rifiutarle direttamente, il tempo di validare che tutto funzionasse).
Verificare a posteriori
Dopo la propagazione DNS (24-48h), un test con uno strumento come mail-tester.com ha confermato un punteggio corretto, e le email successive sono arrivate direttamente nella casella di posta principale, non più nello spam.
Cosa mi porto a casa
- Un invio Nodemailer «riuscito» nel log non garantisce nulla sulla reale deliverability: SMTP accetta l'email, ma è il provider destinatario a decidere poi dove classificarla.
- SPF, DKIM e DMARC non sono opzionali quando si inviano email transazionali da un dominio personalizzato — senza di essi, si appare come un contraffattore agli occhi dei filtri anti-spam.
dig TXT domaine.comè il primo riflesso per diagnosticare un problema di deliverability, ancora prima di toccare il codice.- Uno strumento come mail-tester permette di validare oggettivamente la configurazione invece di indovinare osservando dove finiscono le email di test.