5.3 KiB
5.3 KiB
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 |
| GitHub | axllent/mailpit |
| License | MIT |
| Langage | Go |
| Étoiles GitHub | 9 597 ⭐ |
| Catégorie | cat-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é)
# 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)
# 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 :
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
- UI web : http://localhost:8025 — voir tous les emails capturés, recherche, filtres
- API REST :
GET /api/v1/messages— liste des messagesGET /api/v1/message/{id}— contenu completDELETE /api/v1/messages— vider la boîte
- Tags : libeller les messages (
?tag=test) - WebSocket : l'UI se met à jour en temps réel
- HTML/CSS preview : visualiser le rendu responsive
- 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
🔗 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)