Mam skonfigurowane niektóre zadania cron, a oni wysyłają wyniki 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 ze skrzynki pocztowej?
Mam skonfigurowane niektóre zadania cron, a oni wysyłają wyniki 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 ze skrzynki pocztowej?
Odpowiedzi:
Możesz po prostu usunąć /var/mail/username
plik, aby usunąć wszystkie wiadomości e-mail dla konkretnego użytkownika. Ponadto wiadomości e-mail wychodzące, które nie zostały jeszcze wysłane, zostaną zapisane /var/spool/mqueue
.
username
należy zastąpić użytkownikiem, dla którego chcesz usunąć wiadomości e-mail. W twoim przypadku wiadomości e-mail są wysyłane do dzwoniącego użytkownika cron_results
, więc musisz je usunąć /var/www/cron_results
.
alternatywny sposób:
mail -N
d *
quit
-N
Blokuje początkowe wyświetlanie nagłówków wiadomości podczas czytania wiadomości lub edytowania folderu poczty.
d *
usuń wszystkie maile
> mbox
katalog domowy, to po prostu obcina plik mbox.
Po prostu użyj:
mail
d 1-15
quit
Które usunie wszystkie wiadomości od numeru 1 do 15. Aby usunąć wszystkie, użyj d *
.
Właśnie tego użyłem na Ubuntu 12.04.4 i działało to jak urok.
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ź ponownie swoją pocztę:
eric@dev ~ $ mail
No mail for eric
eric@dev ~ $
To, co cię denerwuje, to to, że używasz x
lub exit
rezygnujesz, co przywraca zmiany podczas tej sesji.
d*
przynajmniej miejsca CentOS 7
.
exit
a nie quit
potykanie mnie. exit
przerwie sesję, więc wszelkie wiadomości oczekujące na usunięcie pozostaną nienaruszone. quit
zapisze zmiany z powrotem, więc usunięte wiadomości e-mail są zatwierdzane w tym momencie.
d 1-15
działa na Debianie 8. Dzięki!
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, że przebudziłem ten stary wątek, ale czułem, że mogę wnieść swój wkład.
Jedna wkładka:
echo 'd *' | mail -N
yes 'd' | mail
działa zgodnie z oczekiwaniami.
W systemach UNIX / Linux / Mac OS X można kopiować i zastępować pliki, prawda? A co z tym rozwiązaniem:
cp /dev/null /var/mail/root
Jeśli używasz cyrus / sasl / imap na swoim serwerze pocztowym, to jednym z szybkich i skutecznych 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, oto przykład usuwania wszystkiego (bądź ostrożny !!), starszy niż 30 dni od użytkownika vleo . Zauważ, że musisz być zalogowany jako użytkownik Cyrus (administrator poczty 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
Zamiast używać „d”, dlaczego nie „p”. Nie jestem pewien, czy „p *” zadziała. Nie próbowałem tego. Możesz; jednak użyj 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