Mail Configuration
All configuration is by environment variable. See.env.example for the full set.
Core
SMTP and IMAP
Sending
Security and tracking
Webhooks
Multiple subscriptions live in awebhook_subscriptions table, each with its own URL, HMAC
secret, and event filters supporting wildcards ("*", "flow.*", or exact names).
Subscriptions can be scoped to a tenant. The legacy environment variables below seed a default
subscription on first start.
Events emitted:
- Transactional β
message.sent,message.failed,message.bounced,inbox.received - Marketing lifecycle β
campaign.started,campaign.finished,profile.subscribed,profile.unsubscribed,message.opened,message.clicked,flow.run.started,flow.run.completed
inbox.received carries the conversation, mailbox, domain,
and tenant plus attachment metadata; bounce events carry the recipient; engagement events carry
recipient and campaign.
Webhook targets are SSRF-guarded β validated at create time, re-resolved before each send, with
loopback, private, link-local, and metadata addresses refused and redirects disabled.
Inbound adapters
Managed domains and conversations
Observability
Bulk import limits
POST /v1/profiles/bulk (JSON array), POST /v1/profiles/import (CSV body), and
POST /v1/lists/:id/members/bulk are each capped at 1000 records per request.