Visto che spesso capita di leggere messaggi di persone che lamentano problemi con il proprio mailserver e dato che nel 90% dei casi si tratta di problemi relativi al "non rispetto" delle norme di base per la messa in opera di un mailserver "pubblico" spero di fare cosa utile con questo documento che vuole semplicemente essere una "checklist" per coloro che volessero mettere in piedi il proprio mailserver
La prima cosa necessaria è una connessione internet (eggià ) che abbia un indirizzo IP statico; sta di fatto che sebbene in passato fosse possibile utilizzare un IP dinamico per la pubblicazione di un mailserver, ad oggi, anche a causa dell'aumento del traffico "spam" una tale prassi non solo è sconsigliata ma non è proponibile dato che il traffico email proveniente da un mailserver posto su di un indirizzo IP dinamico verrà nel 99% dei casi rifiutato dal mailserver ricevente
Ok; ora che avete il vostro IP statico dovrete registrare un vostro dominio; non entro in merito relativamente alla procedura e/o alla scelta del registrar; l'importante è che il gestore del DNS relativo al vostro dominio vi permetta di variare/inserire i records relativi alla vostra zona DNS, in particolare i records DNS di tipo A, MX e TXT
A questo punto supponendo di avere registrato il dominio "example.com" e di avere l'IP pubblico (e statico) 192.0.2.81 dovremo come prima cosa procedere alla creazione del record PTR per il nostro IP; supponendo che il mailserver che installeremo verrà chiamato "mail.example.com" dovremo quindi contattare il nostro provider (dato che la gestione della zona "reverse" del DNS è compito del provider) e chiedere la creazione di un record PTR che "mappi" il nostro IP al nome del nostro mailserver; il record in questione sarà qualcosa di questo tipo (es.)
81.2.0.192.in-addr.arpa. 14400 PTR mail.example.com.
tra l'altro, la possibilità di creare un tale tipo di record nel DNS dovrebbe essere uno dei fattori da valutare nella scelta del proprio internet provider dato che alcuni ISP NON permettono la creazione dei PTR; in ogni caso supponiamo di avere un "bravo" ISP che abbia creato il record PTR di cui sopra; verifichiamo che il record PTR sia stato creato correttamente utilizzando (da prompt) il comando
nslookup -type=PTR 81.2.0.192.in-addr.arpa.
se tutto funziona come dovrebbe il comando di cui sopra ci restituirà il nome del nostro mailserver, ossia "mail.example.com"; a questo punto potremo procedere con il mapping DNS relativo al nostro dominio, al minimo dovremo inserire tra i records della zona "example.com" questi quattro records
example.com. 14400 A 192.0.2.81
mail.example.com. 14400 A 192.0.2.81
example.com. 14400 MX 10 mail.example.com.
example.com. 14400 TXT "v=spf1 a mx -all"
il primi due records (A) specificano che sia il "dominio" base "example.com" che l'host "mail.example.com" hanno entrambi indirizzo IP 192.0.2.81 il secondo (MX) specifica che il dominio "example.com" usa come Mail eXchanger (mailserver) l'host "mail.example.com" che abbiamo già visto, il terzo record (TXT) non è strettamente obbligatorio ma.. non fa male e serve a pubblicare le informazioni "SPF" che permettono ad un qualsiasi server ricevente di verificare se il server mittente è autorizzato all'invio di email relativa al nostro dominio; questo evita o comunque permette di limitare i problemi relativi a messaggi e-mail "forged" ossia messaggi che pur in apparenza provenienti dal nostro dominio siano stati inviati da altri servers
Arrivati a questo punto siamo pronti ad installare il nostro mailserver; prima di installare il mailserver vero e proprio verifichiamo che il computer sul quale installeremo il nostro mailserver sia correttamente configurato per quanto riguarda la risoluzione DNS e relativamente alla connettività di rete; la prima verifica è relativamente semplice, si tratta di aprire un prompt comandi e di immettere alcune "queries" DNS, ad esempio
nslookup -type=MX hotmail.com
nslookup -type=MX yahoo.com
nslookup -type=MX live.com
se tutto è configurato a dovere, le "queries" di cui sopra ci forniranno come risposta l'elenco dei mailservers dei tre domini sopracitati, in caso contrario dovremo verificare che le impostazioni DNS della macchina siano corrette e ripetere il test; per quanto invece riguarda la connettività di rete (verso l'esterno, necessaria all'inoltro della posta in uscita verso altri domini) sarà sufficiente usare il comando "telnet" per provare a contattare un mailserver esterno, ad esempio potremo immettere (sempre da prompt comandi) il comando
telnet smtp1.google.com 25
se dopo qualche secondo riceveremo una risposta del tipo "220 smtp.google.com ESMTP" la connettività verso l'esterno sarà a posto, in caso contrario sarà necessario verificare le impostazioni relative al gateway e le regole impostate sul firewall in modo da permettere al computer che diverrà il nostro mailserver di contattare hosts "esterni" (internet) sulla porta 25/tcp; fatte le dovute modifiche dovremo quindi ripetere il test di cui sopra fino a che il tutto funzioni come necessario, in caso di problemi si potrà utilizzare questo tool per effettuare una serie di checks a scopo diagnostico che potranno permettere di identificare la causa degli eventuali problemi e possibilmente ... risolverli
una volta che quanto sopra sia stato correttamente verificato, potremo procedere all'installazione del s/w desiderato assicurandoci sia di configurare il mailserver in modo che NON sia un openrelay, sia di configurarlo in modo che il "banner" con il quale il server si presenta al mondo corrisponda al nome del server stesso (così come configurato nei records DNS visti sopra); ad esempio, nel nostro caso, un telnet verso la porta 25 del nostro mailserver dovrebbe permetterci di vedere un banner di questo tipo "220 mail.example.com" se questo non fosse dovremo ricontrollare la configurazione del mailserver e correggerla opportunamente
ed eccoci ad uno dei momenti topici pubblichiamo per la prima volta il nostro mailserver modificando opportunamente le regole del firewall ed esponendo la porta 25/tcp del server ad internet rendendo di fatto il nostro mailserver accessibile dalla grande rete; appena fatto ciò procediamo con una ulteriore verifica per controllare che il server non sia un open-relay per tale verifica potremo utilizzare questo tool online; basterà inserire l'indirizzo IP (o il nome) del nostro server (ad es. mail.example.com, example.com oppure 192.0.2.81) e procedere con la verifica; se tutto funziona come dovrebbe i tests verranno completati ed il mailserver risulterà Ok, in caso contrario sarà opportuno *chiudere* di nuovo la porta 25/tcp sul firewall (in modo da evitare che nel frattempo qualcuno "abusi" del nostro nuovo mailserver) e procedere alla verifica ed alla correzione della configurazione fino a che tutto sia a posto
siamo praticamente arrivati; a questo punto il nostro mailserver è pronto ad entrare in funzione per inviare e ricevere emails da/per il nostro dominio; ovviamente c'è MOLTO altro da dire e fare; ad esempio sarà buona norma installare uno scanner antivirus che controlli il traffico in entrata ed in uscita dal server e che elimini tutti i messaggi infetti SENZA inviare emails del tipo "il vostro messaggio è stato eliminato perchè infetto dal virus XYZ" a mezzo mondo ma segnalando la cosa solo all'indirizzo email LOCALE dell'amministratore (il perchè è spiegato QUI - in inglese); oltre a questo sarebbe opportuno configurare il mailserver in modo da poter filtrare tutta l'email "indesiderata" (spam) ma questo esula dall'argomento di questo post; in ogni caso una buona soluzione alle problematiche di filtraggio delle email indesiderate e di scansione antivirus è questa; il programma funziona come "proxy" SMTP e si interpone tra il mailserver ed internet - non entro in dettaglio sull'installazione/configurazione del programma (che funziona con qualsiasi mailserver e praticamente su qualsiasi O/S) dato che in ogni caso la documentazione presente sul sito dovrebbe già essere sufficiente: in alternativa, avendo Microsoft Exchange e volendo "rinforzare" il filtro IMF si potrebbe aggiungere ad Exchange questo plugin che implementa il meccanismo cosiddetto "greylisting" e permette di filtrare parecchia posta indesiderata ed al contempo di ridurre il carico sul server per ulteriori dettagli consiglio anche la lettura di questo post
beh .. è tutto, spero solo che le informazioni di cui sopra possano essere utili a qualcuno e possano evitare che setup errati di mailservers abbiano come unico risultato la creazione di una macchina spara spam o il blacklisting dell'IP a causa di un'errata configurazione del server o del DNS
Anzi no... non è tutto
ho dimenticato una cosa fondamentale; nel caso in cui si abbia a disposizione un UNICO indirizzo IP (ovviamente... statico) che viene usato sia per la navigazione che per la pubblicazione del mail server è fondamentale configurare il firewall creando una regola di blocco che impedisca alle macchine della LAN l'uscita verso la porta 25/tcp di hosts esterni e che permetta tale accesso solo alla macchina sulla quale è installato il mailserver
in pratica i clients della LAN per inviare la posta potranno solo utilizzare il mailserver locale e NON potranno contattare servers SMTP esterni la stessa precauzione andrebbe presa anche per il traffico DNS ossia quello verso la porta 53 (tcp ed udp) di hosts esterni; in presenza di uno o più DNS locali, tale traffico andrebbe permesso soltanto ai DNS e non ai vari clients (e servers)
il motivo di tale configurazione è semplice; per un host esterno il traffico proverrà sempre dallo stesso IP sul quale è attestato il mailserver; ora, supponiamo che una macchina della LAN venga infettata da un virus e che tale virus inizi a "sparare emails" verso internet; tali emails (che non passeranno per il nostro mailserver ma verranno inviate direttamente a mailservers esterni) verranno "viste" dall'esterno come provenienti dal nostro.. mailserver (dato che l'IP è lo stesso) con il risultato di farci finire in blacklist; invece bloccando l'accesso SMTP come visto sopra ed avendo avuto l'accortezza di installare un antivirus sul nostro mailserver potremo prevenire/evitare tale problema; il blocco sulla porta 53 tcp/udp (DNS) è invece consigliabile dato che oltre a permettere di indentificare immediatamente eventuali macchine "mal configurate" (e che puntino ad es. a DNS esterni) permetterà anche di tenere sotto controllo tutto il traffico relativo alla name resolution evitando traffico inutile
Giusto come riferimento, ecco alcune ulteriori risorse che potrebbero essere utili durante le operazioni di messa a punto e/o verifica della configurazione vista sopra; DNSreport permette di verificare la corretta configurazione del DNS e del mailserver (HELO, A, PTR, SPF, MX); NRT mette a disposizione una serie di tools dedicati in particolare alla verifica della configurazione di un mailserver ed alla diagnostica di varie problematiche correlate (verifica openrelay, controllo configurazione, verifica blacklisting ..), RobTex permette di controllare se un dato indirizzo IP sia presente in una o più "blacklists"; CompleteWhois permette di ottenere parecchie informazioni su un indirizzo IP o un dominio; Traceroute permette di effettuare il "trace" di un qualsiasi IP partendo da una qualsiasi nazione del mondo ... e già che ci siamo ... un paio di semplici articoli (in inglese) che spiegano il funzionamento di DNS ed e-mail