5 - Mailpit
O Mailpit é um servidor SMTP de desenvolvimento que captura e-mails enviados pelas suas aplicações e os exibe numa interface web. Em vez de sair para a internet (ou cair em spam), tudo fica visível num só lugar, com busca, visualização de HTML/texto, anexos e reenvio. É a forma mais segura e previsível de validar templates, URLs, cabeçalhos e conteúdo de e-mails durante o desenvolvimento.
Por que centralizar?
- Padrão único de SMTP para todas as stacks: menos variação, menos erro.
- Observabilidade: todo mundo testa, você enxerga tudo em uma UI.
- Persistência: caixa única com histórico (SQLite) para auditoria e retrabalho.
- Zero risco: nada sai para o mundo real (não envia para destinatários externos).
Diretórios
sudo mkdir -p \
/srv/docker/core/mailpit \
/srv/docker/volumes/mailpit/data \
/srv/docker/.envs
Env
sudo tee /srv/docker/.envs/mailpit.env > /dev/null <<'EOF'
TZ=America/Fortaleza
MP_DATABASE=/data/mailpit.db
MP_MAX_MESSAGES=5000
MP_LABEL=Mailpit Central
MP_UI_BIND_ADDR=0.0.0.0:8025
MP_SMTP_BIND_ADDR=0.0.0.0:1025
# Para proteger a UI, descomente e troque a senha:
# MP_UI_AUTH=admin:mailpit@wsl
EOF
Docker Compose
sudo tee /srv/docker/core/mailpit/docker-compose.yml > /dev/null <<'EOF'
# Maintainer: Maurício de Lima <mauricio@uai21.com>
# Stack: Mailpit central (SMTP de testes) — wsl.lab.local
# Criado: 2025-08-09
version: "3.8"
services:
mailpit:
image: axllent/mailpit:latest
env_file:
- /srv/docker/.envs/mailpit.env
volumes:
- /srv/docker/volumes/mailpit/data:/data
networks:
- traefik
ports:
- "1025:1025" # SMTP para as apps apontarem p/ mail.wsl.lab.local:1025
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik"
- "traefik.http.routers.mailpit.rule=Host(`mail.wsl.lab.local`)"
- "traefik.http.routers.mailpit.entrypoints=websecure"
- "traefik.http.routers.mailpit.tls=true"
- "traefik.http.services.mailpit.loadbalancer.server.port=8025"
networks:
traefik:
external: true
EOF
Testar o serviço
{ printf 'HELO wsl.lab.local\r\n'; \
printf 'MAIL FROM:<no-reply@wsl.lab.local>\r\n'; \
printf 'RCPT TO:<teste@exemplo.local>\r\n'; \
printf 'DATA\r\n'; \
printf 'Subject: Mailpit test via Traefik\r\n'; \
printf '\r\nHello from Mailpit!\r\n.\r\n'; \
printf 'QUIT\r\n'; } | nc 127.0.0.1 1025
No comments to display
No comments to display