Migrate from Legacy to Docker: Hermes SEG v260722

The legacy bare-metal to Docker migration path is now hardened and tested end to end, plus a new Pause/Resume control for outbound mail.

Following v260628, Hermes Secure Email Gateway v260722 is here, and the headline is one a lot of you have been waiting for: migrating a legacy bare-metal install to the Docker edition now works end to end. This release also adds a Pause / Resume control for outbound mail and fixes a handful of fresh-install issues.

Migrate your legacy install to Docker

If you have been running the legacy bare-metal Ubuntu build of Hermes, the path onto the Docker edition is now hardened and tested against real backups. The migration script, scripts/migrate_legacy_to_docker.sh, was run end to end against actual build-240815 backups, and every failure it surfaced along the way has been fixed:

  • Safe cutover by default. A freshly migrated box comes up with outbound delivery held, so it cannot blast stale notifications from the restored quarantine to real recipients. A completion banner and a Release Outbound Delivery checklist step make the hold explicit, so you verify the box first, then release mail on your own schedule.
  • Your Postfix config survives the restore. The migration backfills the configuration rows a legacy database predates, so SPF, DKIM, and DMARC Save & Apply works instead of failing with a numerical-configuration error.
  • Mail actually flows afterward. The restore now compiles the Postfix maps the live config references and fixes quarantine ownership, so messages are delivered instead of being rejected or deferred on a permission error.
  • Fail loud, not silent. The schema-forward step runs cleanly under MariaDB 11.4 strict mode and reports a clear error on failure rather than aborting quietly.

The short version: you can move an existing Hermes deployment onto the modern, reproducible Docker stack and keep your domains, mailboxes, and quarantine, with a built-in safety hold so nothing embarrassing goes out during the switch.

One prerequisite worth stating plainly: you need a fresh Hermes SEG Docker install in place first. The migration restores your legacy backup into a new deployment, so the order is: stand up a new Hermes SEG Docker instance, then run scripts/migrate_legacy_to_docker.sh against it to bring your data across. When it finishes, follow the step-by-step Post-Migration Checklist: Legacy to Docker to release outbound delivery and confirm the box is healthy. Full details are in the release notes linked below.

Pause and resume outbound delivery

The Mail Queue page gains an Outbound Delivery card showing ACTIVE or PAUSED, with Pause and Resume buttons. Pausing holds all outbound mail in the queue; resuming releases the hold and flushes it. It is handy for maintenance windows, upstream outages, or investigating a suspected compromise. The hold is a first-class configuration directive, so it survives every later Save & Apply instead of being quietly undone by the next config render. Default behavior is unchanged: delivery stays normal until an administrator explicitly pauses it.

Fixes

  • DKIM key generation on fresh installs now works. Fresh clones of v260612 / v260628 / v260630 could fail to generate DKIM keys because a key directory was absent; this is fixed for fresh clones, fresh installs, and already-deployed hosts.
  • Postfix master.cf restored to the production design, fixing CipherMail cross-container re-injection and post-rebuild DKIM re-signing on fresh installs and migrations.
  • Path-independent tooling. Hardcoded install-root paths were removed repo-wide, so installs rooted at any path work correctly.

Upgrading

For existing Docker installs this is a low-impact update with no manual step. Run the standard update orchestrator (scripts/system_update_docker.sh v260722), or git-based git fetch && git reset --hard v260722 and redeploy. A small, idempotent schema change applies automatically; there is no new container and no Console Settings regeneration. Verify under Mail Queue that the Outbound Delivery card shows ACTIVE.

An honest note for production users

The Docker line is still an early-adopter track. The migration path is now tested against real backups, but every legacy install is a little different, so migrate a copy of your environment first and confirm mail flow before you cut over production. Your feedback continues to shape each release.

Read the full release notes Download & docs