D'un hôte vierge au flux de messagerie en production en 8 étapes
Un serveur de messagerie dépend davantage de son réseau que de son matériel : si le port 25 est bloqué ou si le DNS inverse (PTR) manque, les messages ne seront pas remis, quelle que soit la puissance du CPU. Ce guide vous mène dans un ordre strict, des vérifications préalables à la configuration, au DKIM à double clé, au TLS et à l'intégration des mobiles, jusqu'à votre première remise vérifiée.
Comment nextxch démarre et atteint la production
nextxch réunit ESMTP, IMAP4rev2, POP3, JMAP, Exchange ActiveSync, CalDAV/CardDAV, ManageSieve, SpamGuard, l'archive GoBD WORM, l'Admin Cockpit (/admin/) et le Webmail PWA nextxch (/mail/) dans un seul binaire sûr en mémoire (~40 à 90 Mo de RAM au repos). Rien n'est téléchargé depuis GitHub au premier démarrage, et aucun wrapper NSSM externe, Redis, Rspamd ni conteneur de webmail distinct n'est nécessaire.
Prérequis système et réseau (liste de contrôle avant installation)
Cochez les 6 points ci-dessous avant l'installation. Quatre d'entre eux se règlent en dehors du serveur, dans votre panneau d'hébergement ou DNS.
| Port | Protocole / service | Sens | Exigence & recommandation |
|---|---|---|---|
25 / TCP | ESMTP (MX de serveur à serveur + STARTTLS/DANE) | Entrant & sortant | Obligatoire - indispensable pour recevoir et remettre le courrier internet. |
443 / TCP | HTTPS (/admin/, /mail/, JMAP, ActiveSync, DAV, MTA-STS) | Entrant (+ sortant) | Obligatoire - Sert le Webmail, l'administration, Mobile Push, DAV, JMAP & ACME. |
465 / TCP | Soumission SMTPS (TLS implicite, RFC 8314) | Entrant | Obligatoire - Port de soumission privilégié en TLS implicite (RFC 8314). |
587 / TCP | Soumission SMTP (STARTTLS) | Entrant | Obligatoire - soumission STARTTLS standard pour Outlook, imprimantes & ERP. |
993 / TCP | IMAPS (IMAP4rev2 TLS implicite) | Entrant | Obligatoire - IMAP4rev2 chiffré avec push IDLE sans interrogation périodique. |
80 / TCP | HTTP (ACME HTTP-01 & Autoconfig) | Entrant | Recommandé (facultatif avec TLS-ALPN-01 ou un PFX de passerelle). |
4190 / TCP | ManageSieve (STARTTLS) | Entrant | Facultatif (l'éditeur Sieve visuel du Webmail fonctionne déjà via le port 443). |
143 / TCP | IMAP (STARTTLS) | Entrant | Facultatif (préférez le port 993 avec TLS implicite). |
995 / TCP | POP3S (TLS implicite) | Entrant | Facultatif (uniquement si POP3 est activé dans Admin > Réseau ; désactivé par défaut). |
110 / TCP | POP3 (STLS) | Entrant | Facultatif (préférez le port 995 en TLS implicite). |
| Taille du déploiement | CPU | RAM | Disque et base de données recommandée |
|---|---|---|---|
| 1 - 250 boîtes aux lettres | 2 vCPU | 1 - 2 Go | NVMe/SSD · SQLite WAL intégré + Zstandard (empreinte serveur d'environ 40 à 90 Mo). |
| 250 - 2 500 boîtes aux lettres | 4 vCPU | 4 - 8 Go | NVMe + S3 hybride en option · PostgreSQL 18 ou Microsoft SQL Server (2019-2025). |
| Cluster HA 2 500+ | 8+ vCPU | 16+ Go | Nœuds actif-actif sur PostgreSQL 18 ou SQL Server Always On + S3 Object Lock. |
Choisir votre plateforme & votre backend de stockage
Chaque plateforme exécute exactement les mêmes fonctionnalités. Choisissez la méthode de déploiement et le backend SQL adaptés à votre équipe d'exploitation.
| Plateforme | Méthode | Idéal pour |
|---|---|---|
| Windows Server 2019-2025 | .msi / install.ps1 | Service Windows SCM natif sans Docker ni NSSM ; idéal en complément de Microsoft SQL Server ou pour les migrations depuis hMailServer. |
| Linux (x86_64 & ARM64) | install.sh · .deb · systemd | Démon systemd léger, sans root, sur Debian, Ubuntu LTS, RHEL/Rocky ou serveurs ARM64. |
| Docker Compose | nextxch/server:1.0.0 | Piles de conteneurs reproductibles sur hôtes Linux, VM Proxmox, Synology, UGREEN et Unraid. |
| macOS & Kubernetes | launchd / Helm v3 | Serveurs de bureau Mac mini (launchd) ou clusters Kubernetes actif-actif horizontaux. |
Le tutoriel en 8 étapes : de l'installation au premier e-mail de test vérifié
Sélectionnez votre plateforme cible ci-dessous. Chacune des 8 étapes indique ce qu'elle fait, montre la commande exacte, confirme le résultat attendu et signale l'écueil le plus fréquent à l'endroit même où il survient.
Installer le service & ouvrir les ports du pare-feu
Télécharge le paquet de version, vérifie son empreinte SHA-256 et enregistre le service d'arrière-plan ainsi que le répertoire de données persistant.
# PowerShell (Admin): Downloads .msi (v1.0.0), verifies SHA-256 & launches setup irm https://nextxch.com/install.ps1 | iex # Ensure Windows Defender Firewall permits inbound mail & HTTPS ports New-NetFirewallRule -DisplayName "nextxch" -Direction Inbound ` -Protocol TCP -LocalPort 25,80,443,465,587,993,4190 -Action Allow
# Debian / Ubuntu / RHEL / macOS: Verifies SHA-256 & registers systemd unit curl -fsSL https://nextxch.com/install.sh | sudo bash # If UFW is enabled, allow required mail & HTTPS ports: sudo ufw allow 25,80,443,465,587,993,4190/tcp
# Pulls SHA-256-verified nextxch/server:1.0.0 & writes docker-compose.yml curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- \ --mode docker --domain firma.de --hostname mail.firma.de --admin admin@firma.de
Vérifier l'état du service & se connecter à /admin/
Vérifiez dans les journaux que les listeners démarrent proprement, puis connectez-vous à l'Admin Cockpit avec les identifiants administrateur définis lors de l'installation.
Get-Service nextxch # Open in browser: https://mail.firma.de/admin/ (or http://localhost/admin/)
sudo systemctl status nextxch sudo journalctl -u nextxch -n 30 --no-pager # Open in browser: https://mail.firma.de/admin/
docker compose ps docker compose logs --tail=30 nextxch # Open in browser: https://mail.firma.de/admin/
Configurer le domaine de messagerie & DKIM double clé en parallèle
Ouvrez Domaines & routage -> Gérer le domaine dans /admin/. nextxch génère automatiquement deux paires de clés DKIM parallèles : RSA-2048 (sélecteur s2026) et Ed25519 (sélecteur s2026ed).
Activer le certificat TLS (ACME Let's Encrypt ou PFX de passerelle)
Ouvrez Sécurité & certificats -> TLS & ACME. Dès que mail.company.com pointe vers votre hôte, demandez un certificat Let's Encrypt via HTTP-01 ou TLS-ALPN-01 (port 443), ou téléversez un certificat .pfx/.pem depuis votre pfSense/passerelle SSL.
Publier les enregistrements DNS & lancer la vérification DNS en direct
Copiez les enregistrements DNS calculés depuis le conseiller DNS intégré (ou exportez le fichier de zone BIND) : MX, A/AAAA, SPF, les deux sélecteurs DKIM (s2026 + s2026ed), DMARC, MTA-STS, TLS-RPT et, en option, DANE TLSA (3 1 1) et BIMI.
Durcir le serveur avant la production
Enregistrez une clé d'accès (WebAuthn) ou une 2FA TOTP sur votre compte administrateur, conservez les seuils SpamGuard à 4.5 / 9.0 avec le greylisting intelligent actif et activez l'archivage GoBD WORM sur les domaines commerciaux.
Créer la première boîte aux lettres & connecter les appareils mobiles en 30 secondes
Créez votre première boîte aux lettres utilisateur sous Comptes & listes, connectez-vous sur https://mail.company.com/mail/ et cliquez sur « Device Setup » pour générer un code QR ou un lien d'intégration en 1 clic compatible messageries, avec un profil iOS/macOS signé CMS ou Exchange ActiveSync.
Confirmer la remise entrante & sortante via Live MX Tester & Message Trace
Lancez Diagnostics & Logs -> Outbound MX & DANE Tester sur gmail.com ou une adresse externe, puis envoyez un véritable e-mail depuis /mail/ et répondez-y pour vérifier le flux bidirectionnel.
Fonctionnement derrière pfSense / OPNsense, passerelles SSL & proxys inverses
Lors d'un déploiement derrière pfSense, OPNsense, Sophos ou HAProxy, configurez ces trois paramètres pour des diagnostics précis et la conservation de l'IP réelle du client :
| Scénario | Configuration recommandée |
|---|---|
| Split-DNS / Hairpin-NAT | Configurez dans Unbound un remplacement d'hôte Split-DNS faisant pointer mail.company.com vers l'IP LAN interne, ou activez Pure NAT Reflection sur votre passerelle. |
| Protocole PROXY HAProxy | Activez le protocole PROXY v1/v2 limité au CIDR de votre proxy de confiance, afin que SPF et l'Auto-Ban voient la véritable IP distante et non l'IP de la passerelle. |
| Certificat de la passerelle | Synchronisez le certificat .pfx/.pem renouvelé de votre passerelle vers nextxch pour les ports 25/465/587/993 ; le SNI dynamique recharge à chaud les certificats mis à jour sans interruption. |
Dépannage par symptôme (de l'erreur à la solution immédiate)
Cliquez ci-dessous sur le symptôme constaté ou saisissez une partie du message d'erreur dans le champ de filtre rapide ci-dessus :
Le vérificateur de ports externe signale 'Bloqué / Délai dépassé' alors que le service fonctionne
TCP 25 / 465 / 993 Timeout
Le service ne parvient pas à se lier à un port au démarrage
Address already in use (:25 / :80 / :443)
Le courrier sortant vers Gmail, Microsoft 365 ou les grands FAI est rejeté
550-5.7.25 / 550-5.7.1 PTR missing
Le Live DNS Inspector ne trouve pas votre enregistrement TXT DKIM ou DMARC publié
NXDOMAIN s2026._domainkey
Let's Encrypt ACME n'émet pas de certificat ou le navigateur affiche un avertissement TLS
ACME challenge failed
L'iPhone ouvre un lien d'intégration WhatsApp / Teams sans lancer immédiatement l'installation du profil dans Réglages
iOS In-App WebView
Le conteneur Docker redémarre ou ne peut pas écrire sur le volume hôte monté
Access to path '/var/lib/nextxch' denied
Le client de messagerie ne peut pas se connecter en IMAP ou SMTP
535 Authentication failed / TLS required
Étapes suivantes : mises à niveau en 10 secondes, sauvegardes & migration
Une fois le flux de courrier bidirectionnel confirmé, votre serveur est prêt pour la production. Gardez ces trois procédures d'exploitation à portée de main :
# 1) In-place upgrade (preserves configuration, certificates & mailboxes): # Linux / macOS: curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update # Windows PowerShell (Administrator): irm https://nextxch.com/install.ps1 | iex # 2) Backup scope (only 2 paths): # - Config file: appsettings.Production.json (including license token) # - Data dir: Storage:DataDirectory (SQLite WAL / blobs / TLS certs) # or pg_dump / SQL Server backup when running an external DB cluster
Réponses rapides avant le premier démarrage
nextxch nécessite-t-il NSSM ou Docker Desktop sous Windows Server ?
Non. Contrairement aux serveurs qui nécessitent des wrappers de service NSSM sous Windows, nextxch s'enregistre nativement auprès du gestionnaire de contrôle des services Windows (SCM) via notre installateur .msi officiel, sans Docker Desktop, WSL2 ni Hyper-V.
nextxch a-t-il besoin d'un accès Internet au premier démarrage pour télécharger sa WebUI ou ses règles antispam ?
Non. L'ensemble de l'Admin Cockpit (/admin/), du Webmail PWA nextxch (/mail/), du moteur SpamGuard et de tous les listeners de protocoles est autonome dans le paquet vérifié par SHA-256, ce qui permet un démarrage 100 % hors ligne/isolé (air-gapped).
Pourquoi le DNS inverse (PTR) doit-il concorder avant l'envoi du premier e-mail de test ?
Les grands destinataires tels que Gmail, Microsoft 365 et les FAI européens vérifient que vos adresses IPv4 et IPv6 publiques se résolvent via PTR vers votre nom d'hôte SMTP EHLO exact (par ex. mail.company.com). L'absence d'enregistrements PTR IPv6 sur les hôtes dual-stack est la cause n° 1 des rejets 550-5.7.25.
Comment fonctionnent les mises à niveau sur place une fois le serveur en production ?
Exécutez curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update sous Linux/macOS ou irm https://nextxch.com/install.ps1 | iex sous Windows (ou utilisez la mise à jour en 1 clic dans /admin/). Votre appsettings.Production.json, vos certificats TLS, vos clés DKIM et votre stockage de courrier sont préservés automatiquement.