OpenBSD 7.9 is the current release, released 2026-05-19:
- OpenBSD 7.9 release
- OpenBSD 7.9 errata
- OpenBSD 7.8 to 7.9 upgrade guide
- syspatch(8)
- pkg_add(1)
- pkg_check(8)
- rcctl(8)
- sysupgrade(8)
syspatch maintains base-system errata. pkg_add -u updates packages. pkg_check -n -I validates installed package consistency without repair. They are separate operations.
- Confirm console or alternate root access.
- Confirm a recent verified backup and rollback artifacts.
- Confirm
/usrand/varfree space. - Review the 7.9 errata and package change notices.
- Rehearse in the 7.9 QEMU path when service or package changes are material.
- Record the repo commit, host snapshot, config checksums, package list, and installed patches.
Do not alter /etc/installurl as a fallback during a maintenance run. Diagnose mirror or network failure and retry only after the cause is understood.
From a clean host checkout:
cd /path/to/openbsd-mailstack
doas ksh scripts/ops/maintenance-run.ksh --reportThis runs preflight checks, records a timestamped snapshot and checksums, previews syspatch and package updates, runs pkg_check -n -I, validates services and configs, and performs read-only OSMAP checks.
Individual checks are:
doas ksh maint/openbsd-syspatch.ksh --check
doas ksh maint/openbsd-pkg-upgrade.ksh --check
doas ksh maint/production-regression.ksh --hostUse a defined change window:
cd /path/to/openbsd-mailstack
doas ksh scripts/ops/maintenance-run.ksh --applyThe apply path runs, in order:
syspatch
pkg_add -u -I
pkg_check -n -I
ksh maint/production-regression.ksh --hostReview package readmes and logs before restarting a service. Use rcctl configtest service where the rc script supports it. The explicit syntax checks used here are:
postfix check
doveconf -n >/dev/null
rspamadm configtest
nginx -t
pfctl -nf /etc/pf.conf
unbound-checkconf /var/unbound/etc/unbound.conf
acme-client -n mail.blackbagsecurity.comThese choices follow the OpenBSD manuals and the upstream Postfix, Dovecot, Rspamd, and nginx documentation.
The default regression run never queues mail. Queue a controlled probe only with explicit authorization:
doas ksh maint/production-regression.ksh \
--host --apply --probe-to operator@example.netVerify Postfix acceptance, Rspamd processing, Dovecot LMTP delivery, and mailbox visibility from logs and the recipient mailbox. Do not put a real address in tracked config.
sysupgrade is not part of routine 7.9 errata maintenance. For a future release:
- wait for the official next-release guide;
- upgrade only from one release to the immediately following release;
- test an equivalent local system first;
- review configuration and package changes;
- run
sysupgrade, completesysmerge, remove obsolete files as directed, runpkg_add -u, update firmware, reboot, and run the regression suite.
Never infer a future command sequence from this 7.9 runbook alone.
- Stop on the first failed patch, package, consistency, syntax, service, TLS, or OSMAP check.
- Preserve
/var/syspatchrollback data.syspatch -rreverts the most recent installed patch;-Rreverts all patches. - Do not claim general package rollback. Restore the verified package and configuration state or recover from backup.
- Restore OSMAP binary and environment files as one reviewed unit.
- Re-run syntax checks before service restart, then run the full regression suite.
- Keep failed and successful evidence directories. Do not edit evidence after checksums are written.