Jak wyczyścić linuksową skrzynkę pocztową z ogromną liczbą e-maili? [zamknięte]

Ustawiłem kilka zadań cron i wysyłają wynik cron na e-mail. Teraz w ciągu miesięcy zgromadziłem ogromną liczbę e-maili.

Teraz moje pytanie brzmi, Jak mogę usunąć wszystkie te e-maile z mojej skrzynki pocztowej?

 164
Author: Ross Rogers, 2011-08-16

8 answers

Możesz po prostu usunąć plik /var/mail/username, aby usunąć wszystkie wiadomości e-mail dla konkretnego użytkownika. Również wiadomości e-mail, które są wychodzące, ale nie zostały jeszcze wysłane, będą przechowywane w /var/spool/mqueue.

 131
Author: EdoDodo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-16 09:38:22

Alternatywny sposób:

mail -N
d *
quit

-N blokuje początkowe wyświetlanie nagłówków wiadomości podczas czytania poczty lub edycji folderu poczty.
d * Usuń wszystkie wiadomości

 318
Author: timaschew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-30 11:31:27

Po prostu użyj:

mail
d 1-15
quit

Który usunie wszystkie wiadomości między numerem 1 a 15. aby usunąć wszystkie, użyj d *.

Właśnie używałem tego na ubuntu 12.04.4 i działało jak czar.

Na przykład:

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

Następnie sprawdź pocztę ponownie:

eric@dev ~ $ mail
No mail for eric
eric@dev ~ $

Denerwuje cię to, że używasz x lub exit, aby zakończyć, co wycofuje zmiany podczas tej sesji.

 51
Author: Mip,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-29 21:47:20

Jedna linijka:

echo 'd *' | mail -N
 22
Author: Michael Munsey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-25 15:25:00

Zamiast usuwać, myślę, że możemy anulować plik, ponieważ plik zostanie utworzony, jeśli usługa pocztowa jest nadal włączona. Coś takiego jak podążanie wykona zadanie

cat /dev/null >/var/spool/mail/tomlinuxusr

I tak, przepraszam za przebudzenie tego starego wątku, ale czułem, że mogę się przyczynić.

 18
Author: xploreraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-29 12:27:17

Na UNIX / Linux / Mac OS X można kopiować i nadpisywać pliki, prawda? Więc jak o tym rozwiązaniu:

cp /dev/null /var/mail/root
 5
Author: peter_pilgrim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-27 22:55:47

Zamiast używać "d", dlaczego nie "p". Nie jestem pewien, czy "p *" zadziała. Nie próbowałem. Można jednak użyć następującego skryptu "

#!/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
 1
Author: WSimpson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-17 15:05:16

Jeśli używasz cyrus / sasl/imap na swoim serwerze, to jednym z szybkich i wydajnych sposobów na wyczyszczenie wszystkiego w skrzynce pocztowej, która jest starsza niż określona liczba dni, jest użycie polecenia cyrus / imap ipurge. Na przykład, tutaj jest przykład usuwania wszystkiego (bądź ostrożny!!), starsze niż 30 dni od użytkownika vleo. Zauważ, że musisz być zalogowany jako cyrus (administrator poczty imap) użytkownik:

[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

 1
Author: vleo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-11 14:08:37