Sapere come funzione il Domain Name Server (DNS) è fondamentale per qualsiasi servizio di posta, infatti tutto il meccanismo di ricezione e invio della posta si basa su:
- Nome del mail server sorgente
- Nome del mail server destinatario
In questo articolo vediamo come le informazioni necessarie vengano tradotte dai server di posta e come usare il tool nslookup per effettuare verifiche sul DNS nell’ambito della consegna delle mail.

Come fa la mail inviata a finire nella casella di posta del destinatario?
I programmi di posta elettronica come Outlook sono configurabili per inviare email ai server destinatari, siano essi on premise come Mdaemon o Exchange, siano essi in cloud come Office 365 o Gmail.
Il processo per effettuare questo invio è il medesimo a prescindere dal server di destinazione e dal luogo in cui esso si trova.
Ma qual è esattamente questo processo di invio della mail da un Server Mittente a uno Destinatario?
- Il server mittente scopre qual è il server di destinazione effettuando una query DNS verso uno specifico server DNS; nel caso delle mail viene ricercato un record DNS di tipo MX (mail exchange).
- Il record MX raccoglie l’informazione sul nome del server a cui inviare la posta per un particolare dominio (nota che non è un indirizzo IP, bensì un nome).
- Una volta scoperto il record MX, il server mittente conosce il nome del server destinatario della posta, ma non il suo indirizzo IP, che scopre interrogando il suo server DNS di riferimento e coinvolgendo un secondo record presente all’interno dei server DNS: il record di tipo A che restituisce l’indirizzo IP corrispondente al dominio di posta.
Adesso il server mittente è in grado di spedire la posta.
Come usare Nslookup
Nslookup è un utility presente sia su Windows che su Linux, molto utile per verificare il processo appena descritto.
In questo articolo mi riferisco a un ambiente Windows in cui il tool può essere eseguito aprendo un prompt di comandi DOS.
Esistono 2 modalità in cui usare nslookup: il primo è digitando il comando per intero (come farò io negli esempi di seguito), l’altro è la modalità interattiva.
Come Verificare il server DNS per uno specifico dominio con Nslookup?
Immaginiamo che il server mittente voglia scrivere una mail a supporto@achab.it
Il mittente, come spiegato nel paragrafo precedente, deve quindi scoprire qual è il record MX corrispondente al dominio achab.it.
Da dos digitare
nslookup -type=mx achab.it
Ecco un esempio di output del comando
C:WINDOWSsystem32>nslookup -type=mx achab.it
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Risposta da un server non autorevole:
achab.it MX preference = 10, mail exchanger = mail.achab.it
achab.it MX preference = 20, mail exchanger = mail2.achab.it
Come interpreto il risultato di Nslookup?
La prima parte dell’output :
Server: google-public-dns-a.google.com
Address: 8.8.8.8
ci dice chi è il server DNS per questo PC, nell’esempio i server di Google.
Si può specificare quale server DNS utilizzare mediante il seguente comando:
nslookup -type=mx achab.it “ServerDNSascelta”
Specificare serverDNSascelta può essere utile per verificare come viene risolto il nome che stai cercando per quel particolare ServerDNS, esempio:
nslookup -type=mx achab.it 8.8.4.4
Priorità nel record MX
La seconda parte dell’output del comando nslookup -type=mx achab.it riporta “Risposta da un server non autorevole:” mostrando il contenuto del record MX ricercato.
Il valore MX preference indica la priorità del record MX: il valore più basso è quello che viene considerato per primo nel meccanismo di risoluzione descritto (quindi nel nostro esempio il 10 sarà considerato prima del 20).
Se il primo non dovesse rispondere, la richiesta di risoluzione passerà al successivo server DNS.
Come trovare l’indirizzo IP del mail server usando Nslookup
L’esempio appena descritto mostra il nome del server ricevente, ma come ho detto all’inizio, attraverso il record A è possibile trovare l’indirizzo IP del server di posta di destinazione e questo IP, pubblico, sarà usato per consegnare le mail al mail server di destinazione.
Ecco il comando per trovare l’IP del server appena trovato:
nslookup -type=a mail.achab.it
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Risposta da un server non autorevole:
Nome: mail.achab.it
Address: 95.110.166.69
Di nuovo nell’output compare un server non autoritativo e poi l’IP pubblico del record appena ricercato. Questo è l’indirizzo IP che tutto il mondo associa al nome mail.achab.it.
Quindi il server di posta che vuole mandare una mail ad achab.it aprirà una sessione SMTP sull’indirizzo IP 95.110.166.69
Come verificare il record A
Un problema che può capitare è che il record MX sia corretto, ma il record "A" corrisponda a un IP errato.
Questo può succedere perché il cliente ha cambiato ISP per cui gli è stato assegnato un nuovo indirizzo IP pubblico, ma ha ignorato la necessità di modificare il record A.
Se si desidera controllare se l'indirizzo IP che viene restituito corrisponda davvero al server che ci si aspetta, è possibile utilizzare il comando telnet in grado di simulare una sessione SMTP digitando il seguente comando.
C: > telnet 95.110.166.69 25
Questo aprirà una sessione telnet per l'indirizzo IP o il nome host (95.110.166.69) immesso sulla porta 25 (via SMTP).
La risposta alla sessione SMTP vi dirà non solo il dominio del server cui ci si connette, ma anche il prodotto che sta rispondendo alla sessione SMTP stessa.
Si può vedere nel nostro esempio che è il server MDaemon di Achab a rispondere.
Record Mx Di Backup
Un record MX di backup non è altro che una registrazione aggiuntiva MX con una priorità più bassa (numero più alto) rispetto al record MX principale per un dominio specifico.
Se configuri più di un record MX sul tuo DNS, accertati che tutti questi record funzionino recapitando la posta ai legittimi destinatari.
Tratto dal blog di Zen Software