O conceito de greylisting consiste em recusar temporariamente
uma mensagem e esperar por sua retransmissão, e parte dos seguintes
princípios:
- que e-mails válidos são enviados a partir de MTAs
legítimos, que mantém filas e possuem políticas de retransmissão
em caso de erros temporários;
- spammers e códigos maliciosos raramente usam MTAs
legítimos.
Contudo, existem spammers que utilizam MTAs legítimos ou mesmo
reenviam as mensagens a fim de contornar esta técnica. Ainda assim, o
greylisting tem se mostrado eficiente para barrar mensagens
enviadas por vírus, worms e spam zombies.
O documento de referência sobre greylisting é o whitepaper http://projects.puremagic.com/greylisting/whitepaper.html.
A lógica normalmente implementada por MTAs com suporte a
greylisting é mostrada no seguinte diagrama de blocos:
Em geral as implementações de greylisting mantém um banco de
dados com registros indexados por:
- endereço IP da origem;
- endereço do remetente no envelope;
- endereço do destinatário no envelope.
Estes registros contém uma variável de estado e alguns parâmetros de
tempo. Os estados de um autômato de greylisting são
representados na figura abaixo:
- inicial (branco): (IP,envelope) não estão registrados no banco
de dados, a primeira mensagem recebida faz passar para o estado
de bloqueio temporário e é rejeitada com erro temporário;
- bloqueio temporário (vermelho): rejeita mensagens com erro
temporário e sai deste estado para o de aceitação temporária
somente depois de decorrido o tempo t0;
- aceitação temporária (amarelo): aceita uma mensagem, passando
para o estado transparente ou, se não receber mensagem até que
decorra t1, volta para o estado inicial;
- transparente (verde): aceita mensagens e retorna para este
estado ou volta para o estado inicial se decorrer o tempo
t2 sem que qualquer mensagem seja recebida. A cada
nova mensagem a contagem de t2 é reiniciada.
Assim, IPs e envelopes com os quais se mantém correspondência regular
atingirão o estado transparente rapidamente. Para estes será como se
não estivesse sendo usado greylisting.
É importante também manter em uma lista branca, endereços IP que tem
passagem livre pelo greylisting, ou porque são máquinas
confiáveis (da própria rede, de redes conhecidas, etc) ou por que seus
MTAs não conseguem tratar corretamente erros temporários.
|