# `no_spf`: a business domain publishes no SPF record

The domain has no SPF policy in DNS, which a maintained business domain almost always has; free providers are exempt because theirs is known.

- Weight: +10
- Dataset: live-dns
- Read from: `has_spf`
- Verdict reasons it comes with: none — a score-only signal

has_spf is read only once the domain resolves: false is a checked negative, null a failed lookup, and the weight applies only when free_provider is false.

It reads from has_spf and comes with no verdict reason.

**What to do.** A weak signal on its own; on a domain check it is the first thing a sender should fix.

```json
{
    "email": "mia@acme.example",
    "deliverable": "deliverable",
    "has_spf": false,
    "free_provider": false,
    "risk_signals": [
        {
            "signal": "no_spf",
            "weight": 10,
            "dataset": "live-dns"
        }
    ]
}
```

Reference: https://spaw.co/docs/signals/no_spf
