A instalação do amavis não é difícil mas é um pouco chata por causa dos módulos do PERL, são vários módulos, para a instalação do amavis você precisa estar conectado, vamos usar o comando:
# perl -MCPAN -e "install modulo::perl"
Vamos ao módulos:
(Lista tirada da documentação do amavis_new)
Archive::Zip
Compress::Zlib
Convert::TNEF
Convert::UUlib
MIME::Base64
MIME::Parser
Mail::Internet
Net::Server
Net::SMTP
Digest::MD5
IO::Stringy
Time::HiRes
Unix::Syslog
Mail::SpamAssassin
Como foi dito a instalação é feita como no exemplo a seguir:
# perl -MCPAN -e "install Archiver::Zip"
Faça isso com todos os módulos listados acima.
Nota: A instalação do spamassassin é toda feita aqui, então não é preciso você baixar do site o spamassassin, a única coisa que você vai se preocupar e com o arquivo de configuração do spamassasin, no site http://www.yrex.com/spam/spamconfig.php tem um gerador automático do arquivo local.cf, nesse site você tem todas as informações necessárias para criar o arquivo, leia com bastante atenção. Vou colocar aqui um exemplo de como esse arquivo é:
# SpamAssassin config file for version 2.5x
# generated by http://www.yrex.com/spam/spamconfig.php (version 1.01)
# How many hits before a message is considered spam.
required_hits 10.0
# Whether to change the subject of suspected spam
rewrite_subject 0
# Text to prepend to subject if rewrite_subject is used
subject_tag *****SPAM*****
# Encapsulate spam in an attachment
report_safe 1
# Use terse version of the spam report
use_terse_report 0
# Enable the Bayes system
use_bayes 1
# Enable Bayes auto-learning
auto_learn 1
# Enable or disable network checks
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages all
# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales all
Há alguns softwares de sistema necessários também, aqui vai a lista deles, check se você tem esses softwares em seu sistema:
(Lista tirada da documentação do amavis_new)
Após a instalação de todas essas dependências vamos a instalação do amavis_new:
Crie um usuário e um grupo para o amavis_new:
# groupadd -g 1011 amavis
# useradd -s /bin/false -d /var/amavis -g 1011 -u 1011 amavis
Crie agora os diretórios necessários para o amavis_new:
# mkdir /var/amavis
# chown amavis.amavis -R /var/amavis
# chmod 750 -R /var/amavis
# mkdir /var/virusmails
# chown amavis.amavis -R /var/virusmails
# chmod 750 -R /var/virusmails
Descompacte o arquivo do amavis_new:
# tar -xvzf amavisd-new-20030616-p9.tar.gz
Entre dentro do diretório criado, vamos copiar alguns arquivos para diretórios específicos e mudar seus donos e permissões, são eles:
# cp amavisd /usr/sbin
# chown root.amavis /usr/sbin/amavisd
# chmod 750 /usr/sbin/amavisd
# cp amavisd.conf /etc/
# chown root.amavis /etc/amavisd.conf
# chmod 644 /etc/amavisd.conf
Agora iremos configurar o arquivo de o /etc/amavisd.conf, vou colocar aqui as opções que eu julguei importantes para o meu ambiente. Esse arquivo é bem extenso, então dê uma boa olhada em /etc/amavisd.conf.
$MYHOME = '/var/amavis';
$mydomain = 'dominio.com.br';
$myhostname = 'maquina.dominio.com.br';
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$TEMPBASE = $MYHOME;
$forward_method = 'smtp:127.0.0.1:10025';
$notify_method = $forward_method;
Se você deseja notificar as pessoas que estão enviando vírus, spam, ou os seus usuários que estão recebendo esses emails, você pode personalizar essas notificações usando essas variáveis:
Por default elas vem comentadas, se você deseja personalizar é só descomentar e criar os arquivos especificados, eu preferi usar as mensagens que vem dentro do arquivo /usr/sbin/amavisd, apenas traduzindo essas mensagens para português.
$notify_sender_templ = read_text('/var/amavis/sender.txt');
$notify_virus_sender_templ= read_text('/var/amavis/virus_sender.txt');
$notify_virus_admin_templ = read_text('/var/amavis/virus_admin.txt');
$notify_virus_recips_templ= read_text('/var/amavis/virus_recip.txt');
$notify_spam_sender_templ = read_text('/var/amavis/notify_spam_sender.txt');
$notify_spam_admin_templ = read_text('/var/amavis/spam_admin.txt');
Aqui você define se as mensagens que contém virus ou spam devem passar ou não, os valores que você pode usar são D_BOUNCE, D_PASS, D_REJECT e D_DISCARD, se você usa D_PASS ou D_BOUCE todas as mensagens que chegarem com virus, o amavis notificara quem enviou o vírus e quem esta recebendo vírus e spam, eu achei melhor usar a opção D_DISCARD, usando essa opção você pode usar as variáveis que você desejar, $warnvirussender, $warnvirusrecip etc. Com o uso dessas variáveis o amavis vai notificar só quem você achar melhor, no meu caso não vou notificar quem esta enviando o vírus ou spam, somente quem esta recebendo, para evitar os spammers que usam a proliferação de vírus pra saber quais contas estão ativas ou não, no manual do Marco, ele deixa a variável $final_spam_destiny como D_PASS isso deixa o spam passar, mas assinala a mensagem com um ****SPAM****, eu preferi não deixar spam nenhum passar, mas isso você decide :), como você pode ver, só deixei as mensagens com um cabeçalho mal formado passar, o resto fica como D_DISCARD, o D_DISCARD vai rejeitar a mensagem e não vai retornar nada para quem está enviando D_REJECT retorna o erro para quem esta enviando a mensagem, as próximas linhas definem quem vai ou não receber a notificação.
$final_virus_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_banned_destiny = D_DISCARD; # (defaults to D_BOUNCE)
$final_spam_destiny = D_DISCARD; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
Aqui você define quem vai ou não receber as notificações, no meu caso deixei somente o recipiente receber as notificações. Deixando a linha comentada o valor da variável e false, então descomente a linha que você desejar.
# Notify virus sender?
#$warnvirussender = 1;
# Notify spam sender?
#$warnspamsender = 1;
# Notify sender of banned files?
#$warnbannedsender = ; #
# Notify sender of syntactically invalid header containing non-ASCII characters?
#$warnbadhsender = 1;
# Notify virus (or banned files) RECIPIENT?
$warnvirusrecip = 1;
#$warnbannedrecip = 1;
A próxima configuração é para estabelecer qual o email do notificador do sistema, eu usei o postmaster, mas você pode usar quem achar melhor.
$virus_admin = "postmaster\@$mydomain";
$mailfrom_notify_admin = "postmaster\@$mydomain";
$mailfrom_notify_recip = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain
$hdrfrom_notify_sender = "postmaster
";
Aqui definimos qual diretório vai ser usando para a quarentena.
$QUARANTINEDIR = '/var/virusmails';
Aqui definimos quais as extensões de arquivos queremos proibir. No meu caso eu barrei extensões (vbs, pif, src, bat, cmd, com) faça da maneira que achar melhor.
$banned_filename_re = new_RE (
# qr'^UNDECIPHERABLE$', # is or contains any undecipherable components
# qr'\.[^.]*\.(vbs|pif|scr|bat|cmd|com|dll)$'i, # double extension
qr'.\.(exe|vbs|pif|scr|bat|cmd|com)$'i, # banned extension - basic
# qr'.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js|
# jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb|
# vbe|vbs|wsc|wsf|wsh)$'ix, # banned extension - long
# qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip vulnerab.
# qr'^\.(zip|lha|tnef|cab)$'i, # banned file(1) types
# qr'^\.exe$'i, # banned file(1) types
# qr'^application/x-msdownload$'i, # banned MIME types
qr'^application/x-msdos-program$'i,
# qr'^message/partial$'i, qr'^message/external-body$'i, # block rfc2046
);
Aqui ficam as configurações para o antivírus, como eu disso vou usar o Mcafee Antivírus pra linux, eu comentei todas as outras linhas referentes a outros antivírus. Caso queira usar outro antivírus é só instalar o software o amavis_new cuida do resto sozinho.
### http://www.nai.com/
['NAI McAfee AntiVirus (uvscan)', 'uvscan',
'--secure -rv --mime --summary --noboot - {}', [0], [13],
qr/(?x) Found (?:\ the\ (.+)\ (?:virus|trojan) |
\ (?:virus|trojan)\ or\ variant\ ([^ ]+) |
:\ (.+)\ NOT\ a\ virus)/,
# sub {$ENV{LD_PRELOAD}='/lib/libc.so.6'},
# sub {delete $ENV{LD_PRELOAD}},
],
NOTA: Como explicado no começo do documento, a instalação do uvscan é bem simples. Então é só seguir as perguntas da instalação e pronto.
Para iniciar o amavis_new é só digitar o seguinte comando:
# amavisd -c /etc/amavisd.conf start
E para pará-lo é só digitar:
# amavisd stop
Eu criei um script bem simples em /etc/rc.d/rc.amavisd com o seguinte conteúdo:
#!/bin/sh
amavis_start() {
/usr/sbin/amavisd -c /etc/amavisd.conf start
}
amavis_stop() {
/usr/sbin/amavisd stop
}
case "$1" in
'start')
amavis_start
;;
'stop')
amavis_stop
;;
'restart')
amavis_stop
sleep 3
amavis_start
;;
*)
echo "usage $0 start|stop|restart"
esac
NOTA: Notem que é bem simples mesmo, foi só pra mostrar uma maneira de iniciar, parar e restartar o amavis, sinta-se livre para fazer da maneira que achar melhor :).
Bom, eu ainda não vou falar aqui como configurar o amavis_new com o Postfix, isso vai ser feito na próxima seção onde iremos cobrir os dois arquivos principais da configuração do Postfix.