
Mailu si distingue come soluzione moderna per chi desidera un server email completo, facile da mantenere e totalmente basato su software libero. Il progetto utilizza container Docker per offrire un’architettura modulare, semplice da distribuire e adatta sia a piccoli server personali sia a installazioni multi‑dominio. L’obiettivo è fornire un sistema di posta robusto senza includere componenti superflui o funzioni tipiche dei groupware più pesanti.
Il cuore di Mailu è un set di servizi che coprono tutte le esigenze fondamentali: IMAP, IMAP+, SMTP, Submission e profili di auto‑configurazione per i client. Gli utenti Linux possono così integrare facilmente il server con applicazioni desktop e mobile, mantenendo un controllo totale sulla configurazione. Le funzionalità avanzate includono alias, alias di dominio, routing personalizzato e ricerca full‑text anche negli allegati, utile per chi gestisce grandi volumi di posta.
L’accesso via web è garantito da più webmail tra cui scegliere, affiancate da un’interfaccia di amministrazione intuitiva. Gli utenti possono gestire alias, auto‑reply, auto‑forward, account remoti da cui recuperare la posta e script managesieve. Gli amministratori dispongono di strumenti per deleghe per‑dominio, annunci globali, quote e gestione centralizzata degli utenti.
Sul fronte della sicurezza, Mailu integra TLS obbligatorio, DANE, MTA‑STS, certificati automatici tramite Let’s Encrypt, DKIM in uscita, antivirus, filtri per allegati pericolosi e Snuffleupagus per rafforzare la protezione PHP. Il sistema antispam combina auto‑learn, greylisting, DMARC, SPF e meccanismi anti‑spoofing, offrendo una difesa multilivello senza dipendere da componenti proprietari.

