Tutoriel

Postal : plateforme SMTP self-hosted pour agences

E-mail professionnel9 min de lecture7 étapes

Un client se plaint que ses emails de confirmation disparaissent, un autre voit ses factures PDF partir en spam — et vous n'avez aucun log pour comprendre ce qui s'est passé. Postfix fait son travail en silence, mais c'est précisément le problème : c'est un relais aveugle, sans interface, sans statistiques, sans gestion des bounces. Postal change l'équation. C'est une plateforme SMTP complète — interface web multi-utilisateurs, API REST, webhooks de bounce, statistiques par domaine et par serveur d'envoi — que vous déployez sur un seul VPS pour gérer l'intégralité du portefeuille client de votre agence, sans dépendre de Mailgun, Postmark ou SendGrid.

Sommaire· Pourquoi les agences ont besoin d'une plateforme SMTP1/9
  1. 01Pourquoi les agences ont besoin d'une plateforme SMTP
  2. 02Ce que Postal apporte à votre agence
  3. 03Prérequis : VPS, port 25 et IPv4 dédiée
  4. 04Installation de Postal sur VPS
  5. 05Configuration d'un domaine expéditeur
  6. 06DMARC : la dernière pièce de la délivrabilité
  7. 07Gestion des bounces et statistiques
  8. 08Postal vs solutions SaaS vs Postfix relay
  9. 09Une infrastructure email que vous contrôlez

Pourquoi les agences ont besoin d'une plateforme SMTP

Gérer l'envoi email d'un portefeuille client avec Postfix, c'est naviguer sans instruments. Le MTA fait passer le message ou non, mais il ne dit pas pourquoi un bounce se produit, quelle campagne a dégradé la réputation d'un domaine, ni quel client consomme le plus de ressources d'envoi.

Pour une agence qui gère 10, 20 ou 50 domaines clients, cette opacité est un risque opérationnel direct. Un seul client mal configuré peut entraîner la mise en liste noire de l'IP partagée et pénaliser l'ensemble du portefeuille. Et lorsque le client appelle pour signaler un problème, vous n'avez rien à lui montrer.

Postal résout ce problème en ajoutant une couche de contrôle complète au-dessus du pipeline SMTP.

Ce que Postal apporte à votre agence

  • Interface web multi-serveurs : créez un serveur d'envoi isolé par client ou par projet, avec ses propres credentials SMTP et API.
  • Statistiques par domaine : taux de livraison, bounces, délivrabilité et volume d'envoi — par domaine expéditeur, par période, exportables.
  • Gestion des bounces en temps réel : chaque message retourné est enregistré, catégorisé (hard/soft), consultable dans l'interface et transmis via webhook à votre application.
  • API REST et webhooks : intégrez Postal à votre CRM, votre plateforme e-commerce ou votre outil de facturation — un endpoint d'envoi, des événements en retour.
  • Files de messages : les envois sont mis en file d'attente et traçables jusqu'à l'accusé de réception ou l'erreur finale, sans boîte noire.
  • Isolation des clients : chaque serveur Postal a ses propres IP pools, sa propre réputation et ses propres limites — un client en difficulté n'affecte pas les autres.
  • Licence MIT : code source ouvert, aucun coût par email, aucune dépendance à un prestataire tiers.

Prérequis : VPS, port 25 et IPv4 dédiée

Postal v3.3.7 s'installe via Docker. Les prérequis officiels sont les suivants :

Ressources : au moins 2 vCPU et 4 Go de RAM. Pour un volume supérieur à 50 000 emails par jour, 8 Go sont recommandés. Prévoir au moins 25 Go de stockage SSD — les logs de messages peuvent croître rapidement selon la durée de rétention configurée.

Système d'exploitation : Ubuntu 22.04 ou Ubuntu 24.04 LTS avec Docker Engine et le plugin Docker Compose.

Base de données : MariaDB 10.6 ou supérieur. MySQL n'est explicitement pas supporté. Le paramètre innodb_log_file_size doit être configuré à au moins 10 fois la taille maximale d'un message.

Port 25 : c'est le point critique. Le port 25 outbound doit être ouvert pour que Postal puisse livrer les messages aux serveurs destinataires. De nombreux hébergeurs cloud le bloquent par défaut — vérifiez que votre VPS dispose d'une IPv4 dédiée et d'un port 25 débloqué avant de commencer l'installation.

rDNS : le reverse DNS de votre IPv4 doit pointer vers votre hostname Postal (ex. postal.votre-agence.com). Un PTR absent ou incorrect est la première cause de rejet par les grands fournisseurs de messagerie.

