ObsidianDocumentation Sign in

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 report the specific item that triggered them (the domain, file or phrase) in their description on the message page.

Jump to: lists · auth · spamhaus · antivirus · attachments · urls · impersonation · heuristics · bayes · ai

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 (DQS key required).
SPAMHAUS_HBL_EMAIL+6The sender / Reply-To address itself is on the Hash Blocklist (DQS key required).
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 IP 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. ZRD and HBL need a DQS key.

Antivirus (ClamAV)

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.

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.

Links

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+4Fake invoice / subscription asking the reader to call a phone number (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.
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 = base (10 for phishing / BEC / malware, 7 for spam / scam) x risk/100 x (0.4 + 0.6 x confidence) x the llm.weight setting.