What an SPF record says
It is a list, published in your DNS, of the servers allowed to send email using your domain. A receiving server reads it and compares it against where the message actually came from. The list ends with a rule that says what to do about everything not on it.
The ending is the whole record
The last rule in the record is the one about everybody not listed, and there are four of them. They are not two strict ones and two useless ones: `~all` is what a domain publishes while it reads its reports, and receivers do act on it. What this check reads is which of the four you publish, and it reports a permissive ending separately from a missing record rather than treating the two as the same problem.
- -all: strict, and the goal
- ~all: soft fail, asks receivers to accept but mark. The normal state while reading DMARC reports
- ?all: neutral, which asks a receiver for no particular treatment
- +all: accepts everything, worse than having no record
A domain that sends no email still needs one
If a domain has no mail service, publish v=spf1 -all and a DMARC record at reject. An unused domain with no records is a free identity for anyone who wants one, and parked domains are targeted precisely because nobody is watching them.