Version0.0.1
StatusM1 guardrails implemented — see gateway tests m1Deliverability.test.ts

Email Deliverability & Domain Reputation — Product Plan

> Purpose: Decision framework for @anoobot.com abuse risk, outbound mail, and self-hosted only vs managed cloud deployment paths. > > Cross-reference: anoobot-business-model.md · website.md · feature-flags.md · packages/gateway/src/routes/domains.ts · infrastructure/terraform/aws-eks-tenant/


1. Executive recommendation

PhaseStrategyRationale
Year 1Self-hosted only for free + paidLowest domain-reputation risk, lowest abuse cost, matches “sovereign inbox” positioning
Year 2+Managed cloud for any paid planRevenue attach (+$4/user/mo hosting); requires outbound-mail guardrails before GA
Never (without controls)Centralized free @anoobot.com outbound SMTPHighest blacklist and abuse cost

2. Architecture context (current codebase)

ComponentBehavior
@anoobot.comFree identity/discovery namespace — routes to the user’s self-hosted instance; not centralized hosted outbound email
Inbound relayGo SMTP relay — encrypt-on-receipt; STARTTLS required (packages/relay/)
Compose / sendClient encrypts → POST /api/v1/messages → mesh/directory delivery to other anoobot users
Custom domainDNS TXT verified; anoobot.com cannot be claimed as a custom sending domain
Managed cloudPer-tenant EKS (Terraform); gated by VITE_ENABLE_MANAGED_CLOUD + MANAGED_PROVISIONER_LIVE
Outbound internet SMTPNot implemented as a centralized product feature today

3. Master decision table — self-hosted vs managed cloud

DimensionSelf-hosted onlyManaged cloud
Who runs mail infraCustomer (Docker/K8s on their IP)Anoobot (per-tenant EKS on AWS, or BYO via STS)
@anoobot.com roleIdentity address → routes to their instanceSame identity model; tenant at per-tenant ALB / MANAGED_CLOUD_BASE_URL
Outbound mail pathCustomer IP if they configure relay; no central Anoobot SMTP poolInbound relay on tenant cluster; outbound internet mail requires explicit product decision
anoobot.com blacklist riskLow — abuse hits customer IP; SPF/DKIM for anoobot.com won’t authorize random self-hostersMedium–High if outbound is centralized under anoobot.com or shared IPs
Free-tier spam riskDistributed across instances; hard to abuse at scaleConcentrated on Anoobot IPs/domains if free users are hosted
Infra cost to AnoobotLow — registry, directory, updates, supportHigh — EKS tenant (VPC+ALB+cluster), ops, monitoring, SLA cron
Abuse handling costAccount suspension + directory delistDeliverability remediation, abuse desk, legal
Revenue modelLicense only ($5/user/mo Team, volume bands)License + $4/user/mo hosting; target 5% Y2 → 25% Y5 managed attach
Buyer personaPrivacy/devops, law firms with IT, sovereign deploySMB without DevOps
GTM timingYear 1 — sovereign inbox wedgeYear 2 beta — after control-plane soak
Code readinessShippedCode complete; live AWS proof pending

4. Abuse scenarios — @anoobot.com (e.g. adam@anoobot.com)

ScenarioSelf-hosted onlyManaged cloud
Free user sends many marketing emailsMail leaves user’s IP (if outbound exists); anoobot.com unlikely blacklisted; user IP may beOn managed + shared outbound: anoobot.com / shared IP at risk
User spoofs From: user@anoobot.com to GmailSPF/DKIM fail → spam/reject; hurts sender IP, not Anoobot domainSame unless Anoobot signs mail for @anoobot.com centrally
User spams other @anoobot.com users (mesh)Suspend account in registry; no public SMTP blastSame + per-tenant rate limits
Cost if abuse happensSupport time (hours)Support + deliverability firefight (days, significant $)

5. Cost model (order of magnitude)

