Ir para o conteúdo
ou

Software livre Brasil

0 integrantes

Nenhum(a)

Red Hat Magazine

redirection forbidden: http://www.redhat.com/magazine/rss20.xml -> https://www.redhat.com/magazine/rss20.xml

 Voltar a torontux
Tela cheia Sugerir um artigo

Script para apagar contas no QMAIL

27 de Abril de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 432 vezes
    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

Fonte: http://torontux.blogspot.com/2010/03/script-para-apagar-contas-no-qmail.html

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.