Obsidian SuiteDocumentation
Obsidian Suite: all chapters

Docs / Obsidian Suite / Reference

Detection rule reference

Every finding that can appear in a message's Why list. Points add up to the message score; see How filtering works. Several rules name the specific item that triggered them (the domain, file or phrase) in their description on the message page.

Jump to: Allow / block lists · Sender authentication (SPF, DKIM, DMARC, ARC) · Spamhaus reputation · Antivirus · Attachments · Links · Impersonation · Content and headers · Bayes (learning) · AI review

Allow / block lists

RulePointsMeaning
ALLOWLIST0Sender matched an allow-list entry. Spam scoring is bypassed (but not virus checks or a DMARC p=reject failure).
BLOCKLIST+100Sender, domain or IP matched a block-list entry; the 'blocked' action applies.

Sender authentication (SPF, DKIM, DMARC, ARC)

RulePointsMeaning
SPF_PASS-0.3The connecting server is authorised by the envelope sender's SPF record.
SPF_FAIL+3SPF hard fail (-all): the connecting server is explicitly NOT allowed to send for that domain.
SPF_SOFTFAIL+1SPF soft fail (~all): the domain does not vouch for this server.
SPF_PERMERROR+0.5The sender's SPF record is broken.
DKIM_INVALID+1.5The message carries DKIM signatures but none verify (altered in transit or forged).
DMARC_PASS-1SPF or DKIM passed and aligned with the From domain.
DMARC_FAIL_REJECT+7DMARC failed and the From domain publishes p=reject - a likely spoof.
DMARC_FAIL_QUARANTINE+5DMARC failed and the domain publishes p=quarantine.
DMARC_FAIL_NONE+1.5DMARC failed; the domain only monitors (p=none).
DMARC_FAIL_ARC_PASS+0.5DMARC failed but a valid ARC chain shows a trusted forwarder (mailing list, M365) changed the message.
AUTH_NONE+1No SPF pass, no DKIM and no DMARC record at all - an unauthenticated sender.
SPOOF_INTERNAL_DOMAIN+6From claims one of YOUR domains but arrived from outside without passing authentication.

Spamhaus reputation

RulePointsMeaning
SPAMHAUS_ZEN_SBL+6Connecting IP is on the Spamhaus Block List (known spam source).
SPAMHAUS_ZEN_CSS+5Connecting IP is on the CSS list (snowshoe / low-reputation bulk sender).
SPAMHAUS_ZEN_XBL+7Connecting IP is a compromised or botnet-infected host.
SPAMHAUS_ZEN_DROP+10IP is in a hijacked / criminal netblock (DROP).
SPAMHAUS_ZEN_PBL+3IP is an end-user address that should send through its provider, not directly (only scored on the connecting hop).
SPAMHAUS_DBL_SPAM+5A sender, HELO, rDNS or link domain is a known spam domain.
SPAMHAUS_DBL_PHISH+8 (x1.3 for links)A domain in the message is a known phishing domain.
SPAMHAUS_DBL_MALWARE+8 (x1.3 for links)A domain serves malware.
SPAMHAUS_DBL_BOTNET+8A domain is a botnet command-and-control server.
SPAMHAUS_DBL_ABUSED_SPAM+2A legitimate but abused domain seen in spam.
SPAMHAUS_DBL_ABUSED_REDIRECTOR+2.5An abused URL shortener / redirector.
SPAMHAUS_DBL_ABUSED_PHISH+5A legitimate domain currently hosting phishing.
SPAMHAUS_DBL_ABUSED_MALWARE+5A legitimate domain currently hosting malware.
SPAMHAUS_DBL_ABUSED_BOTNET+5A legitimate domain abused for botnet C&C.
SPAMHAUS_ZRD+2 to +3.5Zero Reputation Domain: the domain was first seen less than 24 hours ago.
SPAMHAUS_HBL_EMAIL+6The sender / Reply-To address itself is on the Hash Blocklist.
SPAMHAUS_HBL_FILE_MALICIOUS+12An attachment's SHA-256 is known malware (treated as a virus).
SPAMHAUS_HBL_FILE_SUSPICIOUS+4An attachment's hash is suspicious.
SPAMHAUS_HBL_CRYPTOWALLET+5A cryptocurrency wallet in the body is known for fraud.

IP rules score 60% of their points when the listed address is an earlier relay rather than the connecting server. Domains checked: header From, envelope sender, Reply-To, HELO, reverse DNS and up to 60 link hosts.

Antivirus

