我已经设置了一些cron作业,他们将crons结果发送到电子邮件。在过去的几个月里,我已经积累了大量的电子邮件。

现在我的问题是如何清除我邮箱里的这些邮件?


当前回答

与其用“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

其他回答

在UNIX / Linux / Mac OS X上,你可以复制和覆盖文件,不是吗?那么这个解决方案如何:

cp /dev/null /var/mail/root

我认为我们可以使该文件无效,而不是删除,因为如果邮件服务仍在运行,则将创建该文件。 像跟着就行了

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

是的,很抱歉唤醒了这个旧话题,但我觉得我可以有所贡献。

您可以简单地删除/var/mail/username文件来删除特定用户的所有电子邮件。此外,正在发送但尚未发送的电子邮件将存储在/var/spool/mqueue中

替代方法:

mail -N
d *
quit

-N禁止在阅读邮件或编辑邮件文件夹时首次显示邮件标题。 删除所有邮件

如果您在邮件服务器上使用cyrus/sasl/imap,那么一种快速有效的方法是使用cyrus/imap ipurge命令清除比指定天数更早的邮箱中的所有内容。例如,下面是一个示例,删除用户vleo中超过30天的所有内容(小心!!)。注意,您必须以cyrus (imap邮件管理员)用户登录:

[cyrus@mailserver ~]$ /usr/lib/cyrus-imapd/ipurge -f -d 30 user.vleo 正在处理user.vleo… 消息总数4 总字节数113183 删除消息0 删除字节0 剩余信息4 剩余字节113183