Costruire un server di posta casalingo – versione basic

Farsi il proprio server di invio e ricezione posta è un operazione non troppo difficile che reca comunque molta soddisfazione

posto qui una guida da me realizzata nella speranza che possa risultare utile a qualcuno, ricordandovi però che le impostazioni da me utilizzate vanno bene per me e non posso garantire che vadano bene per altri. Cercherò di essere il più dettagliato possibile, ma qualche passo banale potrebbe sfuggirmi, in caso chiedete nei commenti. Ovviamente se non sapete nemmeno cosa sia linux e chiedete cosa significhi terminale, girate alla larga che è meglio

:D

Inoltre in questa prima guida si avrà un server molto basilare in cui gli indirizzi di posta saranno solo gli utenti creati sul server; successivamente posterò una guida con cui creare un archivio di caselle di posta da usare con mysql o ldap (coming soon)

Innanzitutto c’è da sapere che in un sistema reale e professionale non verrebbe utilizzato un ip dinamico come avviene per le nostre connessioni adsl domestiche. In tal modo è impossibile associare un dns al nostro ip.
Fortuna che esistono servizi come www.dyndns.org che permettono di aggiornare i dns anche con gli ip dinamici!

Per far ciò andiamo su www.dyndns.org e registriamo un indirizzo del tipo miodominio.homelinux.com o miodominio.no-ip.org o quello che volete. Con l’account gratuito potrete registrarne fino a 5.

AGGIORNAMENTO: a quanto pare dyndns.org è diventato a pagamento per i nuovi utenti, fortunatamente chi si è registrato anni fa continua a godere del servizio gratuitamente, comunque non disperate, esistono le alternative gratuite, cercate su google ;)
Una volta fatto ciò andate nella pagina delle impostazioni del vostro router (di solito 192.168.0.1) e cercate una voce che abbia a che fare con i dns dinamici. Aggiungete il nome del dominio che avete scelto, assieme al nome utente e password che avete deciso in fase di registrazione su dyndns.org e il gioco è fatto! Ora digitando su qualunque browser l’indirizzo scelto la vostra macchina sarà raggiungibile come se andaste su www.tiscali.it

a onor del vero, quello che sarà raggiungibile fino ad ora sarà il router, dato che ancora su nessuna delle macchine collegate al router è stato installato un server di qualsiasi genere. Ma andiamo con ordine.

Adesso dobbiamo aprire un paio di porte di accesso ai vari server che vogliamo installare sulle macchine. Purtroppo ogni router ha una propria interfaccia, quindi qui dovete cavarvela da soli, o magari cercando su google. Una buona idea è quella di andare su www.emule.it e cercare li la guida per l’apertura delle porte di emule per il proprio router. In sostanza è la stessa identica cosa, solo che le porte da aprire sono altre. In particolare bisogna aprire la porta 25 sulla macchina da voi scelta (nel mio caso è il mio pc con indirizzo locale 192.168.0.3) per l’smtp e la porta 80 per l’http (non fondamentale quest’ultimo, in effetti serve solo se volete installare una webmail che si appoggi al server apache2 che lavora appunto sulla porta 80).

Il passo successivo è quello di installare una distribuzione gnu/linux adatta allo scopo: è consigliabile una distribuzione server anziché desktop dato che su queste sono applicate molte restrizioni di sicurezza (ad esempio non sono presenti interfacce grafiche alcune e altro che non sto qui a spiegare in questa sede). Volendo si può installare una distribuzione come Mandriva con kde 4.3, ma io non mi assumo nessuna responsabilità se poi per un bug di Phonon qualcuno riesce ad accedere con permessi di root al vostro server! La regola principale è semplicità, meno roba installate, meno falle di sicurezza su cui aggrapparsi avranno i cracker della domenica. Io ho usato Ubuntu server 9.04.

Una volta avviata l’installazione potete scegliere che genere di server volete creare. Dall’elenco scegliete apache server e mail server.

Se per caso non lo avete fatto nessun problema, una volta completata l’installazione digitate

sudo apt-get install postfix dovecot-pop3d dovecot-imapd apache2 squirrelmail
che è la stessa identica cosa. Una volta finita l’installazione bisogna sistemare un paio di file di configurazione. Innanzitutto il file /etc/postfix/main.cf

