The task. A client’s messages must not silently go out in plain text when the receiver expected encryption. The default behavior is to encrypt if offered, otherwise send as is and tell no one.
What it is made of:
The parts have different scopes. All three are enabled per recipient. DANE needs a resolver with DNSSEC support — this is a node condition, and without it DANE records cannot be trusted.
How they interact. The three parts are ordered by how much they demand from the receiver. Refusing to downgrade demands nothing and will not deliver mail to anyone who does not offer encryption. DANE and MTA-STS work only with those who published requirements themselves, and when the conditions are not met they do not send the message in plain text. They trust different things — signed DNS and a policy over HTTPS — so together they cover more receivers. What the scheme does not give is the number of messages that went out in plain text where nothing was required.
Three methods and what they need:
| Method | Line | What is required of the receiver | Node condition |
|---|---|---|---|
| DANE | use-dane | signed records with a fingerprint | a resolver with DNSSEC |
| MTA-STS | use-mta-sts | a policy over HTTPS | — |
| no downgrade | require-starttls | nothing | — |
<domain *> use-mta-sts yes use-dane yes</domain> <domain bank.example> require-starttls yes </domain>
pmta show settings gmail.com/vmta1 | grep -E '^(use-dane|use-mta-sts|require-starttls) '