[Flug] script per cancellazione e avviso ut(o)nti del mailserver

Alessio Chemeri chemeri.a@lapulce.it
Gio 22 Maggio 2003 09:49:29 CEST


ciao a tutti,
ho finito ieri di fare un piccolo script che si occupa di avvisare tutti 
gli utenti
del mio server di posta di quanta "posta a rischio" hanno nella loro 
casella, lo
faccio (e faro') girare i lunedi mentre il venerdi girera' il "gemello 
cattivo" che
si occupera' di cancellare davvero la posta...

se vi interessa (o se ci vedete difetti e/o cavolate fatte) dategli un 
occhiata...
grazie !

p.s. al suo primo giro ha funzionato egregiamente...


Alessio

------------------------- avvisatore ---------
#!/bin/bash
# ultima modifica 22/05/2003
# di Alessio Chemeri, per lapulce.it e consociate.
# script di avviso per gli utenti per quanto riguarda le email da cancellare
# dovrebbe spedire un report ad ogni utente sulle mail che se ne andranno
# speriamo bene...
# PARAMETRI :
# $1 = giorni di eta' della mail.
#
# prepara il file finale
echo '' > totali-mail-vecchie
# conta le email che hanno almeno $1 giorni di vita , per riconoscere le 
email
# greppo tutti i file che hanno il nome .mailnx01, dato che qmail nella 
maildir
# usa questo come identificativo.
# find /home/vpopmail/domains/ -type f -mtime +$1 -print | grep 
'.mailnx01,' |  wc -l
# guardiamo se riesco a prendere un utente alla volta.
# cerco per prima cosa di prendere una dir alla volta (un dominio alla 
volta)
LISTA=`find /home/vpopmail/domains/ -type d -mindepth 1 -maxdepth 1 -print`
for i in $LISTA
do
# a questo punto prendo la lista delle caselle di posta per il dominio
        find $i -type d -mindepth 1 -maxdepth 1 -print >dominioesaminato
#
# adesso devo prenderli a uno a uno e fare il controllo con find in alto per
# sapere quante email ha da cancellare (piu' vecchie di $1 giorni).
        for nome in $(cat dominioesaminato)
                do
# uso il cut e recupero nome e dominio (per fare la email)
                echo $nome > nome;
                utente=`cut -d/ -f6 nome`;
                dominio=`cut -d/ -f5 nome`;
                dacancellare=`find $nome -type f -mtime +$1 -print | 
grep '.mailnx01,' | wc -l`;
                if (test $dacancellare != 0)then
                # allora gli mando la email di preavviso
                echo "Attenzione, risultano $dacancellare messaggi nella 
tua casella di posta" > messaggio
                echo "piu' vecchi di almeno $1 giorni, questa email e' 
un preavviso al fatto " >> messaggio
                echo "che questo venerdi' tali messaggi saranno 
eliminati automaticamente dal " >> messaggio
                echo "server. Se hai interesse a preservarli puoi: " >> 
messaggio
                echo "1- stamparli " >> messaggio
                echo "2- eseguire un'archiviazione " >> messaggio
                echo "grazie per la collaborazione." >> messaggio
                echo "ufficio web - postmaster " >> messaggio
# mando la mail all'utente
                mailto -s "Avviso dal postmaster" $utente@$dominio < 
messaggio
# accodo al file totali che poi mi spedisco.
                echo $utente@$dominio $dacancellare >> totali-mail-vecchie
                fi
                done
        done
mailto -s "Resoconto dal postmaster" chemeri.a@lapulce.it < 
totali-mail-vecchie







Maggiori informazioni sulla lista flug