email-utils
Reference

Support matrix

Which address features each preset accepts, how a Null MX is handled, each provider's rules and their sources, and what's out of scope.

The tables on this page are built from the packages as the site builds: the syntax rows from validator-syntax's test corpus, the provider rows from the classifier's registry, and the rest by running the packages on fixed examples. They describe the versions these docs are built against, and they change only when the packages do.

Address syntax

One row per address feature of RFC 5321 and RFC 5322, plus the forms a preset accepts outside them. A cell says whether the preset, with its default options, accepts the corpus fixtures that are well-formed examples of the feature: Yes for all of them, No for none, and Partial, with a count, for some. The example is one of those fixtures, with any control characters shown as their Unicode symbols, like ␀ for NUL.

FeatureExamplepracticalrfc5321rfc5322html5Defined in
Letters, digits, and single dotssimple@example.comYesYesYesYesRFC 5321 §4.1.2, RFC 5322 §3.2.3
Printable specials like +, /, =, and _disposable.style.email.with+symbol@example.comYesYesYesYesRFC 5322 §3.2.3
Route characters (%, !)mailhost.com!username@example.orgNoYesYesYesRFC 5322 §3.2.3
Leading, trailing, or consecutive dotsjohn..doe@example.comNoNoNoYesWHATWG HTML
Local part over 64 characters1234567890123456789012345678901234567890123456789012345678901234+x@example.comNoNoYesYesRFC 5321 §4.5.3.1.1
Quoted local part" "@example.orgNoYesYesNoRFC 5321 §4.1.2, RFC 5322 §3.2.4
Backslash escapes in a quoted string"\a"@iana.orgNoYesYesNoRFC 5322 §3.2.1
Dot-separated atoms and quoted strings mixedjust."actually".right@example.comNoNoYesNoRFC 5322 §4.4
Comments(comment)test@iana.orgNoNoYesNoRFC 5322 §3.2.2
Whitespace and line folding between tokenstest@ iana .comNoNoYesNoRFC 5322 §3.2.2
Control characters (obsolete syntax)"test\␀"@iana.orgNoNoYesNoRFC 5322 §4.1
IPv4 address literaltest@[255.255.255.255]NoYesYesNoRFC 5321 §4.1.3
IPv6 address literaltest@[IPv6:1111:2222:3333:4444:5555:6666:7777:8888]NoYesYesNoRFC 5321 §4.1.3
Other domain literalstest@[255.255.255]NoNoYesNoRFC 5322 §3.4.1
Domain with no dotjames@googleNoNoNoYesWHATWG HTML
TLD outside the IANA setjames@google.cNoYesYesYesIANA root zone

supportMatrix() returns the same rows, with every fixture. Presets describes each preset's rules, and options such as allowComments and allowIpLiteral change what a preset accepts; previewSyntaxOptions shows how (see Fixtures).

International addresses

RFC 6531 extends SMTP to UTF-8: non-ASCII characters in the local part, and domain labels written as U-labels (§3.3). Each cell runs isValidSyntax on the example with the preset's defaults, then with the option that covers it.

FeatureExamplepracticalrfc5321rfc5322html5
UTF-8 local partjosé@example.comWith allowUnicodeWith allowUnicodeWith allowUnicodeallowUnicode throws
U-label domainada@bücher.deWith allowIdnWith allowIdnWith allowIdnallowIdn throws
U-label TLDada@пример.рфWith allowIdnWith allowIdnWith allowIdnallowIdn throws

See International addresses for what each option accepts and the length caps that still apply.

Null MX

A Null MX (RFC 7505) is an MX record whose host is ., published to say a domain receives no mail. validator-dns checks it, not validator-syntax, so presets don't apply. These rows run checkDns on a stub resolver that answers with the MX records shown and one A record.

MX answercheckDns
A Null MX aloneFails with dns.mx.null
A Null MX next to another MXPasses, with nullMx: true and mxHosts: ["mx.example.com"]

See What's checked for the order validator-dns decides in.

Providers

The classifier's provider registry: each entry's domains and the local-part rules the sanitizer's provider-aware normalization uses. Provider registry says what each field means.