quindi digitate sudo nano /etc/postfix/main.cf

le voci importanti al momento sono:

myhostname = qui mettete mail.dominiosceltosudyndns

(ad esempio se il vostro indirizzo su dyndns è cicciobello.homelinux.com inserite mail.cicciobello.homelinux.com)

mydomain = qui mettete invece solo il dominio scelto

(quindi nell’esempio solo cicciobello.homelinux.com)

myorigin = qui scrivete $mydomain o alternativamente /etc/mailname
però ricordatevi di modificare comunque il contenuto di /etc/mailname scrivendo al suo interno cicciobello.homelinux.com, fatelo sia che decidiate di scrivere $mydomain o /etc/mailname

mydestination = qui scrivete il vostro solito cicciobello.homelinux.com,  nome locale della macchina, localhost.localdomain, localhost,
relayhost = dipende, con alcuni provider funziona anche lasciandolo vuoto, con tele2 no.  Più avanti una digressione su questo argomento. Pazientate.
non dimenticate le virgole tra una destinazione e l’altra;
il nome locale della macchina è quello che compare al prompt dei comandi dopo la @

Per una configurazione molto basilare questo è più che sufficiente, in altre guide vedrò di spiegare il resto.

Dopo aver editato /etc/postfix/main.cf e /etc/mailname passiamo a modificare /etc/dovecot/dovecot.conf e ad inserire (se non è già presente) la seguente riga

protocols = pop3 pop3s imap imaps
tornate al terminale e digitate in sequenza

sudo /etc/init.d/postfix restart
sudo /etc/init.d/dovecot restart

Fatto ciò il server di posta dovrebbe essere funzionante!

per una rapida prova digitate da terminale:

telnet cicciobello.homelinux.com 25
ehlo cicciobello.homelinux.com
mail from: user1
rcpt to: user2
data
ciao
ciao
.
quit

Dove user1 e user2 sono utenti locali alla rete. Se tutto è ok il messaggio ciao ciao dovrebbe essere stato inviato.

Per verificare ciò adesso digitate:

telnet localhost pop3
USER user2
PASS passworduser2
LIST
se appare un numero 1 con altri numeri a lato adesso digitate
RETR 1
e dovrebbe apparirvi il messaggio mandato precedentemente dall’user1 all’user2
uscite con
quit

Bene, il vostro piccolo e rudimentale server di posta è adesso funzionante

Passiamo ora a configurare una piccola applicazione in php chiamata squirrelmail, in pratica non è altro che una webmail che girerà sul webserver apache che avete installato precedentemente, nulla di paragonabile all’interfaccia di gmail comunque.. non vi gasate troppo..

:D

modificate da terminale /etc/apache2/sites-enabled/000-default

col comando sudo nano /etc/apache2/sites-enabled/000-default

scorrete fino alla fine del file e aggiungete la seguente

<VirtualHost 192.168.0.2>

DocumentRoot /usr/share/squirrelmail

ServerName cicciobello.homelinux.com

</VirtualHost>
192.168.0.2 dipende ovviamente da quale indirizzo ip locale il router assegna al vostro server, ovviamente dovete impostare il vostro router in modo che assegni sempre lo stesso ip alla stessa macchina (in gergo prenotazione dell’ip)… se non lo avete ancora fatto.. FATELO! Le informazioni le trovate anche in questo caso su www.emule.it

ora siamo veramente alla frutta: date un bel

sudo /etc/init.d/apache2 restart
e anche la webmail è pronta!

adesso da una qualunque macchina connessa ad internet (anche un altro pc della vostra rete locale) vi basterà andare su cicciobello.homelinux.com per accedere alla vostra “sbrilluccicosa” webmail.

Digressione su relayhost:
purtroppo oggi a causa dello spam sempre più diffuso e antipatico molte caselle di posta non accettano posta proveniente da ip dinamici.. quindi bisogna attivare un indirizzo per il relay host corrispondente a quello del smtp del proprio provider.

Nel mio caso è tele2 quindi ho inserito

