回答:
/var/mail/username
ファイルを削除するだけで、特定のユーザーのすべてのメールを削除できます。また、送信されたがまだ送信されていないメールはに保存され/var/spool/mqueue
ます。
username
メールを削除するユーザーに置き換える必要があります。あなたの場合、電子メールはと呼ばれるユーザーに送信されているcron_results
ので、削除する必要があります/var/www/cron_results
。
別の方法:
mail -N
d *
quit
-N
メールを読んだり、メールフォルダを編集したりするときのメッセージヘッダーの初期表示を禁止します。
d *
すべてのメールを削除
> mbox
ホームディレクトリに入力するだけで、保存されたすべてのメールを削除することもできます。これは、mboxファイルを切り捨てるだけです。
ただ使用する:
mail
d 1-15
quit
1から15までのすべてのメッセージを削除しますd *
。すべてを削除するには、を使用します。
私はこれをubuntu 12.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
そのセッション中に変更をロールバックすることをやめることです。
d*
少なくともの間にスペースはありませんCentOS 7
。
exit
ではなく使用quit
する。exit
はセッションを中止するため、削除保留中のメールはそのまま残ります。quit
変更を書き戻すので、削除されたメールはその時点でコミットされます。
d 1-15
Debian 8で動作します。ありがとう!
メールサービスがまだオンの場合にファイルが作成されるため、削除するのではなく、ファイルを無効にできると思います。次のようなものが仕事をします
cat /dev/null >/var/spool/mail/tomlinuxusr
そして、はい、この古い糸を目覚めさせて申し訳ありませんが、私は貢献できると感じました。
一発ギャグ:
echo 'd *' | mail -N
yes 'd' | mail
期待どおりに動作します。
UNIX / Linux / Mac OS Xでは、ファイルをコピーして上書きできますか?それで、この解決策はどうですか:
cp /dev/null /var/mail/root
メールサーバーでcyrus / sasl / imapを使用している場合、指定した日数より古いメールボックス内のすべてを消去する1つの高速かつ効率的な方法は、cyrus / imap ipurgeコマンドを使用することです。たとえば、これはユーザーvleoから30日以上経過したすべてのものを削除する例です(注意してください!!)。cyrus(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
「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