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 [email protected]
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