Cost lineSelf-hosted onlyManaged cloud
Per free user~$0.01–0.10/mo (registry + directory)Do not host free users — EKS tenant cost >> $0
Per paid domain (~10 users)License margin; no hosting COGSLicense ~$50/mo + hosting ~$40/mo; EKS baseline ~$150–300+/mo per tenant until density improves
Abuse incidentLow $$500–5K+ (IP warmup, support, provider fees)
Anti-abuse stackOptional / lightRequired before GA — budget ~$100–500/mo + engineering

6. Product policy (recommended)

PolicySelf-hosted onlyManaged cloud
Free tier on this path?✅ Yes — 1 user, @anoobot.com or custom domainNo — any paid plan only
Sending domain ownershipCustomer custom domain (DNS TXT verified)Customer custom domain or subdomain (e.g. mail.customer.com) — not shared root anoobot.com
Central @anoobot.com outbound SMTP❌ Never❌ Never for free; paid only with strict limits if ever offered
Outbound to internet (Gmail, etc.)Customer brings SMTP / future optional relay docsPer-tenant relay or transactional provider (SES/Postmark) with dedicated subdomain
Send quotasSoft mesh limits + abuse reportingHard limits (e.g. 500/day paid), burst caps, auto-suspend
Required before launchDirectory abuse reporting, account suspend API+ SPF/DKIM/DMARC, bounce webhooks, complaint loop, SLA monitoring

7. Phased rollout

MilestoneSelf-hostedManaged cloud
M0 (now)Free @anoobot.com + custom domain; inbound relay; mesh sendGated off (MANAGED_PROVISIONER_LIVE=false)
M1 (Y1 GA)Abuse: suspend user in registry; document “@anoobot.com is identity, not bulk mail”
M2 (Y2 beta)Keep free self-hosted; convert at user #2Paid checkout, lapse offboard, beta soak — managed-cloud-beta.md
M3 (Y2 GA)Optional customer SMTP relay — self-hosted-smtp-relay.mdPer-tenant outbound subdomain, webhooks, blocklist — outbound-mail-ga.md
M4 (Y3+ scale)Community + legal wedgeTarget 25% managed attach; improve multi-tenant unit economics

8. Path chooser

If the priority is…Choose
Protect anoobot.com reputationSelf-hosted only (Year 1)
Minimize infra burn on free usersSelf-hosted only
“No DevOps” revenue (+$4/user/mo)Managed cloud (paid only, Year 2+)
Law-firm sovereign deploySelf-hosted
Fast SMB signup without ITManaged cloud (after guardrails)
Allow free marketing blastsNeither — not in product scope without anti-abuse stack

9. Engineering backlog (managed GA blockers)

When managed cloud sends internet mail, implement before GA:

  1. No free tenants on managed — billing + provisioner enforcement ✅ (M1)
  2. Per-tenant or per-customer sending subdomain — never bare @anoobot.com as shared pool ✅ (M3)
  3. Rate limits — daily/hourly send caps by plan slab ✅ (M1 mesh limits)
  4. Bounce and complaint webhooks — auto-suppress bad recipients ✅ (M3)
  5. Account suspend API — registry delist + tenant pause ✅ (M1 + M3 auto-suspend)
  6. SPF/DKIM/DMARC — for any Anoobot-operated sending subdomain only ✅ (M3 DNS templates)
  7. Blocklist monitoring — Spamhaus, Google Postmaster, etc. ✅ (M3 RBL cron)

10. Summary

  1. Keep free tier on self-hosted only@anoobot.com stays identity/directory, not shared outbound mail.
  2. Launch managed cloud Year 2 for any paid plan — aligns with managed attach targets in the business model.
  3. Do not place free users on managed — EKS economics and spam concentration both argue against it.
  4. If managed sends internet mail, use customer subdomains or customer-owned domains — not a shared @anoobot.com sending pool.
  5. Build anti-abuse before managed GA — cheaper than recovering a blacklisted domain.