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: 46.538 ]

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

Benchmark entre servidores de e-mails

Servidor de e-mail no Linux com MTA Sceo

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

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

Leitura recomendada

Servidor de email + webmail no OpenSuSE 10.2

Servidor de E-mails Falido?

Implantação de um Sistema de Workgroup Open Source

Traduzindo o Thunderbird para Português

Webmail Roundcubemail em PHP4/PHP5 com skins, LDAP e extras

  
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