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