terça-feira, 13 de setembro de 2011

Postfix + Postfixadmin + MySQL + Courier + Antivirus+ Webmail


Vamos acertaros repositórios:
### RepositorioOficial ###
deb ftp://ftp.br.debian.org/debian lenny main contrib non-free
deb-src ftp://ftp.br.debian.org/debian lenny main contrib non-free
### Repositorio de AtualizacoesFrequentes ###
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
### Repositorio de Atualizacoes de Seguranca ###
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
Efetuar update dos repositórios
aptitude update
Instalação de pacotes  
aptitude install mysql-server mysql-client apache2 php5 php5-mysql php5-gd php5-mcrypt php5-json php5-xmlrpc php5-dev php5-common libapache2-mod-php5 php-pear  php5-imap  mysql-server mysql-client apache2 php5 php5-mysql php5-imap libpam-mysql libpam-mysql

Criar tabelas no banco de dados para o Postfixadmin
# mysql -u root –p

# CREATE DATABASE mail;

# GRANT ALL PRIVILEGES ON mail.* TO mail@localhost IDENTIFIED BY "102010";
# FLUSH PRIVILEGES;
#quit;

Instalando e configurando Postfixadmin
Crie o diretório para alocar o postfixadmin

mkdir -p /usr/local/sites
cd /usr/local/sites
wget –c
http://ufpr.dl.sourceforge.net/project/postfixadmin/postfixadmin/postfixadmin-2.3.2/postfixadmin-2.3.2.tar.gz
tar -xzvf postfixadmin-2.3.2.tar.gz
mv postfixadmin-2.3.2 postfixadmin
chown -R root:www-data postfixadmin/
cd postfixadmin
Editar o arquivo config.inc.php
[...]
$CONF['configured'] = true;
[...]
$CONF['default_language'] = 'pt-br';
[...]
$CONF['database_user'] = 'mail';
$CONF['database_password'] = 'senha';
$CONF['database_name'] = 'mail';
[...]
$CONF['admin_email'] = 'postmaster@dominio.local';
[...]
$CONF['page_size'] = '20';
$CONF['default_aliases'] = array (
 'abuse' => 'abuse@dominio.local',
 'hostmaster' => 'hostmaster@dominio.local',
 'postmaster' => 'postmaster@dominio.local',
 'webmaster' => 'webmaster@dominio.local'
);
[...]
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
[...]
$CONF['maxquota'] = '1000';
$CONF['quota'] = 'YES';
[...]
$CONF['transport'] = 'YES';
$CONF['transport_options'] = array (  'virtual',  // for virtual accounts
 'local',    // for system accounts
 'relay',     // for backup mx
 'vacation'
);
[...]
$CONF['vacation'] = 'YES';
$CONF['vacation_domain'] = 'autoreplay.dominio.local';
[...]
$CONF['welcome_text'] = <<<EOM
Olá Usuário,
Bem-vindo a sua nova conta de Email.  
Dúvidas entrar em contato com o setor de TI.  
EOM  
$CONF['emailcheck_resolve_domain']='NO';
Se preferir usar o Postfix como virtual host para ser executado no navegador no seguinte formato
mailadmin.dominio.local não se esqueça de criar uma entrada no dns com a seguinte sintaxe
mailadmin IN CNAME www
Agora acesse http://ip_do_servidor/setup.php ou mailadmin.dominio.local/setup.php
Na tela que aparecerá informe uma senha e confirme para gerarmos um hash para ser
configurado no config.inc.php

Apos gerar a senha vamos ter uma saída como exemplo abaixo:
$CONF['setup_password'] =
'8c41452d6fee7c7ac9424f402d541e24:d41c89152eb3ad98e11fdeeb218b97f31066
c746';
Vamos voltar ao arquivo /usr/local/sites/postfifxadmin/config.inc.php e trocar a linha
[...]
Insira navaríavel$CONF['setup_password'] = 'changeme';
ohash que foi gerado
$CONF['setup_password'] = '8c41452d6fee7c7ac9424f402d541e24:d41c89152eb3ad98e11fdeeb218b97f31066c746’;
Agora volte a tela web do Postfixadmin e Informe novamente a senha que foi usada para gerar o hash
Crie um usuário e senha para o administrador do Postfixadmin 
Caso ocorra tudo certo vamos ter a seguinte mensagem 
Administrador criado!(admin@dominio.local)
Agora logue em http://ip_do_servidor ou mailadmin.dominio.local
Informe o e-mail que foi informado para o super administrador e sua senha .
Pronto aqui já temos o Postfixadmin configurado.

