EvolveMail · enterprise mail platform

Enterprisemailthatstayson your turf.

Send API, full mailbox server, calendar, contacts, files and a built-in WebRTC meeting SFU — running entirely inside your infrastructure. No SaaS, no telemetry, no third party in the data path. Licensed, source-available under NDA.

Self-hosted, single-tenant
Kubernetes or single host
Compliance pre-mapped
SOC 2 · ISO 27001 · GDPR
Send API at scale
DKIM · SPF · DMARC · ARC
POST · api.mail.example.com / v1 / emails
$ curl -X POST \
https://api.mail.example.com/v1/emails \
-H "Authorization: Bearer mxk_..." \
-d '{
"from": "alerts@example.com",
"to": ["customer@example.org"],
"subject": "Welcome",
"text": "Hello."
}'
HTTP/2 202 Accepted
{ "message_id": "<...>", "status": "queued" }
DKIM signed · SPF aligned● live
By the numbers
45+
Go packages — every layer covered by tests on every commit
9 months
From single-host install to full SOC 2 + ISO 27001 control maps
5 SDKs
Node · Python · Go · Java · .NET — stdlib only, no transitive deps
0 third parties
Customer mail never leaves the operator's infrastructure
What ships out of the box

Twelve product surfaces. One install. One upgrade path.

Every line below is on main today — the commit SHA on each card is the auditor-grade proof point. No demos of unshipped UI.

Sprint 42 · ed01b19

Send API at scale

POST /v1/emails accepts structured JSON or raw RFC 5322. Per-key access controls — source-CIDR allow-list, from-address regex, max body size, mTLS subjects. Three priority lanes plus scheduled sends.

mta-* Rust crates

Full mailbox server

SMTP, IMAP, POP3, JMAP, WebDAV, CalDAV, CardDAV in one Rust workspace. DKIM signing at the gateway, SPF + DMARC alignment, ARC for forwarders.

Sprint 43 · e02b0c8

Marketing-class rewriter

RFC 8058 one-click unsubscribe with a self-contained HMAC token — no server lookup at unsubscribe time. Per-org HTML/plain footer auto-injected, sanitised at write time.

Sprint 44 · 650dfc3

Feedback Loops + RBL probe

Public POST /fbl/{gmail,yahoo,aol,microsoft} ingest with per-ISP source-CIDR allow-lists. RBL probe every 30 minutes against Spamhaus ZEN, Barracuda, SpamCop, SORBS.

Sprint 45 · 1a74013

Inbox Placement Rate

Hourly synthetic seed-to-ISP probes, stdlib IMAP poll for inbox / spam / not-received, daily aggregator into ipr_daily_rate. See exactly where your mail lands at each major provider.

Sprint 46 · e2afc8b

Engagement + p99 latency

Bucketed delivered / bounced / complained / opened / clicked counts with cohort filters. p50/p95/p99 enqueue-to-delivered latency over delivery_latency_events.

Sprint 47 · 0710373

Real-time alerts

Dashboard alert the moment an outbound IP is blocklisted or an org's IPR spam-rate crosses threshold. Per-org thresholds + webhook fan-out into your SIEM.

Sprints 35.5–41

Built-in WebRTC SFU

Custom pion/webrtc SFU with simulcast layer selection, dominant-speaker detection, real recording (Opus/VP8/H264 → tar.gz), in-house TURN, clustered across replicas via Redis room registry.

Sprint 42 · ed01b19

Per-key access controls

Each API key has a scope set plus an enforceable CIDR allow-list, from-address regex, max body cap, and mTLS subject pinning. Lost a laptop? Revoke one key, not the world.

Sprints 33 + 46

Signed webhooks + SSE

HMAC-SHA256 webhook fan-out for delivery / bounce / complaint / open / click. Server-Sent Events stream for behind-firewall receivers with 60-second replay window and Last-Event-ID.

Sprint 46 · e2afc8b

Streaming exports

GET /v1/exports/messages with csv / json / ndjson. Per-row flush, per-org rate-limit via Redis SetNX, so multi-million-row windows stream without buffering in memory.

Sprint 32 · bfadfd4

GDPR + DPDP at the API level

Per-user Export bundle, Suspend, Resume, and right-to-erasure with a backup-aware ErasureLog so a backup restore can't silently un-delete a forgotten record.

Mail · Inbox

The mailbox your team actually reads in.

Three-pane keyboard-first layout. No ads. No promotions tab. No telemetry. Server-side full-text search across years of mail — sub-second on the cluster you own.

from:priya has:attachment after:2026-05-01
YS
Inbox · 12 unread
PR
Priya Raghavan09:42
Re: Production cutover — DKIM TXT propagated
Confirmed end-to-end: SPF aligned, DMARC pass, p99 latency at 1.4s on the cutover window…
Customers
MB
Marcus Bell08:17
Quarterly compliance review — SOC 2 evidence
Pulled the audit log slice for Jan–Mar. Three control rows still need operator-side evidence…
Customers
AE
Alerts · EvolveMail07:55
RBL listing cleared — 203.0.113.14 / Spamhaus ZEN
Delisting confirmed at 07:52 UTC. The 6-hour window opened at 01:48 after a single-flag listing…
Engineering
FT
Finance teamYesterday
Invoice #INV-2026-0114 — review before send
Draft attached. Net-30 terms, PO reference matches their procurement record. Please sign…
Finance
CL
CalendarYesterday
Tomorrow 10:00 — Pilot kickoff with Acme
Meet link auto-attached. 5 attendees confirmed. Agenda: domain takeover, DNS prep, dry-run send…
Customers
AS
Aditi SharmaMon
Onboarding feedback — first 30 days
We've sent 18M messages through EvolveMail since the cutover. Sender Score went from 71 to…
Customers
TD
Travel deskMon
Itinerary — BLR → LHR — 24 May
Booking reference 7QH9R2. Hotel confirmed at the same property as last quarter. Cab arranged…
Travel
Conversation 1 of 247 · keyboard: j / k · ? for help● synced
Keyboard-first

Every action — compose, archive, label, send — has a shortcut. Gmail-style j/k, vim-style g+i. No mouse round-trips.

Server-side full-text

Search runs against the Scylla index — years of mail, sub-second. Filters compose (from:, has:, label:, before:).

Zero trackers

No pixels, no behavioural beacons, no third-party fonts. The mail you open doesn't tell the sender's vendor that you opened it.

Meet · video conferencing

Built-in meetings. Not a Zoom tab in the sidebar.

Custom WebRTC SFU running inside your cluster. Simulcast, dominant-speaker pinning, real recording, in-house TURN, clustered across N replicas via Redis. The Zoom / Teams line item goes away — and so does its data-residency footnote.

Pilot kickoff · Acme × EvolveMail
Recording32:14
PR
Speaker
Priya Raghavan
MB
Marcus Bell
AS
Aditi Sharma
DK
Camera off
Daniel Kim(You)
LC
Lina Costa
RN
Rohan Nair
Your SFU. Your bandwidth.

Custom pion/webrtc selective forwarder runs in your cluster. No third-party media server. Recording writes to the object store you already pay for.

End-to-end on your install

Signal channel JWT-signed with the install's session HMAC. TURN credentials minted per-room. Guest links carry an HMAC magic-token that expires.

Simulcast + speaker detection

Three-layer simulcast (q/h/f) with bandwidth-aware auto-select. RFC 6464 audio-level extension parser drives the dominant-speaker pin in real time.

Send API · Mailbox · DKIM · IPR · FBL · Meet · Webhooks · GDPR · SOC 2 · ISO 27001Send API · Mailbox · DKIM · IPR · FBL · Meet · Webhooks · GDPR · SOC 2 · ISO 27001Send API · Mailbox · DKIM · IPR · FBL · Meet · Webhooks · GDPR · SOC 2 · ISO 27001Send API · Mailbox · DKIM · IPR · FBL · Meet · Webhooks · GDPR · SOC 2 · ISO 27001
Architecture

One stack. Five named services, all auditable.

Go 1.25 + an in-house Rust mail engine + Scylla + Redis + Next.js 16. No proprietary cloud APIs, no transitive SaaS dependencies in the data path.

In-process services
mail-control
Go control plane — auth, wizard, audit, RBAC, workers
mail-send
Go Send API gateway — POST /v1/emails, rate-limits, throttle
mta-* (Rust)
SMTP, IMAP, POP3, JMAP, DKIM/SPF/DMARC, anti-spam
meet-sfu
pion/webrtc SFU — signal, RTP forwarding, recording, TURN
mail-admin
Next.js super-admin + org-admin web UI
External dependencies
Scylla
Control-plane database — orgs, users, audit, events
Redis
Sessions, rate limits, room registry (Sentinel-aware)
Object store
S3-compatible — backups, recordings, attachments
Public traffic flows
HTTPSadmin.mail.example.com → mail-control
HTTPSapi.mail.example.com → mail-send
SMTP / IMAP / POP3mail.example.com → mta-*
WSS + RTPmeet.mail.example.com → meet-sfu
Everything above runs inside your VPC, your Kubernetes, or your single-host. We don't see your customers' mail. Ever.
Developer experience

