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.

emailsecurityphishinggmaildeterministicno-ai

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 — {{assess.verdict}}"
      body: "{{assess.report}}"
      userNames: "<<NOTIFY_PUBLISHER>>"

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

What it won't do