154 lines
5.3 KiB
Markdown
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)
|