Pular para o conteúdo
Rspamd 4.1.0: reestruturação de cache MX, novos metadados e melhorias de desempenho

Rspamd 4.1.0: reestruturação de cache MX, novos metadados e melhorias de desempenho

Descubra as principais novidades do Rspamd 4.1.0, incluindo cache MX em Redis, metadados avançados, seleção inteligente de upstreams e correções de segurança.

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 camada m e i.
  • 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_NONE substitui MX_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_check e 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() e task:get_metadata_field(key).
  • Limite de 80 KB nos cabeçalhos HTTP do v2 é contornado, já que os dados viajam no corpo multipart.
  • rspamc ganha 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() e task:get_symbol() aceitam tabelas {S1, …, Sn}.
  • Novas funções task:has_symbol_regexp(re) e task:get_symbol_regexp(re) permitem correspondência via expressões regulares.

Timeouts TCP por fase

  • rspamd_tcp.new agora aceita connect_timeout, read_timeout e write_timeout, além de callback on_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_RANDOM sã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) e bad_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, authenticated e received_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:

  1. Revisar as pontuações mx_check e atualizar regras que ainda utilizam símbolos antigos.
  2. Ajustar políticas de rate‑limit, caso utilizem múltiplos buckets.
  3. Avaliar a necessidade de ativar os perfis de stealth fingerprint para melhorar a detecção de redirecionamentos maliciosos.
  4. Testar a nova transmissão de metadados via /checkv3 em 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.

Via docs.rspamd.com. Você pode conferir o post original em inglês:

Changelog for Rspamd 4.1.0

Por · Última atualização: