Several outbound hosts per org, sent round-robin, each warmed on its own, inside a send window

FeatureEmailService
Shipped
September 12, 2026 at 5:18 AM UTC
Author
Kamo
Commit
30b8510

An organization's campaign mail now leaves through any number of outbound hosts, one message at a time in rotation, instead of one bulk provider. - Hosts: an organization's own (outboundHosts in its bulk provider blob) and the platform's (platformOutboundHosts in the platform organization's blob), SHARED with every organization or PLATFORM_ONLY. Every SMTP setting is explicit: security, SASL mechanism, TLS verification and protocols, HELO name, envelope sender, timeouts, hourly/daily limits, DSN, 8BITMIME, SOCKS. HostSessionFactory builds the session from them; EmailSmtpService.sendVia sends through it. - The same server is never added twice (same name or any shared address, whatever the port or login), and an organization's host must be a public server: private and in-cluster names and addresses are refused on save and again before every connection. - Warm-up is per host and always on. WarmupService works on a WarmupHandle; a platform host has one warm-up shared by every organization using it. New runs start at the local start of day. - WarmupReleaser is the only sender: round-robin across each organization's hosts, skipping a host waiting for its slot, at its cap, braked, at its own limit or backing off after failing to connect. A connection, TLS or sign-in failure no longer counts an attempt against the recipient. - Send window per organization (days, one or more ranges, own zone or the org's). WarmupPacer spreads each day's cap across the window's open time only. - Staged outbox: /api/email/campaigns/outbox lists queued recipients and cancels or restores them. A cancelled recipient is SUPPRESSED with a note (no status DDL) and reads back as CANCELLED. - Endpoints: **************** platform hosts at **************** behind MANAGE_OUTBOUND_EMAIL_HOSTS. The one-host writes answer 410. - OutboundHostBackfill seeds the k3m1 relay as a PLATFORM_ONLY host and migrates one-host blobs. No schema changes.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing