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.369 ]
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.
#!/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"
Atualiza base de dados do Clamav e avisa o admin
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
Monitoramento pfsense com zabbix (4)
Erro na inicialização do Debian como resolver (5)
Dúvidas sobre a originalidade de conteúdos online (11)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (4)