Può capitare che si provi a inviare messaggi di posta elettronica a più riprese senza che il destinatario riceva alcunché: il server di posta sembra essere irraggiungibile e tutti i messaggi tornano indietro come se l'indirizzo del destinatario non esistesse più. A volte tutto ciò può essere dovuto a problemi riguardanti il server gestore della posta elettronica del destinatario (in manutenzione, per malfunzionamento o addirittura per crash totale del sistema) ma in altri casi è probabile che ci sia un malfunzionamento dei DNS e, in particolare, del record MX della configurazione DNS. In questi casi il mittente prova a contattare l'indirizzo IP del server di posta del destinatario (risolvere l'IP in gergo tecnico) ma non riceve risposta. Per fare un parallelo con il servizio di posta classico è come se un postino andasse disperatamente alla ricerca della strada scritta sulla busta della lettera senza conoscere la zona e senza neppure poterne consultare una mappa.
Per capire esattamente di cosa si parla, però, bisogna prima di tutto comprendere quale sia l'effettivo funzionamento della posta elettronica e del tragitto che compie un messaggio di posta elettronica per arrivare a destinazione.
Come funziona la posta elettronica
Dal punto di vista dell'utente è tutto molto semplice: si scrive un messaggio, se necessario vi si allega un file e poi si preme sul pulsante Invia. Dopo qualche istante, in linea teorica, il destinatario del messaggio di posta elettronica dovrebbe ricevere la mail. Nei suoi aspetti tecnici, però, l'invio di un messaggio di posta elettronica è molto più complesso e prevede molti più passaggi.
Non appena si preme il pulsante invia, il client di posta elettronica utilizzato (sia di quelli installati sul computer sia di quelli web based) contatta il server di invio del proprio gestore email utilizzando il Mail User Agent o MUA: questo componente utilizza il protocollo SMTP (acronimo di Simple Mail Transfer protocol) per verificare che il server sia attivo e sia disponibile a ricevere il messaggio e, in caso affermativo, lo consegna per il successivo invio. A questo punto entra in gioco il Mail Transport Agent (abbreviato in MTA), componente del server di invio che, utilizzando sempre il suddetto protocollo SMTP, entra in contatto con il server di ricezione e consegna il messaggio da smistare successivamente al destinatario. Individuato il server che ospita la casella di posta elettronica del destinatario, il messaggio viene inoltrato al Mail Delivery Agent (o MDA) che, tramite protocollo POP3 o IMAP, si occupa finalmente di recapitare l'email a chi di dovere.
In questo processo ricopre un ruolo fondamentale il protocollo SMTP: basato a sua volta sulla suite di protocolli TCP/IP, accompagna il messaggio di posta elettronica dalla sua uscita dalla casella email sino al server che ospita la casella di posta elettronica del destinatario: un vero e proprio postino digitale capace di decifrare l'header dell'email (una sorta di busta da lettera digitale, dove sono riportate le informazioni necessarie per individuare chi sia il destinatario della missiva e dove poterlo trovare) e accertarsi che il messaggio sia stato inoltrato in maniera corretta. Tutto ciò è possibile perché il protocollo SMTP è in grado di risolvere il nome del server di destinazione e tradurlo, quindi, nell'indirizzo IP dove dovrebbe trovarsi la casella di chi deve ricevere la missiva digitale.
Il record MX
La risoluzione dell'indirizzo IP è compito eseguito dal record MX (acronimo di Mail Exchanger), una risorsa del sistema DNS che permette di indicare al protocollo SMTP quale sia il dominio del server deputato a ricevere il messaggio di posta elettronica in viaggio da server a server. Per individuare dove sia localizzato il destinatario della email, infatti, il protocollo interroga il sistema DNS affinché fornisca l'indirizzo esatto dove poter recapitare il messaggio. Così facendo, il dominio del destinatario (tutto ciò che compare dopo la chiocciola in un indirizzo di posta elettronica) può essere risolto (tradotto) nell'indirizzo IP del server e avviare il processo di trasmissione della missiva.
Un esempio pratico aiuterà a comprendere meglio la questione. Quando il proprietario dell'indirizzo di posta elettronica topolino@topolinia.top prova a inviare una email a paperino@paperopoli.pap, il suo Mail Transfer Agent interroga i server DNS per ottenere il dominio del server di ricezione. Questo dato è contenuto nel record MX, che assume la forma “paperopoli.pap 3600 MX 0 mail.paperopoli.pap ” e specifica che le caselle degli utenti attestati sul dominio paperopoli.pap sono ospitate dal server che si trova all'indirizzo mail.paperopoli.pap. Nello specifico il primo elemento del record (paperopoli.pap) indica il gestore del servizio di posta elettronica; il secondo (3600) specifica il tempo, espresso in secondi, per cui il record può essere tenuto in cache dagli altri server DNS prima di effettuare una nuova interrogazione; il terzo (MX) serve a individuare la tipologia di record DNS; il quarto (0) indica la priorità del record MX nel caso di ridondanza – vedremo tra poco cosa voglia dire -; il quinto, infine, specifica quale sia il server dove è ospitata fisicamente la casella email. Sarà poi un altro record del sistema DNS (CNAME o A) ad occuparsi della traduzione del dominio nel relativo indirizzo IP.
Record MX ridondante
Nel caso in cui il dominio specificato nel record MX non sia raggiungibile – magari perché disattivato per manutenzione; o perché oggetto di attacchi DDoS e quindi sovraccarico; oppure perché la dorsale cui è collegato è momentaneamente indisponibile – il messaggio di posta non potrà mai essere inviato. Il motivo è presto detto: quando il protocollo SMTP prova a contattare l’indirizzo IP del dominio del server ottenuto dal Mail Transfer Agent non riceve risposta e non può, di conseguenza, recapitare il messaggio.
La ridondanza del record MX può essere un ottimo rimedio per questo problema: quando il MTA andrà ad interrogare il servizio DNS troverà più record MX ordinati per rilevanza: nel caso in cui il primo dominio non fosse raggiungibile, il protocollo SMTP proverà a contattare il secondo e così via sino a che non trovi un server pronto a dialogare. In questo modo l'utente avrà maggiori possibilità di riuscita nell’invio della propria posta elettronica anche in caso di malfunzionamento di uno o più server destinatari.
Riprendendo l'esempio precedente, quando il protocollo SMTP andrà ad interrogare il sistema DNS non troverà solamente il record MX “paperopoli.pap 3600 MX 0 mail.paperopoli.pap ”, ma ne troverà molti altri (“paperopoli.pap 14400 MX 0 mail2.paperopoli.pap”; “paperopoli.pap 7200 MX 0 mail3.paperopoli.pap”; “paperopoli.pap 3600 MX 0 mailXXX.paperopoli.pap”; “paperopoli.pap 14400 MX 0 mail4.paperopoli.pap”; “paperopoli.pap 3600 MX 0 mailYYY.paperopoli.pap” e così via) cui potrà far ricorso nel caso in cui il primo server non risponda. Se mail.paperopoli.pap dovesse essere offline per manutenzione, dopo un'ora (3600 secondi) il protocollo SMTP proverebbe a interrogare il server mail2.paperopoli.pap: se anche in questo caso non dovesse giungere risposta, si passerebbe (dopo 14.400 secondi, ovvero quattro ore) ad interrogare il terzo record della lista, sino a che non si trova un server funzionante e pronto a ricevere il messaggio di posta elettronica.