exim-relay
Exim-Relay: Um Relay SMTP Simples com Docker e Exim4
9.9K
A imagem Docker aprendendolinux/exim-relay oferece uma solução leve, segura e altamente configurável para relay de e-mails baseado no Exim. Projetada para aplicações ou serviços internos, ela permite o envio de e-mails através de servidores SMTP externos, como Gmail, SendGrid ou Amazon SES. Construída sobre o Alpine Linux, a imagem mantém um tamanho reduzido (~20-30 MB), tornando-a ideal para ambientes de desenvolvimento, teste ou produção com recursos limitados.
Com suporte a autenticação SASL, configuração via variáveis de ambiente, atrasos configuráveis no envio de e-mails, desabilitação de IPv6, logs persistentes mapeados para o host, decodificação de assuntos MIME e configuração de fuso horário, esta imagem é perfeita para quem busca um relay SMTP eficiente sem a complexidade de um servidor de e-mail completo.
Imagem no Docker Hub: aprendendolinux/exim-relay:latest
Repositório GitHub: github.com/clubenaval/docker-postfix-relay
Autor: Henrique Fagundes, Analista de Infraestrutura GNU/Linux, Clube Naval
false.TZ (ex.: America/Sao_Paulo) para timestamps precisos nos logs.mynetworks, com suporte a IPv4 e IPv6.smtp.gmail.com:587 com App Password para Gmail)./var/log/exim para persistência de logs no host.tzdata incluído para suporte a configurações de timezone.Para começar, puxe a imagem pré-construída:
docker pull aprendendolinux/exim-relay:latest
Execute o container com configurações comuns, substituindo os valores pelos seus:
docker run -d \
--name exim-relay \
-p 25:25 \
-e SMTP_SERVER=smtp.gmail.com \
-e SMTP_PORT=587 \
-e [email protected] \
-e SMTP_PASSWORD=seu_app_password \
-e SERVER_HOSTNAME=mail.seudominio.com \
-e EXIM_DESTINATION_RATE_DELAY=10s \
-e EXIM_INET_PROTOCOLS=ipv4 \
-e EXIM_MAILLOG_FILE=/var/log/exim/mail.log \
-e DEBUG=yes \
-e LOG_SUBJECT=yes \
-e DECODE_SUBJECT=yes \
-e TZ=America/Sao_Paulo \
-v /srv/exim/logs:/var/log/exim \
aprendendolinux/exim-relay:latest
tail -f /srv/exim/logs/mail.log no host.-e TZ=America/Sao_Paulo garante que os timestamps nos logs reflitam o horário de São Paulo.Crie um arquivo docker-compose.yml para gerenciar o serviço (evite incluir credenciais sensíveis em repositórios públicos):
services:
exim-relay:
image: aprendendolinux/exim-relay:latest
container_name: exim-relay
restart: unless-stopped
ports:
- "25:25"
environment:
# Servidor SMTP externo (ex.: smtp.gmail.com)
- SMTP_SERVER=smtp.gmail.com
# Porta do servidor SMTP (587 para TLS, 465 para SSL)
- SMTP_PORT=587
# Usuário para autenticação SASL (ex.: seu e-mail)
- [email protected]
# Senha ou App Password para autenticação
- SMTP_PASSWORD=seu_app_password
# Hostname do servidor Exim (ex.: mail.seudominio.com)
- SERVER_HOSTNAME=mail.seudominio.com
# Atraso entre envios para o mesmo destino (ex.: 10s); use 'false' para desativar
- EXIM_DESTINATION_RATE_DELAY=false
# Protocolos de rede (ex.: ipv4 para desabilitar IPv6)
- EXIM_INET_PROTOCOLS=ipv4
# Caminho do arquivo de log no container
- EXIM_MAILLOG_FILE=/var/log/exim/mail.log
# Ativa logs de depuração (yes/no)
- DEBUG=no
# Registra o campo Subject nos logs (yes/no)
- LOG_SUBJECT=no
# Decodifica assuntos MIME nos logs (yes/no)
- DECODE_SUBJECT=no
# Fuso horário do container (ex.: America/Sao_Paulo)
- TZ=America/Sao_Paulo
volumes:
- /srv/exim/logs:/var/log/exim
networks:
default:
driver: bridge
Inicie o serviço:
docker-compose up -d
Para parar:
docker-compose down
Nota: Ajuste o caminho /srv/exim/logs para um diretório válido no seu host. Para maior segurança, use Docker Secrets para credenciais em ambientes de produção.
As configurações são feitas via variáveis de ambiente no docker run ou docker-compose.yml. Veja a lista completa:
smtp.gmail.com).mail.seudominio.com).SERVER_HOSTNAME se não especificado.false para desativar.ipv4 para desabilitar IPv6)./var/log/exim/mail.log).yes.192.168.0.0/16).Date) com yes.RelayTag: mytag).Subject nos logs com yes.LOG_SUBJECT=yes.From: (ex.: [email protected]).10485760 para 10MB).yes.America/Sao_Paulo).Iniciar o Container:
docker-compose up -d
Enviar um E-mail de Teste: Use mailx de outro container ou host na mesma rede:
echo "Corpo do e-mail de teste" | mail -s "Assunto de Teste" -r [email protected] [email protected]
Substitua [email protected] e [email protected] por endereços válidos. Certifique-se de que a porta 25 está acessível.
Verificar os Logs: No host, execute:
tail -f /srv/exim/logs/mail.log
Procure por status=sent para confirmar o envio. Se DECODE_SUBJECT=yes, os assuntos codificados aparecerão legíveis. Verifique se os timestamps refletem o fuso horário configurado (ex.: America/Sao_Paulo).
Confirmar o Fuso Horário: Verifique no container:
docker exec -it exim-relay date
O resultado deve mostrar a data/hora no fuso horário definido (ex.: Dom Out 12 18:30:00 -03 2025 para America/Sao_Paulo).
Localização dos Logs: Armazenados em /var/log/exim/mail.log no container e mapeados para o host. Se EXIM_MAILLOG_FILE não for definido, os logs vão para stdout (visível com docker logs exim-relay).
Modo Debug: Ative DEBUG=yes para logs detalhados, mostrando configurações aplicadas.
Verificar Configurações do Exim: Execute:
docker exec -it exim-relay exim -bP
Verifique configurações como primary_hostname, relay_to_domains e outras.
Confirmar Fuso Horário: Verifique com:
docker exec -it exim-relay cat /etc/timezone
Ou confira os timestamps nos logs.
Decodificação de Assuntos: Com DECODE_SUBJECT=yes e LOG_SUBJECT=yes, os assuntos codificados (ex.: MIME Quoted-Printable) são decodificados para facilitar a leitura.
SMTP_USERNAME, SMTP_PASSWORD e SMTP_PORT. Para Gmail, use um App Password.EXIM_INET_PROTOCOLS=ipv4 se a rede não suportar IPv6./var/log/exim e permissões no diretório do host.docker exec -it exim-relay exim -bP. Se EXIM_DESTINATION_RATE_DELAY=false, o atraso não será configurado.LOG_SUBJECT=yes e DECODE_SUBJECT=yes. Verifique erros no docker logs.TZ está definido (ex.: America/Sao_Paulo) e que tzdata está instalado. Verifique com docker exec -it exim-relay date.docker logs exim-relay para erros de configuração ou variáveis obrigatórias ausentes (SMTP_SERVER, SERVER_HOSTNAME).Reporte problemas em GitHub Issues.
Monitoramento de Logs: Use ferramentas como tail, less ou sistemas de monitoramento (ex.: ELK, Prometheus) para analisar /srv/exim/logs/mail.log. Procure por status=sent (sucesso) ou status=bounced (falhas).
Rotação de Logs: Configure rotação de logs no host (ex.: logrotate) para evitar consumo excessivo de disco.
Saúde do Container: Verifique o status com:
docker ps -f name=exim-relay
Atualizações: Monitore o Docker Hub para novas versões da imagem. Para atualizar:
docker pull aprendendolinux/exim-relay:latest
docker-compose down
docker-compose up -d
Backup dos Logs: Faça backup regular do diretório /srv/exim/logs para preservar históricos de envio.
Se você encontrar problemas ou tiver sugestões, abra um issue no GitHub. Para dúvidas gerais, confira a documentação completa no repositório ou entre em contato com a comunidade no Docker Hub.
Se esta imagem foi útil, considere dar uma ⭐ no repositório GitHub e compartilhar com outros! Sua contribuição ajuda a manter o projeto ativo e a melhorar a experiência para todos os usuários.
Content type
Image
Digest
sha256:74ca9efc1…
Size
154.2 MB
Last updated
9 months ago
docker pull aprendendolinux/exim-relay