我已经设置了一些cron作业,他们将crons结果发送到电子邮件。几个月来,我积累了大量的电子邮件。
现在我的问题是如何从邮箱中清除所有这些电子邮件?
答案 0 :(得分:347)
替代方式:
mail -N
d *
quit
-N
禁止在阅读邮件或编辑邮件文件夹时初始显示邮件标题
d *
删除所有邮件
答案 1 :(得分:140)
您只需删除/var/mail/username
文件即可删除特定用户的所有电子邮件。此外,传出但尚未发送的电子邮件将存储在/var/spool/mqueue
。
答案 2 :(得分:55)
只需使用:
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
退出,以便在该会话期间回滚更改。
答案 3 :(得分:22)
一个班轮:
echo 'd *' | mail -N
答案 4 :(得分:19)
我认为我们可以使文件无效,而不是删除,因为如果邮件服务仍然打开,将创建该文件。 像下面这样的东西将完成这项工作
cat /dev/null >/var/spool/mail/tomlinuxusr
是的,抱歉唤醒这个旧帖子,但我觉得我可以做出贡献。
答案 5 :(得分:5)
在UNIX / Linux / Mac OS X上你可以复制和覆盖文件,不是吗?那么这个解决方案怎么样:
cp /dev/null /var/mail/root
答案 6 :(得分: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
答案 7 :(得分:1)
如果您在邮件服务器上使用cyrus / sasl / imap,那么一种快速有效的清除邮箱中所有指定天数的方法就是使用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