Montando um servidor de e-mail completo com Postfix
Este tutorial aborda a criação de um servidor de e-mail baseado em banco de dados MySQL, com suporte a cota de usuários, antispam, antivírus, webmail e tudo mais o que se pode imaginar.
Parte 16: Instalação do Amavis_NEW
Vide:
O Amavis_NEW, é uma versão do Amavis que possui além de um
vírus scanner, um Anti-SPAM utilizando o conhecido SpamAssassin.
Dependências:
# urpmi ncftp
# urpmi lha
# urpmi lzop
e
Instalando dependências do Perl com o Perl-CPAN
Iniciando a shell CPAN:
# perl -MCPAN -e shell
Instalando:
cpan> install File::MMagic
cpan> install Config::IniFiles
cpan> install Convert::TNEF
cpan> install Convert::UUlib
cpan> install Compress::Zlib
cpan> install Archive::Tar
cpan> install Archive::Zip
cpan> install Unix::Syslog
cpan> install MIME::Base64
cpan> install Net::Server
cpan> install Net::SMTP
Should all FTP connections be passive (y|n) ? [no] no
cpan> install Digest::MD5
cpan> install Time::HiRes
cpan> install Mail::SpamAssassin
cpan> exit
Instalando: Crie o usuário para o Amavis caso ele ainda não exista:
# adduser -s /bin/false -c "Amavis User" -d /var/amavis amavis
# tar -zxvf amavisd-new-20030616-p6.tar.gz -C /source/
# cd /source/amavisd-new-20030616/
# mkdir -p /var/amavis/clamd
# chown -R amavis:amavis /var/amavis
# chmod -R 750 /var/amavis/
# cp amavisd /usr/local/sbin/
# ln -s /usr/local/sbin/amavisd /usr/sbin/amavisd
# cp amavisd.conf /etc/
# mkdir /var/virusmails
# chown amavis:amavis /var/virusmails
# cp amavisd_init.sh /etc/init.d/amavisd
# chmod 744 /etc/init.d/amavisd
# cd /etc/init.d/
# chkconfig --add amavisd
Edite o arquivo /etc/amavisd.conf e altere as seguintes linhas:
Dependências:
# urpmi ncftp
# urpmi lha
# urpmi lzop
e
- unrar: ftp://194.199.20.114/linux/.../unrar-3.2.3-2.9.i386.rpm
- zoo: ftp://216.254.0.38/linux/.../zoo-2.10-11.9.i386.rpm
- unzoo: ftp://fr.rpmfind.net/linux/.../unzoo-4.4-2.i386.rpm
- arc: ftp://216.254.0.38/linux/.../arc-5.21e-6.i386.rpm
- nomarch: ftp://216.254.0.38/linux/.../nomarch-1.3-1mdk.i586.rpm
- unarj: ftp://194.199.20.114/linux/.../unarj-2.65-3.9.i386.rpm
- arj: ftp://216.254.0.38/linux/.../arj-3.10-0.1.i386.rpm
- freeze: ftp://194.199.20.114/linux/.../freeze-2.5.0-7.i386.rpm
- compress: ftp://ftp.warwick.ac.uk/pub/.../compress-4.0.1.tar.gz
Instalando dependências do Perl com o Perl-CPAN
Iniciando a shell CPAN:
# perl -MCPAN -e shell
Instalando:
cpan> install File::MMagic
cpan> install Config::IniFiles
cpan> install Convert::TNEF
cpan> install Convert::UUlib
cpan> install Compress::Zlib
cpan> install Archive::Tar
cpan> install Archive::Zip
cpan> install Unix::Syslog
cpan> install MIME::Base64
cpan> install Net::Server
cpan> install Net::SMTP
Should all FTP connections be passive (y|n) ? [no] no
cpan> install Digest::MD5
cpan> install Time::HiRes
cpan> install Mail::SpamAssassin
cpan> exit
Instalando: Crie o usuário para o Amavis caso ele ainda não exista:
# adduser -s /bin/false -c "Amavis User" -d /var/amavis amavis
# tar -zxvf amavisd-new-20030616-p6.tar.gz -C /source/
# cd /source/amavisd-new-20030616/
# mkdir -p /var/amavis/clamd
# chown -R amavis:amavis /var/amavis
# chmod -R 750 /var/amavis/
# cp amavisd /usr/local/sbin/
# ln -s /usr/local/sbin/amavisd /usr/sbin/amavisd
# cp amavisd.conf /etc/
# mkdir /var/virusmails
# chown amavis:amavis /var/virusmails
# cp amavisd_init.sh /etc/init.d/amavisd
# chmod 744 /etc/init.d/amavisd
# cd /etc/init.d/
# chkconfig --add amavisd
Edite o arquivo /etc/amavisd.conf e altere as seguintes linhas:
$MYHOME = '/var/amavis'; # (default is '/var/amavis')
$mydomain = 'local.com.br'; # (no useful default)
$daemon_user = 'amavis'; # (no default; customary: vscan or amavis)
$daemon_group = 'amavis'; # (no default; customary: vscan or amavis)
$QUARANTINEDIR = '/var/virusmails';
$log_level = 0;
#Por default o SpamAssassin, rejeit todo o email identificado como SPAM.
#O problema é que isso pode gerar erros de Falso Negativo. Nesse caso ele pode rejeitar emails válidos.
#Eu gosto de utilizar a opção aonde os email localizados como SPAM, recebem uma marcação no Subject tipo ***SPAM***
$final_virus_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
$sa_spam_subject_tag = '***SPAM***'
# Coloque aqui, o email do administrador ou crie um ALIAS para esse email, que recebera os aviso dos emails localizados pelo Amavis.
$virus_admin = "virusalert\@$mydomain";
#Descomente todos as indicações de outros anti-vírus e deixe apenas o do ClamAV ou de algum outro que você esteja usando. Também edite a linha referente ao clamav e inclua "/var/amavis/clamd/clamav.socket" Ex:
# ### http://clamav.elektrapro.com/
['Clam Antivirus-clamd',
\&ask_daemon, ["CONTSCAN {}\n", '/var/amavis/clamd/clamav.socket'],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
# NOTE: run clamd under the same user as amavisd,
# match the socket name in clamav.conf to the socket name in this entry
#
# ['KasperskyLab AntiViral Toolkit Pro (AVP)', ['avp','kavscanner'],
# '-* -P -B -Y -O- {}', [0,3,8], [2,4], # any use for -A -K ?
# qr/infected: (.+)/,
# sub {chdir('/opt/AVP') or die "Can't chdir to AVP: $!"},
# sub {chdir($TEMPBASE) or die "Can't chdir back to $TEMPBASE $!"},
# ],
$mydomain = 'local.com.br'; # (no useful default)
$daemon_user = 'amavis'; # (no default; customary: vscan or amavis)
$daemon_group = 'amavis'; # (no default; customary: vscan or amavis)
$QUARANTINEDIR = '/var/virusmails';
$log_level = 0;
#Por default o SpamAssassin, rejeit todo o email identificado como SPAM.
#O problema é que isso pode gerar erros de Falso Negativo. Nesse caso ele pode rejeitar emails válidos.
#Eu gosto de utilizar a opção aonde os email localizados como SPAM, recebem uma marcação no Subject tipo ***SPAM***
$final_virus_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_banned_destiny = D_BOUNCE; # (defaults to D_BOUNCE)
$final_spam_destiny = D_PASS; # (defaults to D_REJECT)
$final_bad_header_destiny = D_PASS; # (defaults to D_PASS), D_BOUNCE suggested
$sa_spam_subject_tag = '***SPAM***'
# Coloque aqui, o email do administrador ou crie um ALIAS para esse email, que recebera os aviso dos emails localizados pelo Amavis.
$virus_admin = "virusalert\@$mydomain";
#Descomente todos as indicações de outros anti-vírus e deixe apenas o do ClamAV ou de algum outro que você esteja usando. Também edite a linha referente ao clamav e inclua "/var/amavis/clamd/clamav.socket" Ex:
# ### http://clamav.elektrapro.com/
['Clam Antivirus-clamd',
\&ask_daemon, ["CONTSCAN {}\n", '/var/amavis/clamd/clamav.socket'],
qr/\bOK$/, qr/\bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
# NOTE: run clamd under the same user as amavisd,
# match the socket name in clamav.conf to the socket name in this entry
#
# ['KasperskyLab AntiViral Toolkit Pro (AVP)', ['avp','kavscanner'],
# '-* -P -B -Y -O- {}', [0,3,8], [2,4], # any use for -A -K ?
# qr/infected: (.+)/,
# sub {chdir('/opt/AVP') or die "Can't chdir to AVP: $!"},
# sub {chdir($TEMPBASE) or die "Can't chdir back to $TEMPBASE $!"},
# ],
Testes:
Verifique a inicialização e certifique-se se existe algum erro na configuração do amavis com:
# amavisd debug
Em outro terminal, teste se ele esta respondendo pela porta:
# telnet 127.0.0.1 10024
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
=================== Saída do Log =================
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: Net::Server: 2003/11/14-16:58:34 CONNECT TCP Peer: "127.0.0.1:32954" Local: "127.0.0.1:10024"
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: lookup_ip_acl: key="127.0.0.1" matches "127.0.0.1", result=1
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: prolong_timer after new request - timer reset: remaining time = 300 s
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: SMTP> 220 [127.0.0.1] ESMTP amavisd-new service ready
===================================================
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: Net::Server: 2003/11/14-16:58:34 CONNECT TCP Peer: "127.0.0.1:32954" Local: "127.0.0.1:10024"
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: lookup_ip_acl: key="127.0.0.1" matches "127.0.0.1", result=1
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: prolong_timer after new request - timer reset: remaining time = 300 s
Nov 14 16:58:34 marco.local.com.br amavisd[25899]: SMTP> 220 [127.0.0.1] ESMTP amavisd-new service ready
===================================================
Iniciando o serviço:
# service amavisd start