Como automatizar o mutt na remoção de emails antigos da lista de discussão?

5

Em mutt , executo a seguinte sequência de etapas:

$ mutt -f imaps://imap.example.com
username
password
[shift]+[D]
~C [email protected]
[shift]+[D]
~C [email protected]
(...)
[shift]+[D]
~C [email protected]

[shift]+[U]
~d<91d
q
y

Então eu:

  • fornecer credenciais login , password
  • [shift]+[D] ~C mailinglist@domain selecione para listas de discussão de exclusão 1 , 2 ... N
  • [shift]+[U] ~d<91d , mas desmarcar todos que tenham menos de 91d de idade
  • q selecione sair
  • y e confirme para excluir mensagens

Como automatizar isso? (faça um script)

mutt -e ...

Referências:

por Grzegorz Wierzowiecki 27.05.2016 / 19:06

1 resposta

4

1. Autenticação

Você pode especificar o nome de usuário no imaps:// URI e a senha com a configuração de configuração imap_pass .

Se você não quiser colocá-los em seu padrão ~/.muttrc , poderá criar um alias ou um wrapper de script de shell para executar mutt com essas configurações. por exemplo,

$ alias muttexample="mutt -f 'imaps://[email protected]/' 
                          -e 'set imap_pass=PASSWORD'"
$ muttexample

(alimentação de linha e recuo adicionado somente para legibilidade)

Se você é sensivelmente cauteloso e não quer a senha na sua linha de comando (onde é facilmente visível com ps ou procurando em /proc ), então você pode criar um arquivo chamado, por exemplo, ~/.muttrc.extra com as duas linhas seguintes:

source ~/.muttrc
set imap_pass=PASSWORD

Lembre-se de executar chmod 600 ~/.muttrc.extra para torná-lo legível apenas por você.

Em seguida, crie seu alias como:

$ alias muttexample="mutt -f 'imaps://[email protected]/' 
                          -F ~/.muttrc.extra"

2. Automatizando a exclusão

Agora que a autenticação foi resolvida, provavelmente a maneira mais fácil automatizar a exclusão de mensagens é usar um gancho de pastas em ~/.muttrc.extra .

source ~/.muttrc
set imap_pass=PASSWORD

folder-hook imaps://[email protected]/ push '[email protected]<enter>[email protected]<enter>[email protected]<enter>U~d<91d<enter>qy'

Você pode precisar refinar o imaps:// URI no gancho da pasta - Eu não uso o imap sozinho, então não sei se a porção USERNAME@ é necessária nos ganchos da pasta ou não.

Se essa linha de gancho da pasta ficar muito longa e complicada para editar ou fazer sentido, você poderá salvar seus comandos em ~/.muttrc.deletecmds :

[email protected]
[email protected]
[email protected]
U~d<91d
qy

e use isso para o seu gancho de pasta:

folder-hook imaps://[email protected]/ push 'sed -z 's/\n/\<enter\>/g' ~/.muttrc.deletecmds'

Observe que estamos usando backticks em vez de aspas simples no ~/.muttrc.extra desta vez, para que mutt chame um comando externo.

O comando sed substitui cada nova linha ( \n ) pelo texto literal <enter> . Ele usa a opção -z , então o GNU sed é necessário. Se você não tem o GNU sed, você pode usar perl ou awk .

BTW, recomendo testar isso em uma cópia local da caixa de correio (ajustar as caixas de correio e a linha de gancho de pastas, etc. para apontar para um arquivo local em vez de imap). Salve algumas ou todas as mensagens da sua caixa de correio do imap em um arquivo mbox local se você não tiver nenhum correio local à mão.

Além disso, eu testaria sem o qy final na linha de gancho da pasta (ou no arquivo ~/.muttrc.deletecmds ). mutt não sai e sai automaticamente, então você verifica manualmente se está exatamente o que deseja e nada mais. Além disso, você pode desativar a gravação de alterações no disco digitando % e, em seguida, qy para encerrar, para não precisar preencher sua caixa de correio de teste novamente.

3. Existem melhores maneiras de fazer isso

mutt realmente não é a ferramenta certa para este trabalho.

Você já pensou em fazer isso com perl , usando o módulo Net :: IMAP :: Simple ? ou um dos muitos outros módulos perl tem para lidar com IMAP e e-mail (por exemplo, < a href="https://metacpan.org/release/Email-Simple"> Email :: Simple )?

Se você não gostar de perl , python um bom imaplib2 module.

    
por 28.05.2016 / 08:41