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

Por: Lucas Priori em 08/10/2010


Quota de envio



Sceo_rquota

O Sceo_rquota é um programa externo que permite a você limitar a quantidade de mensagens que uma conta de email pode enviar por dia/semana/mês. O controle pode ser feito por domínio, remetente, usuário autenticado, IP etc.

Isto protege o seu servidor impedindo que algum cliente engraçadinho o use para enviar spam.

É muito simples instalar e configurar. Vamos jogá-lo no diretório /usr/local/sceo/uteis criado anteriormente.

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


Crie o banco de dados:

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

ATENÇÃO: Lembre-se de colocar a mesma senha que usou para a criação do banco de dados "mail" lá no começo. Se você mudar a senha aqui, o sceo_module usado pelo Sceo vai parar de funcionar e ai eu vou receber um email seu com o assunto: "Mas não funciona..."

Crie as tabelas usando o arquivo sceo_rquota.sql que acompanha o pacote:

# mysql sceo_rquota < sceo_rquota.sql

Edite o sceo_rquota.c:

# pico sceo_rquota.c

Procure e altere as defines USER e PASS, colocando o usuário e senha do banco de dados sceo_rquota criado acima:

#define USER "sceo"
#define PASS "minhasenha"

Salve e saia do arquivo e já podemos compilar o programa:

# gcc sceo_rquota.c -o sceo_rquota -lmysqlclient

Se der alguma mensagem de erro é porque você não tem o Mysql-devel instalado.

Abra o arquivo de regras que o Sceo executa sempre que o remetente é especificado: /usr/local/sceo/regras_remetente

# pico /usr/local/sceo/regras_remetente

Acrescente a seguinte linha no inicio do arquivo:

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

Auth? !From? "" Exec! "/usr/local/sceo/uteis/sceo_rquota -c -u %f" Exec_resp? "1" Reply! "500 Limite de envio de emails foi excedido" Deny!

Salve e saia do arquivo.

Explicação da regra:

Primeiro ele verifica se a atual conexão é autenticada e depois se o remetente não é nulo e então executa o programa externo /usr/local/sceo/uteis/sceo_rquota com a opção -c e -u <email do remetente>. Este programa faz uma consulta no BD para saber se remetente já estourou o limite de envio. Depois a função Exec_resp? testa o valor retornado pelo ultimo programa executado e se for 1, o servidor responde "500 Limite de envio ...." e nega o remetente impedindo assim o envio do email. O sceo_rquota retorna 1 se o email estourou o limite e ZERO caso contrário.

Mas ainda falta uma configuração. Precisamos fazer o sceo_rquota atualizar no BD a quantidade de emails enviada pelo remetente. Abra o arquivo de regras que o Sceo roda assim que o cliente termina de enviar o email: /usr/local/sceo/regras_data

# pico /usr/local/sceo/regras_data

Coloque a seguinte regra no final do arquivo:

Auth? !From? "" Exec! "/usr/local/sceo/uteis/sceo_rquota -a %n -u %f -d 1000"

Salve e saia do arquivo.

Explicação da regra:

Primeiro ele verifica se a atual conexão é autenticada e depois se o remetente não é nulo e então executa o sceo_rquota com a opção -a <numero de destinatários do email> -u <email do remetente> -d 1000.

O valor 1000 é a quota padrão a ser criada caso o remetente ainda não tenha um registro no BD. Você pode alterar a quota de um email já registrado no banco de dados a hora que quiser.

Agende seu cron para rodar o sceo_rquota de forma a zerar o número de destinatários enviados de cada remetente ou dominio etc.

Você pode agendar o cron uma vez ao dia, semana, mês ou da forma que quiser. Escola uma das formas abaixo.

Exemplos de configurações no Cron.

Por dia:

00 0 * * * /usr/local/sceo/uteis/sceo_rquota -z

Por semana:

00 0 * * 0 /usr/local/sceo/uteis/sceo_rquota -z

Por mês:

00 0 1 * * /usr/local/sceo/uteis/sceo_rquota -z

Servidor finalizado. Não se esqueça de chamar o Sceo e o Dovecot quando o sistema ligar:

# echo "/etc/rc.d/rc.sceo start" >> /etc/rc.d/rc.local
# echo "/etc/rc.d/rc.dovecot start" >> /etc/rc.d/rc.local

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

Benchmark entre servidores de e-mails

Servidor de e-mail no Linux com MTA Sceo

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

Leitura recomendada

Servidor de e-mail Postfix com Fetchmail, Procmail, Blockmail e antispam

Solução completa com o sendmail (segunda edição)

Servidor de email com SMTP, POP, IMAP, quota e MySQL

Implantação de um Sistema de Workgroup Open Source

Exim4 com MailScanner + Clamav

  
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