SPF.Guru

SPF checker

Evaluate a domain's SPF record the way a receiving mail server does. Every mechanism, DNS lookup and macro expansion is shown, so you can see not just the verdict but where it came from.

A bare domain works too

IPv4 or IPv6

Defaults to the sender domain

Evaluated instead of the published record, so you can test one before publishing it. Includes inside it still resolve live.

What this checks

A receiving mail server does not read your SPF record the way a person does. It takes the connecting IP address and the envelope sender domain, walks the record left to right, and stops at the first mechanism that matches. This page does exactly that and shows every step, so you can see which mechanism decided the outcome rather than guessing from a pass or fail.

Give it the sending IP address and a sender. A bare domain works; it becomes postmaster@ that domain, which is what a bounce would use. The result URL is shareable, so it can go straight into a ticket.

Reading the result

SPF has seven possible outcomes, and only two of them mean what people usually assume.

A pass is not the same as DMARC alignment

SPF authenticates the envelope sender, the address in MAIL FROM, which recipients never see. DMARC additionally requires that domain to align with the visible From: header. Mail relayed through a bulk sender often passes SPF for the vendor's own bounce domain while failing DMARC, because the two domains do not match. If your aggregate reports show SPF passing but DMARC failing, alignment is where to look, not the record.

Why forwarded mail fails here

A forwarding server is not in the original domain's record, so on the second hop SPF fails legitimately. Nothing is broken; this is a known limitation of the protocol. It is also the clearest argument for configuring DKIM, which survives forwarding, so DMARC has a second way to pass.

Things worth testing

To see where a record's lookups are going rather than testing one server, use the include tree. To generate a replacement record, check the domain on the home page.