Вопрос или проблема
Я уверен, что у меня когда-то был способ читать email-файлы из командной строки, который был проще простого, но сейчас мне не удается его найти.
У меня есть файлы в формате MailDir, я хочу просмотреть их содержимое (заголовки, тело (HTML/обычный текст), декодированный MIME, возможно, извлечь вложения). Это не мои письма; дело не в том, что я хочу MUA, способного получать, сортировать и отправлять почту за меня – это просто сырые файлы, которые мне нужно осмотреть.
Пакет maildir-utils (по крайней мере, так он называется в Debian) содержит программу под названием mu
, которая имеет хорошую функциональность для отображения содержимого сообщения электронной почты в формате Maildir. Она отображает только заголовки, часть text/plain и список вложений. См. мануал.
Пример: mu view /path/to/email-file
.
Если у вас есть электронное письмо с MIME-типом text/html
, mu
может извлечь его в отдельный файл: mu extract /path/to/email-file --parts=1
(по умолчанию выводится в 1.msgpart
, предполагая, что HTML является первой частью).
Используйте mutt -f /path/to/Maildir
. Или mutt -R -f /path/to/Maildir
, если вы хотите, чтобы mutt открыл почтовый ящик в режиме только для чтения.
Инструменты командной строки, о которых вы думаете, вероятно, это MH, также известная как Система обработки сообщений, которая старая и не поддерживается, или New MH, которая все еще активно поддерживается.
Я не думаю, что старая mh
может обрабатывать Maildir/почтовые ящики, но nmh
определенно может.
nmh
упакован как nmh
в Debian, и, вероятно, на большинстве других дистрибутивов тоже.
reformime
— это команда (из пакета maildrop
в Debian/Ubuntu), которая может быть использована для извлечения тела email-файла.
Вы можете получить список MIME-частей с помощью reformime -i <ваше-сообщение
, который даст вам что-то вроде
section: 1
content-type: multipart/alternative
content-transfer-encoding: 8bit
charset: UTF-8
content-language: en-GB
starting-pos: 0
starting-pos-body: 2494
ending-pos: 75170
line-count: 1287
body-line-count: 1241
section: 1.1
content-type: text/plain
content-transfer-encoding: 8bit
charset: utf-8
starting-pos: 2578
starting-pos-body: 2666
ending-pos: 8180
line-count: 181
body-line-count: 178
section: 1.2
content-type: multipart/related
content-transfer-encoding: 8bit
charset: UTF-8
starting-pos: 8220
starting-pos-body: 8303
ending-pos: 75128
line-count: 1054
body-line-count: 1051
section: 1.2.1
content-type: text/html
content-transfer-encoding: 8bit
charset: utf-8
starting-pos: 8343
starting-pos-body: 8415
ending-pos: 25276
line-count: 343
body-line-count: 340
Затем вы можете извлечь часть с помощью reformime -e -s 1.1
, например, это извлечет версию в обычном тексте (1.1). Таким образом, если секция 1.2.3 является изображением, вы можете просмотреть его так: reformime -e -s 1.2.3 <mail.eml | display :-
Так что, если вы просто хотите увидеть версию в обычном тексте, вы можете «легко» сделать это с помощью удобной однострочной команды:
F=/path/to/the-email-file
reformime -e -s $(reformime -i <$F | fgrep -B1 'content-type: text/plain' | head -n1 | cut -c 10- ) <$F
Это не совсем тот простой вариант, который я надеялся найти, но я подумал, что стоит это задокументировать!
Вы можете использовать утилиту mshow
из mblaze
системы обмена сообщениями. Но сначала вам может потребоваться получить небольшой «резюме» вашей почты, чтобы вы могли решить, что показывать:
$ mscan
# Это покажет вам несколько цифр, выберите одну
$ mshow 42
# Теперь вы увидите "просто сообщение"
(Вы можете видеть “только заголовки” аналогичным образом – выберите номер и запустите утилиту mhdr
🙂
$ mhdr 42
Received: from localhost (***.*** [local]) by ***.*** (OpenSMTPD) with ESMTPA id ***; Tue, 15 Oct 2024 14:15:52 +0000 (UTC)
From: <***@***.***>
To: ***@***.***, ***@***.***
Subject: Plain text
References: <05d4ca0ef41df04e@***.***>
Mime-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
Message-Id: <daf35198b0cdcb2f@***.***>
Ответ или решение
Чтобы просмотреть файлы сообщения электронной почты в формате Maildir через командную строку, несколько инструментов и подходов могут оказаться полезными. В данной статье мы рассмотрим различные утилиты и методы, которые помогут вам извлечь содержание писем, включая заголовки, тело и вложения.
Использование mu
Утилита mu
, входящая в пакет maildir-utils, является простым и эффективным инструментом для просмотра содержимого сообщений в формате Maildir. Для начала убедитесь, что пакет установлен:
sudo apt-get install maildir-utils
Чтобы просмотреть содержимое файла сообщения, просто выполните следующую команду:
mu view /путь/к/файлу/email-file
Эта команда покажет заголовки письма, текстовую версию (plain text) и список вложений. Если сообщение содержит MIME-часть с типом text/html
, вы можете извлечь ее в отдельный файл с помощью команды:
mu extract /путь/к/файлу/email-file --parts=1
Использование mutt
Утилита mutt
также может быть использована для просмотра сообщений в формате Maildir. Чтобы открыть директорию Maildir, выполните команду:
mutt -f /путь/к/Maildir
Если вы хотите открыть почтовый ящик в режиме только для чтения, добавьте флаг -R
:
mutt -R -f /путь/к/Maildir
Использование nmh
nmh
– это актуализированная версия системы управления сообщениями MH, которая включает поддержку формата Maildir. Чтобы установить её, выполните:
sudo apt-get install nmh
После установки вы можете использовать утилиты из nmh
для работы с вашими сообщениями.
Использование reformime
Инструмент reformime
, который является частью пакета maildrop, может помочь в анализе и извлечении частей сообщения. Установите его, если он еще не установлен:
sudo apt-get install maildrop
Для получения списка MIME-частей вы можете использовать следующую команду:
reformime -i /путь/к/вашему-сообщению
Чтобы извлечь текстовую версию сообщения, выполните следующую команду:
reformime -e -s 1.1 < /путь/к/вашему-сообщению
Однострочное извлечение текста
Если вам нужно вывести текстовую версию сообщения с помощью однострочного скрипта, воспользуйтесь следующим командлетом:
F=/путь/к/файлу
reformime -e -s $(reformime -i <$F | fgrep -B1 'content-type: text/plain' | head -n1 | cut -c 10- ) <$F
Использование mblaze
Еще одним инструментом, который можно использовать, является mblaze
. Установите его и используйте mscan
и mshow
для просмотра содержимого сообщений:
sudo apt-get install mblaze
Для начала выполните:
mscan
Затем выберите номер сообщения:
mshow 42
Заключение
Выбор инструмента зависит от ваших конкретных потребностей и предпочтений. mu
и mutt
являются простыми и мощными утилитами для просмотра сообщений, в то время как reformime
предоставляет более детальный обзор структуры MIME. nmh
и mblaze
также заслуживают внимания благодаря своим функциональным возможностям.
Эти инструменты позволяют вам не только просматривать заголовки и тело электронных писем, но и анализировать вложения, что делает их незаменимыми при работе с raw файловыми данными электронной почты.