Un server di posta dedicato ti dà il pieno controllo sulle tue co­mu­ni­ca­zio­ni digitali. Questa guida si concentra sulla con­fi­gu­ra­zio­ne di un server di posta personale uti­liz­zan­do Docker. Ti forniamo tutto quello che ti serve dai requisiti alle rac­co­man­da­zio­ni di sicurezza fino a un tutorial completo. Con gli stack container già pronti di Docker, come Docker mail server, im­ple­men­ta­re una soluzione di posta sicura e scalabile non è mai stato così semplice.

Cos’è un server di posta elet­tro­ni­ca con Docker?

Un server di posta con Docker è una soluzione e-mail auto-ospitata di­stri­bui­ta in container uti­liz­zan­do Docker. Gestisce l’invio, la ricezione e l’ar­chi­via­zio­ne delle e-mail, per­met­ten­do un controllo totale sulla privacy dei dati, le politiche di sicurezza e la con­fi­gu­ra­zio­ne del sistema. Rispetto a fornitori terzi come Gmail o Outlook, con un server di posta con Docker hai il controllo della tua in­fra­strut­tu­ra, il che risulta par­ti­co­lar­men­te adatto a svi­lup­pa­tri­ci, svi­lup­pa­to­ri, utenti attenti alla privacy e piccole imprese.

Perché usare Docker per un server di posta?

Usare Docker per ospitare il tuo server di posta elet­tro­ni­ca offre diversi vantaggi:

  • Iso­la­men­to e sicurezza: i container Docker isolano il server di posta, riducendo il rischio di com­pro­mis­sio­ne a livello di sistema e mi­glio­ran­do la sicurezza.
  • Por­ta­bi­li­tà: i container Docker possono essere fa­cil­men­te spostati tra ambienti diversi, ga­ran­ten­do una con­fi­gu­ra­zio­ne coerente tra server locali e cloud.
  • Di­stri­bu­zio­ne sem­pli­fi­ca­ta: Docker offre stack pre­con­fi­gu­ra­ti, sem­pli­fi­can­do il processo di in­stal­la­zio­ne ed eli­mi­nan­do la necessità di con­fi­gu­ra­zio­ne manuale.
  • Sca­la­bi­li­tà: scala fa­cil­men­te i container Docker per adattarli al traffico e-mail in aumento e ai cam­bia­men­ti nei requisiti delle risorse.
  • Controllo delle versioni: specifica le versioni delle immagini Docker per prevenire problemi di com­pa­ti­bi­li­tà e fa­ci­li­ta­re il rollback, se ne­ces­sa­rio.
  • Coerenza tra gli ambienti: Docker assicura con­fi­gu­ra­zio­ni e in­stal­la­zio­ni coerenti tra ambienti di sviluppo, test e pro­du­zio­ne.
Server email di IONOS pro­fes­sio­na­li
  • Elevati standard di sicurezza
  • Crit­to­gra­fia au­to­ma­ti­ca con SSL/TLS
  • Data center cer­ti­fi­ca­ti ISO 27001 e geo­ri­don­dan­ti
  • IMAP e SMTP

Quali sono i requisiti per eseguire un server di posta con Docker?

N.B.

Questa guida è pensata per utenti con com­pe­ten­ze tecniche che hanno fa­mi­lia­ri­tà con Linux e Docker e de­si­de­ra­no un’in­fra­strut­tu­ra e-mail privata e fles­si­bi­le. È par­ti­co­lar­men­te rilevante per svi­lup­pa­tri­ci, svi­lup­pa­to­ri, am­mi­ni­stra­to­ri, am­mi­ni­stra­tri­ci IT e piccole imprese.

Per ospitare il tuo server di posta con Docker, avrai bisogno di risorse hardware suf­fi­cien­ti a seconda del traffico e-mail previsto. Un indirizzo IPv4 statico è es­sen­zia­le per con­sen­ti­re in­te­ra­zio­ni scor­re­vo­li con il server di posta. Inoltre, as­si­cu­ra­ti di im­ple­men­ta­re una corretta con­fi­gu­ra­zio­ne DNS, inclusi i record MX, SPF, DKIM e DMARC. Il supporto IPv6 è sempre più im­por­tan­te per una migliore com­pa­ti­bi­li­tà e re­pu­ta­zio­ne della posta elet­tro­ni­ca.

Tec­no­lo­gie at­tual­men­te con­si­glia­te

  • Docker image: docker-mailserver/docker-mailserver:v13.2+
  • Pro­to­col­li e-mail: SMTP (porte 25, 587, 465), IMAPS (993), POP3S (995)
  • Standard di sicurezza: TLS 1.3, DKIM, SPF, DMARC, DNSSEC (se sup­por­ta­to)
  • Sistema operativo host: Ubuntu 22.04 LTS, Debian 12 o di­stri­bu­zio­ni Linux stabili equi­va­len­ti
Consiglio

Puoi sem­pli­fi­ca­re l’intero processo uti­liz­zan­do Docker mail server, un noto stack open-source gestito dalla community. Qui sono inclusi in un unico container Postfix, Dovecot, rspamd, ClamAV e un’in­te­gra­zio­ne opzionale con LDAP.

Cosa dovresti con­si­de­ra­re quando configuri un server di posta elet­tro­ni­ca con Docker?

Le con­fi­gu­ra­zio­ni di sicurezza in sintesi

Per pro­teg­ge­re il tuo server di posta, as­si­cu­ra­ti di applicare co­stan­te­men­te le im­po­sta­zio­ni di sicurezza, tra cui:

  • Uti­liz­za­re cer­ti­fi­ca­ti TLS ag­gior­na­ti (almeno TLS 1.2, ancora meglio se TLS 1.3)
  • Con­fi­gu­ra­re e applicare politiche SPF, DKIM e DMARC
  • Im­ple­men­ta­re il rate limiting e l’au­ten­ti­ca­zio­ne tramite SASL
  • Abilitare con­nes­sio­ni crit­to­gra­fa­te per IMAP/POP3 e SMTP
  • Con­fi­gu­ra­re i log con strumenti come rsyslog e rotazione log strut­tu­ra­ta
N.B.

Anche con con­fi­gu­ra­zio­ni con­tai­ne­riz­za­te che uti­liz­za­no Docker, un piano di sicurezza in­di­pen­den­te è es­sen­zia­le. Docker sem­pli­fi­ca l’in­stal­la­zio­ne ma non so­sti­tui­sce la pro­te­zio­ne del sistema at­tra­ver­so firewall, permessi utente rigorosi, log (ad esempio tramite rsyslog) e ag­gior­na­men­ti regolari.

Rac­co­man­da­zio­ni generali per la con­fi­gu­ra­zio­ne

Con­fi­gu­ra­re un server di posta con Docker richiede com­pe­ten­ze tecniche e una con­fi­gu­ra­zio­ne di sicurezza ap­pro­fon­di­ta. Di seguito ri­por­tia­mo alcuni aspetti prin­ci­pa­li su cui con­cen­trar­si:

  • Scegliere un’immagine Docker ap­pro­pria­ta e uno stack server di posta (ad esempio, docker-mail­ser­ver/docker-mail­ser­ver)
  • Con­fi­gu­ra­re i record DNS (MX, SPF, DKIM, DMARC)
  • Mettere in sicurezza l’host Docker (firewall, Fail2Ban, crit­to­gra­fia)
  • Scegliere gli strumenti giusti per am­mi­ni­stra­zio­ne e mo­ni­to­rag­gio
  • Ag­gior­na­men­ti regolari e backup (inclusi ag­gior­na­men­ti delle immagini Docker)
  • Con­fi­gu­ra­re le voci di DNS inverso e il supporto IPv6
  • Ri­spet­ta­re i requisiti legali (ad esempio, il GDPR e l’ar­chi­via­zio­ne delle e-mail come prevista per legge)

