+ Responder ao Tópico



  1. #1
    Avenger
    Visitante

    Post Mãozinha para o RBLSMTPD

    Oi pessoal, tou desenvolvendo um programinha prá dar uma mãozinha ao rblsmtpd (aquele programa que os MTAs usam pra consultar e-mails nas listas negras RBL). Na verdade, há muito tempo eu já tinha feito ele prá funcionar junto com o qmail-scanner, mas o problema é que daí, por mais que ele marcava o e-mail como 'spam', o servidor tinha que passar antivírus, isso e aquilo, o que gerava um desperdício bem grande de consumo do servidor.

    Mesmo assim, no sistema que era, ele pegava pelo menos 25% dos e-mails que passavam batido por todos os outros testes (RBL convencional, anti-spam do spamassassin e anti-vírus). Ou seja, era uma quantidade considerável de e-mails bagunçados que passavam 'batido' pelo resto do sistema que 'meu programinha' pegava.
    Daí agora, para tentar poupar de passar antivirus e antispam nesses emails-lixo todos (25% mais o que os métodos detectavam antes), eu passei esse script para o ato da conexão SMTP. Se pelo script ele pegar que é spam, ele já corta na hora sem ter que processar tudo. Senão, ele vai verificar na lista negra, no antispam e antivírus. A minha espectativa é de que melhore bastante o sistema.
    A única coisa que aumentou no novo modo de operação é uma consulta de dns reverso a mais para o IP de quem tenta conectar. E já que falei da consulta reversa, é através disso que ele define se é fonte de spam ou não. Ele olha algumas características do DNS reverso do servidor. Dependendo do que contém ele força aceitar o e-mail (se tiver mail.algumacoisa.com, por exemplo), mas se tiver características de adsl ou dinâmico (com alguns números, ou com a palavra .dsl.), ele trava no ato, e retornando a mensagem (fácil de personalizar) de que o e-mail foi negado (isso ajuda até a ajustar algum possível exagero nas heurísticas de determinação de spam).
    Todas as palavras-chave são também personalizáveis, seguindo mais ou menos (com excessão do '.') as regras do regexp, e uma interface relativamente simples para mecher (para quem tem alguma afinidade com linux).
    Bem, eu tenho desenvolvido isso pro qmail, usando o rblsmtpd. Talvez se tem algum outro MTA que usa o rblsmtpd, seja fácil para usar isso.

    Então, se tem alguém aí que achou muito interessante, quer testar, ajudar a desenvolver e aperfeiçoar o sistema, ou mesmo discutir e criticar, estou abrindo aqui o espaço prá a gente discutir.
    Se alguém interessar, eu passo o código dos scriptzinhos. Tenho usado ele em ambiente de produção sem problemas há mais de um ano (no modo qmail-scanner -- agora eu só mudei alguns detalhes para passar ele para o rblsmtpd e não espero ter problemas).
    Algo interessante de ressaltar aqui, é que ele não vai dar conflito com aquele método 'pop-before-smtp', onde usuários têm o ip 'liberado' para mandar qualquer e-mail do provedor (ou aqueles IPs fixos cadastrados como 'open-relay'). Se o ip estiver na 'lista branca' do servidor de e-mails (a variável RELAYCLIENT estiver definida), ele assume sem fazer nenhum teste desnecessário, que a fonte tem permissão de mandar o e-mail.

    Agradeço a atenção de todos! :-)

  2. #2
    Avenger
    Visitante

    Post

    Então.. eu não uso muitos, acho que é só o NJABL mesmo. Mas daí o meu serviço do qmail-smtpd fica um pouco diferente. Ele vai rodar um 'wrapper' que então vai executar o RBLSMTPD...

    Código :
    QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" \
     exec /usr/local/bin/softlimit -m 10000000 \
     /usr/local/bin/tcpserver -v -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD"\
     -u $QMAILDUID -g $NOFILESGID 0 smtp /var/qmail/bin/avenger/rblsmtpd-local.sh /usr/local/bin/rblsmtpd -b -r \
     combined.njabl.org -r cbl.abuseat.org /var/qmail/bin/qmail-smtpd 2>&1

    Daí, aquele rblsmtpd-local.sh vai rodar esse esqueminha que eu fiz, e então setar (ou não) uma variável que faz o RBLSMTPD, mesmo antes de fazer lookup nas rbls especificadas com os -r's, já negue a transferência do e-mail.
    E esse wrapperzinho, em suma, vai forçar o rblsmtpd a bloquear ou não o e-mail através do host de quem enviou o e-mail. Se for um host de ADSL ou conexão discada, ele bloqueia na hora. Se o próprio wrapper não define se é conexão de adsl/discado, aí ele deixa de forma que o rblsmtpd vai checar os RBLs, e também os outros sistemas (spamassassin, antivírus) também vão ser executados no e-mail.

    O resultado é que esse wrapper já filtra 70% das tentativas de envio de spams para o provedor, então é 70% menos e-mails para serem estudados pelo antivirus, spamassassin e RBL. RBL, a propósito, quanto mais RBLs você tiver especificadas com o -r, mais consultas DNS o rblsmtpd tem que fazer, e isso talvez não seja interessante em algumas situações.

    Como você pode ver no meu exemplo, eu uso só a njabl como fonte RBL.

    Olha um trechinho do log de bloqueios:
    Código :
    Rightful source 200.223.107.145 ()
    Unauth source 85.98.172.189 (dsl85-98-44221.ttnet.net.tr.)
    Rightful source 201.84.0.143 (mail.soccershop.com.br.)
    Rightful source 64.92.161.26 (server.reflexao.com.br.)
    Unauth source 213.233.213.63 (dsl-213-233-213-063.solcon.nl.)
    Unauth source 82.34.99.27 (82-34-99-27.cable.ubr06.gill.blueyonder.co.uk.)
    Unauth source 67.166.96.198 (c-67-166-96-198.hsd1.ut.comcast.net.)
    Unauth source 83.11.133.95 (acwb95.neoplus.adsl.tpnet.pl.)
    Rightful source 64.233.162.178 (nz-out-1112.google.com.)
    Unauth source 76.168.8.62 (cpe-76-168-8-62.socal.res.rr.com.)
    Unauth source 24.91.143.246 (c-24-91-143-246.hsd1.ma.comcast.net.)
    Rightful source 217.147.145.163 ()

    Note que caso o IP não tenha reverso, o sistema deixa o e-mail se submeter aos outros testes. Ele só bloqueia se o host tiver uma 'cara' de conexão dinâmica.
    Claro que ainda têm um ou outro endereço de conexão dinâmica que passa batido por aí... mas dá prá sair ajustando os critérios de determinação do programinha de modo a melhorar ele.

    Fazendo um cálculo aqui de acordo com o arquivo de log no MTA de onde tirei essas informações de exemplo, tenho uma taxa de 70,21% de e-mails dos que foram enviados prá lá, que foram bloqueados pelo sisteminha, e não precisaram passar por todos os checkups pesados da máquina.

  3. #3
    Moderador Avatar de Bruno
    Ingresso
    Nov 2002
    Localização
    Guarapuava-PR
    Posts
    4.181
    Posts de Blog
    1

    Padrão

    fera teria coo vc postar este script

  4. #4
    vhboss
    Visitante

    Padrão

    Olá...

    Utilizo a verificação na conexão SMTP como voce descreveu.

    Segue parte relevante do codigo em /var/qmail/supervise/qmail-smtpd/run:

    /usr/local/bin/tcpserver -v -p -R -l "$LOCAL" -x /etc/tcp.smtp.cdb -c "$MAXSMTPD" -u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
    /usr/local/bin/rblsmtpd -r zen.spamhaus.org -r dnsbl.sorbs.net -r combined.njabl.org -r bl.spamcop.net -r dnsbl-1.uceprotect.net -r cbl.abuseat.org -r list.dsbl.org -r multihop.dsbl.org \
    -r jp.countries.nerd.dk -r ru.countries.nerd.dk -r tr.countries.nerd.dk -r cn.countries.nerd.dk -r kr.countries.nerd.dk \
    -r th.countries.nerd.dk -r sg.countries.nerd.dk -r my.countries.nerd.dk -r ro.countries.nerd.dk -r pl.countries.nerd.dk \



    Como pode-se perceber, estou em modo paranoid (-p) fazendo verificação do DNS reverso, com o seguinte tcp.smtp:

    127.0.0.1:allow,RELAYCLIENT="",RBLSMTPD=""
    192.168.1.:allow,RELAYCLIENT="",RBLSMTPD=""
    =:allow
    :allow,RBLSMTPD="Bloqueado, DNS reverso inexistente."



    Sei que pelo número de listas que utilizo posso ter problemas com o alto número de consultas DNS, mas é um domínio pequeno, com cerca de 30 contas de email e algo em torno de 700 mensagens diárias, mas que estava completamente infestado de spam, e depois de adota-las consegui acabar com mais de 95% do spam.
    Última edição por vhboss; 20-01-2007 às 12:57.

  5. #5
    vhboss
    Visitante

    Padrão

    Para evitar o crescente problema da sorbs estar barrando IPs do gmail, hotmail e yahoo, analizando os logs e colhendo os ips, adicionei essas três redes entre as que não passam pelo crivo do rblsmtpd:

    em tcp.smtp

    64.233.182.:allow,RBLSMTPD=""
    65.54.246.:allow,RBLSMTPD=""
    66.163.179.:allow,RBLSMTPD=""


    Sendo gmail, hotmail e yahoo respectivamente.
    Última edição por vhboss; 15-01-2007 às 23:45.