Apagar antigos e-mails de um Maildir

3

Atualmente, estou tentando descobrir como posso excluir e-mails antigos em uma pasta de uma instalação do Maildir em um servidor Debian. Basicamente, o que eu quero fazer é executar um cron job todos os dias, que verifica uma pasta específica no Maildir para e-mails antigos e os exclui se eles forem mais antigos do que uma quantidade de dias definida.

Existe uma maneira simples de filtrar e-mails de uma data do Maildir ou eu tenho que ler todos os e-mails como texto, procurar pelo timestamp, convertê-lo, subtrair a quantidade de dias mencionada e compará-lo para a data atual?

Eu não quero inventar a roda se já houver rodas melhores por aí, então eu ficaria feliz se alguém pudesse me ajudar em fazer isso.

Obrigado!

Note: I am using Debian 7.8 with Postfix 2.9.6 & Dovecot 2.1.7

    
por comfreak 09.08.2015 / 13:59

1 resposta

6

Desde que você tenha dovecot, você pode fazer isso com doveadm (1).

Por exemplo, excluindo os emails salvos na pasta Lixeira do usuário antes de 30 dias:

doveadm expunge mailbox Trash savedbefore 30d -u <user>

Você pode usar o sinalizador -A para todos os usuários e, se quiser verificar primeiro os e-mails correspondentes, use os comandos search / fetch - consulte doveadm-search (1):

doveadm search mailbox Trash savedbefore 30d -u <user> |
   while read guid uid; do
     doveadm fetch -u <user> body mailbox-guid $guid uid $uid > msg.$uid
   done
    
por 09.08.2015 / 15:28