Installation de Postal sur VPS

  1. Préparer le serveur et installer Docker

    Connectez-vous en root sur votre VPS Ubuntu 24.04, mettez à jour les paquets, puis installez Docker Engine et le plugin Compose :

    apt update && apt upgrade -y
    curl -fsSL https://get.docker.com | sh
    docker --version && docker compose version

    Vérifiez que le port 25 est bien ouvert en sortie depuis votre serveur : nc -zv smtp.gmail.com 25. Si la connexion échoue, contactez votre hébergeur pour le débloquer.

  2. Configurer le DNS de votre serveur Postal

    Avant le bootstrap, créez les enregistrements DNS pour le domaine de votre installation Postal (ex. postal.votre-agence.com) :

    - Enregistrement A : postal.votre-agence.com → IP de votre VPS
    - rDNS (PTR) : configurez-le dans votre espace client pour que votre IP pointe vers postal.votre-agence.com
    - SPF du domaine infrastructure : v=spf1 ip4:<IP_VPS> ~all

    Attendu la propagation DNS (15 à 30 minutes) avant de continuer.

  3. Bootstrapper la configuration Postal

    Téléchargez l'image Postal et exécutez le bootstrap pour générer les fichiers de configuration :

    docker pull ghcr.io/postalserver/postal:latest
    mkdir -p /opt/postal/config
    docker run --rm -v /opt/postal/config:/config \
      ghcr.io/postalserver/postal:latest \
      postal bootstrap postal.votre-agence.com

    Cette commande génère /opt/postal/config/postal.yml (configuration principale) et signing.key (clé de signature JWT). Ouvrez postal.yml et renseignez les credentials MariaDB, le SMTP de notification et l'URL publique de votre installation.

  4. Démarrer MariaDB et initialiser la base

    Lancez un conteneur MariaDB dédié (ou utilisez une instance existante), puis initialisez le schéma Postal :

    docker run -d --name postal-mariadb \
      -e MYSQL_ROOT_PASSWORD=<mot_de_passe> \
      -e MYSQL_DATABASE=postal \
      --restart always mariadb:10.11
    
    docker run --rm -v /opt/postal/config:/config \
      --network host \
      ghcr.io/postalserver/postal:latest \
      postal initialize

    Cette étape crée les tables, les index et la configuration initiale en base.

  5. Créer le premier utilisateur admin

    Créez votre compte administrateur pour accéder à l'interface web :

    docker run --rm -v /opt/postal/config:/config \
      --network host \
      ghcr.io/postalserver/postal:latest \
      postal make-user

    Saisissez l'adresse email, le nom et le mot de passe de l'administrateur. Ces identifiants permettront de se connecter à https://postal.votre-agence.com.

  6. Démarrer Postal et configurer le reverse proxy

    Lancez tous les services Postal (web, workers, SMTP) :

    docker run -d --name postal \
      --restart always \
      --network host \
      -v /opt/postal/config:/config \
      ghcr.io/postalserver/postal:latest \
      postal start

    Postal expose l'interface web sur le port 5000. Placez un reverse proxy (Caddy ou nginx) devant pour terminer le TLS. Exemple minimal avec Caddy :

    docker run -d --name postal-caddy \
      --restart always --network host \
      -v /opt/postal/config/Caddyfile:/etc/caddy/Caddyfile \
      caddy:latest

    Accédez à https://postal.votre-agence.com et connectez-vous avec les identifiants créés à l'étape précédente.

  7. Créer une organisation et un premier serveur d'envoi

    Dans l'interface Postal, créez une organisation (votre agence), puis un serveur d'envoi pour votre premier client. Chaque serveur dispose de ses propres credentials SMTP, de sa propre clé API et de ses propres domaines expéditeurs — c'est l'unité d'isolation par client.

    Notez le nom d'hôte SMTP, le port (25, 465 ou 587 selon la configuration) et les credentials générés : ce sont les informations à transmettre à l'application cliente ou à configurer dans son panel d'envoi.

Configuration d'un domaine expéditeur

Dans chaque serveur d'envoi Postal, ajoutez les domaines depuis lesquels vos clients enverront des emails. Pour chaque domaine, Postal génère automatiquement une paire de clés RSA 1024 bits et un sélecteur DKIM unique (format postal-XXXXXX._domainkey).

Les enregistrements DNS à publier pour chaque domaine client :

SPF — ajoutez include:spf.postal.votre-agence.com dans le TXT apex du domaine :

v=spf1 include:spf.postal.votre-agence.com ~all

DKIM — publiez la valeur TXT affichée dans l'interface au sous-domaine généré :