Instalando o Postfix, Courier, SASL
aptitude install postfix postfix-mysql postfix-doc postfix-policyd-spf-perl postfix-tls libsasl2-2 libsasl2-modules-sql libsasl2-modules libsasl2-dev sasl2-bin openssl libpam-smbpass courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-authlib-mysql courier-authdaemon
Responda as perguntas que aparecerão, atente para as perguntas da instalação do Postfix onde deverá serdigitado o FQDN do servidor ex: node.dominio.local
Agora precisamos obter o gid do postfix
grep postfix /etc/passwd
postfix:x:110:115::/var/spool/postfix:/bin/false
A saída mostra o gid de número 115 esse valor vai ser usado para criarmos o vmail que vai ser responsável pelas mensagens e pela identificação dos módulos do courierauthmysqlrc e no arquivo main.cf com a seguinte sintaxe,virtual_minimun_uid = 115virtual_gid_maps = static:115
virtual_uid_maps = static:115
Criar um usuário com UID 115 no sistema para o funcionamento correto do sistema de vmail.
adduser --system --shell /bin/false --uid 115 --gid 115 vmail
Vamos agora acertar a permissão
chown -R vmail:postdrop /home/vmail
Vamos configurar opam agora para dar suporte à autenticação em mysql.
A configuração do /etc/pam.d/imap /etc/pam.d/pop3  e do /etc/pam.d/smtp é a mesma então vamos configurar o /etc/pam.d/pop3 em seguida basta copiá-lo para os demais arquivos.

# vim /etc/pam.d/pop3
authrequired pam_mysql.so user=mail passwd=senha host=localhost db=mail table=mailbox usercolumn=usernamepasswdcolumn=passwordcrypt=1 sqllog=0 debug
accountsufficient pam_mysql.so user=mail passwd=
senha host=localhostdb=mail table=mailbox usercolumn=usernamepasswdcolumn=passwordcrypt=1 sqllog=0 debug
authsufficient pam_unix.so debug
accountsufficient pam_unix.so debug 

cp -Rfa /etc/pam.d/pop3 /etc/pam.d/imap
cp -Rfa /etc/pam.d/pop3 /etc/pam.d/smtp
Vamos configurar agora o Postfix /etc/postfix/main. cf nesse arquivo estão as configurações para termos um servidor de e-mail funcional usando Mysql:
##Autor: Leandro Paulo
##Data 27/07/2011 17:49 Horas

##DEFINICAO DO HOSTNAME
myhostname = node.dominio.tele

##DEFINICAO DO DOMINIO
mydomain = dominio.tele

##DOMINIOS ACEITOS PELO POSTFIX
mydestination = node.dominio.tele, localhost, localhost.localdomain , localhost.dominio.tele
myorigin = $mydomain

#HABILITA O ENVIO DE E-MAILS PARA O DOMINIO LOCAL
append_dot_mydomain = no

##ARQUIVO DE ALIAS
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases

##REDES ACEITAS PELO POSTFIX
mynetworks = 127.0.0.0/8

##COMANDO EXTERNO OPCIONAL
mailbox_command = procmail -a "$EXTENSION"
recipient_delimiter = +

##QUAIS INTERFACES SERAO USADAS PARA O SISTEMA
inet_interfaces = all

## QUAIS PROTOCOLOS USADOS PELO SISTEMA DE EMAIL
inet_protocols = all

##TAMANHO MAXIMO DA MENSAGEM
message_size_limit = 30720000

##TAMANHO MAXIMO DO ARQUIVO DE ARMAZENAMENTO
##PARA VALOR ILIMITADO DEIXE 0
mailbox_size_limit = 0

##AUTENTICACAO DE USUARIO
smtpd_sasl_local_domain =
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated,reject_unauth_destination
smtpd_tls_auth_only = no

