Tutorial de Configuração
Passo 1: Preparação e Pré-requisitos
Primeiramente, disponibilizo abaixo as ferramentas e recursos necessários para esta instalação. Estamos utilizando uma VPS da Hostinger, que oferece descontos de até 20%:
Para este procedimento, é necessário ter o Docker na versão Swarm. Caso ainda não tenha, assista à aula gratuita abaixo para aprender a configurar:

Passo 2: Instalação do ACME (Opcional)
O acme.sh (criado pelo desenvolvedor Neil Pang) é um cliente desenvolvido inteiramente em linguagem shell (Bash/sh) que implementa o protocolo ACME. Ele é utilizado para automatizar a emissão, a renovação e a instalação de certificados SSL/TLS gratuitos, como os fornecidos pela Let’s Encrypt.
version: "3.8"
services:
acme:
image: neilpang/acme.sh:latest
command: daemon
environment:
- CF_Token=SUA_CHAVE_TOKEN
- TZ=America/Sao_Paulo
volumes:
- acme_certs:/acme.sh
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.role == manager
networks:
- traefik_public
volumes:
acme_certs:
external: true
networks:
traefik_public:
external: true
Observação: Veja como gerar o token passo a passo nos slides abaixo:






Passo 3: Configuração do DNS
Crie um subdomínio no Cloudflare do tipo A, apontando para o endereço IP do seu servidor.
version: '3.8'
services:
mailserver:
image: analogic/poste.io:latest
hostname: mail.SEU_DOMINIO.com.br # <--- ALTERE PARA SEU SUBDOMÍNIO DE E-MAIL
environment:
- TZ=America/Sao_Paulo
- HTTPS=OFF # Importante: Desliga o SSL interno do Poste.io para que o Traefik gerencie
- DISABLE_CLAMAV=TRUE # Opcional: Defina como FALSE se tiver mais de 4GB de RAM disponíveis. O ClamAV consome muita memória.
volumes:
- mail_data:/data
networks:
- traefik_public
- digital_network
ports:
# Portas de e-mail (acesso direto; não passam pelo roteador HTTP do Traefik)
# Usamos mode: host para garantir que o servidor identifique o IP real do remetente (importante para antispam)
- target: 25
published: 25
protocol: tcp
mode: host
- target: 587
published: 587
protocol: tcp
mode: host
- target: 993
published: 993
protocol: tcp
mode: host
- target: 465
published: 465
protocol: tcp
mode: host
deploy:
mode: replicated
replicas: 1
# O servidor de e-mail deve permanecer fixo em um nó (node) para manter a consistência do IP de saída
placement:
constraints:
- node.role == manager
labels:
- "traefik.enable=true"
- "traefik.docker.network=traefik_public"
# Roteamento para Webmail e Painel Admin (Porta 80 do container)
- "traefik.http.routers.mail-web.rule=Host(`email.SEU_DOMINIO.com.br`)" # <--- ALTERE O DOMÍNIO
- "traefik.http.routers.mail-web.entrypoints=websecure"
- "traefik.http.routers.mail-web.tls.certresolver=le"
- "traefik.http.services.mail-web.loadbalancer.server.port=80"
volumes:
mail_data:
external: true
name: mail_data # Crie este volume antes ou permita que o Portainer o crie automaticamente
networks:
traefik_public:
external: true
digital_network:
external: true


