SafeToOpenEmail Security Docs

SafeToOpen Browser Security

Response actions: mail platforms, gateways, identity, chat and paging

Junk, block or quarantine a confirmed sender across Microsoft 365, Google, Mimecast, Proofpoint, Check Point, Cisco, Barracuda and FortiMail; lock down a compromised user in Entra, Google or Okta; alert Slack, Teams, PagerDuty or Opsgenie

Guide 7 of 7 · April 2026

Response actions let a confirmed Email Security incident change something in Microsoft 365 or Entra ID without anyone leaving the console. You connect your tenant once, write rules that say which incidents trigger which action, and watch the log. Rules start in dry run, every action is recorded, and the reversible ones have Undo. Find it under Organisation → Response actions in the Email Security console.

Note Connectors and rules are per product. If you also run Browser Security, that console has its own Response actions page (with a hosted blocklist for firewalls, gateways and EDR); the same Entra app registration, Google service account, Okta token or chat webhook can be entered in both.

What each integration lets you do#

Three outcomes are available on an Email Security incident. Stopping the sender keeps the same attacker out of every other mailbox, and in some systems pulls back what was already delivered. Containing the user ends the sessions and forces a password change for the person who reported or received the message, which matters when they entered credentials. Alerting and paging bring a person into the loop. The table lists which integration delivers which outcome and whether the action can be reversed from SafeToOpen.

IntegrationStop the senderContain the userAlert or pageUndo
Microsoft 365 and Entra IDTenant-wide sender block via the reported message (Outlook add-in); Junk inbox rule in one or every mailboxSign out everywhere; force password change; mark compromised for Conditional AccessJunk rule, password, compromised flag yes; tenant block and sign-out no
Google WorkspaceGmail filter to Spam in one or every mailboxSign out of all Google sessions; force password changeFilter and password yes; sign-out no
OktaClear sessions and OAuth tokens; expire password; suspendSuspend yes; others no
MimecastBlocked Senders policy for everyone (address or domain)Yes
Proofpoint TRAPAlert to TRAP, which pulls the message from every mailbox by its own rulesNo (TRAP owns it)
Check Point Harmony EmailQuarantine every message from the sender in the last 7 daysYes, restores
Cisco Email Threat DefenseMove every message from the sender in the last 7 days to JunkYes, moves back
Barracuda Email Gateway DefenseBlock policy for the address or the whole domainYes
FortiMailAddress or domain on the system block listYes
SlackIncident card with Open, Confirm and No issue buttonsn/a
Microsoft TeamsIncident card with Open, Confirm and No issue buttonsn/a
PagerDutyIncident on the service, severity mappedYes, resolves
OpsgenieAlert to the team, priority mappedYes, closes

Every connector below has the same parts: what it gives you, the vendor-side set-up, the console set-up, and the actions with scope and undo. Blocking a URL rather than a sender is a Browser Security action; see that console’s guide.

1. Connect Microsoft 365 and Entra ID#

What it gives you#

One Entra app registration lets a confirmed incident act on two layers of the tenant. On the mail layer: block the sender for the whole tenant through Microsoft’s own submission pipeline, so Exchange Online rejects their next message to anyone, and junk their mail in the affected mailbox or in every member’s mailbox. On the identity layer, when the person entered credentials: sign them out of every app and device, require a new password at the next sign-in, and mark the account compromised so risk-based Conditional Access policies (block, MFA, password reset) apply automatically. The same connector, with one extra permission, also blocks URLs and domains from the Browser Security console.

Before you start#

Set-up#

  1. Entra admin center → App registrations → New registration (any name, single tenant). Note the Application (client) ID and the Directory (tenant) ID.
  2. Certificates & secrets → New client secret; copy the value, it is shown once.
  3. API permissions → Add a permission → Microsoft Graph → Application permissions. Add only what you need, then Grant admin consent:
PermissionEnables
ThreatSubmission.ReadWrite.AllBlock the sender for the whole tenant by submitting the reported message
MailboxSettings.ReadWriteCreate and remove the Junk inbox rule in members’ mailboxes
User.RevokeSessions.AllSign the user out everywhere
User.ReadWrite.AllRequire a password change at next sign-in (also assign the app the User Administrator role in Entra)
IdentityRiskyUser.ReadWrite.AllMark the user as compromised in Identity Protection
  1. Console → Response actions → + Microsoft 365 and Entra ID → tenant ID, client ID, secret → Add connector → Test. The test signs in and lists which permissions the token carries and which are missing; actions whose permission is missing fail with a clear message rather than silently.

2. Actions#

