私はいくつかのcronジョブを設定しましたが、それらはcronの結果を電子メールに送信します。今、私は何ヶ月にもわたって膨大な数の電子メールを蓄積してきました。
今私の質問は、メールボックスからこれらすべての電子メールを削除するにはどうすればよいですか?
別の方法:
mail -N
d *
quit
-N
メールを読んだり、メールフォルダを編集したりするときのメッセージヘッダーの初期表示を禁止します。
d *
すべてのメールを削除する
ファイルを削除するだけ/var/mail/username
で、特定のユーザーのすべてのメールを削除できます。また、送信されているがまだ送信されていない電子メールはに保存され/var/spool/mqueue
ます。
使用するだけです:
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
一発ギャグ:
echo 'd *' | mail -N
メールサービスがまだオンになっているとファイルが作成されるので、削除するのではなく、ファイルを無効にできると思います。次のようなものが仕事をします
cat /dev/null >/var/spool/mail/tomlinuxusr
そして、はい、この古いスレッドを目覚めさせて申し訳ありませんが、私は貢献できると感じました。
UNIX / Linux / Mac OS Xでは、ファイルをコピーして上書きできますね。では、このソリューションはどうでしょうか。
cp /dev/null /var/mail/root
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
「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