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.289 ]
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"
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - CRIANDO USUÁRIOS A PARTIR DE ARQUIVO
Atualizar KDE para a versão 3.5.4
Auto-installer ISP Config 3 - FC 11
Alteração de Senha do Mysql (sem saber a senha anterior).
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Jogando com Proton no LInux (0)
Ingress NGINX Controller CVSS base score of 9.8 (4)
Impossível corrigir problemas, você manteve (hold) pacotes quebrados. (2)