Ovvero come addomesticare un dns per far funzionare un mail server tenuto in casa sull’adsl a ip dinamico.
Mantenere un server di posta esposto su internet con il un dominio comprato da noi è facile: basta pagare qualcuno che lo faccia.
L’alternativa, per il vero smanettone, è fare tutto da solo, ma sorgono alcuni di problemi, niente di insormontabile, ma un server di posta è un sistema piuttosto delicato, più che altro perché ci sono un sacco di componenti che devono interagire tra di loro, che vanno tenuti aggiornati, con un antivirus ed un antispam decenti per evitare che le nostre caselle di posta siano sommerse da spazzatura di ogni tipo, e soprattutto…
…dove la mettiamo FISICAMENTE ???

Guardando in giro per la rete ho sempre trovato scritto che, avendo una linea adsl casalinga con ip dinamico, non si poteva mettere in linea un mail server.
In effetti, così su due piedi, saltano all’occhio due problemi principali:
1) il software e l’hardware, che macchina devo usare e che software uso ?
2) l’indirizzo ip dinamico, come lo gestisco ?
Per l’hardware tutto deve essere commisurato a quanti domini e utenti avrà il nostro server e soprattutto quanta posta dovrà smistare.
Spannometricamente, partendo dal presupposto che abbiamo una adsl asimmetrica che difficilmente più forte di mezzo megabit al secondo (512 Kbs/sec) e che si vuole mettere in linea un mail server personale per se e qualche amico diciamo che una macchina virtuale montata nel pc di casa può essere sufficiente, della serie “Se sta acceso è sufficiente“.
Per il software abbiamo a disposizione un certo numero di candidati, molti su linux gratuiti e liberi, altri per windows, ma in questo caso sono tutti più o meno a pagamento, tranne uno che mi pare interessante e che proverò e di cui scriverò prossimamente.
Io per le mie prove ho usato Qmail e un dominio per adesso non uso, il mio server di posta quindi sarà raggiungibile all’indirizzo “mail.spippolatori.net“.
Ho installato Qmail in una macchina virtuale con Linux CentoOS 5.0 nel pc di casa mia, ed ho impostato il mio firewall sempre Linux ma una Debian Lenny, per fare il port forward delle porte necessarie al corretto funzionamento del mail server.
La posta viaggia usando alcune porte ben precise:
la porta 25 (SMTP) serve per ricevere le e-mail dagli utenti del mio domino “spippolatori.net” che saranno poi inviate ad altri domini esterni o ad altri utenti del dominio stesso.
sempre la porta 25 serve per ricevere le e-mail di altri server di posta i cui utenti mandano le email ai MIEI utenti
la porta 110 (POP3) che serve per scaricare la posta dal server al client (outlook, thunderbird etc etc)
la porta 143 (IMAP) Imap è uno splendido sistema che gestisce la posta senza scaricarla, e permette di lavorare anche in più persone sulla stessa casella contemporaneamente, provatela su Gmail funziona alla grande
la porta 80 per la webmail, per poter leggere ed inviare la posta usando solo il browser
Tutti questi protocolli posso essere usati anche in forma cifrata usando le porte 465 per il Secure SMTP, la 993 per il Secure POP3, la 993 per il Secure IMAP e 443 per la webmail cifrata su HTTPS.
Ovviamente non avendo comprato un certificato da una certification autority si presenteranno una serie di warning che avvertono che il certificato è self signed, ma per i nostri scopi di test chissenefrega
Tutti questi protocolli sono supportati dal mio Qmail senza problemi, una volta aperte le porte di cui sopra sul firewall il server è pronto a fare i suo lavoro verso il mondo.
Solo che il resto del mondo non ha la più pallida idea di dove sia il mio server di posta.
Infatti qui sorge il secondo problema: l’indirizzo ip dell’Alice flat 7 mega.
La mia connessione casalinga gode di quello che viene comunemente detto IP DINAMICO, ovvero l’indirizzo ip che il mio provider mi assegna ogni volta che mi collego ad internet e soprattutto, quando mi scollego e mi ricollego, cambia.
Potrei comprare un ip fisso, ma telecom con i privati fa un sacco di storie e sopratutto vuole un secchio di soldi.
Quindi è improponibile gestire un qualunque servizio in questo modo se non ricorriamo ad nomi mnemonici invece che ad indirizzi ip che dovrebbero essere fissi.
I passi da fare per arrivare al nostro server sono diversi: come prima cosa ci si deve registrarsi ad uno dei servizi gratuiti che permettono di collegare il nostro ip dinamico ad un nome di domino di terzo livello, e grazie ad un programma che risiede sul nostro computer di casa ogni volta che il nostro ip varia il programma avverte il server del servizio dove ci siamo registrati ed il nostro nome viene aggiornato.
Io per queste cose uso preferibilmente NO-IP, dove ci si deve registrare gratis e si può prendere un nome di domini di terzo livello, io per questa prova ho preso
servermail.no-ip.org
Ho installato il programma nel firewall linux e l’ho attivato, dopo pochi secondi ero già registrato, quindi se qualcuno nel mondo manda un ping verso servermail.no-ip.org si vedrà rispondere il mio indirizzo ip di casa, se mi scollego e ricollego l’indirizzo ip viene aggiornato in pochi secondi.
A questo punto dobbiamo obbligatoriamente spendere qualche euro, necessari a registrare un dominio di secondo livello, tipo il mio spippolazione.net che costa, sui servizi very very low price, una dozzina di euro iva inclusa all’anno, per queste cose, dove serve gestire SOLO il nome uso preferibilmente TopHost.
TopHost non ha una grande nomea come provider internet, ma se questo è vero o meno non mi interessa, sulle loro macchine non tengo nulla, mi serve solo per la gestione dei nomi di dominio, e soprattutto, ottimo per i nostri scopi, ha una caratteristica piuttosto interessante: ha una gestione dei DNS veramente spettacolare, un nuovo nome inserito sul dominio non si propaga nelle canoniche 24/48 ore ma è disponibile nel giro di pochi minuti ed inoltre, cosa fondamentale per il nostro progetto, permette la gestione dei record CNAME che non ho trovato in altri provider low cost.
Adesso devo fare una piccola parentesi sulla gestione del DNS per spiegare cosa serve a un server di posta.
Il DNS è il Domain Name System, il servizio IP che dato il nome di un sito ne fornisce l’indirizzo ip.
Quando dal nostro browser apriamo il sito www.qualchesito.com il browser non è in condizione di trovare da solo il server web che ospita www.qualchesito.com, quindi chiede al DNS:
“DNS, per cortesia, mi dici l’indirizzo ip del server web www.qualchesito.com”
Il dns interroga per prima cosa le sue tabelle interne, se non lo trova se va’ un po’ in giro per internet, chiede agli amici, fa’ qualche telefonata e poi, quando ha trovato l’informazione necessaria risponde al browser:
“‘Mio caro browser, il sito lo trovi all’indirizo ip 209.85.135.99″ (ip di fantasia)
Quello che il DNS ha appena fatto è stato risolvere un record di tipo A, una semplice corrispondenza nome <-> ip per un host e niente altro, di solito, se il DNS è una macchinetta vispa ci mette una frazione di secondo, nel migliore dei casi, pochi millesimi.
Poi ci sono i record di tipo CNAME che sono uguali ai record A tranne che per il fatto che invece di rispondere un indirizzo IP rispondo un altro nome, dopo di che viene fatta una seconda richiesta al DNS (tanto è gratis) per avere la risoluzione dell’indirizzo ip del secondo nome e solo a quel punto viene restituito l’IP, se non viene restituito un altro nome CNAME e cosi via.
Poi ci sono i record di tipo MX, che sono simili ai record A ma vengono usati solo per la posta, l’acronimo MX infatti sta per Mail eXchange. Simili ma non uguali, infatti mentre il record ha una corrispondenza univoca possono esistere più record MX per un dominio, questi record hanno infatti un numero che ne identifica la priorità, se il primo server risulta irraggiungibile viene utilizzato il secondo e cosi via.
Ci sono altri tipi di record, ma per i nostri usi di postini non servono.
Attenzione: se un host ha solo il record A non può essere usato come mail server (ma può essere un perfetto web server), mentre se non ha record A ma solo l’MX si, lo dico per chiarezza, una volta avevo scritto male il record A nel pannello di controllo del domino e la posta funzionava lo stesso, ma non si apriva la webmail
A questo punto, ricapitolando, per avere la corretta raggiungibilità del mio server di posta in casa devo:
1) avere il programma di no-ip che mi tiene aggiornato il mio indirizzo ip dinamico al nome servermail.no-ip.org
2) nel pannello di controllo del sito spippolatori.net di TopHost devo solo impostare
un record CNAME che assegna a mail.spippolatori.net il record servermail.no-ip.org
un record MX che indica come mail.spippolatori.net come server mail di priorità piu’ alta (numero più piccolo).
QUI potete vedere uno screen-shot del pannello configurato
Come ho già detto la priorità serve per poter usare più server mail, ogni indirizzo di server di posta ha un numero associato, per primo si cerca di utilizzare il server con il numero più basso, se il server non è raggiungibile si usa quello immediatamente sopra e così via.
TopHost per default inserisce due suoi mail server, uno al numero 10 e al 20, noi metteremo mail.spippolatori.net al 5, per essere avanti a tutti.
A questo punto dovrebbe essere tutto a posto.
Faccio un giro di prova:
1) usando un account di gmail mando un’e-mail al mio server di posta ad una mail creata appositamente, poniamo a prova@spippolatori.net
2) il server di gmail guarda l’indirizzo e-mail del destinatario, il nostro prova@spippolatori.net, ne prende la parte a destra della @ (il dominio, spippolatori.net nel caso nostro) e ne richiede il record MX al suo DNS
3) il DNS risponderà il record MX con priorità più bassa, cioè mail.spippolatori.net, gmail chiede la risoluzione dell’indirizzo IP di mail.spippolatori.net
4) il DNS risponde con il CName: servermail.no-ip.org
5) il server di posta di gmail chiede la risoluzione di servermail.no-ip.org, no-ip risponde l’ip del mio computer di casa.
6) gmail adesso è in grado di raggiungere casa mia, si infila per la porta 25 del firewall, e depone l’email per prova@spippolatori.net in mano al Qmail che riposa nella macchina virtuale.
Per quello che invece riguarda l’invio usando il server di posta in casa si deve tenere presente una cosa: la stragrande maggioranza di server di posta nel mondo non accetterà MAI una mail proveniente da un server di posta attestato su un indirizzo ip dinamico, nemmeno pregando in aramaico antico, perchè penserà, e al 99% delle volte ha ragione, che si tratti di un pc infettato da un bot che spara spam.
Per questo dovremo impostare nel nostro server di posta una cosa che si chiama SmartHost.
Usare lo smarthost significa che tutta le e-mail che il nostro server di posta di casa deve spedire non le manderà al server di posta del destinatario come usuale, ma le passerà senza nemmeno guardare a chi vanno, ad un altro server di posta, e sarà questo secondo server a curare la consegna vera e propria.
Nel mio caso di Alice 7 mega devo mettere come smarthost il server di posta che il mio abbonamento Alice mi consente di usare.
Ogni provider ha il suo, in questo modo il server di posta di destinazione si troverà raggiunto da un server con un full qualified name valido ed accetterà l’email.
Mi pare di non essermi dimenticato nulla. Se avete domande o osservazioni sono qui.
Happy mailing