Deliverability is a process
Routing, Shaping, Suppression, Warm-up and Feedback have to be seen together.

MAIL PLATFORM / GATEWAY
An independent Mail Platform for teams that want to run Outbound Delivery, Inbound Protection, Domain Identity, Queue, Deliverability, lifecycle and Observability as one product.
4SO Mail Gateway components: the message path from ingress to delivery
Product problem
Delivery, Reputation, DKIM, Queue, Inbound Security, Quarantine, Feedback and recovery each have their own failure modes. Mail Gateway brings these components into one coherent operating model.
Routing, Shaping, Suppression, Warm-up and Feedback have to be seen together.
Authentication, Anti-spam, Anti-malware, Quarantine and Backend policy form a single chain.
Sender authorization, access and sensitive changes are executed within the correct domain.
Provisioning, Drain, Switchover, Upgrade, Backup and recovery are part of the product itself.
Capability snapshot
Mail Gateway runs the sending, receiving and operations paths with a shared access model and shared observability.
Authenticated submission, routing, queue and delivery from the Mail Data Plane.
Domain authorization and the lifecycle of the sending signature.
Bounce, Complaint, Suppression and Warm-up management to protect Deliverability.
Authentication and evaluation of inbound messages on the Receiver path.
A protection chain that runs before delivery to the Backend or Quarantine.
Hold, Release, Delete and Expiry with controlled access.
Health, Routing, TLS, Queue and Deliverability in a single operational view.
Control Plane and mail-node lifecycle with defined recovery paths.
The Mail Data Plane does not depend on an LLM to send or receive mail; the mail-serving path is deterministic.
Deployment model
The product starts from a simple Control Plane and can grow into an HA Control Plane with multiple Mail Nodes for Outbound and Inbound roles; the Manager never enters the Mail Data Plane.
| Profile | Control Plane | Mail Data Plane | Use case |
|---|---|---|---|
| Single Manager | One Manager | One or more Mail Nodes | Simple deployment and central management |
| Distributed Mail Nodes | Central Control Plane | Separate nodes for Outbound / Inbound | Separation of capacity and Data Plane roles |
| HA Control Plane | Multiple Managers | Independent Mail Node Pool | Management redundancy without the Manager entering the Mail Data Plane |
| Recovery-ready | Control Plane + Backup/PITR | Rebuildable node lifecycle | Controlled recovery after failure |
Architecture
Identity, Authorization, Tenant state and lifecycle live in the Control Plane; SMTP, Queue and Protection run on the mail nodes.
| Plane | Component | Responsibility | Operational boundary |
|---|---|---|---|
| Control | PostgreSQL + Product Authorization / Keycloak Identity | Tenant, Domain, policy, IAM, durable jobs and audit | Mail delivery does not depend on a live Control Plane for normal serving |
| Outbound | KumoMTA | SMTP submission, queue/spool, routing, shaping and Internet delivery | Node-local spool; there is no shared spool |
| Transport | HAProxy | Stable internal transport and selected HA endpoints | The proxy does not take over product ownership or queue semantics |
| Inbound Protection | Rspamd + ClamAV | Spam/policy evaluation and malware scanning | The protection chain runs before backend/quarantine |
| DNS / Runtime State | Unbound + Valkey | Product-controlled resolver path and shared runtime authority where needed | Resolver path and runtime state stay under product control |
| Runtime | Linux / VM Mail Nodes | KumoMTA, SMTP, sending IPs, DKIM and the queue data plane | Kubernetes is not a prerequisite for the Mail Data Plane |
Control-plane Security Contract. Mail Gateway keeps Identity, Authorization and the Secret lifecycle separate from the Mail Data Plane, and binds high-risk mutations to a durable job and human approval.
| Domain | Component / Authority | Technical contract |
|---|---|---|
| Control API | Rust Control API + PostgreSQL | Tenant/Domain/Policy/Job/Audit state persists in the Product database. |
| Identity | Keycloak | The OIDC subject carries the user identity; browser or MCP credentials never stand in for the user identity. |
| Authorization | OpenFGA + Product permission model | Unknown actions/routes fail closed, and permission is evaluated in resource scope. |
| Secrets | OpenBao | Secret material and the recovery workflow are kept separate from ordinary configuration and UI state. |
| High-risk IAM | Durable PostgreSQL Job | Request, human approval, execute-time reauthorization and authoritative post-check are separate steps. |
| MCP | Delegated OIDC + scoped product tools | MCP can pass requests/diagnostics through product authority; it has no self-approval or generic Admin API. |
| Observability | Prometheus + Grafana + product probes | Queue, TLS, routing and deliverability are shown from real telemetry; missing data is never presented as fabricated health. |
Lifecycle
Domain and node provisioning is only the start; Deliverability, Protection, Queue, Rotation and recovery are all core product operations.
Operational profile
Instead of a one-dimensional Mail Server, the product coordinates several specialized workflows under one Control Plane.
High-volume sending path with Queue and Routing.
Public receiving with Authentication and Protection.
Control over sending behavior and feedback.
Domains, access and domain-scoped operations.
Nodes are manageable resources too.
Service management has its own Backup and recovery path as well.
Typed Action flow
For administrative operations, the Plan and the impact of a change are visible before execution, and high-risk approval is kept separate from execution.
Delivery is not the final outcome; bounces and telemetry feed back into policy.
Inbound mail reaches an explicit outcome after auth and content gates.
Plan, Approval and execute-time reauthorization are kept separate.
A domain follows one workflow from ownership to delivery readiness.
Queue/spool is part of an independent Data Plane.
Inbound messages pass through several gates.
Rotation runs with a secret boundary and a post-check.
Approval is separate from execution.
Node mutation takes spool and service role into account.
Queue incidents and Routing/Shaping are independent, high-risk Day‑2 changes.
A backlog or delivery incident is investigated while preserving the truth of the node-local spool.
Delivery policy goes through Impact and Telemetry before and after it is applied.
| Action / Flow | Admission / Preconditions | Execution / Lock | Success Criterion | Failure / Recovery |
|---|---|---|---|---|
| Domain Onboarding | Valid Tenant/Domain ownership, authorization and policy input | Typed owner action; config/runtime mutation goes through the Control API | Domain/DKIM/routing readiness from Product state and runtime read-back | Validation failure before activation; partial state is tracked through workflow recovery |
| DKIM Rotation | Domain scope, signer identity and rotation preconditions | Durable mutation with audit and bounded secret handling | Active key/signing state and DNS-facing readiness are verified | Old/new key overlap and rollback are owner-specific; secret material is never shown in MCP/UI |
| Queue / Delivery Action | Exact tenant/queue/message scope and permission | Typed queue action; there is no shell/raw SQL/direct Kumo admin proxy | Queue/history post-check shows the result of that same action | An unknown outcome requires read-back; replay follows the owner’s idempotency semantics |
| Routing / Shaping / Suppression | Provider/domain/resource scope + risk/permission contract | Registry-backed action with Product policy authority | Effective route/pool/suppression state is read back after the mutation | Unknown action fails closed; historical risk downgrade is not allowed |
| IAM User Lifecycle | Delegated OIDC subject and Product authorization; high-risk impact preview | Request → independent human approval → execute-time reauthorization → Keycloak Writer | Authoritative Keycloak post-check confirms enabled/session/group state | MCP has no approve/execute bypass; stale/revoked authorization is rejected again at execute time |
| Mail Node Lifecycle | Pinned target/release identity, preflight and runtime readiness | Provision/Drain/Fence/Switchover tied to durable lifecycle/evidence | Node role, queue/spool and service health are verified from runtime | Node-local spool is assumed; a switchover failure is never hidden behind an assumed shared spool or fabricated success |
The Management MCP lifecycle is explicitly list actions → create plan → inspect impact/preconditions → human approval → execute → post-check. An agent cannot approve its own proposal and has no general-purpose shell, raw SQL, filesystem or secret-export tool.
Operations catalog
Operators should be able to see sending and receiving status and take the necessary action without switching between separate tools.
4SO Mail Gateway brings sending, receiving and operations together in one self-hosted, traceable product.