Methodology

How PostureCheck Works

PostureCheck runs checks across email security, SSL certificates, and HTTP security headers for any domain. Each check is based on published standards from the IETF, W3C, NIST, or OWASP. This page explains what we check, how we score it, and where each standard comes from.

Scoring

The overall security score is an average of three component scores: Email Security (0–100), SSL Certificate (0 or 100), and Security Headers (0–100). A score of 80 or above is considered Secure. 50–79 is At Risk. Below 50 is Vulnerable.

Email Security is scored across three records — SPF (up to 33 points), DMARC (up to 33 points, weighted by policy strength), and DKIM (34 points). Security Headers awards 20 points per header, across five headers.

Email Security

Sender Policy Framework. We check for a valid SPF TXT record at the root domain. We also inspect the all mechanism: -all (hardfail) scores higher than ~all (softfail). We also warn if the record exceeds 10 DNS lookups, which causes SPF to break per the RFC.

DomainKeys Identified Mail. We check for DKIM public key records using the MX records to identify the email provider and try provider-specific selectors first (e.g. google for Google Workspace, selector1/selector2 for Microsoft 365), followed by a list of common selectors. We also parse the key type and size — 1024-bit RSA keys are flagged as weak; 2048-bit or Ed25519 are considered good. Because DKIM selectors are not publicly discoverable, a selector not found is shown as a warning rather than a hard failure when DMARC enforcement is in place. One exception: a domain publishing v=spf1 -all with no authorised senders, alongside an enforcing DMARC policy, is explicitly declaring that it sends no email. That is a complete and correct configuration for a parked or web-only domain, so DKIM is marked not applicable and scored as a pass rather than a failure.

Domain-based Message Authentication, Reporting and Conformance. We check for a DMARC TXT record at _dmarc.domain and parse the policy: reject scores highest, followed by quarantine, then none. We also surface the reporting address (rua) so you can confirm reports are being collected. For subdomains, we follow the DMARC inheritance model per the RFC. Note that RFC 7489 was obsoleted in May 2026 by RFC 9989 (core protocol), RFC 9990 (aggregate reporting) and RFC 9991 (failure reporting) — DMARC now has formal IETF Standards Track status. The record tags are unchanged; the main difference is that organisational domain discovery now uses a DNS tree walk rather than the Public Suffix List.

Mail Transfer Agent Strict Transport Security. MTA-STS tells sending mail servers that your domain requires TLS-encrypted delivery — and that they should refuse to deliver if TLS is not available or the certificate is invalid. We check for a valid TXT record at _mta-sts.domain and fetch the policy file at https://mta-sts.domain/.well-known/mta-sts.txt. We parse the mode: enforce (email rejected if TLS fails — best) scores highest, testing is monitoring-only and shown as a warning. MTA-STS is not yet widely deployed and does not affect the email security score.

SSL Certificate

TLS / SSL

NIST SP 800-52 Rev 2 ↗

We open a TLS connection to port 443 and check whether the certificate is valid and trusted, the number of days until expiry (warning at under 14 days), the issuing Certificate Authority, and the TLS protocol version in use. TLS 1.0 and 1.1 are deprecated. TLS 1.2 is the minimum acceptable; TLS 1.3 is preferred. For domains that redirect to another domain, we check the SSL certificate of the redirect destination.

CAA Records

RFC 8659 ↗

Certification Authority Authorization. CAA DNS records specify which Certificate Authorities are permitted to issue SSL/TLS certificates for your domain. Without CAA records, any CA in the world can issue a certificate for your domain — a meaningful risk if a CA is compromised or makes an error. We check for CAA records using DNS CAA lookup and list the permitted issuers. CAA is not yet widely deployed and does not affect the SSL score.

Security Headers

We make an HTTPS GET request to the domain (following redirects) and inspect the response headers. Each of the five headers below is worth 20 points. The full reference for all five is the OWASP Secure Headers Project.

Strict-Transport-Security

RFC 6797

Forces browsers to always use HTTPS for your domain, preventing protocol downgrade attacks. Defined in RFC 6797 and required by NIST SP 800-52.

Content-Security-Policy

OWASP / W3C

Controls which resources the browser is allowed to load, blocking cross-site scripting (XSS) and data injection attacks. Defined by the W3C and recommended by OWASP.

X-Frame-Options

RFC 7034

Prevents your site from being embedded in iframes on other domains, blocking clickjacking attacks. Defined in RFC 7034. Can also be set via CSP frame-ancestors.

X-Content-Type-Options

OWASP

Prevents browsers from guessing (sniffing) the content type of a response, which can be exploited to execute malicious scripts. Recommended by OWASP.

Referrer-Policy

OWASP / W3C

Controls how much referrer information is sent when a user clicks a link from your site. Prevents leaking sensitive URLs to third parties. Defined by the W3C.

Limitations

PostureCheck checks externally observable configuration only — it cannot assess firewall rules, access controls, application-layer security, or internal infrastructure. DKIM selectors are not publicly discoverable, so DKIM detection depends on a library of known selectors; custom selectors may be missed. Security header checks reflect the response to a single GET request and may not capture headers set on specific paths or authenticated pages.

Check your domain for free

DMARC · SPF · DKIM · SSL · Security Headers

Scan Now →