##ATIVACAO DO TLS
readme_directory = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
tls_random_source = dev:/dev/urandom

#MySQL
transport_maps = mysql:/etc/postfix/mysql_transport_maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_base = /home/vmail


##GID DO POSTFIX
virtual_minimun_uid = 115
virtual_gid_maps = static:115
virtual_uid_maps = static:115
virtual_transport = virtual

#Quota
virtual_mailbox_limit = 0
virtual_maildir_extended = yes
virtual_mailbox_limit_override = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_overquota_bounce = yes
virtual_maildir_limit_message = Desculpe, o diretorio de correio do usuario estourou sua quota, por favor tente novamente depois.

#Limitar a quantidade de CC
smtpd_recipient_limit = 30

#Gerenciamento de tempo de fila
#queue_run_delay = 150s
#minimal_backoff_time = 150s
#maximal_backoff_time = 150s
bounce_queue_lifetime = 300s
maximal_queue_lifetime = 300s
Vamos criar os arquivos que são referenciados para integrar o postfix com o
MySQL  vamos criar 5 arquivos dentro de /etc/postfix/ que são:           
Primeiro arquivo que vamos criar em /etc/Postfix/Mysql_transport_maps.cf
user = mail
password = senha
hosts = localhost
dbname = mail
select_field = transport
where_field = domain
Segundo arquivo que vamos criar /etc/postfix/mysql_virtual_alias_maps.cf 

user = mail

password = senha

hosts = localhost

dbname = mail

table = alias

select_field = goto

where_field = address

Terceiro arquivo que vamos criar /etc/postfix/mysql_virtual_domains_maps.cf 

user = mail

password = senha

hosts = localhost

dbname = mail

table = domain

select_field = domain

where_field = domain

Quarto arquivo que vamos criar /etc/postfix/mysql_virtual_mailbox_limit_maps.cf 

user = mail

password = senha

hosts = localhost

dbname = mail

table = mailbox

select_field = quota

where_field = username

Quinto arquivo que vamos criar /etc/postfix/mysql_virtual_mailbox_maps.cf 


user = mail

password = senha

hosts = localhost

dbname = mail

query = SELECT maildir FROM mailbox WHERE username='%s' AND

active = 1











Acertar as permissões dos arquivos criados     
chmod o= /etc/postfix/mysql_*            
chgrp postfix /etc/postfix/mysql_*     
Vamos gerar agora as chaves para o nosso Postfix        
#mkdir /etc/postfix/ssl              
# cd /etc/postfix/ssl     
# openssl genrsa -des3 -rand /etc/hosts –out smtpd.key 1024
# chmod 600 smtpd.key             
# openssl req -new –key smtpd.key -out smtpd.csr     
#
openssl x509 -req -days 365 -in smtpd.csr -signkey smtpd.key -out smtpd.crt             

# openssl rsa -in smtpd.key -out smtpd.key.unec         
# mv smtpd.key.unec smtpd.key           
# openssl req -new -x509 -extensions v3_ca –keyout cakey.pem -out cacert.pem -days 365
   
Acertando as permissões do arquivo criados   
# chown -R root:postfix /etc/postfix/ssl/          

# chmod -R 640 /etc/postfix/ssl/           
Ajustar os aliases           
mv /etc/aliases /etc/postfix
Vamos agora editar o arquivo /etc/postfix/aliasesna primeira linha do arquivo adicione.    
root: admin@dominio.local  
Agora vamos regerar a nossa base dos aliases
newaliases
Configurando o SASL                   

Habilitar o SASL para ser iniciado e para que trabalhe enjaulado junto com o Postfix .

Configurar o SASL o arquivo é /etc/default/saslauth                 

# vim /etc/default/saslauthd [...]

START=yes

[...]

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"

Criar o link do SASL para trabalhar com o postfix.

rm -r /var/run/saslauthd/
mkdir -p /var/spool/postfix/var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /var/run
chgrp sasl /var/spool/postfix/var/run/saslauthd           
Vamos adicionar o Postfix no grupo do Sasl     
adduser postfix sasl   
Agora vamos configurar a conexão do SASL com o MySQL:       
 vim /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
