Repository navigation
v0.16.0
MillionSend v0.16.0 makes releasing quarantined mail a reviewed decision and puts the same release rules on every channel. Self-hosted instances now bring Postgres and the backup schedule back after a host reboot. No database migrations. (#149, #146, #147, #145)
Releasing held mail (#149)
Dashboard
- One quiet "Release" button per place a held email shows: its card in the thread, its row in Needs review, and its banner on the Received email page.
- Every release opens a dialog. It shows:
- why the email was held: the reason, the risk scores, what screening found, and whether hidden text was removed;
- what releasing does, for that inbox;
- the email's text.
- A tick for the riskiest holds. Prompt injection, phishing, virus and failed authentication holds can be released only after you tick "I've read this email and it's safe for my agent".
- Trusting the sender is a deliberate choice inside the dialog. It's offered only for a "not on the allowlist" hold from a verified sender, and only to owners and admins, because the allowlist lets that address's later mail skip screening. The separate "Release and trust sender" button is gone.
- Released mail keeps a "Released by …" badge in the thread.
Rules, on the dashboard, REST and MCP alike
- Screened at release: mail held before screening could read it (not on the allowlist, sender not verified, failed authentication) is screened when released. A risky one stays held: REST answers
409 held_by_screening. - Trusting a sender (
trust_sender) is allowed only for a "not on the allowlist" hold from an authenticated sender. Anything else answers403 trust_not_allowed. - MCP clients can't release content holds (
403 forbidden). Their other releases go through only on the judge's verdict; when screening can't run, the release answers503 screening_unavailablewithRetry-After. Therelease_emailtool no longer acceptstrust_sender. Inbox-scoped keys still can't release. - Webhook events for released mail now list the email's attachments.
Console
- Trust & safety review is one click from any team. Every team in the console's Teams list opens its review page from the row's menu. (#147)
Self-hosting
- Postgres and the backup schedule come back after a host reboot. Both compose files give them
restart: unless-stopped; Postgres used to have no restart policy. An unconfigured backup container now idles instead of exiting, so it doesn't restart-loop. (#146) - Docs: changing a webhook's events with
PATCH /webhooks/{id}replaces the whole list. The docs now say to send it in full. (#145)
Upgrading a self-hosted instance
- No database migrations.
- Copy the two
restart:lines fromdeploy/docker-compose.ymlinto your compose file (postgres and backup), so they survive reboots. Your nextdocker compose up -drecreates both containers once, which takes a few seconds. - Without an
ABUSE_JUDGE, MCP clients can no longer release held mail (503 screening_unavailable). People in the dashboard and full-access keys still can.