RFC 8461 and RFC 8460

Encryption that is required, not merely offered

Without MTA-STS a sending server that cannot negotiate TLS will happily deliver your mail in plain text and tell nobody. The policy is what turns that into a refusal, and it only works while it is reachable and current

The MTA-STS check, showing the policy reachable in enforce mode with a max age of a hundred and twenty days and TLS-RPT enabled

The policy, as a sender fetches it

The file is requested over HTTPS from the mta-sts subdomain exactly the way a sending server would, and what comes back is parsed

  • Fetched from the real URL
  • Mode read: enforce, testing or none
  • The mx entries it names
  • max_age checked for sanity
The published policy as fetched over HTTPS, with its version, enforce mode, max age and the thirty nine MX hosts it names

What the MTA-STS and TLS-RPT checks do

This is a two-part mechanism where each half is useless alone, so both halves are checked together

What each mode does when a connection cannot be secured

The mode is the whole policy. Two of the three change nothing at all about how mail is delivered, and only one of those is honest about it

modeWhen TLS cannot be establishedWhat you learn
enforceThe sending server gives up rather than deliver in the clearFailures arrive as TLS-RPT reports, and mail that would have been downgraded is not sent
testingDelivery goes ahead exactly as it would without a policyThe same reports arrive, so you see what enforce would have blocked before you block it
noneDelivery goes ahead, and the policy is withdrawnNothing. This is how you retire a policy, not how you start one

max_age is how long a sender caches the policy. Under 3600 seconds is close to having none, and 604800 is the value to publish once you are confident

Three steps, and one of them is waiting

Going straight to enforce is how you find out that one of your MX hosts has a certificate problem

1

Publish TLS-RPT first

Before any policy, give receivers somewhere to report. You will start seeing which senders already fail to encrypt with you, and that list is the work

2

Publish the policy in testing mode

Nothing changes about delivery, but reports start telling you what enforce would have refused. This is the step people skip and then regret

3

Switch to enforce and change the id

The mode goes to enforce and the id in the TXT record changes, otherwise senders keep the cached policy. Both sides are checked on every run afterwards

Questions about MTA-STS

What the policy actually changes, why testing mode does nothing, and what happens when the id does not move

MTA-STS is a security standard that allows domain owners to declare their support for TLS encryption and specify whether sending servers should refuse delivery if TLS is not available. Using a dedicated checker helps ensure your policy and DNS records are correctly synchronized.

The id field in the _mta-sts TXT record tells sending servers when your policy has changed. If you update your policy file but do not change the id in DNS, servers will continue using the cached version.

DMARC protects the content and sender identity of the email. MTA-STS protects the transport, meaning the pipe the email travels through, specifically preventing interception.

TLS-RPT provides the feedback loop needed to know if your MTA-STS policy is causing delivery failures, allowing you to fix issues before they impact your business.

In testing mode, sending servers report TLS failures but still deliver mail even without encryption. In enforce mode, servers must refuse delivery if a secure TLS connection cannot be established. Start with testing to identify issues, then switch to enforce once TLS-RPT signals confirm stable encrypted delivery.

Specifications this page relies on

Check whether your policy is reachable

The policy file is fetched the way a sending server fetches it, which is where most problems turn out to be. Watching one domain is free and asks for no card