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

154 lines
5.3 KiB
Markdown

---
title: Mailpit
created: 2026-06-07
updated: 2026-06-07
type: app
tags: [catalogue, development, smtp, email, testing]
confidence: high
contested: false
sources: [https://selfh.st/apps/?tag=Development, https://github.com/axllent/mailpit]
---
# 💻 Mailpit
> **Serveur SMTP de test « catch-all » pour le développement** : intercepte les emails envoyés par vos apps en local, vous les visualise dans une UI web, sans jamais les envoyer au destinataire réel.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [mailpit.axllent.org](https://mailpit.axllent.org/) |
| **GitHub** | [axllent/mailpit](https://github.com/axllent/mailpit) |
| **License** | MIT |
| **Langage** | Go |
| **Étoiles GitHub** | 9 597 ⭐ |
| **Catégorie** | [[cat-development\|Development]] |
| **Note** | 100% gratuit, pas d'édition payante, binaire unique léger |
## 📝 Description
**Mailpit** est un **serveur SMTP de test** pour le développement local. Il se comporte comme un vrai serveur SMTP, mais **intercepte tous les emails** au lieu de les relayer. Les développeurs peuvent ensuite les consulter via une **UI web intégrée**, comparable à Mailtrap ou MailHog, mais :
- **Léger** : un seul binaire Go, ~10 Mo
- **Plus rapide** que MailHog (écrit en Go, pas en Go+JS)
- **UI moderne** : SPA, dark mode, aperçus HTML
- **API REST** pour intégration tests (vérifier qu'un mail a bien été reçu)
- **Multi-domaines** et **multi-comptes** (capture tout par défaut)
- **Support SMTP + HTTP** pour l'envoi depuis les apps
- **TLS, PLAIN, CRAM-MD5, LOGIN** : toutes les auth SMTP
**Cas d'usage typiques** :
- Développer en local une app qui envoie des emails (sign-up, notifications, factures)
- Tester les templates d'emails (HTML/CSS responsive)
- Vérifier qu'un email de reset password part bien (sans spammer les vrais utilisateurs)
- Tests d'intégration automatisés (API pour vérifier le contenu)
- **Binaire unique** : idéal pour CI/CD et dev local
**Différence avec MailHog** : Mailpit a une **UI plus moderne**, des **performances supérieures** (Go natif, pas de daemon séparé), une **API HTTP** native et le support de **l'auth SMTP**.
## 🚀 Installation
### Via Docker Compose (recommandé)
```yaml
# docker-compose.yml
version: '3.8'
services:
mailpit:
image: axllent/mailpit:latest
container_name: mailpit
restart: unless-stopped
ports:
- "1025:1025" # SMTP
- "8025:8025" # UI web
environment:
- MP_MAX_MESSAGES=5000
- MP_SMTP_AUTH_ACCEPT_ANY=1
- MP_SMTP_AUTH_ALLOW_INSECURE=1
volumes:
- mailpit-data:/data
networks:
- proxy
volumes:
mailpit-data:
networks:
proxy:
external: true
```
### Binaire standalone (rapide en local)
```bash
# macOS
brew install mailpit
# Linux
curl -L https://github.com/axllent/mailpit/releases/latest/download/mailpit-linux-amd64.tar.gz | tar xz
sudo mv mailpit /usr/local/bin/
# Lancer
mailpit
# UI: http://localhost:8025
# SMTP: localhost:1025
```
### Configuration de votre app
Exemple avec `.env` pour une app Laravel / Django / Node.js :
```bash
MAIL_MAILER=smtp
MAIL_HOST=localhost # ou `mailpit` si dans Docker
MAIL_PORT=1025
MAIL_USERNAME=*** # (optionnel, vide par défaut)
MAIL_PASSWORD=*** # (optionnel, vide par défaut)
MAIL_ENCRYPTION=null
```
## ⚙️ Configuration
1. **UI web** : http://localhost:8025 — voir tous les emails capturés, recherche, filtres
2. **API REST** :
- `GET /api/v1/messages` — liste des messages
- `GET /api/v1/message/{id}` — contenu complet
- `DELETE /api/v1/messages` — vider la boîte
3. **Tags** : libeller les messages (`?tag=test`)
4. **WebSocket** : l'UI se met à jour en temps réel
5. **HTML/CSS preview** : visualiser le rendu responsive
6. **Stockage** : en mémoire par défaut (fichier via `MP_DATABASE=/data/mailpit.db`)
## 🔗 Alternatives
- **MailHog** — L'ancêtre (Go), encore largement utilisé
- **Mailtrap.io** — Service SaaS gratuit (limité)
- **Smtp4dev** — Alternative .NET (Windows-friendly)
- **Mailcatcher** (Ruby) — Historique, simple, peu maintenu
- **Gmail SMTP + alias +** — Pas vraiment comparable, et dangereux en prod
- **Ethereal Email** (Nodemailer) — Test éphémère, pas d'UI
## 🔒 Sécurité
- **Mailpit ne doit JAMAIS être exposé publiquement** (contient potentiellement des données sensibles : tokens de reset, secrets…)
- **Par défaut, aucune authentification SMTP** : n'activez MP_SMTP_AUTH_* que si nécessaire
- **Si accès réseau** : bind sur 127.0.0.1 ou derrière VPN
- **Pas d'auth sur l'UI** : utiliser un reverse proxy avec auth si besoin
- **Données effacées au redémarrage** (par défaut, in-memory) — comportement souhaité en dev
## 📚 Ressources
- [Documentation officielle](https://mailpit.axllent.org/docs/)
- [GitHub axllent/mailpit](https://github.com/axllent/mailpit)
- [API Reference](https://mailpit.axllent.org/docs/api-v1/)
- [Configuration complète](https://mailpit.axllent.org/docs/configuration/)
## 🔗 Pages Liées
- [[cat-development]] — Catégorie Development
- [[app-traefik]] — Reverse proxy (ne pas exposer Mailpit !)
- [[recettes-docker-compose]] — Templates Docker
- [[securisation-home-lab]] — Bonnes pratiques
- [[app-gitea]] / [[app-gitlab]] — Forge Git (envoi de notifications mail)