auxprop_plugin: mysql
mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 NTLM
sql_engine: mysql
sql_hostnames: localhost
sql_user: mail
sql_passwd: 102010
sql_database: mail
sql_select: SELECT password FROM users WHERE user = '%u'@'%r'

Reiniciar os serviços /etc/init.d/postfix restart &&/etc/init.d/saslauthd restart      
Vamos criar um link também do MySQL para que o Postfix possa usá-lo
mkdir -p /var/spool/postfix/var/run/mysqld
Acertando o arquivo de inicialização do mysql em /etc/init.d/mysql restart   
insira a linha abaixo entre os dois fi’s para quando o mysql for iniciar ele criará o socket eo link
/bin/ln -f /var/run/mysqld/mysqld.sock /var/spool/postfix/var/run/mysqld/mysqld.sock
Reiniciar o MySQL
/etc/init.d/mysql restart           
Configurar o Courier o arquivo é /etc/courier/authdaemonrc
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=5
authdaemonvar=/var/run/courier/authdaemon
DEBUG_LOGIN=0
DEFAULTOPTIONS=""
LOGGEROPTS=""

Vamos à configuração do /etc/courier/authmysqlrc lembrando que o uid e gid é o resultado obtido do comando greppostfix /etc/passwd
MYSQL_SERVER localhost
MYSQL_USERNAME mail
MYSQL_PASSWORD senha
MYSQL_SOCKET /var/run/mysqld/mysqld.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE mail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD '108'
MYSQL_GID_FIELD '108'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD '/home/vmail'
MYSQL_MAILDIR_FIELD CONCAT("/home/vmail/",maildir)
MYSQL_QUOTA_FIELD concat(quota,'S')

As configurações dosarquivos imapd, pop3d, imapd-ssl ,pop3d-ssl já vem prontas para funcionar configure se achar necessário.
Gerar os certificados para autenticação agora via ssl:
# cd /etc/courier
#Imapd.cnf
RANDFILE = /usr/lib/courier/imapd.rand
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=BR
ST=MG
L=Belo Horizonte
O=Empresa Mail Server
OU=Empresa IMAP SSL key
CN=mail.dominio.tele
[ cert_type ]
nsCertType = server

#pop3.cnf
# vim pop3d.cnf
RANDFILE = /usr/lib/courier/pop3d.rand
[ req ]
default_bits = 1024
encrypt_key = yes
distinguished_name = req_dn
x509_extensions = cert_type
prompt = no
[ req_dn ]
C=BR
ST=MG
L=Belo Horizonte
O=Empresa Mail Server
OU=Empresa POP3 SSL key
CN=mail.dominio.tele
[ cert_type ]
nsCertType = server

Agora vamos remover os certificados antigos
rm /etc/courier/imapd.pem && rm /etc/courier/pop3d.pem
Gerando o certificado do imapd e pop3d
/usr/sbin/mkimapdcert && /usr/sbin/mkpop3dcert
Vamos reiniciar todos serviços do courier 
/etc/init.d/courier-authdaemon restart
/etc/init.d/courier-imap restart
/etc/init.d/courier-pop restart
/etc/init.d/courier-pop-ssl restart
/etc/init.d/courier-imap-ssl restart
/etc/init.d/postfix restart
/etc/init.d/saslauthd restart


Instalando e configurando Webmail
Criar tabelas no banco de dados para nosso webmail
# mysql -u root -p

mysql>CREATE DATABASE webmail;
mysql>CREATE USER webmail@localhost IDENTIFIED BY '102010';
mysql>GRANT ALL PRIVILEGES ON webmail.* TO webmail@localhost;
mysql>FLUSH PRIVILEGES;
mysql>QUIT;
cd /usr/local/sites
Baixar o pacote wget –c
http://www.afterlogic.com/download/webmail_php.zip
unzip webmail_php.zip
chown –R root:www-data webmail/
cd webmail
# find . -type d -exec chmod 755 {} \;
# find . -type f -exec chmod 644 {} \;
# find . -type d -exec chown www-data:www-data {} \;
# find . -type f -exec chown www-data:www-data {} \;

Configurando o Webmail
Se preferir usar o webmail sendo acessado tipo webmail.dominio.tele basta adicionar uma entrada do tipo webmail IN CNAME www no DNS, caso queira acessar por ip bastar acessar http://ipdoservidor. Nesse material vou usar por resolução por nome para isso vou criar um virtual host.

<VirtualHost *:80>
DocumentRoot ''/usr/local/sites/postfixadmin"
ServerNamewebmail.dominio.tele
ServerAliaswebmail.dominio.tele
ErrorLog ''/usr/local/sites/webmail.dominio.tele-error.log"
CustomLog ''/usr/local/sites/webmail.dominio.tele-access.log" common
<Directory ''/usr/local/sites/postfixadmin">
Options Indexes FollowSymLinksMultiViews
AllowOverrideAll
OrderAllow,deny
AllowFromAll
</Directory>
ServerSignature Off
LanguagePriority en pt-br de esfr it nlsvpt-br
AddDefaultCharset utf-8
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
php_flagexpose_php Off
php_flagallow_url_fopen Off
php_flagallow_url_include Off
php_flagmagic_quotes_gpc Off
php_flagregister_globals Off
php_flagdisable_functionsshow_source
php_flagdisable_functions system
php_flagdisable_functionsshell_exec
php_flagdisable_functionspassthru
php_flagdisable_functions exec
php_flagdisable_functionspopen
php_flagdisable_functionsproc_open
php_flagdisable_functionssymlink
php_valueinclude_path .
</IfModule>
</VirtualHost>

Vamos habilitar o virtual host criado
a2ensite webmail
Caso não queira trabalhar com o host Virtual temos que criar um link simbólico apontando para o diretório corrente para o apache interpretar.
# ln -s /usr/local/sites/webmail/ /var/www/
Acesse o servidor para configurar
http://webmail.dominio.tele/install ou sem o host Virtual
http://ip_servidor/installna proxima tela que aparecerá clique no Link Runtheinstaller
Ná próxima tela temos o relatório sobre os requisitos para a instalação se estiver tudo OK é que estamos no caminho certo caso haja algo errado, arrume para continuar, siga os passos novamente para a configuração do webmail. No Final desta tela selecione o botão NEXT.
Agora temos que aceitar o termo de licenciamento para utilizarmos essa aplicação. Selecione I Agree. Agora nesta próxima tela temos que informar os dados da nossa base de dados para o webmail.
SQL login: no nosso caso webmail
SQL password: a senha para o webmail.
Databasename: o nome que definimos para o nosso banco webmail.
Host: o servidor que contém a nossa base de dados no nosso caso localhost.
Após informar isso selecione Test database.
Após isso no final da tela selecione NEXT.
Agora temos que criar uma senha para o nosso usuário admin do nosso webmail. Informe a senha confirme e selecione NEXT.
Agora vamos informar quem vai ser o nosso servidor de e-mail localhost e selecionar quais protocolos o nosso webmail vai dar suporte, após informar os dados clique em Test connection e temos que obter  Sucessfull caso retorne erro corrija. Após isso selecione NEXT.
Agora temos a nossa tela de gerenciamento. Faça as modificações necessárias, ex: fuso horário, skins padrões e etc. Não se esqueça de cadastrar os domínios que vão ser utilizado no seu webmail. Vamos agora fazer o que esta sendo solicitado apagar a pasta install
# mv /usr/local/sites/install.* /home/usuário ou rm –rf install/
Agora vamos a nossa tela de gerenciamento novamente.
http://webmail.dominio.tele/adminpanel/ ou https://ipdoservidor/webmail/adminpanel/
Informe o usuário mailadm e a senha e vamos efetuar o login.
A próxima tela vai ser atela de gerenciamento do domínio faça personalização de skins, hora e etc. agora vá ao Postfixadmin, efetue a criação de um domínio e um usuário. Após termos um domínio e usuário criados no Postfixadminvolteà tela do nosso webmail.
http://webmail.dominio.tele ou http://ipdoservidor/webmail/
Informe o usuário e a senha.
Agora temos o nosso webmail funcionando Abaixo a tela de login do nosso webmail.·.










