Features
Everything the console does, scriptable
The console is one client of the control plane. Anything you can do there you can do from a script, which is what makes provisioning a customer a job rather than an afternoon.


The API
REST, documented by an OpenAPI schema generated from the same definitions the server validates with — so the documentation cannot describe a shape the API does not accept. Swagger UI ships with it. Tokens are scoped and revocable.
- OpenAPI derived from the server’s own schemas
- Swagger UI included
- Scoped, revocable tokens
- Owner, admin and domain-admin roles
The CLI
mailctl installs the stack, diagnoses it, backs it up, restores it and upgrades it — with a rollback that is conditional on whether the database has migrated, because an upgrade that has already changed the schema cannot be undone by swapping images back.
- install · doctor · backup · restore · upgrade
- Licence status, activate and transfer
- Conditional rollback on a failed upgrade
- Exit codes that mean something
Headless from the start
The installer takes an answers file, so a server can be provisioned without anybody opening a browser. From 0.3.0, the release it installs is verified against a signed manifest before anything is pulled or written.
- Answers file for unattended install
- Signed release manifest, checked before the pull (from 0.3.0)
More
Where these claims come from
Each line on this page is backed by a document in the product’s own repository. They are private, so the paths are given rather than linked; ask us if you want to see one.
- mailserver · docs/feature-docs/rest-api.md
- mailserver · docs/feature-docs/headless-install.md
- mailserver · docs/adrs/0005-install-operate-configure-separation.md
- mailserver · docs/adrs/0020-upgrade-rollback-is-conditional-on-the-schema.md
- mailserver · docs/adrs/0026-a-release-is-signed-and-an-unverified-one-is-refused.md