RulePointsMeaning
AV_VIRUS+50ClamAV found a virus / malware signature. The message is a virus verdict (admin-only).
AV_CONTENT_SIG+4 / +6A Sanesecurity / unofficial content signature (spam or phishing, not a virus) matched.
AV_SCAN_ERROR+0.5ClamAV could not fully scan part of the message (e.g. encrypted or oversized container).
AV_TOO_LARGE+0.5Message larger than the ClamAV size limit; not virus scanned.

The antivirus is ClamAV with additional third-party content signatures.

Attachments

RulePointsMeaning
ATTACH_BLOCKED_EXT+8Attachment type is on the policy's blocked list (attachment policy violation).
ATTACH_DOUBLE_EXT+4Disguised double extension such as invoice.pdf.exe.
ATTACH_NAME_TRICK+5File name uses right-to-left override or whitespace padding to hide the real extension.
ATTACH_EXEC_DISGUISED+10The content is an executable (PE/ELF/LNK) whatever the name says.
ATTACH_TYPE_MISMATCH+3The file claims a harmless type (e.g. .pdf) but is really an archive or HTML.
ATTACH_HTML+1.5An HTML file is attached (common phishing wrapper).
ATTACH_HTML_SMUGGLING+7HTML attachment builds a file in the browser (atob/Blob/createObjectURL) - HTML smuggling.
ATTACH_HTML_CREDFORM+7HTML attachment contains a login / password form.
ATTACH_OFFICE_MACRO+4 and upOffice document with VBA macros; more points for auto-run and suspicious keywords.
ATTACH_OLE_OBJECT+2Office document embeds an OLE object.
ATTACH_RTF_EXPLOIT+6RTF with auto-updating OLE objects (Equation Editor exploit pattern).
ATTACH_ONENOTE+5OneNote file (a common malware delivery vehicle).
ATTACH_DISK_IMAGE+6ISO / IMG disk image (used to bypass Mark-of-the-Web).
ARCHIVE_ENCRYPTED+5Password-protected archive that cannot be scanned.
ARCHIVE_PASSWORD_IN_BODY+4The password for that archive is in the message - classic malware delivery.
ARCHIVE_SINGLE_EXEC+3Archive containing a single blocked-type file.
ARCHIVE_TOO_DEEP+3Archives nested deeper than the policy allows.
ARCHIVE_CORRUPT+1.5A ZIP that cannot be opened.
ARCHIVE_7Z+17-Zip archive (contents are not unpacked; ClamAV still scans it).
ARCHIVE_RAR+1RAR archive (contents are not unpacked; ClamAV still scans it).
PDF_JAVASCRIPT+3PDF contains JavaScript.
PDF_LAUNCH+6PDF has a /Launch action that can run programs.
PDF_EMBEDDED_FILE+2PDF embeds another file.
PDF_OPENACTION+1PDF runs an action when opened.
PDF_XFA+1PDF uses XFA forms.
PDF_LINK_LURE+1.5A small PDF whose content is essentially one link (phishing lure).
RulePointsMeaning
URL_DATA_URI+3A link is a data: URI carrying its own payload.
URL_JAVASCRIPT+3A javascript: link.
URL_IP_HOST+2.5Link to a raw IP address instead of a domain.
URL_PUNYCODE+2Internationalised (punycode) domain - often a homoglyph lookalike.
URL_SHORTENER+1URL shortener hides the real destination.
URL_FREE_HOSTING+1.5Link to free / anonymous hosting frequently used for phishing pages (web.app, pages.dev, ipfs, blob storage...).
URL_SUSPICIOUS_TLD+0.8Domain in a high-abuse top-level domain.
URL_USERINFO+3URL uses user@host syntax to disguise the real host.
URL_BRAND_IMPERSONATION+3A link host uses a brand name (microsoft, paypal, docusign...) but is not that brand.
URL_LOOKALIKE_ORG+5A link domain imitates one of YOUR domains.
URL_TEXT_MISMATCH+3The visible link text shows one domain but the link goes to another.
URL_FORM_EXTERNAL+3An HTML form in the message posts to an external site.
URL_REDIRECTOR+1.5An open redirector link forwards to another site.
URL_MANY_HOSTS+0.5More than 25 different link hosts.

Impersonation

