Email spoofing check

Runs the SPF and DMARC checks and reads the DMARC policy that applies: none, partial (enforced with gaps such as pct below 100 or a subdomain policy that works out as none) or full. It describes the published policy, not whether forged mail gets through: the receiving server decides, and DKIM is not assessed.

Updated 2026-10-28

Free, no account, nothing is stored

What this tool checks

The SPF and DMARC records are looked up as the SPF check and the DMARC check do, and the DMARC policy that applies to the domain decides the level:

  • None: no valid DMARC policy, or one that works out as none.
  • Partial: quarantine or reject, but with pct below 100 or a subdomain policy that works out as none.
  • Full: quarantine or reject for the domain and its subdomains, for all mail.

How to read the result

The level comes with the effective policy, the subdomain policy, pct, test mode and the SPF all qualifier. The findings are those of the SPF and DMARC checks, plus one for open subdomains.

Limitations

  • DKIM keys are not looked up, because their selectors are not published; the DKIM selector finder tries common ones.
  • No test message is sent: the result is the policy the domain publishes.

Use it from code

API reference for Email spoofing check

curl -i "https://api.lookproof.dev/v1/mail/spoofable?domain=example.com"

A request without payment is answered with 402 Payment Required and the exact price. See the API reference.

Limits

InputDomain
Deadline10 seconds
FreshnessUp to 5 minutes, never longer than the record TTL
Price$0.01 per check

Findings this tool can report

Check (1)
DMARC (12)
DNS (3)
SPF (13)
Spoof (1)

Frequently asked questions

Does full mean nobody can forge my domain?

No. Full means the published DMARC policy asks receivers to quarantine or reject mail that fails DMARC, for the domain and its subdomains. Each receiving server decides for itself, and DKIM is not assessed, so the tool describes the policy, not what happens to a given message.

What counts as partial?

An enforcing policy with a gap: pct below 100, which older receivers still read, or a subdomain policy that works out as none (SPOOF_SUBDOMAINS_UNPROTECTED). The gaps are listed in the result.

How does test mode change the result?

RFC 9989 lets a record ask for test mode with t=y; receivers then apply one step less, so reject acts as quarantine and quarantine as none. The effective policies in the result already include that step.