This article is written for technically managed or self-hosted mail systems. Examples are intentionally scoped and illustrative. Verify the exact behavior of your Mail Transfer Agent, Mailcow release, DNS provider, resolver, reverse proxy, and certificate automation before applying them in production.
MTA-STS and DANE solve the same broad problem, protecting SMTP delivery from downgrade and server-authentication failures, but they do not use the same trust system. MTA-STS trusts an HTTPS policy and the Web PKI. DANE for SMTP trusts DNSSEC-protected TLSA records.
That difference matters more than the acronym expansion. It determines what you must operate, what can break, how certificates are validated, how policy changes propagate, and how you recover when an MX host or key changes.
Neither mechanism replaces SPF, DKIM, or DMARC. Those controls address sender authorization, message signatures, and domain-alignment policy. MTA-STS and DANE address the server-to-server transport hop.
Neither is end-to-end message encryption: the sending and receiving mail systems still handle the message.
The short version is practical:
- Use MTA-STS when HTTPS and Web PKI are easier for your team to operate than DNSSEC.
- Use DANE when you already operate DNSSEC reliably and can manage TLSA records and key rollover.
- Use both when the additional failure domain is acceptable and you want coverage for different sending implementations.
- Treat TLS-RPT as visibility, not enforcement.
- Keep inbound protection, other systems delivering mail to you, separate from outbound enforcement, your MTA honoring policies published by other domains.
Key Takeaways
Click any topic to expand or collapseMTA-STS vs DANE: Which One Should You Choose?: The decision in one minute
Choose the control plane your team can actually operate under pressure.
Decision guide
Choose MTA-STS first if you do not have mature DNSSEC operations, but you can keep an HTTPS policy host and publicly trusted SMTP certificates available.
Choose DANE if your authoritative zone is signed, the DS chain is monitored, your sending side validates DNSSEC, and your team has a tested TLSA rollover process.
Choose both if you want MTA-STS coverage for senders that do not use DANE and DANE’s DNSSEC-based binding for senders that do. The benefit is broader coverage; the cost is two independent control planes.
For provider-controlled MX hosts, do not publish TLSA fingerprints unless the provider documents ownership, certificate selection, DNSSEC, and rollover responsibilities.
The standards are complementary rather than mutually exclusive. RFC 8461 explicitly describes MTA-STS as designed not to override a failing DANE validation. That does not remove the need to test both paths: publishing two mechanisms means you now own two places where an MX, certificate, DNS record, or service endpoint can become stale.
What MTA-STS and DANE Protect, and What They Do Not: What each standard protects
SMTP commonly begins with a cleartext conversation and upgrades to TLS through STARTTLS. Opportunistic TLS improves privacy when it works, but ordinary opportunistic behavior may continue without TLS if the capability is removed or negotiation fails.