ActionWhat happensScopeUndo
Move mail from the sender to JunkAn inbox rule “SafeToOpen: junk <sender>” is created so every future message from that address goes to Junk Email. Existing messages are not moved.The affected member’s mailbox, or every active Email Security member (up to 300 mailboxes)Yes, removes the rules
Sign the affected user out everywhereRefresh tokens are revoked; Outlook, Teams, the browser and mobile apps must sign in againThe member who reported or received the messageNo
Require a password change at next sign-inSets the flag on the account; the next sign-in forces a new passwordSame memberYes
Mark the user as compromisedConfirms the user as compromised in Identity Protection so risk-based Conditional Access policies apply (block, MFA, password reset)Same memberYes, dismisses the risk
ActionWhat happensScopeUndo
Block the sender for the whole tenantThe reported message is submitted to Microsoft as phishing with a tenant-wide block of the sender in the Tenant Allow/Block List for 90 days. Microsoft also learns from the submission. Needs the message reference the Outlook add-in (8.1.1 and later) attaches to reports and scans. The Gmail add-on attaches its own message id, but Microsoft cannot act on it, so the action stays Microsoft-only.Whole tenantNo (expires, or remove the entry in Defender → Tenant Allow/Block Lists)
Note The message reference is an id only. SafeToOpen still stores no message content; Microsoft reads the message from the mailbox when it processes the submission.

3. Google Workspace#

What it gives you#

A service account with domain-wide delegation lets a confirmed incident send the sender’s future mail to Spam in the affected mailbox or in every member’s mailbox, and, when the person entered credentials, end all their Google sessions and force a password change at the next sign-in. The same connector serves directory import (guide 4) if you give it the group scopes too.

Set-up#

  1. Google Cloud console → IAM & Admin → Service Accounts → create one, then Keys → Add key → JSON. Keep the file.
  2. Google Admin console → Security → Access and data control → API controls → Manage domain-wide delegation → Add new. Client ID: the service account’s. Scopes: https://www.googleapis.com/auth/gmail.settings.basic, https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.user.security.
  3. Console → Response actions → + Google Workspace → the admin account to act as (a super admin or a delegated admin with user management rights) and the JSON key pasted whole → Add connector → Test.
ActionWhat happensScopeUndo
Send mail from the sender to SpamA Gmail filter is created in the mailbox (from: sender → Spam, skip Inbox). Existing messages are not moved.Affected mailbox, or every active member (up to 300)Yes, deletes the filters
Sign the user out of all Google sessionsAll web and mobile sessions end; the person signs in againAffected memberNo
Require a Google password change at next sign-inSets “change password at next login” on the accountAffected memberYes

4. Mimecast#

What it gives you#

A Blocked Senders policy that makes Mimecast reject every future message from the sender, or from the sender’s whole domain, to everyone in the organisation, before it reaches Microsoft 365 or Google. The same connector blocks URLs through URL Protect from the Browser Security console.

Set-up#

  1. Mimecast Administration Console → Services → API and Platform Integrations → Your Application Integrations → Add API application. Give it the Blocked Senders Policy (create, delete) and Managed URL (create, delete) permissions. Create a client id and secret.
  2. Console → Response actions → + Mimecast → client id and secret → Add connector → Test.
ActionWhat happensScopeUndo
Block the sender for everyoneA Blocked Senders policy is created from the sender address (or its whole domain) to everyone; Mimecast rejects future mail from itWhole organisationYes, deletes the policy
Note Blocking a whole sender domain is a heavy switch: use it for lookalike or throwaway domains, never for a compromised partner’s real domain.

5. Proofpoint TRAP#

  1. Threat Response → Sources → New source → type JSON. TRAP generates an alert-source URL that contains a token; copy it.
  2. In the source, map the incoming fields once. SafeToOpen sends sender, sender_domain, recipient, subject, message_hash, severity, verdict, kind, reasons, occurred_at, incident_id and incident_url.
  3. Set the source’s match and response rules the way you already do for other alert sources (for example: quarantine matching messages from every mailbox and any later copies).
  4. Console → Response actions → + Proofpoint TRAP → paste the URL; choose whether to verify the appliance certificate → Add connector → Test. The test only checks the host is reachable from SafeToOpen; no alert is sent.

The action “Send to Proofpoint TRAP for auto-pull” posts one alert per incident. TRAP does the pull; nothing is undone from SafeToOpen. If the appliance is on-premises, allow inbound HTTPS from plus.safetoopen.com or expose it through your usual reverse proxy.

6. Other email gateways#

Each is its own connector with a Test. Confidence varies with how stable the vendor API is; start every rule in dry run and check the first real result.

