Servidor de emails com Dovecot e MTA Sceo (projeto brasileiro)

Como criar um servidor de e-mails completo e avançado usando o Dovecot e o projeto brasileiro MTA Sceo com banco de dados MySQL. Técnicas antiDoS e antispam a nível de SMTP. Antivírus Clamav, antispam Spamassassin, Greylist e RBLs. Quota de espaço e controle do número de e-mails que cada cliente pode enviar.

[ Hits: 47.877 ]

Por: Lucas Priori em 08/10/2010


Spamassassin



Para quem não sabe, o Spamassassin é o filtro antispam. Ele vai filtrar boa parte do lixo eletrônico. Antes de instalar o Spamassassin nós precisamos instalar os módulos que puxamos. São algumas ferramentas do Perl e que o antispam vai usar.

No caso da minha distribuição (Slackware 12.0 Full) eu não tive problemas para "compilar" estes módulos. É possível que o Spamassassin peça por mais algum modulo necessário que a sua distribuição não tenha. Neste caso você pode entrar no site http://search.cpan.org e procurar pelo módulo, puxar e instalar da mesma forma que instalo os outros aqui (caso não queira instala-lo, pule para a próxima parte Sceo_rquota).

Vamos ao trabalho:

# cd /home/progs
# tar xzf Digest-SHA1-2.12.tar.gz
# cd Digest-SHA1-2.12
# perl Makefile.PL
# make
# make install

# cd /home/progs
# tar xzf HTML-Parser-3.65.tar.gz
# cd HTML-Parser-3.65
# perl Makefile.PL
# make
# make install

# cd /home/progs
# tar xzf Net-DNS-0.66.tar.gz
# cd Net-DNS-0.66
# perl Makefile.PL


Aqui é capaz que ele te faça uma pergunta. CALMA!!! Sem pânico. É só dar ENTER.

# make
# make install

# cd /home/progs
# tar xzf NetAddr-IP-4.027.tar.gz
# cd NetAddr-IP-4.027
# perl Makefile.PL
# make
# make install

# cd /home/progs
# tar xzf IO-Zlib-1.10.tar.gz
# cd IO-Zlib-1.10
# perl Makefile.PL
# make
# make install


Esta terminando. Força aí! Agora o Spamassassin:

# cd /home/progs
# tar xjf Mail-SpamAssassin-3.2.5.tar.bz2
# cd Mail-SpamAssassin-3.2.5/
# perl Makefile.PL
# make
# make install


Edite o arquivo de configuração do Spamassassin:

# pico /etc/mail/spamassassin/local.cf

Mude a opção trusted_networks para 127.0.0.0/8 e para sua rede local. Digamos que minha rede local seja 192.168.0.0/24, então ficaria assim:

trusted_networks 127.0.0.0/8 192.168.0.0/24

Acrescente a seguinte linha no final do arquivo:

skip_rbl_checks 1

Salve e saia do arquivo.

Spamassassin instalado e configurado, vamos agora criar um script para ligá-lo.

# pico /etc/rc.d/rc.spamd

Coloque o seguinte conteúdo:

#!/bin/sh

#############################################
# Script de controle do Spamassassin
#
spamd_start() {
  if [ -x /usr/bin/spamd ]; then
    echo "Starting spamd:   /usr/bin/spamd"
    /usr/bin/spamd -C /etc/mail/spamassassin -d -x -L --pidfile=/var/run/spamd.pid
  fi
}
spamd_stop() {
  pid=`cat /var/run/spamd.pid`
  kill $pid
}
case "$1" in
'start')
  spamd_start
  ;;
'stop')
  spamd_stop
  ;;
'restart')
  spamd_stop
  sleep 1
  spamd_start
  ;;
*)
  echo "Os parametros aceitaveis sao: $0 start|stop|restart"
esac

Salve e saia do arquivo e dê permissão de execução para ele:

# chmod 500 /etc/rc.d/rc.spamd

Agora rode o script para ligar o Spamassassin.

# /etc/rc.d/rc.spamd start

Faça o rc.local chamá-lo quando o sistema iniciar:

# echo "/etc/rc.d/rc.spamd start" >> /etc/rc.d/rc.local

Caso queira testá-lo, chame-o assim:

# spamc -c < email.eml

Onde "email.eml" é um arquivo texto que contém um email completo: header e corpo.

