Skip to content

Protegendo Servidores de Mail ​

Serviços de mail estão entre os mais brute-forçados da internet. O EzyShield parseia logs do smtpd do Postfix e de login do Dovecot e traz regras padrão que banem brute force de credenciais, sondagem de open relay e abuso de conexão — com a mesma escada de strikes, supremacia da allowlist e dry-run por padrão de todo o resto.

O que é detectado ​

EventoEmitido porSignificado
smtp_auth_failparser postfixfalha de autenticação SASL LOGIN/PLAIN/…
smtp_relay_deniedparser postfixNOQUEUE: reject … Relay access denied (rejects comuns de usuário inexistente ficam mudos)
smtp_abuseparser postfix"too many errors after RCPT", "lost connection after AUTH"
imap_auth_failparser dovecotIMAP/POP3 (auth failed, N attempts …)
imap_probeparser dovecotDisconnected (no auth attempts …) — sondagem sem credenciais, sinal baixo

Regras embutidas (ajuste via drop-ins em rules.d, mesclados por nome):

RegraJanelaThresholdO que pega
mail_bruteforce5 min5adivinhação de credenciais SMTP + IMAP/POP3 (kinds combinados)
mail_relay_probe5 min3sondagem de open relay
mail_bruteforce_sustained1 h10falhas low & slow + abuso de conexão
mail_probe_aggressive——desabilitada por padrão — conta imap_probe; descomente no rules.yaml/rules.d se o ruído de sondas incomodar (maior risco de FP)

Postfix / Dovecot bare-metal ​

As units journald são as fontes recomendadas (funcionam independente de qual arquivo o syslog escreve):

yaml
# /etc/ezyshield/config.yaml
collectors:
  - kind: journald
    unit: postfix        # postfix@- em alguns Debians: use a unit que o systemctl mostra
  - kind: journald
    unit: dovecot

Alternativa por arquivo: mail.log/maillog roteia para o parser postfix automaticamente. Linhas do Dovecot no mesmo arquivo compartilhado precisam da própria fonte — a unit journald acima, ou um log_path = /var/log/dovecot.log dedicado no Dovecot mais:

yaml
  - kind: file
    path: /var/log/dovecot.log     # roteia para o parser dovecot pelo nome

Mailcow / stacks em container ​

Postfix e Dovecot no mailcow logam via docker. Aponte coletores docker para os containers e force o parser:

yaml
collectors:
  - kind: docker
    container: mailcowdockerized-postfix-mailcow-1
    parser: postfix
  - kind: docker
    container: mailcowdockerized-dovecot-mailcow-1
    parser: dovecot

(Os parsers desembrulham o formato json-file do docker automaticamente.)

Rollout ​

Igual a tudo no EzyShield: comece em dry-run, acompanhe ezyshield watch --kind dry_ban com um dia de tráfego real, allowliste suas próprias redes (policy.yaml ou ezyshield allow), então ezyshield arm. Um cliente de mail banido é recuperável — o primeiro strike dura 5 minutos.