That creates two separate problems:
- Downgrade: an attacker interferes with the pre-TLS exchange so the sender delivers without encryption.
- Authentication: the sender may encrypt the session without having a strong, authenticated binding to the intended receiving server.
MTA-STS and DANE publish an authenticated statement outside the SMTP negotiation. They tell a capable sending MTA what to expect from the destination and what to do when those expectations fail.
SPF, DKIM, and DMARC remain separate layers. For a broader foundation checklist covering PTR, MX, SPF, DKIM, DMARC, IPv6, and Mailcow-specific DNS dependencies, see Mailcow DNS Setup, Done Right.
MTA-STS vs DANE: Technical and Operational Comparison
| Criterion | MTA-STS | DANE for SMTP |
|---|---|---|
| Trust anchor | HTTPS certificate and Web PKI | DNSSEC-protected TLSA records |
| DNSSEC required | No | Yes, for authenticated DANE |
| Discovery | `_mta-sts` TXT plus HTTPS policy | `_25._tcp` TLSA lookup for each MX service |
| Staged mode | Yes: `testing` | No equivalent protocol mode |
| Certificate relationship | Sending MTA validates the MX certificate according to MTA-STS rules, including trusted certificate and hostname checks | TLSA binds the service to a certificate, trust anchor, or public-key association according to the selected usage |
| Change propagation | Policy cache and `max_age`; TXT `id` signals a new policy | DNS TTL, DNSSEC validation, and resolver caches |
| Main operational risk | Unavailable or incorrectly served policy, certificate renewal, stale MX list, or an inappropriate cache lifetime | Broken DNSSEC chain, stale or incorrect TLSA, and unplanned key rotation |
The right choice is not an abstract “strongest protocol.” It is the mechanism whose dependencies you can monitor, change, and recover reliably. A mature DNSSEC operation may make DANE a natural choice. A team without DNSSEC but with reliable HTTPS and certificate automation may obtain more dependable protection from MTA-STS.
Inbound vs Outbound SMTP Enforcement: The Difference That Matters
This distinction deserves its own section because it is the most common conceptual mistake in transport-security guides.
| Direction | What you control | What publishing your policy does | What to verify |
|---|---|---|---|
| Inbound | Your domain’s MX hosts and policy records | Tells capable external senders how to deliver mail to your domain | MX set, SMTP TLS, certificate identity, HTTPS policy, DNSSEC/TLSA, and failover |
| Outbound | Your sending MTA and resolver | Does not automatically enforce policies published by recipient domains | Postfix/Mailcow version, DANE client settings, MTA-STS resolver integration, queue behavior, and logs |
For example, publishing an MTA-STS policy for example.com asks capable senders to apply that policy when delivering to example.com. It does not automatically make your Postfix server fetch and enforce the MTA-STS policy of every domain you send to.
Postfix documents native DANE-related client security levels, but exact behavior depends on the Postfix release, TLS library, DNSSEC-capable resolver, and configuration. Outbound MTA-STS may require a separately maintained policy resolver or integration. Treat that component as a production dependency: verify its compatibility, socketmap behavior, failure mode, service manager, and upgrade path before relying on it.
Prerequisites: DNS, MX, TLS, and Rollback Readiness
Before enabling enforcement, verify the exact production domain and every MX host that can receive mail.
| Check | Why it matters | Evidence to retain |
|---|---|---|
| MX hostnames and priorities are final | A missing or retired host can fail under enforcement or during failover | External DNS output and change record |
| Every MX offers STARTTLS on port 25 | A policy cannot make a non-TLS server succeed | External SMTP test for every host |
| SMTP certificates match the required identity rules | MTA-STS and ordinary certificate validation require hostname and trust checks; DANE usage changes the matching model | Live certificate chain and hostname test |
| Certificate renewal behavior is known | A new public key can invalidate a `3 1 1` TLSA association | ACME configuration and renewal test |
| Policy host is externally reachable | MTA-STS discovery uses a fixed HTTPS hostname and path | Status, content type, certificate, and body |
| DNSSEC validates externally if using DANE | An unsigned or bogus chain cannot authenticate TLSA data | Validation output from an external resolver |
| TLS-RPT reports can be ingested | Reports are structured aggregate data, not automatically a useful alerting workflow | Parser or reporting-service test |
| Rollback owner is assigned | Enforcement errors can queue or defer mail | Written rollback and escalation procedure |
If your base Mailcow deployment is not stable yet, complete the production Mailcow setup with Docker and Traefik first. Transport policy is not a substitute for a correct host boundary, certificate owner, DNS design, backup process, or recovery plan.
How to Deploy MTA-STS Safely
MTA-STS uses two discovery elements:
- A TXT record at
_mta-sts.example.comcontainingv=STSv1and a policyid. - An HTTPS policy at
https://mta-sts.example.com/.well-known/mta-sts.txt.
The policy format is defined by RFC 8461:
version: STSv1
mode: testing
mx: mail.example.com
mx: mail2.example.com
max_age: 86400Use the actual MX hostnames or permitted patterns for your domain. The policy is not a replacement for checking the live MX RRset.
1 . Host the MTA-STS Policy at the Exact HTTPS Path