Quale hardware è ne­ces­sa­rio?

Per gestire il tuo server di posta con Docker, è es­sen­zia­le un hardware adeguato. Le pre­sta­zio­ni ne­ces­sa­rie dipendono da vari fattori, inclusi il numero di e-mail inviate gior­nal­men­te e il numero di persone che uti­liz­za­no il server. I container Docker sono leggeri, ma è comunque ne­ces­sa­rio con­si­de­ra­re RAM, CPU e spazio di ar­chi­via­zio­ne. Potrebbe essere ne­ces­sa­ria maggiore potenza per servizi ag­giun­ti­vi come sistemi di backup o scanner di contenuti (ad esempio, pro­te­zio­ne contro lo spam o il phishing). Avrai anche bisogno di un indirizzo IPv4 statico per un’in­te­ra­zio­ne fluida con altri server di posta; infatti, gli IP dinamici possono causare problemi per la consegna delle e-mail.

Consiglio

Vorresti dare al tuo server di posta con Docker un tocco personale e pro­fes­sio­na­le? Opta per un dominio per­so­na­liz­za­to. Registra subito il tuo dominio personale con IONOS e ottieni anche un cer­ti­fi­ca­to SSL/TLS per il tuo server di posta elet­tro­ni­ca.

Quando cerchi un ambiente adatto per il tuo server di posta con Docker, è im­por­tan­te con­si­de­ra­re quali capacità devono essere coperte. Una con­fi­gu­ra­zio­ne semplice può gestire un piccolo numero di e-mail al giorno, mentre un server di posta aziendale molto uti­liz­za­to richiede una RAM, una CPU e uno spazio di ar­chi­via­zio­ne maggiori.

N.B.

In­di­pen­den­te­men­te che si tratti di Windows o Linux, non di­men­ti­ca­re di con­si­de­ra­re le risorse ne­ces­sa­rie per il sistema operativo in uso.

Scenario del server di posta Hardware Piano IONOS rac­co­man­da­to
Server domestico semplice con poco traffico 2 vCore, 8 GB di RAM, 240 GB di SSD Server virtuale cloud L di IONOS
Server di posta per una piccola impresa (fino a 1.000 e-mail/giorno) 8 vCore, 16 GB di RAM, 480 GB di SSD Server virtuale cloud XL di IONOS
Server di posta aziendale (oltre 50.000 e-mail/giorno) 6 vCore, 32 GB di RAM, 2 x 480 GB di SSD RAID Server dedicato AMD di IONOS
N.B.

Con un server dedicato, ottieni l’accesso a un hardware aziendale riservato esclu­si­va­men­te a te. Al contrario, i VPS e i server cloud uti­liz­za­no risorse vir­tua­liz­za­te condivise con altri clienti, senza che vi sia un calo delle pre­sta­zio­ni.

Come con­fi­gu­ra­re un server di posta con Docker: guida

In questo tutorial, abbiamo scelto il popolare container Docker docker mail server.

Questo container leggero e open source (licenza MIT) offre uno stack modulare e pronto all’uso per con­fi­gu­ra­re il tuo server di posta elet­tro­ni­ca. Integra tutti i com­po­nen­ti es­sen­zia­li, come un server SMTP, un server IMAP o POP3, pro­te­zio­ne antispam e antivirus opzionale e, se ne­ces­sa­rio, un servizio di directory LDAP.

Primo passaggio: ottieni l’immagine Docker

Puoi ottenere l’immagine più recente di docker-mail­ser­ver dalla directory ufficiale di Docker Hub o dal re­po­si­to­ry ufficiale di GitHub.

L’approccio con­si­glia­to è quello di scaricare una release stabile, come v13.2, piuttosto che uti­liz­za­re i tag :latest o :edge.

