Назад | Перейти на главную страницу

Восстановление удаленных текстовых файлов (электронных писем) из необработанного образа диска

Я размещаю свой собственный почтовый сервер на Linux для своей семьи. Вчера мой отец потерял все письма в папке «Входящие». Я до сих пор не уверен, из-за ли это ужасной ошибки пользователя или взломанного пароля, но дело не в этом. Благодаря закону Мерфи у меня тоже не было дублера (не стреляйте, я его создал сразу после), и мне ужасно плохо за него. Итак, у меня остался единственный вариант - попытаться восстановить удаленные электронные письма из раздела.

Я немедленно сделал образ всего раздела данных ext4 на сервере с помощью «dd», и теперь у меня есть архив размером в несколько сотен ГБ, с которым нужно иметь дело, и это похоже на гигантский стог сена. Мне интересно, как лучше всего извлечь электронные письма из этого изображения? Я знаю, что письма где-то там, потому что, когда я ищу электронную почту своего отца, я получаю много совпадений, таких как «Кому: dad@mydomain.com», а с параметром -C я вижу другие обычные заголовки SMTP (From, Subject, Date , Идентификатор сообщения, ...).

Сначала я попробовал "передовой" с настраиваемым форматом, но, поскольку письмо не имеет фиксированного размера, результаты не были окончательными.

Я тоже пробовал https://pypi.org/project/mail-parser/ но кажется, что для выполнения того, что я хочу, потребуется внести исправления (он ожидает текстовый файл, содержащий только письмо, а не большой необработанный файл с большим количеством писем в нем).

Знаете ли вы какой-либо другой (бесплатный) инструмент или метод для восстановления файлов электронной почты из этого образа ext4 с разумной точностью? Как объяснялось, сложность заключается в том, что, в отличие от изображений или других форматов, письма хранятся в виде обычного текста и не содержат напрямую размер, поэтому я думаю, что этот инструмент должен быть осведомлен о rfc822 в какой-то момент, чтобы выполнить синтаксический анализ / извлечение .

Что ж, мне потребовалось несколько часов и немного скриптов на Python, но, наконец, это сработало! Я смог восстановить все утерянные электронные письма моего отца.

Вся процедура и скрипты Python, которые я использовал, находятся здесь: https://github.com/piwai/mail-recovery Вкратце, я сделал следующее:

  • Сделайте образ раздела с dd
  • Используйте в первую очередь для обнаружения заголовка SMTP внутри образа dd
  • Анализируйте основной файл аудита для извлечения фрагментов данных, содержащих электронные письма
  • Отфильтруйте чанки, чтобы оставить только удаленный
  • Снова отфильтруйте, чтобы удалить дубликаты