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.
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.
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.
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.
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.
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.
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.
Engagement + p99 latency
Bucketed delivered / bounced / complained / opened / clicked counts with cohort filters. p50/p95/p99 enqueue-to-delivered latency over delivery_latency_events.
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.
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.
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.
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.
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.
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.
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.
Quick confirmation on the cutover window:
- DKIM TXT for
mail._domainkey.acme.exampleis fully propagated. - p99 enqueue-to-delivered latency held at 1.4 s.
- Sender Score went from 71 → 88 over the dual-delivery window.
Attaching the full engagement report from /v1/analytics/engagement. Happy to schedule the post-mortem this Friday.
Every action — compose, archive, label, send — has a shortcut. Gmail-style j/k, vim-style g+i. No mouse round-trips.
Search runs against the Scylla index — years of mail, sub-second. Filters compose (from:, has:, label:, before:).
No pixels, no behavioural beacons, no third-party fonts. The mail you open doesn't tell the sender's vendor that you opened it.
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.
Custom pion/webrtc selective forwarder runs in your cluster. No third-party media server. Recording writes to the object store you already pay for.
Signal channel JWT-signed with the install's session HMAC. TURN credentials minted per-room. Guest links carry an HMAC magic-token that expires.
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.
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.
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.",
});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.
| Capability | EvolveMail | SendGrid · Mailgun · SES | M365 · Google Workspace | Postfix · Dovecot · DIY stack |
|---|---|---|---|---|
| Customer mail stays on your infrastructure | ||||
| Flat-rate licence, no per-message billing | n/a | |||
| No per-seat pricing | n/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 evidence | vendor's | vendor's | ||
| Postfix migration runbook + verification commands | n/a | n/a | n/a | |
| Helm chart + Terraform module shipped | n/a | n/a |
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.
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.
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/.
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.
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.
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.
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.
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.
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.
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.
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.
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.
- Sprint 32 · GDPR / DPDP compliancebfadfd4Per-user Export · Suspend · Resume · backup-aware erasure (migration 0028).
- Sprint 35.5–41 · Meet SFU stack1b9ad3b · 47a48b8Real WebRTC media path · simulcast · dominant-speaker · recording · TURN · clustered.
- Sprint 42 · Send-API hardeninged01b19Per-key access controls · send_at · priority lanes · CA-mTLS · per-org throttle.
- Sprint 43 · Outbound rewritere02b0c8Self-contained unsubscribe token · List-Unsubscribe · per-org footer · open/click tracking.
- Sprint 44 · Feedback Loops + RBL probe650dfc3RFC 5965 ARF · Gmail/Yahoo/AOL/Microsoft FBL · Spamhaus/Barracuda/SpamCop/SORBS.
- Sprint 45 · Inbox Placement Rate1a74013Hourly seed-to-ISP probe · stdlib IMAP poll · 03:00-UTC daily aggregator.
- Sprint 46 · Analytics + exports + SSE + latencye2afc8bEngagement counts · streaming exports · SSE events · p50/p95/p99 latency dashboard.
- Sprint 47 · Dashboard alerts + queue inspector0710373RBL-listed + IPR spam-rate alerts · queue browser · analytics saved-views.
- Sprint 48 · Language SDKsb791fd4Node · Python · Go · Java · .NET. Stdlib-only across the board.
- Sprint 49 · Operator toolingf09a084mail-update CLI · Helm chart · Terraform module · log export · Postfix migration runbook.
- Sprint 50 · SOC 2 + ISO 27001 control maps4ee9391Every CC + Annex A control pre-mapped to a shipped feature, commit, or runbook.
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.