Segunda-feira, 20 de Agosto de 2007
Servidor caseiro - XIX
Anti-SPAM é sinónimo de SpamAssassin, mas há outras barreiras ao SPAM.
De forma a fazer face à sofisticação dos mecanismos de SPAM, um tal de Paul Vixie (bastante conhecido pelo seu envolvimento em vários sistemas e projectos da Internet desde há vários anos) resolveu criar um sistema que permitisse fazer frente a esta questão. O sistema consiste num mecanismo de teste de servidores de correio electrónico, verificando se estes estão mal configurados, isto é, se permitem a sua utilização como relays abertos; por outro lado publica de várias formas uma lista de servidores que estão dentro destas características e que é facilmente consultável.
O projecto chama-se
Mail Abuse Protection System, e tem a sua face visível em http://mail-abuse.org/; é possível ver vários tipos de listas, embora tenham todas o objectivo de localizar servidores que tenham sido denunciados como origem de mensagens de SPAM ou que estejam abertos a esse tipo de práticas (através de má configuração). A consulta das várias listas é possível através deste site web, que contém adicionalmente informações sobre como resolver este problema (no caso de má configuração de servidores de correio electrónico) e uma forma de pedir a remoção do nosso servidor destas listas. A utilização deste sistema passou a requerer um pagamento prévio, o que implica que deixou de ser utilizado por toda a gente. Existem alguns outros projectos que fornecem este serviço de forma gratuita; alguns destes são o
The Open Relay Database, o Open Relay Black List e o
Open Relay Black Zone.
Uma outra forma de publicação destas listas, num formato mais adequado à utilização automática (i. e., sem intervenção humana) é através do sistema de DNS; esta forma de publicação permite ainda que as listas sejam propagadas para vários outros servidores, de forma a aliviar a carga a que este serviço sujeita os servidores onde está activo.
Embora o objectivo destes projectos seja o mesmo, têm aproximações diferentes à forma como permitem a interacção com os administradores de servidores marcados na lista negra, tendo também aproximações diferentes em relação aos testes e procedimentos que utilizam para validar as várias situações. Os servidores de DNS a utilizar para estas consultas são alguns dos seguintes:
relays.ordb.org
or.orbl.org
inputs.orbz.org e outputs.orbz.org
Para que possamos usufruir das vantagens destes sistemas, é necessário modificar a forma de funcionamento do nosso servidor de correio de forma a verificar se a origem das mensagens que recebemos está nestas listas negras.
As modificações a fazer não implicam compilação de uma nova versão do qmail; basta incluir no arranque do qmail-smtpd alguns parâmetros adicionais. Vamos então mudar o ficheiro de arranque do qmail-smtpd, que está em /var/qmail/supervise/qmail-smtpd/run, para o seguinte:
#!/bin/shenv – PATH=”/usr/local/bin:/var/qmail/bin” \ QMAILQUEUE=”/var/qmail/bin/qmail-scanner-queue.pl” \ softlimit –m 5000000 tcpserver -v -P -R -H -x \ /var/qmail/control/tcp.smtp.cdb \ -u qmaild -g nofiles 0 smtp \ rblsmtpd –r relays.ordb.org \ qmail-smtpd 2>&1É necessário reiniciar o qmail-send para assumir a alteração:
# svc -t /service/qmail-sendO SPAM que for apanhado por esta via, não chega sequer a entrar no servidor, é rejeitado logo à partida.
Instalar o SpamAssassin
Há três modos (pelo menos) de instalar o SpamAssassin.
Instalar o RPM do sistema:
# yum Install Mail-SpamAssassinO SpamAssasssin é tanto mais eficiente quantos mais uns certos e específicos módulos PERL estiverem instalados no sistema. Infelizmente, o RPM não contém esses módulos, pelo que não é uma boa escolha.
Através do CPAN:
# perl -MCPAN -e shell o conf prerequisites_policy askinstall Mail::SpamAssassinquitIsto é óptimo, como na verdade o SpamAssassin é um módulo PERL, com um único comando, instalo-o numa simples linha. Dá tempo de ir tomar um café e quando voltar estar pronto, com todas as dependências de módulos instaladas também.
Contudo, pela experiência que tenho (e já experimentei no passado por 3 ou 4 vezes), alguma coisa corre sempre mal e fico parado a meio, sem saber o que já está instalado e é a confusão total.
Instalar todos os módulos manualmente:
Dá um bocado de trabalho, mas não é tanto assim, uma vez que a forma de instalação dos módulos PERL é sempre a mesma:
# perl Makefile.PL && make && make install
Fica aqui a lista de todos os módulos PERL que o SpamAssassin suporta para uma eficiência máxima. A ordem de instalação é irrelevante, à excepção daqueles que têm depndências, estas devem ser instaladas primeiro, obviamente.
As dependências estão assinaladas por identação e o SpamAssassin, como é óbvio será o último a instalar.
É este o método que eu utilizo.
Digest::SHA1 Net::DNS Digest::HMAC_MD5 Net::IP Mail::SPF Net::DNS::Resolver::Programmable NetAddr::IP Module::Build Module::Signature ExtUtils::ParseXS ExtUtils::CBuilder version Archive::Tar Pod::Readme Pod::Text Regexp::Common ExtUtils::CBuilder Mail::SPF::Query Net::CIDR::Lite Sys::Hostname::Long IP::Country *Net::Ident IO::Socket::SSL Net::SSLeay Mail::DomainKeys Crypt::OpenSSL::RSA Mail::Address Mail::DKIM Digest::SHA Error Archive::Tar IO::Zlib Text::Diff Algorithm::Diff Encode::Detect Mail:: SpamassassinSaca
daqui os módulos todos para não andares uma hora às apalpadelas :)
Rules du Jour:
As
Rules du Jour são uma peça muito importante para um anti-SPAM eficaz. São ficheiros que contêm regras específicas para SPAM específico e que são actualizadas frequentemente.
Por exemplo, os ficheiros 20_drugs.cf e 20_porn.cf são auto-explicativos do tipo de SPAM que permitem apanhar.
Primeiro, tenho que correr este comando
# spamassassin -D --lintAgora executo (por omissão, se não for passado o nome de nenhum outro canal, o SpamAssassin aponta para updates.spamasassin.org)
# sa-update Agora, tenho em /etc/mail/spamassassin um directório chamado sa-update-keys
Executo lá dentro o comando
# sa-update --import pubring.gpgpara importar a chave com que os ficheiros de regras são assinados, para ter a certeza de que são os autênticos.
Agora, finalmente, importar as regras:
# sa-update --channel updates.spamassassin.org# rm -rf /usr/share/spamassassin/*.txt# rm -rf /usr/share/spamassassin/*.templatePor fim, coloco uma linha no crontab para ir buscar as regras todos os dias às 00:05
05 0 * * * root /usr/bin/sa-update --channel updates.spamassassin.orgNo código do SpamAssassin, no directório spamd, existe um ficheiro chamado redhat-rc-script.sh que é o ctl para o programa. Copio-o para /etc/initd.d e dou-lhe as instruções para que seja iniciado no arranque do servidor e parado quando este seja desligado:
# cp spamd/redhat-rc-script.sh /etc/init.d/spamd# cd /etc/init.d# chkconfig --level 3 spamd on# ./spamd startIMPORTANTE: O SPAM não deve ser eliminado automaticamente sem que chegue às mailboxes dos utilizadores, por causa dos falsos positivos.
Se assim fosse, podia perder-se um negócio de milhões por causa de um mail mal marcado.
O que se faz é acrescentar uma
string ao Subject das mensagens consideradas como SPAM e os utilizadores podem criar um filtro no seu cliente de e-mail – baseado nessa
string – e enviá-lo para uma pasta de SPAM.
De vez em quando, convém dar uma olhada nessa pasta.
Para acrescentar, por exemplo, a string [+++ SPAM +++] às mensagens de SPAM, edito o ficheiro /var/qmail/bin/qmail-scanner-queue.pl e mudo a linha
my $spamc_subject='';para
rewrite_header Subject [+++ SPAM +++]É necessário reiniciar o SpamAssasssin para que assuma a alteração:
# /etc/init.d/spamd restartIsto é uma instalação básica do qmail, há outros canais de regras, há o FuzzyOCR para detectar SPAM em mensagens cujo conteúdo é uma imagem, etc.
Se alguém pretender informação sobre outras coisas, é favor deixar um comentário.
O SpamAssassin está agora instalado, mas ainda não integrado com o qmail, o que quer dizer que as mensagens ainda não estão a ser processadas pelo sistema (nem pelo anti-vírus).
Para isso, é necessário instalar o qmail-scanner, que fica para o próximo artigo desta série.
Yours Sleepy...
De Marco Gonçalves a 12 de Setembro de 2007 às 15:46
Viva,
testei alterar o script de arranque do smtp para incluir
rblsmtpd –r relays.ordb.org
acontece que por vezes, o rblsmtpd demora algum tempo a fazer o que tem a fazer, outras vezes é muito rápido. Mas para um user não é simpático esperar 30,40s ou às vezes +. E tive de reverter a alteração.
Já considerou utilizar o dspam em vez do sa?
De Marco Gonçalves a 16 de Setembro de 2007 às 23:28
Já considerou utilizar DSPAM em vez do SA?
Comentar post
Os comentários são da exclusiva resonsabilidade dos seus autores.
Mário Gamito, 2004 - 2007
Todos os direitos reservados.