web-dev-qa-db-ja.com

生のディスクイメージから削除されたプレーンテキスト(電子メール)ファイルを回復する

私は家族のために自分のLinuxメールサーバーをホストしています。昨日、父は受信トレイフォルダ内のすべてのメールを失いました。それがひどいユーザーエラーによるものなのか、パスワードの侵害によるものなのかはまだわかりませんが、それはここでは重要ではありません。マーフィーの法則のおかげで、私もバックアップがなく(撮影しないで、直後に作成しました)、彼にとってひどく気分が悪いです。したがって、残っている唯一のオプションは、パーティションから削除された電子メールを回復しようとすることです。

サーバー上のext4データパーティション全体のイメージを「dd」ですぐに撮影しました。これで、処理する数百GBのアーカイブができました。これは、巨大な干し草の山のように感じます。この画像からメールを抽出する最良の方法は何ですか?お父さんのメールをgrepすると、「To:[email protected]」のような一致がたくさんあり、-Cオプションを使用すると、他の通常のSMTPヘッダー(From、Subject、Date)が表示されるため、メールがどこかにあることがわかります。 、Message-Id、...)。

私は最初にカスタムフォーマットで「最前線」を試しましたが、メールのサイズが固定されていないため、結果は決定的ではありませんでした。

私も試しました https://pypi.org/project/mail-parser/ しかし、私が望むことを行うにはパッチが必要なようです(メールだけが含まれているテキストファイルが必要です。たくさんのメールが入った大きな生ファイル)。

このext4イメージから電子メールファイルを妥当な精度で再構築するための他の(無料の)ツールまたは方法を知っていますか?説明したように、トリッキーな部分は、画像や他の形式とは異なり、メールはプレーンテキストで保存され、サイズを直接含まないことです。したがって、このツールは、解析/抽出を行うために、ある時点でrfc822を認識する必要があると思います。 。

1
piwai

さて、それは私に数時間と少しのPythonスクリプトを作成しました、しかしそれはついにうまくいきました!私は私の父の失われた電子メールのすべてを回復することができました。

手順全体とPython使用したスクリプトは次のとおりです: https://github.com/piwai/mail-recovery 要するに、私がしたことは次のとおりです。

  • Ddでパーティションの画像を撮ります
  • Ddイメージ内のSMTPヘッダーを検出するために何よりも使用します
  • 最前線の監査ファイルを解析して、電子メールを含むデータのチャンクを抽出します
  • チャンクをフィルタリングして、削除されたチャンクのみを保持します
  • 再度フィルタリングして重複を削除します
0
piwai