[Tech] script per avviso e controllo mail degli ut(o)nti
Alessio Chemeri
chemeri.a@lapulce.it
Gio 22 Maggio 2003 11:54:50 CEST
eccomi.. ci riprovo.. scusate il crosspost sulla lista flug (involontario).
allora, ho gia preso un caffe e sono sveglio :-)
ricapitolando tutto,
situazione:
visto che
-ho un bel po' di utenti e di domini postali da gestire e come
sempre gli utenti fanno di tutto per
complicare la vita...
-ho quasi del tutto eliminato la possibilita' di usare client di
posta (per loro client di posta = outluuk
e quindi per me client di posta = generatore di problemi continui)
tranne ai capi o a chi ci capisce
almeno un po' (nel qual caso faccio usare client alternativi, vedi
netscape o mozilla o eudora).
-ho messo una webmail e oramai sembra abbastanza funzionale.
-avevo predisposto uno script "spazzino" che cancellava le mail
vecchie di 60 gg. che avevo fermato
in attesa che lo spazio disco andasse sotto il 50% (avevo rimandato
un problema visto che la
migrazione dal vecchio server exchange2000 aveva comportato un po'
di grane e brontolii)
- lo spazio disco adesso e' al 40% libero... e due lunedi' fa (il 12
maggio) ho mandato una mail
a tutti gli ut(o)nti avvisandoli che venerdi sarebbe iniziata la
"purga delle caselle" con
allegate tutte le spiegazioni su come archiviare la roba etc etc etc
e' successo che:
- ovviamente nonostante avvisi ripetuti e continui quasi nessuno si
e' degnato di archiviare la posta
(con picchi di assurdita' quali interi uffici che mi hanno chiamato
alle 19 di venerdi scorso per
chiedermi cosa sarebbe successo alla loro posta etc etc :-( )
- ho fermato lo "spazzino" per evitare di subire tagli di gomme al
motorino e/o avere la fila di
persone di fronte al mio ufficio lunedi...
- ho cambiato il wallpaper mettendo padre pio che mi guarda felice
(? felice?) e ho deciso che
uno script per avvisare la gente di quante email rischiavano di
perdere era il minimo da fare...
quindi:
ho finito ieri (si sono lento...) di fare un piccolo script che si
occupa di avvisare tutti gli utenti
del mio server di posta di quanta "posta a rischio cancellazione" 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... (mr. spazzino)
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...
info utili per capirci un po' di piu' :
server con: qmail + vpopmail configurato con le Maildir
le caselle stanno su /home/vpopmail/domains/NOMEDOMINIO/UTENTE
n.b. : gli utenti in regola non ricevono mail di notifica
modifiche che forse faro' (richieste da qualcuno di gia):
- elencare dove si trovano i loro messaggi (cartella per cartella) "a
rischio morte"
se e quando ho tempo (in verita' cambiare "tempo" con "voglia" :-) )
Alessio (lo spammmer di oggi delle liste flug e tech :-) )
------------------------- 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-tech