Chi ha lavorato come tecnico informatico in qualche grande azienda sa benissimo che una volta ci volevano 3 giorni per allestire e configurare un server di posta. E non era finita perché le problematiche che si presentavano dopo non davano tregua: si pensi alla gestione delle caselle di posta, dello spam, degli allegati potenzialmente dannosi e così via. Anche se la fatica era tanta, quelli erano bei tempi perché sono proprio quegli sforzi che hanno permesso di accumulare quel bagaglio di conoscenze che oggi sono molto più facilmente spendibili.
Poste.io è un progetto open source che permette di creare un server di posta con supporto IMAP, POP3, SMTP, antispam basato su RSPAMD, antimalware (ClamAV), caselle di posta accessibili via webmail e HTTPS (grazie a Roundcube) e amministrazione Web in appena 5 minuti di lavoro.
La promessa dei 5 minuti, diciamolo subito, è probabilmente un po’ fuori luogo: di sicuro è possibile arrivare ad avviare il server di posta in tale lasso di tempo usando ad esempio Terraform, strumento open source creato che consente di descrivere l’infrastruttura come codice specificando tutto ciò che è necessario per il funzionamento di un’applicazione.
Agendo manualmente ci vuole un po’ più di tempo ma servendosi di un server Linux si può installare Poste.io in pochi semplici passaggi per poi passare alla configurazione vera e propria del server di posta.
Come funziona il server email Poste.io
Un prodotto come Poste.io è stato progettato con impostazioni predefinite che permettono di avviare subito il proprio server di posta: non è più necessario conoscere il funzionamento di ogni componente software.
In Poste.io i dati utente e la configurazione sono rigorosamente separati dai file binari: i primi sono conservati sotto forma di database SQLite.
L’intero progetto è stato inoltre sviluppato pensando alla sicurezza: accantonati tutti i metodi di autenticazioni inaffidabili e insicuri, Poste.io sfrutta solo funzionalità che soddisfano i moderni requisiti di sicurezza. La posta elettronica e il suo contenuto viene interamente crittografato con il protocollo TLS (Transport Layer Security).
Le password, inoltre, sono archiviate lato server usando l’algoritmo di hashing SHA512 (5.000 round) in modo da impedire la decodifica del “segreto” usato a protezione di ciascuna casella email. Ne parliamo nell’articolo dedicato al password cracking.
Il server email è ospitato in un container Docker che ne rende ancora più semplice la gestione, il backup e l’eventuale trasferimento da una macchina all’altra.
Poste.io supporta nativamente SPF, DKIM, DMARC, SRS in modo accrescere la deliverability dei messaggi di posta ed evitare che le email vadano nella cartella spam dei vari destinatari.
Il server di posta integra inoltre funzionalità per limitare lo spazio a disposizione per ciascuna casella di posta, offre reindirizzamento delle email e risposta automatica, è in grado di rilevare automaticamente il software client, permette l’impostazione di diversi livelli amministrativi.
Per installare Poste.io è necessario quanto segue:
- Una distribuzione Linux a 64 bit (noi abbiamo scelto Ubuntu) installata su una macchina dedicata o un server cloud.
- Almeno 4 GB di memoria RAM e una configurazione del server sufficiente per supportare le funzionalità antivirus e antispam.
- Un indirizzo IP pubblico assegnato al server Linux.
- Un nome a dominio da associare al servizio di posta elettronica e la possibilità di modificare i corrispondenti record DNS.
- La possibilità di impostare la risoluzione inversa (reverse DNS) sull’indirizzo IP pubblico associato al server.
La documentazione di Poste.io è piuttosto “asciutta”: di seguito forniamo le chiavi per provare questa soluzione in proprio senza alcuna difficoltà.
Installare il server email Poste.io su un proprio server
Suggeriamo innanzitutto di usare un server cloud che possa essere facilmente dismesso o reimpostato nel caso in cui qualcosa dovesse andare storto. Ipotizziamo che la macchina non sia utilizzata per altri compiti e che si utilizzi l’account root
(per questo motivo, di seguito, non riportiamo il comando sudo
).
Dopo aver impostato una macchina Ubuntu Linux e stabilita una connessione SSH, usiamo i comandi seguenti per aggiornare i pacchetti già presenti installare Docker dal repository ufficiale:
apt update && apt upgrade -y
apt install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update -y
apt-cache policy docker-ce
apt install docker-ce -y
Installiamo quindi Docker Compose avendo cura di sostituire a v2.16.0 il numero della versione più recente rilevabile dalla pagina GitHub:
mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose
docker compose version
Installiamo quindi il web server Nginx e configuriamo il firewall ufw (diamo per scontato il suo utilizzo) affinché permetta i trasferimenti dati sulle porte TCP 80 e 443:
apt install nginx -y
systemctl restart nginx
systemctl status nginx
ufw allow "Nginx Full"
Si possono anche aprire le varie porte usate dal server di posta:
ufw allow 143/tcp
ufw allow 25/tcp
ufw allow 110/tcp
ufw allow 587/tcp
ufw allow 993/tcp
ufw allow 995/tcp
ufw allow 4190/tcp
Digitare quindi quanto segue per avviare la configurazione del container Docker di Poste.io:
mkdir -p /home/poste.io
cd /home/poste.io
nano docker-compose.yml
All’interno del file docker-compose.yml
creato con l’ultima istruzione, si può incollare (tasto destro del mouse) ciò che segue:
version: '3'
services:
mailserver:
image: analogic/poste.io
container_name: poste
restart: always
network_mode: host
expose:
- 80
- 443
- 25
- 110
- 143
- 587
- 993
- 995
- 465
- 4190
environment:
- HTTPS=ON
volumes:
- /data/mailserver:/dataroot
La modalità host networking (network_mode: host
) fa sì che le porte utilizzate dal container siano le stesse che si affacciano sull’IP pubblico della macchina host.
Dopo aver salvato il file premendo CTRL+O
si può chiudere l’editor di testo con CTRL+X
.
Digitare infine il comando che segue per fare in modo che Poste.io venga automaticamente configurato:
In caso di problemi si possono impartire i seguenti comandi:
fuser -k 80/tcp
fuser -k 443/tcp
cd /home/poste.io
docker compose up
Configurazione del server DNS
Supponendo di disporre di un dominio del tipo miaazienda.com
, si deve accedere alla gestione DNS di tale dominio e creare un nuovo record A mail.nomeazienda.com
associandolo all’indirizzo IP utilizzato sul server di posta Poste.io.
Nella sezione Record MX si deve scegliere Altri server di posta altrimenti di solito non è possibile aggiungere il record A mail.nomeazienda.com
a livello di DNS.
Come record MX va indicato mail.nomeazienda.com
impostando 5 come priorità.
È necessario collegarsi inoltre con il pannello di amministrazione del server dedicato o del server cloud e impostare il reverse DNS. In altre parole, il comando Nslookup abbinato all’IP del server deve restituire mail.nomeazienda.com
.
Nell’immagine riprodotta in figura si vede com’è stato correttamente impostato il reverse DNS:
Configurazione del server email Poste.io
Dopo aver impostato i record DNS è possibile digitare nella barra degli indirizzi del browser Web https://
seguito dall’indirizzo IP pubblico del server.
Si accede alla pagina che permette la configurazione del server di posta Poste.io.
Nell’apposito campo va indicato mail.nomeazienda.com
mentre in quello sottostante una password sufficientemente lunga e “forte” da abbinare all’account admin@nomeazienda.com
.
Effettuate tutte le verifiche del caso (lasciare trascorrere un po’ di tempo affinché i record DNS si aggiornino correttamente: la propagazione DNS non esiste…), ci si troverà dinanzi a una dashboard come quella in figura.
Il server di posta è pronto per ricevere, inviare e smistare le email da e verso tutte le caselle di posta configurate all’interno del dominio.
Inviando un’email da Gmail, da Outlook o da qualunque provider italiano si vedranno comparire i riferimenti relativi al dialogo con i server di posta remoti e aumenterà il numero di email correttamente consegnate (delivered).
Digitando mail.nomeazienda.com
nella barra degli indirizzi del browser, si può accedere via HTTPS al contenuto di ciascuna casella di posta elettronica gestita da Poste.io. Creando un certificato digitale Let’s Encrypt come visto in altri nostri articoli, è possibile evitare la comparsa del messaggio “Non sicuro” (errore ERR_CERT_AUTHORITY_INVALID
).
La webmail di Poste.io è liberamente personalizzabile e consente di accedere al contenuto delle caselle di posta da qualunque browser in aggiunta alla possibilità di usare client email tradizionali. In un altro articolo abbiamo visto perché e quando preferire un client di posta alla webmail.
La versione free di Poste.io è utilizzabile senza limitazioni ma non include tutte le caratteristiche supportate dalle edizioni professionali. Le differenze tra Poste.io free e le edizioni PRO/PRO+ sono chiaramente evidenziate in una tabella.