Nós temos duas opções para chamar o Spamassassin e fazê-lo filtrar nossos emails:

Opção 1 - Chamá-lo assim que o MTA remoto termina de entregar o email, com isso, a mensagem ainda pode ser recusada antes de ser aceita, mas a desvantagem é que se aquele email for para mais de um destinatário o bloqueio vai valer para todos e não há como separar a mensagem em pasta diferente (pasta Spam).

Opção 2 - Chamá-lo antes de entregar em cada caixa postal, através de um Shell Script acionado com a opção Dlocal do sceo.conf. Desvantagem é que servidor roda o Spamassassin mais vezes, uma para cada email interno, mas temos a vantagem de criar filtros individuais e se o email for considerado Lixo Eletrônico, ele vai parar na pasta Spam. Coisa que um Webmail ou cliente MUA configurado via IMAP podem acessar sem problemas. Eu prefiro a opção 2. Vou demonstrar as duas aqui. Escolha uma delas:

OPÇÃO 1:

Edite o arquivo /usr/local/sceo/regras_data:

# pico /usr/local/sceo/regras_data

Acrescente no final do arquivo a seguinte regra:

Obs.: Todos os comandos abaixo devem ficar em uma única linha.

!Ip? "127.0.0.1" !Auth? Exec! "/usr/bin/spamc -s 300000 -c < /var/spool/sceo/c%d" Exec_resp? "1" Log! "/var/log/spamd.log: Spam -> %i From:%f To:%r" Reply! "500 Email considerado Lixo Eletronico (Junk Mail)" Deny!

Caso a conexão não venha do localhost e não seja autenticada, o Sceo rodará o spamc para verificar a mensagem e recusar se for o caso e fazer um log (/var/log/spamd.log).

OPÇÃO 2:

Edite o arquivo /usr/local/sceo/sceo.conf:

# pico /usr/local/sceo/sceo.conf

Procure e altere a opção Dlocal que mudamos no início do tutorial para:

Dlocal "/usr/local/sceo/aplicafiltro %l"

Salve e saia do arquivo. Agora confirme a permissão de execução do arquivo /usr/local/sceo/aplicafiltro e edite-o:

# chmod 555 /usr/local/sceo/aplicafiltro
# pico /usr/local/sceo/aplicafiltro


Deixe-o desta forma:

#!/bin/sh

/usr/bin/spamc -s 300000 -c < $2
RESP=$?

if [ $RESP == 0 ]; then
# --- Caso O Spamassassin Tenha retornado ZERO (Nao e’ Spam) ---
/usr/local/libexec/dovecot/deliver -d $1 < $2
else
# --- Caso O Spamassassin Tenha retornado 1 (É’ Spam) Vamos separar na pasta Spam ---
/usr/local/libexec/dovecot/deliver -m Spam -d $1 < $2
fi

Salve e saia do arquivo. Esta feito. Se o Spamassassin considerar a mensagem como Lixo, o deliver vai entregar a mensagem na pasta Spam dentro da caixa postal do cliente.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Downloads
   3. Instalando o Sceo
   4. Instalando o Dovecot
   5. SPF e Greylist
   6. Antivírus Clamav
   7. Spamassassin
   8. Quota de envio
   9. Técnicas diversas
Outros artigos deste autor

MTA Selor: Servidor de E-mails - Novo Projeto GPL

Servidor de e-mail no Linux com MTA Sceo

Benchmark entre servidores de e-mails

Dividindo carga de saída de servidor SMTP (MTA Selor)

Leitura recomendada

Instalando MTA Sceo no FreeBSD 7.1

Qmail Auditor, auditoria no servidor Qmail

Implantação de um Sistema de Workgroup Open Source

Servidor de E-mails Falido?

Sendmail com antivírus e autenticação SMTP

  
Comentários
[1] Comentário enviado por leoberbert em 10/10/2010 - 03:59h

Excelente Artigo...

Está de parabéns!

[2] Comentário enviado por fmpfmp em 15/10/2010 - 16:01h

Só faltou a instalação de um sistema de Webmail para completar o artigo.

[3] Comentário enviado por obernan em 13/12/2010 - 20:26h

Valeu brother, muito bom seu tuto, obrigado !!!!

[4] Comentário enviado por ricardoschet em 08/03/2013 - 13:35h

Uso e recomendo


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts