Preventing SMTP downgrade attacks
Without MTA-STS or DANE, an attacker who can strip the STARTTLS capability causes mail to be delivered in cleartext. Enforce mode makes that a delivery failure instead.
Validates MTA-STS policy (mta-sts.<domain>) and TLS-RPT reporting (smtp-tls-reporting).
Checks the mta-sts TXT record, fetches /.well-known/mta-sts.txt over HTTPS, and reads the _smtp._tls TLS-RPT record.
Validates MTA-STS policy (mta-sts.<domain>) and TLS-RPT reporting (smtp-tls-reporting).
example.com
MTA-STS: v=STSv1; mode=enforce; mx: mail.example.com · TLS-RPT: rua=mailto:tls@example.com
Both records are fetched and explained.
MTA-STS tells senders to require TLS; TLS-RPT collects failure reports.
Your input is sent to YAS infrastructure because the tool requires server-side processing or public network queries. Input is not stored.
curl -X POST "https://yas.sh/api/v1/tools/mta-sts-tlsrpt" \
-H "Content-Type: application/json" \
-d '{"input":"example.com"}'const res = await fetch("https://yas.sh/api/v1/tools/mta-sts-tlsrpt", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"input": "example.com"
}),
});
const data = await res.json();import requests
r = requests.post("https://yas.sh/api/v1/tools/mta-sts-tlsrpt", json={"input":"example.com"})
data = r.json()| Field | Type | Required | Description |
|---|---|---|---|
| input | string | Yes | Domain, e.g. example.com |
{ "result": { "stsTxt": { "found": true, "id": "20260808", "valid": true }, "policy": { "found": true, "mode": "enforce", "maxAge": 86400, "mx": ["mx1.example.com"] }, "tlsrpt": { "found": true, "rua": ["tlsrpt@example.com"] }, "issues": [] } }MTA-STS (mta-sts TXT + /.well-known/mta-sts.txt) and TLS-RPT (_smtp._tls TXT) validation.
400 VALIDATION_ERROR — invalid input or unsupported option.413 PAYLOAD_TOO_LARGE — input exceeds the 64 KB limit.429 RATE_LIMIT_EXCEEDED — rate limit exceeded (60 req/min).MTA-STS (RFC 8461) fixes SMTP's downgradable opportunistic TLS without requiring DNSSEC. A domain publishes a TXT record at _mta-sts.<domain> carrying a policy id, and serves a policy file over HTTPS at https://mta-sts.<domain>/.well-known/mta-sts.txt listing permitted MX hostnames, a mode (testing, enforce, none) and a max_age. Sending servers fetch and cache the policy, and in enforce mode refuse to deliver if TLS or the MX name does not match.
TLS-RPT (RFC 8460) is the feedback channel: a TXT record at _smtp._tls.<domain> names an address to receive daily JSON reports of TLS negotiation successes and failures from participating senders. Together they provide enforcement plus visibility — the policy file supplies the trust anchor through the web PKI rather than through DNSSEC, which is the practical difference from DANE.
Without MTA-STS or DANE, an attacker who can strip the STARTTLS capability causes mail to be delivered in cleartext. Enforce mode makes that a delivery failure instead.
Where signing the zone is not feasible, MTA-STS provides comparable protection using HTTPS as the trust anchor.
TLS-RPT reports show which senders failed to negotiate TLS and why — data otherwise invisible to a receiving domain.
Testing mode reports failures without blocking delivery, which is how you discover the MX host missing from your policy list.
What this tool deliberately does not do, and where it will disagree with other implementations.