PodHeitor Microsoft 365 Backup — v1.0 GA: native Rust backup for Exchange, OneDrive, SharePoint and Teams

PodHeitor Microsoft 365 Backup — v1.0 GA: native Rust backup for Exchange, OneDrive, SharePoint and Teams

Launch announcement — Version 1.0.0 GA — May 20, 2026

Author: Heitor Faria · Website: https://podheitor.com · Email: heitor@opentechs.lat · Phone / WhatsApp: +1 786 726-1749 | +55 61 98268-4220

Summary

The PodHeitor Microsoft 365 Backup Plugin reaches general availability at version 1.0.0. It is a 100% native Rust component of the PodHeitor Backup Server stack, performing full backup of Microsoft 365 tenants — Exchange Online, OneDrive for Business, SharePoint, and Teams — with an optional continuous data capture (CDC) window down to 60-second RPO.

The focus of v1.0 is capture: consistent, efficient, auditable extraction of M365 data. The current restore interface covers extraction to local filesystem (PST/EML/JSON/raw payload). Direct write-back restore to the Microsoft 365 tenant via the Graph API is documented on the v1.1 roadmap — it is not delivered yet.

Positioning

PodHeitor is an independent backup system written in Rust. The M365 Backup Plugin is a component of the PodHeitor Backup Server and can also be consumed as a plugin for Bacula Community 15.0.3 via the same native plugin API — but the product sold, supported, and roadmapped is the PodHeitor stack.

v1.0.0 GA scope

Workload Mechanism Mode
Exchange Online mailboxes Delta API + $batch mode=mailbox
OneDrive for Business Drive walk + 302 redirects mode=onedrive
SharePoint sites & lists /sites/root + REST mode=sharepoint
Teams channels App-only Graph mode=teams
Teams chat per user /users/{id}/chats mode=chat
Near-real-time CDC Graph Change Notifications + webhook receiver mode=cdc

Headline numbers

Indicator v1.0.0 measured value
Backend binary (stripped) 2.2 MB
Installed package (RPM/DEB) ~1.2 MB
RAM per job < 150 MB target
Configurable CDC RPO 60 s minimum
Automated tests 220 passing, 0 failing, 1 ignored
Operating systems covered Oracle Linux 9, RHEL 9, AlmaLinux, Rocky, Debian 12, Ubuntu 22.04
Runtime stack ureq + rustls + ring + crossbeam — no tokio, no JVM, no .NET

Relevant architectural decisions

  • Memory-safe without GC. Backend is Rust 1.x with unsafe_op_in_unsafe_fn = warn and clippy pedantic + restriction enforced as CI gates. No JVM or managed runtime consuming RAM in parallel with the backup job.
  • Simple HTTP client. Synchronous ureq with rustls + ring. No tokio. Throughput against the Graph API is limited by tenant throttling, not the client.
  • No duplicated responsibility. Deduplication is handled by the PodHeitor Storage Daemon (or by the storage backend — S3 dedup, dedup appliance). Ransomware detection is covered by storage immutability (S3 Object Lock, immutable vault) or external IDS/EDR. The M365 Plugin does not try to re-implement those functions.
  • GDPR audit. Every right-to-be-forgotten operation is HMAC-SHA256 signed and written to an append-only log, so removal can be proven to an auditor independently of the catalog’s later state.
  • Observability. Prometheus /metrics endpoint embedded in the binary. No sidecar required.

v1.0.0 GA quality gates

  • cargo fmt --check clean
  • cargo clippy --all-targets -- -D warnings (pedantic + restriction) clean
  • cargo test --release — 220 passed, 0 failed, 1 ignored
  • Lab E2E against a real Microsoft 365 tenant via cloudflared tunnel
  • Chaos suite covering torn writes, corrupt cursor, malformed JSON, recovery
  • Operational RUNBOOK and GATE_REPORT shipped with the package

What is not in v1.0.0 — v1.1 roadmap

To avoid misreading the purchase decision, v1.0 GA does not include the items below. They are on the v1.1 roadmap with confirmed priority:

  • Restore-to-M365 (write-back to the tenant via Graph PUT/POST) — F-7.1
  • Embedded PST restore — F-8
  • Cross-tenant migration (mode=migrate) — F-24
  • Source GDPR purge (real DELETE on Graph) — currently only local marker
  • Standalone tool mode=gdpr_audit_verify

The supported flow today to restore an item to a user’s mailbox is: extract from the PodHeitor backup to local PST/EML, import via Outlook or Microsoft tooling. Anyone who needs direct write-back today should wait for v1.1 before planning adoption.

Compatibility

The plugin ships as RPM and DEB packages for the Linux distributions listed above. It runs as a PodHeitor Backup Server component. For Bacula Community 15.0.3 environments, an adapter layer exposes the same backend via Bacula’s native plugin API — useful in gradual migrations.

Contact

Heitor Faria · podheitor.com · heitor@opentechs.lat · +1 786 726-1749 · +55 61 98268-4220 (WhatsApp)

Copyright © 2026 Heitor Faria. All rights reserved.

Disponível em: pt-brPortuguês (Portuguese (Brazil))enEnglishesEspañol (Spanish)

Leave a Reply