Five SDKs. All stdlib only. All test-verified.

Each SDK ships a unit-tested verifyWebhook helper that cross-checks the HMAC-SHA256 signature against the server's SignWebhook routine. Zero third-party dependencies in the runtime path — no Jackson, no requests, no Newtonsoft.Json.

  • POST /v1/emails — structured JSON or raw RFC 5322
  • GET /v1/emails/{id}, GET /v1/emails, GET /v1/account
  • verifyWebhook with built-in maxAge + constant-time compare
  • Same wire format across every language — drop-in swap any time
import { Client } from "@evolvemail/sdk";

const client = new Client({
  baseURL: "https://api.mail.example.com",
  apiKey:  process.env.EVOLVEMAIL_API_KEY!,
});

const { messageId } = await client.sendEmail({
  from: "alerts@example.com",
  to: ["customer@example.org"],
  subject: "Welcome",
  text: "Hello.",
});
Node · TypeScript● drop-in
Why EvolveMail vs the alternatives

Honest comparison. Marked partial where it is — not where it stings.

Each row is a capability an enterprise procurement team typically asks about. Yes means the feature is shipped and auditable. Partial means the capability exists but with caveats (e.g. vendor-owned audit log). No means a customer would need a separate tool or vendor.

CapabilityEvolveMailSendGrid · Mailgun · SESM365 · Google WorkspacePostfix · Dovecot · DIY stack
Customer mail stays on your infrastructure
Flat-rate licence, no per-message billingn/a
No per-seat pricingn/a
Single integrated audit log
Source code access (NDA-gated)
Multi-language SDKs (5 langs, stdlib only)
Built-in WebRTC meeting SFU
Inbox Placement Rate monitoring
Feedback Loop ingest (Gmail / Yahoo / AOL / Microsoft)
Real-time RBL listing alerts
Built-in GDPR / DPDP export + erasure
Pre-mapped SOC 2 + ISO 27001 control evidencevendor'svendor's
Postfix migration runbook + verification commandsn/an/an/a
Helm chart + Terraform module shippedn/an/a
Security & compliance

Procurement-ready the day you install.

Because EvolveMail runs inside your own infrastructure, you are the data controller — not us. The product's job is to make the evidence trail trivially auditable. Every control below is shipped, not aspirational.

Sprint 50 · 4ee9391

SOC 2 + ISO 27001 ready

Every Trust Services Criterion (CC1–CC9 + A1 + C1 + PI1 + P1–P8) and all 93 ISO/IEC 27001:2022 Annex A controls are pre-mapped to concrete features, commits, runbooks, or operator-responsibility markers. Your auditor walks the matrix without spelunking source.

Sprint 32 · bfadfd4

GDPR + DPDP at the API level

Per-user Export bundle (Article 20), Suspend / Resume, and right-to-erasure (Article 17) with a backup-aware ErasureLog so a restore can't silently un-delete a forgotten record. DPA + sub-processor templates ship under docs/legal/.

internal/crypto · webauthn · auth

Encryption that auditors recognise

AES-256-GCM at rest, sealed with a per-install Data-KEK. TLS 1.2+ on every public surface. mTLS submission with an operator-managed CA. WebAuthn / FIDO2 second factor. Argon2id (memory-hard) password hashing.

Sprint 49 · f09a084

Centralised log export

Every privileged action lands in the audit log; the full event stream fans out to JSON-Lines, RFC 5424 Syslog, and CEF endpoints in parallel — no proprietary forwarder, no vendor lock-in on observability.

Regulatory frameworks we map against
GDPR · EU 2016/679DPDP · India 2023CCPA · CaliforniaPIPL · ChinaHIPAA · US healthcare (BAA path)PCI-DSS · payment data flows

HIPAA + PCI-DSS + FedRAMP + NIST 800-53 maps are case-by-case engagements — the underlying primitives (encryption, audit, RBAC, tenant isolation) are already in place.

Deployment & ops

Install in an afternoon. Operate it for years.

Three supported deployment topologies. One Helm chart. One mail-update CLI for upgrades and rollback. A five-phase Postfix migration runbook for replacing what you have today.

Evaluation

Single-host Docker

One docker compose up brings the whole stack online on a fresh Linux host. Wizard at https://your-install/ on first boot. Best for proof-of-concept and air-gapped trials.

Production

