2008/10/07

CentOS + Qmail-Toaster = SpamHaus/SpamCop com score

Ambiente:
CentOS 5.0 com pacote Qmail-Toaster

Problema:
Usando o cliente de email, estava sendo barrado o envio de IP´s que estavam em blacklist nos servidores do SpamHaus e SpamCop, pois é feita a verificação antes mesmo da autenticação.

Solução:
Implementar a verificação de blacklist do SpamCop e SpamHaus no Spamassassin para computar como um score alto o bastante para ocorrer o Reject do email. Como o spamassassin no ambiente que tenho libera relay para os domínio que tenho localmente, não haverá problema no envio.

Editar arquivo /etc/mail/spamassassin/local.cf

Habilite no spamassassin para verificar blacklists
skip_rbl_checks 0

Adicionar as linhas abaixo ao final do arquivo com relação à consulta e score das regras:

# SPAMHAUS blacklist

header RCVD_IN_XBL_SPAMHAUS_ORG eval:check_rbl_txt('zen', 'zen.spamhaus.org.')
describe RCVD_IN_XBL_SPAMHAUS_ORG Received via a relay in zen.spamhaus.org
tflags RCVD_IN_XBL_SPAMHAUS_ORG net
# Colocar score maior do que estah em required_score. Caso queira droppar o email, colocar
# acima do que estah em spam_hits no arquivo /var/qmail/control/simcontrol
score RCVD_IN_XBL_SPAMHAUS_ORG 25.0

# SPAMCOP

header RCVD_IN_SPAMCOP__NET eval:check_rbl_txt('spamcop', 'bl.spamcop.net.', '(?i:spamcop)')
describe RCVD_IN_SPAMCOP__NET Received via a relay in zen.spamcop.net
tflags RCVD_IN_SPAMCOP__NET net
# Colocar score maior do que estah em required_score. Caso queira droppar o email, colocar
# acima do que estah em spam_hits no arquivo /var/qmail/control/simcontrol
score RCVD_IN_SPAMCOP__NET 25.0

Caso deseje, pode alterar as regras no diretório /usr/share/spamassassin/, comentando as que fazem referência à SpamCop e SpamHaus.
Fiz para não ficar redundante. A razão por ter feito as duas listas de forma manual foi por que assim pude customizar o score

Refaça os arquivos cdb.

sudo qmailctl cdb

Resultado:
Reloaded /etc/tcprules.d/tcp.smtp
Reloaded /var/qmail/control/badmimetypes.cdb
Reloaded /var/qmail/control/badloadertypes.cdb
Reloaded /var/qmail/control/simversions.cdb
Reloaded /var/qmail/control/simcontrol.cdb

Pode ser feito o reload, mas não é em todas as distribuições que adianta, portanto, faça:

sudo qmailctl stop
sudo qmailctl start

No meu caso, a consulta e o bloqueio do IP é feita através do tcp.rules, sendo assim, editei o arquivo:

sudo vi /etc/tcprules.d/tcp.smtp

A linha que trata a conexão vinda por tcp.smtp ficou assim:

:allow,REQUIREDAUTH="",BADMIMETYPE="",BADLOADERTYPE="M",CHKUSER_RCPTLIMIT="50",CHKUSER_WRONGRCPTLIMIT="10",QMAILQUEUE="/var/qmail/bin/simscan",NOP0FCHECK="1"


O bloqueio dos emails através da verificação no SPAMCOP e SPAMHAUS antes da autenticação reduz a utilização do processamento do servidor, uma vez que nem ao menos passa pelas regras. Nessa solução, tive que sacrificar um pouco o processamento, os emails antes que nem entravam no servidor, por estar em blacklist, agora entram para serem processados. No meu caso, os fins justificaram os meios.


2 comentários:

renato disse...

no freebsd isso já nao é problemas a muito tempo o commiter brasileiro Renato botelho adicionou um patch no port do ucspi-tcp que deixa o ter a opurtunidade de se logar antes de ser bloqueado

Felipe disse...

Por isso que é pra CentOS.