[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