Answers:
您只需删除/var/mail/username
文件即可删除特定用户的所有电子邮件。另外,外发但尚未发送的电子邮件将存储在中/var/spool/mqueue
。
username
必须替换为您要删除电子邮件的用户。在您的情况下,电子邮件是发送给的用户cron_results
,因此您必须删除/var/www/cron_results
。
只需使用:
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
适用于Debian8。谢谢!
我认为我们可以使文件无效,而不是删除文件,因为如果邮件服务仍处于打开状态,则将创建文件。像下面这样的事情会做的
cat /dev/null >/var/spool/mail/tomlinuxusr
是的,很抱歉唤醒这个旧线程,但我觉得我可以有所作为。
在UNIX / Linux / Mac OS X上,您可以复制和覆盖文件,不是吗?那么该解决方案如何:
cp /dev/null /var/mail/root
如果您在邮件服务器上使用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
与其使用“ 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