Verifica tamanho da inbox + pastas e envia e-mail alertando o usuario

Publicado por Adriano Matos Meier 29/11/2005 (última atualização em 05/11/2013)

[ Hits: 8.347 ]

Download sizee.sh

Download 1383308908.sizee.sh (versão 2)




Fiz esse script para verificar os usuarios que a soma da inbox + pastas ultrapassa os 50MB. Se tiver maior ele manda um e-mail alertando o usuario e  vai gerando um log dos e-mails enviados, tamanho das pastas, data, e depois envia ao admin da rede.
Parece meio inutil pois a maioria dos servidores utilizam quota, mas como aqui não tem, ele foi bem util.
Estou postando pois pode ser util para alguem se modificado.
Adaptei ele para verificar as contas dos dominios virtuais tambem.

  



Versões atualizadas deste script

Versão 2 - Enviado por Adriano Matos Meier em 01/11/2013

Changelog: Removido código desnecessário.

Download 1383308908.sizee.sh


Esconder código-fonte

#!/bin/bash

# Script que envia emails personalizados para as contas
# que estão com a soma da inbox e home maior que 50Mb.
# por Et3rN4L - et3rn4ls@gmail.com

# Gera o cabeçalho para o envio do log
echo "From: admnet@domain.com.br
To: suporte@domain.com.br
Subject: Log de e-mails enviados.
" > /tmp/enviados.txt

# Cria a lista de contas a verificar
cat /etc/passwd > /tmp/contas.txt
count=$(cat /tmp/contas.txt |wc -l |awk '{print $1}')
j=1
env=0

echo "Verificando contas, aguarde..."

while [ $j -le $count ]
do

   # Coleta informações em um arquivo de texto
   # a = Tamanho inbox / b = usuario / c = tamanho home/mail / d = Nome Completo

   if [ -e /var/spool/mail/`head -n $j /tmp/contas.txt |tail -n 1 |cut -d ":" -f1` ]; then
      a=$(du -s /var/spool/mail/`head -n $j /tmp/contas.txt |tail -n 1 |cut -d ":" -f1` |awk '{print $1}')
   else
      a=0
   fi

   b=$(head -n $j /tmp/contas.txt |tail -n 1 |cut -d ":" -f1)
   d=$(head -n $j /tmp/contas.txt |tail -n 1 |cut -d ":" -f5)
   dir=$(head -n $j /tmp/contas.txt |tail -n 1 |cut -d ":" -f6 |awk '{print $1 "/mail"}')

   # Testa se existe o diretorio mail no home do usuario
   if [ -e $dir ]; then
      c=$(du -s $dir |awk '{print $1}')
   else
      c=0
   fi

   total=`expr $a + $c`

   if [ $total -ge 50000 ]; then

        # Gera corpo do email
        echo "From: admnet@domain.com.br
To: $b@domain.com.br
Subject: Limpeza na conta de e-mail. 

        Caro(a) $d, 
         
        Informamos que a sua conta de e-mails (caixa de entrada e demais pastas) superou
        o tamanho de 50000 KB (tamanho atual = $total KB) e para garantir um bom funcionamento 
        do servidor de e-mails pedimos que verifique seus e-mails e exclua as
        mensagens desnecessárias.

        Você pode fazer isso acessando o nosso WebMail no endereço
        http://webmail.domain.com.br ou pelo seu programa de e-mail favorito.

        Caso você receba suas mensagens em algum programa (Ex. Outlook Express),
        esteja certo de que ele não esteja salvando uma cópia da mensagem no 
        servidor após receber.
   
        É interessante que você faça isso o quanto antes para evitar problemas futuros,
        pois muito em breve serão aplicadas quotas em todas as contas de e-mail.

        ESTA MENSAGEM É AUTOMÁTICA E NãO É NECESSÁRIO RESPONDÊ-LA !!!
        
        Qualquer dúvida a respeito favor entrar em contato com o HelpDesk.

        Atenciosamente,

        -----------------------------------------
        A Administração da Rede
        admnet@domain.com.br       
        EMPRESA/SC
        Fone: (48) 3239.5888
        http://www.domain.com.br
        -----------------------------------------" > /tmp/mail.txt

        # Envia email
        sendmail -i $b@domain.com.br < /tmp/mail.txt
        echo "Email enviado para $b@domain.com.br - Tamanho $total - `date`" >> /tmp/enviados.txt
        env=`expr $env + 1`

   fi

   # Incrementa "j"
   j=`expr $j + 1`

done

# Envia o log para a admnet
if [ $env -gt 0 ]; then
   sendmail -i admnet@domain.com.br < /tmp/enviados.txt
fi

# Remove arquivos temporarios
rm /tmp/mail.txt >/dev/null 2>&1 </dev/null
rm /tmp/enviados.txt >/dev/null 2>&1 </dev/null
rm /tmp/contas.txt

echo
echo "Terminado !!"
echo "$count contas verificadas !!"
echo "$env emails enviados !!"
echo

Scripts recomendados

PINGS - Ping para diversos hosts em varios consoles

cron-rsync

Escrever por extenso

Hora certa - Observatório Nacional

phpserver


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts