The policy protects transport only where the sending mail server supports it and has obtained a valid policy. It replaces neither sender authentication through SPF, DKIM and DMARC nor end-to-end encryption of message content.
Why STARTTLS alone leaves a gap
Schematic models · not attack measurements
STARTTLS manipulation: two conditional cases
In both modelled cases, an attacker removes the STARTTLS offer along the transport path. Conditions at the sender determine the outcome.
Plaintext fallback permitted
Local configuration permits fallback; no other binding TLS rule applies. DANE is not assumed here.
With opportunistic SMTP TLS, two mail servers try to establish an encrypted connection. However, a sender can continue unencrypted if its rules permit this and STARTTLS is unavailable. Someone able to manipulate the unprotected negotiation can, for example, remove the 250 STARTTLS response. This attack pattern is often called STRIPTLS. A peer capable of TLS alone does not prevent it.
Outcome: plaintext transmission is possible.
Valid enforce policy available
The sender supports MTA-STS and already has a valid cached policy.
A valid, already cached MTA-STS policy with mode: enforce changes a supporting sender's decision: it must not transmit a message through an MX candidate that violates the policy conditions. It can try other MX candidates or defer delivery for now. This implies neither immediate permanent non-delivery nor guaranteed later delivery. RFC 8461: policy application and attack limits
Outcome: no transmission through this non-compliant MX.
DNS signal, HTTPS policy and SMTP verification
For ordinary direct delivery to person@example.com, example.com is the policy domain. Explicit routing rules to a smart host can change the next transport hop and thus policy selection. A policy for the main domain is not automatically sought for every subdomain: a different policy domain requires its own queries. RFC 8461 §3.4
On narrow screens, scroll the table sideways.
| Component | Purpose | What it does not establish |
|---|---|---|
TXT at _mta-sts.example.com | Announces MTA-STS; id identifies the policy version. | The TXT content contains neither the complete policy nor an SMTP connection result. |
HTTPS at mta-sts.example.com | Serves the policy at /.well-known/mta-sts.txt. | A retrievable file does not prove that all intended MX servers offer TLS correctly. |
| Sending mail server | Checks the policy, MX names and TLS connection to the selected MX. | Not every sender supports MTA-STS or has the same cache state. |
Optional TLS-RPT at _smtp._tls.example.com | Names destinations for reports from supporting senders. | A DNS record does not itself receive or analyse reports. |
The DNS record announces a version
The following synthetic zone example uses example domains only. It has not been published or tested in practice.
_mta-sts.example.com. IN TXT "v=STSv1; id=2026091301"v=STSv1 comes first. The id consists of 1 to 32 letters or digits and must uniquely identify the relevant policy version. A date format is possible but not required; a new time or sequential identifier can distinguish several changes on the same day. A larger number has no special meaning in the protocol.
After discarding unrelated TXT records, exactly one matching, syntactically valid record must remain. Multiple strings within the same TXT record are concatenated without extra spaces. Discovery can also be delegated through a CNAME. However, a missing or unusable record does not delete a previously valid cached policy. RFC 8461 §3.1
The policy comes from a fixed HTTPS destination
For this example domain, the full address is:
https://mta-sts.example.com/.well-known/mta-sts.txtThis HTTPS host's certificate must match the name mta-sts.example.com, be valid and chain to a certification authority trusted by the sender. A CNAME pointing to a hosting provider does not change the name to be checked. The response must return HTTP 200 directly; redirects must not be followed when retrieving the policy. The file should be served as text/plain; RFC 8461 describes the sender's media type check as a SHOULD. An HTML error page is not a policy. RFC 8461 §3.2–3.3
Synthetic file example for a testing phase with two intended MX hosts:
version: STSv1
mode: testing
mx: mx1.example.com
mx: mx2.example.com
max_age: 86400On narrow screens, scroll the table sideways.
| Field | Required | Meaning |
|---|---|---|
version | Once | Currently STSv1. |
mode | Once | testing, enforce or none. |
mx | At least once, except with mode: none | One permitted MX name or allowed wildcard pattern per line. |
max_age | Once | Maximum validity in seconds since the last policy retrieval; not the DNS TTL. Values from 0 to 31557600 are allowed. |
mx: *.example.com matches exactly one additional leftmost label, such as mail.example.com. It matches neither example.com nor a.mail.example.com. Use several mx: lines for several names. For internationalised domain names, the policy expects the ASCII representation as an A-label. The example value 86400 is one day; it is not a mandatory default.
Schematic explanation · not a measurement
Retrieve the policy and take a valid cache into account
Cached policy
Valid policy cache?
A cached policy that is still valid is taken into account independently of a new retrieval.
A retrieval failure does not delete it.
Discovery and retrieval where needed
- DNS:
_mta-stsAvailability and version identifier
id. The TXT record does not contain the policy. - If retrieval is needed: HTTPS policy
Fixed policy host and path. HTTP
200directly and a valid certificate; no redirect.https://mta-sts.example.com/.well-known/mta-sts.txt
- New policy successfully validated
- Cache it and apply it according to its mode.
- Retrieval fails; cache still valid
- The policy that is still valid must continue to be applied.
- No valid cache and no usable new policy
- No MTA-STS requirement. DANE, local TLS rules and other failure conditions may still apply.
- New valid policy with
mode: none - This version requires no MTA-STS enforcement. Other senders may still hold older, valid policies.
Schematic explanation · not a measurement
Keep SMTP verification separate from optional reporting
Apply a valid policy according to its mode.
No guaranteed transmission or delivery.
A separate route: A sender supporting TLS-RPT can, where reporting is configured, discover destinations through DNS at _smtp._tls and send a report to an actual recipient. DNS names the destination; DNS does not receive a report. Reports are not proof of delivery. View the optional reporting route.
For the SMTP MX, the sender separately checks whether its name matches the policy, STARTTLS is usable and a valid certificate with a trusted chain matches the actual MX hostname. The policy's HTTPS certificate and the MX's SMTP certificate are two separate pieces of evidence. RFC 8461 §4–5.1
Understand testing, enforce and none
On narrow screens, scroll the table sideways.
| Mode | Behaviour of a supporting sender | Operational limit |
|---|---|---|
testing | Checks the policy but does not block the message solely because of an MTA-STS validation failure. | Other delivery failures and local rules remain possible. TLS reports need separate TLS-RPT support and configuration. |
enforce | Must not transmit to an MX candidate that violates the conditions. Other MX candidates are considered in the normal delivery process. | A failure may initially lead to deferral and retries. Before a permanent failure due to the policy violation, the sender must check for a new policy identifier. |
none | Treats this validly obtained policy version without active MTA-STS enforcement. | Removal takes effect at each sender separately; old, valid caches do not disappear immediately. |
enforce is an operational commitment you make deliberately. An MX name that no longer matches, an expired certificate or absent STARTTLS can prevent transmission. This also applies to a rarely used backup MX. Uneventful traffic to the primary MX is not evidence for every fallback route. RFC 8461 §8.4
TLS-RPT: understand reports on transport attempts
TLS-RPT is described in RFC 8460, separately from MTA-STS. Supporting senders can transmit aggregate information about TLS connections and policy problems. The receiving domain publishes a reporting destination for this purpose. It can help during introduction, but does not provide complete observation of all senders or messages.
A synthetic DNS example for a receiving mailbox set up beforehand:
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:tlsrpt@example.com"Multiple destinations are possible, shown here as an alternative example configuration with an HTTPS receiver already set up:
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:tlsrpt@example.com,https://reports.example.com/tlsrpt"Enter only destinations for whose reception and analysis you are responsible or have an appropriate agreement. With several destinations, a reporting sender may select one; not every destination necessarily receives every report. A statically hosted policy file is not an HTTPS report receiver. RFC 8460 §3, verified erratum 8070
Optional reporting route · no guaranteed delivery
TLS-RPT: from an attempt to analysis
- Observe attempts
A supporting sending mail server records the results of its transport attempts.
- Aggregate after the reporting period
A full UTC day is recommended. This is not a guaranteed arrival time.
- Transmit to a configured destination
JSON, optionally compressed with gzip, by email or HTTPS POST to the actual report receiver.
DNS supplies only the configured destination addresses. With several destinations, the reporter may select one; multiple copies are not guaranteed.
- Receive, check and analyse
Compare received reports with your own SMTP logs and targeted follow-up checks.
Missing reports prove neither error-free transport nor an absence of traffic. Optional reports do not provide a complete view of traffic.
Reporting period, counts and transmission
A report contains a period, identifier, information about the reporting operator, the observed policy and aggregate results. A full UTC day is the standard's recommendation. Delayed transmission and missing reports are possible. Success counts refer to the corresponding TLS sessions, not messages received in an inbox. Failure categories can overlap; they cannot be added arbitrarily to produce a count of independent failed messages. RFC 8460 §4
Special rules apply to report transport: emailed reports need a valid DKIM signature from the reporting domain without an l= limit. In RFC 8460, s=tlsrpt on the DKIM key is a SHOULD, not a general additional MUST; open or held errata concern its registration. Absence of a valid DKIM signature is a different case. When transmitting failure reports, SMTP TLS problems must not themselves suppress the report; the report may be transmitted unencrypted as a result. For HTTPS reports, the standard permits the sender to ignore certificate errors. This exception does not apply to HTTPS retrieval of the MTA-STS policy. RFC 8460 §3, erratum 8303, status Reported
Reports may arrive as JSON or compressed with gzip. An HTTPS receiver must return a successful response, typically 200 or 201; processing may follow later. Neither successful HTTP acceptance nor an existing email attachment proves completed analysis. TLS-RPT reports are not Wolf report files.
An invented report as a reading aid
The following JSON model shows a single policy version and one failure type. The operator name, identifier, reporting period, addresses and all numbers are invented. It is neither a received report nor test evidence; the email/HTTP envelope is not shown.
{
"organization-name": "Example Sender",
"date-range": {
"start-datetime": "2026-09-11T00:00:00Z",
"end-datetime": "2026-09-12T00:00:00Z"
},
"contact-info": "postmaster@sender.example.net",
"report-id": "example-report-01",
"policies": [
{
"policy": {
"policy-type": "sts",
"policy-string": [
"version: STSv1",
"mode: enforce",
"mx: mx1.example.com",
"max_age: 604800"
],
"policy-domain": "example.com",
"mx-host": ["mx1.example.com"]
},
"summary": {
"total-successful-session-count": 120,
"total-failure-session-count": 2
},
"failure-details": [
{
"result-type": "certificate-expired",
"sending-mta-ip": "192.0.2.10",
"receiving-mx-hostname": "mx1.example.com",
"receiving-ip": "203.0.113.20",
"failed-session-count": 2
}
]
}
]
}In the model, the report describes an expired certificate in two recorded sessions. It proves neither the cause of every missing message nor an attack. Investigation should consider the stated period, affected host, policy at the time and relevant server logs.
Assign failure labels precisely
On narrow screens, scroll the table sideways.
result-type | Meaning in the report | Next useful investigation |
|---|---|---|
starttls-not-supported | STARTTLS could not be used as required. | Check the actual SMTP offer and affected connection path. |
certificate-host-mismatch | The certificate name does not match the expected name. | Compare the selected MX with the names in the certificate it presents. |
certificate-expired | A checked certificate has expired. | Investigate the affected certificate chain and renewal status. |
certificate-not-trusted | The certificate was not validated as trusted. | Distinguish the chain served from the reporter's trust context. |
sts-policy-fetch-error | MTA-STS policy retrieval failed. | Check DNS, HTTPS reachability, status and the cache state at the time. |
sts-policy-invalid | MTA-STS policy validation failed. | Read the actual policy and validation details; do not automatically assume only an MX error. |
sts-webpki-invalid | Web PKI validation of the policy failed. | Check the HTTPS policy host's certificate, separately from the SMTP MX. |
tlsa-invalid | An existing TLSA record set contains no valid, usable records. | Investigate the DANE/TLSA finding and its precise validation. |
dnssec-invalid | The DNSSEC validation needed for DANE returned no valid data. | Narrow down the resolver response and DNSSEC validation path. |
dane-required | The local sender rule requires DANE without the DNSSEC-validated TLSA data it needs. | Check the local sender requirement and recipient configuration separately. |
validation-failure | Other validation failure. | Analyse the additional failure-reason-code and context, where supplied. |
These categories do not replace root cause analysis. A report need not include every transient network error. A syntactically valid policy can also exclude a needed MX; a syntax check alone is insufficient. RFC 8460 §4.3
Plan introduction, changes and removal
The time needed for introduction depends on your infrastructure and the observations actually available. Two error-free calendar weeks alone establish neither sender coverage nor a working backup MX.
On narrow screens, scroll the table sideways.
| Step | Basis for moving forward | What to document |
|---|---|---|
| Clarify responsibilities and receiving routes | All intended MX hosts and their TLS prerequisites are known, including fallback routes. | Names, responsibility for certificates, hosting and changes. |
| Prepare the HTTPS policy | The test policy is directly and correctly retrievable at the right host. Only then does DNS announce its version. | File content, identifier, retrieval time, status and certificate verification. |
| Optionally set up TLS-RPT | An actual receiver accepts reports; received data is checked and analysed. | Reporters, periods, gaps and findings; no claim of complete coverage. |
Observe under testing | Your own checks and suitable operational data resolve relevant failure cases. | MX/sender cases considered, not just the number of days. |
Deliberately switch to enforce | The intended TLS commitment is operationally sustainable; error handling and removal are prepared. | New policy version, new id, previous max_age values and responsibility. |
When making a change, publish the new HTTPS policy first, followed by the new DNS id. A DNS update alone does not replace every sender's cache. Longer max_age values can preserve the requirement through retrieval outages, but also prolong the possible effect of old rules. A new, shorter lifetime does not retroactively shorten every previously cached policy. RFC 8461 §8.1
For planned removal, the standard provides mode: none. Publish this valid policy with a short lifetime and a new id. Keep DNS and the HTTPS endpoint available until all previously served policies have expired. This may include older versions with longer lifetimes. Immediately deleting the TXT record and file is not reliable removal. RFC 8461 §8.3
MTA-STS and DANE use different trust models
On narrow screens, scroll the table sideways.
| Question | MTA-STS | SMTP DANE |
|---|---|---|
| Where does the authenticated requirement come from? | Policy file over HTTPS with Web PKI; DNS announces it. | DNSSEC-validated TLSA data in the appropriate DNS/MX context. |
| Is DNSSEC required? | No. | Yes, for DANE authentication. |
| What is the peer bound to? | Permitted MX names and trusted, valid certificates. | TLSA association with a certificate or key, depending on Usage, Selector and Matching Type. Not every association is a hash. |
| How do certificate rules differ? | Name, validity period and chain of trust form part of the check. | DANE-EE(3) uses different rules: the certificate name and expiry are not checked as in Web PKI; the DNSSEC-validated TLSA binding is decisive. Other usages need separate consideration. |
| What applies at initial contact? | Without a valid obtained policy, discovery can still be suppressed. | DNSSEC enables authenticated discovery and authenticated statements about absent data within the applicable DNSSEC context. |
| Can a domain use both? | Yes; MTA-STS must not override failed DANE validation. | The sender implementation must correctly implement their interaction in practice. |
MTA-STS is neither a replacement for DNSSEC nor certificate pinning. SMTP DANE, in turn, is not end-to-end encryption. Which option a provider supports for inbound and outbound messages needs separate checking. Read your sending service's specific documentation, including the connectors and routing cases used. RFC 8461 §2, RFC 7672 §3
Limits of the evidence: transport, law and check results
MTA-STS can make a limited contribution to protecting the transport path. It neither authenticates the visible sender nor assesses message content. Encrypted transport does not make a phishing message harmless. More context: email threats and DNS security.
Legal requirements depend on scope and risk. Article 21 NIS2 calls for appropriate risk management measures, including cryptography, from covered entities; article 32 GDPR addresses security of processing appropriate to risk. Neither supports a blanket claim that every domain must specifically use MTA-STS. BSI TR-03108 addresses email service providers and describes its own requirements for secure transport. A single policy or scan is not certification of compliance with these rules. This interpretation concerns the cited EU/German sources, not a worldwide legal assessment. NIS2 article 21, GDPR article 32, BSI TR-03108
The free Email Security Check examines published DNS records, the retrievable MTA-STS policy and its coverage of the DNS MX names known to the check. This proves neither actual enforcement by every sender nor TLS connections to every MX address or the state of other senders' caches. The TLS-RPT DNS check reads reporting destinations; it does not receive or analyse JSON reports or confirm report delivery. A retrieval or measurement failure must be distinguished from a confirmed misconfiguration.
A free finding may be enough for your next correction. To verify a change, add the specific operational evidence needed; DNS observations, policy retrieval, SMTP connection and a received report remain separate pieces of evidence.
Related fundamentals
Previous chapter: DMARC enforcement. Next chapter: SMTP TLS and certificates.
Frequently asked questions
Does MTA-STS reliably protect against STRIPTLS?
A supporting sender with a valid cached enforce policy must not transmit a message through an MX that violates the policy conditions. However, initial policy discovery can be suppressed; certificate trust and a correct sender implementation also remain prerequisites. Other TLS rules, such as DANE, need separate consideration.
How does MTA-STS differ from DANE?
MTA-STS uses an HTTPS policy and Web PKI. SMTP DANE uses DNSSEC-validated TLSA bindings. The name, expiry and trust rules therefore are not always the same; DANE-EE(3), in particular, differs from Web PKI.
Where must the policy file be hosted?
For example.com, directly at https://mta-sts.example.com/.well-known/mta-sts.txt, with a suitable trusted certificate and HTTP 200 without a redirect. A TXT string in DNS does not replace this hosting.
Do I need MTA-STS alongside DANE?
That depends on the intended sending routes and actual support. Both can coexist, but neither is universally required for every domain. An MTA-STS implementation must not override failed DANE validation.
Will TLS-RPT give me a complete report every day?
No. A full UTC day is a recommended reporting period, not a delivery promise. A receiving destination, sender support and actual transmission are also needed. Senders that do not report and routes not covered remain gaps; supplement the reports with suitable logs of your own.
Does a scanner prove that MTA-STS works everywhere?
No. Public DNS/policy findings and limited MX findings are not evidence for every sender, cache state or destination IP. They also do not replace received TLS-RPT files or actual delivery observations.
What happens if the policy's HTTPS certificate expires?
A new policy then cannot be validated according to the MTA-STS requirements. A cached policy that is still valid must continue to be applied. If it is absent or expired and no valid new policy is available, MTA-STS imposes no requirement on that basis; other transport rules may still apply.
Sources and technical status
- RFC 8461: SMTP MTA Strict Transport Security, September 2018; DNS, policy, cache, introduction and security limits.
- RFC 8460: SMTP TLS Reporting, September 2018; report format, results and transmission.
- RFC 7672: SMTP DANE, October 2015; comparison of trust and certificate rules.
- RFC 3207: SMTP STARTTLS; negotiation of the TLS transport path.
Targeted source review: 13 September 2026. RFC 8461 and RFC 8460 remain Proposed Standards; reported, verified and held errata have different statuses. The examples and schematic figures explain the rules and have not been tested as an actual SMTP/DNS/hosting environment.