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 вручную и не добавляйте > глобальной заменой: вы не восстановите неизвестный профиль одним текстовым исправлением. Перед дальнейшей обработкой сохраните исходную выгрузку.
| Признак источника | Действие |
|---|---|
| mboxrd, From-разделители, >+From в теле | Разделить и сверить индекс |
| Content-Length в заголовке сообщения | Повторно экспортировать; этот профиль не принимается |
| Нераспознанная строка From в теле | Проверить профиль в исходной программе |
| Больше 10 МБ или 200 писем | Разделить архив локально до загрузки |
Сначала небольшой архив, затем проверка количества
Один входной MBOX ограничен 10 МБ; в нём не более 200 писем, каждое до 2 МБ. Длинная строка свыше 64 КБ и чрезмерное число MIME-частей также приведут к отказу. Это инструмент для небольшой порции экспорта, а не потоковый обработчик многогигабайтного Takeout.
При превышении лимита частичный ZIP не выдаётся. Такой отказ лучше незаметной потери последних писем. Для большой папки экспортируйте несколько порций в почтовой программе и записывайте число сообщений каждой порции, чтобы затем сравнить сумму.
- Экспортируйте небольшую папку или диапазон писем в mboxrd.
- Загрузите файл и скачайте ZIP только после успешного завершения.
- Сравните число записей 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 из индекса подтверждает совпадение полученного файла, а не отправителя.