
Estoy buscando una manera de guardar todos los archivos adjuntos de una carpeta IMAP con más de 3000 informes DMARC, cada uno de los cuales se adjunta dentro de los mensajes individuales como .zip
un .xml.gz
archivo. estoy usandoCorreo de garrasque tieneuna manera de automatizar esto(Ver Ejemplos -> Guardar) hasta munpack
. Desafortunadamente, en openSUSE Leap 42.3 (que yo uso) no parece haber un paquete que proporcione munpack
. Después de buscar un poco en la web encontré una alternativa: metamail -wy
sugerida como respuesta aesta pregunta.
Al intentarlo directamente en claws me dio algún error (por no usar correctamente el programa). Así que guardé manualmente un mensaje en un directorio temporal y lo intenté desde la consola:
[/tmp/download]: metamail -yw msg
Date: Mon, 03 Nov 2014 10:13:53 +0000
Subject: Report domain: ████████ Submitter: ████████
From: [email protected]
To: ████████
This message contains data in an unrecognized format, application/zip,
which can either be viewed as text or written to a file.
What do you want to do with the application/zip data?
1 -- See it as text
2 -- Write it to a file
3 -- Just skip it
2
Please enter the name of a file to which the data should be written
(Default: ████████.zip) >
Wrote file ████████.zip
En otras palabras: funciona per se, pero requiere entrada interactiva para cada mensaje individual; seguramente no es una opción para más de 3000 correos.
Mi pregunta es:
¿Cómo puedo usarlo metamail
de una manera que no requiera entrada interactiva, de modo que pueda iterarse (por ejemplo, en un script o mediante la funcionalidad de Claws Mail)?
Respuesta1
No estoy seguro de cómo se ven realmente los datos que tiene, así que lo mejor que puedo hacer son algunas conjeturas fundamentadas.
Lo usé metamail -q -w -x file_name
con éxito en el pasado en scripts para extraer archivos adjuntos. Como puede ver en man metamail
, -w
le dice a metamail que no consulte el archivo mailcap, sino que simplemente extraiga los archivos adjuntos, -q
le dice que guarde silencio, porque a los scripts no les gusta la salida adicional, y -x
le dice que definitivamente no se está ejecutando en una terminal, por lo que No debería hacer preguntas estúpidas.
Ya tienes -w
y también estás usando -y
, lo cual no debería ser necesario si el correo está formateado correctamente, pero tal vez el tuyo no lo esté; como dije, no sé qué datos tienes. La página de manual también advierte sobre efectos extraños que pueden ocurrir con -y
.
Entonces, primero -y
, vea si todavía funciona. Luego agregue -x
, vea si deja de preguntar. Finalmente agregue -q
para eliminar resultados no deseados.
Editar
Después de que me acusaran de ser demasiado vago para intentarlo, seguí los siguientes pasos:
1) Me envié por correo un archivo zip con un archivo vacío usando mutt
. Aquí está el correo completo, con algunos encabezados eliminados/editados:
From mail Sat Mar 3 12:49:13 2018
Envelope-to: <dirk@...>
...
Message-ID: <20180303114913.xr7xvpx2pso6wurn@feanor>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="gsrhzrdopn4ddt7t"
Content-Disposition: inline
User-Agent: NeoMutt/20170609 (1.8.3)
Content-Length: 480
Lines: 18
--gsrhzrdopn4ddt7t
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Test
--gsrhzrdopn4ddt7t
Content-Type: application/zip
Content-Disposition: attachment; filename="foo.zip"
Content-Transfer-Encoding: base64
UEsDBAoAAAAAALplY0wAAAAAAAAAAAAAAAAHABwAenp6L2Zvb1VUCQAD8IqaWvCKmlp1eAsA
AQToAwAABOgDAABQSwECHgMKAAAAAAC6ZWNMAAAAAAAAAAAAAAAABwAYAAAAAAAAAAAApIEA
AAAAenp6L2Zvb1VUBQAD8IqaWnV4CwABBOgDAAAE6AMAAFBLBQYAAAAAAQABAE0AAABBAAAA
AAA=
--gsrhzrdopn4ddt7t--
2) Lo guardé en un buzón llamado yyy
y luego ejecuté
METAMAIL_TMPDIR=. metamail -q -x -w ~/Mail/yyy
3) Como era de esperar, metamail no pregunta y guarda todas las partes como dos archivos llamados 1-M64bZlz
y 1-MKfamEn
. El segundo es el archivo zip, el primero es el texto del cuerpo.
¿Y ahora? A mí me funciona, a ti no.
Respuesta2
- ripmime es una utilidad realmente buena para extraer archivos adjuntos de un correo electrónico (yo uso un script que se invoca desde procmail)
2a) si realmente desea usar munpack, probablemente pueda usar el binario que se encuentra dentro del archivo de administración de paquetes para una versión anterior. Por ejemplo, necesitaba munpack en CentOS-7 pero no pude encontrar un rpm para mpack, así que usé rpmfinder para descargar este "mpack-1.6-2.el6.rf.x86_64.rpm" y luego usé este comando para descomprimir el contenido.
rpm2cpio mpack-1.6-2.el6.rf.x86_64.rpm | cpio-idmv
(Es posible que desees hacer esto en una subcarpeta vacía; usa el árbol para buscar los archivos; los míos estaban en .usr/bin)
2b) munpack-1.6 tiene un modificador no documentado "-t" para realizar mejores extracciones de texto (no se muestra cuando se usa "-?")