Instalando Antivírus e antispam
aptitude -y install clamav-daemon amavisd-new spamassassin 
Editar o arquivo vim /etc/default/spamassassin
ENABLED=1
Copiar arquivos de configuração
cp /usr/share/doc/amavisd-new/examples/amavisd.conf-sample.gz /etc/amavis/
Descompactar o arquivo na pasta correspondente.
gunzip /etc/amavis/amavisd.conf-sample.gz
Mover o arquivo de exemplo para pasta padrão do amavis.
mv /etc/amavis/amavisd.conf-sample /etc/amavis/amavisd.conf
Editar o arquivo de configuração do amavis da seguinte forma:
vi /etc/amavis/amavisd.conf
# line 66: uncomment
$MYHOME = '/var/lib/amavis';
# line 71: specify domain name
$mydomain = 'server.world';
# line 73: uncomment and specify hostname
$myhostname = 'mail.server.world';
# line 77,78: change
$daemon_user = 'amavis';
$daemon_group = 'amavis';
# line 62: make it comment (not notify if virus would detect )
#
$virus_admin = "virusalert\@$mydomain";
# line 1934: uncomment and add
['ClamAV-clamd',
  \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.ctl"],
  qr/\bOK$/m, qr/\bFOUND$/m,
  qr/^.*?: (?!Infected Archive)(.*)
FOUND$/m ],

