Tentando mais uma vez facilitar a vida dos administradores do Qmail, escrevi um script para apagar as contas dos usuários que não acessam seus e-mails durante um certo espaço de tempo. É um script simples e pequeno mas que ajuda muito na hora de fazer grandes "limpezas" em servidores.
É muito comum ter em um servidor de e-mails contas inativas e tratando-se de servidores que armazenam milhares de contas, torna-se uma tarefa difícil (pra não dizer impossível) administrar isso. Particularmente não conheço nenhuma ferramenta no Qmail que gerencie este tipo de situação, contudo, temos o glorioso/poderoso SHELL SCRIPT pra resolver ;)
OBS: Se alguém conhece alguma ferramenta do Qmail para isso, por gentileza comente.
Antes de tudo devo explicar umas coisinhas básicas:
1 - O script foi desenvolvido para quem usa Vpopmail com Maildir e autenticação via CDB, pois todos os testes das contas baseam-se em dois arquivos chamados:
lastauth -- Guarda a ultima autenticação do usuário;
vpasswd -- Lista de usuários do domínio.
** No futuro talvez eu faça uma implementação para quem usa Vpopmail com MySQL.
2 - O script checa se a conta tem algum redirecionamento (os .qmail da vida), pois é natural que contas redirecionadas estejam a muito tempo sem acesso e pode ser que você queira manter o redirecionamento.
Vamos ao que interessa, segue abaixo o código comentado:
#!/bin/bash
#########################################
# Script para apagar contas no QMAIL #
# ---------------------------------------------------#
# Autor: Toronto Garcez de Meneses Vercosa #
# Data: 10.03.2010 #
#########################################
#
# EXECUTE O SCRIPT ASSIM --> ./apaga_emails_antigos.sh
#
#
# Variaveis
#
RED="\033[01;31m"
GREEN="\033[01;32m"
FG_DEFAULT="\033[01;00m"
DATA_ATUAL=$(date +%s)
DOMINIO=$1
WHITE="\033[1;37m"
####################################################################
# Prazo de 6 meses (UNIX Time), altere para as suas necessidades
# usando o calculo de segundos, por exemplo:
#
# 3600 segundos(1 hora) * 24 = 86400 segundos(1 dia) * 30 (1 mes)
#
# No caso abaixo pegamos o valor de 1 mes (2592000 segundos) e multiplicamos
# por 6 que chegou no valor 15552000
#####################################################################
PRAZO=15552000
#####################################################################
# coloque aqui o caminho para a sua arvore de dominios
#####################################################################
PATH_DOMAINS=/home/vpopmail/domains/ # Depende da sua instalacao
#####################################################################
# coloque aqui o caminho para o aplicativo vdeluser do vpopmail
#####################################################################
VDELUSER=/var/qmail/vpopmail/bin/vdeluser
TAMANHO_GER=0
# Main
if [ $DOMINIO <> " " ]
then
if [ ! -e $PATH_DOMAINS$DOMINIO/vpasswd ]
then
echo "Este dominio nao existe!"
else
cat $PATH_DOMAINS$DOMINIO/vpasswd |grep -v "Postmaster"|grep -v "horde" |awk -F":" '{print $6}' |while read LINHAS
do
USUARIO=$(cat $PATH_DOMAINS$DOMINIO/vpasswd |grep $LINHAS -m 1 |awk -F":" '{print $1}')
DATA_ARQUIVO=$(date +%s -r $LINHAS/lastauth)
RESULTADO=`expr $DATA_ATUAL - $DATA_ARQUIVO`
if [ $RESULTADO -gt $PRAZO ]
then
if [ -e $LINHAS/.qmail ]
then
echo -e Conta $USUARIO@$1 sem acesso a 6 meses $RED"REDIRECIONADA"$FG_DEFAULT
else
TAMANHO_UNI=$(du -s $LINHAS |awk -F" " '{print $1}')
echo -e Conta $USUARIO@$1 sem acesso a 6 meses $GREEN "COMUM"$FG_DEFAULT Size...: $TAMANHO_UNI" KB"
TAMANHO_GER=`expr $TAMANHO_GER + $TAMANHO_UNI`
echo $TAMANHO_GER > /tmp/consumo_mail
$VDELUSER $USUARIO@$DOMINIO
echo -e ........................... $RED APAGADO $FG_DEFAULT
fi
fi
done
echo -e $WHITE"Total de bytes liberados.............:"$(cat /tmp/consumo_mail)" KB" $FG_DEFAULT
echo 0 > /tmp/consumo_mail
fi
else
echo " "
echo "A sintaxe correta = ./apaga_emails_antigos.sh "
echo " "
fi
Script para apagar contas no QMAIL
27 de Abril de 2010, 0:00 - sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 432 vezes
0sem comentários ainda