relayhost = smtp.tele2.it:587

ho inserito il numero di porta 587 perchè tele2 ha spostato il suo server di posta sulla porta 587, magari nel vostro caso sarà ancora quella di default, vedete un po’ voi

siccome inoltre tele2 adesso richiede l’autenticazione del server i passaggi non finiscono qui

da terminale digitiamo

apt-get  install libsasl2-modules postfix-tls

torniamo al caro /etc/postfix/main.cf

e aggiungiamo sotto la riga:
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

le seguenti righe

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_mechanism_filter = plain, login

dopodichè torniamo al terminale e creiamo il file sasl_passwd con

sudo nano /etc/postfix/sasl_passwd, scrivendo al suo interno:

smtp.tele2.it username:password

dove username e password sono ovviamente l’username e la password di un indirizzo di posta creato col vostro provider (nel caso di tele2 si crea su http://reg.tele2.it/ )
sempre nel caso di tele2 all’username non va aggiunto il suffisso @tele2.it, non saprei dirvi con gli altri gestori, fate delle prove o informatevi col provider.

Ora aggiorniamo il db delle password che postfix utilizzerà con
sudo postmap /etc/postfix/sasl_passwd

e riavviamo postfix

sudo /etc/init.d/postfix restart.
Ora abbiamo veramente finito, buon divertimento!

;)

Se ti sono stato utile con questo articolo e vuoi  motivarmi a crearne una versione più approfondita ed utilizzabile in ambiti reali di lavoro

puoi farmi una piccola donazione col modulo qui sotto

[wp_paypal_payment]

 

7 commenti su “Costruire un server di posta casalingo – versione basic”

  1. complimenti guida ben fatta.
    una sola curiosità! ho visto che hai tele2 coem provider.
    Sto provando a mettere su un server web con horde e quindi con server mail postfix a dovecot (grazie a questa tua guida mi è stato semplice configurarlo! GRAZIE!). Ho letto e avuto la conferma che tele2 blocca la porta 80. dovrei spostare il tutto su porta 90. come devo fare per configurare il tutto? grazie 1000!

  2. ciao, non ho capito cosa intendi per “tele2 blocca la porta 80” in che senso? sul tuo pc? per quale servizio? forse intendi che non riesci ad accedere a horde sun internet ma solo in locale? se è questo che intendi devi sbloccare la porta dal tuo eventuale firewall sul tuo eventuale router. Fammi sapere, ciao!

  3. a me non funziona, quando apro la webmail da un altro pc connesso a internet mi apre un file da scaricare e non una pagina in php come dovrebbe, ho notato che se scarico il file e lo rinomino in formato testo vedo che è scritto un codice php. Se provo senza caricare squirrelmail mi apre una pagina index.html regolare. Ho notato anche che gli utenti user1 e user2 non funzionano, devo crearli ? come ?. Saluti Buona Pasqua

  4. Gege, prova da un altro pc, sicuramente per quanto riguarda il primo problema è inerente alla configurazione della macchina.

    Certo, gli utenti della mail vanno creati da te. Con questa guida gli utenti della mail hanno un account sulla macchina. Puoi crearli con i comandi “adduser” o “useradd”

    avevo detto che avrei creato una guida su come impostare utenti contenuti in un database.. ma ultimamente ho pochissimo tempo.. vedremo, magari più in là.. ;)

  5. Ciao e complimenti per la guida,
    anch’io ho teletu ex tele2 come ISP, inoltre ho un dominio registrato su DYNDNS tipo “nomedominio.info”.
    Come imposto il record mx? Dimenticavo che ho anche attivato il servizio custom DNS. Non so se così ho incasinato le cose, se serviva o non serviva.
    Cercando su Google ho anche letto che Tele2 blocca la porta 25 e l’unico modo per ricevere la posta è attivare sempre con DYNDNS Mailhop Relay, è vero? La porta 25 non server per inviare?
    Grazie per l’attenzione.

  6. ciao, questa guida è molto basilare e non prevede l’impostazione dell’mx record. E’ corretto, teletu/tele2 blocca la porta 25, si usa la porta 587. Grazie per i complimenti :)

I commenti sono chiusi.