[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