GovLeaderboard

Dodge County

Seat: Mantorville21,376 people www.dodgecountymn.gov @dodgecountymn.gov

F

51/100

#47 of 87 in Minnesota

Email

42/100

3 of 8 checks passed

Website

69/100

7 of 11 checks passed

Domain

40/100

2 of 5 checks passed

What to fix first

  1. +15Set DMARC to p=reject
  2. +6Turn on DNSSEC
  3. +5Send an HSTS header for a year
  4. +4Turn on MTA-STS in enforce mode
  5. +3Add a CAA record
  6. +3Block fake mail from made-up subdomains

Plus 6 smaller fixes below.

Email42/100

Stops people from sending fake email that looks like it came from the county.

Partly Fake email gets blocked (DMARC)DMARC is only watching (p=none). Fake email that uses the county's address still lands in inboxes. 5/20

Why it matters. A DMARC policy tells Gmail, Outlook and every other mail service what to do with email that claims to be from the county but isn't. With p=reject the fake mail is thrown away. With p=quarantine it goes to spam. With p=none nothing happens to it.

How to fix it. Publish a TXT record at _dmarc.dodgecountymn.gov. Start with v=DMARC1; p=none; rua=mailto:dmarc@dodgecountymn.gov and read the reports for a few weeks. Once every real sender passes, change p=none to p=quarantine, then to p=reject.

What we saw

_dmarc.dodgecountymn.gov: v=DMARC1;p=none;pct=80;rua=mailto:DMARCReports@dodgecountymn.gov;ruf=mailto:DMARCReports@dodgecountymn.gov;ri=86400;aspf=r;adkim=r;fo=1;

How this check works

Fail Made-up subdomains are covered tooMail from made-up subdomains isn't blocked because the main policy is none. 0/3

Why it matters. Scammers can send from addresses like billing.dodgecountymn.gov that the county never set up. The DMARC record decides what happens to that mail with its sp= setting.

How to fix it. Subdomains follow the main p= policy unless the record says otherwise. Move p= to quarantine or reject, and leave out sp=none (or set sp=reject).

What we saw

_dmarc.dodgecountymn.gov: v=DMARC1;p=none;pct=80;rua=mailto:DMARCReports@dodgecountymn.gov;ruf=mailto:DMARCReports@dodgecountymn.gov;ri=86400;aspf=r;adkim=r;fo=1;

How this check works

Pass The county gets DMARC reportsThe county collects DMARC reports. 3/3

Why it matters. Reports show every server sending mail in the county's name, real or fake. They are how the county knows it is safe to turn on blocking.

What we saw

_dmarc.dodgecountymn.gov: v=DMARC1;p=none;pct=80;rua=mailto:DMARCReports@dodgecountymn.gov;ruf=mailto:DMARCReports@dodgecountymn.gov;ri=86400;aspf=r;adkim=r;fo=1;

How this check works

Partly Approved mail servers are listed (SPF)SPF lists the approved servers but only calls other servers suspicious (~all) instead of fake (-all). 6/8

Why it matters. SPF lists the servers allowed to send the county's email. Ending it with -all tells receivers that every other server is fake.

How to fix it. Publish one TXT record on dodgecountymn.gov that starts with v=spf1, lists each service that sends your mail (for Microsoft 365, include:spf.protection.outlook.com) and ends with -all.

What we saw

v=spf1 mx a ptr include:spf.zixsmbhosted.com include:spf.protection.outlook.com ip4:172.20.10.12 ip4:151.111.33.6 ip4:151.111.33.1 ~all

How this check works

Pass SPF stays under the 10 lookup limitSPF needs 5 of the 10 allowed lookups. 2/2

Why it matters. Mail services stop reading an SPF record after 10 lookups. Past that, the whole record counts as broken and stops protecting anything.

What we saw

v=spf1 mx a ptr include:spf.zixsmbhosted.com include:spf.protection.outlook.com ip4:172.20.10.12 ip4:151.111.33.6 ip4:151.111.33.1 ~all

How this check works

Pass Outgoing mail is signed (DKIM)Found DKIM signing keys (selector1). 3/3

Why it matters. DKIM adds a signature to every message, so receivers can tell it really came from the county and wasn't changed on the way. Keys live under names the county picks, so this check only looks at the common ones. Not finding a key never lowers the score.

What we saw

selector1._domainkey.dodgecountymn.gov

How this check works

Fail Incoming mail must be encrypted (MTA-STS)dodgecountymn.gov has no MTA-STS record, so other servers may deliver mail to it without encryption. 0/4

Why it matters. Without MTA-STS, someone in the middle of the network can quietly strip the encryption off mail sent to the county and read it. MTA-STS in enforce mode tells sending servers to refuse that.

How to fix it. Host a policy file at https://mta-sts.dodgecountymn.gov/.well-known/mta-sts.txt with mode: enforce and your MX hosts, then publish TXT _mta-sts.dodgecountymn.gov "v=STSv1; id=1". Start with mode: testing if you want to watch first.

How this check works

Fail The county hears about failed encrypted deliveryNo TLS report record, so the county never hears when secure delivery fails. 0/2

Why it matters. TLS reports tell the county when other servers could not deliver mail to it securely, which can mean a broken certificate or an attack.

How to fix it. Publish TXT _smtp._tls.dodgecountymn.gov "v=TLSRPTv1; rua=mailto:tlsrpt@dodgecountymn.gov".

How this check works

Website69/100

Keeps visits to the county website private and hard to tamper with.

Pass The website uses HTTPS with a valid certificateThe website loads over HTTPS with a trusted certificate. 10/10

Why it matters. HTTPS keeps what visitors read and type on the site private, and proves they reached the real county site. A broken or expired certificate shows people a scary warning.

What we saw

https://www.dodgecountymn.gov/

How this check works

Pass http:// visitors are sent to https://http:// visitors are sent to the https:// site. 4/4

Why it matters. People still type addresses without https. If the plain version of the site loads, those visits travel unprotected.

What we saw

http://www.dodgecountymn.gov/ -> https://www.dodgecountymn.gov/

How this check works

Fail Browsers are told to always use HTTPS (HSTS)The site doesn't send an HSTS header, so browsers may try the insecure version first. 0/5

Why it matters. HSTS makes browsers remember to use the secure site, so nobody on public Wi-Fi can trick them into the insecure one first.

How to fix it. Send the header Strict-Transport-Security: max-age=31536000 on every HTTPS page. Add includeSubDomains once every county subdomain supports HTTPS.

How this check works

Fail The newest encryption (TLS 1.3) worksThe server doesn't support TLS 1.3. 0/3

Why it matters. TLS 1.3 is faster and drops the weak options older versions allowed.

How to fix it. Turn on TLS 1.3 in the web server, load balancer or CDN settings. Most current servers support it.

How this check works

Pass Retired encryption (TLS 1.0 and 1.1) is turned offTLS 1.0 and 1.1 are turned off. 4/4

Why it matters. TLS 1.0 and 1.1 have known weaknesses and every major browser dropped them in 2020. Leaving them on only helps attackers.

How this check works

Pass The certificate isn't about to expireThe certificate is good for 33 more days. 2/2

Why it matters. When a certificate expires, every visitor sees a security warning and many can't reach the site at all.

What we saw

Expires 2026-11-16, issued by Let's Encrypt

How this check works

Partly Scripts are limited (Content Security Policy)The site sends a Content Security Policy, but it still lets scripts run from anywhere or inline. 1/2

Why it matters. A Content Security Policy lists where scripts on the site may come from. If an attacker slips code into a page, the browser refuses to run it.

How to fix it. Send a Content-Security-Policy header. Many CMS vendors document one that fits their platform.

What we saw

frame-ancestors 'self'

How this check works

Pass Browsers don't guess file typesBrowsers are told not to guess file types. 1/1

Why it matters. Without this header a browser may run an uploaded file as a script just because it looks like one.

What we saw

nosniff

How this check works

Pass Other sites can't frame the county siteThe policy limits which sites may frame the page. 1/1

Why it matters. A fake site can load the real county site in a hidden frame and trick people into clicking buttons they can't see.

What we saw

frame-ancestors 'self'

How this check works

Pass Visitors' page addresses aren't shared with other sitesFull page addresses aren't shared with other sites. 1/1

Why it matters. A referrer policy stops the full address of the page someone was on, which can include search terms or case numbers, from being sent to other sites.

What we saw

Referrer-Policy: strict-origin-when-cross-origin

How this check works

Fail Security problems can be reported (security.txt)There is no security.txt file at https://www.dodgecountymn.gov/.well-known/security.txt. 0/2

Why it matters. A security.txt file tells people who find a problem with the county's systems exactly who to tell. Without it, many reports never arrive.

How to fix it. Publish https://www.dodgecountymn.gov/.well-known/security.txt with a Contact: line (an email address or form) and an Expires: date.

How this check works

Domain40/100

Protects the county's internet address itself.

Pass Uses a .gov domainThe website and email both use a .gov address. 6/6

Why it matters. Only real US government bodies can get a .gov address, and it is free for them. People can trust a .gov address in a way they can't trust a .us or .com one.

What we saw

www.dodgecountymn.gov, dodgecountymn.gov

How this check works

Fail DNS answers are signed (DNSSEC)DNS answers aren't signed, so they can be forged. 0/6

Why it matters. DNSSEC signs the county's DNS records, so nobody can send visitors or email to a fake server by forging the answers.

How to fix it. Turn on DNSSEC with your DNS host, then add the DS record it gives you at your registrar (for .gov, in the get.gov dashboard).

What we saw

dodgecountymn.gov: unsigned

How this check works

Fail Only chosen companies can issue certificates (CAA)There is no CAA record, so any certificate company may issue certificates for the domain. 0/3

Why it matters. A CAA record lists the certificate companies the county uses. Every other company must refuse to issue a certificate for the county's domain.

How to fix it. Add a CAA record such as 0 issue "letsencrypt.org" (or your certificate provider) to the domain.

How this check works

Pass Name servers in more than one address blockThe domain has name servers in more than one address block. 2/2

Why it matters. If all of a domain's name servers sit on one network, one outage takes the website and email offline together.

What we saw

dodgecountymn.gov: ns1.state.mn.us, ns2.state.mn.us, ns3.state.mn.us

How this check works

Fail The website works over IPv6The website has no IPv6 address. 0/3

Why it matters. Many phone networks and newer internet connections use IPv6. A site with an IPv6 address is reachable over them directly.

How to fix it. Ask your hosting provider or CDN to turn on IPv6 and publish an AAAA record for the site.

What we saw

www.dodgecountymn.gov has no AAAA record

How this check works

Dodge and its neighbors

6 Olmsted C77 87 86 40
14 Rice C70 81 74 40
43 Steele F52 47 66 40
47 Dodge F51 42 69 40
47 Mower F51 42 69 40
77 Goodhue F44 24 71 40

Score history

First checked on Oct 13, 2026. The history chart fills in as daily scans add up.

This score only covers settings anyone can see from the internet. It can't see passwords, backups, staff training or anything inside the county's network, so a high score doesn't mean a county is safe, and a low one doesn't mean it has been hacked.

Work for Dodge County and something looks wrong? Email hello@govleaderboard.com and we'll recheck it. Last checked Oct 13, 2026, 3:02 PM CT.

Looking for Dodge County offices and records? Find them on GISFinder.