gromox-pff2mt(8)
π gromox-pff2mt(8) β the Gromox admin reference, bestie edition
okay so picture this: it's a manual page, it's in the Gromox admin reference section, and it's literally about turning your dusty old mail files into something Gromox can eat. slay.
β¨ Name β¨
gromox-pff2mt β the utility for analysis/import of PFF/PST/OST files π
πΈ Synopsis πΈ
gromox-pff2mt [-pst] [...] input.pst
π¦ Description π¦
gromox-pff2mt reads a file that conforms to the Personal Folder File (PFF) and the Offline Folder File (OFF) format, and then re-exports all that data in a Gromox-specific mailbox transfer format to stdout so the gromox-import(8) program can just slurp it up through a pipe. teamwork, fr fr π«Ά
And as a lil bonus? pff2mt can optionally print a tree summary of the PFF. love that for us.
The PFF format gets used in a bunch of different file types, and here they are:
- PAB β Personal Address Book
- PST β Personal Storage Table
- OST β Offline Storage Table
By default, pff2mt creates a brand-new folder named Import of <xyz.pst> on <date> inside IPM_SUBTREE (that's the "Top of Information Store" bestie, iykyk) and drops every single PFF object into that new subfolder. cute, contained, organized. π
β οΈ okay listen, important lore: folders of non-default mailboxes are stored in a flat fashion in OST. no nesting, no vibes, just flat. so asecretary.ostfile with a hierarchy like"(Boss)\Inbox\2021\Invoices","(Boss)\Inbox\2022\Invoices"gets absolutely flattened into"(Boss)\Inbox","(Boss)\2021","(Boss)\Invoices","Boss\2022"and"(Boss)\Invoices". and when two folders end up with the same name at the same level,gromox-importerrors out when it tries to create a folder whose name already exists π. this genuinely limits the usefulness of importing OST files. ngl that one hurts.
π Options π
-pβ show properties in detail. it enhances-t, so it's giving "main character energy but only when-tis on stage". β¨-sβ splice objects from the PFF into existing folders. specifically: the PFF root gets mapped to the store root, and special folders (Sent Items, Deleted Items, etc.) get mapped to special folders in the store β but only if the PFF has the necessary information. PST files have no such mapping hint for Inbox; only OST do. and when--with-hiddenis not selected,-simplies--without-hiddenby default, so you don't go polluting stuff like"QuickStep settings"(which may already have settings β rude).-tβ show a diagnostic tree view of the source data as it's being read. it's literally live-tweeting your file structure at you π--loglevel nβ maximum verbosity of general logging (this is not connected to-p,-tor-v, jsyk). the levels:1=crit,2=error,3=warn,4=notice,5=info,6=debug. Default:4(notice)--with-hidden,--without-hiddenβ this option controls the import of folders that havePR_ATTR_HIDDEN=1. Default: if-sis present, import without hidden folders π--only-obj nidβ extract just the object with the given PFF node id. you can specify this option multiple times (collect them all π), and heads up: the objects will be unanchored; seegromox-import(8)for where messages are placed.
π§ Examples π§
import of a PFF-compatible file into a Gromox mailbox via exmdb transport β that's the classic:
gromox-pff2mt sample.pst | gromox-import -u user@domain.example
and listen, gromox-import has more target options; go read its manpage bestie π
π Bugs π
embedded messages are treated as subitems by libpff. luckily, the only consequence is that the tree view (-t) shows duplicate NID visits. no cap, that's the whole damage:
\_ [id=21cee4h ntyp=unknown-4h type=appointment nset=1 nent=161]
\_ [id=8005h ntyp=atx type=attachment nset=1 nent=19]
\_ [attachment type=i embedded_msg]
\_ [id=21cf04h ntyp=unknown-4h type=appointment nset=1
\_ [id=21cf04h ntyp=unknown-4h type=appointment nset=1 nent=50]
\_ [id=8025h ntyp=atx type=attachment nset=1 nent=19]
\_ [attachment type=i embedded_msg]
\_ [id=21cf24h ntyp=unknown-4h type=appointment nset=1
\_ [id=21cf24h ntyp=unknown-4h type=appointment nset=1 nent=49]
π See also π
and that's the whole page bestie π«Ά this came to you straight from the Gromox manual set, and yeah, the footer is literally just gromox-pff2mt(8) with Gromox as the source/version β so consider this your cute lil sign-off. mwah π go import something iconic β¨
π¦ where this page comes from
- alpine 3.24: grommunio-gromox-doc 3.6-r0 Β· AGPL-3.0-or-later
- π the page's license: CC-BY-SA-4.0 or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms