Retour à l'accueil

Mailu dans Kubernetes : configuration d'un serveur de messagerie pour les développeurs

L'article décrit le processus de déploiement du serveur de messagerie Mailu dans un cluster Kubernetes en utilisant Helm. Il couvre la préparation des enregistrements DNS, la configuration des politiques de réseau, la résolution des problèmes TLS et la configuration de DKIM, DMARC, SPF pour assurer la livraison des e-mails.

Comment déployer Mailu dans Kubernetes : guide complet
Advertisement 728x90

Déployer Mailu sur Kubernetes : Guide étape par étape

Mailu est un serveur de messagerie conteneurisé optimisé pour Docker et Kubernetes. Contrairement aux configurations traditionnelles Postfix et Dovecot qui demandent un paramétrage lourd, Mailu se déploie facilement, idéal pour les labs maison ou les environnements de test. Ce guide vous accompagne pour installer Mailu dans un cluster Kubernetes avec Helm, configurer les politiques réseau, les enregistrements DNS et les mesures de sécurité.

Préparer l'infrastructure et le DNS

Avant d'installer Mailu, réalisez ces étapes essentielles d'infrastructure. D'abord, procurez-vous un domaine avec gestion DNS — prenons par exemple votre-domaine.com. Ensuite, obtenez une IP publique statique (ex. : 1.2.3.4) avec un enregistrement PTR configuré par votre FAI. Sans PTR, les grands fournisseurs de messagerie marqueront vos emails comme spam.

Enregistrements DNS clés à créer :

Google AdInline article slot
  • Enregistrement A : mail.votre-domaine.com → 1.2.3.4
  • Enregistrement MX : @ → mail.votre-domaine.com

Après configuration, vérifiez avec nslookup 1.2.3.4 — cela doit résoudre vers mail.votre-domaine.com, confirmant que votre PTR est correct.

Configurer Kubernetes et déployer Mailu

Pour la sécurité, isolez le serveur de messagerie dans son propre namespace afin de limiter les risques — nous utiliserons dmz-mail ici. Appliquez immédiatement une politique réseau pour bloquer par défaut tout trafic entrant et sortant, en autorisant seulement les ports essentiels.

Exemple de politique réseau (network-policy-dmz-mail.yaml) :

Google AdInline article slot
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: default-dmz-mail-deny
  namespace: dmz-mail
spec:
  podSelector: {}
  policyTypes:
  - Ingress
  - Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-mailu-ports
  namespace: dmz-mail
spec:
  podSelector: {}
  egress:
    - to:
      - namespaceSelector:
          matchLabels:
            kubernetes.io/metadata.name: kube-system
      ports:
      - protocol: UDP
        port: 53
      - protocol: TCP
        port: 25
      - protocol: TCP
        port: 465

Ensuite, ajoutez le dépôt Helm de Mailu et créez un fichier values.yaml. Les paramètres clés incluent votre domaine, fuseau horaire, compte admin initial, options de stockage et interfaces réseau. Adaptez la StorageClass à votre cluster.

Paramètres essentiels de values.yaml :

  • hostnames: ["mail.votre-domaine.com"]
  • domain: votre-domaine.com
  • initialAccount pour la configuration admin
  • Configs PostgreSQL ou MariaDB
  • Paramètres de persistance (ex. : size: 50Gi)
  • Configuration Ingress avec annotations cert-manager
  • Frontend en type LoadBalancer

Installez le chart avec :

Google AdInline article slot
helm install mailu mailu/mailu -n dmz-mailu --values mailu_values.yaml

Résoudre les problèmes TLS et configurations avancées

Mailu peut rencontrer des erreurs SSL avec Ingress à cause de particularités TLS. Une solution consiste à créer un Service LoadBalancer dédié pour le frontend, déplaçant l'interface web sur sa propre IP et évitant les conflits TLS d'Ingress.

Exemple de manifeste (svc-mailu-front-web.yaml) :

apiVersion: v1
kind: Service
metadata:
  name: svc-mailu-front-web
  namespace: dmz-mail
spec:
  externalTrafficPolicy: Local
  ports:
  - port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app.kubernetes.io/component: front
    app.kubernetes.io/instance: mailu
    app.kubernetes.io/name: mailu
  type: LoadBalancer
  loadBalancerIP: 192.168.10.201

Appliquez-le, puis pointez mail-local.votre-domaine.com vers cette IP dans votre DNS local ou fichier hosts. Redirigez aussi le port 25 depuis votre passerelle vers l'IP LoadBalancer indiquée dans values.yaml pour les mails entrants.

Configurer DKIM, DMARC et SPF

Pour assurer la délivrabilité vers Gmail ou Outlook, mettez en place DKIM, DMARC et SPF. Ces protocoles d'authentification valident la légitimité de l'expéditeur et évitent les dossiers spam.

Étapes de configuration :

  • Dans l'interface web admin de Mailu, allez à AdministrationDomaines mail → sélectionnez votre domaine → Modifier.
  • Cliquez Générer les clés en haut à droite.
  • Copiez les enregistrements TXT pour DKIM, DMARC et SPF dans le DNS de votre domaine.
  • Attendez la propagation (jusqu'à 48 heures).

Validez avec des outils comme mxtoolbox.com. Testez en envoyant vers des adresses externes — les premiers emails peuvent atterrir en spam, vérifiez les indésirables.

Optimisation des performances et de la sécurité

Mailu inclut des composants optionnels que vous pouvez désactiver pour économiser des ressources ou simplifier. ClamAV (antivirus), OleTools (scanner Office) et Tika (gestion métadonnées) ne sont pas indispensables pour les fonctions mail de base — passez-les à false dans values.yaml.

Recommandé pour un usage domestique :

  • clamav: false
  • oletools: false
  • tika: false

Gardez Rspamd (filtre antispam) activé — il gère efficacement mails entrants et sortants.

Points clés à retenir

  • Un enregistrement PTR sur votre IP statique est crucial pour une délivrabilité fiable.
  • Namespace dédié et politiques réseau renforcent la sécurité du déploiement.
  • Utilisez un Service LoadBalancer séparé pour résoudre les problèmes TLS Ingress.
  • DKIM, DMARC et SPF sont indispensables pour les envois externes.
  • Désactivez les composants non essentiels comme ClamAV pour réduire la consommation de ressources.

— Editorial Team

Advertisement 728x90

Lire ensuite