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?
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
.
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
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.
Bon mot:
echo 'd *' | mail -N
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.
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
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
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