Beta package

pst-tool

Outlook .pst extraction done the way forensic and migration work needs it: every folder, every body, every attachment, out to plain files you can diff, hash and hand to somebody else.

Four small command-line scripts that run on your own machine. Nothing is uploaded, and the archive is opened read-only.

A beta package is unfinished software. Read the beta terms before you run it.

Download

In the browser, or on your machine

  • In the browser — read an archive in the page. Choose a .pst and it shows the folder tree, the message count and the first messages without uploading anything: the parser runs in the page against the bytes your browser reads off the file. On the test archive it reports the same 11 folders and 71 messages as the command-line tool. Compressed archives are the known gap, and the page says so when it meets one.
  • The sources — pst-tool.zip (15 KB): the four scripts, the README and the drag-and-drop batch wrapper, for when you want the whole archive written out rather than read.
  • What is not in the zip: the dependency folder. The repository vendors it, but a 15 KB archive should not carry it, so the first step below is npm install.

Verify what you downloaded

SHA-256
32dfade3261c3f30e64447ecc100d0c634a6ececeef180847c8a660f991431aa
shasum -a 256 pst-tool.zip

Run it

One command in, a tree out

# 1. unpack and install the one dependency Expand-Archive .\pst-tool.zip -DestinationPath .\pst-tool cd pst-tool npm install # 2. the single command that does the job node pst_index.js "D:\Mail\2015.pst" # -> .\pst-index-output\ node pst_index.js "D:\Mail\2015.pst" D:\index # or choose the destination # 3. reconnaissance, if you want to look before you leap node pst_probe.js "D:\Mail\2015.pst" # store name, folder tree, item census node pst_dates.js "D:\Mail\2015.pst" # per-folder date range, year histogram # 4. bulk extraction from a prepared list node pst_extract.js my_list.json out\

Exit codes are part of the interface: 0 an index was written, 2 bad usage, and non-zero when the archive cannot be read or when zero messages were extracted. A run that extracts nothing fails on purpose — an empty result that reports success is how a broken extraction ships.

Behaviour is tunable from the environment rather than from flags: PST_MAX_BODY caps the stored body length and PST_ATTACH controls attachment handling.

Status

What is finished, and what is not

  • 26 tests pass, and they run against a real archive rather than a fixture stub.
  • The read-only claim is tested, not asserted. The integration run hashes the archive before and after extraction and requires it to be byte-identical. A tool that quietly rewrites the evidence is worse than no tool.
  • What a beta tester cannot do yet: the tool has not been run against a very large production archive on this side, so an unusually damaged or multi-gigabyte store is the case most likely to fail first. Tell us if it does.

Tell us what broke

Which archive shape failed, what the tool printed, and what the exit code was. Do not send the archive itself.

Open the feedback form