Skip to content
AdminKit

Does your mail server actually enforce STARTTLS?

STARTTLS lets two mail servers upgrade a plaintext SMTP connection to an encrypted one, but by default that upgrade is opportunistic, not mandatory — if an attacker sitting on the network path strips out the STARTTLS offer, most mail servers will simply fall back to sending the message in plaintext rather than refuse to deliver it at all.

By AdminKit team, Netbase JSC · Updated October 22, 2026

Opportunistic encryption, by design

RFC 3207 defines STARTTLS as an SMTP extension: a receiving mail server advertises support for it, and a sending server that also supports it can issue the STARTTLS command to upgrade the connection to TLS before any message data is transmitted. This solved a real deployment problem when it was introduced — mail servers across the internet could start encrypting connections to each other incrementally, without every server needing to support encryption on day one, because an unencrypted fallback kept mail flowing between servers that hadn’t upgraded yet.

That same incremental-adoption design is exactly what makes STARTTLS weaker than it looks today. Because the fallback to plaintext is the expected, standards-compliant behavior when TLS can’t be negotiated, a sending server has no built-in way to distinguish “the recipient genuinely doesn’t support TLS” from “an attacker on the network path just stripped out the STARTTLS offer to force plaintext.” Both look identical from the sending server’s point of view, and in both cases, the default behavior is to send the message anyway.

The STARTTLS stripping attack

This downgrade technique doesn’t require breaking TLS’s cryptography at all — it targets the negotiation that happens before encryption starts. An attacker with a position on the network path (a compromised router, a rogue access point, or access to transit infrastructure) can intercept the plaintext portion of the SMTP conversation and simply delete or corrupt the server’s STARTTLS announcement before it reaches the sending server. The sending server, seeing no STARTTLS support advertised, proceeds with a normal plaintext delivery — and because nothing about the resulting connection looks like an error, neither mail server necessarily logs anything unusual.

Mandatory TLS: the alternative that doesn’t fall back

The practical fix is a receiving domain publishing a policy that tells senders, in advance and out-of-band, “don’t fall back to plaintext for us, ever.” MTA-STS, defined in RFC 8461, does exactly that: a domain publishes a policy file over HTTPS (discovered via a DNS TXT record) declaring that mail to it must be delivered over TLS with a certificate the sender can validate. Because a sending server fetches this policy ahead of time rather than relying on what the live connection claims to support, an attacker stripping the STARTTLS offer in real time can no longer force a silent downgrade — the sending server already knows, independently, that plaintext delivery to this domain isn’t acceptable, and will refuse to deliver rather than fall back. DANE/TLSA solves a related problem a different way, using a DNSSEC-signed DNS record to pin exactly which certificate a mail server should present, instead of a web-hosted policy file.

How to tell which one you actually have

Most mail administrators assume STARTTLS is “handled” once it’s enabled, without checking whether it’s enforced or merely offered. The practical difference only shows up when something strips it — which is exactly the scenario a routine check won’t normally trigger on its own. The useful question to ask isn’t just “does my server support STARTTLS” (almost all modern mail servers do), but “does my domain also publish an MTA-STS policy that prevents a downgrade if STARTTLS is ever stripped in transit.”

  1. Confirm your mail server’s certificate and TLS configuration with AdminKit’s SSL/TLS check tool — a valid, current certificate is a prerequisite for mandatory TLS to work at all, since a sending server enforcing MTA-STS will refuse to deliver to a certificate it can’t validate.
  2. Check your domain’s DNS for an MTA-STS policy record using AdminKit’s DNS lookup tool, looking for the _mta-sts TXT record MTA-STS defines, alongside your existing MX records.
  3. If no MTA-STS policy exists yet, that’s the gap to close — publishing one moves your domain from “we hope senders keep using the encrypted path” to “senders who support MTA-STS are required to.”

Why this still matters even with good authentication records

A domain can have SPF, DKIM, and DMARC fully configured and still have no protection against a STARTTLS downgrade, because authentication and transport encryption solve different problems — one verifies who sent a message and that it wasn’t altered after transit, the other protects the message while it’s in transit. Treat MTA-STS as the transport-layer complement to an already-solid authentication setup, not a replacement for it.

This guide is general information, not a security audit of your specific network — see our disclaimer for what AdminKit's guidance does and does not commit to.

Frequently asked questions

What does STARTTLS actually do?

Defined in RFC 3207, STARTTLS is an SMTP extension that lets a mail server offer to upgrade an existing plaintext connection to an encrypted TLS connection before any message content is sent, rather than requiring a separate encrypted port from the start.

If STARTTLS encrypts the connection, what's the problem?

The upgrade is opportunistic by design — a sending server that doesn't see a STARTTLS offer, or whose attempt to negotiate one fails, will typically fall back to sending the message unencrypted rather than refuse delivery. An attacker positioned on the network path can exploit this by stripping the STARTTLS announcement from the connection, a classic downgrade attack, leaving the message to go out in plaintext with neither party necessarily noticing.

What's the difference between opportunistic and mandatory TLS for mail?

Opportunistic TLS encrypts the connection when both sides support it, but delivers the message either way. Mandatory TLS refuses to deliver the message at all if an encrypted connection to a trusted certificate can't be established — a much stronger guarantee, but one that depends on the sending server having a defined policy telling it mandatory TLS is expected for this particular recipient domain.

How does MTA-STS fix this?

MTA-STS (RFC 8461) lets a domain publish a policy, via DNS and HTTPS, declaring that it only accepts mail over TLS with a trusted certificate — so a sending server that supports MTA-STS will refuse to deliver mail in plaintext to that domain even if an attacker strips the STARTTLS offer, because the policy was fetched out-of-band ahead of time, not negotiated live in the vulnerable connection itself.

Does fixing SPF/DKIM/DMARC also fix the STARTTLS problem?

No — SPF, DKIM and DMARC authenticate who a message claims to be from and whether it was tampered with in transit by the time it arrives, but they don't guarantee the transport connection carrying it was encrypted. A message can pass every authentication check and still have crossed the network in plaintext if STARTTLS wasn't enforced.

How do I check my own mail server's TLS setup?

AdminKit's [SSL/TLS check](/tools/ssl-check/) tool can confirm a server presents a valid certificate and supports current TLS versions; confirming whether your domain also publishes an MTA-STS policy requires checking its DNS records and the policy file your domain serves over HTTPS.

Want AdminKit to watch this for you?

Free checks tell you the state today. Protective DNS and monitoring tell you when it changes.