🛡️ Rspamd - Anti-spam
Configuração e gestão do Rspamd, sistema avançado de filtragem anti-spam e anti-phishing
📋 Índice
- Sobre o Rspamd
- Acesso ao Dashboard
- Configuração Inicial
- Estatísticas e Métricas
- Regras e Scores
- Bayesian Learning
- Whitelists e Blacklists
- Greylisting
- DKIM, SPF, DMARC
📊 Sobre o Rspamd
O Rspamd é um sistema de filtragem de email rápido e modular que substitui soluções como SpamAssassin.
Características Principais
| Característica | Descrição |
|---|---|
| Versão | 3.13.2 |
| Performance | Processa milhares de emails/segundo |
| Bayesian Filter | Aprendizagem automática HAM/SPAM |
| DKIM Signing | Assina emails automaticamente |
| SPF/DMARC Check | Valida autenticidade dos remetentes |
| Greylisting | Atraso temporário para combater bots |
| Neural Networks | Machine learning avançado |
| Web UI | Interface gráfica para gestão |
Arquitetura no Mailcow
┌──────────────────────────────────────────────────┐
│ POSTFIX (SMTP) │
│ Recebe email externo │
└────────────────┬─────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────┐
│ RSPAMD │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Bayesian │ │ SPF/DKIM │ │ RBL/URIBL│ │
│ │ Filter │ │ Check │ │ Lookup │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Greylisti │ │ Phishing │ │ Neural │ │
│ │ ng │ │ Detection│ │ Network │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ Score: -5 (HAM) ... 0 ... +15 (SPAM) │
└────────────────┬─────────────────────────────────┘
│
┌──────────┴──────────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ ACCEPT │ │ REJECT │
│ (Inbox) │ │ (Bounce) │
└──────────┘ └──────────┘
🌐 Acesso ao Dashboard
URL de Acesso
https://mail.fsociety.pt/rspamd
Configurar Password (Primeira Vez)
- Gerar hash da password:
cd /opt/mailcow-dockerized
# Gerar hash
sudo docker compose exec rspamd-mailcow \
rspamadm pw --encrypt -p 'SuaPasswordSegura123!'
Saída exemplo:
$2$xu7zj3ykd1cg5qy1emkhgrgw4j3c7r8g$...
- Adicionar ao override:
sudo nano data/conf/rspamd/override.d/worker-controller.inc
Conteúdo:
password = "$2$xu7zj3ykd1cg5qy1emkhgrgw4j3c7r8g$...";
enable_password = "$2$xu7zj3ykd1cg5qy1emkhgrgw4j3c7r8g$...";
- Reiniciar Rspamd:
sudo docker compose restart rspamd-mailcow
- Fazer login:
- URL: https://mail.fsociety.pt/rspamd
- Password:
SuaPasswordSegura123!
⚙️ Configuração Inicial
Estrutura de Configuração
/opt/mailcow-dockerized/data/conf/rspamd/
├── local.d/ # Configurações locais (preferencial)
├── override.d/ # Overrides totais
├── custom/ # Módulos customizados
└── rspamd.conf.local # Configuração principal
Configuração Recomendada
# Criar configurações locais
sudo nano data/conf/rspamd/local.d/options.inc
Conteúdo:
# DNS servers
dns {
nameserver = ["192.168.1.10:53", "1.1.1.1:53"];
timeout = 2s;
retransmits = 3;
}
# Local networks (não analisar)
local_addrs = "192.168.1.0/24, 10.0.0.0/24";
Ajustar Thresholds
sudo nano data/conf/rspamd/local.d/actions.conf
Valores FSociety:
actions {
# Score abaixo de -5: definitivamente não é spam
greylist = 4;
# Score 4-6: greylisting (atraso temporário)
add_header = 6;
# Score 6-15: adiciona header X-Spam: Yes
rewrite_subject = 8;
# Score 8-15: reescreve subject com [SPAM]
reject = 15;
# Score acima de 15: rejeita email
}
Aplicar:
sudo docker compose restart rspamd-mailcow
📈 Estatísticas e Métricas
Dashboard Web
Aceder a https://mail.fsociety.pt/rspamd → History
Métricas Atuais FSociety
| Métrica | Valor | Percentagem |
|---|---|---|
| Uptime | 1hr+ | - |
| Emails Scanned | 19 | 100% |
| Clean (No Action) | 12 | 63% |
| Greylist | 7 | 37% |
| Soft Reject | 0 | 0% |
| Rejected | 0 | 0% |
| Bayesian HAM | 2 | - |
| Bayesian SPAM | 0 | - |
Ver Estatísticas via CLI
# Stats gerais
sudo docker compose exec rspamd-mailcow \
rspamadm stats
# Stats de um período
sudo docker compose exec rspamd-mailcow \
rspamadm stats --reset
Logs em Tempo Real
# Ver logs do Rspamd
sudo docker compose logs -f rspamd-mailcow
# Filtrar por email específico
sudo docker compose logs rspamd-mailcow | grep "ryan.barbosa@fsociety.pt"
🎯 Regras e Scores
Como Funciona o Scoring
Cada email recebe um score baseado em múltiplas regras:
- Score negativo (-5 a 0): Email legítimo (HAM)
- Score baixo (0 a 4): Provavelmente legítimo
- Score médio (4 a 6): Suspeito (greylisting)
- Score alto (6 a 15): Provável spam (marcar)
- Score muito alto (15+): Definitivamente spam (rejeitar)
Ver Símbolos/Regras Ativas
# Listar todos os símbolos
sudo docker compose exec rspamd-mailcow \
rspamadm configdump -m symbols | less
# Ver configuração de módulo específico
sudo docker compose exec rspamd-mailcow \
rspamadm configdump dkim
Ajustar Score de Regra Específica
# Exemplo: aumentar peso de DKIM_ALLOW
sudo nano data/conf/rspamd/local.d/groups.conf
symbols {
"DKIM_ALLOW" {
weight = -2.0; # Default é -0.2
description = "Email com DKIM válido";
}
"SPF_FAIL" {
weight = 5.0; # Aumentar penalização
}
}
Principais Regras/Símbolos
| Símbolo | Score | Descrição |
|---|---|---|
| DKIM_ALLOW | -0.2 | DKIM signature válida |
| SPF_ALLOW | -0.2 | SPF pass |
| DMARC_POLICY_ALLOW | -0.5 | DMARC pass |
| BAYES_HAM | -3.0 | Bayesian classificou como HAM |
| BAYES_SPAM | +5.0 | Bayesian classificou como SPAM |
| RBL_SPAMHAUS | +2.0 | IP em RBL Spamhaus |
| PHISHING | +8.0 | Deteção de phishing |
| FORGED_RECIPIENTS | +5.0 | Recipientes falsificados |
🧠 Bayesian Learning
O filtro Bayesiano aprende com os emails classificados como HAM ou SPAM.
Estado Atual
HAM learned: 2 emails
SPAM learned: 0 emails
Treinar Manualmente
Via Web UI:
- Aceder a https://mail.fsociety.pt/rspamd
- Learning → Learn spam ou Learn ham
- Colar conteúdo do email
- Submeter
Via CLI:
# Aprender HAM (email legítimo)
sudo docker compose exec rspamd-mailcow \
rspamc learn_ham /path/to/email.eml
# Aprender SPAM
sudo docker compose exec rspamd-mailcow \
rspamc learn_spam /path/to/spam.eml
# Aprender de mailbox inteira
sudo docker compose exec rspamd-mailcow \
rspamc learn_ham /var/vmail/fsociety.pt/ryan.barbosa/Maildir/cur/*
Auto-learning
Rspamd aprende automaticamente com emails de alta/baixa confiança:
sudo nano data/conf/rspamd/local.d/classifier-bayes.conf
autolearn {
# Aprender como SPAM se score > 10
spam_threshold = 10.0;
# Aprender como HAM se score < -5
ham_threshold = -5.0;
}
Ver Estatísticas Bayesian
sudo docker compose exec rspamd-mailcow \
rspamadm statfile
📝 Whitelists e Blacklists
Whitelist de Domínios
sudo nano data/conf/rspamd/local.d/whitelist.conf
rules {
WHITELIST_DOMAIN {
valid_spf = true;
domains = [
"google.com",
"microsoft.com",
"estg.ipp.pt"
];
score = -10.0;
}
}
Whitelist de IPs
sudo nano data/conf/rspamd/local.d/ip_score.conf
servers = "127.0.0.1:6379"; # Redis
# Whitelist manual
whitelist {
"192.168.1.0/24" {
score = -10.0;
}
}
Blacklist de Remetentes
sudo nano data/conf/rspamd/local.d/multimap.conf
BLACKLIST_FROM {
type = "from";
map = "/etc/rspamd/custom/blacklist_from.map";
score = 15.0;
description = "Blacklist de remetentes";
}
# Criar ficheiro
sudo nano data/conf/rspamd/custom/blacklist_from.map
spam@example.com
/.*@spammer\.com$/
⏳ Greylisting
Greylisting adiciona um atraso temporário para combater spambots.
Estado Atual
Greylisted: 7 emails (37%)
Configurar Greylisting
sudo nano data/conf/rspamd/local.d/greylist.conf
# Tempo de greylisting
timeout = 300s; # 5 minutos
# Tempo de expiração
expire = 1d; # 1 dia
# Whitelist após N passagens bem-sucedidas
whitelist_after = 3;
# Não aplicar greylisting a IPs conhecidos
whitelist_ip = [
"192.168.1.0/24",
"10.0.0.0/24"
];
# Não aplicar a domínios confiáveis
whitelist_domains = [
"google.com",
"microsoft.com"
];
Ver Greylisted IPs
# Redis armazena greylisting
sudo docker compose exec redis-mailcow redis-cli
# Listar chaves greylisting
keys greylist:*
🔐 DKIM, SPF, DMARC
DKIM Signing
Rspamd assina automaticamente emails enviados:
# Ver chaves DKIM do domínio
sudo ls -la data/dkim/
# Ver chave pública
sudo cat data/dkim/fsociety.pt.dkim
Verificar DKIM em Email Enviado
# Headers devem conter:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=fsociety.pt; s=dkim; ...
SPF Check
# Rspamd verifica SPF automaticamente
# Ver resultado no header:
Received-SPF: pass
DMARC Reporting
sudo nano data/conf/rspamd/local.d/dmarc.conf
# Enviar relatórios DMARC
reporting {
enabled = true;
email = "postmaster@fsociety.pt";
from_name = "FSociety DMARC";
}
🎓 Informação Académica
| Campo | Informação |
|---|---|
| Instituição | ESTG - Instituto Politécnico do Porto |
| Unidade Curricular | Administração de Sistemas II |
| Ano Letivo | 2025/2026 |
| Autores | Ryan Barbosa, Hugo Correia, Igor Araújo |
**[⬅️ Anterior: Domínios e Mailboxes](/fsociety-infrastructure/08-mailcow/03-dominios-mailboxes.html)** | **[Índice](/fsociety-infrastructure/08-mailcow/)** | **[Próximo: Antivírus ➡️](/fsociety-infrastructure/08-mailcow/05-antivirus.html)**
Última atualização: Dezembro 2025