InboxGrade

SPF redirect loop

Your SPF record contains a redirect= chain that loops back to itself, directly or through nested includes.

Impact — High impact

A loop causes PermError at the receiver. Same effect as too-many-lookups: SPF evaluation fails entirely, DMARC via SPF fails, mail increasingly goes to Junk.

What causes it

  1. yourdomain.com has redirect=spf.yourdomain.com, and spf.yourdomain.com has redirect=yourdomain.com.
  2. A deeper chain where domain A's SPF includes B, which includes C, which redirects back to A.
  3. A typo in your redirect= target that happens to be a domain whose SPF includes you.

How to fix it

Step 1: Trace the chain manually

Start with your SPF record and follow every include: and redirect= target with dig TXT. Map the full dependency graph on paper. The loop will be visually obvious.

Step 2: Replace redirect= with include:

In 99% of cases, redirect= is the wrong mechanism. Use include: instead — it does what you want (fetch another domain's SPF) without the fragile pointer semantics.

Step 3: Flatten if the chain is too deep

Services like EasyDMARC and Scrutinize can resolve your entire SPF tree into a static list of IPs, eliminating the chain entirely.

Fixed it? Run a fresh test to confirm.

Test my inbox →

Related errors