Vous pouvez simplement supprimer le /var/mail/usernamefichier pour supprimer tous les e-mails d'un utilisateur spécifique. De plus, les e-mails sortants mais qui n'ont pas encore été envoyés seront stockés dans /var/spool/mqueue.
L'e-mail en question qui reçoit tous les e-mails cron est par exemple [email protected]. Je veux simplement purger tous les e-mails reçus sur cet e-mail, en laissant les autres intacts. supprimer le / var / www / nom d'utilisateur supprimera tout, non?
anjan
3
usernamedoit être remplacé par l'utilisateur pour lequel vous souhaitez supprimer les e-mails. Dans votre cas, les e-mails sont envoyés à l'utilisateur appelé cron_results, vous devrez donc les supprimer /var/www/cron_results.
EdoDodo
5
Ce n'est pas une bonne manipulation des données de la pratique depuis l'extérieur d'une application. S'il existe une option ou une commande qui peut faire le travail, il est préférable de l'utiliser. Comme @timaschew a répondu, vous pouvez utiliser la commande 'd' dans l'outil de messagerie.
pocjoc
1
Très pratique lorsque 'mail' ne répond qu'avec 'Pas assez de mémoire - Abandonné'.
Herbert Van-Vliet
398
voie alternative:
mail -N
d *
quit
-NEmpêche l'affichage initial des en-têtes de message lors de la lecture du courrier ou de la modification d'un dossier de messagerie. d *supprimer tous les e-mails
Cela a fonctionné pour moi dans Debian 7.5 presque vanille. Alternativement, on peut vouloir supprimer tous les mails enregistrés en tapant simplement > mboxdans le répertoire personnel, cela tronque simplement le fichier mbox.
Ciantic
4
@andreas: il suffit de l'ajouter avec succès sur CentOS 6.5.
Guillaume G.
3
A également travaillé pour moi sur Debian Wheezy (7.6)
yuikonnu
2
travailler sur le serveur Ubuntu 14.04
élève
60
Utilisez simplement:
mail
d 1-15
quit
Ce qui supprimera tous les messages entre le numéro 1 et 15. pour tout supprimer, utilisez le d *.
Je viens de l'utiliser moi-même sur Ubuntu 12.04.4, et cela a fonctionné comme un charme.
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
Vérifiez à nouveau votre courrier:
eric@dev ~ $ mail
No mail for eric
eric@dev ~ $
Ce qui vous fait trébucher, c'est que vous utilisez xou exitpour quitter ce qui annule les modifications au cours de cette session.
Il n'y a pas d'espace entre d*, au moins sur CentOS 7.
CodeMed, du
7
Utiliser exitplutôt que quitme faire trébucher. exitinterrompra la session, de sorte que tous les e-mails en attente de suppression restent intacts. quitréécrira les modifications, les e-mails supprimés sont alors validés.
Jason
d 1-15fonctionne sur Debian 8. Merci!
Tadej
Ne fonctionne pas dans Red Hat. d 1-15 donne «Numérique illégal». D * aussi.
Salvador Valence
23
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 suivre fera l'affaire
cat /dev/null >/var/spool/mail/tomlinuxusr
Et oui, désolé d'avoir réveillé ce vieux fil mais j'ai senti que je pouvais contribuer.
Si vous utilisez cyrus / sasl / imap sur votre serveur de messagerie, alors un moyen rapide et efficace de purger tout 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 de suppression de tout (attention !!), datant de plus de 30 jours de l'utilisateur vleo . Notez que vous devez être connecté en tant qu'utilisateur cyrus (administrateur de messagerie 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
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 utilisez 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
Réponses:
Vous pouvez simplement supprimer le
/var/mail/username
fichier pour supprimer tous les e-mails d'un utilisateur spécifique. De plus, les e-mails sortants mais qui n'ont pas encore été envoyés seront stockés dans/var/spool/mqueue
.la source
username
doit être remplacé par l'utilisateur pour lequel vous souhaitez supprimer les e-mails. Dans votre cas, les e-mails sont envoyés à l'utilisateur appelécron_results
, vous devrez donc les supprimer/var/www/cron_results
.voie alternative:
-N
Empêche l'affichage initial des en-têtes de message lors de la lecture du courrier ou de la modification d'un dossier de messagerie.d *
supprimer tous les e-mailsla source
> mbox
dans le répertoire personnel, cela tronque simplement le fichier mbox.Utilisez simplement:
Ce qui supprimera tous les messages entre le numéro 1 et 15. pour tout supprimer, utilisez le
d *
.Je viens de l'utiliser moi-même sur Ubuntu 12.04.4, et cela a fonctionné comme un charme.
Par exemple:
Vérifiez à nouveau votre courrier:
Ce qui vous fait trébucher, c'est que vous utilisez
x
ouexit
pour quitter ce qui annule les modifications au cours de cette session.la source
d*
, au moins surCentOS 7
.exit
plutôt quequit
me faire trébucher.exit
interrompra la session, de sorte que tous les e-mails en attente de suppression restent intacts.quit
réécrira les modifications, les e-mails supprimés sont alors validés.d 1-15
fonctionne sur Debian 8. Merci!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 suivre fera l'affaire
Et oui, désolé d'avoir réveillé ce vieux fil mais j'ai senti que je pouvais contribuer.
la source
Bon mot:
la source
yes 'd' | mail
fonctionne comme prévu.Sous UNIX / Linux / Mac OS X, vous pouvez copier et remplacer des fichiers, n'est-ce pas? Alors que diriez-vous de cette solution:
la source
Si vous utilisez cyrus / sasl / imap sur votre serveur de messagerie, alors un moyen rapide et efficace de purger tout 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 de suppression de tout (attention !!), datant de plus de 30 jours de l'utilisateur vleo . Notez que vous devez être connecté en tant qu'utilisateur cyrus (administrateur de messagerie 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
la source
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 utilisez le script suivant "
la source