Files
2026-06-09 18:40:21 +02:00

132 lines
4.8 KiB
Markdown

---
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