it-swarm.com.de

Wie lösche ich ein Linux-Postfach mit einer großen Anzahl von E-Mails?

Ich habe einige Cron-Jobs eingerichtet und sie senden das Cron-Ergebnis an eine E-Mail. Jetzt habe ich im Laufe der Monate eine große Anzahl von E-Mails gesammelt.

Nun ist meine Frage, wie ich all diese E-Mails aus meiner Mailbox entfernen kann.

182
anjan

Sie können einfach die Datei /var/mail/username Löschen, um alle E-Mails für einen bestimmten Benutzer zu löschen. Ausgehende, aber noch nicht versendete E-Mails werden ebenfalls in /var/spool/mqueue Gespeichert.

143
EdoDodo

alternativer Weg:

mail -N
d *
quit

-N Verhindert die erstmalige Anzeige von Nachrichtenköpfen beim Lesen von E-Mails oder Bearbeiten eines E-Mail-Ordners.
d * alle Mails löschen

365
timaschew

Benutz einfach:

mail
d 1-15
quit

Um alle Nachrichten zwischen Nummer 1 und 15 zu löschen, verwenden Sie das d *.

Ich habe es gerade selbst auf Ubuntu 12.04.4 benutzt und es hat wie ein Zauber funktioniert.

Zum Beispiel:

[email protected] ~ $ 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 <[email protected]> /usr/bin/php /var/www/sandbox/eric/c"
 N  2 Cron Daemon           Tue Jul 29 17:44  23/1016  "Cron <[email protected]> /usr/bin/php /var/www/sandbox/eric/c"
& d *
& quit

Dann überprüfe deine E-Mails noch einmal:

[email protected] ~ $ mail
No mail for eric
[email protected] ~ $

Was Sie auslöst, ist, dass Sie x oder exit verwenden, um das Zurücksetzen der Änderungen während dieser Sitzung zu beenden.

57
Mip

Einzeiler:

echo 'd *' | mail -N
21
Michael Munsey

Ich denke, wir können die Datei nicht löschen, da sie erstellt wird, wenn der Mail-Dienst noch aktiv ist. So etwas wie das Folgende erledigt die Arbeit

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

Und ja, tut mir leid, dass ich diesen alten Thread aufgeweckt habe, aber ich hatte das Gefühl, ich könnte dazu beitragen.

20
xploreraj

Unter UNIX/Linux/Mac OS X können Sie Dateien kopieren und überschreiben, nicht wahr? Wie wäre es mit dieser Lösung:

cp /dev/null /var/mail/root
5
peter_pilgrim

Anstatt "d" zu verwenden, warum nicht "p"? Ich bin nicht sicher, ob das "p *" funktioniert. Das habe ich nicht ausprobiert. Du kannst; Verwenden Sie jedoch das folgende Skript "

#!/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
WSimpson

Wenn Sie cyrus/sasl/imap auf Ihrem Mailserver verwenden, können Sie alle Nachrichten in einer Mailbox, die älter als die angegebene Anzahl von Tagen ist, schnell und effizient mit dem Befehl cyrus/imap ipurge löschen. Hier ist zum Beispiel ein Beispiel, in dem alles entfernt wird (sei vorsichtig !!), das älter als 30 Tage ist vleo . Beachten Sie, dass Sie als cyrus (imap mail administrator) Benutzer angemeldet sein müssen:

[[email protected] ~]$ /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
vleo