Files
wiki/Catalogue-Self-Hosted/apps/app-mailpit.md
T
2026-06-09 18:40:21 +02:00

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

  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

🔗 Pages Liées