Skip to content

Latest commit

 

History

History
72 lines (64 loc) · 19 KB

File metadata and controls

72 lines (64 loc) · 19 KB

OfficeIMO.Email support matrix

This matrix describes the current public contract for persisted email and Outlook artifacts. It keeps transport outside the artifact engine while sharing bounded CMS/X.509 processing with PDF through OfficeIMO.Security.

Formats and workflows

Capability Status Current contract Boundary
EML and MIME read/write Broad Ordered and duplicate headers, encoded words, legacy charsets, continued parameters, nested multiparts, reports, protected entities, plain text, HTML, inline resources, attachments, embedded RFC messages, bounded malformed recovery, file-backed attachment reads, and chunked sync/async writer and EmailDocument.Save paths Mail transport, DKIM, ARC, and OpenPGP cryptography belong to the host; S/MIME data processing is covered below
Outlook MSG/OFT read/write Broad Standard, unknown, and named MAPI properties; Unicode and String8 code pages; sender/representing/received address forms; all recipient roles; message metadata; bodies; by-value, linked, OLE, and embedded attachments; selective compound streams; recurrence/time-zone evidence; and deterministic chunked output PST/OST stores and Exchange directory resolution are not MSG artifact concerns
MSG compound storage Complete for MSG FAT, MiniFAT, DIFAT, hierarchical storages, regular/mini streams, embedded messages, and OLE/custom attachment storages Not a public general-purpose CFB transaction API
Outlook messages Broad One typed MAPI vocabulary and property bag across MSG, TNEF, PST/OST, OAB, mutation, and semantic comparison; subject/conversation metadata; importance; priority; read/draft/receipt state; categories; follow-up; reminders; voting; reactions; and user properties Unknown or vendor properties remain available through the same raw MapiProperties collection
Appointments and meetings Broad Start/end, location, all-day, busy/meeting/response state, attendees, lifecycle request/response/cancellation data, decoded recurrence and exceptions, Outlook time zones, bounded occurrence expansion, reminders, and diagnostic ICS conversion Unknown recurrence and time-zone bytes are retained. Expansion is always caller-bounded; free/busy and server scheduling remain outside the artifact engine
Contacts and distribution lists Broad Contact names, organization, dates, addresses, phones, email slots, web/IM fields, privacy, picture metadata, retained custom properties, plus typed personal distribution-list membership and entry identities Offline directory resolution is supplied by the OAB package; Exchange/Graph lookup remains outside the artifact engine
Tasks Broad Dates, status, completion, effort, owner/assignment state, request/accept/reject/update lifecycle data, decoded recurrence and exceptions, reminders, ordering, contacts, companies, billing, and mileage Server-side task synchronization is outside the artifact engine
Journals and sticky notes Broad Journal timing/type/document flags and note color/size/position UI rendering is outside scope
RTF bodies Broad MS-OXRTFCP LZFu and MELA, bounded decompression, CRC diagnostics, encapsulated HTML projection, and deterministic writing RTF syntax and semantic conversion are owned by OfficeIMO.Rtf
TNEF / winmail.dat Broad Message attributes, MAPI properties, recipient rows, attachments, embedded items, file-backed attachment reads, streaming checksums, limits, and deterministic writing Transport generation policy remains with the mail client
mboxo and mboxrd Supported Aggregate read/write, envelope metadata, escaping, message-count and source limits; store sessions build a bounded offset/summary index with one-message retained memory, enforce the aggregate attachment budget, and decode selected entries on demand Sessions are not concurrent mailbox engines
Standalone iCalendar / ICS Read/write/mutate One or more ordered VCALENDAR roots; arbitrary nested components; repeated, IANA, and X- properties; multivalued parameters; UTF-8 75-octet folding; bounded sync/async I/O; DATE, floating, UTC, and TZID-local temporal helpers; RRULE helpers; and structural/conformance validation TZID values are retained without host-OS normalization. Legacy .vcs data is parsed and preserved through the generic model, but RFC 5545 validation continues to report non-2.0 constructs
Standalone vCard / VCF Read/write/mutate Ordered multi-card streams for vCard 2.1, 3.0, and 4.0; groups; repeats; grouped properties; multivalued and legacy parameters; RFC 6868; quoted-printable continuation; binary/data-URI values; extensions; text helpers; and version-specific validation Directory lookup/synchronization and vendor semantics without a standard mapping remain host concerns; unknown data stays accessible through the content-line model
PST and OST stores Selective read; new Unicode PST write; verified Unicode PST mutation ANSI/Unicode PST and supported PST-compatible OST NDB variants; typed IDs and folder navigation; bounded query AST, projections, sorting, keyset paging, and await-foreach enumeration; selective item parts; deferred attachments; associated items; and orphan discovery. New PST output covers folders, typed items, recipients, attachments, embedded messages, named properties, and multi-valued MAPI properties. Existing unprotected Unicode PST transactions support dry-run plans, copy, typed batch selection, property/attachment patches, sync or async-flush commit, semantic verification, optional backup, and atomic replacement Mutation is a semantic rewrite whose IDs change, not in-place NDB editing. The async commit asynchronously flushes staging and copies backups; ordered PST serialization and semantic comparison remain synchronous stateful phases. Password-protected PSTs remain readable but are rejected for mutation. ANSI PST mutation, OST mutation/output, append, in-place repair, password/encryption authoring, Exchange synchronization, and recovery of content never cached in an OST are outside the contract
OLM, EMLX, Mbox, and mailbox directories Read plus selected native write Bounded Outlook for Mac ZIP/XML archives, individual Apple Mail EMLX items, partial-content metadata, indexed Mbox store sessions, Apple Mail trees, Maildir, and EML/MIME directory sessions. EMLX and Maildir directory output is atomic per item and includes preservation diagnostics/manifests OLM opens into a bounded materialized model; Mbox retains offsets and summaries after a one-message-at-a-time indexing pass; mailbox directories remain lazy. OLM authoring is not implemented; Maildir flag suffixes fall back to the manifest on file systems that cannot represent them
Store query, search, and validation Supported Composable typed filters, table projections, stable multi-field sorting and continuation tokens; metadata queries; resumable semantic body/recipient/attachment-name search; snippets; progress; special-folder roles; content-availability reporting; conversation graphs; and bounded PST/OST CRC/signature/layout validation Query and search are bounded offline scans, not an Outlook or Exchange index; structural validation does not repair the source
Store-associated Outlook data Supported, bounded Folder-associated catalog and detached folder MAPI snapshots; lossless master-category lists; roaming XML/dictionaries; view envelopes; opaque rule-organizer streams with fingerprints; search-folder definition/container metadata; folder user-property definitions; and reminder queues with explicit signal evidence and exclusion domains Undecoded rule/view/search bytes are retained rather than guessed. The APIs do not execute Outlook rules, render views, or run a server search index
PST recovery and maintenance Verified rewrite/export Corruption-tolerant per-item recovery export with provenance manifest; no-write compaction and split plans; verified compaction to a distinct PST; and query/estimated-size partitioned PST split with complete-set commit/rollback protection Compaction never replaces the open source. Split sizes are estimates until written. These workflows recover readable indexed data; they do not repair NDB structures in place
Store export, verified conversion, and merge Supported Selected items to EML, MSG, OFT, TNEF, Maildir, or EMLX; atomically committed streaming mbox; source-bound resumable PST/OST/OLM/EMLX/Mbox/mailbox-directory migration with change detection, item provenance, bounded attachment access, progress, explicit partial-result policy, durable verification journal, and optional privacy-safe keyed destination manifest; staged semantic verification before committing a new Unicode PST; and multi-source merge with folder modes, disk-backed keyed deduplication, retries, and bounded diagnostics Search folders become static folders; unavailable OST/server content and unsupported attachment payloads are reported rather than invented. Incomplete writer state is retained only under the configured resume policy
Semantic fingerprints Supported Versioned migration, strict, and deduplication profiles; streamed attachment hashing; optional HMAC-SHA-256; and value-free difference reports A fingerprint is a comparison/audit primitive, not a cryptographic authenticity signature
Outlook OAB address books Read-only, selective Bounded component discovery; dynamic-schema v4 Full Details entries and distribution lists; shared address/contact/MAPI projections; raw property retention; resumable search; duplicate-aware offline SMTP/proxy/EX/X.500/account identity index; seeded CRC, framing, and full-decode validation Display templates and v2/v3 components are inspection-only; compressed Exchange downloads, patches, directory synchronization, and mutation are outside the expanded-cache reader
Protected Outlook messages Supported for S/MIME data workflows Detects opaque and clear-signed S/MIME wrappers; preserves and passes through the original artifact; creates clear or opaque signatures, recipient envelopes, and sign-then-encrypt RFC 5322/MIME output; verifies exact multipart/signed MIME bytes and opaque signed-data; decrypts EnvelopedData with an explicitly supplied recipient certificate and provider; reports provider, signer identity, chain, revocation, timestamp, and offline-policy evidence; and performs explicit decrypt-then-verify ordering while retaining unprojectable protected bytes Sending, MSG/TNEF protected-container authoring, certificate/key discovery, automatic certificate-store search, DKIM/ARC/OpenPGP, and non-exportable RSA envelope decryption remain caller/host concerns
Artifact preservation and conversion result Supported Every EML/MSG/OFT/TNEF/mbox/EMLX writer reports preserved versus regenerated source selection, operation-scoped attachment access, stable diagnostic codes, and strict none/accepted/blocked loss disposition through EmailWriteResult The result describes one artifact operation; it does not create a transport-owned message model or retain attachment streams
Safe HTML/text/Markdown preparation Optional bridge OfficeIMO.Email.Html owns deterministic body choice, RTF fallback, untrusted sanitization, CID/content-location/filename resolution, remote-resource policy, bounded resources, safe HTML/text, and a prepared HTML document reused by Image and Reader Markdown projection Core OfficeIMO.Email has no HTML dependency and the bridge never performs network I/O
Lossless pass-through Supported Preserved raw source can be emitted unchanged when explicitly requested; EmailWriteResult.SourceSelection proves whether that source was selected Structured edits regenerate the artifact and cannot preserve an existing cryptographic signature
OfficeIMO.Reader integration Supported OfficeIMO.Reader.Email registers individual email artifacts, calendars/cards, PST/OST/OLM/EMLX and mailbox-directory stores, and typed OAB entry projection; body preparation reuses OfficeIMO.Email.Html The selective adapter owns no email parser or alternate body/resource policy
Mixed email-data discovery Supported The included OfficeIMO.Email.Data API detects one file or directory and returns the existing EmailDocument, IcsDocument, VCardDocument, EmailStoreSession, or OfflineAddressBookSession owner result The facade contains no alternate parsers, mutation logic, or document extraction. Profile/autocomplete caches remain deferred until a real consumer defines that contract

