Probando MAILHOG: Mailserver para localhost

por David Abad
Probando Mailhog

Mailhog es una herramienta que proporciona un servidor SMTP para entornos de desarrollo locales, de modo que todos los correos salientes se dirigen a una bandeja de entrada virtual accesible a través de una interfaz web. Esto es de gran utilidad para probar los flujos de emails en entornos locales, evitando envíos accidentales a direcciones de email reales.

Instalar Mailhog

A continuación se especifican los pasos a dar para instalar Mailhog en un entorno Debian/Ubuntu.

1. Instalar Golang:

sudo apt-get install golang-go
mkdir gocode
echo "export GOPATH=$HOME/gocode" >> ~/.profile
source ~/.profile

2. Instalar Mailhog:

go get github.com/mailhog/MailHog
sudo mv ~/gocode/bin/MailHog /usr/local/bin/mailhog

3. Crear el fichero “/etc/systemd/system/mailhog.service” con el siguiente contenido:

[Unit]
Description=MailHog service

[Service]
ExecStart=/usr/local/bin/mailhog \
  -api-bind-addr 127.0.0.1:8025 \
  -ui-bind-addr 127.0.0.1:8025 \
  -smtp-bind-addr 127.0.0.1:1025

[Install]
WantedBy=multi-user.target

4. Lanzar servicio Mailhog:

sudo systemctl start mailhog
sudo systemctl enable mailhog

5. Una vez instalado y ejecutado, Mailhog expone los siguientes servicios en nuestro localhost:

  • Servidor SMTP: localhost:1025
  • Web UI: localhost:8025

Usar Mailhog con PHP

Para que PHP sea capaz de utilizar el servidor SMTP de Mailhog, necesitaremos dar los siguientes pasos:

1. Instalar el cliente de correo MSMTP:

sudo apt-get install sendmail-bin sendmail msmtp

2. Crear un fichero de configuración “/etc/msmtp/msmtp.conf” para MSMTP:

account default
host 127.0.0.1
port 1025
protocol smtp
from test@dabad.es

3. Añadir un fichero de configuración PHP: /usr/local/etc/php/conf.d/php-mailhog.ini

sendmail_path = "/usr/bin/msmtp -C /etc/msmtp/msmtp.conf -t"

Usar Mailhog con Magento

Mailhog es perfectamente compatible con Magento sin necesidad de hacer ningún ajuste adicional. Una vez configurado PHP para que utilice el servidor SMTP de Mailhog, los correos de Magento llegarán correctamente a la bandeja de entrada virtual.

Mailhog en entornos Docker

Para incluir Mailhog en un contenedor de un entorno Docker, es posible partir de una imagen “alpine” básica e instalar el software necesario mediante un Dockerfile personalizado:

1. Crear un fichero Dockerfile para la instalación de Mailhog:

FROM alpine:3.4

RUN apk --no-cache add ca-certificates
RUN apk --no-cache add --virtual build-dependencies go git \
  && mkdir -p /root/gocode \
  && export GOPATH=/root/gocode \
  && go get github.com/mailhog/MailHog \
  && mv /root/gocode/bin/MailHog /usr/local/bin \
  && rm -rf /root/gocode \
  && apk del --purge build-dependencies

RUN adduser -D -u 1000 mailhog
USER mailhog
WORKDIR /home/mailhog
ENTRYPOINT ["MailHog"]

2. Añadir el nuevo contenedor para Mailhog en el fichero docker-compose.yml de nuestro proyecto:

mailhog:
    ports:
      - 8025:8025
    build:
      context: .
      dockerfile: <Ruta Dockerfile>

De este modo,el servidor SMTP de Mailhog estará accesible desde el resto de contenedores en la dirección: mailhog:1025.

Interfaz web

Una vez lanzado Mailhog, se habilitará una interfaz web en el puerto 8025 de nuestro localhost: http://localhost:8025 

Esta interfaz web mostrará una sencilla bandeja de entrada a la que se dirigirán todos los emails salientes, independientemente del destinatario real.

MailHog Web UI

MailHog Web UI

close

¡Hola! 👋

Déjanos tu email para recibir contenido interesante en tu bandeja de entrada, cada mes.

¡No hacemos spam!

Otros artículos