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/usernameplik, 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.
usernamenależ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
-NBlokuje początkowe wyświetlanie nagłówków wiadomości podczas czytania wiadomości lub edytowania folderu poczty.
d *usuń wszystkie maile
> mboxkatalog 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 xlub exitrezygnujesz, co przywraca zmiany podczas tej sesji.
d*przynajmniej miejsca CentOS 7.
exita nie quitpotykanie mnie. exitprzerwie sesję, więc wszelkie wiadomości oczekujące na usunięcie pozostaną nienaruszone. quitzapisze zmiany z powrotem, więc usunięte wiadomości e-mail są zatwierdzane w tym momencie.
d 1-15dział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' | maildział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