Unix From не является заголовком From:

Строка From anna@example.com Wed Oct 14 12:00:00 2026 обозначает начало сообщения в контейнере. Следующая строка From: Anna <anna@example.com> уже относится к письму. Первая строка исчезнет из EML, вторая останется. Не редактируйте их как одинаковые поля: это разные уровни формата.

Дата разделителя отражает запись в почтовый контейнер и может отличаться от Date в заголовках. Для поиска письма используйте тему, адреса и дату из индекса, а для спорной временной отметки сверяйте исходные заголовки в почтовой программе. Само поле From не подтверждает личность отправителя.

Официальные требования: RFC4155: варианты и границы контейнера MBOX

Снять ровно один уровень mboxrd-экранирования

В поддерживаемом профиле перед каждой строкой тела вида From или >From добавлен ещё один знак >. При извлечении снимается один знак с шаблона >+From. Это позволяет отличать транспортную защиту от уже существующего цитирования. Замена всех > испортит содержимое.

Преобразование выполняется только в теле. Кодировка MIME, base64 вложений и остальные байты сохраняются; LF и CRLF не унифицируются. Нельзя обещать байтовое равенство всему контейнеру: Unix-разделитель удалён, а строки From намеренно восстановлены. Контрольная сумма относится к готовому EML.

Транспортный и исходный уровни цитирования
Исходные данные
>From ordinary body line
>>From already quoted
Результат
From ordinary body line
>From already quoted

Второй знак > остаётся частью исходного текста письма.

При Content-Length нужен другой экспорт

mboxcl и mboxcl2 рассчитывают границы иначе. Заголовок Content-Length здесь вызывает отказ: угадывание границы по From могло бы разделить вложение или тело на ложные письма. Аналогично отклоняется неэкранированная строка From без поддерживаемой даты-разделителя.

Вернитесь к программе, создавшей архив, и выберите экспорт mboxrd либо отдельных EML. Не удаляйте Content-Length вручную и не добавляйте > глобальной заменой: вы не восстановите неизвестный профиль одним текстовым исправлением. Перед дальнейшей обработкой сохраните исходную выгрузку.

При Content-Length нужен другой экспорт
Признак источникаДействие
mboxrd, From-разделители, >+From в телеРазделить и сверить индекс
Content-Length в заголовке сообщенияПовторно экспортировать; этот профиль не принимается
Нераспознанная строка From в телеПроверить профиль в исходной программе
Больше 10 МБ или 200 писемРазделить архив локально до загрузки

Сначала небольшой архив, затем проверка количества

Один входной MBOX ограничен 10 МБ; в нём не более 200 писем, каждое до 2 МБ. Длинная строка свыше 64 КБ и чрезмерное число MIME-частей также приведут к отказу. Это инструмент для небольшой порции экспорта, а не потоковый обработчик многогигабайтного Takeout.

При превышении лимита частичный ZIP не выдаётся. Такой отказ лучше незаметной потери последних писем. Для большой папки экспортируйте несколько порций в почтовой программе и записывайте число сообщений каждой порции, чтобы затем сравнить сумму.

  1. Экспортируйте небольшую папку или диапазон писем в mboxrd.
  2. Загрузите файл и скачайте ZIP только после успешного завершения.
  3. Сравните число записей index.json с исходной папкой и количеством EML.

Проверить вложение и SHA-256 без доверия к имени

Файлы названы порядковыми номерами, поэтому одинаковые темы и опасные символы в них не создают конфликтов путей ZIP. Индекс хранит декодированную тему отдельно, а вложения остаются внутри EML. Размер в индексе относится к декодированному вложению, не к строке base64.

Выберите письмо с вложением, откройте EML в почтовом клиенте или отдельном просмотрщике и сравните имя, количество и размер вложений. SHA-256 готового EML из index.json помогает проверить копирование после распаковки. Он не заменяет проверку DKIM, цифровой подписи или антивирус.

Официальные требования: PostalMime: разбор RFC822, MIME и ограничения

Передать только ту порцию, которую допустимо обработать

Архив отправляется серверу; обработчик разделения использует память и не записывает письма в постоянные файлы. В ZIP может оказаться вся переписка, включая адреса, скрытые заголовки и вложения. Сам факт отсутствия HTML-предпросмотра не делает содержимое безличным.

Не загружайте архив с данными, которые ваша организация запрещает передавать внешнему сервису. Для такой почты выполняйте разделение локальной программой. Скачанные вложения не запускайте лишь потому, что они успешно прошли MIME-разбор: проверка формата не доказывает их безопасность.

Вопросы и ответы

Чем извлечение EML отличается от просмотра MBOX?

Каждое письмо становится отдельным RFC822-файлом для импорта в почтовую программу. ZIP содержит исходные MIME-части внутри EML и JSON-индекс; чтение HTML и отправка писем здесь не выполняются.

Какие варианты MBOX поддерживаются?

Ограниченный профиль mboxrd: строки From с датой ctime разделяют сообщения, один знак > снимается с каждой строки тела вида >+From. mboxcl/mboxcl2 с Content-Length отклоняются, а не интерпретируются приблизительно.

Почему строка >From изменилась после разделения?

В mboxrd это транспортное экранирование. >From превращается в From, >>From — в >From. Снимается ровно один знак, только в теле; заголовки, MIME-данные и остальные байты не перекодируются.

Можно ли загрузить весь Google Takeout?

Только если MBOX укладывается в 10 МБ, 200 писем и 2 МБ на письмо. Большую выгрузку сначала разделите локальной почтовой программой. Частичный архив не выдаётся: превышение лимита завершает операцию ошибкой.

Где находятся вложения и русские темы?

Вложения остаются в MIME-частях каждого EML. index.json декодирует тему и адреса, перечисляет вложения и их размеры. Сам EML сохраняет исходную кодировку, чтобы его прочитала почтовая программа.

Можно ли считать извлечённое письмо подлинным и безопасным?

Нет. Заголовки From и Date являются данными исходника. Инструмент не проверяет DKIM, SPF, S/MIME и вредоносные вложения. SHA-256 из индекса подтверждает совпадение полученного файла, а не отправителя.