Как использовать metamail для извлечения почтовых вложений без интерактивного ввода?

Я ищу способ сохранить все вложения из папки IMAP с 3000+ отчетов DMARC, каждый из которых прикреплен внутри отдельных сообщений как .zip или же .xml.gz файл. Я использую Claws Mail, у которого есть способ автоматизировать это (см. Примеры -> Сохранить) через munpack, К сожалению, в openSUSE Leap 42.3 (который я использую), похоже, нет пакета, который обеспечивает munpack, После некоторого поиска в Интернете я нашел альтернативу: metamail -wy предлагается в качестве ответа на этот вопрос.

Попытка этого непосредственно в когтях дала мне некоторую ошибку (как не использование программы должным образом). Поэтому я вручную сохранил одно сообщение во временном каталоге и попытался из консоли:

[/tmp/download]: metamail -yw msg
Date: Mon, 03 Nov 2014 10:13:53 +0000
Subject: Report domain: ████████ Submitter: ████████
From: noreply-dmarc-support@google.com
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

Другими словами: это работает само по себе, но требует интерактивного ввода для каждого отдельного сообщения - конечно, не вариант для 3000+ писем.

Мой вопрос:

Как я могу использовать metamail таким способом, который не требует интерактивного ввода, чтобы его можно было повторять (например, в сценарии или с помощью функции Claws Mail)?

2 ответа

Решение

Я не уверен, как на самом деле выглядят ваши данные, поэтому лучшее, что я могу сделать, - это какие-то образованные догадки.

я использовал metamail -q -w -x file_name успешно в прошлом в скриптах для извлечения вложений. Как вы можете видеть из man metamail, -w говорит metamail не обращаться к файлу mailcap, а просто извлечь вложения, -q говорит, что это тихо, потому что сценарии не любят дополнительный вывод, и -x говорит, что он определенно не работает на терминале, поэтому он не должен задавать глупые вопросы.

У тебя уже есть -wи вы также используете -y, что не должно быть необходимо, если письмо правильно отформатировано, но, возможно, ваше нет - как я уже сказал, я не знаю, какие у вас данные. Страница man также предупреждает о странных эффектах, которые могут произойти с -y,

Итак, первая капля -yПосмотрите, все ли еще работает. Затем добавьте -xПосмотрите, перестанет ли он спрашивать. Наконец добавить -q удалить нежелательный вывод.

редактировать

После обвинения в том, что я слишком ленив, чтобы попытаться, я сделал следующие шаги:

1) отправил мне почтовый файл с одним пустым файлом, используя mutt, Вот полное письмо с некоторыми удаленными / отредактированными заголовками:

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) Сохранено в почтовом ящике yyyзатем побежал

METAMAIL_TMPDIR=. metamail -q -x -w ~/Mail/yyy

3) Как и ожидалось, metamail не запрашивает, а сохраняет все части в виде двух файлов 1-M64bZlz а также 1-MKfamEn, Второй - это zip-файл, первый - основной текст.

И сейчас? Это работает для меня, это не работает для вас.

  1. ripmime — действительно хорошая утилита для извлечения вложений из электронной почты (я использую скрипт, который вызывается из procmail)

2a) если вы действительно хотите использовать munpack, то вы, вероятно, можете использовать двоичный файл, найденный в файле управления пакетами для предыдущей версии. Например, мне нужен был munpack для CentOS-7, но я не смог найти rpm для mpack, поэтому я использовал rpmfinder, чтобы загрузить этот «mpack-1.6-2.el6.rf.x86_64.rpm», а затем использовал эту команду для распаковки содержимого.

rpm2cpio mpack-1.6-2.el6.rf.x86_64.rpm | cpio -idmv

(возможно, вы захотите сделать это в пустой подпапке; используйте дерево для поиска файлов; мои были в .usr/bin)

2b) munpack-1.6 имеет недокументированный ключ "-t" для лучшего извлечения текста (не отображается, если вы используете "-?")

Другие вопросы по тегам