Em sguida editar o arquivo que determina o modo de filtragem.
vi /etc/amavis/conf.d/15-content_filter_mode
# line 13: uncomment
@bypass_virus_checks_maps = (
  \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
# line 24: uncomment ( if you use spam filter )
@bypass_spam_checks_maps = (
  \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

Em sguida insira a linha abaixo no arquivo main.cf
vi /etc/postfix/main.cf
content_filter=smtp-amavis:[127.0.0.1]:10024

Adiciona as seguintes linhas no arquivo principal do postfix main.cf
vi /etc/postfix/master.cf
smtp-amavis unix -       -       n      -     2 smtp
      -o smtp_data_done_timeout=1200
      -o smtp_send_xforward_command=yes
      -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 smtpd_recipient_restrictions=permit_mynetworks,reject
      -o mynetworks=127.0.0.0/8
      -o strict_rfc821_envelopes=yes
      -o smtpd_error_sleep_time=0
      -o smtpd_soft_error_limit=1001
      -o smtpd_hard_error_limit=1000

Acerte as permissoes do arquivo
chmod -R 775 /var/lib/amavis/tmp

Adicione o amavis ao grupo do amavis para que possam trabalhar em conjunto
usermod -G amavis clamav
Renicie os serviços
/etc/init.d/clamav-daemon restart
/etc/init.d/spamassassin start
/etc/init.d/postfix restart
/etc/init.d/amavis restart
Caso a inicialização do clamav falhe verifique o seguinte arquivo abaixo deixando-o da seguinte forma: 
#vim /etc/amavis/conf.d/05-node_id
chomp($myhostname = "nomedamaquina+dominio");
Em seguida pare o amavis e reinicie o  clamav depois basta iniciar o amavis
/etc/init.d/amavis stop
/etc/init.d/clamav-daemon restart
/etc/init.d/amavis start

Recebendo mensangens de bloqueio
Configure no /etc/amavis/amavisd.conf as diretivas para recebimento do e-mail de bloqueio de mensagem,lembrando que o usuário postmaster deve ser criado anteriormente para receber as mensagens de bloqueio.
$virus_admin = "postmaster@dominio.local";
$hdrfrom_notify_sender = "amavisd-new <postmaster@dominio.local>";
$mydomain = 'dominio.local';      # (no useful default)
$myhostname = 'node.dominio.local';  # fqdn of this host, default by uname(3)
Configure ainda o arquivo /etc/amavis/conf.d/05-domain_id conforme exemplo abaixo:
#chomp($mydomain = `head -n 1 /etc/mailname`);
chomp($mydomain = `dominio.local`);
@local_domains_acl = ( "dominio.local" );
Altere tambem o arquivo /etc/amavis/conf.d/05-node_id
chomp($myhostname = 'node.dominio.local');
Altere /etc/amavis/conf.d/20-debian_defaults
$virus_admin = "postmaster\@dominio.local
E por fim insira na primeira linha do arquivo o comando abaixo /etc/amavis/conf.d/50-user devendo ficar da seguinte forma:
$mailfrom_notify_admin = 'postmaster@dominio.local';
Reinicie o amavis /etc/init.d/amavis restart
Teste de bloqueio Eicar crie um e-mail com o seguinte conteúdo.
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
E observe os logs em /var/log/mail.log
Sep  4 00:38:48 node amavis[25713]: (25713-01) Blocked INFECTED (Eicar-Test-Signature), LOCAL [127.0.0.1] [127.0.0.1] <admin@dominio.local> -> <leandro@dominio.local>, quarantine: w/virus-wDvpuCwwIj9M, Message-ID: <20110904033847.A6AE91BCDD@node.dominio.local>, mail_id: wDvpuCwwIj9M, Hits: -, size: 539, 510 ms
Sep  4 00:38:48 node postfix/smtp[25719]: A6AE91BCDD: to=<leandro@dominio.local>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.62, delays=0.04/0.04/0.05/0.49, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=25713-01 - VIRUS: Eicar-Test-Signature)

NOTA: Caso apareça os erros abaixo  (atenção para as linhas vermelhas)certifique-se que o arquivo
/etc/amavis/conf.d/50-user fique  da seguinte forma:

$mailfrom_notify_admin = 'postmaster@dominio.local';

Sep  4 00:31:50 node postfix/smtpd[25648]: connect from localhost[127.0.0.1]
Sep  4 00:31:50 node postfix/smtpd[25648]: 5A4061BCEF: client=localhost[127.0.0.1]
Sep  4 00:31:50 node postfix/cleanup[25652]: 5A4061BCEF: message-id=<20110904033150.5A4061BCEF@node.dominio.local>
Sep  4 00:31:50 node postfix/smtpd[25648]: disconnect from localhost[127.0.0.1]
Sep  4 00:31:50 node postfix/qmgr[3958]: 5A4061BCEF: from=<admin@dominio.local>, size=539, nrcpt=1 (queue active)
Sep  4 00:31:51 node postfix/smtpd[25692]: connect from localhost[127.0.0.1]
Sep  4 00:31:51 node postfix/smtpd[25692]: warning: Illegal address syntax from localhost[127.0.0.1] in MAIL command: <postmaster@${myhostname}>
Sep  4 00:31:51 node amavis[25686]: (25686-01) Negative SMTP resp. to DATA: 503 5.5.1 Error: need RCPT command
Sep  4 00:31:51 node amavis[25686]: (25686-01) (!)SEND via SMTP: <postmaster@${myhostname}> -> <postmaster@dominio.local>,ENVID=AM..20110904T033151Z@node.dominio.local 501 5.1.7 Failed, id=25686-01, from MTA([127.0.0.1]:10025): 501 5.1.7 Bad sender address syntax
Sep  4 00:31:51 node amavis[25686]: (25686-01) (!)FAILED to notify admin: 501 5.1.7 Failed, id=25686-01, from MTA([127.0.0.1]:10025): 501 5.1.7 Bad sender address syntax
Sep  4 00:31:51 node amavis[25686]: (25686-01) Blocked INFECTED (Eicar-Test-Signature), LOCAL [127.0.0.1] [127.0.0.1] <admin@dominio.local> -> <leandro@dominio.local>, quarantine: Y/virus-YQANL-iczfvC, Message-ID: <20110904033150.5A4061BCEF@node.dominio.local>, mail_id: YQANL-iczfvC, Hits: -, size: 539, 671 ms
Sep  4 00:31:51 node postfix/smtp[25653]: 5A4061BCEF: to=<leandro@dominio.local>, relay=127.0.0.1[127.0.0.1]:10024, delay=0.74, delays=0.05/0/0.04/0.64, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=25686-01 - VIRUS: Eicar-Test-Signature)
Sep  4 00:31:51 node postfix/qmgr[3958]: 5A4061BCEF: removed
























Nenhum comentário:

Postar um comentário