Email authentication

BIMI record and MTA-STS explained

BIMI puts your logo next to your messages in the inbox; MTA-STS makes other mail servers use verified TLS when they deliver to you. Both are a DNS record plus a file on a web server. Here are the requirements, the records and the order to set them up.

Updated October 10, 2026 · 9 min read

BIMI record at default._bimi.example.org with logo and certificate URLs and its requirements, and an MTA-STS policy file in testing mode

A BIMI record is a DNS TXT record that tells mailbox providers where to find your brand logo, so they can show it next to your messages. MTA-STS is the transport-security counterpart: a TXT record and a small policy file that make sending servers deliver to you only over verified TLS. Neither works without groundwork: BIMI needs DMARC at enforcement, and MTA-STS needs a web server with a valid certificate. Here is what each provider requires, the records you publish and how to roll them out.

BIMI requirements: DMARC, logo and certificate

BIMI (Brand Indicators for Message Identification) is still an Internet-Draft, not an RFC: revision 14 from May 1, 2026 is an individual draft. Each mailbox provider decides on its own when to show a logo, so the rules below come from each provider’s own page.

RequirementGmailYahooApple Mail
DMARC policyp=quarantine or p=reject, pct=100p=quarantine or p=rejectDMARC required
LogoSVG Tiny PS, at least 96 × 96 pixelsSVGNot specified
CertificateVMC or CMCNot required; a VMC counts toward eligibilityVMC or another BIMI evidence document
Other conditionsCheckmark only with a VMCBulk mail only, with “sufficient reputation and engagement”iOS 16, iPadOS 16, macOS Ventura 13 or later, iCloud.com

Sources: Google, Yahoo, Apple.

DMARC at enforcement

The BIMI draft asks for a strong DMARC policy on both the organizational domain and the domain in the From line: p=reject, or p=quarantine with pct=100, and no sp=none for subdomains. The BIMI Group implementation guide puts it the same way: “None” policies and a pct below 100 are not accepted, and all of your mail should be authenticated with SPF, DKIM and DMARC, with alignment.

Two details for records written under RFC 9989, the DMARC standard since May 2026:

A BIMI-ready DMARC record:

_dmarc.example.com.  TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com"

Getting there takes weeks of reports at p=none first; the rollout is in what is a DMARC record.

The logo: SVG Tiny PS

The logo must be an SVG file in the Tiny Portable/Secure profile. The BIMI Group’s SVG guidance lists what that means:

A skeleton with those attributes:

<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny-ps" viewBox="0 0 512 512">
  <title>Example Inc</title>
  <rect width="512" height="512" fill="#ffffff"/>
  <!-- logo paths, centered -->
</svg>

Check the file against these rules before you order a certificate, so the certificate is issued for the logo you actually publish.

VMC or CMC

A mark certificate proves that the logo belongs to the organization that owns the domain. The BIMI Group describes two types:

Google warns that registering a trademark can take 6 to 12 months and points to the BIMI Group’s list of certificate issuers. Self-asserted records, without a certificate, work at only a few providers; the BIMI Group names Yahoo, Fastmail and La Poste.

BIMI record: syntax and examples

The record is a TXT record at <selector>._bimi.<domain>. Without a selector, providers look up default:

default._bimi.example.com.  TXT  "v=BIMI1; l=https://example.com/bimi/logo.svg; a=https://example.com/bimi/vmc.pem"
TagRequiredWhat it holds
vYes, firstBIMI1
lYesOne HTTPS URL of the SVG logo
aNoOne HTTPS URL of the mark certificate (VMC or CMC) as a PEM file
lpsNoLocal-part selector, for different logos per sending address (draft 14)
avpNobrand (default) or personal: whether a personal avatar or the brand logo is shown where providers support avatars (draft 14)

Rules from the draft worth knowing:

BIMI-Selector: v=BIMI1; s=brand2;

Subdomains. Yahoo honors BIMI records on subdomains but prefers BIMI and DMARC on the organizational domain. A logo for news.example.com mail goes at default._bimi.news.example.com.

No BIMI generator needed. Since the record is one line with two URLs, fill in the template above. What actually takes time is the DMARC rollout, the SVG file and the certificate. After you publish, Google says the logo can take up to 48 hours to appear.

MTA-STS: policy file and TXT record

SMTP between mail servers usually uses opportunistic TLS, which RFC 8461 calls weak: any attacker who can delete parts of the SMTP session can strip the encryption, or redirect the session to another server. MTA-STS (RFC 8461) lets your domain say “my MX hosts support TLS with a valid certificate; don’t deliver otherwise.” It protects mail that others send to you, so it is about the domains that receive mail, while SPF, DKIM, DMARC and BIMI are about what you send.

Gmail complies with MTA-STS when it sends to domains with a policy in enforce mode (Google), and Exchange Online validates MTA-STS for all outbound mail, with no setting to turn on (Microsoft).

MTA-STS has two parts.

1. The TXT record at _mta-sts.<domain>:

_mta-sts.example.com.  TXT  "v=STSv1; id=20261010T120000"

