Howto: Filtro de emails usando Spamassassin + Postfix + ClamAV + MailScanner + MailWatch
O MailWatch é uma interface Web para o gerenciamento do MailScanner + ClamAV + SpamAssassin + Postfix, existem diversas formas de implementar uma solução para filtragem de emails, mas a minha preferência é configurar um servidor (virtual ou não) separado para esta função, principalmente devido ao fato do processo de filtragem consumir uma boa parte de recursos do hardware em servidores mais movimentados. Outra grande vantagem deste método, é que ele é compatível com qualquer serviço de email (zimbra, exchange, groupwise, etc….).
Neste post vou explicar como montar um servidor para filtrar todo o seu tráfego de emails, realizando a remoção do “lixo eletrônico” antes de entregar as mensagens para o seu servidor principal de emails.
Partindo de uma instalação mínima do CentOS 5.3, remova o “sendmail”
# yum remove sendmail
Instale o postfix + serviços necessários
# yum install postfix mysql-server php-mysql php-gd httpd gcc spamassassin patch rpm-build
Instalando o clamAV:
Baixe os pacotes RPM do clamav em: http://packages.sw.be/clamav/ e instale com o comando:
# rpm -ivh clam*
Preparing... ############ [100%]
1:clamav-db ############ [100%]
2:clamav ############ [100%]
3:clamav-devel ############ [100%]
4:clamd ############ [100%]
Instalando o Mailscanner:
Faça o download do tar.gz contendo os pacotes RPM
# wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.XX.XX-X.rpm.tar.gz
# tar xvfz MailScanner-4.XX.XX-X.rpm.tar.gz
# cd MailScanner-4.XX.XX-X
# ./install.sh
Agora edite o arquivo /etc/MailScanner/MailScanner.conf
%org-name% = Nome da Empresa
%org-long-name% = Nome completo da empresa
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanners = clamd
Clamd Socket = /tmp/clamd.socket
Use SpamAssassin = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
Instalando o Mailwatch:
Faça o download da última versão “stable” do mailwatch em http://mailwatch.sourceforge.net
Descompacte o pacote de instalação e entre no diretório mailwatch-1.0.X
# mysql -u root < create.sql
Crie o usuário mailwatch no mysql com permissões completas na base mailscanner
# mysql -u root
> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'minhasupersenha';
> GRANT FILE ON *.* TO mailwatch@localhost IDENTIFIED BY 'minhasupersenha';
Edite o arquivo MailWatch.pm e ajuste os parâmetros db_user e db_pass de acordo com o usuário e senha criados.
my($db_user) = 'mailwatch';
my($db_pass) = 'minhasupersenha';
Agora copie o arquivo MailWatch.pm para o CustomFunctions do MailScanner
# cp MailWatch.pm /usr/lib/MailScanner/MailScanner/CustomFunctions
Criando um usuário para o MailWatch (este é o usuário com permissões de administrador, após criar este usuário, os outros podem ser geridos através da interface Web):
# mysql mailscanner -u mailwatch -p
Enter password: ******
> INSERT INTO users (username, password, fullname, type) VALUES ('admin',md5('senhasegura'),'Administrator','A');
Movendo a interface web do Mailwatch para o root dir do apache:
# mv mailscanner/ /var/www/html/
Ajustando permissões:
# cd /var/www/html/mailscanner/
# chown root:apache images
# chmod ug+rwx images
# chown root:apache images/cache
# chmod ug+rwx images/cache
Crie o arquivo conf.php com base no conf.php.example
# cp conf.php.example conf.php
Agora edite o conf.php e ajuste os campos: DB_USER e DB_PASS.
Integrando o MailScanner e o Mailwatch
Pare o MailScanner
# service MailScanner stop
Edite o arquivo /etc/MailScanner/MailScanner.conf e verifique se estas opções estão ajustadas
Always Looked Up Last = &MailWatchLogging
Detailed Spam Report = yes
Quarantine Whole Message = yes
Quarantine Whole Message As Queue Files = no
Include Scores In SpamAssassin Report = yes
Quarantine User = root
Quarantine Group = apache (this should be the same group as your web server)
Quarantine Permissions = 0660
Opcionalmente (para facilitar o debug)
Always Include SpamAssassin Report = yes
Para integrar Whitelist/Blacklist ao mailwatch:
Edite o arquivo SQLBlackWhiteList.pm
Procure pela função “CreateList” e nela defina as informações da sua base de dados.
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'minhasupersenha';
# cp SQLBlackWhiteList.pm /usr/lib/MailScanner/MailScanner/CustomFunctions
Agora vamos configurar o postfix para fazer relay das mensagens do domínio:
Edite o arquivo /etc/postfix/main.cf
relay_domains = exemplo.com.br
Agora edite /etc/postfix/transport e insira
exemplo.com.br smtp:172.22.10.93
Execute:
# postmap /etc/postfix/transport
Estas duas últimas configurações farão com que o postfix permita o relay de mensagens do domínio exemplo.com.br
Já o Transport, irá informar para o postfix que as entregas para o domínio exemplo.com.br devem ser no ip 172.22.10.93
Após realizar testes (muito importante para um ambiente de produção), edite a zona de DNS do seu domínio, e altere a sua entrada MX de forma que aponte para o filtro de emails (e não para o seu mailserver). Desta forma todas as mensagens enviadas para exemplo.com.br cairão no sistema de filtragem e se estiverem limpas serão encaminhadas para o seu servidor de emails.
Para acessar o Mailwatch: http://ip_do_mailwatch/mailscanner
Posts Relacionados:
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Boa tarde,
Eduardo,
Parabén pelo artigo, muito bem elaborado e escrito (como poucos hoje no mundo Open Source). O que gostaria de saber é se em ponto de vista da segurança e facilidade de manutenção, qual seria a melhor opção?
Esse filtro ou o do Endian, passado por você em um outro artigo.
Sucessos e boa sorte,
Abraços,
Emerson Lima
Olá Emerson,
Obrigado pelo reconhecimento, mas preciso discordar de você em um ponto, existem muitos artigos de alta qualidade no mundo Open Source, claro que também existem centenas de milhares de artigos incompletos ou com informações erradas/desatualizadas.
Quando eu escrevo um artigo, normalmente sigo ele por completo, para verificar se apenas seguindo o que eu escrevi é possível alcançar o resultado esperado. (ou seja, sempre testo antes de publicar)
Agora, respondendo a sua pergunta; com certeza o Filtro de emails do Endian é bem mais simples de gerir do que este, entretanto o Mailwatch é mais completo e também oferece mais flexibilidade e mais opções de customização.
Qual é o melhor para a sua empresa? Depende das suas necessidades, conhecimentos, e tempo disponível.
Espero ter esclarecido sua dúvida
[]’s
Boa noite Eduardo,
Muito obrigado pela gentileza, e clareza em responder.
Sucessos,
Emerson
Eduardo boa tarde,
Fiz todo o processo acima descrito, o Postfix faz a entrga para o meu servidor exchange 2007, mas um unico problema vem tirando meu sono, o MailScanner não consigo fazer funcionar,banco de dados abre direitinho,acesso o Mailwach sem problemas, mas estou recebendoo uma quantidade enorme de spam, saberia me ajudar?
grato
Ricardo
Olá Ricardo,
O seu mailscanner está bloqueando alguma mensagem ou não tem absolutamente nada sendo bloqueado? Se nenhuma mensagem estiver sendo bloqueada, você provavelmente pulou alguma etapa do tutorial, comece repassando todas as configurações descritas no tutorial, sei que é meio extenso, mas eu verifiquei cada passo que descrevi para ter a certeza de que está funcionando.
Logs e mensagens de erro também ajudam para identificar o problema.
[]’s
Opa, muito bom tutorial, mas fiquei com uma dúvida, procurei pela net alguma coisa em relação ao zimbra com mailscanner, você já conseguiu implementar isso? eu to tentando, até achei alguns comentários nos fóruns do zimbra em relação a pessoas que conseguiram, mas eu não consigo ter a fila de e-mails nos mailscanner/mailwatch!
Já viu algo sobre isso, ou é realmente mais fácil implementar um servidor exclusivo para isso.
Abraços e obrigado
Alex,
É muito mais fácil e descomplicado montar um servidor separado para esta finalidade do que integrar com o zimbra (ou qualquer outro serviço). Se você utiliza algum tipo de virtualização, você pode pensar em virtualizar o filtro de emails desta forma não desperdiça um servidor exclusivamente para isto. Se você ainda não utiliza nenhum tipo de virtualização, recomendo dar uma estudada no assunto
Experimente o Proxmox, escrevi um pequeno post sobre ele aqui
[]’s.