InTouch Hub · Blue Isle Software

Email Authenticity Check

Judge whether a Gmail message is genuine or phishing from its SPF/DKIM/DMARC results, From/Return-Path/Reply-To/DKIM alignment, and link domains. Deterministic — no AI.

Provided free and as is, without warranty of any kind — including merchantability, fitness for a particular purpose, and the accuracy or completeness of any result. See the licence. You are responsible for checking what this produces before relying on it.

authenticationconformancedeterministicdkimdmarcdomaindomainkeysemailframeworkgmailidentifiedmailmessageno-aiorderphishingpolicyspf

Email Authenticity Check

Judge whether a Gmail message is genuine or phishing — the same forensic checks as the phishing-check job, but deterministic Python instead of AI. Zero LLM tokens, zero per-run cost, identical answer every time for the same headers.

Why no AI works here

The reliable signals are facts in the headers, not judgment calls about tone:

Because every input is a discrete header fact, a fixed rule set reproduces what the AI was doing — without the cost or variability.

Input

Field Required Description
messageJson yes The JSON from gmail get <id> --format full (JSON output) — must include the raw headers (message.payload.headers) and decoded body. Typically piped from a google_workspace fetch task.

A raw Gmail API Message resource (payload.headers at the top level) is also accepted.

Output (published fields)

verdict (GENUINE / SUSPICIOUS / PHISHING), confidence (high/medium/low), spf, dkim, dmarc, fromDomain, returnPathDomain, replyToDomain, dkimDomain, linkDomains, reasons, recommendedAction, authentic (true/false), and report — a ready-to-send text summary (checks table + reasoning + recommended action).

Verdict rules (transparent, in order)

  1. Any auth check explicitly fails (dkim=fail / dmarc=fail / spf=fail) → PHISHING.
  2. No Authentication-Results header at all → SUSPICIOUS (low confidence — nothing to verify).
  3. Auth passes and the From domain aligns with DKIM d= or Return-Path and no Reply-To mismatch / shortener → GENUINE (high if both DKIM and DMARC pass).
  4. Auth passes but a Reply-To mismatch (free webmail) or a URL shortener is present → SUSPICIOUS.
  5. Anything else → SUSPICIOUS (low confidence).

The recommended action never tells you to click a link — if an action is legitimate, it tells you to navigate to the provider directly.

Use it in a job

Pair it with a google_workspace fetch and a message/notify step — the AI-free counterpart of the phishing-check job:

{
  "tasks": [
    {
      "name": "fetch",
      "tool": "google_workspace",
      "credential": "<<GOOGLE_WORKSPACE_CREDENTIAL>>",
      "properties": {
        "service": "gmail",
        "operation": "get",
        "args": "<<MESSAGE_ID>> --format full",
        "outputFormat": "json"
      }
    },
    {
      "name": "assess",
      "tool": "email-authenticity-check",
      "properties": {
        "messageJson": "{{fetch.output}}"
      }
    },
    {
      "name": "notify",
      "tool": "message",
      "properties": {
        "subject": "Authenticity check \u2014 {{assess.verdict}}",
        "body": "{{assess.report}}",
        "userNames": "<<NOTIFY_USER>>"
      }
    }
  ]
}

Read-only Gmail scope is sufficient — the tool only reads headers and reports.

What it won't do

Publishes

The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.

Input Properties

Every property this tool accepts, from its own tool.iml.

Property Type Required Default Description
messageJson string yes — The Gmail message JSON from gmail get <id> --format full (JSON output) — must include the raw headers (message.payload.headers) and decoded body. Typically piped from a google_workspace fetch task.