DANE for SMTP explained: TLSA Record Format, the Canonical 3 1 1 (DANE-EE / SPKI / SHA-256) Deployment Shape, DNSSEC Dependency, Key Rollover, Provider Support (RFC 7672 + RFC 6698)
The DANE-for-SMTP pillar deep dive (RFC 7672 + RFC 6698): how DANE authenticates the receiving SMTP server certificate using a TLSA record published in DNSSEC-signed DNS, defeating STARTTLS-stripping and SMTP MX downgrade attacks. Covers the threat model, the three moving pieces (DNSSEC + TLSA + STARTTLS-capable SMTP server), the TLSA record format and Usage / Selector / MatchingType field matrix, the canonical 3 1 1 (DANE-EE / SPKI / SHA-256) deployment shape, the end-to-end deployment recipe with worked openssl s_client and dig +dnssec examples, the two-record overlap pattern for key rotation, provider support reference, common mistakes, the operator-grade troubleshooting funnel, and FAQ.
This reference is provided in English. DANE for SMTP is specified in English-language RFCs (RFC 7672, RFC 6698, RFC 8460, RFC 4033-4035) and the canonical vocabulary (TLSA, DANE-EE, PKIX-TA, PKIX-EE, DANE-TA, Selector, MatchingType, SubjectPublicKeyInfo, STARTTLS, DNSSEC, posttls-finger, smtp_tls_security_level) does not translate. We keep the body in the source language so technical terms remain consistent with the specifications.
TL;DR
- DANE for SMTP
(RFC 7672)
authenticates the receiving SMTP server
certificate using a
TLSArecord published in DNSSEC-signed DNS. The sender validates the STARTTLS certificate against the TLSA association before delivering mail. - TLSA record location:
_25._tcp.<mx-hostname>- port + protocol + the MX target hostname, underscore-prefixed. - Canonical TLSA shape:
3 1 1= Usage 3 (DANE-EE) + Selector 1 (SubjectPublicKeyInfo) + MatchingType 1 (SHA-256). The 64-character hex RDATA is the SHA-256 hash of the server certificate's SPKI. - DNSSEC is mandatory. DANE without DNSSEC is meaningless - validating senders treat unsigned TLSA records as absent. The recipient zone must be signed end-to-end up to the root.
- Defeats STARTTLS stripping and SMTP MX downgrade attacks. An attacker who can rewrite SMTP responses on the wire cannot trick the sender into a plaintext delivery when DANE is enforced.
- Receiving-side adopters: Google (consumer Gmail since 2024), Microsoft 365, ProtonMail, Posteo, mailbox.org, Comcast, GMX, web.de, US .gov sector under BOD 18-01, German federal email under BSI TR-03108.
- Sending-side adopters: Google Workspace, Microsoft 365 (outbound since 2022), Comcast, Posteo, mailbox.org, ProtonMail, Hetzner. Postfix 3.0+ is the canonical receiver implementation.
- Single most common mistake: publishing the TLSA record without signing the zone with DNSSEC. The records are silently ignored by every validating sender.
- Coexists with MTA-STS (RFC 8461) - publish both for maximum coverage. See the comparison page for the decision matrix.
1. Overview: what DANE for SMTP solves
SMTP transport security has a structural problem:
the
STARTTLS command that upgrades a
plaintext SMTP session to a TLS-encrypted one is
advertised IN the plaintext part of the
conversation. An attacker on the network path
between sender and recipient can rewrite the
server's
EHLO response to remove the
STARTTLS capability, and the sender,
seeing no offer, falls back to plaintext delivery.
The body, headers, and authentication data all
travel in cleartext.
Even when
STARTTLS succeeds, opportunistic TLS
accepts almost any certificate - mismatched
Common Name, self-signed, expired - because the
alternative is plaintext delivery. An attacker
who can manipulate DNS or BGP can route mail to
an attacker-controlled MX with an attacker
certificate and the sender will happily deliver
over a TLS channel terminated at the attacker.
DANE for SMTP fixes both problems by binding the
expected certificate to a DNSSEC-signed record
at the MX hostname. The sender looks up
_25._tcp.<mx> for a
TLSA record, validates the DNSSEC
chain on both the
MX and
TLSA lookups, and uses the resulting
association to validate the STARTTLS certificate.
If validation succeeds, mail is delivered over
the authenticated TLS channel. If validation
fails (and DNSSEC is secure), mail delivery
aborts with a transient error - the sender
refuses to deliver to an unauthenticated server.
DANE is older than MTA-STS (DANE TLSA is RFC 6698 from 2012; the SMTP profile in RFC 7672 is from 2015) and was the IETF's first attempt at SMTP transport authentication. MTA-STS (RFC 8461, 2018) was designed as a DANE-alternative that does not require DNSSEC. The two standards explicitly coexist - see MTA-STS vs DANE for SMTP for the comparison.
2. The threat model DANE addresses
DANE for SMTP defends the STARTTLS handshake against an attacker who can manipulate DNS responses, SMTP responses, or BGP routing. The specific attacks DANE blocks:
2.1 STARTTLS stripping
The attacker rewrites the SMTP server's EHLO
response on the wire to remove the
STARTTLS capability. The sender,
seeing no offer, delivers in plaintext. Without
DANE the sender cannot distinguish "server does
not support TLS" from "attacker stripped the
STARTTLS advertisement". With DANE the sender
knows from the TLSA record that the recipient
REQUIRES TLS - if STARTTLS is missing,
the sender aborts delivery rather than falling
back to plaintext.
2.2 SMTP MX downgrade
The attacker rewrites the DNS
MX response to point the sender at
an attacker-controlled mail server with an
attacker certificate. Without DANE the sender
accepts the certificate under opportunistic-TLS
rules and delivers the message. With DANE the
sender validates the DNSSEC chain on the MX
record - if the chain is bogus (forged), delivery
aborts; if it is secure, the sender uses the
TLSA records at the attacker's MX hostname, which
the attacker cannot publish without breaking
DNSSEC for the victim zone.
2.3 Certificate substitution
The attacker terminates the TLS connection with a different valid certificate - one issued for a different name, or a self-signed cert, or a cert from a compromised CA. Without DANE the sender accepts the substitute under opportunistic TLS. With DANE the sender hashes the presented SPKI, compares to the TLSA RDATA, and aborts delivery if the hashes differ.
2.4 Compromised CA
A CA in the public root store mis-issues a certificate for the victim domain. Without DANE (and without CAA records and without certificate transparency monitoring), the mis-issued cert is trusted by the sender. With DANE Usage 3 (DANE-EE), the CA chain is NOT consulted - the TLSA record asserts the expected key directly, cutting the CA out of the trust path. A compromised CA cannot subvert a DANE-protected MX.
3. The three moving pieces
DANE for SMTP consists of three independent components that must all be correct for delivery to succeed:
3.1 DNSSEC-signed zone
The recipient zone must be DNSSEC-signed end-to-end up to the root. The MX records, the TLSA records, and every link in the chain (parent zone DS record, root signature) must validate. DNSSEC validation is the cryptographic integrity layer that gives the TLSA record its authenticity - without DNSSEC the TLSA RDATA is just an unauthenticated string an attacker can forge.
Common DNSSEC implementations:
RFC 4033
(architecture),
RFC 4034
(records),
RFC 4035
(protocol). Managed DNS providers that support
DNSSEC signing: Route 53, Cloudflare, Google
Cloud DNS, DigitalOcean, Hetzner, Gandi, Hover,
INWX. Self-hosted options: BIND
dnssec-policy auto-signing, Knot
DNS, PowerDNS with auto-signing.
3.2 TLSA resource record
The
TLSA record is the DNS type defined
in
RFC 6698
(IANA-assigned RR type 52). It is published at a
name constructed from the port and protocol of
the protected service: for SMTP the standard
location is
_25._tcp.<mx-hostname>. One
TLSA record per MX hostname; if a domain has
multiple MX records at different priorities,
each MX target needs its own TLSA record set.
3.3 STARTTLS-capable SMTP server
The receiving SMTP server must terminate STARTTLS with a certificate whose key matches the published TLSA association. The certificate does NOT need to be from a public CA when Usage is 3 (DANE-EE) - DANE explicitly supports self-signed certificates because the TLSA record IS the trust assertion. Major MTAs that work correctly with DANE on the inbound side: Postfix (any version), Exim 4.95+, Sendmail with TLS patches, Halon, Microsoft Exchange (with DANE inbound support announced for 2023).
4. The TLSA record format
A TLSA record has four fields per RFC 6698 section 2.1:
| Field | Values | Meaning |
|---|---|---|
| Usage | 0 (PKIX-TA), 1 (PKIX-EE), 2 (DANE-TA), 3 (DANE-EE) | What the record asserts about - CA constraint, end-entity in CA chain, trust anchor outside web PKI, or end-entity bypassing CA chain entirely. |
| Selector | 0 (full certificate), 1 (SubjectPublicKeyInfo) | What part of the certificate is hashed - the entire DER-encoded cert or just the SPKI (the public key plus algorithm identifier). |
| MatchingType | 0 (full match, no hash), 1 (SHA-256), 2 (SHA-512) | Whether the Certificate Association Data is the raw bytes or a SHA-256 / SHA-512 hash. |
| Certificate Association Data | Hex string | The hash output (64 chars for SHA-256, 128 chars for SHA-512) or the full raw bytes encoded in hex when MatchingType is 0. |
4.1 Usage field detail
Usage 0 (PKIX-TA): the Certificate Association Data identifies a CA certificate that MUST be in the certification path. The sender still runs the full PKIX validation against the public root store AND requires that the named CA appears in the chain. Tightens which CA can issue your cert.
Usage 1 (PKIX-EE): the data identifies the end-entity certificate that MUST be served. The cert STILL must validate normally against the public root store. Pins the leaf cert. Vulnerable to PKIX CA compromise (any valid leaf still passes PKIX).
Usage 2 (DANE-TA): the data identifies a trust anchor that REPLACES the public root store. The leaf certificate must chain to this trust anchor; the public CA system is NOT consulted. Useful for private CAs or self-administered hierarchies.
Usage 3 (DANE-EE): the data identifies the end-entity certificate or its key directly. NO PKIX validation is performed - the cert does not need to chain to ANY trust anchor. The TLSA record IS the entire trust assertion. This is the RECOMMENDED shape for SMTP per RFC 7672 section 3.1.3 because (a) it removes the CA dependency entirely, (b) it survives public CA compromise, (c) when combined with Selector 1 (SPKI) it survives certificate renewals as long as the key stays the same.
4.2 Selector field detail
Selector 0 (Cert): the data matches the full DER-encoded X.509 certificate. Every certificate renewal (including a renewal with the same key pair) changes the cert bytes and breaks the TLSA association. Operationally fragile - requires a TLSA rotation per certificate rotation.
Selector 1 (SPKI): the data matches just the SubjectPublicKeyInfo. A new certificate that reuses the same key pair has the same SPKI and stays bound to the same TLSA record. STRONGLY preferred for operational sanity - certificate renewals (which keep the key by default with most ACME clients) require zero DNS changes.
4.3 MatchingType field detail
MatchingType 0 (Full): the Certificate Association Data is the raw cert / SPKI bytes in hex - hundreds of bytes per record. Operationally heavy and rare in practice.
MatchingType 1 (SHA-256): 32-byte (64-hex-character) SHA-256 hash. The RECOMMENDED choice for SMTP - compact, widely implemented, cryptographically strong.
MatchingType 2 (SHA-512): 64-byte (128-hex-character) SHA-512 hash. Used where SHA-256 is considered insufficient (rare for transport-layer SMTP); also accepted by all DANE validators per RFC 6698.
5. The canonical TLSA shape: 3 1 1 (DANE-EE / SPKI / SHA-256)
Across the Internet's DANE-publishing zones the
overwhelmingly dominant TLSA shape is
3 1 1 - Usage 3 + Selector 1 +
MatchingType 1. RFC 7672 section 3.1.3
explicitly recommends this combination for
SMTP. The reasoning:
- Usage 3 (DANE-EE) - cuts out the CA dependency. The TLSA record is the entire trust assertion. A compromised CA cannot mint a cert that subverts your MX. Self-signed certificates work natively.
- Selector 1 (SPKI) - keys rather than certificates are pinned. Certificate renewals that reuse the key pair (the default for Let's Encrypt / certbot, the default for ACME, the default for almost every cert-rotation tool) need zero DNS changes. Operationally cheap.
- MatchingType 1 (SHA-256) - compact (64 hex characters), widely implemented, cryptographically strong, no security concerns for transport-layer SMTP.
Observed in the wild for DANE-publishing receivers: every major German hoster (Posteo, mailbox.org, GMX, web.de, Hetzner) publishes 3 1 1. ProtonMail, Comcast, Microsoft 365, and consumer Gmail all publish 3 1 1. The US .gov sector under BOD 18-01 publishes 3 1 1. The BSI TR-03108 mandate specifies 3 1 1.
Other shapes (Usage 2, MatchingType 2, Selector 0) appear occasionally for specific deployments but are not the recommended starting point. Senders MUST accept any valid shape per RFC 6698 so operationally you can mix shapes during a migration - publish a 3 1 1 alongside a transitional 2 1 1 if rotating from a private CA to DANE-EE, for example.
6. Deployment recipe
The end-to-end deployment for a single MX hostname:
6.1 Confirm DNSSEC is signed
DANE requires DNSSEC end-to-end. Verify with dig:
dig +dnssec +short example.com SOA
dig +dnssec example.com DNSKEY +short
dig DS example.com @<parent-resolver>
The
SOA response must include an
RRSIG in the answer section, the
DNSKEY query must return at least
one KSK + ZSK, and the parent zone must publish
a
DS record pointing at the KSK. If
any of these are missing, fix DNSSEC FIRST
before publishing TLSA records.
6.2 Extract the SPKI and hash it
For each MX hostname's certificate, extract the SubjectPublicKeyInfo and hash with SHA-256:
# From a PEM certificate file:
openssl x509 -in mx.crt -noout -pubkey | \
openssl pkey -pubin -outform DER | \
sha256sum | awk '{print $1}'
# From a live STARTTLS endpoint:
openssl s_client -starttls smtp -connect mx.example.com:25 -servername mx.example.com 2>/dev/null | \
openssl x509 -noout -pubkey | \
openssl pkey -pubin -outform DER | \
sha256sum | awk '{print $1}'
The output is a 64-character lowercase hex string - the SHA-256 hash of the SPKI. That string becomes the TLSA RDATA.
6.3 Publish the TLSA record
Add to the zone file:
_25._tcp.mx.example.com. IN TLSA 3 1 1 \
abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789
One TLSA RR per MX hostname. If example.com has
two MX records (
mx1.example.com and
mx2.example.com ), publish two TLSA
records, one at each MX's
_25._tcp name. Re-sign the zone
and confirm with
dig +dnssec TLSA _25._tcp.mx.example.com -
the answer must include both the
TLSA record AND its
RRSIG.
6.4 Verify with a DANE-validating sender
The fastest path to confirm DANE is working end-to-end is to test from a known-good validator:
# DANE validation via posttls-finger (Postfix 2.11+):
posttls-finger -t10 -T30 -L summary,verbose,untrusted \
-P /etc/ssl/certs/ -l dane mx.example.com
# Online testers:
# - https://www.huque.com/bin/danecheck (well-maintained)
# - https://www.tlsa-generator.com/ (record builder + validator)
# - https://internet.nl/mail/ (full SMTP transport-security audit)
A successful test shows the TLSA record matched the presented certificate and the DNSSEC chain validated. A failed test shows where in the chain validation broke - missing RRSIG, SHA-256 mismatch, DNSKEY-DS mismatch, etc.
6.5 Add TLS-RPT for observability
Publish a TLS-RPT record at
_smtp._tls.example.com per
RFC 8460
to receive failure reports from DANE-validating
senders. Without TLS-RPT a botched DANE
deployment fails silently from the sender's
perspective and you only discover the problem
via bounce reports days later.
Example TLS-RPT record:
_smtp._tls.example.com. IN TXT "v=TLSRPTv1; rua=mailto:tlsrpt@example.com"
See help_tls_rpt_explained.php for the full TLS-RPT deployment guide.
7. Provider support reference
DANE for SMTP support varies significantly by provider and by direction (sending vs. receiving). Up-to-date as of 2026:
7.1 Receivers (publishers of TLSA records)
- Google - consumer Gmail
published TLSA on
gmail-smtp-in.l.google.comin 2024. Google Workspace MX endpoints (aspmx.l.google.comand siblings) publish TLSA records as part of the consumer rollout. - Microsoft 365 - inbound
DANE support rolled out in 2023 on
*.mail.protection.outlook.comMX endpoints. Microsoft's official guide: Microsoft Learn / Exchange Online documentation. - ProtonMail - publishes TLSA on all proton-managed MX endpoints since 2019.
- Posteo - long-standing DANE publisher (since 2016); the reference German privacy-focused mailbox provider.
- mailbox.org - publishes TLSA for all customer MX endpoints since 2017.
- Comcast - publishes TLSA
on consumer
comcast.netand businessxfinity.comMX endpoints. - GMX / web.de (German 1and1) - both publish TLSA on their public MX endpoints.
- US .gov sector - the BOD 18-01 binding operational directive mandated DANE for federal email; many agencies meet the requirement on their public MX endpoints.
- German federal email - BSI TR-03108 mandates DANE for federal executive-branch email in Germany.
7.2 Senders (validators of TLSA records)
- Google Workspace - outbound DANE validation since 2022; gradual rollout completed across all customer sending IPs.
- Microsoft 365 - outbound DANE validation since late 2022 / early 2023. Required reading: the M365 DANE outbound rollout post on the Microsoft Tech Community blog.
- Comcast - DANE validation on outbound consumer + business mail since 2018.
- Posteo, mailbox.org, ProtonMail - all three validate DANE on outbound mail natively.
- Hetzner / 1and1 IONOS / united.de - German hosters' outbound MTAs validate DANE natively.
7.3 MTA implementations
- Postfix 3.0+ - canonical
DANE receiver and sender implementation.
Sending side:
smtp_dns_support_level = dnssec+smtp_tls_security_level = daneordane-only. Receiving side: publish TLSA at_25._tcp.<mx>; Postfix does not need any special config to be DANE-served. - Exim 4.95+ - DANE support
via
hosts_request_dane+dnssec_request_domainson the SMTP transport. - OpenSMTPD - DANE support landed in version 6.7.0+.
- Microsoft Exchange / Exchange Online - inbound DANE rolled out 2023; outbound DANE rolled out 2022.
8. Key rollover without breaking mail
The two-record overlap pattern is the standard DANE rotation procedure:
- Generate the NEW key pair and obtain the new certificate. Do NOT switch the SMTP server to the new cert yet.
- Compute the SHA-256 SPKI hash of the new cert.
- Publish the NEW TLSA record ALONGSIDE the
existing TLSA record:
Two TLSA records at the same name. RFC 7672 section 7 specifies that senders MUST accept any one of the published records._25._tcp.mx.example.com. IN TLSA 3 1 1 <old-hash> _25._tcp.mx.example.com. IN TLSA 3 1 1 <new-hash> - Wait at least 2x the longest TTL of the TLSA record set for sender caches to refresh. Default TTL of 24h means wait 48h; many operators use a 1h TLSA TTL specifically to keep the rollover window short.
- Switch the SMTP server to the new certificate. Senders accept either certificate during the overlap.
- Wait one more TTL after the certificate switch (for senders that fetched the OLD cert + OLD TLSA pair to retry with the new cert during the overlap).
- Remove the OLD TLSA record. Re-sign the zone.
Key reuse short-circuits this entire procedure: if you renew the certificate with the SAME key pair (the default behavior for Let's Encrypt certbot, the default for ACME clients, the default for most cert rotations), the SPKI is unchanged and the existing TLSA record continues to match. Zero DNS changes for a same-key renewal. This is the operational reason RFC 7672 recommends Selector 1 (SPKI).
9. Common mistakes
- Publishing TLSA without DNSSEC.
Every validating sender silently ignores
unsigned TLSA records. Symptom: mail
continues to flow over opportunistic TLS;
DANE is not actually enforced. Detection:
dig +dnssec TLSA _25._tcp.<mx>returns the record without an RRSIG. Resolution: enable DNSSEC signing on the zone before claiming DANE. - Wrong owner name. Publishing
the TLSA record at the parent domain
(
_25._tcp.example.com) instead of the MX hostname (_25._tcp.mx.example.com) is the most common shape error. The MX RDATA names which target the TLSA record must accompany. - Missing TLSA for secondary MX. A zone with two MX records but only one TLSA-protected MX hostname creates a hole - an attacker who can knock the primary MX offline drives senders to the unprotected secondary. Every MX hostname needs its own TLSA record set.
- Hashing the cert instead of the
SPKI. When Selector is 1 the hash
must be of the SubjectPublicKeyInfo, NOT
the entire cert. A common scripting mistake
is to
sha256sum mx.crtdirectly, which hashes the PEM file (or the DER cert with Selector 0 semantics). Use the explicit openssl pipeline in section 6.2. - Hashing in the wrong format.
The hash input must be the DER bytes of the
SPKI, not the PEM encoding. The openssl
pipeline
... | openssl pkey -pubin -outform DERhandles this; a manualcat pubkey.pem | sha256sumwill produce the wrong hash. - Not rotating the TLSA before the certificate. Switching the SMTP cert before the new TLSA record has propagated breaks delivery for every DANE-validating sender. Always publish the new TLSA, wait for propagation, THEN switch the cert.
- Selecting Selector 0 (full cert) when Selector 1 was intended. Every certificate renewal then breaks DANE unless the TLSA record is rotated in lockstep. Use Selector 1 for operational sanity.
- Forgetting to publish DS at the
parent. A signed child zone with
no DS record at the parent means the parent
does not advertise the child as signed,
so resolvers do not validate. The zone
appears signed locally but unsigned to the
Internet. Verify with
dig DS example.com @parent-resolver.
10. Troubleshooting funnel
When DANE-validating senders report delivery failures (visible in TLS-RPT or in bounce messages mentioning "DANE", "TLSA", or "STARTTLS"), work the funnel from cheapest diagnostic to deepest:
- Does DNSSEC validate? Run
dig +dnssec example.com SOA- the response must include an RRSIG. Rundelv example.com SOA- the AD (Authenticated Data) flag must be set (; fully validatedin delv output). If DNSSEC is broken, fix that first. - Does the TLSA record exist and
validate?
dig +dnssec TLSA _25._tcp.<mx>- the answer must contain a TLSA record AND an RRSIG. If the RRSIG is missing the record is unsigned and DANE will not apply. - Does the TLSA hash match the
currently-served cert? Run the
openssl pipeline in section 6.2 against
the live MX (
openssl s_client -starttls smtp ...) and compare to the published RDATA. A mismatch means the cert and the TLSA record have drifted - either the cert was rotated without updating TLSA, or the TLSA was generated against the wrong cert. - Does the test from an external
validator pass?
posttls-finger -l dane <mx>from any Postfix 2.11+ host - or one of the online validators in section 6.4. The validator output names the exact failure mode. - Are the TLS-RPT reports arriving?
Check the
rua=mailbox is receiving reports - DANE-validating senders submit TLS-RPT reports for each failure. If reports are not arriving, TLS-RPT itself may be misconfigured; see help_tls_rpt_explained.php. - Did the cert just rotate? If the cert was renewed in the last 24 hours and the renewal used a DIFFERENT key pair (some ACME workflows do this by default), the TLSA record is stale. Publish a new TLSA record for the new SPKI hash following the rollover procedure in section 8.
11. Frequently asked questions
- What is DANE for SMTP?
-
DANE for SMTP (RFC 7672) is a transport-
security standard that authenticates the
receiving SMTP server certificate using a
TLSA record published in DNSSEC-signed DNS.
The sender looks up
_25._tcp.<mx>for a TLSA record, validates DNSSEC on both the MX and TLSA lookups, and uses the association to verify the STARTTLS certificate. DANE defeats STARTTLS-stripping and SMTP MX downgrade attacks. - What is a TLSA record?
-
A TLSA record is the DNS resource record
defined in RFC 6698 that associates a TLS
certificate or public key with a domain.
For SMTP the record lives at
_25._tcp.<mx-hostname>with four fields: Usage, Selector, MatchingType, and the Certificate Association Data. The canonical SMTP shape is3 1 1- DANE-EE / SPKI / SHA-256. - Why does DANE for SMTP require DNSSEC?
- DANE relies on DNSSEC for integrity. Without DNSSEC an attacker could simply forge a TLSA response that points at the attacker certificate. RFC 7672 section 2.2 mandates DNSSEC validation on both the MX and TLSA records - if either chain is bogus the sender MUST NOT use the association. If either chain is insecure (unsigned) DANE does not apply.
- What does the TLSA notation 3 1 1 mean?
- Usage 3 (DANE-EE - end entity, no PKIX), Selector 1 (SubjectPublicKeyInfo - match the public key only), MatchingType 1 (SHA-256 hash). The canonical SMTP shape per RFC 7672 section 3.1.3 - cuts CA out of the trust path, survives certificate renewals that reuse the key.
- How do I generate a TLSA record for my SMTP server?
-
Extract the SubjectPublicKeyInfo, hash with
SHA-256, hex-encode. With openssl:
openssl x509 -in mx.crt -noout -pubkey | openssl pkey -pubin -outform DER | sha256sum. Publish as_25._tcp.mx.example.com IN TLSA 3 1 1 <hex>. After publishing, sign the zone and verify withdig +dnssec TLSA _25._tcp.mx.example.com. - Which mail providers support DANE for SMTP?
- Receiving: Google (consumer Gmail since 2024), Microsoft 365, ProtonMail, Posteo, mailbox.org, Comcast, GMX, web.de, US .gov sector under BOD 18-01, German federal email under BSI TR-03108. Sending: Google Workspace, Microsoft 365 (outbound since 2022), Comcast, Posteo, mailbox.org, ProtonMail, Hetzner. Postfix 3.0+ is the canonical receiver implementation.
- How do I rotate a DANE TLSA record without breaking mail?
- Two-record overlap: publish the NEW TLSA alongside the OLD, wait at least 2x the TTL for cache propagation, switch the server certificate, wait one more TTL, remove the old TLSA. With Usage 3 + Selector 1 the rotation only matters when the KEY changes - certificate renewals that reuse the same key (the default for ACME clients) need zero DNS changes.
- What happens if my DNSSEC validation fails for DANE?
- Per RFC 7672 section 2.2, a sender that detects a bogus DNSSEC chain MUST NOT use the TLSA association AND MUST treat the delivery attempt as a transient failure - the sender retries later. Bogus DNSSEC is treated as an active attack signal, not a fallback opportunity. Unsigned (insecure) chains mean DANE does not apply and the sender uses MTA-STS or opportunistic TLS.
- Can DANE for SMTP be deployed alongside MTA-STS?
- Yes - this is the recommended pattern. The standards explicitly coexist (RFC 7672 section 1.3). A sender that supports both prefers DANE when a TLSA record is present and DNSSEC validates, and falls back to MTA-STS when DANE does not apply. Publishing both means DANE-capable senders use the DNSSEC-based binding and others use the MTA-STS policy. See help_mta_sts_vs_dane.php for the comparison.
13. Check your current DANE posture
DMARC Analyzer's free Domain Security Checker
performs live DMARC + SPF + DKIM + MTA-STS +
BIMI + DNSSEC lookups against any domain. Use it
to verify DNSSEC validates correctly on your
zone (the DANE prerequisite), confirm your
MTA-STS policy publishes the right MX targets,
and identify the MX hostnames that need TLSA
records. The DNS Record Generator builds
syntactically-correct DANE TLSA records with
the canonical 3 1 1 (DANE-EE / SPKI / SHA-256)
shape directly from your SMTP server
certificate. Imported TLS-RPT reports (via
includes/TlsRptParser.php) drive
the dashboard that surfaces transport-security
failures and reveals when DANE-validating
senders fall back to plaintext or refuse
delivery.