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

Publicado por Alessandro Dias 16/05/2005

[ Hits: 3.469 ]

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

Script para gravar DVD, gera imagem e grava na mídia

Realizar backup automático no HD externo

Compilando o apache2.2 com php5 e mysql5.1 no slackware

Analisar log do tcpdump

Status port


  

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