Skip to content

Installer un seveur mail avec mailcow

Nous utilisons une version "dockerisé" de mailcow.

1. CONFIGURATION

1.1 DNS

  • Créer les enregistrements DNS suivant:

Info

// Enregistrement A pour L'UI mAilcow
mail 1800 IN A 78.192.247.57
// Enregistrement MX pointant vers le hostname de mailcow
@ 10800 IN MX 10 mail.legaragenumerique.fr.
// Enregistrement TXT à prendre dans l'UI de Mailcow du domaine
mail 1800 IN TXT "<DKIM_KEY>"
dkim._domainkey 1800 IN TXT "<DKIM_KEY>"
// Enregistrement TXT pointant vers l'IP du serveur Mailcow
@ 1800 IN TXT "v=spf1 ip4:78.192.247.57 ~all"
_dmarc 10800 IN TXT "v=DMARC1; p=quarantine; sp=reject; rua=mailto:reports@exemple.com; ruf=mailto:forensics@exemple.com; fo=1"
// Enregistrement CNAME pointant vers le domaine (pour la configuration automatique des clients)
autoconfig 10800 IN CNAME mail.legaragenumerique.fr.
autodiscover 1800 IN CNAME mail.legaragenumerique.fr.
// Idéalement un enregistrement SRV pour la résolution inversée (IP > nom de domaine)

Enregistrement DKIM

Prendre l'enregistrement TXT mail de l'interface mailcow (DKIM key) et remplacer les champs <DKIM_KEY>

Pour tout domaine autre que legaragenumerique.fr hébergé par mailcow, l'enregistrement MX doit pointer vers le hostname du serveur mailcow (dans cet exemple : mail.legaragenumerique.fr)

1.2 Firewall

  • Ouvrir les ports suivant (TCP et UDP):
Service Encryption Host Port
IMAP STARTTLS mailcow hostname 143
IMAPS SSL mailcow hostname 993
POP3 STARTTLS mailcow hostname 110
POP3S SSL mailcow hostname 995
SMTP STARTTLS mailcow hostname 587
SMTPS SSL mailcow hostname 465

1.3 Stack

  • Cloner le projet:
git clone https://github.com/mailcow/mailcow-dockerized.git
cd mailcow-dockerized
./generate_config.sh
docker compose up -d

1.4 Nginx RP config (Si mailcow dérrière proxy)

nginx configuration reverse proxy
upstream mail {
    # Redirect to HTTP port of Mailcow instance, not HTTPS !
    server 192.168.0.102:880;
}

server {
    listen 80;
    listen [::]:80;

    server_name mail.legaragenumerique.fr autodiscover.* autoconfig.*;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name mail.legaragenumerique.fr autodiscover.* autoconfig.*;

    ssl_certificate /etc/letsencrypt/live/mail.legaragenumerique.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mail.legaragenumerique.fr/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    client_max_body_size 10G;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://mail;
        proxy_read_timeout 120s;
    }

    access_log /var/log/nginx/mail_access.log;
    error_log /var/log/nginx/mail_error.log;
}

1.5 Configurations clients

1.5.1 Configuration Thunderbird

WS

1.5.2 Configuration CARDAV & CALDAV

Utiliser les adresses suivantes pour synchroniser les calendriers et contacts en remplaçant mail.example.com par votre hostname mailcow et user@example.com par la boite mail concernée.

CalDAV: https://mail.example.com/SOGo/dav/user@example.com/Calendar/personal/

CardDAV: https://mail.example.com/SOGo/dav/user@example.com/Contacts/personal/

1.6 Transfert boite mail via Thunderbird

Processus pour récupérer les mails d'une adresse avant de d'héberger celle-ci sur mailcow, puis réimporter les mails.

1.6.1 Export

On exporte les mails au format .elm via Thunderbird dans un dossier.

WS

  • Déconnecter la boîte mail de Thunderbird

1.6.2 Changement des enregistrements DNS

  • Changer les enregistrements DNS pour les faire pointer vers le serveur mailcow où la boîte mail est désormais hébergée

  • Attendre la propagation du changement de DNS

Tip

Certains serveurs mail peuvent mettre jusque 24h avant d'obtenir le changement pour un enregistrement (temps de propagation)

1.6.3 Import

  • Connecter la boîte mail dans Thunderbird

WS

  • Attendre la fin de l'omport et la synchronisation avec les serveur mail

Les mails sont désormais disponibles sur le nouveau serveur

2. DOCUMENTATION

Documentation mailcow