Technical whitepaper — PodHeitor Notes / Domino for Bacula

Online application-consistent backup and granular restore for HCL Domino / IBM Lotus Notes via the Domino C API (NSFBackupStart / NSFBackupStop), with transaction-log incrementals, PITR via NSFRecoverDatabases, granular restore by mailbox/UNID/NoteID, and NSF → EML/MBOX export. Status: Phase 0 (bootstrap) — pre-alpha.

Companion document to the PodHeitor Notes plugin page.

1. The problem: Bacula Enterprise has no Notes/Domino plugin

Verified in the field across Bacula Enterprise 6.2.x → 18.2.x manuals: no Notes/Domino plugin. Domino operators who need to integrate with Bacula fall back to:

  • Raw filesystem backup of .nsf files in /local/notesdata/. Doesn’t work — NSF databases are open by the Domino server and in-flight changes produce inconsistent copies.
  • Server quiesce (stop Domino, back up, restart). A real maintenance window, email/collaboration unavailable.
  • Proprietary solutions (NetBackup, Commvault, Spectrum Protect) with Domino agents — expensive, outside the Bacula world.

PodHeitor Notes addresses this via the Domino C API — online application-consistent, no quiesce, no downtime. This is the first such capability in the Bacula world.

2. Architectural model

┌──────────────────┐  load   ┌─────────────────────┐  spawn  ┌────────────────────────────┐
│   bacula-fd      │ ──────> │  podheitor_notes_fd │ ──────> │  podheitor-notes-backend   │
│ (Bacula AGPLv3)  │ dlopen  │   (Rust cdylib,     │  PTCOMM │  (Rust sidecar)            │
│                  │         │    proprietary)     │         │                            │
└──────────────────┘         └─────────────────────┘         └────────────┬───────────────┘
                                                                          │ dlopen
                                                                          ▼
                                                           ┌──────────────────────────────┐
                                                           │  libnotes (HCL/IBM C API)    │
                                                           │  operator-installed,         │
                                                           │  NEVER vendored or shipped   │
                                                           └──────────────────────────────┘

Pure-Rust cdylib + sidecar — no C/C++ shim, no statically-linked Bacula sources. AGPL-clean per ADR-001. libnotes is supplied by HCL/IBM and is never vendored or redistributed by the plugin — the operator installs the Notes SDK locally.

3. Planned capabilities (12-phase roadmap)

Capability Mechanism
Online Full backup of NSF databases Domino C API NSFBackupStart / NSFBackupStop — no downtime, no quiesce
Transaction-log incrementals True PITR — requires Domino archive transaction logging enabled
Differential backups Delta from last Full
PITR restore Log replay via NSFRecoverDatabases to arbitrary timestamp
Granular restore Single mailbox, single document by UNID/NoteID/subject regex, single design element. ACLs preserved
NSF → EML/MBOX export For ediscovery, legal hold, IMAP migration. (PST deferred to v1.1)
Verify / fixup / compact Integrity gates
High parallelism tokio + rayon hybrid; on-the-fly zstd compression

4. Repository layout

Component Location Role
cdylib ../PodHeitor Rust cdylib/crates/plugin-notes/ Bacula plugin entry point, registers via metaplugin-rs
sidecar ./backend-rs/ Drives libnotes, streams NSF + .txn over PTCOMM
docs ./docs/ Operator guide, parameters, troubleshooting (Phase 11)
packaging ./packaging/ rpm / deb / msi builds (Phase 11)

5. License posture

Proprietary. The HCL/IBM Notes C API SDK is operator-installed; this project neither vendors nor redistributes any HCL/IBM bits.

Want to track development?

Free 30-day trial planned for the first alpha release (qualified Domino workloads). We guarantee at least 50% off vs Bacula Enterprise (which has no Notes plugin), Veeam, or Commvault, with more features — including granular per-document restore and EML/MBOX export.

Heitor Faria — Founder, PodHeitor International
[email protected]
☎ +1 (789) 726-1749 · +55 (61) 98268-4220 (WhatsApp)
🔗 PodHeitor Notes plugin page

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

Leave a Reply