Segurança de E-mail & Automação

Mailguard: Proteção e Monitoramento de Fluxo de E-mails Corporativos

Arquitetura para sustentação de servidores Postfix MTA, validação estrita de registros SPF/DKIM/DMARC, relatórios agregados e mitigação automatizada em Python.

Carlos Felipe
Carlos Felipe Oliveira da Silva Senior Infrastructure & DevOps Engineer
Objetivo Principal: Garantir 100% de integridade no envio e recebimento de mensagens institucionais, protegendo o domínio contra falsificação de identidade (spoofing) e aplicando filtros rigorosos contra ataques de phishing direcionados.

1. O Cenário: Riscos de Reputação e Ataques BEC

O correio eletrônico continua sendo o principal vetor de entrada para invasões cibernéticas e golpes de BEC (Business Email Compromise). Servidores de e-mail mal configurados ou sem políticas DMARC em modo reject permitem que atacantes forjem a identidade corporativa para clientes e fornecedores.

2. Pilares de Hardening do Postfix MTA

A implementação do Mailguard reestruturou os parâmetros de segurança do Postfix:

  • Políticas Anti-Relay Rígidas: Configurações de smtpd_recipient_restrictions com checagem de Reverse DNS (rDNS/PTR) e verificação de HELO/EHLO com regras customizadas.
  • Criptografia Obrigatória em Trânsito (TLS): Imposição de TLS 1.3 com cifras seguras, impedindo ataques de downgrade (STARTTLS Stripping).
  • Rate Limiting Dinâmico: Controle por remetente/IP para evitar abuso no envio de mensagens caso uma conta seja temporariamente comprometida.

3. Esteira de Automação de Análise em Python

O módulo central do Mailguard foi desenvolvido em Python para inspecionar filas de entrega, processar relatórios agregados DMARC (RUA) e alertar sobre divergências de alinhamento:

# mailguard_inspector.py - Verificação e auditoria DMARC / SPF
import smtplib
import dns.resolver
from email.policy import default
from email.parser import BytesParser

def verify_domain_alignment(domain, sender_ip):
    """Valida se o IP de envio possui autorizacao explicita no registro SPF"""
    try:
        answers = dns.resolver.resolve(f"_dmarc.{domain}", "TXT")
        dmarc_record = [r.to_text() for r in answers if "v=DMARC1" in r.to_text()]
        
        spf_answers = dns.resolver.resolve(domain, "TXT")
        spf_record = [r.to_text() for r in spf_answers if "v=spf1" in r.to_text()]
        
        return {
            "domain": domain,
            "dmarc_enforced": "p=reject" in str(dmarc_record),
            "spf_valid": bool(spf_record)
        }
    except Exception as err:
        return {"error": str(err), "domain": domain}

4. Monitoramento Contínuo e Integração com SOC

Logs estruturados de conexões rejeitadas e anomalias de envio são encaminhados diretamente ao Graylog / OpenSearch. Qualquer tentativa de envio em massa não autorizada gera bloqueio imediato da conta e abertura de ticket operacional.

Resultados Obtidos

Reputação de domínio elevada à nota máxima nos principais provedores (Google, Microsoft), índice de entregabilidade acima de 99.8% e eliminação completa de campanhas de spoofing utilizando o domínio corporativo.