Quest’oggi andremo alla scoperta di Stalwart Email Server, un progetto scritto in Rust piuttosto recente che permette di ottenere, in un colpo solo, tutta una serie di servizi, come un server che supporta i protocolli: JMAP, IMAP, POP3, SMTP; Spamfilter integrato, interfaccia web moderna, integrazione con Let’s Encrypt e possibilità di gestire l’autenticazione attraverso LDAP o SQL.
Il progetto, è compatibile anche con Windows ed è facile da installare grazie a Docker! Ovviamente, se reputi che questo progetto sia utile e vuoi sostenerlo, ti consigliamo contribuire con una donazione, la pagina del progetto GitHub è disponibile qui.
Per procedere con questo tutorial, avrai bisogno di un dominio a cui associare i tuoi indirizzi di posta elettronica e ovviamente di Docker installato (se non sai come farlo, puoi seguire questa guida). In questa guida, ci focalizzeremo più sul mondo Debian e derivate.
Inoltre, è importante avere a disposizione un IP statico pubblico per questo tipo di servizi, quindi converrebbe di più eseguire il tutto su un VPS o su un Server dedicato.
Requisiti
- VPS / Server con Debian o Ubuntu (questo per essere al 100% allineati con questa guida, ma va bene qualsiasi altra distribuzione GNU/Linux, basta che ci sia Docker installato);
- Docker installato;
- 1 vCPU, 1 GB di RAM consigliati se prendete un VPS;
- Almeno 20 GB di spazio libero, così da poter gestire al meglio le caselle di posta e avere spazio anche per altro;
- Dominio dedicato (es: miodominio.it);
Installazione di Stalwart Email Server con Docker
1. Il server di posta di Stalwart è disponibile come immagine Docker che include server JMAP, IMAP e SMTP direttamente su DockerHub. Per iniziare, eseguiamo il pull dell’immagine mail-server:latest
:
$ docker pull stalwartlabs/mail-server:latest
2. Quindi, creiamo una directory sul server in cui andremo a memorizzare i file di configurazione e i dati per il server di posta, ad esempio:
$ sudo mkdir -p /var/lib/stalwart-mail
3. Una volta completati questi due step di configurazione, avviamo il container di Stalwart Mail Server:
$ docker run -d -ti -p 443:443 -p 8080:8080 \
-p 25:25 -p 587:587 -p 465:465 \
-p 143:143 -p 993:993 -p 4190:4190 \
-p 110:110 -p 995:995 \
-v /var/lib/stalwart-mail:/opt/stalwart-mail \
--name stalwart-mail stalwartlabs/mail-server:latest
In questo modo, esporremmo sull’host tutte le porte del container docker di Stalwart Mail Server (quindi HTTPS, 8080, SMTP, IMAP, JMAP e POP3). Ovviamente possiamo non farlo e toglierne alcune in base al nostro caso d’utilizzo. Se non avete un web server in esecuzione sulla stessa macchina, potete anche procedere così tranquillamente, altrimenti incorrereste nel problema che le porte sono già in uso.
Se avete un firewall attivo, ricordatevi di esporre al pubblico le porte che deciderete di utilizzare. Per ulteriori informazioni, ti invitiamo a leggere la documentazione per ulteriori relativa alla scelta delle porte.
Accesso all’interfaccia web
4. A questo punto, recuperiamo le credenziali di accesso che verranno salvate nei log di docker, tramite il comando: docker logs stalwart-mail
:
$ docker logs stalwart-mail
✅ Configuration file written to /opt/stalwart-mail/etc/config.toml
🔑 Your administrator account is 'admin' with password 'd24tPzE41o'.
Con queste informazioni, è possibile accedere all’interfaccia web che troveremo su http://indirizzo-del-tuo-server:8080/login
.
Scelta su dove archiviare i dati
5. Una volta effettuato l’accesso, vai nella sezione Settings
> Storage
e configura come vuoi archiviare i tuoi dati, blob, full-text e lookup. Puoi trovare maggiori dettagli sulle opzioni disponibili qui.
Se si desidera utilizzare un metodo di autenticazione esterno come LDAP o SQL, vai nella sezione Settings
> Authentication
e configura il backend di autenticazione.
RocksDB
come backend predefinito per tutti i data store. Puoi saltare questo passaggio se non hai necessità particolari.Configurazione dell’hostname e del dominio
6. Procediamo assicurandoci che l’hostname del server in Settings
> Server
> Network
sia corretto e che rispecchi il puntamento che abbiamo configurato in precedenza sul nostro dominio (se ancora non lo avessi fatto, questo è un buon momento per attivare un record DNS di tipo A che faccia il puntamento all’indirizzo IP pubblico del tuo server).
Dopodiché, aggiungiamo il nostro dominio principale in Management
> Directory
> Domains
.
Dopo aver creato il dominio, l’interfaccia visualizzerà i record DNS che è necessario aggiungere alla configurazione del nostro dominio.
Ad esempio:
MX example.org. 10 mail.example.org.
TXT 202404e._domainkey.example.org. v=DKIM1; k=ed25519; h=sha256; p=MCowBQYDK2VwAyEAOT2JN9F8SLTVFNEODDu22SD9RJDC282mugCAeXkzjH0=
TXT 202404r._domainkey.example.org. v=DKIM1; k=rsa; h=sha256; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAykeYJjv5N0AlnJ8gKF+/8qjbStiMFWvPg+p3JPh96GPXEN6l9W/Ee6Lag6i3vLyTVH5dnRVRBhfWhc+Dc0nKreZe4f5i4L5M4RI31+RpEgu4bCmncUIk2WzJgGBW5XbiOwXjge6OKWtJQN9d8Lc1AuryL5xeged9iS6xd/+EJz4WxAf18U+j38xmAm8fJUTBnQVeb/AZup+voSKAS59jyumsb0jQtXfX5xnwTFXdiX2OF8LRrmmNs/ObHozgHftxAv+YCiSU4bqSlKNPQIrN5kk1YnZDnLlc1Gr66AWlmdUVE7PWtZPTy4f8+uHO93EW3WUxLmynZm+Syn9FTJC2uwIDAQAB
TXT mail.example.org. v=spf1 a -all ra=postmaster
TXT example.org. v=spf1 mx -all ra=postmaster
TXT _dmarc.example.org. v=DMARC1; p=reject; rua=mailto:postmaster@example.org; ruf=mailto:postmaster@example.org
Alcuni di questi record generati automaticamente possono essere facoltativi a seconda della configurazione, leggi la sezione Comprensione dei record DNS per ulteriori informazioni.
Abilitare la cifratura TLS
Stalwart Mail Server richiede un certificato TLS valido per proteggere la connessione tra il server e il client. È possibile abilitare TLS in uno dei seguenti modi:
- Se hai già un certificato TLS per il tuo server, puoi caricarlo nella sezione
Settings
>Server
>TLS
>Certificates
. - Se non si dispone di un certificato, è possibile abilitare i certificati TLS automatici da Let’s Encrypt utilizzando ACME. Per abilitare ACME, vai in
Settings
>Server
>TLS
>ACME Providers
e aggiungi Let’s Encrypt come provider ACME assicurandoti che l’hostname del tuo server esista sulla configurazione DNS del tuo dominio. Stalwart supporta le challengetls-alpn-01
,dns-01
ehttp-01
, se non sei sicuro di quale usare, leggi la documentazione dei tipi di ACME challenges. - Se si esegue Stalwart dietro un proxy inverso come Caddy, HAProxy o Traefik, è necessario saltare questo passaggio e configurare TLS nel proxy inverso.
Riavviare il container docker
Una volta completate le istruzioni di installazione, riavviamo il container:
$ docker restart stalwart-mail
Prossimi passi: creazione account
Se hai scelto di utilizzare la directory interna con RocksDB, ora puoi aggiungere gli account per gli utenti nella sezione Management
> Directory
> Accounts
. Se è stata selezionata una directory esterna, è necessario creare gli utenti nel server della directory (quindi o su LDAP o sul database SQL da cui vengono recuperati).
Se tutto è andato a buon fine, i tuoi utenti dovrebbero essere in grado di connettersi al server e inviare e ricevere e-mail. Se non riesci a connetterti al server, controlla i file di log dal pannello di amministrazione web o sotto la directory <DIR_DI_INSTALLAZIONE>/logs
cercando eventuali errori.
Se hai domande, controlla la sezione FAQ o inizia una discussione nel forum della community.
N.B: Prima di rendere il tuo server accessibile al pubblico, è consigliabile disabilitare qualsiasi servizio non utilizzato per migliorare la sicurezza o comunque sia, disabilitarlo a livello del firewall di sistema.
Dimostrazione di installazione
È tutto! Adesso dovresti avere un server di posta elettronica pienamente funzionante, moderno e semplice da gestire. Conoscevi già Stalwart? Hai dubbi o domande in merito?
Scrivili nei commenti, proveremo a darti una mano con la configurazione e la risoluzione di eventuali problemi!
Per altre guide e tutorial, puoi dare un’occhiata qui sotto o esplorando la sezione la blog del nostro sito.