gromox-pff2mt(8)

πŸ“¦
version 3.6 Β· 2 versions
, in alpine 3.24

πŸ’… 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 a secretary.ost file 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-import errors 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 -t is 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-hidden is not selected, -s implies --without-hidden by 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, -t or -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 have PR_ATTR_HIDDEN=1. Default: if -s is 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; see gromox-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 πŸ“

gromox(7), gromox-import(8)


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