• Instalação
Primeiro você deve fazer o dowload da ferramenta sceo_greylist na sessão 'Ferramentas'
Crie um banco de dados de nome sceo_greylist no Mysql fazendo um dump do arquivo sceo_greylist.sql que acompanha o pacote para dentro do banco de dados criado.
Abra o arquivo fonte sceo_greylist.c e altere as linhas:
#define USUARIO "sceo"
#define SENHA "mudar"
Substituindo pelo usuário e senha que usou na criação do banco de dados sceo_greylist
Compile o programa:
> gcc sceo_greylist.c -o sceo_greylist -lmysqlclient
Copie o binário gerado para um diretório que esteja no PATH (Ex: /usr/bin)
> cp sceo_greylist /usr/bin
A Greylist deve ser processada sempre que um destinatário for especificado. Então devemos editar o arquivo apontado por Rcpt_rules do seu servidor Sceo. No caso padrão é o arquivo /usr/local/sceo/regras_destinatario:
> pico /usr/local/sceo/regras_destinatario
Acrescente a seguinte linha para processar greylist:
!Auth? Internal_rcpt? Exec! "sceo_greylist -i %s -f %f -t %r" Exec_resp? "1" Reply! "451 Tente mais tarde" Deny!
A regra pode ser colocada no início do arquivo.
Salve e saia do arquivo. Não é preciso reiniciar o MTA Sceo
A Linha de regra acima executa o programa sceo_greylist caso seja um usuário não autenticado e o destinatário especificado seja interno. Se o programa sceo_greylist responder 1 (Email não liberado. Retornar erro temporário) o servidor responderá "451 Tente mais tarde" e vai negar a entrega ao destinatário
Note que como parâmetro de IP do sceo_greylist nós usamos a variável %s que retorna sempre o endereço reverso ou IP caso o primeiro não exista. Fazemos isso pois aumenta a eficiência da Greylist já que muitas empresas possuem vários servidores MTA de ips diferentes mas compartilham de um mesmo nome reverso. O Gmail é um exemplo.
O erro 451 é do tipo temporário. Um servidor válido entende este código e tenta entregar o email mais tarde (dentro de alguns minutos)
Uma dica interessante para quem usa checagens SPF é não processar Greylist para ips que já receberam um Pass do SPF. Basta acrescentar a seguinte condição à linha de regra:
!SPF_resp? "1" !Auth? Internal_rcpt? Exec! "sceo_greylist -i %s -f %f -t %r" Exec_resp? "1" Reply! "451 Tente mais tarde" Deny!
A condição acima ( !SPF_resp "1" ) efere-se apenas às conexões que NÃO receberam resposta 1 do SPF ( 1 = Pass )
Afinal, se o servidor é confiável, de nada adianta processar Greylist
• Manutenção
Uma vez por dia você deve apagar os registros mortos do banco de dados. São registros de emails que realmente foram bloqueados, são os ips que não tentaram novamente antes do DELAY_LIMITE.
Agende o seu CRON para rodar a seguinte linha uma vez ao dia:
sceo_greylist -clean
Isso fará a exclusão destes registros mortos mantendo o banco de dados limpo e rapido