Helm on managed Kubernetes

Single chart installs mail-control, mail-send, and meet-sfu. Scylla + Redis are operator-provided (external) — point at your managed service or in-cluster StatefulSet via values.yaml.

Regulated enterprise

Helm + Terraform on-prem

Provider-agnostic Terraform module wraps the Helm release. AWS reference example bundled (VPC + EKS + S3 for backups); the module itself runs on any Kubernetes you administer.

90-minute production playbook

From empty cluster to first DKIM-signed send.

The full playbook lives under docs-site/content/getting-started/production-deploy. Every step lists the exact command + the verification check. Aimed at an SRE who has run a mail platform but not necessarily ours.

mail-update status · apply --dry-run · apply --yes · rollback
01Step
Pre-flight
DNS access, outbound port 25 unblocked, ReadWriteMany PVC for the outbound queue.
02Step
Generate secrets
openssl rand -base64 32 for Data-KEK + session HMAC. Store in your secret manager.
03Step
helm install
One command installs every service. Wizard awaits at admin.mail.example.com.
04Step
Wizard walkthrough
Set super-admin password + MFA, configure hostnames, mint your first DKIM selector.
05Step
DNS publish
Publish A, MX, SPF, DKIM, DMARC. The wizard verifies each before continuing.
06Step
Verify
Three commands: /healthz, send a test message, list it back via /v1/emails.
Roadmap

Shipped this cycle. Operator-requested next.

Sprints 32 + 35.5 through 50 closed the 41-criterion enterprise transactional-mail RFP block. Upcoming work is gated on real customer demand, not vendor ambition.

Shipped on main
  1. Sprint 32 · GDPR / DPDP compliance
    bfadfd4
    Per-user Export · Suspend · Resume · backup-aware erasure (migration 0028).
  2. Sprint 35.5–41 · Meet SFU stack
    1b9ad3b · 47a48b8
    Real WebRTC media path · simulcast · dominant-speaker · recording · TURN · clustered.
  3. Sprint 42 · Send-API hardening
    ed01b19
    Per-key access controls · send_at · priority lanes · CA-mTLS · per-org throttle.
  4. Sprint 43 · Outbound rewriter
    e02b0c8
    Self-contained unsubscribe token · List-Unsubscribe · per-org footer · open/click tracking.
  5. Sprint 44 · Feedback Loops + RBL probe
    650dfc3
    RFC 5965 ARF · Gmail/Yahoo/AOL/Microsoft FBL · Spamhaus/Barracuda/SpamCop/SORBS.
  6. Sprint 45 · Inbox Placement Rate
    1a74013
    Hourly seed-to-ISP probe · stdlib IMAP poll · 03:00-UTC daily aggregator.
  7. Sprint 46 · Analytics + exports + SSE + latency
    e2afc8b
    Engagement counts · streaming exports · SSE events · p50/p95/p99 latency dashboard.
  8. Sprint 47 · Dashboard alerts + queue inspector
    0710373
    RBL-listed + IPR spam-rate alerts · queue browser · analytics saved-views.
  9. Sprint 48 · Language SDKs
    b791fd4
    Node · Python · Go · Java · .NET. Stdlib-only across the board.
  10. Sprint 49 · Operator tooling
    f09a084
    mail-update CLI · Helm chart · Terraform module · log export · Postfix migration runbook.
  11. Sprint 50 · SOC 2 + ISO 27001 control maps
    4ee9391
    Every CC + Annex A control pre-mapped to a shipped feature, commit, or runbook.
On the runway
t-digest pre-aggregates
Sprint 46.5
Latency dashboard at hyper-scale; Rust runner writes delivery_latency_events directly.
Native email + SMS alert channels
Sprint 47.5
Today fans alerts via webhooks only; native channels join the alert store.
Next.js alerts / queue / saved-views UI
Sprint 47.6
First-class admin UI on top of the Sprint 47 backend.
Per-SDK admin CRUD + SSE + streaming exports
Sprint 48.5
Expands the five SDKs from MVP to full surface coverage on customer demand.
mail-update runtime hooks
Sprint 49.5
helm upgrade + rollback wired through the CLI · GCP + Azure Terraform examples.
HIPAA · PCI-DSS · FedRAMP · NIST 800-53 maps
Sprint 50.5
Case-by-case engagements — the primitives (encryption, audit, RBAC) are already in place.
Start a project

Ready toevolve your brand?

We take on six engagements a year. Tell us about your project, goals and timeline — we'll come back within 24 hours with a clear proposal.

Evolve Pro