POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS EM TODAS AS PASTAS DE UM USUÁRIO

Publicado por Alessandro Dias 16/05/2005

[ Hits: 3.132 ]

Download delete_user_date_90.sh




Apaga as mensagens de todas as pastas do usuário dado como entrada com mais de 90 dias, guardando as mensagens em um arquivo chamado .apagadas.

  



Esconder código-fonte

#!/bin/sh
#
###############################################################################
#   Script DELETE_USER_DATE_90.SH v1.0                                        #
#                                                                             #
#  Autor: Alessandro Dias                                                     #
###############################################################################
#
BASEDIR=/var/mail
clear
echo "*********************************************************************************************"
echo "*                                  Programa DELETE_USER_DATE_90 1.0                         *"
echo "*********************************************************************************************"
echo "Autor: Alessandro Dias"
echo "---------------------------------------------------------------------------------------------"
USERNAME=$1  # colhe o nome do usuario
if [ "$USERNAME" != "" ]; then
echo "                                ----- Usuário $USERNAME -----"
echo -e "---------------------------------------------------------------------------------------------"
ARQUIVOS=$BASEDIR/$USERNAME
ARQUIVOS="$BASEDIR/$USERNAME"" "`ls /home/$USERNAME/mail/*`
l=1
ARQUIVO=`echo $ARQUIVOS | cut -d " " -f $l`

while [ "$ARQUIVO" != "" -a "$ARQUIVO" != " " ]; do
  echo "Analizando o arquivo: $ARQUIVO"
  #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 " $ARQUIVO | cut -d ":" -f 1`
  NLINHAS=`wc -l $ARQUIVO`
  NLINHAS=`echo $NLINHAS | cut -d " " -f 1`
  LINHAS="$LINHAS $NLINHAS"
  INICIO=`echo $LINHAS | cut -d " " -f $i`
  if [ "$INICIO" = "$NLINHAS" ]; then
    echo -e "---------------------------------------------------------------------------------------------"
  else
  FIM=`echo $LINHAS | cut -d " " -f $j`
  VALOR_TMP=`sed -n -e "$INICIO""p" $ARQUIVO`
  MES=`echo $VALOR_TMP | cut -d " " -f 4`
  ASSUNTO=`sed -n -e "$INICIO,$FIM""p" $ARQUIVO | 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`
  if [ "$ANO" = "UTC" ]; then
    ANO=`echo $VALOR_TMP | cut -d " " -f 8`
  fi 
  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"
  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" $ARQUIVO >> $ARQUIVO.apagadas
    echo " " >> $ARQUIVO.apagadas
    sed -e "$INICIO,$FIM""d" $ARQUIVO >> $ARQUIVO.tmp
    mv -f $ARQUIVO.tmp $ARQUIVO
    i=`expr $i - 1`
    j=`expr $j - 1`
    echo "   << Mensagem com mais de 90 dias  - APAGADA >>"
  fi
  fi
done
l=`expr $l \+ 1`
ARQUIVO=`echo $ARQUIVOS | cut -d " " -f $l`
done
else 
  echo -e "\nEntre com a sintaxe correta do comando:\n./delete_user_date_90.sh <nome_usuario>\n" 
fi

Scripts recomendados

Cluster multi-master com MariaDB 10.1 + Galera

Instalando a última versão estável do Eclipse com uma única linha

Exibir configurações de rede

Recriando /dev/null

Script p/ instalar o modem pctel onboard


  

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

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts