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/sh
env – 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-send

O 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-SpamAssassin

O 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 ask
install Mail::SpamAssassin
quit

Isto é ó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:: Spamassassin

Saca 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 --lint

Agora 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.gpg

para 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/*.template

Por 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.org


No 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 start


IMPORTANTE: 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 restart

Isto é 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...
tags:
publicado por gamito às 12:34
link do post | comentar
2 comentários:
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.

Mais sobre mim

pesquisar

Janeiro 2008

Dom
Seg
Ter
Qua
Qui
Sex
Sab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

Posts recentes

Portagens

Há 20 anos atrás... *sigh...

Vou criar a minha própria...

Finalmente

SAPO codebits

Sporting

Caixa Mágica e Mandriva

A1 Aveiro - Lisboa

Browser mamão

gFTP

PlayStation 3 e Sony

Mas quem é o gajo ?

Negócios do Open Source

Não estão fartos disto ?

Naughty, naughty

PHP chrooted

Joomla

Novo Projecto

MySQL :: It's the ctl, st...

MySQL :: Just a little ti...

MySQL chrooted

BASH, stdout e stderr

4 kb stack ou 8kb stack

A funny guy...

Truques, Minas e Alçapões...

Truques, Minas e Alçapões...

Logs do mrtg

Salmos, 23

Servidor caseiro - XXVII

Servidor caseiro - XXVI

Servidor caseiro - XXV

Números de telemóvel aban...

Servidor caseiro - XXIV

Humm...

Servidor caseiro - XXIII

Servidor caseiro - XXII

Servidor caseiro - XXI

Servidor caseiro - XX

Servidor caseiro - XIX

Ubuntu : O Enigma

Leixões 1 - Benfica 1

Servidor caseiro - XVIII

Servidor caseiro - XVII

Servidor caseiro - XVI

Servidor caseiro - XV

Servidor caseiro - XIV

Servidor caseiro - XIII

Servidor caseiro - XII

Servidor caseiro - XI

Servidor caseiro - X

Arquivos

Contacto

gamito@gmail.com

No Planeta Geek

tags

todas as tags

subscrever feeds