The policy host is normally mta-sts.example.com, and the fixed path is:
https://mta-sts.example.com/.well-known/mta-sts.txtUse HTTPS with a certificate valid for the policy hostname. Serve the policy as plain text and verify the response from outside your local network. The safest operational pattern is a direct response with the expected body and content type; do not assume that a redirect to your main website is equivalent to serving the policy at the required endpoint.
If you use Nginx, Caddy, Mailcow, or a managed reverse proxy, configure the equivalent response for your environment. The exact server block is not universal: paths, permissions, certificate ownership, and reverse-proxy routing differ.
2. Publish the MTA-STS Discovery TXT Record

_mta-sts.example.com. IN TXT "v=STSv1; id=20260909T120000Z"The id is a required identifier for the current policy instance. It must be 1–32 alphanumeric characters. It does not need to be chronological, although a UTC timestamp is a useful operational convention. Change it whenever the policy changes so senders can detect that a newer policy exists.
3. Start MTA-STS in Testing Mode

mode: testing is intended for staged deployment. It allows compatible senders to report policy problems without applying the same delivery-refusal behavior as enforce. It does not guarantee that every sender supports reporting or implements testing identically.
Monitor long enough to cover the senders and MX paths that matter to your traffic. A week or two may be useful for some environments, but it is not a protocol requirement. The correct duration depends on your traffic pattern, reporting coverage, and change process.
4. Move to MTA-STS Enforce Mode Deliberately

Before changing to mode: enforce, confirm:
- Every intended MX is listed and reachable.
- Every MX offers STARTTLS and presents an acceptable certificate.
- The policy host serves the correct body from an external network.
- The TXT
idchanges with the policy. - TLS-RPT reports, if used, can be decoded and acted upon.
- Someone owns rollback and understands the cache lifetime.
max_age is both a security parameter and a recovery constraint. RFC 8461 permits a maximum of 31,557,600 seconds. Choose a value your team can live with if an already cached policy continues to influence senders after an MX or policy-host change.
max_age only because a template uses it. Choose it in relation to your notice period for changing MX hosts, certificates, policy content, and DNS infrastructure.How to Deploy DANE for SMTP with DNSSEC and TLSA
DANE for SMTP uses DNSSEC-protected TLSA records to bind a receiving service to a certificate, public key, or trust anchor. RFC 7672 defines the SMTP-specific behavior.
1. Establish and Validate DNSSEC First

Confirm all of the following:
- The authoritative zone is signed.
- The registrar’s DS record is correct.
- An external validating resolver returns a secure answer.
- The resolver used by the sending MTA validates DNSSEC.
- Your DNS change and rollback process covers both TLSA and DNSSEC-related records.
A TLSA record in an unsigned or DNSSEC-bogus path is not an authenticated DANE signal.
2. Understand the SMTP TLSA 3 1 1 Association

A commonly used SMTP association is:
_25._tcp.mail.example.com. IN TLSA 3 1 1 <sha256-hex-digest>The fields mean:
| Field | Value | Meaning |
|---|---|---|
| Certificate usage | 3 | DANE-EE: match the end-entity association directly |
| Selector | 1 | Use the subject public-key information |
| Matching type | 1 | SHA-256 digest |
The association must match the certificate or public key actually selected by the live SMTP service. If the service can present more than one certificate or key type, follow the MTA’s documented DANE behavior and publish associations only after validating the real handshake.
An illustrative OpenSSL pipeline for extracting the SPKI digest from a PEM certificate is:
Bash:
openssl x509 -in /path/to/cert.pem -noout -pubkey \
| openssl pkey -pubin -outform DER \
| openssl dgst -sha256This is an illustration, not a universal production command. Confirm that the input certificate is the one served on port 25, remove formatting from the resulting digest as required by your DNS tooling, and test the published record externally.
3. Publish and Test TLSA for Every Receiving MX