id is 1 to 32 letters and digits that identify the current policy version. Change it every time you change the policy file: senders cache the policy until max_age runs out and use the id to notice that a new one exists. Google and Microsoft both suggest the date and time as the value.

2. The policy file at a fixed URL, served over HTTPS:

https://mta-sts.example.com/.well-known/mta-sts.txt
version: STSv1
mode: testing
mx: mx1.example.com
mx: mx2.example.com
max_age: 604800
FieldValuesNotes
versionSTSv1Must be the first line (Google).
modeenforce, testing, nonetesting: deliver anyway and report failures. enforce: don’t deliver to an MX that fails.
mxOne line per MX hostMust cover every MX record of the domain; *.example.net matches one leftmost label.
max_ageSeconds, up to 31557600How long senders cache the policy. Google recommends 604800 to 1209600 (one to two weeks) while testing.

Hosting rules from RFC 8461 that cause most setup failures:

Microsoft 365. If your MX points straight to Exchange Online, Microsoft’s example policy uses mx: *.mail.protection.outlook.com; use that wildcard only if all your mail goes to Exchange Online, and list other providers’ MX hosts as well. Exchange Online doesn’t host the policy file for you; Microsoft suggests a static web host that issues the certificate automatically.

Rollout. Start with mode: testing. Google suggests about two weeks of reports before you switch to enforce and change the id. If enforcement causes delivery problems, Microsoft’s advice is to switch back to testing and change the id again. In enforce mode, a sender must not deliver to a host that fails MX matching or certificate validation; RFC 8461 asks it to look for an updated policy and retry later before it gives up. Exchange Online then bounces with 5.4.8 (MX host not in the policy) or 5.7.5 (certificate validation failed). To retire MTA-STS, publish mode: none with a short max_age and a new id, and remove the records only after the old cached policies have expired. Use the MX lookup to list every host the mx lines need to cover, and see the MX record guide for how they are chosen.

TLS-RPT: reports on failed TLS connections

TLS reporting (RFC 8460) is a TXT record that asks sending servers for a daily report on their TLS connections to your MX hosts. It works with MTA-STS and with DANE, and it is what makes mode: testing useful: without it, you don’t see what would have failed.

_smtp._tls.example.com.  TXT  "v=TLSRPTv1; rua=mailto:tlsrpt@example.com"

Publish TLS-RPT first, then the MTA-STS record in testing mode, read the reports, then enforce.

Check DMARC first

BIMI stops at DMARC: without p=quarantine or p=reject on the domain in your From line, no provider shows the logo, whatever the certificate says. Check what receivers see today:

Live DNS lookup over DNS-over-HTTPS. You can also paste an email address.

The DMARC checker shows the same result with each tag explained. If the policy is still p=none, or the record is missing, build the next step with the DMARC generator, and make sure every service that sends as your domain passes DKIM or SPF with alignment before you move to enforcement. Changes in provider rules for BIMI and authentication are tracked in our email deliverability news.

Sources

All checked October 10, 2026:

Frequently asked questions

What is a BIMI record?

A TXT record at default._bimi.yourdomain that starts with v=BIMI1 and points to your logo (l=, an SVG Tiny PS file over HTTPS) and, optionally, to a mark certificate (a=, a PEM file). Mailbox providers that support BIMI show the logo next to messages that pass DMARC at enforcement.

Do I need a VMC for BIMI?

It depends on the mailbox provider. Gmail needs a Verified Mark Certificate (VMC, for a registered trademark) or a Common Mark Certificate (CMC); only a VMC also gets the blue checkmark. Yahoo says it doesn’t require a VMC. Apple Mail names VMCs and other BIMI evidence documents.

What is MTA-STS?

MTA Strict Transport Security (RFC 8461) lets a domain tell sending servers that its MX hosts support TLS with a valid certificate. It consists of a TXT record at _mta-sts.yourdomain and a policy file at https://mta-sts.yourdomain/.well-known/mta-sts.txt. In enforce mode, senders that support it don’t deliver over a connection that fails these checks.

Is there a BIMI generator?

You don’t need one: the record is a single line, v=BIMI1; l=https://example.com/bimi/logo.svg; a=https://example.com/bimi/vmc.pem, with your own two URLs. The work is in the logo file, the certificate and a DMARC policy at enforcement, which the DMARC generator writes.

Do I need TLS-RPT for MTA-STS?

It isn’t required, but without it you can’t see failures. A TXT record at _smtp._tls.yourdomain (RFC 8460) asks senders for daily reports on TLS connections to your servers. Publish it before MTA-STS goes into testing mode, so the test produces data.

Email validation API

Validate emails in your app

emailvalidation.io checks syntax, MX records and the mailbox over SMTP, flags disposable, role and free addresses and returns a quality score, in one request.

/v1/info Email validation API Read the documentation

100 free validations every month. No credit card required.

GET https://api.emailvalidation.io/v1/info?email=support@emailvalidation.io

{
  "email": "support@emailvalidation.io",
  "user": "support",
  "tag": "",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "catch_all": null,
  "role": true,
  "disposable": false,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "valid_mailbox",
  "did_you_mean": ""
}

Keep reading

Start using our email validation software today!

Get 100 validations per month for free