Brevo / Amazon SES–class ESP

Own your sending stack.
Ship with an embedded MTA.

Brevo/SES-class ESP with embedded MTA. Transactional + marketing, DNS authentication, suppressions, bounce categories, webhooks, and Filament admin — with KumoMTA embedded under mta/.

SPF · DKIM · DMARC Queue-backed sends Self-hosted MTA REST + webhooks

Product IA

  • Audience — lists, contacts, CSV import, double opt-in
  • Content — HTML templates, campaigns, merge tags
  • Delivery — messages, bounces, suppressions
  • Sending — domains, DNS verify, quotas & warmup
  • Integrations — API tokens, webhooks
  • Infrastructure — MTA health, ESP settings

Transactional + marketing

Queue-backed sends with retries, campaign dispatch jobs, tracking pixels/links, and one-click unsubscribe — patterns familiar from Brevo.

Deliverability center

DNS auth status, reputation rollups, bounce categories (hard/soft/complaint/block), content spam heuristics, and SES-style suppressions.

Embedded MTA

KumoMTA lives in mta/ (Docker Compose). Laravel on :8080, Kumo API on :8000, SMTP on :2525 — no self-deadlock.

Channels

Transactional vs marketing — same stack

Brevo-style product split without two vendors: API-triggered messages for product email, list-based campaigns for newsletters — shared domains, suppressions, and reputation.

Transactional

Password resets, receipts, alerts

  • ✓ POST /api/v1/send sync or async: true
  • ✓ Retries via SendMessageJob
  • ✓ Optional tracking / List-Unsubscribe
  • ✓ Domain quotas & warmup respected
Marketing

Newsletters & campaigns

  • ✓ Filament campaign Schedule / Queue / Send now
  • ✓ Lists, segments, CSV import
  • ✓ Template HTML editor + merge tags
  • ✓ Spam preview before you scale
Pricing

Simple self-hosted plans (placeholder)

Illustrative tiers for product marketing — wire Stripe/billing later. You already own the MTA capacity.

Starter

$0 / mo

Local / single-node. Filament admin, 1 domain, embedded MTA.

  • Up to 10k msgs / day*
  • DNS verify + suppressions
  • Community support

Growth

$99 / mo

Multi-domain warmup, webhooks, priority deliverability playbooks.

  • Up to 250k msgs / day*
  • API + campaign automation
  • Email support (placeholder)

Scale

Custom

Dedicated IPs, multi-node Kumo, SLA — talk to your ops team.

  • Unlimited* (MTA-bound)
  • Custom FBL / BIMI
  • Architecture review

*Limits are soft placeholders; real capacity follows your host, IP reputation, and KumoMTA config.

Developers

API docs teaser

Authenticate with a Filament-issued API token. Full OpenAPI lives at /docs/api. Official SDKs (PHP + JS/TS + MCP) ship under sdk/ in the repo — see sdk/README.md.

Send a message

curl -sS -X POST https://mailforge.selloja.com/api/v1/send \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "from": "noreply@example.com", "to": "user@example.com", "subject": "Welcome", "html": "<p>Hi</p>", "async": true }'

What you get

  • ✓ POST /api/v1/verify recipient validation
  • ✓ GET /api/v1/messages/{uuid} · /events
  • ✓ Suppressions export/import · signed webhooks w/ retry
  • ✓ POST /api/v1/inbound MIME parse → webhook JSON
  • ✓ Manage tokens under Admin → API Tokens
  • ✓ Official SDKs: sdk/php (mailforge/sdk) · sdk/js (@mailforge/sdk) · sdk/mcp (@mailforge/mcp)

Browse API docs Official SDKs ESP settings

Trust & deliverability

Built for inbox placement

Authentication

Per-domain SPF, DKIM keygen + export to mta/policy, DMARC policy, optional BIMI and tracking CNAME — verified from Filament.

Reputation

7-day bounce & complaint rates, category mix, suppressions from FBL/bounces — SES-style health bands in Deliverability Center.

Content hygiene

Pre-send spam heuristics with live HTML preview. Marketing campaigns gated until you fix hard blockers or override.