Precisa excluir e-mails para um intervalo de datas no Linux

4

Eu tenho 1 milhão de e-mails gerados em um servidor Linux devido a um trabalho cron. Eu quero excluir os e-mails, mas nem todos como este cron mails úteis para solucionar problemas e descobrir o problema com a execução do trabalho cron. Então, preciso manter o e-mail de um mês e remover o restante.

    
por ksk.eaknath 25.08.2014 / 12:53

3 respostas

5

Existem muitos comandos mail diferentes com conjuntos de comandos diferentes. O POSIX padroniza um comando mailx .

Sua caixa de correio normalmente contém e-mails na ordem em que foram recebidos. Portanto, para excluir e-mails mais antigos, você normalmente excluiria e-mails com números mais baixos. Você pode excluir um intervalo de mensagens com um comando como d 1-42 (excluir as primeiras 42 mensagens).

Se você quer mais controle, eu recomendo Mutt , um cliente de e-mail de linha de comando que oferece muito mais controle que o comando mail . Mutt tem uma interface de modo de texto e também pode ser roteirizada. No Mutt, você pode usar o comando D para marcar as mensagens para exclusão e insira o padrão ~d ->1m para selecionar mensagens com mais de um mês velho. Se você estiver satisfeito com a lista de mensagens a serem excluídas, digite x para excluir as mensagens marcadas para exclusão.

    
por 26.08.2014 / 03:30
2

Depois de muita pesquisa, encontrei o arquivomail usando o qual foi possível limpar o antigo correios.

A sintaxe é:

archivemail -d 30 --delete <path-to-mailbox>

(Em casos normais, $MAIL define a localização da caixa de correio local, tente echo $MAIL para verificar).

Você também pode verificar o que vai fazer com a opção -n ( - dry-run ).

    
por 20.05.2017 / 09:06
1

mutt pode excluir usando expressões regulares, detalhes aqui e aqui .

    
por 25.08.2014 / 22:13