
Я ищу способ сохранить все вложения из папки IMAP с 3000+ отчетами DMARC, каждый из которых прикреплен внутри отдельных сообщений как .zip
или .xml.gz
файл. Я используюКогти Почтакоторый имеетспособ автоматизировать это(См. Примеры -> Сохранить) через munpack
. К сожалению, в openSUSE Leap 42.3 (которую я использую) похоже нет пакета, который предоставляет munpack
. После некоторого поиска в Интернете я нашел альтернативу: metamail -wy
предложенную в качестве ответа наэтот вопрос.
Попытка сделать это напрямую в claws дала мне ошибку (из-за неправильного использования программы). Поэтому я вручную сохранил одно сообщение во временном каталоге и попробовал из консоли:
[/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
Другими словами: это работает само по себе, но требует интерактивного ввода для каждого отдельного сообщения — определенно не вариант для 3000+ писем.
Мой вопрос:
Как можно использовать его metamail
таким образом, чтобы не требовался интерактивный ввод, чтобы его можно было повторять (например, в скрипте или с помощью функциональности Claws Mail)?
решение1
Я не уверен, как на самом деле выглядят имеющиеся у вас данные, поэтому лучшее, что я могу сделать, — это сделать некоторые обоснованные предположения.
Я metamail -q -w -x file_name
успешно использовал в прошлом в скриптах для извлечения вложений. Как вы можете видеть из man metamail
, -w
сообщает metamail не обращаться к файлу mailcap, а просто извлекать вложения, -q
сообщает ему, чтобы он не выдавал никаких сообщений, потому что скриптам не нравится дополнительный вывод, и -x
сообщает ему, что он определенно не запущен на терминале, поэтому не должен задавать глупых вопросов.
У вас уже есть -w
, и вы также используете -y
, что не должно быть необходимым, если почта правильно отформатирована, но, возможно, у вас это не так - как я уже сказал, я не знаю, какие у вас данные. Страница руководства также предупреждает о странных эффектах, которые могут возникнуть с -y
.
Итак, сначала удалите -y
, посмотрите, работает ли он по-прежнему. Затем добавьте -x
, посмотрите, перестанет ли он спрашивать. Наконец добавьте , -q
чтобы удалить нежелательный вывод.
Редактировать
После того, как меня обвинили в лени, я предпринял следующие шаги:
1) Отправил себе zip-файл с одним пустым файлом, используя 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-файл, первый — основной текст.
А сейчас? У меня работает, у тебя нет.
решение2
- 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
(Возможно, вы захотите сделать это в пустой подпапке; используйте tree для поиска файлов; мои были в .usr/bin)
2б) munpack-1.6 имеет недокументированный ключ «-t» для более эффективного извлечения текста (не отображается при использовании «-?»)