MailCatcher avec Docker

Retour aux articles Dans #blog le 02/06/2016 par Emmanuel BALLERY

MailCatcher avec Docker

Mise à jour du 10/05/2017

@lgnap a publié une mise à jour de ce DockerFile qu'il a passé en Alpine ! Ça se passe ici :

https://lgnap.helpcomputer.org/2017/05/docker-mailcatcher-sur-alpine/.


Toutes les applications modernes envoient des emails. Nous traiterons dans cet article de la gestion des emails pendant une phase de développement. Pour les transmettre, il est nécessaire de configurer un serveur SMTP ou d'utiliser ses propres boites mails pour émettre nos emails (comme Gmail). Ces configurations sont longues, compliquées, voire inutilisables lorsque vous n'avez pas accès à internet (pour ceux qui aiment travailler dans le train).

Il existe une solution très efficace qui démarre sur votre machine un serveur SMTP autonome et qui permet d'intercepter les emails à envoyer par votre application. Elle expose aussi une interface web (directemment consultable via votre navigateur) pour lire ces emails et les débuguer.

https://mailcatcher.me/

Interface web de Mailcatcher

L'installation de Mailcatcher n'est malheureusement pas des plus simples, et je ne souhaite pas "polluer" ma machine avec des outils (en l'occurence Ruby) qui ne me sont pas utiles autrement que pour Mailcatcher. Nous installerons donc l'outil dans un Container Docker.

Script d'installation de Mailcatcher

Pour garder l'image Docker la plus petite possible, nous tâcherons de supprimer au maximum nos traces après les différentes installations. Pour commencer nous créons le fichier install.sh qui servira de script d'installation dans notre container Docker.

Création de l'image Docker

Notre fichier Dockerfile est le suivant :

  1. Nous nous basons sur ubuntu:14.04 ;
  2. Nous ajoutons le fichier install.sh dans notre image ;
  3. Nous éxécutons le fichier install.sh puis le supprimons ;
  4. Nous éxécutons mailcatcher

Le container expose les ports 1025 (SMTP) et 1080 (interface web).

Utilisation du container

Pour construire le container à partir de l'image nous utilisons la commande :

  • Dans notre cas, l'image est nommée eb-mailcatcher ;

Pour démarrer le container :

  • On pense à utiliser les ports 1080 et 1025 de notre image ;

Pour vérifier que tout fonctionne, dirigez-vous à l'URL suivante :

http://127.0.0.1:1080/

Configuration de votre application

Il suffit désormais de configurer votre librairie de transmission d'emails pour communiquer avec ce serveur SMTP. Si vous utilisez SwiftMailer dans Symfony par exemple, la configuration ressemble à la suivante :

 

Retour aux articles