IDNameKindDomainsCanonical domainDotsSubaddressHyphensSubdomain addressing
gmailGmailpersonalgmail.com, googlemail.comgmail.comignored+countno
google-workspaceGoogle Workspacebusinessnone; found by MXcount+countno
outlookOutlook.compersonaloutlook.com and 27 morecount+countno
microsoft365Microsoft 365businessnone; found by MXcount+countno
yahooYahoo Mailpersonalyahoo.com and 12 morecountnonecountno
aolAOL Mailpersonalaol.com, aim.com, aol.co.uk, aol.de, aol.frcountnonecountno
icloudiCloud Mailpersonalicloud.com, me.com, mac.comicloud.comcountnonecountno
protonProton Mailpersonalproton.me, protonmail.com, protonmail.ch, pm.mecount+countno
fastmailFastmailpersonalfastmail.com and 129 morecount+countyes
zohoZoho Mailpersonalzoho.com, zohomail.comcountnonecountno
zoho-businessZoho Mail for businessbusinessnone; found by MXcountnonecountno
yandexYandex Mailpersonalyandex.ru, yandex.com, yandex.by, yandex.kz, ya.ruyandex.rucount+same as dotsno
yandex-360Yandex 360 for Businessbusinessnone; found by MXcountnonecountno
gmxGMXpersonalgmx.net, gmx.de, gmx.at, gmx.ch, gmx.com, gmx.us, gmx.co.ukcountnonecountno
web-deWEB.DEpersonalweb.decountnonecountno
mail-ruMail.rupersonalmail.ru, inbox.ru, list.ru, bk.ru, internet.rucountnonecountno
tutaTuta Mailpersonaltuta.com, tutanota.com, tutanota.de, tutamail.com, tuta.io, keemail.mecountnonecountno
heyHEYpersonalhey.comcountnonecountno
namecheapNamecheap Email Forwardingregistrarnone; found by MXcountnonecountno

Sources

Each entry cites its domains, its MX patterns, and every rule that differs from the default, from providerSources. "DNS lookup" marks a fact the provider documents nowhere, read from its DNS instead. Checked is when the fact was last compared with its source.

