Howto: Filtro de emails usando Spamassassin + Postfix + ClamAV + MailScanner +MailWatch
Howto: Filtro de emails usando Spamassassin + Postfix + ClamAV + MailScanner + MailWatchPosted in August 4, 2009 ¬ 2:00 pmh.Eduardo Silva7 Comments »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 sendmailInstale 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 empresaRun As User = postfixRun As Group = postfixIncoming Queue Dir = /var/spool/postfix/holdOutgoing Queue Dir = /var/spool/postfix/incomingMTA = postfixVirus Scanners = clamdClamd Socket = /tmp/clamd.socketUse SpamAssassin = yesSpamAssassin 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.netDescompacte 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 -pEnter 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.phpAgora edite o conf.php e ajuste os campos: DB_USER e DB_PASS.
Integrando o MailScanner e o MailwatchPare 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 = &MailWatchLoggingDetailed Spam Report = yesQuarantine Whole Message = yesQuarantine Whole Message As Queue Files = noInclude Scores In SpamAssassin Report = yesQuarantine User = rootQuarantine 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.pmProcure 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.cfrelay_domains = exemplo.com.br
Agora edite /etc/postfix/transport e insiraexemplo.com.br smtp:172.22.10.93Execute:# 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.brJá 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
