web-dev-qa-db-fra.com

Comment purger une boîte aux lettres Linux avec un grand nombre de courriels?

J'ai configuré des tâches cron et ils envoient le résultat à un email. Au fil des mois, j'ai accumulé un grand nombre de courriels.

Maintenant, ma question est: comment puis-je purger tous ces courriels de ma boîte aux lettres?

182
anjan

Vous pouvez simplement supprimer le fichier /var/mail/username pour supprimer tous les courriels d'un utilisateur spécifique. De plus, les courriels sortants qui n'ont pas encore été envoyés seront stockés dans /var/spool/mqueue.

143
EdoDodo

manière alternative:

mail -N
d *
quit

-N Empêche l'affichage initial des en-têtes de message lors de la lecture ou de la modification d'un courrier.
d * effacer tous les mails

365
timaschew

Il suffit d'utiliser:

mail
d 1-15
quit

Ce qui effacera tous les messages compris entre les numéros 1 et 15. Pour tout effacer, utilisez le d *.

Je viens de l'utiliser moi-même sur Ubuntu 12.04.4, et cela a fonctionné à merveille.

Par exemple:

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

Puis vérifiez à nouveau votre courrier:

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

Ce qui vous interpelle, c’est que vous utilisez x ou exit pour quitter, ce qui annule les modifications apportées au cours de cette session.

57
Mip

Bon mot:

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

Plutôt que de supprimer, je pense que nous pouvons annuler le fichier, car le fichier sera créé si le service de messagerie est toujours activé. Quelque chose comme suit fera le travail

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

Et oui, désolé pour avoir réveillé ce vieux fil, mais j’ai senti que je pouvais contribuer.

20
xploreraj

Sous UNIX/Linux/Mac OS X, vous pouvez copier et remplacer des fichiers, n'est-ce pas? Alors, que diriez-vous de cette solution:

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

Plutôt que d'utiliser "d", pourquoi pas "p". Je ne sais pas si le "p *" fonctionnera. Je n'ai pas essayé ça. Vous pouvez; cependant utiliser le script suivant "

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

Si vous utilisez cyrus/sasl/imap sur votre serveur de courrier, un moyen rapide et efficace de tout purger dans une boîte aux lettres plus ancienne que le nombre de jours spécifié consiste à utiliser la commande cyrus/imap ipurge. Par exemple, voici un exemple supprimant tout (soyez prudent !!), plus de 30 jours plus tôt que l'utilisateur vleo . Notez que vous devez être connecté en tant qu'utilisateur de cyrus (administrateur d'imap mail):

[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
vleo