Files
wiki/Catalogue-Self-Hosted/apps/app-postal.md
T
2026-06-09 18:40:21 +02:00

4.8 KiB


title: Postal created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, email, smtp, docker, ruby, auto-hebergement] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Email, https://github.com/postalserver/postal]

📧 Postal

Serveur SMTP open source conçu pour l'envoi d'emails transactionnels et marketing à grande échelle, avec webmail et API REST intégrée.

📋 Informations Générales

Champ Valeur
Site web postal.atech.media
GitHub postalserver/postal
License MIT
Langage Ruby
Étoiles GitHub 16 592
Catégorie cat-email
Mainteneur Atech Media (communautaire)

📝 Description

Postal est un serveur SMTP complet développé initialement par Atech Media pour ses propres besoins d'envoi massif (notifications, marketing). Il se positionne comme une alternative open source à SendGrid, Mailgun ou Amazon SES : une stack que l'on peut auto-héberger.

Forces :

  • Web UI complète pour gérer domaines, expéditeurs, routes, webhooks, bounces
  • API REST complète pour l'envoi programmatique
  • Multi-domaine natif (plusieurs organisations, pools IP)
  • Tracking des ouvertures, clics, bounces, complaints
  • File de messages robuste avec retry automatique

Faiblesses :

  • Moins riche qu'un SendGrid (pas de templates visuels drag-and-drop)
  • Nécessite de gérer soi-même la réputation IP (rDNS, SPF, DKIM, DMARC)
  • Pas de webmail entrant (uniquement sortant) — pour lire les emails reçus, il faut un autre serveur (IMAP)

Contexte : Le projet est un fork/community-continuation de atechmedia/postal, qui était le repo d'origine. Il a été activement maintenu, bien que le rythme ait ralenti ces dernières années. Il reste une option solide pour l'envoi.

🚀 Installation

Docker Compose (recommandé)

# docker-compose.yml
version: '3.8'
services:
  postal:
    image: ghcr.io/postalserver/postal:latest
    container_name: postal
    restart: unless-stopped
    environment:
      - POSTAL_HOSTNAME=postal.example.com
      - POSTAL_PROTOCOL=https
    volumes:
      - postal-data:/opt/postal/data
    ports:
      - "25:25"     # SMTP
      - "587:587"   # Submission
      - "465:465"   # SMTPS
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:8.0
    container_name: postal-mysql
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: change-me-root
      MYSQL_DATABASE: postal
      MYSQL_USER: postal
      MYSQL_PASSWORD: change-me-user
    volumes:
      - mysql-data:/var/lib/mysql

  redis:
    image: redis:7-alpine
    container_name: postal-redis
    restart: unless-stopped

volumes:
  postal-data:
  mysql-data:

Installation manuelle

L'installation manuelle est documentée sur le repo : Ruby >= 3.0, MySQL/MariaDB, RabbitMQ ou Redis, Node.js pour les assets. Le helper postal bootstrap initialise la base et crée le premier admin.

⚙️ Configuration

  1. DNS : Pointer un enregistrement A vers le serveur, créer un MX, configurer SPF/DKIM/DMARC pour chaque domaine expéditeur
  2. Reverse DNS (rDNS) : Indispensable pour que les mails arrivent en Inbox — demander à l'hébergeur ou le configurer sur le VPS
  3. Certificat TLS : Utiliser Let's Encrypt (ex. via Traefik ou Caddy en frontal)
  4. Credentials SMTP : Créer des credentials via la web UI pour chaque application tierce
  5. Monitoring : Connecter les webhooks Postal à Slack/Mattermost pour suivre bounces

🔗 Alternatives

  • app-mailcow — Suite mail complète (entrant + sortant + webmail)
  • app-mailu — Plus simple, full-stack entrant/sortant
  • SendGrid / Mailgun / Amazon SES — Services managés, pas d'auto-hébergé

🔒 Sécurité

  • Authentification SMTP obligatoire avec mots de passe dédiés par application
  • SPF/DKIM/DMARC strictement requis pour chaque domaine expéditeur
  • Webhooks signés pour vérifier l'origine des callbacks (bounces, complaints)
  • Web UI derrière HTTPS avec auth 2FA recommandée
  • Fail2ban sur le port 25/587 contre le brute-force de credentials

📚 Ressources

Pages Liées