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.595 ]

Por: Lucas Priori em 08/10/2010


SPF e Greylist



SPF

O Sceo tem suporte nativo a SPF, basta usá-lo. As respostas dos testes SPF se dão em números. Seguem os possíveis números:

Valor | Descrição
 0   -   Sem SPF
 1   -   Passou no teste. (Pass)
 2   -   O servidor não pertence a rede que mantém o domínio (Neutral)
 3   -   Este servidor não deveria estar mandando esse email (SoftFail)
 4   -   Email DEVE ser recusado (Fail)
 5   -   Erro temporário. (TempError)
 6   -   Erro permanente durante a checagem do SPF (PermError)

Edite o arquivo regras_remetente:

# pico /usr/local/sceo/regras_remetente

Acrescente as seguintes linhas:

!Ip? "127.0.0.1" Spf_test!
Spf_resp? "4" Reply! "550 Remetente recusado. SPF Fail" Deny!

Obs.: A exclamação (!) antes de uma condição inverte o resultado. Na regra acima (!Ip? "127....) ela será verdadeira se o IP conectado NÃO for o 127.0.0.1.

Caso queria bloquear também servidores com SoftFail:

Spf_resp? "3" Reply! "550 Remetente recusado. SPF SoftFail" Deny!

Se quiser adicionar a resposta do SPF no header do email, acrescente também:

Hadd! "X-Spf: %y"

%y -> Retorna o valor de resposta do teste SPF. Você pode usar esta variável nos outros arquivos de regras.

Salve e saia do arquivo.

SPF configurado!

Greylist

Alguns dizem que a Greylist vem caindo em desuso por atrasar mensagens válidas e por seu resultado final não ser tão eficiente. Eu discordo, a Greylist corta muito lixo eletrônico e se você souber quando usa-la, ela não atrasa mensagem de servidores bem configurados.

Para quem não sabe o que é a Greylist, aqui vai uma "rápida" explicação:

Existe um tipo de mensagem de erro no protocolo SMTP que indica um erro temporário, são os códigos que começam com 4 (Ex: 450, 451 etc).

Se um servidor válido e bem configurado tentar entregar um email ao destinatário interno lucas@meudominio.com.br e obter a seguinte resposta de nosso MTA: "450 Deu pau aqui e eu estou pegando fogo e NUNCA mais voce podera entregar este email a mim", ele não dará a mínima para a mensagem em si pois o que importa é o código na frente, 450, que diz que ele deve tentar mais tarde e é exatamente isso que ele vai fazer, mas muitos programas de spam não tentam ou se tentam, as vezes eles mudam o endereço de remetente. É ai que a Greylist entra.

A Greylist verifica em um banco de dados se IP+remetente está liberado lá, se não estiver, a Greylist diz ao Sceo para responder com erro temporário (450 Tente mais tarde), se for um spammer é muito provável que ele não tente e se for um servidor válido e bem configurado ele vai tentar entregar o email novamente, então, nesta segunda tentativa o email será aceito e o IP+remetente será liberado para não sofrer mais este atraso.

Grande parte das reclamações da Greylist é o fato dela atrasar o recebimento dos emails, mas nós a usaremos só se o servidor remoto não passar pelo teste SPF, ou seja, todos os servidores bem configurados NÃO sofrerão o atraso da Greylist (Nao atrasando mensagens do Gmail, Hotmail etc...) e outro diferencial é que não usaremos o endereço IP e sim o hostname que torna a Greylist muito mais eficiente.

Vamos a instalação:

# mkdir /usr/local/sceo/uteis
# cd /usr/local/sceo/uteis
# cp /home/progs/sceo_greylist.tar.bz2 .
# tar xjf sceo_greylist.tar.bz2


Criando o banco de dados:

# mysql
mysql> create database sceo_greylist;
mysql> grant all privileges on sceo_greylist.* to sceo@localhost identified by "minhasenha";

Lembre-se de colocar a mesma senha que usou para criação do banco de dados "mail".

mysql> flush privileges;
mysql> quit
# mysql sceo_greylist < sceo_greylist.sql

Agora você precisa colocar a senha do banco de dados no código fonte do sceo_greylist.

# pico sceo_greylist.c

Procure os defines "USUARIO" e "SENHA", altere seus valores colocando o usuário e senha do banco de dados sceo_greylist que criamos anteriormente.

#define USUARIO "sceo"
#define SENHA "minhasenha"

Salve e saia do arquivo para compilarmos.

# gcc sceo_greylist.c -o sceo_greylist -lmysqlclient

Se der erro na compilação é porque você não deve ter o Mysql-devel instalado aí em seu sistema operacional. Vamos fazer o Sceo acionar o sceo_greylist caso o MTA conectado não tenha passado pelo teste SPF.

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

# pico /usr/local/sceo/regras_destinatario

Acrescente a seguinte linha de regra:

!Ip? "127.0.0.1" !Spf_resp? "1" !Auth? Internal_rcpt? Exec! "/usr/local/sceo/uteis/sceo_greylist -i %s -f %f -t %r" Exec_resp? "1" Reply! "451 Tente mais tarde" Deny!

Obs.: As linhas passadas acima devem ficar em uma única linha dentro do arquivo.

Esta linha roda o programa sceo_greylist caso a resposta do SPF seja diferente de 1 (Pass), se a conexão NÃO for autenticada e se o destinatário for um email interno.

Caso queria processar Greylist para os MTAs que passarem pelo SPF também, basta tirar a segunda condição: !Spf_resp? "1".

Salve e saia do regras_destinatario. Não é preciso reiniciar o Sceo. Você só precisa reinicia-lo quando alterar o arquivo sceo.conf.

Agende o seu CRON para rodar a seguinte linha uma vez ao dia:

sceo_greylist -clean

Linha do CRON:

00 0 * * * /usr/local/sceo/uteis/sceo_greylist -clean

Isto fará a exclusão de registros mortos mantendo o banco de dados limpo e rápido.

Greylist instalada e configurada!

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

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

Servidor de e-mail no Linux com MTA Sceo

Benchmark entre servidores de e-mails

Leitura recomendada

Openfire no SLES 10 autenticando no Active Directory

Instalação do Zextras Suite para o Zimbra

Servidor de e-mail Postfix + MySQL + Dovecot + Cyrus

Instalação do Postfix e OpenWebmail no Slackware

Mutt - o melhor amigo do homem

  
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