TLSA records are tied to a service name and port. A primary MX can pass while a backup MX fails. For each receiving host, verify:
- MX resolution and priority.
_25._tcp.<mx-host>TLSA lookup.- DNSSEC validation.
- The live SMTP certificate or key.
- A controlled delivery path through the host.
Do not publish TLSA for a provider-controlled hostname merely because it appears in your MX records. The provider must document who owns the certificate, DNSSEC, TLSA record, and rollover process.
Mailcow MTA-STS Setup: Version 2025-09 and Newer
The current Mailcow MTA-STS documentation states that its native workflow requires Mailcow 2025-09 or newer.

That workflow changes an important assumption in older tutorials:
- MTA-STS is configured through the Mailcow UI.
- Mailcow serves the policy dynamically through its application workflow.
- Existing manually created
.well-known/mta-sts.txtfiles may no longer be reachable after the update. - The documented DNS setup includes the
_mta-stsTXT record and anmta-stsCNAME pointing to the Mailcow FQDN, so the certificate and policy path can work within the supported design. - The UI exposes mode, maximum age, and MX entries.
Do not combine a legacy reverse-proxy file configuration with the native workflow until you have confirmed which component answers the policy request. After enabling it, check the exact HTTPS URL and use Mailcow’s DNS checks or an independent validator.
For older Mailcow releases, follow the documentation for that release rather than copying the current UI workflow or an old manual-file tutorial without checking the version boundary.
Certificate Renewal and DANE TLSA Key Rollover
The important DANE question is not simply “Did the certificate renew?” It is “Did the public key change?” With a 3 1 1 association, a certificate renewal that reuses the same key pair can keep the TLSA digest unchanged. A renewal that creates a new private key changes the digest and requires a rollover.

A conservative rollover sequence is:
- Generate or obtain the new certificate and key without serving the new key yet.
- Publish the new TLSA association alongside the current association if your MTA and DNS design support that rollover pattern.
- Wait for relevant DNS TTLs and DNSSEC data to propagate.
- Switch the SMTP service to the new certificate and key.
- Verify the live handshake and TLSA match from an external validating path.
- Remove the old association only after the expected cache window has passed.
The exact multi-record behavior must be checked against the MTA that will validate the records. Never assume that a rollover pattern described for one implementation is universal.
This is also where certificate automation needs an explicit ownership model. Your renewal hook should either preserve the intended key deliberately or detect a key change and block/alert before the new certificate is served. Key reuse can reduce routine TLSA churn, but indefinite reuse without a deliberate rotation policy is not a complete security strategy.
TLS-RPT: Monitor SMTP Failures Before Enforcement
SMTP TLS Reporting (RFC 8460) gives compatible sending systems a place to report aggregate TLS and policy-validation results.

A basic reporting record looks like this:
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:tls-reports@example.com"The address is an ingestion point, not automatically a useful mailbox workflow. Reports contain structured JSON and may use the encodings defined by the reporting standard. Decide whether you will use a parser, a hosted reporting service, or an internal pipeline before enabling enforcement.
TLS-RPT can expose:
- Policy-fetch failures.
- MX or certificate mismatches.
- STARTTLS negotiation failures.
- DANE or MTA-STS validation failures reported by participating senders.
- Aggregate successful and failed sessions.
It cannot force a non-participating sender to use TLS, and it does not prove that every message was encrypted. Treat it as an observability layer that helps you find failures which may otherwise appear only as delayed or missing delivery.
How to Verify MTA-STS, DNSSEC, TLSA, and SMTP Delivery
Publishing records is not the same as verifying the deployment. Test from outside the local network and record the output for each MX host.

Bash:
# MTA-STS discovery and policy response
dig +short TXT _mta-sts.example.com
curl -sS -D- https://mta-sts.example.com/.well-known/mta-sts.txt
# TLSA record and DNSSEC-related response information
dig +dnssec TLSA _25._tcp.mail.example.com
# Postfix-specific diagnostic; confirm availability in your installed version
posttls-finger -c -L summary dane:mail.example.com
The commands are diagnostic examples. Confirm the syntax and options against the installed tools and Postfix release before using them in an automation script.
| Test | Pass condition | If it fails |
|---|---|---|
| MX lookup | The public MX set is complete and intentional | Fix DNS or remove stale hosts before enforcement |
| STARTTLS | Every host offers TLS and presents the expected certificate | Check service listener, certificate chain, SNI, and firewall |
| MTA-STS HTTPS | The exact URL returns the expected policy and certificate | Check DNS, CNAME, certificate ownership, proxy route, and response |
| DNSSEC | The relevant zone and TLSA answer validate securely | Check signing, DS, expiry, and resolver validation |
| TLSA | The digest matches the key/certificate served by the MX | Check key rotation, selected certificate, record owner name, and caches |
| TLS-RPT | Reports arrive and are decoded at the intended destination | Check TXT syntax, endpoint authorization, parser, and sender support |
| Delivery | A controlled message succeeds through every intended MX path | Inspect the sending MTA queue/log, remote reports, and DNS state |
Troubleshooting MTA-STS and DANE by Symptom

“Mail Stopped After I Published a TLSA Record”
First check whether the sending MTA validates DANE and whether it sees a secure DNSSEC answer. Then compare the TLSA digest with the public key actually served on port 25. Do not assume that the receiving Mailcow or Postfix log will show a normal message transaction: a sender can reject the destination before MAIL FROM.
Look at the sender’s queue and TLS diagnostics, TLS-RPT data if available, and an external dig +dnssec result. If the problem began after certificate renewal, compare the old and new SPKI values before changing unrelated SMTP settings.
“The MTA-STS Policy Loads in a Browser, but Senders Still Fail”
A browser loading the URL is not enough. Check the exact hostname, certificate identity, response status, content type, policy body, MX entries, TXT id, and whether a reverse proxy is changing the response. Also check whether the sender has a cached older policy listing an MX host that no longer exists.
“MTA-STS Testing Mode Produced No TLS Reports”
A lack of reports does not prove that the policy is correct. Reporting is sender-dependent, and the policy may not be discovered by the senders you tested. Verify the TXT record, the rua destination, report parsing, and a controlled sender that documents TLS-RPT support.
“Only the Backup MX Host Fails”
Compare the backup MX against every layer: MX priority, STARTTLS, certificate, MTA-STS mx entries, TLSA owner name and digest, DNSSEC status, firewall, and queue routing. A primary-only test cannot validate a failover design.
Common MTA-STS and DANE Deployment Mistakes
Publishing a TLSA record for every MX without confirming ownership
An MX target may be controlled by a hosted provider. You cannot manufacture a provider’s TLSA binding from your own domain. Confirm the provider’s documented DANE support and rollover process first.
Changing a policy without changing the MTA-STS TXT id
Senders use the identifier to decide whether to fetch a newer policy. Change the id whenever the policy changes, then verify what external resolvers and the HTTPS endpoint return.
Assuming a green validator replaces operational monitoring
A validator is a point-in-time check. It does not replace certificate-renewal alerts, DNSSEC monitoring, TLS-RPT ingestion, queue inspection, backup MX testing, or a rollback procedure.
Treating outbound enforcement as automatic
Your published policy describes how capable senders should deliver to you. Verify the outbound MTA behavior separately, including DANE, MTA-STS resolver support, queue handling, and failure reporting.
A Safer MTA-STS and DANE Rollout Sequence

For many self-hosted environments, this sequence keeps the first change reversible:
- Confirm MX, PTR, certificates, STARTTLS, DNS, and rollback ownership.
- Publish TLS-RPT and verify that reports can be received and decoded.
- Configure MTA-STS in testing mode with a deliberately short initial cache lifetime.
- Test every MX, including failover, from an external network.
- Review reports and sender-side failures; correct the policy and change the TXT
id. - Move to
enforcewith a cache lifetime that matches your change-management process. - Add DANE only after DNSSEC, TLSA generation, and key rollover are demonstrably reliable.
- Re-test inbound failover and separately verify outbound policy enforcement.
A DNSSEC-mature organization may choose DANE earlier. The order is a recommendation for reducing operational risk, not a protocol requirement.
Final checklist

Before switching to enforcement, confirm that you can answer “yes” to every item below:
- Does every public MX host appear intentionally in DNS and in the MTA-STS policy where applicable?
- Does every MX offer
STARTTLSand present the expected certificate? - Does the MTA-STS hostname return the correct policy over HTTPS from outside your network?
- Does the TXT
idchange when the policy changes? - Does DNSSEC validate securely for every DANE record?
- Does each TLSA digest match the key or certificate served by the corresponding MX?
- Can your team receive and decode TLS-RPT reports?
- Has certificate renewal been tested without silently changing a DANE key?
- Is the rollback owner known, and does the rollback plan account for cached policies and DNS TTLs?
- Have inbound and outbound behavior been tested separately?
MTA-STS and DANE are not “publish once and forget” settings. The durable choice is the one whose trust anchor, certificate lifecycle, DNS lifecycle, monitoring, and rollback process your team can operate when mail is already failing.
MTA-STS and DANE FAQs
Do I need both MTA-STS and DANE?
No. They use different trust anchors and sender support varies. Publishing both can broaden coverage, but it also creates two operational dependencies. If you can maintain only one, choose the mechanism whose HTTPS, certificate, DNSSEC, and rollover processes you can monitor and recover reliably.
Does MTA-STS require DNSSEC?
No. MTA-STS uses an HTTPS policy endpoint and Web PKI. DANE for SMTP is different: authenticated TLSA data depends on a valid DNSSEC chain, so an unsigned or DNSSEC-bogus path cannot provide the intended DANE authentication.
What happens if the MTA-STS policy host goes offline?
A sender that already has a cached policy may continue using that cached copy until its permitted cache lifetime expires. A sender with no usable cached policy may treat the domain as having no available MTA-STS policy. The exact result depends on the sender’s implementation, so test recovery and do not treat a short outage as harmless.
Does DANE break whenever I renew a certificate?
Not necessarily. A 3 1 1 TLSA association uses the public-key information rather than the complete certificate, so a renewal that reuses the same key pair can keep the association valid. If renewal creates a new private key, publish and validate the new association before serving the new key.
What is the commonly used TLSA association for SMTP?
A commonly used association is 3 1 1: DANE-EE, subject public-key information, and SHA-256. The exact record must match the certificate or key actually served by each MX host, and the final choice should be checked against your MTA’s documented behavior.
Does publishing MTA-STS make my outbound Postfix mail enforce recipient policies?
No. Publishing MTA-STS describes how capable senders should deliver mail to your domain. Outbound enforcement is a separate MTA capability and configuration question. Verify Postfix, Mailcow, resolver, policy-client, queue, and failure-reporting behavior independently.
Why might a TLSA failure not appear in my receiving mail logs?
DANE validation is performed by the sending MTA before normal message submission. If the sender rejects the destination during TLS setup, your server may not receive a message transaction to log. Check the sender’s queue and TLS logs, TLS-RPT data, DNSSEC validation, and the live TLSA-to-key match.
Does Mailcow still use a manually uploaded MTA-STS file?
For Mailcow 2025-09 and newer, the current documentation describes a native UI-managed workflow that serves the policy dynamically. Older manual procedures should not be assumed to apply unchanged; check the documentation for your installed Mailcow release and verify the exact HTTPS response.
Was this article helpful?










[…] The transport-security choice deserves its own review because MTA-STS and DANE protect the SMTP delivery path, not the Traefik web edge. For the trust-model, DNSSEC, certificate, rollover, and enforcement differences, see MTA-STS vs DANE for self-hosted mail. […]
[…] Email transport standards such as MTA-STS and DANE improve authentication and downgrade resistance between mail servers, but they still operate at the transport layer. For a practical comparison of these two SMTP security models, see MTA-STS vs DANE for self-hosted mail. […]