Skip to content
Back to skills

Quarantine And Messages

ASecurity

Quarantine triage across all five scopes (reseller/customer/domain/ user_group/user): message fields (`quarantine_type`, `decision`, `score`, scoring `results`), releasing a single message via `/deliver`, bulk release via `/deliver_many` with its silent scope-mismatch skip and the `all_selected` release-everything switch, and the release permission flags in configuration.

  • 48 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 2, 2026
ai-agentsgoapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add wyre-technology/msp-claude-plugins --skill quarantine-and-messages --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Quarantine And Messages?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Quarantine And Messages
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wyre-technology-quarantine-and-messages/badge)](https://www.skillsdirectory.com/skills/wyre-technology-quarantine-and-messages)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "Mailprotector Quarantine & Messages"
description: >
  Quarantine triage across all five scopes (reseller/customer/domain/
  user_group/user): message fields (`quarantine_type`, `decision`, `score`,
  scoring `results`), releasing a single message via `/deliver`, bulk
  release via `/deliver_many` with its silent scope-mismatch skip and the
  `all_selected` release-everything switch, and the release permission
  flags in configuration.
when_to_use: >-
  When reviewing or releasing quarantined Mailprotector messages. Use when:
  mailprotector quarantine, quarantined message, release message, deliver
  many, false positive, spam quarantine, held email mailprotector, message
  triage, quarantine_type, cloudfilter quarantine.
---

# Mailprotector Quarantine & Messages

## Overview

CloudFilter quarantines inbound mail it classifies as spam, policy
violations, or viruses. The quarantine is readable at any level of the
hierarchy — from one user's held mail up to the entire reseller — and
releasing a message delivers it to its recipients.

## Key Concepts

| Field | Detail |
|-------|--------|
| `quarantine_type` | Why it is held: `spam`, `policy`, or `virus` |
| `decision` | The filter verdict, e.g. `quarantine_spam`, `quarantine_policy` |
| `score.score` | Aggregate spam score; higher = more confident spam (1000 = certain) |
| `results[]` | The scoring tests that fired: `{id, mode, title, description, weight}` |
| `direction` | `inbound` / `outbound` |
| `address` / `recipients` | The quarantining mailbox and full recipient list |
| `id` vs `uuid` | Numeric `id` is what release calls take |

`results` is the triage evidence: entries like "No Reverse DNS"
(weight 40) or "Exploits Block List" (weight 200) sum toward the score.
A message held only by low-weight reputation tests from a known partner
domain reads like a false positive; XBL/RBL hits and high-weight tests
do not. `POST /results` with `{"code": "no_rdns", "mode": "inbound"}`
looks up a test by its `results_data` code from the logs.

## Common Workflows

### Listing (one tool, five scopes)

`mailprotector_messages_list` with `scope`
(`reseller|customer|domain|user_group|user`) and `scope_id` (defaults to
the bound reseller at reseller scope). Underlying endpoints:
`GET /{resellers|customers|domains|user_groups|users}/{id}/messages`.

- A scope's listing includes everything beneath it — reseller scope is
  the whole book of business.
- **Max page size is 50**; paginate with `page` until a short page.
- Filter with field query params to keep result sets reviewable.

### Releasing one message

`mailprotector_messages_release` →
`POST /messages/{message_id}/deliver` with

```json
{"include_original_recipients": 1, "recipients": "extra@domain.com"}
```

Returns **204 with an empty body** on success. `recipients` (optional,
comma-separated) adds addresses beyond the originals. Release is a
delivery — once released, the message is in the recipient's inbox and
cannot be recalled.

### Releasing many

`mailprotector_messages_release_many` →
`POST /{scope}/{scope_id}/messages/deliver_many` with

```json
{
  "include_original_recipients": 1,
  "all_selected": "false",
  "ids": "2015573567,2015573173"
}
```

Returns `{"delivered_messages": [ ... ]}` — the IDs actually released.

- `ids` is a **comma-separated string**, not an array.
- IDs that don't belong under the scope entity are **silently skipped**;
  always diff `delivered_messages` against what you sent and report any
  shortfall.
- `all_selected: "true"` releases **every** held message in the scope's
  quarantine and ignores `ids`. At reseller scope that is the entire
  client base — never use it without an explicit, scoped instruction.

### Triage workflow

1. List at the narrowest scope that answers the question (a user
   complaint → user scope; a "we're missing mail" ticket → domain).
2. For each candidate, weigh `quarantine_type`, `score`, and the fired
   `results` — never release on subject line alone.
3. Check the scope's configuration permission flags (below) before
   promising a release.
4. Release, verify via the 204 / `delivered_messages` response, and
   report exactly which IDs were delivered.
5. For repeat false positives from the same sender, propose an allow
   rule at the narrowest sufficient scope (see
   [allow-block-rules](../allow-block-rules/SKILL.md)) instead of
   releasing the same sender weekly.

## Gotchas

- **Release permissions live in configuration.**
  `permissions.messages.allow_spam_release`, `allow_policy_release`, and
  `allow_virus_release` (readable via `mailprotector_configuration_get`
  at reseller/customer/domain/user_group scope) gate what can be
  released. `allow_virus_release` is commonly `false` — treat a refused
  virus release as the control working, not an error to route around.
- **Silent skips in `deliver_many`** are the bulk-release trap: a wrong
  `scope_id` looks like success with an empty `delivered_messages`.
- **Quarantine listings are PII in bulk** — sender, recipients, and
  subject for every held message. At reseller scope that is every
  customer's mail metadata; scope down before pulling.
- **Message bodies are not exposed.** Triage decisions are made on
  metadata and scoring results; say so rather than implying content was
  read.

## Related Skills

- [allow-block-rules](../allow-block-rules/SKILL.md) — durable fix for repeat false positives
- [api-patterns](../api-patterns/SKILL.md) — scope/scope_id and pagination fundamentals

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…