Interoperability evidence

Oracle or evidence Result
MsgKit 3.0.5 runtime generation OfficeIMO reads MsgKit EML-to-MSG output and named contact properties without mapping diagnostics
MsgReader 6.0.12 OfficeIMO output is readable for message, recipient, room/resource, body, attachment, appointment, contact, task, and journal contracts
MsgReader 6.0.12 sample corpus 15 real MSG fixtures matched subject, attachment count, and recipient count with no MSG parse errors, named-property warnings, or property-stream alignment warnings
OpenMcdf 3.1.4 Test-only oracle opens OfficeIMO mini-stream, regular-stream, hierarchical, empty-stream, and DIFAT compound output
MimeKit 4.x TNEF reader Accepts OfficeIMO TNEF output as compliant
MimeKit independent MIME corpus Test-only exact-version fixtures cover malformed recovery, nested multiparts, duplicate ordered headers, legacy encodings, RFC 2231 continuations, embedded messages, delivery reports, and protected entities. MimeKit remains absent from runtime projects.
iCalendar/vCard contract suite Read-edit-write-reopen coverage includes multiple calendars/cards, nested alarms, recurrence and temporal forms, scoped TZID validation, vCard 2.1/3.0/4.0, grouped/repeated fields, media values, legacy parameter quoting, quoted-printable continuation, RFC 6868, Unicode octet folding, and configured size/depth/count limits
Microsoft Outlook for Mac Opens OfficeIMO-authored message, appointment, contact, task, journal, and note MSG files by their native subjects; the message view showed sender, recipient, body, and attachment content
Microsoft Outlook for Windows Opt-in COM fixtures create mail, appointment, contact, task, named/unknown MAPI, address, attachment, recurrence, and time-zone evidence; OfficeIMO rewrites the artifacts and Outlook semantically reopens them. The PST gate mounts a generated Unicode store and checks folder, subject, recipient, body, and attachment metadata.
Public Outlook S/MIME corpus The opt-in exact-commit corpus test verifies signed Outlook EML and binary MSG, decrypts encrypted EML/MSG with the supplied exportable test key, and decrypts then verifies signed-and-encrypted EML/MSG on net472, net8.0, and net10.0; an Outlook 11 mailing-list artifact also proves CRLF canonicalization against OpenSSL 3.0 without redistributing that external message
Local packed-package consumer A clean consumer restores the locally packed unified OfficeIMO.Email package and exercises individual artifacts, asynchronous store streaming, semantic fingerprints, Unicode PST creation/reopen, multi-store merge, and OAB discovery
Performance contracts Release tests cover 1 MiB MIME, 1 MiB MSG attachment, 500-message mbox, a file-backed 16 MiB attachment, a 2,000-message PST, and 100,000-entry disk-backed mapping/dedup indexes; see performance evidence
Large-store contracts A virtual 64 GiB PST contract covers selective reads, deferred attachment I/O, content search, and structural validation under fixed source-read ceilings; an aggregate-only 22.4 GB OST run exercises extraction, search, calendar items, Reader projection, and bounded structural checks
Unicode PST writer Synthetic round trips cover multi-block heaps and tables, typed MAPI properties, recipients, large attachments, embedded and associated items, named properties, application-bound checkpoint/resume, verified OST-to-new-PST conversion, and multi-format merge. The opt-in libpff gate independently opens and exports an OfficeIMO PST, then verifies subject, body, and attachment content; the classic Outlook gate mounts the generated Unicode store and semantically reads it; and the Windows ScanPST gate requires a clean no-repair scan with byte-identical input.
Existing Unicode PST mutation Synthetic transactions cover mixed folder/item create, copy, rename, move, replace, typed property and attachment patch, query-selected batch patch, associated-state change, recursive delete, sync and async-flush commit, optional byte-identical backup, exact folder-set and semantic reopen verification, ID mappings, no-op/disposal source preservation, ANSI rejection, and cycle/mandatory-folder guards
PST recovery, compaction, and split Real generated PST round trips cover per-item recovery manifests, no-write capacity/selection plans, distinct-destination verified compaction, stable query/size split planning, semantic verification of every part, and complete-set rollback protection
Associated Outlook data and reminders Real generated PST round trips cover FAI-only enumeration, roaming configuration dictionaries, category lossless edit/reopen, views, opaque rules, search-folder definitions/containers, folder fields, duplicate-effective selection, and reminder signal/exclusion states
Unified email-data facade Cross-target tests open EML, extension-free ICS/VCF, a generated Unicode PST, and a generated OAB v4 Full Details component through one owner-dispatch API
Outlook OAB cache Generated v4 fixtures cover every supported property encoding, corruption and limits; aggregate-only validation of 18 private cache components decoded and fully validated all 8,049 declared entries with no retained directory data

