---
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](https://postal.atech.media) |
| **GitHub** | [postalserver/postal](https://github.com/postalserver/postal) |
| **License** | MIT |
| **Langage** | Ruby |
| **Étoiles GitHub** | 16 592 ⭐ |
| **Catégorie** | [[cat-email\|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é)

```yaml
# 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](app-mailcow)** — Suite mail complète (entrant + sortant + webmail)
- **[app-mailu](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

- [Documentation officielle](https://postal.atech.media)
- [GitHub postalserver/postal](https://github.com/postalserver/postal)
- [Wiki et guides](https://github.com/postalserver/postal/wiki)

## Pages Liées
- [[cat-email]] — Toutes les apps Email du catalogue
- [[app-mailcow]] — Alternative plus complète (entrant + sortant)
- [[app-mailu]] — Plus simple à déployer
- [[app-stalwart]] — Serveur mail moderne en Rust
- [[securisation-home-lab]] — Sécuriser un serveur mail
- [[recettes-docker-compose]] — Templates Docker