Check Point Harmony Email & Collaboration#

  1. Infinity Portal → Global Settings → API Keys → New, service Harmony Email & Collaboration. Note the client id and access key, and your portal region.
  2. Console → + Check Point Harmony Email & Collaboration → region, client id, access key → Test.
  3. Action “Quarantine every message from the sender (last 7 days)”: searches Microsoft 365 emails from the sender and quarantines them. Undo restores them.

Cisco Secure Email Threat Defense#

  1. Threat Defense console → Administration → API Clients → create a client; note the region.
  2. Console → + Cisco Secure Email Threat Defense → region, client id, secret → Test.
  3. Action “Move every message from the sender to Junk (last 7 days)”: searches delivered messages from the sender and remediates them to Junk. Undo moves them back to the Inbox.

Barracuda Email Gateway Defense#

  1. Barracuda Cloud Control → Apps → API → create an OAuth application; note the account id and, if the policy should be per domain, the domain id from the Domains page.
  2. Console → + Barracuda Email Gateway Defense → client id, secret, account id, domain id → Test.
  3. Action “Block the sender (sender policy)”: creates a block policy for the address or the whole domain. Undo deletes the policy.

FortiMail#

  1. Create an admin with REST API access on the FortiMail unit and make its HTTPS address reachable from plus.safetoopen.com (a public hostname or a reverse proxy).
  2. Console → + FortiMail → address, username, password, certificate verification → Test.
  3. Action “Block the sender (system block list)”: adds the address, or *@domain, to the system block list. Undo removes it.
Note Blocking a whole sender domain is a heavy switch on any gateway: use it for lookalike or throwaway domains, never for a compromised partner’s real domain.