Explicit non-goals

  • SMTP, IMAP, POP3, Graph, authentication, and account synchronization
  • DKIM, ARC, OpenPGP, certificate/key discovery, and automatic recipient or trust-policy selection
  • In-place PST NDB mutation/append, ANSI PST mutation, OST mutation/output, in-place repair, or password/encryption authoring
  • OLM authoring, proprietary DBX mailboxes, Outlook/Mac profile databases, autocomplete caches, search indexes, synchronization state, and other profile/cache formats outside the dedicated OAB owner
  • xCal/xCard, jCal/jCard, JSCalendar, and JSContact public adapters. The shared content-line model remains the canonical ICS/VCF owner so XML/JSON adapters can reuse it without duplicating calendar/contact semantics; JSCalendar and JSContact require separate mapping contracts rather than syntax substitution
  • a public arbitrary-CFB editing or transaction package
  • Outlook UI automation or identical editors across platforms; Outlook for Mac uses its generic item viewer for non-mail MSG classes
  • pretending that every vendor-specific named property has a typed convenience field; retained MAPI values are the compatibility escape hatch

Mail transport remains outside this package. OfficeIMO.Email owns persisted EML/MIME, MSG/OFT, TNEF, mailbox-store, calendar/contact, and address-book artifacts; transport libraries consume those public models without introducing another persisted-file engine.