Как очистить почтовый ящик linux с огромным количеством писем? [закрытый]



Я настроил некоторые задания cron, и они отправляют результат crons на электронную почту. Сейчас за эти месяцы у меня накопилось огромное количество писем.



теперь мой вопрос: как я могу удалить все эти письма из моего почтового ящика?

705   8  

8 ответов:

вы можете просто удалить /var/mail/username файл для удаления всех сообщений электронной почты для конкретного пользователя. Кроме того, электронные письма, которые исходят, но еще не были отправлены, будут сохранены в /var/spool/mqueue.

альтернативный способ:

mail -N
d *
quit

-N запрещает начальное отображение заголовков сообщений при чтении почты или редактировании папки почты.
d * удалить все сообщения

просто использовать:

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 чтобы выйти, который откатывает изменения во время этого сеанса.

один лайнер:

echo 'd *' | mail -N

вместо удаления, я думаю, что мы можем аннулировать файл, потому что файл будет создан, если почтовая служба все еще включена. Что-то вроде следующего будет делать работу

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

и да, извините за пробуждение этой старой темы, но я чувствовал, что могу внести свой вклад.

в UNIX / Linux / Mac OS X вы можете копировать и переопределять файлы, не так ли? Так как насчет этого решения:

cp /dev/null /var/mail/root

вместо того, чтобы использовать "d", почему бы не "p". Я не уверен, что "p *" будет работать. Я этого не пробовал. Вы можете; однако используйте следующий скрипт"

#!/bin/bash
#

MAIL_INDEX=$(printf 'h a\nq\n' | mail | egrep -o '[0-9]* unread' | awk '{print }')

markAllRead=
for (( i=1; i<=$MAIL_INDEX; i++ ))
do
   markAllRead=$markAllRead"p $i\n"
done
markAllRead=$markAllRead"q\n"
printf "$markAllRead" | mail

Если вы используете cyrus / sasl / imap на своем почтовом сервере, то один быстрый и эффективный способ очистить все в почтовом ящике, который старше указанного количества дней, - это использовать cyrus/imap ipurge. Например, вот пример удаления всего (будьте осторожны!!), старше 30 дней от пользователей vleo. Обратите внимание, что вы должны войти в систему как Кир (администратор почты 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

Comments

    Ничего не найдено.