Day-2 operations
Day-2 operations for a running BulletinMail instance.
Stub. Fill in as operational patterns emerge from running the reference instance. Below is the topic outline.
Routine
- Daily: scan
abuse@<apex>(manually until automated). Check Cloudflare Email Routing logs for anomalies. - Weekly: review DMARC aggregate reports landing at
dmarc@<apex>. - Monthly: review per-tenant message volume against the configured daily limits; bump limits or follow up with the tenant as needed.
Incidents
- Tenant being spammed / spamming: suspend via
UPDATE tenants SET status='suspended' WHERE slug=?. - Bounce surge to a single domain: check Email Sending dashboard for IP reputation issues at that domain; coordinate with Cloudflare support.
- Queue backlog: inspect dead-letter queue (
wrangler queues consumer ...); diagnose root cause before redriving.
Backups and disaster recovery
- D1 snapshots: schedule
wrangler d1 exportto R2 nightly. - R2 attachments: enable bucket lifecycle / replication per your tolerance.
- DNS: keep an offsite copy of the zone file.
Capacity planning
- 100 tenants × 5 groups × 50 members × 4 messages/week ≈ 500k sends/month — fits comfortably in Workers Paid + Email Sending baseline.
- Re-evaluate when any of those numbers grows ~5x.
Decommissioning a tenant
- Tenant requests data export.
- Email all admins a 30-day notice.
- After grace period:
DELETE FROM tenants WHERE slug=?(cascades). - Free up the slug after 90 days (avoid surprise re-use).