postal-XXXXXX._domainkey.domaine-client.com  TXT  "v=DKIM1; k=rsa; p=<clé publique>"

Return Path (recommandé) — un CNAME pour améliorer le suivi des bounces :

psrp.domaine-client.com  CNAME  psrp.postal.votre-agence.com

Postal vérifie automatiquement ces enregistrements toutes les heures et signale dans l'interface si l'un d'eux est manquant ou incorrect. Le bouton Vérifier mes enregistrements permet une vérification manuelle immédiate.

DMARC : la dernière pièce de la délivrabilité

SPF et DKIM en place, ajoutez une politique DMARC sur chaque domaine client pour signaler aux récepteurs la conduite à tenir en cas d'échec d'alignement. Commencez en mode surveillance (p=none) pour collecter les rapports sans risque de blocage, puis durcissez progressivement vers p=quarantine et p=reject :

_dmarc.domaine-client.com  TXT  "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"

L'attribut rua envoie les rapports agrégés quotidiens à votre adresse — vous y verrez quelles sources envoient en votre nom, légitimes ou non. Postal lui-même produit des emails alignés SPF + DKIM : sur vos domaines correctement configurés, le DMARC passera dès le premier jour.

Gestion des bounces et statistiques

C'est la différence la plus visible entre Postal et un Postfix brut. Dans l'onglet Messages de chaque serveur d'envoi, chaque email envoyé est tracé avec son statut : Sent, Delivered, SoftFail, HardFail, Bounced.

Lorsqu'un bounce est détecté, Postal :
1. Enregistre la raison exacte du rejet dans le journal du message (ex. 550 5.1.1 The email account does not exist)
2. Met à jour le statut de l'envoi dans l'interface
3. Déclenche un événement webhook MessageBounced vers l'endpoint HTTP que vous avez configuré

Le journal d'un bounce visible dans l'interface ressemble à :

[2026-10-15 09:14:22] Delivery attempt to mx1.example.com (203.0.113.10:25)
[2026-10-15 09:14:22] << 550 5.1.1 <[email protected]> User unknown
[2026-10-15 09:14:22] Message marked as HardFail (permanent)

Les statistiques par domaine regroupent, sur des fenêtres glissantes (24 h, 7 j, 30 j) : volume envoyé, taux de livraison, taux de bounce, taux de rejet par les filtres anti-spam. Ces données permettent de détecter un problème de délivrabilité avant que le client ne le remarque lui-même.

Postal vs solutions SaaS vs Postfix relay

Faites défiler le tableau

CritèrePostal (self-hosted)Mailgun / PostmarkSMTP relay Postfix
VisibilitéInterface complète : journal par message, bounce log, statistiques par domaineDashboard SaaS avec logs 30 jours (selon plan)Aucune interface — logs système uniquement
CoûtVPS + temps d'administration (aucun coût par email)Facturation à l'envoi (environ 0,80 $ à 1,20 $ pour 1 000 emails)VPS uniquement (aucun coût logiciel)
ContrôleTotal : IP, rétention, politique de bounce, isolation par clientPartiel : politiques imposées par le prestataire, IP mutualisées par défautComplet sur le routage, zéro sur la visibilité
Limite d'envoiLimitée par les ressources du VPS et la réputation des IP — scalableQuotas selon le plan, montée en charge facturéeLimitée par le VPS — pas de gestion native des quotas par domaine

Une infrastructure email que vous contrôlez

Postal est l'outil que les agences cherchent quand elles réalisent que Postfix ne suffit plus à opérer un portefeuille client. La plateforme apporte la visibilité qui manque — logs structurés, bounces tracés, statistiques par domaine — sans les contraintes tarifaires et les dépendances des SaaS.

Un VPS avec 2 vCPU, 4 Go de RAM et une IPv4 dédiée suffit pour démarrer. Le port 25 débloqué et un rDNS correctement configuré sont les deux prérequis que beaucoup d'hébergeurs ne remplissent pas d'office — vérifiez-les avant de commander.

Les articles SMTP relay Postfix sur VPS et SPF, DKIM et DMARC complètent ce guide pour couvrir la délivrabilité dans son ensemble.

Un VPS pour votre plateforme SMTP

Postal exige au minimum 2 vCPU et 4 Go de RAM. Nos VPS incluent une IPv4 dédiée, l'accès root, le rDNS configurable et le port 25 débloqué sur demande — les prérequis exacts d'une installation Postal en production.

Besoin d'aide ?

Parcourez notre centre d'aide et notre FAQ, ou contactez notre équipe — rappel, WhatsApp ou e-mail. Support en français, anglais et arabe.

Écrire sur WhatsApps'ouvre dans un nouvel onglet