7. Okta#

  1. Okta Admin console → Security → API → Tokens → Create token, from an admin who can manage the users concerned (or a custom admin role scoped to them).
  2. Console → Response actions → + Okta → org URL (for example https://yourcompany.okta.com) and the token → Add connector → Test.
ActionWhat happensUndo
Sign the user out of Okta everywhereAll Okta sessions end and OAuth tokens issued to the user are revoked; every app behind Okta asks for a fresh sign-inNo
Require a password change at next Okta sign-inThe current password is expired; the user sets a new one at next sign-inNo
Suspend the user in OktaThe user cannot sign in until unsuspendedYes, unsuspends (unless they were already suspended before the action)

The affected member’s email is used as the Okta login. Use Okta actions instead of the Entra or Google ones when Okta is the identity provider in front of Microsoft 365 or Google Workspace.

8. Slack and Microsoft Teams incident cards#

What it gives you#

An incident card in the channel your team already watches, the moment a high-severity incident arrives, with three buttons: Open incident, Confirm issue & respond (marks it confirmed and runs your on-Confirm rules) and No issue. Incoming webhooks are one-way, so the buttons open the console signed in and act after one prompt, which puts the analyst’s name on the action instead of a shared bot.

Slack set-up#

  1. Open https://api.slack.com/apps → Create New App → From scratch → name it “SafeToOpen” → pick your workspace → Create App.
  2. In the app’s left menu → Incoming Webhooks → switch Activate Incoming Webhooks to On.
  3. Scroll down → Add New Webhook to Workspace → choose the SOC channel → Allow. Copy the Webhook URL (it starts with https://hooks.slack.com/services/).
  4. Console → Response actions → + Slack → paste the URL → Add connector → Test. A “SafeToOpen connected” card appears in the channel.

Microsoft Teams set-up#

Teams receives cards through a Workflows webhook (Power Automate, included with Microsoft 365). The older Office 365 Connectors “Incoming Webhook” has been retired by Microsoft; existing legacy URLs still work in the connector but new ones should be Workflows.

  1. In Teams, open the channel that should receive cards → click the ⋯ next to the channel name → Workflows. (If you do not see Workflows, open the Workflows app from the left rail and choose Create.)
  2. Search the templates for “webhook” and choose “Post to a channel when a webhook request is received”.
  3. Give the flow a name such as “SafeToOpen incidents”, make sure it is signed in as you, click Next.
  4. Choose the Team and the Channel the cards should post to → Add workflow.
  5. The final screen shows the webhook URL (it starts with https://….logic.azure.com:443/workflows/… or https://….webhook.office.com/…). Copy it → Done.
  6. Console → Response actions → + Microsoft Teams → paste the URL → Add connector → Test. A “SafeToOpen connected” card appears in the channel, posted by the Workflows bot.
Note The flow belongs to the person who created it. If that person leaves the organisation or their account is disabled, Teams disables the flow and cards stop; create it from a service or admin account that stays. Private channels require the flow owner to be a member.

Rules#

  1. Add a rule: connector Slack or Teams → action “Post an incident card” → Automatically when the incident arrives → minimum severity high (or critical for a quieter channel) → kinds blank → dry run off; a card is not a change you need to rehearse.
  2. Optionally a second rule on the same connector, On Confirm at any severity, so the channel sees who confirmed and what the on-Confirm rules did.

The card shows severity, kind, sender, subject, mailbox, trust score, workspace, time and the top reasons, with three buttons: Open incident, Confirm issue & respond, No issue. The buttons open the console signed in and act after one confirmation prompt, so the action carries the analyst’s name and Confirm runs the on-Confirm rules. Incoming webhooks cannot call back into SafeToOpen, which is why the buttons go through the console rather than acting inside the chat.

Note The card action is the only one that may run more than once per incident: once per trigger and channel, so an alert and its confirmation both post without duplicates.

9. PagerDuty and Opsgenie paging#

  1. PagerDuty: Services → Service Directory → the service that should own these incidents → Integrations → Add an integration → Events API V2 → Add. Open it and copy the Integration Key (32 characters). Note whether your account is US or EU (EU accounts sign in at eu.pagerduty.com).
  2. Opsgenie: Teams → the team → Integrations → Add integration → API → name it “SafeToOpen” → tick Create and Update Access and Read Access → Save integration. Copy the API key. Note US or EU (EU accounts sign in at app.eu.opsgenie.com).
  3. Console → + PagerDuty (region, integration key) or + Opsgenie (region, API key, optional responder team) → Add connector → Test. PagerDuty’s test sends a resolve for a non-existent key, so nobody is paged.
  4. Add an automatic rule at severity critical with the action “Page the on-call”. One page per incident; Undo resolves or closes it, and marking the incident “no issue” does the same automatically.

Severity maps critical → PagerDuty critical / Opsgenie P1, high → error / P2, medium → warning / P3. The page carries the sender, mailbox, subject, workspace, trust score and a console link.

10. Rules#

A rule is: connector, action, when it runs, minimum severity, optional incident kinds, and dry run. Two triggers:

Suggested ruleTriggerSeverityKindsAction
Block confirmed phish senders tenant-wideOn Confirmhigh(any)Block the sender for the whole tenant (Microsoft)
Junk confirmed phish sendersOn Confirmhigh(any)Junk sender (Microsoft) or Spam sender (Google), affected mailbox
Stop the sender at the gatewayOn Confirmhigh(any)Mimecast, Barracuda or FortiMail: block the sender; Harmony Email or Cisco Threat Defense: quarantine or junk what was delivered
Pull the message from every mailboxOn Confirmhigh(any)Send to Proofpoint TRAP
Junk executive impersonators for everyoneOn Confirmcriticalexec_impersonationJunk sender, all members
Contain a compromised userOn Confirmhighuser_report, scan_dangerousSign out everywhere + require password change (Entra, Google or Okta)
Alert the SOC channelAutomatichigh(any)Post an incident card (Slack or Teams)
Page the on-callAutomaticcriticalexec_impersonationPage the on-call (PagerDuty or Opsgenie)
Instant containment of impersonationAutomaticcriticalexec_impersonationJunk sender, all members (dry run for the first week)

Kinds are matched by substring against the incident kind: user_report, user_report_false_positive, auto_forward, scan_dangerous, scan_suspicious, exec_impersonation, exec_review. Leave blank for any kind.

11. Working an incident#

  1. Open the incident. The Response panel at the bottom lists what Confirm will run, offers each available action as a button, and shows actions already taken.
  2. Click Confirm issue. The Confirm rules run and their results appear in the same click; dry-run rules log what they would have done.
  3. Use the buttons for one-off actions with no rule, for example junking a sender for all members when the rule only covers the affected mailbox.
  4. Undo an action from the panel or from the Response actions log; the log keeps the original result and who undid it.

12. Gateway and EDR blocking: where it lives#

SafeToOpen can also push confirmed URLs and domains to Defender for Endpoint, Cisco Umbrella, Zscaler Internet Access, Netskope, Cloudflare Zero Trust, CrowdStrike Falcon and to a hosted blocklist that firewalls pull. Those connectors appear in the Browser Security console, not here, for one reason: an Email Security incident records the sender and the verdict, never the message body or its links, so there is no URL to block. When someone clicks a link in a flagged message, Browser Security sees the page and records its own incident with the URL; that is where the gateway and EDR rules fire.

Details for each gateway and EDR connector: https://plus.safetoopen.com/docs/browser-security/integrations/response-actions.html.

13. Safety and audit#