Inbound

Workspace mailboxes — Google-Workspace-style real inboxes

Workspace v0.1 (W117) gives every tenant a real Gmail-style inbox for each address at their verified domains. Think alice@acme.com, bob@acme.com, support@acme.com — each as its own mailbox with thread history, replies, search, the lot.

This is an alternative to the inbound webhook pattern. Pick one, not both.

Webhook vs mailbox — pick one

Use webhook whenUse mailbox when
Your app already has a helpdesk / CRM that ingests emailYou need a full inbox UI (read, reply, search, label)
You want to programmatically parse + route inbound mailMultiple humans need to read replies
One inbound address per tenant (e.g. support@)Many addresses per tenant (each employee gets one)
You want the smallest infra footprintYou want to replace Google Workspace at $6/user/mo

Setup

  1. Enable workspace for your verified sending domain via POST /api/v1/mail/domains/{domain_id}/enable
  2. This auto-publishes 4 DNS records on Cloudflare (if your domain is on CF) or surfaces them for you to paste:
    • MX (already there if you set up sending — same target)
    • SRV record for autoconfig (_imaps._tcp, _submission._tcp)
    • Autoconfig CNAME (autoconfig.acme.com → autoconfig.sendbolt.com)
  3. Create individual mailboxes via the dashboard or API
  4. Each mailbox gets a generated password — the user can change it after first login

Create a mailbox

curl -X POST "$API/api/v1/mail/mailboxes" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "address": "alice@acme.com",
    "user_id": "u_abc123",
    "display_name": "Alice Johnson",
    "send_signature": "<p>Alice Johnson<br/>Founder, Acme</p>"
  }'

The mailbox starts empty. Send a test email to alice@acme.com from any external client (Gmail, Outlook, your friend's phone) — it lands within 2-5 seconds.

How users access it

Three options:

  1. Web UI in SendBolt dashboard /dashboard/mail. The user logs into SendBolt, sees a Gmail-style 3-pane view (folders, list, message)
  2. IMAP + SMTP — autoconfig auto-publishes the right records, so users can paste their email address into Apple Mail / Thunderbird / Outlook and the client autocompletes the rest
  3. API — for building your own UI on top: GET /api/v1/mail/messages, POST /api/v1/mail/messages (send), POST /api/v1/mail/messages/{id}/read etc.

Internal routing optimisation (W117-E)

When two users in the SAME tenant message each other, SendBolt short-circuits: the message bypasses external SMTP entirely. It's just an INSERT into mail_messages. Recipients see it instantly.

This means alice@acme.com → bob@acme.comis instant + free. It doesn't count against your warmup tier cap or your monthly send quota.

Outbound from a workspace mailbox

When a workspace mailbox sends OUTBOUND (to an address outside the tenant), the engine signs with the tenant's DKIM key + routes through the standard outbound path. Same deliverability, same warmup, same suppression rules. From the recipient's perspective, it's indistinguishable from Alice using Gmail.

Bulk-add mailboxes

Have 50 employees? Don't click 50 times. Use the bulk endpoint:

curl -X POST "$API/api/v1/mail/mailboxes/bulk" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rows": [
      {"address":"alice@acme.com","display_name":"Alice Johnson"},
      {"address":"bob@acme.com","display_name":"Bob Smith"},
      {"address":"support@acme.com","display_name":"Acme Support"}
    ]
  }'

Returns one row per address: {address, ok, password, error}. Save the generated passwords to your team's shared password manager.

Shared mailboxes (e.g. support@)

A shared mailbox is a regular mailbox with multiple mailbox_members rows. Every member can read + reply. Useful for support@, hello@, billing@.

curl -X POST "$API/api/v1/mail/mailboxes/{mailbox_id}/members" \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"u_def456","role":"agent"}'

Limitations (today)

  • No mobile app yet — IMAP works in Apple Mail / Outlook mobile though
  • No Push / IMAP IDLE — clients poll every 5 minutes
  • No calendar, no contacts (just mail). This isn't a Google Workspace replacement for those
  • Storage: 5GB per mailbox on Free / Starter, 25GB on Pro, 100GB on Scale

For testing only?Spin up a rahstack.dev mailbox on DEV before committing your production domain. Workspace v0.1 is opinionated about MX/SRV records and once you publish them, you're committing your domain's mail to SendBolt's inbound infra.