Extrair / salvar um anexo de email usando o bash

30

Usando bashferramentas normais (ou seja, ferramentas de linha de comando internas ou comumente disponíveis), é

  • possível e
  • quão

extrair / salvar anexos em e-mails?

Por exemplo, digamos que tenho um relatório noturno que chega por email, mas é um arquivo zip de vários arquivos de log. Eu quero salvar todos esses zips em um diretório de backup. Como eu conseguiria isso?

Warren
fonte
"ferramentas normais do bash" - você quer dizer usar apenas as funções incorporadas ao bash (ou seja, o que você encontrará na página do manual do bash) ou, de maneira mais geral, ferramentas de linha de comando que você pode adicionar a um script do shell do bash ?
Doug Harris
@Doug Harris - quer .. se eu posso chamar maile fazer isso, ou salvar o elsewise anexo, tudo bem também :)
Warren

Respostas:

29

Se você está buscando portabilidade, tenha cuidado com a existência de várias versões diferentes de mail(1)e mailx(1). Há um mailxcomando POSIX , mas com muito poucos requisitos. E nenhuma das implementações que pareço analisar anexos de qualquer maneira.

Você pode ter o pacote mpack . Seu munpackcomando salva todas as partes de uma mensagem MIME em arquivos separados; tudo o que você precisa fazer é salvar as partes interessantes e limpar o restante.

Há também metamail . Um equivalente de munpacké metamail -wy.

Gilles 'SO- parar de ser mau'
fonte
Adicione também que, se você também deseja extrair as partes MIME do texto do email ao usar munpack, use a opção '-t':munpack -t email_file
Pierz
Obrigado pela informação sobre metamail. Você pode me ajudar com esta pergunta ?
george
13

O melhor programa para esse fim é ripMIME.

Extrai o texto e todos os anexos:

https://pldaniels.com/ripmime/

GitHub: inflex / ripMIME

Andreas Rehm
fonte
4
sudo apt install ripmime funciona embora. Veja também linux.die.net/man/1/ripmime . Eu uso este programa; funciona muito bem, sem dependências, exceto libc6.
Unhammer #
coisas boas, metamail e munpack não estão disponíveis no Ubuntu, mas o ripmime é e faz exatamente o que se espera.
28718 Diego Diego
2
  • SIM possível

  • Isto é COMO (Recurso aqui )

encontre dir contendo arquivos | enquanto lê o arquivo; Faz

crie tempdir e copie o arquivo lá

executar munpack em arquivo e copiar anexos em outro lugar

destruir tempdir (conteúdo)

feito

subanki
fonte
Se alguém quiser me para colar o script Perl aqui, então basta deixar um comentário
subanki
1
se você seria tão amável (obviamente deixando atribuição de onde você o encontrou :))
Warren
1
basta ler o script ... isso é um monte de perl!
warren
então você tem certeza de que deseja que eu inclua isso na minha resposta, isso será muito longo.
Subanki
não colar aqui, copiar da fonte original seria melhor neste caso :)
Warren