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.