Esegui il seguente comando per scaricare l’immagine:

docker pull mailserver/docker-mailserver:v13.2
# or:
docker pull ghcr.io/docker-mailserver/docker-mailserver:v13.2
bash

Secondo passaggio: configura docker-compose.yml

Suc­ces­si­va­men­te, dovrai con­fi­gu­ra­re docker-compose.yml per definire i servizi e i volumi necessari per il tuo container Docker. Di seguito trovi un esempio di con­fi­gu­ra­zio­ne per il tuo server di posta:

version: '3.8'
services: 
    mailserver: 
        image: docker.io/mailserver/docker-mailserver:v13.2
        container_name: mailserver
        hostname: mail-server
        domainname: example.com
        ports:
            - "25:25"
            - "587:587"
            - "465:465"
        volumes: 
            - ./docker-data/dms/mail-data/:/var/mail/
            - ./docker-data/dms/mail-state/:/var/mail-state/
            - ./docker-data/dms/mail-logs/:/var/log/mail/
            - ./docker-data/dms/config/:/tmp/docker-mailserver/
            - ./docker-data/nginx-proxy/certs/:/etc/letsencrypt/
            - /etc/localtime:/etc/localtime:ro
        environment:
            - ENABLE_FAIL2BAN=1
            - SSL_TYPE=letsencrypt
            - PERMIT_DOCKER=network
            - ONE_DIR=1
            - ENABLE_POSTGREY=0
            - ENABLE_CLAMAV=0
            - ENABLE_SPAMASSASSIN=0
            - SPOOF_PROTECTION=0
        cap_add:
            - NET_ADMIN
            - SYS_PTRACE
yaml

Questa con­fi­gu­ra­zio­ne assicura che il tuo container Docker utilizzi le porte corrette per SMTP (25), IMAPS (993) e SMTP sub­mis­sion (587), e che i volumi siano cor­ret­ta­men­te mappati per l’ar­chi­via­zio­ne per­si­sten­te dei dati. Inoltre, sono abilitate funzioni di sicurezza come Fail2Ban e Let’s Encrypt SSL.

N.B.

Puoi trovare un elenco completo delle opzioni con­fi­gu­ra­bi­li nella do­cu­men­ta­zio­ne ufficiale del server di posta Docker.

Terzo passaggio: apri le porte ne­ces­sa­rie

Nel tuo file docker-compose.yml, noterai che le porte del server SMTP sono elencate (25, 465 e 587). Queste devono essere aperte anche nel firewall del tuo server per garantire un traffico e-mail af­fi­da­bi­le.

Se stai uti­liz­zan­do un servizio come IONOS per l’hosting, puoi aprire fa­cil­men­te queste porte dal Cloud Panel:

  1. Accedi al Cloud Panel di IONOS.
  2. Vai alla sezione “Server & Cloud”.
  3. Seleziona il server che utilizzi per ospitare il server di posta con Docker.
  4. Nel menu a sinistra, clicca su “Rete”, poi su “Regole firewall”.
  5. Aggiungi le regole firewall per le porte TCP 25, 465 e 587.
Immagine: Cloud Panel di IONOS: aggiungi regola firewall
Cloud Panel di IONOS: aggiunta di una regola firewall.

Quarto passaggio: configura le im­po­sta­zio­ni DNS

Nel passaggio suc­ces­si­vo, devi as­si­cu­rar­ti che il servizio DNS per il tuo dominio sia con­fi­gu­ra­to cor­ret­ta­men­te:

  • Record MX: punta al server di posta (ad esempio, mail.esempio.com) che hai definito sotto hostname e domainname nel tuo docker-compose.yml.
  • Record SPF: un record TXT per il dominio (non per il nome host!), ad esempio, v=spf1 mx ~all.
N.B.

~all sta per “Softfail”; in al­ter­na­ti­va, puoi uti­liz­za­re -all se pre­fe­ri­sci una politica più rigorosa.

