Beacon docs
runbookrunbooksredacted view

UAI Mail Architecture

Mailu service map, on-disk layout, Beacon co-host relationship, and Cadence send hooks.

Updated 2026-07-03·Freshness: Reference·Sensitive tokens or credentials were hidden before display.

UAI Mail Architecture

Mailu service map, on-disk layout, Beacon co-host relationship, and Cadence send hooks.

Body

UAI Mail Architecture

Canonical product: UAI Mail (uai-doc-ecosystem-product-uai-mail). Runtime: Mailu 2.0.

Compose Services

Service Role
resolver Local DNS (Unbound)
front nginx front / port publisher
redis Rspamd cache and rate limits
imap Dovecot (ports 143, 993)
smtp Postfix (ports 25, 465, 587)
antispam Rspamd
admin Mailu admin UI and account DB
webmail SnappyMail

Images: ghcr.io/mailu/*:2.0 plus redis:7-alpine.

Web admin/webmail bind to loopback only (127.0.0.1:8080 / 127.0.0.1:8443).

On-Disk Layout

Path Contents
/root/mail/docker-compose.yml Compose definition (no git)
/root/mail/mailu.env Secrets — never expose values to models
/root/mail/renew-certs.sh Cert renew — couples Beacon stop + Mailu front restart; frozen
/mailu Persistent data root (~176M when inventoried)
/mailu/mail Maildirs
/mailu/data/main.db Admin DB
/mailu/dkim DKIM keys
/mailu/certs TLS material copies
/mailu/filter Rspamd state
/mailu/webmail SnappyMail state
/mailu/redis Redis persistence
/mailu/mailqueue Postfix queue files

Beacon Relationship

The VPS hostname is mail.united-ai.ca. Beacon (uai-doc-ecosystem-product-beacon-v1) owns public HTTP(S) on ports 80/443 on this host. Mailu web was loopback-only. Beacon route label mail and capability-map entry for Beacon edge are not a live mail upstream.

LEGACY WARNING. Historical Caddy pointed mail.united-ai.ca at a NUC custom webmail port. That path is retired. No first-party umail app repo was found.

Cadence Send Hooks

Cadence (uai-doc-ecosystem-product-cadence-v6) has an AI send path (code present; live send not exercised while stack stopped):

Item Fact
Tool id email.umail.approved_send (LEGACY umail name in tool id)
Login POST {base}/api/auth/login
Send POST {base}/api/accounts/{account_id}/send
Env surfaces CADENCE_UMAIL_* / SCRIBE_UMAIL_* (names only)
SMTP fallback CADENCE_SMTP_* via lettre (names only)

Credential values must never appear in model context. See uai-doc-plans-uai-mail-ai-access and uai-doc-runbooks-uai-mail-boundaries.

See Also

  • uai-doc-runbooks-uai-mail-state

  • uai-doc-runbooks-uai-mail-restore

  • [REDACTED:high-entropy]