Mailu è completamente FOSS e non include tracker o elementi invasivi. La filosofia del progetto è chiara: fornire un server email essenziale, potente e rispettoso della privacy, mantenendo un’architettura trasparente e aperta ai contributi della comunità. Per chi utilizza Linux come piattaforma principale, rappresenta una soluzione solida per sostituire servizi esterni e mantenere il pieno controllo della posta.
Come Installare Mailu su Ubuntu o Debian Server
Questa guida ti mostra come installare Mailu su Ubuntu Server o Debian usando Docker Compose.
Prerequisiti Prima di Iniziare
Prima di procedere, assicurati di avere:
- Un server con Ubuntu o Debian (minimo 2 CPU, 6 GB RAM, 20 GB disco)
- Un dominio registrato puntato sull’IP del server (es.
mail.tuodominio.it) - Le porte 25, 80, 110, 143, 443, 465, 587, 993, 995 libere
- Accesso root o sudo al server
Step 1 — Aggiorna il Sistema e Installa Docker
# Aggiorna il sistema
sudo apt update && sudo apt upgrade -y
# Installa le dipendenze necessarie
sudo apt install -y ca-certificates curl gnupg lsb-release
# Aggiungi la chiave GPG ufficiale di Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Aggiungi il repository Docker
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installa Docker Engine e Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Avvia Docker e abilitalo all'avvio
sudo systemctl enable --now docker
# Verifica l'installazione
docker --version
docker compose version
Step 2 — Prepara la Directory di Mailu
# Crea la directory principale di Mailu
sudo mkdir -p /mailu
cd /mailu
Step 3 — Genera la Configurazione con il Setup Wizard
Apri il browser e vai su https://setup.mailu.io per generare i file di configurazione. Il wizard ti guiderà nella scelta delle opzioni.
Oppure crea manualmente i file come mostrato di seguito.
Crea il file mailu.env
sudo tee /mailu/mailu.env > /dev/null <<'EOF'
# Impostazioni generali
SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1)
SUBNET=192.168.203.0/24
DOMAIN=tuodominio.it
HOSTNAMES=mail.tuodominio.it
POSTMASTER=admin
WILDCARD_SENDERS=
TLS_FLAVOR=letsencrypt
AUTH_RATELIMIT_IP=60/hour
AUTH_RATELIMIT_USER=100/day
DISABLE_STATISTICS=True
# Impostazioni opzionali
LOG_DRIVER=json-file
LOG_LEVEL=WARNING
LOG_COMPRESS=y
# Admin account automatico (facoltativo)
INITIAL_ADMIN_ACCOUNT=admin
INITIAL_ADMIN_DOMAIN=tuodominio.it
INITIAL_ADMIN_PW=CambiaQuestoPassword!
INITIAL_ADMIN_MODE=update
EOF
⚠️ Sostituisci
tuodominio.itcon il tuo dominio reale e imposta una password sicura.
Genera una SECRET_KEY sicura
# Genera la chiave segreta e aggiornala nel file .env
SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 16 | head -n 1)
echo "SECRET_KEY=$SECRET_KEY"
# Aggiorna il file con la chiave generata
sudo sed -i "s|SECRET_KEY=.*|SECRET_KEY=$SECRET_KEY|" /mailu/mailu.env
Step 4 — Crea il File docker-compose.yml
sudo tee /mailu/docker-compose.yml > /dev/null <<'EOF'
version: '3.8'
services:
# Reverse proxy e certificati TLS
front:
image: ghcr.io/mailu/nginx:2024.06
restart: always
env_file: mailu.env
logging:
driver: json-file
ports:
- "80:80"
- "443:443"
- "25:25"
- "465:465"
- "587:587"
- "110:110"
- "995:995"
- "143:143"
- "993:993"
networks:
- default
volumes:
- "/mailu/certs:/certs"
- "/mailu/overrides/nginx:/overrides:ro"
resolver:
image: ghcr.io/mailu/unbound:2024.06
env_file: mailu.env
restart: always
networks:
default:
ipv4_address: 192.168.203.254
admin:
image: ghcr.io/mailu/admin:2024.06
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/data:/data"
- "/mailu/dkim:/dkim"
depends_on:
- redis
imap:
image: ghcr.io/mailu/dovecot:2024.06
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/mail:/mail"
- "/mailu/overrides/dovecot:/overrides:ro"
depends_on:
- front
smtp:
image: ghcr.io/mailu/postfix:2024.06
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/mailqueue:/queue"
- "/mailu/overrides/postfix:/overrides:ro"
depends_on:
- front
- resolver
antispam:
image: ghcr.io/mailu/rspamd:2024.06
hostname: antispam
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/filter:/var/lib/rspamd"
- "/mailu/overrides/rspamd:/etc/rspamd/override.d:ro"
depends_on:
- front
- redis
oletools:
image: ghcr.io/mailu/oletools:2024.06
hostname: oletools
restart: always
env_file: mailu.env
networks:
- noinet
antivirus:
image: ghcr.io/mailu/clamav:2024.06
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/filter:/data"
webmail:
image: ghcr.io/mailu/roundcube:2024.06
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/webmail:/data"
- "/mailu/overrides/roundcube:/overrides:ro"
depends_on:
- imap
redis:
image: redis:alpine
restart: always
env_file: mailu.env
logging:
driver: json-file
volumes:
- "/mailu/redis:/data"
networks:
default:
driver: bridge
ipam:
driver: default
config:
- subnet: 192.168.203.0/24
noinet:
driver: bridge
internal: true
EOF
Step 5 — Crea le Directory Necessarie
sudo mkdir -p /mailu/{certs,data,dkim,mail,mailqueue,filter,webmail,redis,overrides/{nginx,dovecot,postfix,rspamd,roundcube}}
Step 6 — Configura il DNS
Prima di avviare Mailu, configura i record DNS presso il tuo provider:
| Tipo | Nome | Valore |
|---|---|---|
| A | mail | IP_DEL_TUO_SERVER |
| MX | @ | mail.tuodominio.it (priorità 10) |
| TXT | @ | v=spf1 mx ~all |
| TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:admin@tuodominio.it |
Il record DKIM verrà generato automaticamente da Mailu dopo il primo avvio; recuperalo dall’interfaccia di amministrazione.
Step 7 — Avvia Mailu
cd /mailu
# Scarica le immagini Docker
sudo docker compose pull
# Avvia tutti i servizi in background
sudo docker compose up -d
# Verifica che tutti i container siano in esecuzione
sudo docker compose ps
Step 8 — Crea l’Account Amministratore
Se non hai configurato INITIAL_ADMIN_* nel file .env, crea l’admin manualmente:
sudo docker compose exec admin flask mailu admin admin tuodominio.it 'TuaPasswordSicura!'
Questo crea l’utente admin@tuodominio.it con privilegi di amministrazione.
Step 9 — Accedi all’Interfaccia di Amministrazione
Apri il browser e vai su:
https://mail.tuodominio.it/admin
Accedi con le credenziali dell’amministratore appena create e cambia subito la password con una più sicura.
Step 10 — Configura DKIM dall’Interfaccia Admin
- Accedi all’interfaccia admin
- Vai su Domini → seleziona il tuo dominio
- Clicca su Genera chiavi DKIM
- Copia il record TXT generato e aggiungilo al tuo DNS
Comandi Utili per la Manutenzione
# Visualizza i log in tempo reale
sudo docker compose logs -f
# Log di un singolo servizio (es. smtp)
sudo docker compose logs -f smtp
# Riavvia un singolo servizio
sudo docker compose restart smtp
# Ferma tutti i servizi
sudo docker compose stop
# Aggiorna le immagini all'ultima versione
sudo docker compose pull && sudo docker compose up -d
# Backup della directory dati
sudo tar -czf mailu-backup-$(date +%Y%m%d).tar.gz /mailu/data /mailu/mail /mailu/dkim
# Verifica la coda di posta
sudo docker compose exec smtp mailq
Risoluzione dei Problemi Comuni
Il certificato Let’s Encrypt non viene generato:
Verifica che i record DNS siano propagati e che le porte 80 e 443 siano aperte nel firewall:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 25/tcp
sudo ufw allow 587/tcp
sudo ufw allow 465/tcp
sudo ufw allow 143/tcp
sudo ufw allow 993/tcp
sudo ufw reload
Mailu non riceve email:
Controlla che il record MX sia configurato correttamente e verifica i log SMTP:
sudo docker compose logs smtp | tail -50
Errori di autenticazione:
Verifica che il postmaster esista come utente o come alias nel pannello di amministrazione.
Bene ora abbiamo installato con successo Mailu su Ubuntu con Docker. Ora disponiamo di un mail server completo con webmail, antispam, antivirus e certificati TLS automatici.