POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - ENVIA MSG CASO O USUÁRIO PASSE 90% DA SUA QUOTA

Publicado por Alessandro Dias 17/05/2005

[ Hits: 4.240 ]

Download quota.sh




Este Script varre a lista de usuários, calcula o tamanho das suas mensagens e verifica se o usuário chegou a 90% de sua quota no sistema. Então, caso isso aconteça, é enviada uma mensagem para o usuário. Esse script é executado diariamente.

  



Esconder código-fonte

#!/bin/sh
#
###############################################################################
#  Script QUOTA.SH v2.0                                                       #
#                                                                             #
#  Autor: Alessandro Dias                                                     #
###############################################################################
#                                                                             #
#  Programa atualizado para trabalhar com SGBD Mysql e uma cota por usuário.  #
#                                                                             #
###############################################################################
#    Este programa calcula o tamanho dos emails recebidos (Entrada + Pastas), #
# e envia uma mensagem de alerta qdo o usuario ultrapassa 90% da quota.       #
#    Nao precisa de nenhum pacote adicional, como ldap, mysql, postgre, etc.  #
#    Para instalacao basta alterar as permissoes deste arquivo, e colocalo na #
# pasta /etc/cron.daily para a execucao diaria do script.                     #
#    Alem disso vc deve alterar as variaveis para adaptar ao seu sistema      #
###############################################################################
#
BASEDIR=/var/mail
MYHOSTNAME="venus.rjo.ccom.eb.mil.br"
MYDOMAIN="rjo.ccom.eb.mil.br"
TODOS=`cat /etc/passwd | cut -d : -f 1`
clear
echo "*********************************************************************************************"
echo "*                                 Programa QUOTA.SH 2.0                                     *"
echo "*********************************************************************************************"
echo "Autor: Alessandro Dias"
echo "Quota Padrão: 100MBytes"
echo "---------------------------------------------------------------------------------------------"
echo "Usuarios do sistema: "

  i=24
  USERNAME="teste" # inicializa USERNAME
while [ "$USERNAME" != "" ]; do
  USERNAME=`echo $TODOS |cut -d " " -f $i`
  GRUPO=`groups $USERNAME |cut -d " " -f 3`
  if [ "$GRUPO" = "popusers" -a -f $BASEDIR/$USERNAME ]; then
      #QUOTA - Tamanho em Bytes (100MBytes)
      QUOTA_MB=$(mysql -u root -ppostfix -e "select quota from user_quota where usuario='$USERNAME'" quota) 
      QUOTA_MB=`echo $QUOTA_MB |cut -d " " -f 2`
      MAILQUOTA=`expr $QUOTA_MB \* 1000000`
      MBOX=`du -ab $BASEDIR/$USERNAME 2>/dev/null | cut -f 1`
      HOME=`du -b /home/$USERNAME/mail | cut -f 1`
      TAMATUAL=`expr $MBOX \+ $HOME`
      TAMATUAL_TMP=`expr $TAMATUAL \* 100`
      MBOX_TMP=`expr $MBOX \* 100`
      HOME_TMP=`expr $HOME \* 100`
      USO_MBOX=`expr $MBOX_TMP / $MAILQUOTA`
      USO_HOME=`expr $HOME_TMP / $MAILQUOTA`
      USO=`expr $TAMATUAL_TMP / $MAILQUOTA`
      echo "U:$USERNAME G:$GRUPO Q:$QUOTA_MB T:(mbox=$MBOX + home=$HOME) = $TAMATUAL U:(mbox=$USO_MBOX% + home=$USO_HOME%) = $USO%"
      # Atualiza a utulização da mbox
      mysql -u root -ppostfix -e "update user_quota set uso=$USO where usuario='$USERNAME'" quota
      if [ $USO -ge 90 ]; then
          #Wed, 6 Apr 2005 11:48:47 -0000 (UTC)
          #Convertendo data para ingles
          DIA=`date +%a`
          case $DIA in
          Seg) DIA="Mon" ;; 
          Ter) DIA="Tue" ;; 
          Qua) DIA="Wed" ;; 
          Qui) DIA="Thu" ;; 
          Sex) DIA="Fri" ;; 
          Sab) DIA="Sat" ;; 
          Dom) DIA="Sun" ;; 
          esac
          MES=`date +%b`
          case $MES in
          Abr) MES="Apr" ;; 
          Mai) MES="May" ;; 
          Ago) MES="Aug" ;; 
          Set) MES="Sep" ;; 
          Out) MES="Oct" ;; 
          esac
        echo -e "\nFrom postmaster@$MYDOMAIN  `date +\"%a %b %d %X %Y\"`\nReturn-Path: <postmaster@$MYHOSTNAME>\nX-Original-To: postmaster\nDelivered-To: postmaster@$MYDOMAIN\nReceived: by $MYHOSTNAME (Postfix, userid 0)\nFrom: \"POSTMASTER\" <postmaster@$MYDOMAIN>\nTo: $USERNAME@$MYDOMAIN\nSubject: Aviso de Quota ($USO%)\nDate: $DIA, `date +%e` $MES `date +%Y` `date +%T` -0300 (BRT)\n\nAtencao: Sua caixa de mensagens esta proxima do limite de 100MBytes (Uso=$USO%).\n\nProcure apagar algumas mensagens para liberar mais espaco. Quando sua quota atingir 100% de utilizacao, voce nao recebera mais mensagens. Vc pode salvar algumas mensagens como arquivo, antes de apaga-las.\n\n--- Resumo de utilizacao: ---\nTamanho(bytes): ( mbox=$MBOX + pastas=$HOME ) = $TAMATUAL\nPercentual: ( mbox=$USO_MBOX% + pastas=$USO_HOME% ) = $USO%\n\n --------------------------\n Secao de Gerencia de Redes\n 2CTA - Div Op - SGRT\n Contatos (2519-5076/5068)\n" >> $BASEDIR/$USERNAME
        echo -e "\nFrom postmaster@$MYDOMAIN  `date +\"%a %b %d %X %Y\"`\nReturn-Path: <postmaster@$MYHOSTNAME>\nX-Original-To: postmaster\nDelivered-To: postmaster@$MYDOMAIN\nReceived: by $MYHOSTNAME (Postfix, userid 0)\nFrom: \"Gerente de QUOTA\" <postmaster@$MYDOMAIN>\nTo: postmaster@$MYDOMAIN\nSubject: Usuario $USERNAME ($USO% de $QUOTA_MB MB)\nDate: $DIA, `date +%e` $MES `date +%Y` `date +%T` -0300 (BRT)\n\nAtencao: Esta mensagem deve ser recebida apenas pelo Administrador do Sistema, conta suporte@rjo.ccom.eb.mil.br.\n\nResumo:\n-------\nUsuario: $USERNAME\nUso: $USO%\nQuota: $QUOTA_MB MB\n\n\nSr. Administrador, \nentre em contato com o usuario $USERNAME para comunicar o ocorrido, evitando que este deixe de receber mensagens no futuro.\n\n --------------------------\n Secao de Gerencia de Redes\n 2CTA - Div Op - SGRT\n by Cap Dias\n" >> $BASEDIR/suporte
      fi
   fi
   i=`expr $i \+ 1` 
done
echo -e "---------------------------------------------------------------------------------------------\n"

Scripts recomendados

Procurando um padrão num arquivo

Plugin do Nagios para checar disco via SNMP

bookmaker.bash: Script para imprimir livros com 4 páginas em uma folha

Instalação do Layer7 e compilação do kernel (automático)

Verifica Falha Humana de Segurança em e-mail (usada por SPAMERS)


  

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

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