MTA-STS checker
Fetches your published policy over HTTPS exactly as a sending server would, then cross-checks it against your live MX records.
Why MTA-STS breaks quietly
MTA-STS has two halves that live in different places: a DNS record, and a policy file served over HTTPS at a fixed well-known path. The DNS record is set once and rarely touched. The policy file lives on web infrastructure that gets migrated, put behind a CDN, or reconfigured. When it stops being served correctly, nothing visibly breaks. The domain keeps advertising MTA-STS while no sender can retrieve the policy.
What this checks
- The DNS record at
_mta-sts: begins withv=STSv1and carries anidof 1 to 32 alphanumeric characters. - Policy retrieval over HTTPS. RFC 8461 §3.2 requires a 200 response and states that 3xx redirects must not be followed, so a policy URL that redirects, even to a working page, is unusable.
- Certificate validity for the policy host.
- Policy syntax: version, mode,
max_age, and at least onemxentry unless mode isnone. - MX coverage, described below.
MX coverage and the wildcard rule
In enforce mode, senders honouring your policy will only deliver to hosts matching an
mx pattern in it. If a live mail exchanger matches none of them, those senders cannot
deliver to it.
The wildcard rule is stricter than most people expect. Per RFC 8461 §4.1, * matches
exactly one entire leftmost label:
| Pattern | Host | Match? |
|---|---|---|
*.example.com | mail.example.com | Yes |
*.example.com | example.com | No, nothing for the wildcard to consume |
*.example.com | mail.eu.example.com | No, that is two labels |
That last row is the one that causes real outages after a regional mail migration.
Rolling it out safely
Publish with mode=testing first. Senders then report TLS failures without changing
delivery, which lets you confirm coverage before enforcing. Move to enforce once TLS
reports are clean.