POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS DA MBOX - TODOS OS USUARIOS

Publicado por Alessandro Dias 16/05/2005

[ Hits: 3.367 ]

Download delete_mbox_users_date_90.sh




Apaga as mensagens da caixa postal do usuario (/var/mail/) com mais de 90 dias, guardando as mensagens em um arquivo chamado .apagadas.

  



Esconder código-fonte

#!/bin/sh
#
###############################################################################
#   Script DELETE_MBOX_DATE_90.SH v1.0                                        #
#                                                                             #
#  Autor: Alessandro Dias                                                     #
###############################################################################
#
BASEDIR=/var/mail
clear
echo "*********************************************************************************************"
echo "*                          Programa DELETE_MBOX_DATE_90 1.0                                 *"
echo "*********************************************************************************************"
echo "Autor: Alessandro Dias"
echo "---------------------------------------------------------------------------------------------"
k=24 # pula usuarios do sistema
USERNAME="teste" # inicializa USERNAME
TODOS=`cat /etc/passwd | cut -d : -f 1`
echo "Mensagens Avaliadas: "
while [ "$USERNAME" != "" ]; do
 USERNAME=`echo $TODOS |cut -d " " -f $k`
 GRUPO=`groups $USERNAME |cut -d " " -f 3`
 if [ "$GRUPO" = "popusers" -a -f $BASEDIR/$USERNAME ]; then
   if [ "$USERNAME" != "" ]; then
     echo -e "----- Usuário $USERNAME -----"
     #Verifica as Msgs
     INICIO=1
     NLINHAS=1000
     i=0
     while [ "$INICIO" != "$NLINHAS" ]; do 
     i=`expr $i \+ 1`
     j=`expr $i \+ 1`
     LINHAS=`grep -n "From " $BASEDIR/$USERNAME | cut -d ":" -f 1`
     NLINHAS=`wc -l $BASEDIR/$USERNAME`
     NLINHAS=`echo $NLINHAS | cut -d " " -f 1`
     LINHAS="$LINHAS $NLINHAS"
     INICIO=`echo $LINHAS | cut -d " " -f $i`
     if [ "$INICIO" = "$NLINHAS" ]; then
       echo -e "---------------------------------------------------------------------------------------------\n"
     else
     FIM=`echo $LINHAS | cut -d " " -f $j`
     VALOR_TMP=`sed -n -e "$INICIO""p" $BASEDIR/$USERNAME`
     MES=`echo $VALOR_TMP | cut -d " " -f 4`
     ASSUNTO=`sed -n -e "$INICIO,$FIM""p" $BASEDIR/$USERNAME | grep "Subject:" | cut -d : -f 2`
     case $MES in
       Jan) MES=1 ;;
       Fev) MES=2 ;;
       Mar) MES=3 ;;
       Apr) MES=4 ;;
       Abr) MES=4 ;;
       May) MES=5 ;;
       Mai) MES=5 ;;
       Jun) MES=6 ;;
       Jul) MES=7 ;;
       Aug) MES=8 ;;
       Ago) MES=8 ;;
       Sep) MES=9 ;;
       Set) MES=9 ;;
       Oct) MES=10 ;;
       Out) MES=10 ;;
       Nov) MES=11 ;;
       Dez) MES=12 ;;
     esac
     DIA=`echo $VALOR_TMP | cut -d " " -f 5`
     ANO=`echo $VALOR_TMP | cut -d " " -f 7`
     HJ_ANO=`date +%Y`
     HJ_MES=`date +%m`
     HJ_DIA=`date +%e`
     DIF_ANO=`expr $HJ_ANO - $ANO`
     DIF_MES=`expr $HJ_MES - $MES`
     DIF_DIA=`expr $HJ_DIA - $DIA`
     TEMPO1=`expr $DIF_ANO \* 360`
     TEMPO2=`expr $DIF_MES \* 30`
     TEMPO3=$DIF_DIA
     TEMPO=`expr $TEMPO1 \+ $TEMPO2 \+ $TEMPO3`
     echo -e "\n   Mensagem $i - Data: $DIA/$MES/$ANO - $TEMPO dias - Linhas $INICIO-$FIM"
     echo -e "   Assunto: $ASSUNTO"
     #echo -e "$LINHAS"
     #echo -e "Data Msg: $DIA/$MES/$ANO"
     #echo -e "hoje.ano=$HJ_ANO - hoje.mes=$HJ_MES - hoje.dia=$HJ_DIA"
     #echo -e "dif_ano=$DIF_ANO - dif_mes=$DIF_MES - dif_dia=$DIF_DIA"
     #echo -e "tempo1=$TEMPO1 - tempo2=$TEMPO2 - tempo3=$TEMPO3"
     #echo -e "Tempo de armazenamento = $TEMPO dias"
     if [ $TEMPO -ge 90 ]; then # se a msg tiver mais de 60 dias apagar
       if [ "$FIM" != "$NLINHAS" ]; then # se não é a ultima msg, não apaga a linha em branco
          FIM=`expr $FIM - 1`
       fi
       sed -n -e "$INICIO,$FIM""p" $BASEDIR/$USERNAME >> $BASEDIR/$USERNAME.apagadas
       echo " " >> $BASEDIR/$USERNAME.apagadas
       sed -e "$INICIO,$FIM""d" $BASEDIR/$USERNAME >> $BASEDIR/$USERNAME.tmp
       mv -f $BASEDIR/$USERNAME.tmp $BASEDIR/$USERNAME
       i=`expr $i - 1`
       j=`expr $j - 1`
       echo "   << Mensagem com mais de 90 dias  - APAGADA >>"
     fi
     fi
   done
   else 
     echo -e "\nEntre com a sintaxe correta do comando:\n./delete_date.sh <nome_usuario>\n" 
   fi
 fi
 k=`expr $k \+ 1`
done

Scripts recomendados

Adicionar usuarios em lote com senha padrao

Retra de iptables para DMZ na porta 80

Um super limpador do sistema KDu

MySamba Server 2.0

Instalando BeEF Framework no Ubuntu


  

Comentários
[1] Comentário enviado por diaspcf em 07/05/2007 - 15:21h

Caro Usuário,
Tente pegar o script a partir do código fonte, pois parece que o link está quebrado.
Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts