Eu configurei alguns trabalhos cron e eles enviam o resultado dos crons para um email. Agora, ao longo dos meses, acumulei um grande número de emails.
Agora, minha pergunta é como posso limpar todos os emails da minha caixa de correio?
Eu configurei alguns trabalhos cron e eles enviam o resultado dos crons para um email. Agora, ao longo dos meses, acumulei um grande número de emails.
Agora, minha pergunta é como posso limpar todos os emails da minha caixa de correio?
Respostas:
Você pode simplesmente excluir o /var/mail/username
arquivo para excluir todos os emails de um usuário específico. Além disso, os e-mails enviados, mas ainda não enviados, serão armazenados /var/spool/mqueue
.
username
precisa ser substituído pelo usuário para o qual você deseja remover os e-mails. No seu caso, os e-mails estão sendo enviados para o usuário chamado cron_results
, portanto, você deve excluir /var/www/cron_results
.
caminho alternativo:
mail -N
d *
quit
-N
Inibe a exibição inicial dos cabeçalhos das mensagens ao ler e editar uma pasta de correio.
d *
excluir todos os e-mails
> mbox
diretório inicial, isso apenas trunca o arquivo mbox.
Apenas use:
mail
d 1-15
quit
Que excluirá todas as mensagens entre os números 1 e 15. Para excluir todas, use o d *
.
Eu mesmo usei isso no ubuntu 12.04.4 e funcionou como um encanto.
Por exemplo:
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
Em seguida, verifique seu e-mail novamente:
eric@dev ~ $ mail
No mail for eric
eric@dev ~ $
O que está atrapalhando você é que você está usando x
ou exit
para sair, o que reverte as alterações durante essa sessão.
d*
, pelo menos diante CentOS 7
.
exit
vez de quit
me fazer tropeçar. exit
interromperá a sessão, para que todos os emails com exclusão pendente sejam mantidos intactos. quit
gravará as alterações novamente, para que os e-mails excluídos sejam confirmados nesse ponto.
d 1-15
funciona no Debian 8. Obrigado!
Em vez de excluir, acho que podemos anular o arquivo, porque o arquivo será criado se o serviço de email ainda estiver ativado. Algo como seguir fará o trabalho
cat /dev/null >/var/spool/mail/tomlinuxusr
E sim, desculpe por despertar esse tópico antigo, mas achei que poderia contribuir.
Um forro:
echo 'd *' | mail -N
yes 'd' | mail
funciona como esperado.
No UNIX / Linux / Mac OS X, você pode copiar e substituir arquivos, não é? Então, que tal esta solução:
cp /dev/null /var/mail/root
Se você estiver usando cyrus / sasl / imap no seu servidor de e-mail, uma maneira rápida e eficiente de limpar tudo em uma caixa de correio mais antiga do que o número de dias especificado é usar o comando cyrus / imap ipurge . Por exemplo, aqui está um exemplo de remoção de tudo (tenha cuidado!), Com mais de 30 dias do usuário vleo . Observe que você deve estar logado como usuário do cyrus (administrador de e-mail do 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
Em vez de usar "d", por que não "p". Não tenho certeza se o "p *" funcionará. Eu não tentei isso. Você pode; no entanto, use o seguinte script "
#!/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