RulePointsMeaning
VIP_DISPLAY_NAME+6External sender uses the display name of one of your VIP users.
DISPLAY_NAME_ADDRESS_MISMATCH+3Display name contains an email address different from the real sender.
DISPLAY_NAME_ORG_DOMAIN+2.5External sender puts your domain name in the display name.
DISPLAY_NAME_MIXED_SCRIPT+2Display name mixes alphabets (e.g. Cyrillic letters in a Latin name).
DISPLAY_NAME_BRAND+2.5Display name claims a brand the sending domain does not belong to.
FROM_LOOKALIKE_ORG+7Sender domain imitates one of your domains (typo, homoglyph or added word).
FROM_LOOKALIKE_BRAND+5Sender domain imitates a well-known brand's domain.
REPLYTO_MISMATCH+1 / +2Replies would go to a different domain than the sender (+2 when it is a free-mail account).
FIRST_TIME_SENDER+0.3First message from this address to the organization (no earlier clean mail, never written to).

Content and headers

RulePointsMeaning
HDR_NO_DATE+1Missing Date header.
HDR_DATE_FUTURE+1.5Date header more than a day in the future.
HDR_DATE_PAST+0.8Date header more than a week old.
HDR_DATE_INVALID+1Date header cannot be parsed.
HDR_NO_MESSAGE_ID+1.2Missing Message-ID header.
HDR_NO_FROM+2.5Missing or unparseable From address.
HDR_UNDISCLOSED+0.7No visible recipients (BCC blast).
HDR_MANY_RECIPIENTS+0.8More than 30 visible recipients.
HDR_SPAMWARE_MAILER+2.5X-Mailer names a known bulk-spam tool.
SUBJ_EMPTY+0.6Empty subject.
SUBJ_ALL_CAPS+1Subject written entirely in capitals.
SUBJ_EXCITED+0.7Excessive punctuation in the subject.
SUBJ_FAKE_REPLY+1.5Subject starts with RE:/FW: but the message is not part of any thread.
SUBJ_HAS_RECIPIENT+0.7Subject contains the recipient's name (personalised lure).
BULK_MAIL+1Newsletter / marketing mail (List-Unsubscribe, ESP headers, Precedence: bulk). Drives the 'bulk' verdict.
BODY_PHISH_LANGUAGEup to +4.5Credential-phishing phrases (verify your account, password expires, shared a document...).
BODY_BEC_LANGUAGEup to +6Payment / urgency request phrases (wire transfer, gift cards, change of bank details...). Weighted up for free-mail, VIP-name or Reply-To mismatch.
BODY_SCAM_LANGUAGEup to +5Scam phrases (inheritance, lottery, crypto investment...).
BODY_SEXTORTION+6Sextortion / extortion wording.
BODY_ZERO_WIDTH+2Many invisible zero-width characters (filter evasion).
BODY_MONEY_AMOUNTS+0.8Many large money amounts.
HTML_HIDDEN_TEXT+2Lots of hidden HTML text (padding to fool filters).
HTML_IMAGE_ONLY+1.5Image-only message with almost no text.
HTML_SCRIPT+2HTML body contains script.
HTML_FORM+2.5HTML body contains a form.
HTML_FRAGMENT+0.4HTML part without html/body structure.
QR_PHISH+3Asks the reader to scan a QR code (quishing moves the link to a phone).
CALLBACK_PHISH+4Billing wording (invoice, charge, renewal, refund, unauthorized) next to a toll-free number the reader is asked to call (callback / TOAD scam).
BEC_SHORT_OPENER+2Short free-mail message making a request - the typical BEC opener.
MIME_MALFORMED+1Broken MIME structure.

Bayes (learning)

RulePointsMeaning
BAYES_99+3.5Bayes spam probability at least 99%.
BAYES_95+2.5Bayes spam probability 95-99%.
BAYES_80+1Bayes spam probability 80-95%.
BAYES_20-0.3Bayes ham probability 80-95%.
BAYES_05-1Bayes ham probability 95-99%.
BAYES_00-2Bayes ham probability at least 99%.

AI review

RulePointsMeaning
AI_CLEANdown to -2.5The model judged the message clean with high confidence. Never delivers mail the rules would quarantine or reject.
AI_CLEAN_WEAK0The model said clean, but not confidently (no score change).
AI_SPAMup to +7The model judged it spam (risk x confidence).
AI_SCAMup to +7The model judged it a scam (advance fee, sextortion, crypto fraud).
AI_PHISHup to +10The model judged it phishing.
AI_BECup to +10The model judged it business email compromise.
AI_MALWAREup to +10The model judged it a malware lure.

AI points are a base (10 for phishing, BEC and malware; 7 for spam and scam) multiplied by the model's risk (0-100, as a fraction) and by its confidence.