Open scoring
How we score
Gugu starts at 10 and subtracts check penalties. The result is rounded to one decimal and never falls below 0.
Total = max(0, 10 + Σ category penalties)
Blocklists affect at most -3, links -1.5, and SpamAssassin -5. The same issue is never scored twice by both SpamAssassin and a Gugu check.
| Check | Status | Penalty |
|---|---|---|
| SPF | fail / permerror | -1.5 |
| SPF | softfail / neutral | -0.5 |
| SPF | no record | -1.0 |
| DKIM | no signature | -1.0 |
| DKIM | could not verify | -1.5 |
| DMARC | no record | -0.5 |
| DMARC | fail | -1.0 |
| rDNS | no PTR | -1.5 |
| rDNS | FCrDNS mismatch | -0.5 |
| HELO | does not resolve / not a domain | -0.3 |
| TLS | no STARTTLS | -0.5 |
| Blocklist | major list | -1.0 each |
| Blocklist | minor list | -0.3 each |
| Content | no Message-ID | -0.5 |
| Content | image without alt | -0.5 |
| Content | forbidden tag | -1.0 |
| Content | image-only | -0.5 |
| Content | URL shortener | -0.5 |
| Content | no List-Unsubscribe | -0.3 |
| Content | no one-click (when header exists) | -0.2 |
| Link | broken link | -0.3 each |



