Ho impostato alcuni lavori cron e inviano il risultato cron a un'e-mail. Nel corso dei mesi ho accumulato un numero enorme di e-mail.
Ora la mia domanda è: come posso eliminare tutte quelle e-mail dalla mia casella di posta?
Ho impostato alcuni lavori cron e inviano il risultato cron a un'e-mail. Nel corso dei mesi ho accumulato un numero enorme di e-mail.
Ora la mia domanda è: come posso eliminare tutte quelle e-mail dalla mia casella di posta?
Risposte:
Puoi semplicemente eliminare il /var/mail/username
file per eliminare tutte le e-mail per un utente specifico. Inoltre, le e-mail in uscita ma non ancora inviate verranno archiviate /var/spool/mqueue
.
username
deve essere sostituito con l'utente per il quale desideri rimuovere le email. Nel tuo caso, le e-mail vengono inviate all'utente chiamato cron_results
, quindi dovresti eliminare /var/www/cron_results
.
modo alternativo:
mail -N
d *
quit
-N
Inibisce la visualizzazione iniziale delle intestazioni dei messaggi durante la lettura della posta o la modifica di una cartella di posta.
d *
elimina tutti i messaggi
> mbox
nella home directory, questo tronca semplicemente il file mbox.
Usa solo:
mail
d 1-15
quit
Che eliminerà tutti i messaggi tra il numero 1 e 15. per eliminare tutto, utilizzare il d *
.
L'ho usato da solo su Ubuntu 12.04.4, e ha funzionato come un fascino.
Per esempio:
eric@dev ~ $ mail
Heirloom Mail version 12.4 7/29/08. Type ? for help.
"/var/spool/mail/eric": 2 messages 2 new
>N 1 Cron Daemon Tue Jul 29 17:43 23/1016 "Cron <eric@ip-10-0-1-51> /usr/bin/php /var/www/sandbox/eric/c"
N 2 Cron Daemon Tue Jul 29 17:44 23/1016 "Cron <eric@ip-10-0-1-51> /usr/bin/php /var/www/sandbox/eric/c"
& d *
& quit
Quindi controlla di nuovo la tua posta:
eric@dev ~ $ mail
No mail for eric
eric@dev ~ $
Ciò che ti sta inciampando è che stai usando x
o exit
per uscire che ripristina le modifiche durante quella sessione.
d*
, almeno su CentOS 7
.
exit
invece di quit
farmi inciampare. exit
interromperà la sessione, pertanto eventuali e-mail in attesa di eliminazione verranno lasciate intatte. quit
riscriverà le modifiche, quindi le e-mail cancellate vengono impegnate a quel punto.
d 1-15
funziona su Debian 8. Grazie!
Invece di eliminare, penso che possiamo annullare il file, perché il file verrà creato se il servizio di posta è ancora attivo. Qualcosa come seguire farà il lavoro
cat /dev/null >/var/spool/mail/tomlinuxusr
E sì, scusate il risveglio di questo vecchio thread, ma sentivo di poter contribuire.
Una fodera:
echo 'd *' | mail -N
yes 'd' | mail
funziona come previsto.
Su UNIX / Linux / Mac OS X puoi copiare e sovrascrivere i file, vero? Che ne dici di questa soluzione:
cp /dev/null /var/mail/root
Se stai usando cyrus / sasl / imap sul tuo server di posta, allora un modo rapido ed efficiente per eliminare tutto in una casella di posta che è più vecchio del numero di giorni specificato è usare il comando cyrus / imap ipurge . Ad esempio, ecco un esempio che rimuove tutto (attenzione !!), più vecchio di 30 giorni dall'utente vleo . Si noti che è necessario accedere come utente cyrus (amministratore di posta elettronica imap):
[cyrus@mailserver ~]$ /usr/lib/cyrus-imapd/ipurge -f -d 30 user.vleo
Working on user.vleo...
total messages 4
total bytes 113183
Deleted messages 0
Deleted bytes 0
Remaining messages 4
Remaining bytes 113183
Invece di usare "d", perché non "p". Non sono sicuro che la "p *" funzionerà. Non ci ho provato. Puoi; tuttavia usa il seguente script "
#!/bin/bash
#
MAIL_INDEX=$(printf 'h a\nq\n' | mail | egrep -o '[0-9]* unread' | awk '{print $1}')
markAllRead=
for (( i=1; i<=$MAIL_INDEX; i++ ))
do
markAllRead=$markAllRead"p $i\n"
done
markAllRead=$markAllRead"q\n"
printf "$markAllRead" | mail