Amavis

De Wiki
Ir para: navegação, pesquisa

Amavis

Debian Lenny 5.0

Instalando os Pacotes necessários

O pacote principal a ser instalado é:

# apt-get install amavisd-new 

feito isso, o amavis precisa de alguns componentes para melhorar suas funcionalidades, vamos adicionar pacotes que melhoram a sua utilização, instale:

  1. DSPAM
  2. Spamassassin
  3. Clamav: com as assinaturas da Sanesecurity

agora os pacotes mais genéricos de compressão (não esqueça de colocar o repositório non-free e contrib nos repositórios do apt):

# apt-get install bzip2 unrar unzip zip ytnef arj pax arc ripole cabextract lzop p7zip-full

edite o arquivo:

# vim /etc/amavis/conf.d/01-debian

e descomente a linha do rar/unrar:

$unrar = ['rar', 'unrar']; #disabled (non-free, no security support)
#$unrar = undef;

e comente a linha que o torna indefinido. Feito isso vamos ativar o escaneamento e antispam.

Configuração Básica

Primeiro vamos ativar o escaneamento de spam e antivírus, edite o arquivo:

# vim /etc/amavis/conf.d/15-content_filter_mode

seu conteúdo deve ficar como o abaixo:

use strict;

@bypass_virus_checks_maps = (
  \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
  \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return

feito isso, reinicialize o serviço:

# /etc/init.d/amavis restart

se você verficar nos logs vai ver as linhas que representam que tudo deu certo:

ANTI-VIRUS code      loaded
ANTI-SPAM code       loaded
ANTI-SPAM-SA code    loaded
Using primary internal av scanner code for ClamAV-clamd

vamos configurar agora alguns detalhes do amavis, edite o arquivo:

# vim /etc/amavis/conf.d/20-debian-defaults

e altere os seguintes parâmetros:

$syslog_priority = 'info';
$virus_admin = "administrado\@dominio.br"; # due to D_DISCARD default
$mailfrom_notify_admin = "administrado\@dominio.br";
$mailfrom_notify_recip = "administrado\@dominio.br";
$mailfrom_notify_spamadmin = "administrado\@dominio.br";

qr'^\.wmf$',                            # Windows Metafile file(1) type
[ qr'^\.(Z|gz|bz2)$'           => 0 ],  # allow any in Unix-compressed
[ qr'^\.(rpm|cpio|tar)$'       => 0 ],  # allow any in Unix-type archives
[ qr'^\.(zip|rar|arc|arj|zoo)$'=> 0 ],  # allow any within such archives

Ativando o DSPAM

Uma vez que o DSPAM está instalado, vamos alterar suas configurações para que ele converse corretamente com o Amavis. Vamos editar seu arquivo de configuração:

Trust amavis
DeliveryHost        127.0.0.1
DeliveryPort        24
DeliveryIdent       localhost
DeliveryProto       SMTP
ImprobabilityDrive on
Preference "signatureLocation=headers"
Preference "spamSubject=SPAM"
Opt out
ServerPID              /var/run/dspam/dspam.pid
ServerPass.Relay1       "gere_uma_senha_com_makepasswd"
ServerParameters        "--deliver=innocent -d %u"
ServerIdent             "dspam"
ServerDomainSocketPath   "/var/spool/postfix/var/run/dspam.sock"
ClientHost      "/var/spool/postfix/var/run/dspam.sock"
ClientIdent     "secret@Relay1"

e o arquivo:

# vim /etc/default/dspam

com a variável user modificada para:

USER=amavis  

e alterar as permissões dos locais corretos:

# chown -R amavis:amavis /etc/dspam/
# chown -R amavis:root /var/run/dspam/
# chown -R amavis:amavis /var/log/dspam/

no arquivo /etc/init.d/dspam, encontre a linha:

chown dspam $(dirname $PIDFILE)

e altere por:

chown amavis $(dirname $PIDFILE)

também precisamos criar os diretórios que o dspam vai utilizar dentro do ambiente chroot do Postfix:

# mkdir -p /var/spool/postfix/var/run
# chmod o+rwx /var/spool/postfix/var/run
# chown postfix:root /var/spool/postfix/var/run

e reinicialize o serviço.

Ativando o DKIM para um domínio

Primeiro ative as configurações no Amavis editando o arquivo:

# vim /etc/amavis/conf.d/20-debian-defaults
$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
$signed_header_fields{'received'} = 0;  # turn off signing of Received
$signed_header_fields{'sender'} = 1;    # turn on signing of Sender
$signed_header_fields{'to'} = 1;        # turn on signing of To
$signed_header_fields{'cc'} = 1;        # turn on signing of Cc

dkim_key('ceul.ufms.br', 'ceul', '/var/db/dkim/dominio-key.pem');

onde esta chave foi gerada com os comandos:

# mkdir -p /var/db/dkim
# amavisd-new genrsa /var/db/dkim/dominio-key.pem
# amavisd-new showkey dominio.br

insira a linha gerada e teste depois com o comando:

# amavisd-new testkey dominio.br

veja uma saída válida:

TESTING: dominio._domainkey.dominio.com.br           => pass

se a resposta for positiva, seu domínio com DKIM está ativado corretamente. Depois de ativar a configuração no seu DNS vamos ensinar o [Spamassassin] a classificar melhor usando estas novas tags, edite o arquivo /etc/spamassassin/local.cf:

header DSPAM_SPAM X-DSPAM-Result =~ /^Spam$/
score DSPAM_SPAM 0.5

header DSPAM_HAM X-DSPAM-Result =~ /^Innocent$/
score DSPAM_HAM -0.1

score DKIM_VERIFIED -0.1
score DKIM_SIGNED    0

# don't waste time on fetching ASP record, hardly anyone publishes it
score DKIM_POLICY_SIGNALL  0
score DKIM_POLICY_SIGNSOME 0
score DKIM_POLICY_TESTING  0

# DKIM-based whitelisting of domains with good reputation:
score USER_IN_DKIM_WHITELIST -8.0

blacklist_from  chakerv@att.net
whitelist_from_dkim  *@ebay.com
whitelist_from_dkim  *@*.ebay.com
whitelist_from_dkim  *@ebay.co.uk
whitelist_from_dkim  *@*.ebay.co.uk
whitelist_from_dkim  *@ebay.at
whitelist_from_dkim  *@ebay.ca
whitelist_from_dkim  *@ebay.de 
whitelist_from_dkim  *@ebay.fr
whitelist_from_dkim  *@*.paypal.com
whitelist_from_dkim  *@paypal.com
whitelist_from_dkim  *@*paypal.com
whitelist_from_dkim  *@*.paypal.be

whitelist_from_dkim  *@cern.ch
whitelist_from_dkim  *@amazon.com
whitelist_from_dkim  *@cisco.com
whitelist_from_dkim  *@cnn.com
whitelist_from_dkim  *@*.cnn.com
whitelist_from_dkim  service@youtube.com
whitelist_from_dkim  googlealerts-noreply@google.com

# DKIM-based whitelisting of domains with less then perfect
# reputation can be given fewer negative score points:
score USER_IN_DEF_DKIM_WL -1.5
def_whitelist_from_dkim   *@google.com
def_whitelist_from_dkim   *@googlemail.com
def_whitelist_from_dkim   *@*googlegroups.com 

# reduce default scores, which are being abused
score ENV_AND_HDR_DKIM_MATCH -0.1
score ENV_AND_HDR_SPF_MATCH  -0.5

com isso, agora nosso Spamassassin vai aprender de forma mais eficiente usando o DSPAM e usando o DomainKey como chaves para aprendizado, fora a possibilidade de whitelist e blacklist no servidor.

Problemas que podem acontecer

Se durante a geração de senha do amavisd-new genrsa aparecer o erro:

Problem in Amavis::Tools code: Can't locate Crypt/OpenSSL/RSA.pm

ou:

Problem in Amavis::DKIM code: Can't locate Mail/DKIM/Verifier.pm 

é necessário instalar os pacotes adicionais abaixo:

# apt-get install libcrypt-openssl-rsa-perl libmail-dkim-perl

Reconfigurando o Clamav

Precisamos alterar as permissões do clamav para que ele possa ser utilizado corretamente pelo Amavis, então, vamos trocar em todos os locais onde o usuário era clamav por amavis:

 # vim /etc/clamav/clamd.conf
 LocalSocketGroup amavis
 User amavis
 # vim /etc/clamav/freshclam.conf
 DatabaseOwner amavis
 # chown amavis /etc/clamav/freshclam.conf
 # chown -R amavis:amavis /var/run/clamav
 # chown -R amavis:amavis /var/lib/clamav
 # chown -R amavis:amavis /var/log/clamav

e agora alterar no logrotate para que os logs não fiquem mais como usuário clamav:

# vim /etc/logrotate.d/clamav-daemon
create 640  amavis adm
# vim /etc/logrotate.d/clamav-freshclam
create 640  amavis adm 

pronto, agora o clamav vai funcionar corretamente com o Amavis.

Adicionando o suporte ao Razor e Pyzor

Primeiro vamos instalar os pacotes necessários:

# apt-get install libnet-dns-perl razor pyzor

depois de fazer estas modificações, vamos criar as entradas do razor e do pyzor para o Amavis:

# su - amavis 
$ razor-admin -d --create 
$ razor-admin -register
$ razor-admin -discover
$ pyzor discover

é preciso definir quem vai utilizar este serviço no Amavis, no nosso caso, vamos utilizá-lo com o Spamassassin, depois de inserir as regras e reiniciar o serviço, vamos reinicializar o Amavis:

# /etc/init.d/amavis restart

pronto, as adições foram feitas com sucesso.

Erros comuns

Se você não vê as entradas relacionadas ao seu antispam no cabeçalho das mensagens (headers), fica a dica: verifique se o domínio que você está escaneando é o mesmo lido no arquivo '05-domain_id do Amavis, senão for, ele não vai escanear as mensagens.


--Brivaldo 17h42min de 4 de agosto de 2010 (UTC)