Я настроил некоторые задания cron, и они отправляют результат cron по электронной почте. Сейчас за месяцы я накопил огромное количество писем.
Теперь мой вопрос: как я могу удалить все эти письма из моего почтового ящика?
Я настроил некоторые задания cron, и они отправляют результат cron по электронной почте. Сейчас за месяцы я накопил огромное количество писем.
Теперь мой вопрос: как я могу удалить все эти письма из моего почтового ящика?
Ответы:
Вы можете просто удалить /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 на своем почтовом сервере, то одним быстрым и эффективным способом очистки всего в почтовом ящике, который старше указанного числа дней, является использование команды cyrus / imap ipurge . Например, вот пример удаления всего (будьте осторожны !!) старше 30 дней от пользователя vleo . Обратите внимание, что вы должны войти в систему как пользователь cyrus (imap mail administrator):
[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
Вместо того, чтобы использовать «д», почему бы не «р». Я не уверен, будет ли работать «р *». Я не пробовал это. Ты можешь; однако используйте следующий скрипт
#!/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