A versão 4.1.0 do Rspamd, lançada recentemente, traz uma série de aprimoramentos que impactam diretamente a eficiência das verificações de MX, a forma como são enviados metadados nas requisições /checkv3 e a seleção de servidores upstream. As alterações visam reduzir latências de DNS, melhorar a observabilidade e oferecer maior flexibilidade para operadores.
Principais mudanças
Reestruturação do cache MX
- O antigo cache de domínio único foi substituído por um design de três camadas em Redis (
d:<domain> / m:<mxhost> / i:<ip>), permitindo que domínios que compartilham o mesmo host MX reutilizem entradas de camadamei. - Redução de consultas DNS/TCP ao zero para domínios que utilizam o mesmo MX (ex.: G‑Suite, M365, ESPs).
- Novo símbolo
MX_NONEsubstituiMX_NXDOMAIN/MX_MISSING; a sondagem foi dividida em conectividade limpa e banner SMTP completo, com suporte a saudação multilinha. - Recomenda‑se revisão das pontuações
mx_checke das regras que referenciam os símbolos antigos.
Metadados customizados no /checkv3
- Inserido um sub‑objeto headers nos metadados multipart, permitindo que
task:get_request_header()acesse campos personalizados. - O objeto completo de metadados fica disponível via
task:get_metadata()etask:get_metadata_field(key). - Limite de 80 KB nos cabeçalhos HTTP do v2 é contornado, já que os dados viajam no corpo multipart.
rspamcganha a opção repetível--metadata-header KEY=VALUE.
Composites dinâmicos
- Chave reservada em
{ ... }permite mapear composites de forma hot‑reloadable (arquivo, lista de URLs ou mapa assinado) usando a mesma sintaxe dos composites estáticos. - Reloads registram novos nomes no symcache, removem nomes antigos como stubs e trocam a geração atômica, garantindo consistência nas tarefas em andamento.
Busca avançada de símbolos
task:has_symbol()etask:get_symbol()aceitam tabelas{S1, …, Sn}.- Novas funções
task:has_symbol_regexp(re)etask:get_symbol_regexp(re)permitem correspondência via expressões regulares.
Timeouts TCP por fase
rspamd_tcp.newagora aceitaconnect_timeout,read_timeoutewrite_timeout, além de callbackon_error(err, conn)para falhas pré‑conexão (DNS, socket, SSL).- Chamadores legados mantêm o contrato de timeout único.
Diagnóstico de scans travados
- Em timeout de tarefa, o log exibe resumo agrupado de eventos assíncronos pendentes (DNS, Redis, HTTP, fuzzy, TCP) com a regra que causou a parada, substituindo a mensagem genérica “forced processing”.
Seleção de upstreams consciente de carga
- Implementado o algoritmo Power of Two Choices (P2C) e cálculo de latência EWMA por upstream, com half‑life configurável.
- Reinício gradual (linear slow start) evita picos de “thundering‑herd”.
- Chamadores de
RSPAMD_UPSTREAM_RANDOMsão migrados automaticamente para P2C.
SRV por alvo individual
- Cada alvo de resposta SRV recebe sua própria estrutura de upstream, com orçamento de erro, peso e latência próprios.
- Pesos SRV são respeitados e falhas de um único alvo não comprometem todo o cluster.
Resolução DNS adiada
- Falhas DNS temporárias na carga de configuração não removem o upstream nem abortam a inicialização.
- Hostnames não resolvíveis ficam pendentes e são re‑tentados com back‑off exponencial, permitindo que o daemon se recupere sem reinício.
Classificação MX e mapas de confiança
- IPs de MX são classificados como PUBLIC, LOCAL ou BOGON; apenas públicos são sondados.
- Introduzidos mapas
bad_mxs(glob) ebad_ips(radix) com multiplicadores de peso opcionais. - Verificações podem ser feitas em envelope, reply‑to e MIME‑from, com toggles
check_authorized/check_local.
Outros aprimoramentos relevantes
- Anchor symbols para serviços externos, garantindo dependência estável.
- Cache de redirecionamento de URL com suporte a múltiplos hops via Redis.
- Perfis de stealth fingerprint (Chrome, Edge, Firefox, Safari) substituem lista plana de User‑Agents.
- Suporte a glob patterns em
redirector_hosts_map. - Opção de usar GET em vez de HEAD para URLs específicas.
- Headers HTTP preservam ordem de inserção via
RSPAMD_HTTP_FLAG_ORDERED_HEADERS. - Logs para Elasticsearch agora incluem Reply‑To, IPs recebidos, metadados por URL e módulo que forçou o resultado.
- Presets de colunas no ClickHouse facilitam a criação de schemas.
- Novos seletores:
fuzzy_digest,fuzzy_shingles,authenticatedereceived_count. - Reconhecimento de 32 tags HTML5 modernas, permitindo análise mais profunda de conteúdo.
- Throttling para relatórios DMARC, ordenação de
autolearnstats, parsers Lua para feedback DSN/ARF, loader estruturado para seletores/custom maps, scanner eXpurgate, dumps de memória por worker, configuração amigável a containers e carregamento automático de modelo FastText.
Correções de bugs e segurança
- Visibilidade de composites corrigida para que regras post‑filter sejam exibidas corretamente.
- Ratelimit multi‑bucket agora gera chaves Redis distintas por bucket.
- Canonicalização de mailto: URLs
mailto:e endereços soltos são tratados como a mesma entidade. - Limite de userinfo ampliado para 16 KiB, evitando rejeição de URLs longas usadas em phishing.
- Falsos positivos em domínios nus ajustados para exigir TLD com mínimo 3 caracteres.
- Ordem determinística de cabeçalhos ARC para compatibilidade com validadores como O365.
- Mapeamento DKIM permfail agora reporta
dkim=permerror. - Suporte a EAI Message‑ID corrige falsos positivos em mensagens SMTPUTF8.
- Vários vazamentos de memória em módulos fuzzy, TCP e Redis foram sanados.
- Segurança S/MIME: correções evitam null deref e limites de recursão que poderiam causar DoS.
Impacto para administradores
A migração para o Rspamd 4.1.0 traz ganhos de desempenho notáveis, especialmente em ambientes que utilizam múltiplos domínios com o mesmo provedor de e‑mail. A nova arquitetura de cache MX reduz drasticamente a carga de DNS, enquanto a seleção inteligente de upstreams melhora a resiliência a falhas de rede. Administradores devem:
- Revisar as pontuações
mx_checke atualizar regras que ainda utilizam símbolos antigos. - Ajustar políticas de rate‑limit, caso utilizem múltiplos buckets.
- Avaliar a necessidade de ativar os perfis de stealth fingerprint para melhorar a detecção de redirecionamentos maliciosos.
- Testar a nova transmissão de metadados via
/checkv3em integrações personalizadas.
Com as correções de segurança relacionadas ao S/MIME, a versão também eleva o nível de robustez contra ataques de negação de serviço.
Referência: Para a lista completa de alterações, consulte o changelog oficial em https://docs.rspamd.com/changelog/4.1.0.