Howto: Filtro de emails usando Spamassassin, Postifix, ClamAV, MailScanner e MailWatch

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

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

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.