Come con­fi­gu­ra­re il DNS nel Cloud Panel di IONOS

  1. Accedi al Cloud Panel di IONOS.
  2. Vai su “Domini & SSL”.
  3. Trova il tuo dominio e clicca sull’icona delle im­po­sta­zio­ni.
  4. Seleziona “DNS”.
  5. Aggiungi i seguenti record:
  • Record MX: de­sti­na­zio­ne = mail.esempio.com, priorità = 10
  • Record TXT: tipo = TXT, valore = v=spf1 mx ~all
Immagine: Cloud Panel di IONOS: aggiungi record DNS
Cloud Panel di IONOS: aggiunta di un record DNS.

Infine, fai clic su “Reimposta dominio” nel menu in alto per ri­ca­ri­ca­re la con­fi­gu­ra­zio­ne DNS e applicare le modifiche. Conferma le tue voci facendo clic su “Reimposta ora” per ag­gior­na­re i record DNS.

Consiglio

Vorresti ar­chi­via­re in modo sicuro le e-mail aziendali in con­for­mi­tà con il GDPR? Con l’ar­chi­via­zio­ne e-mail di IONOS puoi ar­chi­via­re au­to­ma­ti­ca­men­te le caselle di posta se­le­zio­na­te in un formato a prova di ma­no­mis­sio­ne e conforme alla legge.

Quinto passaggio: genera le chiavi DKIM

Per aumentare la sicurezza del tuo server di posta, è ne­ces­sa­rio generare un record DKIM (Do­main­Keys Iden­ti­fied Mail) per il tuo dominio. Questa tecnica permette di firmare in digitale le e-mail, così i server di posta in arrivo possono ve­ri­fi­car­ne l’au­ten­ti­ci­tà.

Usa lo script setup.sh fornito nella directory docker-mailserver:

./setup.sh config dkim
bash

La chiave pubblica generata verrà salvata nel seguente file (sup­po­nen­do che il volume sia stato montato cor­ret­ta­men­te):

docker-data/dms/config/opendkim/keys/example.com/mail.txt
swift

Apri il file e copia il suo contenuto per creare un record TXT nelle im­po­sta­zio­ni DNS del tuo dominio. Il record DNS si presenta in maniera analoga:

mail._domainkey.example.com. IN TXT ( 
    "v=DKIM1; h=sha256; k=rsa; " 
    "p=MIIBIjANBgkqhkiG9w0BAQEFAAOC...continuedPublicKey...IDAQAB" 
)
java
  • mail è il selettore e può essere nominato come pre­fe­ri­sci (ad esempio, default, key2025, ecc.).
  • Se il tuo fornitore DNS limita la lunghezza a 255 caratteri per stringa, dovrai sud­di­vi­de­re la chiave (come mostrato nell’esempio).
  • As­si­cu­ra­ti che il tipo di record sia TXT e che si applichi al dominio completo mail._domainkey.example.com.
N.B.

Oltre al DKIM, dovresti anche con­fi­gu­ra­re un record SPF e uno DMARC per garantire una pro­te­zio­ne completa contro lo spoofing delle e-mail.

Sesto passaggio: avvia il server e crea il tuo primo indirizzo

Avvia il server di posta con­fi­gu­ra­to di­ret­ta­men­te dalla directory del progetto con il seguente comando:

docker-compose up -d
bash

Queste istru­zio­ni ti aiu­te­ran­no a con­fi­gu­ra­re in modo sicuro ed ef­fi­cien­te sia ambienti server di posta moderni basati su container che quelli tra­di­zio­na­li.

Server email di IONOS pro­fes­sio­na­li
  • Elevati standard di sicurezza
  • Crit­to­gra­fia au­to­ma­ti­ca con SSL/TLS
  • Data center cer­ti­fi­ca­ti ISO 27001 e geo­ri­don­dan­ti
  • IMAP e SMTP
Vai al menu prin­ci­pa­le