{% extends "base.html" %} {% block title %}Email Policies · SD RMM{% endblock %} {% block content %} {% include "_email_nav.html" %}

Email Policies

Named policies decide what happens to a detection (quarantine / block / tag / deliver). Sender lists below force-flag or trust specific senders.

‹ Email Security
{% if saved %}{% endif %}
Live remediation {{ 'ON' if remediate else 'OFF' }}
When ON, a quarantine or block disposition physically moves the message out of the inbox into an SD Quarantine label in the connected mailbox (reversible via Release). When OFF, dispositions are recorded only. {% if remediate %} Requires the mailbox to be connected with write access (reconnect with the gmail.modify scope).{% endif %}

Policies — disposition rules

{% for r in rules %} {% else %}{% endfor %}
PolicyApplies toMin severityActionScopePriorityStatus
{{ r.name }}{% if r.is_base %}built-in{% endif %} {{ r.threat_type|capitalize if r.threat_type else 'Any threat' }} {{ r.min_severity }}+ {{ r.action }} {{ org_name.get(r.org_id, 'All orgs') if r.org_id else 'All orgs' }} {{ r.priority }}
No policies yet. The standard set seeds on the next service start.

Lowest priority number wins; an org-specific policy overrides a built-in at the same priority. Detect-only for now — the chosen action is recorded as the message's disposition; physically moving mail arrives with mailbox remediation (Step B) / the MX gateway.

Add a policy

Sender lists

Add to a list

Block force-flags a message; allow (trusted senders) suppresses heuristic detections (hard malware/IOC hits are never suppressed). Set a direction to build inbound vs outbound ACLs — inbound matches the sender of arriving mail; outbound entries are stored and enforce once outbound (sent-mail) scanning is enabled.

Block list ({{ block|length }})

{% if block %} {% for e in block %} {% endfor %}
MatchDirPatternScope
{{ e.match_type }} {% set d = e.direction or 'any' %}{% if d=='inbound' %}↓ in{% elif d=='outbound' %}↑ out{% else %}↔ any{% endif %} {{ e.pattern }} {{ org_name.get(e.org_id, 'Global') if e.org_id else 'Global' }}
{% else %}

No block rules.

{% endif %}

Allow list ({{ allow|length }})

{% if allow %} {% for e in allow %} {% endfor %}
MatchDirPatternScope
{{ e.match_type }} {% set d = e.direction or 'any' %}{% if d=='inbound' %}↓ in{% elif d=='outbound' %}↑ out{% else %}↔ any{% endif %} {{ e.pattern }} {{ org_name.get(e.org_id, 'Global') if e.org_id else 'Global' }}
{% else %}

No allow rules.

{% endif %}
{% endblock %}