ProviderRuleSourceChecked
Gmaildomainshttps://support.google.com/mail/answer/10313. Messages sent to @gmail.com and @googlemail.com are the same.2026-09-29
canonicalDomainhttps://support.google.com/mail/answer/103132026-09-29
dotsSignificanthttps://support.google.com/mail/answer/7436150. Dots in a Gmail address are ignored.2026-09-29
subaddressSeparatorhttps://support.google.com/mail/answer/12096. Mail to janedoe+school@gmail.com goes to janedoe@gmail.com.2026-09-29
mxPatternsDNS lookup: MX of gmail.com and googlemail.com: gmail-smtp-in.l.google.com and alt1–alt4.2026-09-29
Google WorkspacemxPatternshttps://knowledge.workspace.google.com/admin/domains/set-up-mx-records-for-google-workspace. smtp.google.com, with the pre-2023 aspmx values still supported. The legacy host names are from the MX of domains that still use them.2026-09-29
dotsSignificanthttps://support.google.com/mail/answer/7436150. On work, school, and other organization accounts, dots do change the address.2026-09-29
subaddressSeparatorhttps://support.google.com/mail/answer/12096. Gmail's plus aliases, which the page doesn't limit to personal accounts.2026-09-29
Outlook.comdomainshttps://support.microsoft.com/en-us/office/add-or-remove-an-email-alias-in-outlook-com-459b1989-356d-40fa-a689-8f285b13f1f2. Names Hotmail, Live, Outlook.com, and MSN addresses. The country domains are from their MX, which is Outlook.com’s.2026-09-29
subaddressSeparatorhttps://support.microsoft.com/en-us/office/add-or-remove-an-email-alias-in-outlook-com-459b1989-356d-40fa-a689-8f285b13f1f2. chester.beane+microsoft@outlook.com arrives in the same inbox.2026-09-29
mxPatternsDNS lookup: MX of every listed domain: <domain>-com, eur, nam, or apc under olc.protection.outlook.com.2026-09-29
Microsoft 365mxPatternshttps://learn.microsoft.com/en-us/microsoft-365/enterprise/external-domain-name-system-records. <domain-key>.mail.protection.outlook.com.2026-09-29
mxPatternshttps://learn.microsoft.com/en-us/exchange/security-and-compliance/how-dane-secures-email. Domains with DNSSEC point at <domain-key>.<subdomain>.mx.microsoft, e.g. contosotest-com.o-v1.mx.microsoft, and drop legacy MX ending in mail.protection.outlook.com, mail.eo.outlook.com, or mail.protection.outlook.de.2026-09-29
subaddressSeparatorhttps://learn.microsoft.com/en-us/exchange/recipients-in-exchange-online/plus-addressing-in-exchange-online. On by default; an organization can turn it off.2026-09-29
Yahoo Maildomainshttps://help.yahoo.com/kb/domain-extensions-yahoo-mail-sln2153.html. Names yahoo.com, myyahoo.com, yahoo.co.uk, and yahoo.fr. ymail.com, rocketmail.com, and the other country domains are from their MX.2026-09-29
subaddressSeparatorhttps://help.yahoo.com/kb/SLN28815.html. None. Disposable addresses are nickname-keyword@yahoo.com, where the nickname is not the mailbox name.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
AOL MaildomainsDNS lookup: Every listed domain has MX mx-aol.mail.gm0.yahoodns.net.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
iCloud Maildomainshttps://support.apple.com/en-us/118230. Every @me.com and @mac.com account also has the @icloud.com address.2026-09-29
canonicalDomainhttps://support.apple.com/en-us/1182302026-09-29
mxPatternsDNS lookup: MX of every listed domain: mx01 and mx02.mail.icloud.com.2026-09-29
Proton Maildomainshttps://proton.me/support/addresses-and-aliases. proton.me or protonmail.com is chosen at sign-up; they are separate addresses. protonmail.ch and pm.me are from their MX.2026-09-29
subaddressSeparatorhttps://proton.me/support/addresses-and-aliases. Plus aliases: ericnorbert+bills@proton.me.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
Fastmaildomainshttps://www.fastmail.help/hc/en-us/articles/6239365719055-What-domains-can-I-use-with-Fastmail2026-09-29
subaddressSeparatorhttps://www.fastmail.help/hc/en-us/articles/360060591053-Plus-addressing-and-subdomain-addressing2026-09-29
subdomainAddressinghttps://www.fastmail.help/hc/en-us/articles/360060591053-Plus-addressing-and-subdomain-addressing. Works without setup on Fastmail domains; custom domains must turn it on.2026-09-29
mxPatternshttps://www.fastmail.help/hc/en-us/articles/360060591153-Manual-DNS-configuration2026-09-29
Zoho MaildomainsDNS lookup: Both domains have MX smtpin, smtpin2, and smtpin3.zoho.com.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
Zoho Mail for businessmxPatternshttps://www.zoho.com/mail/help/adminconsole/configure-email-delivery.html. mx, mx2, and mx3.zoho.com, with the TLD varying by data center. The other data centers’ hosts are the ones that resolve in DNS; mx3.zoho.com.cn does not.2026-09-29
Yandex Maildomainshttps://yandex.com/support/yandex-360/customers/mail/en/web/preferences/about-sender/additional-addresses. Every mailbox also gets the ru, by, and kz country domains and ya.ru.2026-09-29
canonicalDomainhttps://yandex.com/support/yandex-360/customers/mail/en/web/preferences/about-sender/additional-addresses2026-09-29
hyphensSignificanthttps://yandex.com/support/yandex-360/customers/mail/en/web/security/strange-letters.html. Yandex Mail doesn’t distinguish between dots and hyphens; they are synonymous addresses of the same mailbox.2026-09-29
subaddressSeparatorhttps://yandex.com/support/yandex-360/customers/mail/en/reg. alice.the.girl+teaforum@yandex.com reaches the mailbox.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
Yandex 360 for BusinessmxPatternshttps://yandex.com/support/yandex-360/business/admin/en/domains/dns/mx. mx.yandex.net.2026-09-29
GMXdomainsDNS lookup: Every listed domain has MX under emig.gmx.net (Germany, Austria, Switzerland) or gmx.net (gmx.com).2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
WEB.DEdomainsDNS lookup: web.de has its own MX, separate from GMX.2026-09-29
mxPatternsDNS lookup: MX of web.de.2026-09-29
Mail.rudomainsDNS lookup: Every listed domain has MX mxs.mail.ru.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
Tuta MaildomainsDNS lookup: The domains Tuta offers at sign-up, all with MX mail.tutanota.de.2026-09-29
mxPatternsDNS lookup: MX of every listed domain.2026-09-29
HEYdomainsDNS lookup: hey.com is the only domain HEY offers personal addresses on.2026-09-29
mxPatternsDNS lookup: MX of hey.com.2026-09-29
Namecheap Email ForwardingmxPatternshttps://www.namecheap.com/support/knowledgebase/article.aspx/308/2214/how-to-set-up-free-email-forwarding/. Email Forwarding sets the MX records itself; the page doesn’t name the eforward1–5.registrar-servers.com hosts, which resolve in DNS.2026-09-29

Not supported

Mailbox probing

No package asks a mail server whether a mailbox exists by sending SMTP RCPT TO. validator-dns's SMTP probe stops after EHLO: it learns whether a mail server answers, never whether a mailbox exists.

RCPT TO doesn't answer that question reliably:

  • Many servers accept every recipient and bounce later, or deliver anything for the domain to one mailbox, so a 250 doesn't mean the mailbox exists.
  • Greylisting and rate limits answer with temporary failures, so a 4xx doesn't mean it doesn't.
  • Providers treat repeated probes from one address as abuse and block it, which then stops that address's real mail too.

The only proof that a mailbox exists, and belongs to the person who typed it, is mail they receive: send a confirmation link.

On this page