24 novembro, 2006
Usando activamente o Greylistd

O pacote greylistd da distribuição Debian é muito fácil de utilizar.
A instalação que fiz, estável, incluiu o Exim4 e posteriormente o greylistd.
Neste artigo foco as partes de configuração dos triplets, assumindo que o leitor já conhece os princípios gerais do greylisting.
O habitual é termos uma média de 10% de entradas grey (cinzentas) em relação às entradas white (brancas).
Ao dia de hoje, um conhecido servidor da internet tinha:
millis:~# greylist list --white | wc -lA imagem em cima (gerada a partir do Munin) ilustra de forma sistemática a evolução destas entradas (pelo que a regra referida dos 10% é apenas uma estimativa aproximada do que acontece tipicamente a médio/longo prazo).
4579
millis:~# greylist list --grey | wc -l
369
millis:~# greylist list --black | wc -l
6
No seguinte exemplo vemos como se podem usar os comandos manuais de remoção de entradas cinzentas:
millis:~# greylist delete --grey '213.171.223.109' postmaster@localhost burlado@real_domain.xyzQuando existem plicas nos endereços IPs, no caso de se usar uma shell bash (a shell default em Linux), tem que se evitar a substituição que a própria shell faz das plicas para esse argumento: logo a utilização de aspas torna-se necessária.
error: Not found
millis:# greylist delete --grey "'213.171.223.109'" postmaster@localhost burlado@real_domain.xyz
Removed from greylist
Pessoalmente a parte do greylistd para black-listed IPs não me convence: é demasiado onerosa. (Usar triplets para manualmente declarar um IP-source que temos a certeza que é um rato, ou um open-relay, ocupa demasiada memória física.) No entanto, o Exim4 possui mecanismos de procura linear.
Vejamos um exemplo de um rato regular que tenta colocar spam no meu MTA:
% host mail-kr.bigfoot.com
mail-kr.bigfoot.com. has address 211.115.216.228
mail-kr.bigfoot.com. has address 211.115.216.252
mail-kr.bigfoot.com. has address 211.115.216.222
mail-kr.bigfoot.com. has address 211.115.216.225
Corremos o Exim4 em modo debug da seguinte forma:
exim4 -d -bh 211.115.216.226
Se tivermos as regras habituais e um ficheiro em /etc/exim4/local_host_blacklist com o seguinte conteúdo
211.115.216.226
poderemos simular a entrega de spam, e o comando que corremos gerará o seguinte log:
check hosts = ${if exists{/etc/exim4/local_host_blacklist}{/etc/exim4/local_host_blacklist}{}}
host in "/etc/exim4/local_host_blacklist"? yes (matched "211.115.216.226" in /etc/exim4/local_host_blacklist)
deny: condition test succeeded
SMTP>> 550-sender IP address 211.115.216.226 is locally blacklisted here. If you think
550-sender IP address 211.115.216.226 is locally blacklisted here. If you think
SMTP>> 550 this is wrong, get in touch with postmaster
550 this is wrong, get in touch with postmaster
LOG: MAIN REJECT
H=mail-kr.bigfoot.com [211.115.216.226] F=xpto rejected RCPT guest@frog.prized: sender IP address 211.115.216.226 is locally blacklisted here. If you think this is wrong, get in touch with postmaster
Isto é trivial, embora exija a alteração manual do ficheiro referido, em relação aos triplets pretos do greylistd.
Os triplets são constituidos por 3 strings, na realidade, embora a primeira seja na realidade, por definição, o endereço IP de origem da mensagem (o SMTP-client) -- que pode conter outros caracteres delimitadores, como por exemplo a plica, e eventualmente descrito pelo CNAME.
% greylist list --grey | grep "'"
A lista de IPs linearizados acinzentados pode ser visualizada pelo comando em cima. Nem sempre os MTAs legítimos re-enviam as mensagens das suas filas em menos de 60 minutos; há um balanço cuidadoso entre a diminuição deste periodo (configurável no greylistd) e a resolução manual por white-lists: estes casos serão tipicamente assinalados com o valor 4 a 6, significa 4 a 6 tentativas de drop (neste caso, de servidores legítimos, espaçadas por periodos racionais).
