211

私はいくつかのcronジョブを設定しましたが、それらはcronの結果を電子メールに送信します。今、私は何ヶ月にもわたって膨大な数の電子メールを蓄積してきました。

今私の質問は、メールボックスからこれらすべての電子メールを削除するにはどうすればよいですか?

4

8 に答える 8

450

別の方法:

mail -N
d *
quit

-Nメールを読んだり、メールフォルダを編集したりするときのメッセージヘッダーの初期表示を禁止します。
d *すべてのメールを削除する

于 2012-11-17T11:57:01.570 に答える
171

ファイルを削除するだけ/var/mail/usernameで、特定のユーザーのすべてのメールを削除できます。また、送信されているがまだ送信されていない電子メールはに保存され/var/spool/mqueueます。

于 2011-08-16T09:38:22.553 に答える
67

使用するだけです:

mail
d 1-15
quit

これにより、番号1から15までのすべてのメッセージが削除されます。すべてを削除するには、を使用しd *ます。

私はこれをubuntu12.04.4で自分で使用しましたが、それは魅力のように機能しました。

例えば:

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

次に、メールをもう一度確認します。

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

あなたをつまずかせているのは、そのセッション中に変更をロールバックするために使用している、xまたは終了していることです。exit

于 2014-03-03T18:21:55.097 に答える
26

一発ギャグ:

echo 'd *' | mail -N
于 2014-08-25T15:25:00.613 に答える
24

メールサービスがまだオンになっているとファイルが作成されるので、削除するのではなく、ファイルを無効にできると思います。次のようなものが仕事をします

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

そして、はい、この古いスレッドを目覚めさせて申し訳ありませんが、私は貢献できると感じました。

于 2014-04-29T12:27:17.393 に答える
9

UNIX / Linux / Mac OS Xでは、ファイルをコピーして上書きできますね。では、このソリューションはどうでしょうか。

cp /dev/null /var/mail/root
于 2014-10-27T22:55:47.223 に答える
2

If you're using cyrus/sasl/imap on your mailserver, then one fast and efficient way to purge everything in a mailbox that is older then number of days specified is to use cyrus/imap ipurge command. For example, here is an example removing everything (be carefull!!), older then 30 days from user vleo. Notice, that you must be logged in as cyrus (imap mail administrator) user:

[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

于 2015-03-11T14:08:37.730 に答える
1

「d」を使用するのではなく、「p」を使用しないのはなぜですか。「p*」が機能するかどうかはわかりません。私はそれを試みませんでした。あなたはできる; ただし、次のスクリプトを使用してください」

#!/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
于 2014-09-17T15:05:16.977 に答える