Mailcow: Servidor de Email Self-Hosted com Docker para PME
O Mailcow é uma suite de email self-hosted baseada em Docker que reúne Postfix, Dovecot, SOGo, Rspamd, ClamAV e Nginx num único stack orquestrado. Para uma PME que precisa de controlo total sobre o seu email — sem depender de Google Workspace ou Microsoft 365 — o Mailcow oferece uma alternativa robusta, com webmail, anti-spam, DKIM/SPF/DMARC e administração via interface web.
Neste artigo
- Introdução ao Mailcow
- Instalar via Docker
- Configurar DKIM, SPF e DMARC
- Webmail SOGo e Rspamd
- Erros Comuns e Soluções
Introdução ao Mailcow
O Mailcow é um projecto open-source mantido pela comunidade, licenciado sob GPL v2, que empacota todos os componentes necessários para um servidor de email completo num conjunto de containers Docker geridos pelo Docker Compose. A arquitectura inclui:
- Postfix — MTA para envio e recepção de email (SMTP)
- Dovecot — IMAP/POP3 para acesso a caixas de correio
- SOGo — webmail com calendário e contactos partilhados
- Rspamd — anti-spam/anti-vírus com aprendizagem automática
- ClamAV — motor anti-vírus open-source
- Nginx — proxy reverso com TLS automático via Let’s Encrypt
- MySQL/MariaDB — base de dados de configuração e utilizadores
ℹ Requisitos mínimos: 6 GB RAM (recomendado 8 GB com ClamAV activo), 20 GB disco, 1 vCPU, um domínio com DNS apontado para o servidor, portos 25, 80, 443, 465, 587, 993 e 995 abertas no firewall. O servidor não deve partilhar o IP com outros serviços web — o Nginx do Mailcow ocupa os portos 80/443.
Instalar via Docker
A instalação do Mailcow passa por clonar o repositório oficial, ajustar o ficheiro mailcow.conf e iniciar os containers com Docker Compose.
Passo 1 — Clonar o repositório
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized.git
cd mailcow-dockerized
Passo 2 — Configurar mailcow.conf
Copia o ficheiro de exemplo e define o hostname (deve ser um subdomínio como mail.empresa.pt) e a timezone:
cp mailcow.conf.orig mailcow.conf
nano mailcow.conf
# Variáveis principais a editar:
MAILCOW_HOSTNAME=mail.empresa.pt
TZ=Europe/Lisbon
HTTP_PORT=80
HTTPS_PORT=443
SKIP_CLAMD=n
SKIP_SOGO=n
Passo 3 — Iniciar o stack
docker compose up -d
# Verificar se todos os containers estão a correr:
docker compose ps
A primeira inicialização descarrega todas as imagens e pode demorar 5-10 minutos. Quando terminar, acede a https://mail.empresa.pt e faz login com as credenciais por defeito: utilizador admin, palavra-passe moohoo. Altera imediatamente a palavra-passe de administrador.
⚠ Atenção: O porto 25 (SMTP) é frequentemente bloqueado por fornecedores cloud (AWS, Azure, Oracle Cloud). Verifica com o teu provider se o porto 25 está aberto antes de instalar. Se estiver bloqueado, considera usar um relay host SMTP (ex: Amazon SES, SendGrid) para envio.
Configurar DKIM, SPF e DMARC
Sem DKIM, SPF e DMARC configurados, o teu email será quase certamente classificado como spam pelo Gmail, Outlook e outros provedores. O Mailcow gera automáticamente as chaves DKIM — basta adicionares os registos DNS.
DKIM
No painel de administração do Mailcow, vai à Configuration → ARC/DKIM e copia a chave pública gerada. Adiciona um registo TXT no DNS do teu domínio:
# Nome: dkim._domainkey.empresa.pt
# Tipo: TXT
# Valor (exemplo):
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...
SPF
O registo SPF indica quais os servidores autorizados a enviar email em nome do domínio:
# Nome: empresa.pt
# Tipo: TXT
# Valor:
v=spf1 mx a -all
DMARC
O DMARC une DKIM e SPF e define a política de tratamento de emails que falham a validação:
# Nome: _dmarc.empresa.pt
# Tipo: TXT
# Valor:
v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=100; adkim=s; aspf=s
ℹ Dica: Começa com p=none em DMARC para monitorizar sem rejeitar emails. Analisa os relatórios agregados durante 1-2 semanas e depois muda para p=quarantine e finalmente p=reject.
Webmail SOGo e Rspamd
SOGo Webmail
O SOGo é o webmail integrado do Mailcow, acessível em https://mail.empresa.pt/SOGo. Oferece calendário, contactos e partilha de pastas entre utilizadores. Suporta ActiveSync para sincronização com Outlook mobile e outras apps. Para activar o ActiveSync, basta ir à Configuration → Mail Setup e garantir que o SOGo está a correr (não definir SKIP_SOGO=y).
Rspamd — Anti-spam e Filtros
O Rspamd substitui o SpamAssassin tradicional com uma abordagem baseada em scoring com aprendizagem automática. A interface web do Rspamd está disponível em https://mail.empresa.pt/rspamd (credenciais definidas no mailcow.conf na variável RSPAMD_PASS).
Para treinar o Rspamd com emails de spam e ham legítimo, usa os comandos:
# Treinar com spam (false positives de ham):
docker exec -it mailcowdockerized-rspamd-mailcow-1 rspamc learn_spam /path/to/spam.eml
# Treinar com ham (false positives de spam):
docker exec -it mailcowdockerized-rspamd-mailcow-1 rspamc learn_ham /path/to/ham.eml
No painel do Rspamd podes ajustar o spam threshold — o valor por defeito é 15 para rejeitar e 6 para marcar como spam. Para uma PME, recomenda-se começar com thresholds mais permissivos e ir ajustando conforme os falsos positivos diminuem.
Erros Comuns e Soluções
A tabela seguinte resume os problemas mais frequentes em instalações Mailcow para PME e as respectivas soluções:
| Problema | Causa | Solução |
|---|---|---|
| Emails não chegam ao Gmail | Falta DKIM/SPF/DMARC ou IP em blacklist | Configurar os 3 registos DNS; verificar IP em mxtoolbox.com; usar relay SMTP se IP for dinâmico |
| Porto 25 bloqueado | Provider cloud bloqueia SMTP outbound | Usar relay host (SES, SendGrid); configurar SMTP_RELAY_HOST no mailcow.conf |
| SOGo não sincroniza no Outlook | ActiveSync não activo ou certificado inválido | Confirmar SKIP_SOGO=n; renovar certificado TLS; verificar DNS aponta para o servidor |
| Containers reiniciam em loop | RAM insuficiente (<4 GB) ou portos ocupados | Aumentar RAM para 6+ GB; libertar portos 80/443 com netstat -tlnp |
| Rspamd marca tudo como spam | Threshold muito baixo ou sem treino | Aumentar threshold para 8 no painel Rspamd; treinar com ham legítimo |
| Certificado TLS não renova | Porto 80 fechado ao exterior | Abrir porto 80 no firewall para validação ACME do Let’s Encrypt |
| ClamAV consome muita RAM | Base de vírus pesada em servidor pequeno | Definir SKIP_CLAMD=y se RAM < 6 GB |
| Backup falha ou é lento | Volumetria de email elevada | Usar ./helper-scripts/backup_and_restore.sh com cron nocturno |
ℹ Actualizações: O Mailcow lança actualizações frequentes. Antes de actualizar, faz backup completo com ./helper-scripts/backup_and_restore.sh backup all e testa em ambiente de staging. O comando de actualização e ./update.sh dentro do directório mailcow-dockerized.
O Mailcow é uma das melhores opções self-hosted para PME que precisam de independência em relação aos grandes provedores cloud. Com Docker, a instalação é relativamente simples, e a gestão via interface web evita a complexidade tradicional de administrar Postfix e Dovecot manualmente. A configuração correcta de DKIM/SPF/DMARC é essencial para garantir a entregabilidade — sem ela, nem o melhor servidor de email evita a pasta de spam.
Artigos Relacionados
- Guia de Redes e Internet no kbase.pt
- Todos os artigos sobre Self-Hosted
- Artigos sobre Docker no kbase.pt
Fontes oficiais: Documentação do Mailcow em docs.mailcow.email, Rspamd em rspamd.com/doc, e Docker Compose em docs.docker.com/compose.