Solução completa de serviço de correio baseado em software livre (Debian GNU/Linux)
Recompilação do artigo "Postfix-2 + domínios virtuais + MySQL + SASL + PostfixAdmin", de autoria do Sr. Marco A. S. Máximo. Nesse novo artigo os passos foram tomados levando em consideração os recursos do Debian e usando (sempre que possível) os pacotes dos repositórios oficiais.
Parte 12: Instalação do amavis_new
O Amavis_NEW é uma versão do Amavis que possui, além de um vírus scanner, um antiSPAM, o conhecido SpamAssassin.
# apt-get install amavisd-new
Edite o arquivo /etc/amavis/amavisd.conf e altere as seguintes linhas:
$MYHOME = '/var/lib/amavis'; # (default is '/var/amavis')
$mydomain = 'local.com.br'; # (Bote aqui o seu dominio)
$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 rejeita 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 subjet 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 referênte ao clamav e inclua "/var/amavis/clamd/clamav.socket" Ex:
# ### http://clamav.elektrapro.com/
['Clam Antivirus-clamd',
&ask_daemon, ["CONTSCAN {} ", '/var/amavis/clamd/clamav.socket'],
qr/OK$/, qr/FOUND$/,
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'; # (Bote aqui o seu dominio)
$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 rejeita 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 subjet 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 referênte ao clamav e inclua "/var/amavis/clamd/clamav.socket" Ex:
# ### http://clamav.elektrapro.com/
['Clam Antivirus-clamd',
&ask_daemon, ["CONTSCAN {} ", '/var/amavis/clamd/clamav.socket'],
qr/OK$/, qr/FOUND$/,
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 $!"},
# ],
Teste se ele está 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
Ok!!!!
Configuração do Postfix
No final do arquivo /postfix/etc/master.cf, adicione:
# AMAVIS-NEW+SpamAssassin
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o disable_dns_lookups=yes
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o mynetworks=127.0.0.0/8
No final /postfix/etc/main.cf adicione:
#===== AMAVIS ==============
content_filter = smtp-amavis:[127.0.0.1]:10024
content_filter = smtp-amavis:[127.0.0.1]:10024
Reinicie o Postfix e teste:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 postfix ESMTP MEU DOMINIO
quit
221 Bye
Connection closed by foreign host.
Vamos baixar um arquivo que simula uma assinatura de vírus válida para fazer o teste:
# wget http://www.eicar.com/download/eicar.com.txt
# sendmail -i fulano@dominio1.com.br < eicar.com.txt
Vamos aos logs:
Aug 12 15:47:58 localhost postfix/qmgr[10333]: 49CCE3740F0: from=<>, size=2823, nrcpt=1 (queue active)
Aug 12 15:47:58 localhost amavis[10985]: (10985-02) INFECTED (Eicar-Test-Signature), <root@dominio1.com.br> -> <fulano@dominio1.com.br>, quarantine virus-20050812-154758-10985-02, Message-ID: <20050812184758.1A5863740EF@postfix.dominio.com.br>, Hits: -
Beleza... está funcionando redondo que nem uma graviola!!! :P
Configurações bem detalhadas... Com certeza vai facilitar a vida de muita gente.
Fica a sugestão para implementar um webmail...