Как просмотреть файл сообщения электронной почты (расположенный в MailDir) из командной строки?

Вопрос или проблема

Я уверен, что у меня когда-то был способ читать 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 файловыми данными электронной почты.

Оцените материал
Добавить комментарий

Капча загружается...