Я размещаю свой собственный почтовый сервер на 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 Вкратце, я сделал следующее: