Mailu un server email open completo e leggero per Linux

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.it con 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:

TipoNomeValore
AmailIP_DEL_TUO_SERVER
MX@mail.tuodominio.it (priorità 10)
TXT@v=spf1 mx ~all
TXT_dmarcv=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

  1. Accedi all’interfaccia admin
  2. Vai su Domini → seleziona il tuo dominio
  3. Clicca su Genera chiavi DKIM
  4. 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.

Home Mailu

Lascia un commento