RFC-compliant email address validation

Run all tests Run original test set Read more... Contact

Test package version 3.04

Original test set

This test set was compiled from examples given by other authors. It therefore contains tests that are logically duplicates (i.e. they test the same features as each other). This is by design.

Acknowledgements are due in particular to John Klensin, Cal Henderson, Phil Haack, Paul Gregg, Dave Child and Doug Lovell for the examples addresses they put in the public domain. Also thanks to George Pollard, Michael Rushton and Daniel Marschall for the examples they contributed during our correspondence.

Coverage: 84% (44 outcomes recorded / 52 defined). Missing outcomes: ISEMAIL_DEPREC_QTEXT, ISEMAIL_DEPREC_CTEXT, ISEMAIL_RFC5322_DOMAIN, ISEMAIL_ERR_EXPECTING_DTEXT, ISEMAIL_ERR_EXPECTING_QPAIR, ISEMAIL_ERR_EXPECTING_CTEXT, ISEMAIL_ERR_BACKSLASHEND, ISEMAIL_ERR_FWS_CRLF_END

279 tests: 3 unexpected categories, 3 unexpected diagnoses

Address

Results Comments

[email protected]

Test #
1

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]iana.org

Test #
2

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected],com

Test #
3

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Mistyped comma instead of dot (replaces old #3 which was the same as #57)
Address contains a character that is not allowed

"first\"last"@iana.org

Test #
4

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

first\@[email protected]

Test #
5

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Escaping can only happen within a quoted string
Address contains a character that is not allowed

"[email protected]"@iana.org

Test #
6

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"first\\last"@iana.org

Test #
7

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

[email protected][email protected][email protected]456789.x23456789.x23456789.x23456789.x23456789.x23456789.x2

Test #
8

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Total length reduced to 254 characters so it's still valid
Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

[email protected][email protected][email protected]45678901234567890123456789012345678901234567890123.iana.org

Test #
9

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Total length reduced to 254 characters so it's still valid
Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

[email protected]

Test #
10

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
11

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
12

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
13

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
14

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
15

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
16

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
17

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]567890123.iana.org

Test #
18

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

[email protected]

Test #
19

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
20

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

[email protected][email protected][email protected]567890123456789012345678901234567890123456789.12345.iana.org

Test #
21

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_TOOLONG

However, there is a restriction in RFC 2821 on the length of an address in MAIL and RCPT commands of 254 characters. Since addresses that do not fit in those fields are not normally useful, the upper limit on address lengths should normally be considered to be 254.
Dominic Sayers, RFC 3696 erratum 1690
Entire address is longer than 254 characters
Address is too long

first.last

Test #
22

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NODOMAIN

addr-spec = local-part "@" domain
RFC 5322 section 3.4.1
Mailbox = Local-part "@" ( Domain / address-literal )
RFC 5321 section 4.1.2
No @
Address has no domain part

12345678901234567890123456789012345678901234567890123456789012345@iana.org

Test #
23

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_LOCAL_TOOLONG

The maximum total length of a user name or other local-part is 64 octets.
RFC 5322 section 4.5.3.1.1
Local part more than 64 characters
The local part of the address is too long

.[email protected]

Test #
24

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Local part starts with a dot
Neither part of the address may begin with a dot

first.last.@iana.org

Test #
25

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Local part ends with a dot
Neither part of the address may end with a dot

first..[email protected]

Test #
26

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_CONSECUTIVEDOTS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Local part has consecutive dots
The address may not contain consecutive dots

"first"last"@iana.org

Test #
27

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_QS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Local part contains unescaped excluded characters
Address contains text after a quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"first\last"@iana.org

Test #
28

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Any character can be escaped in a quoted string
Address is valid but contains a quoted string

"""@iana.org

Test #
29

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Local part contains unescaped excluded characters
Address contains a character that is not allowed
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"\"@iana.org

Test #
30

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_UNCLOSEDQUOTEDSTR

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Local part cannot end with a backslash
Unclosed quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

""@iana.org

Test #
31

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Local part is effectively empty, but this form is specifically allowed by RFC 5322 & RFC 5321
Address is valid but contains a quoted string

first\\@[email protected]

Test #
32

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Local part contains unescaped excluded characters
Address contains a character that is not allowed

first.last@

Test #
33

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NODOMAIN

addr-spec = local-part "@" domain
RFC 5322 section 3.4.1
Mailbox = Local-part "@" ( Domain / address-literal )
RFC 5321 section 4.1.2
No domain
Address has no domain part

[email protected][email protected][email protected]456789.x23456789.x23456789.x23456789.x23456789.x23456789.x23456

Test #
34

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAIN_TOOLONG

The maximum total length of a domain name or number is 255 octets.
RFC 5321 section 4.5.3.1.2
Domain exceeds 255 chars
The domain part is too long

first.last@[.12.34.56.78]

Test #
35

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAINLITERAL

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
RFC 5322 section 3.4.1
Only char that can precede IPv4 address is ':'
The domain literal is not a valid RFC 5321 address literal

[email protected]

Test #
36

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAINLITERAL

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
RFC 5322 section 3.4.1
Can't be interpreted as IPv4 so IPv6 tag is missing
The domain literal is not a valid RFC 5321 address literal

first.last@[::12.34.56.78]

Test #
37

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAINLITERAL

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
RFC 5322 section 3.4.1
IPv6 tag is missing
The domain literal is not a valid RFC 5321 address literal

[email protected]

Test #
38

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAINLITERAL

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
RFC 5322 section 3.4.1
IPv6 tag is wrong
The domain literal is not a valid RFC 5321 address literal

[email protected]

Test #
39

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_IPV6DEPRECATED

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
RFC 4291 disagrees with RFC 5321 but is cited by it
Address is valid but contains a :: that only elides one zero group
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
40

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_GRPCOUNT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
Not enough IPv6 groups
The IPv6 literal address contains the wrong number of groups
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
41

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_GRPCOUNT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
Too many IPv6 groups (6 max)
The IPv6 literal address contains the wrong number of groups
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
42

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_GRPCOUNT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
Not enough IPv6 groups
The IPv6 literal address contains the wrong number of groups
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
43

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_GRPCOUNT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
Too many IPv6 groups (8 max)
The IPv6 literal address contains the wrong number of groups
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
44

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
Too many '::' (can be none or one)
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
45

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_IPV6DEPRECATED

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
RFC 4291 disagrees with RFC 5321 but is cited by it
Address is valid but contains a :: that only elides one zero group
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

[email protected]

Test #
46

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
x is not valid in an IPv6 address
The IPv6 address contains an illegal group of characters

[email protected]

Test #
47

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
33333 is not a valid group in an IPv6 address
The IPv6 address contains an illegal group of characters

[email protected]

Test #
48

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLDNUMERIC

Errata ID 1081, reported 2007-11-20, identifies a problem with the evolution of naming of top-level domains and the text of RFC 1123. It reads: Section 2.1 says: However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be alphabetic. It should say: However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be not all-numeric. Notes: RFC 3696 section 2 states: "There is an additional rule that essentially requires that top-level domain names not be all-numeric." The eleven IDN test TLDs created in September 2007 contain hyphen-minus as specified in the IDNA RFCs. It should say: However, a valid host name can never have the dotted-decimal form #.#.#.#, since this change does not permit the highest-level component label to start with a digit even if it is not all-numeric. Notes: This is a correct identification of the problem, but the wrong fix. RFC 3696, which ID 1081 cites, is an informational document that is deliberately relaxed about the fine details and says so. It is not relevant to determination of the text that should have been (with perfect knowledge of the future) in 1123. Based on discussions when we were doing RFC 1591 and subsequently, the expectation then (and presumably when 1123 was written) was that the name of any new TLD would follow the rules for the existing ones, i.e., that they would be exactly two or three characters long and be all-alphabetic (which is exactly what 1123 says). The slightly-odd "will be" language in 1123 was, I believe, because that restriction was expected to be enforced by IANA, rather than being a protocol issue. ICANN, with a different set of assignment policies, effectively eliminated the length rule with the TLDs allocated in 2000. IDNA (RFC 3490) uses a syntax for IDNs that requires embedded hyphens in TLDs if there were ever to be an actual IDN TLD (hence the comment in ID 1081 about the IANA IDN testbed). While the proposed correction in Errata ID 1081 would fix the problem by imposing the narrowest possible restriction ("not all-numeric"), the original host name rule and the original statement in 1123 both assume the possibility of a minimal check to differentiate between domain names and IP addresses, i.e., checking the first digit only. Because I believe that there are probably implementations that depend on such minimal parsing --some probably ancient and embedded-- it would appear to be wise to relax the rule as little as possible and, in particular, to restrict the "leading digit" exception to domains below the top-level, as 1123 effectively does. The suggested text above reflects that reasoning. Because of the possible consequences of this issue, I would hope that it would be discussed with the relevant DNS-related WGs, the Root Server Advisory Committee (RSAC), and with IANA for comment and as a heads-up. This issue is substantive enough that it should probably be dealt with by a document that explicitly updates 1123 and that is processed on the Standards Track, but an accurate statement in the errata is the next-best option until that can be done. In the interim and while this suggestion is being discussed, Errata ID 1081 should probably be taken out of "validated" status.
John Klensin, RFC 1123 erratum 1353
TLD can't be all digits
Address is valid but the Top Level Domain begins with a number
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

[email protected]

Test #
49

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLD

In the case of a top-level domain used by itself in an email address, a single string is used without any dots. This makes the requirement, described in more detail below, that only fully-qualified domain names appear in SMTP transactions on the public Internet, particularly important where top-level domains are involved.
RFC 5321 section 2.3.5
Mail host is not usually at a Top Level Domain
Address is valid but at a Top Level Domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

first.last@-xample.com

Test #
50

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOMAINHYPHENSTART

Domain = sub-domain *("." sub-domain) Let-dig = ALPHA / DIGIT Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
RFC 5321 section 4.1.2
Label can't begin with a hyphen
A domain or subdomain cannot begin with a hyphen

first.last@exampl-.com

Test #
51

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOMAINHYPHENEND

Domain = sub-domain *("." sub-domain) Let-dig = ALPHA / DIGIT Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
RFC 5321 section 4.1.2
Label can't end with a hyphen
A domain or subdomain cannot end with a hyphen

[email protected]5678901234.iana.org

Test #
52

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_LABEL_TOOLONG

labels 63 octets or less
RFC 5321 section 4.1.2
Label can't be longer than 63 octets
The domain part contains an element that is too long

"Abc\@def"@iana.org

Test #
53

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"Fred\Bloggs"@iana.org

Test #
54

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"Joe.\\Blow"@iana.org

Test #
55

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"[email protected]"@iana.org

Test #
56

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"FredBloggs"@iana.org

Test #
57

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

[email protected]

Test #
58

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
59

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
60

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
61

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
62

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
63

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

abc\@[email protected]

Test #
64

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
This example from RFC 3696 was corrected in an erratum
Address contains a character that is not allowed

abc\\@iana.org

Test #
65

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
This example from RFC 3696 was corrected in an erratum
Address contains a character that is not allowed

[email protected]

Test #
66

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

Doug\\"Ace\"\[email protected]

Test #
67

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Escaping can only happen in a quoted string
Address contains a character that is not allowed

"Doug\"Ace\"L."@iana.org

Test #
68

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

[email protected]@iana.org

Test #
69

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Doug Lovell says this should fail
Address contains a character that is not allowed

abc\\@[email protected]

Test #
70

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Doug Lovell says this should fail
Address contains a character that is not allowed

abc\@iana.org

Test #
71

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Doug Lovell says this should fail
Address contains a character that is not allowed

@iana.org

Test #
72

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NOLOCALPART

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
No local part
Address has no local part

doug@

Test #
73

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NODOMAIN

addr-spec = local-part "@" domain
RFC 5322 section 3.4.1
Mailbox = Local-part "@" ( Domain / address-literal )
RFC 5321 section 4.1.2
Doug Lovell says this should fail
Address has no domain part

"[email protected]

Test #
74

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_UNCLOSEDQUOTEDSTR

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Doug Lovell says this should fail
Unclosed quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

ote"@iana.org

Test #
75

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Doug Lovell says this should fail
Address contains a character that is not allowed

.[email protected]

Test #
76

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Doug Lovell says this should fail
Neither part of the address may begin with a dot

dot.@iana.org

Test #
77

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Doug Lovell says this should fail
Neither part of the address may end with a dot

two..[email protected]

Test #
78

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_CONSECUTIVEDOTS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Doug Lovell says this should fail
The address may not contain consecutive dots

"Doug"Ace"L."@iana.org

Test #
79

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_QS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Doug Lovell says this should fail
Address contains text after a quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

Doug\\"Ace\"\L\.@iana.org

Test #
80

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Doug Lovell says this should fail
Address contains a character that is not allowed

hello[email protected]

Test #
81

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Doug Lovell says this should fail
Address contains text after a comment or Folding White Space

[email protected]

Test #
82

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Doug Lovell says this should fail
Neither part of the address may end with a dot

[email protected]

Test #
83

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
84

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
85

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
86

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
87

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
88

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
89

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
90

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

"[[test]]"@iana.org

Test #
91

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

[email protected]

Test #
92

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

"test.test"@iana.org

Test #
93

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

test."test"@iana.org

Test #
94

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
Obsolete form, but documented in RFC 5322
The local part is in a deprecated form

"[email protected]"@iana.org

Test #
95

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

[email protected]

Test #
96

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

[email protected]

Test #
97

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLDNUMERIC

Errata ID 1081, reported 2007-11-20, identifies a problem with the evolution of naming of top-level domains and the text of RFC 1123. It reads: Section 2.1 says: However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be alphabetic. It should say: However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be not all-numeric. Notes: RFC 3696 section 2 states: "There is an additional rule that essentially requires that top-level domain names not be all-numeric." The eleven IDN test TLDs created in September 2007 contain hyphen-minus as specified in the IDNA RFCs. It should say: However, a valid host name can never have the dotted-decimal form #.#.#.#, since this change does not permit the highest-level component label to start with a digit even if it is not all-numeric. Notes: This is a correct identification of the problem, but the wrong fix. RFC 3696, which ID 1081 cites, is an informational document that is deliberately relaxed about the fine details and says so. It is not relevant to determination of the text that should have been (with perfect knowledge of the future) in 1123. Based on discussions when we were doing RFC 1591 and subsequently, the expectation then (and presumably when 1123 was written) was that the name of any new TLD would follow the rules for the existing ones, i.e., that they would be exactly two or three characters long and be all-alphabetic (which is exactly what 1123 says). The slightly-odd "will be" language in 1123 was, I believe, because that restriction was expected to be enforced by IANA, rather than being a protocol issue. ICANN, with a different set of assignment policies, effectively eliminated the length rule with the TLDs allocated in 2000. IDNA (RFC 3490) uses a syntax for IDNs that requires embedded hyphens in TLDs if there were ever to be an actual IDN TLD (hence the comment in ID 1081 about the IANA IDN testbed). While the proposed correction in Errata ID 1081 would fix the problem by imposing the narrowest possible restriction ("not all-numeric"), the original host name rule and the original statement in 1123 both assume the possibility of a minimal check to differentiate between domain names and IP addresses, i.e., checking the first digit only. Because I believe that there are probably implementations that depend on such minimal parsing --some probably ancient and embedded-- it would appear to be wise to relax the rule as little as possible and, in particular, to restrict the "leading digit" exception to domains below the top-level, as 1123 effectively does. The suggested text above reflects that reasoning. Because of the possible consequences of this issue, I would hope that it would be discussed with the relevant DNS-related WGs, the Root Server Advisory Committee (RSAC), and with IANA for comment and as a heads-up. This issue is substantive enough that it should probably be dealt with by a document that explicitly updates 1123 and that is processed on the Standards Track, but an accurate statement in the errata is the next-best option until that can be done. In the interim and while this suggestion is being discussed, Errata ID 1081 should probably be taken out of "validated" status.
John Klensin, RFC 1123 erratum 1353
Top Level Domain unlikely to have first character numeric (although ICANN make up their own rules).
Address is valid but the Top Level Domain begins with a number
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

[email protected]

Test #
98

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

[email protected]

Test #
99

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

[email protected]

Test #
100

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

test.iana.org

Test #
101

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NODOMAIN

addr-spec = local-part "@" domain
RFC 5322 section 3.4.1
Mailbox = Local-part "@" ( Domain / address-literal )
RFC 5321 section 4.1.2
Address has no domain part

test.@iana.org

Test #
102

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may end with a dot

test..[email protected]

Test #
103

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_CONSECUTIVEDOTS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
The address may not contain consecutive dots

.[email protected]

Test #
104

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may begin with a dot

[email protected]@iana.org

Test #
105

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Address contains a character that is not allowed

test@@iana.org

Test #
106

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Address contains a character that is not allowed

--test[email protected]

Test #
107

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
No spaces allowed in local part
Address contains text after a comment or Folding White Space

[test]@iana.org

Test #
108

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Square brackets only allowed within quotes
Address contains a character that is not allowed

"test\test"@iana.org

Test #
109

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Any character can be escaped in a quoted string
Address is valid but contains a quoted string

"test"test"@iana.org

Test #
110

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_QS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Quotes cannot be nested
Address contains text after a quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

()[]\;:,><@iana.org

Test #
111

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Disallowed Characters
Address contains a character that is not allowed
Other diagnoses: ISEMAIL_CFWS_COMMENT

test@.

Test #
112

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Dave Child says so
Neither part of the address may begin with a dot

[email protected]

Test #
113

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Dave Child says so
Neither part of the address may end with a dot

test@.org

Test #
114

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Dave Child says so
Neither part of the address may begin with a dot

[email protected][email protected][email protected][email protected]m

Test #
115

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAIN_TOOLONG

The maximum total length of a domain name or number is 255 octets.
RFC 5321 section 4.5.3.1.2
255 characters is maximum length for domain. This is 256.
The domain part is too long

[email protected]

Test #
116

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLD

In the case of a top-level domain used by itself in an email address, a single string is used without any dots. This makes the requirement, described in more detail below, that only fully-qualified domain names appear in SMTP transactions on the public Internet, particularly important where top-level domains are involved.
RFC 5321 section 2.3.5
Dave Child says so
Address is valid but at a Top Level Domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

test@[123.123.123.123

Test #
117

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_UNCLOSEDDOMLIT

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
RFC 5322 section 3.4.1
Dave Child says so
Domain literal is missing its closing bracket

[email protected]]

Test #
118

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Dave Child says so
Address contains a character that is not allowed

NotAnEmail

Test #
119

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NODOMAIN

addr-spec = local-part "@" domain
RFC 5322 section 3.4.1
Mailbox = Local-part "@" ( Domain / address-literal )
RFC 5321 section 4.1.2
Phil Haack says so
Address has no domain part

@NotAnEmail

Test #
120

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NOLOCALPART

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Phil Haack says so
Address has no local part

"test\\blah"@iana.org

Test #
121

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"test\blah"@iana.org

Test #
122

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Any character can be escaped in a quoted string
Address is valid but contains a quoted string

"test\
blah"@iana.org

Test #
123

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_QP

obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR) obs-NO-WS-CTL = %d1-8 / ; US-ASCII control %d11 / ; characters that do not %d12 / ; include the carriage %d14-31 / ; return, line feed, and %d127 ; white space characters
RFC 5322 section 4.1
Quoted string specifically excludes carriage returns unless escaped
A quoted pair contains a deprecated character
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"test
blah"@iana.org

Test #
124

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_CR_NO_LF

CFWS = (1*([FWS] comment) [FWS]) / FWS FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space comment = "(" *([FWS] ccontent) [FWS] ")" ccontent = ctext / quoted-pair / comment ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext
RFC 5322 section 3.2.2
CRLF = %d13.10
RFC 5234 section 2.3
Quoted string specifically excludes carriage returns
Address contains a carriage return that is not followed by a line feed
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"test\"blah"@iana.org

Test #
125

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"test"blah"@iana.org

Test #
126

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_QS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Phil Haack says so
Address contains text after a quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

[email protected]

Test #
127

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
128

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

[email protected]

Test #
129

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

.[email protected]

Test #
130

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Phil Haack says so
Neither part of the address may begin with a dot

wo..[email protected]

Test #
131

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_CONSECUTIVEDOTS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Phil Haack says so
The address may not contain consecutive dots

pootietang.@iana.org

Test #
132

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Phil Haack says so
Neither part of the address may end with a dot

.@iana.org

Test #
133

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Phil Haack says so
Neither part of the address may begin with a dot

"[email protected]"@iana.org

Test #
134

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

[email protected]

Test #
135

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

"Ima.Fool"@iana.org

Test #
136

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"ImaFool"@iana.org

Test #
137

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

Ima[email protected]

Test #
138

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Phil Haack says so
Address contains text after a comment or Folding White Space

phil.h\@\@[email protected]

Test #
139

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Escaping can only happen in a quoted string
Address contains a character that is not allowed

"first"."last"@iana.org

Test #
140

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
The local part is in a deprecated form
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"first".middle."last"@iana.org

Test #
141

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
The local part is in a deprecated form
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"first\\"last"@iana.org

Test #
142

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_QS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Contains an unescaped quote
Address contains text after a quoted string
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"first".[email protected]

Test #
143

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-local-part form as described in RFC 5322
The local part is in a deprecated form
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

first."last"@iana.org

Test #
144

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-local-part form as described in RFC 5322
The local part is in a deprecated form

"first"."middle"."last"@iana.org

Test #
145

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-local-part form as described in RFC 5322
The local part is in a deprecated form
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"first.middle"."last"@iana.org

Test #
146

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-local-part form as described in RFC 5322
The local part is in a deprecated form
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"first.middle.last"@iana.org

Test #
147

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"first..last"@iana.org

Test #
148

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
obs-local-part form as described in RFC 5322
Address is valid but contains a quoted string

foo@[\1.2.3.4]

Test #
149

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMLIT_OBSDTEXT

obs-dtext = obs-NO-WS-CTL / quoted-pair obs-NO-WS-CTL = %d1-8 / ; US-ASCII control %d11 / ; characters that do not %d12 / ; include the carriage %d14-31 / ; return, line feed, and %d127 ; white space characters
RFC 5322 section 3.4.1
RFC 5321 specifies the syntax for address-literal and does not allow escaping
The domain literal is not a valid RFC 5321 address literal and it contains obsolete characters
Other diagnoses: ISEMAIL_RFC5322_DOMAINLITERAL

"first\\\"last"@iana.org

Test #
150

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

first."mid\dle"."last"@iana.org

Test #
151

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
Backslash can escape anything but must escape something
The local part is in a deprecated form

Test.␍␊
Folding.␍␊
[email protected]

Test #
152

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_FWS

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-domain = atom *("." atom) atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Address contains an obsolete form of Folding White Space

first."".[email protected]

Test #
153

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
Contains a zero-length element
The local part is in a deprecated form

first\last@iana.org

Test #
154

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Unquoted string must be an atom
Address contains a character that is not allowed

Abc\@def@iana.org

Test #
155

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Was incorrectly given as a valid address in the original RFC 3696
Address contains a character that is not allowed

Fred\Bloggs@iana.org

Test #
156

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Was incorrectly given as a valid address in the original RFC 3696
Address contains a character that is not allowed

Joe.\\Blow@iana.org

Test #
157

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Was incorrectly given as a valid address in the original RFC 3696
Address contains a character that is not allowed

first.last@[IPv6:1111:2222:3333:4444:5555:6666:12.34.567.89]

Test #
158

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv4 part contains an invalid octet
The IPv6 address contains an illegal group of characters
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

"test\␍␊
blah"@iana.org

Test #
159

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_QTEXT

qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext
RFC 5322 section 3.2.4
Folding white space can't appear within a quoted pair
A quoted string contains a character that is not allowed
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING, ISEMAIL_DEPREC_QP

"test␍␊
blah"@iana.org

Test #
160

Category
ISEMAIL_CFWS

Diagnosis
ISEMAIL_CFWS_FWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
This is a valid quoted string with folding white space
Address contains Folding White Space
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

{^c\@**Dog^}@cartoon.com

Test #
161

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
This is a throwaway example from Doug Lovell's article. Actually it's not a valid address.
Address contains a character that is not allowed

(foo)cal(bar)@(baz)iamcal.com(quux)

Test #
162

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
A valid address containing comments
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT

cal@iamcal(woo).(yay)com

Test #
163

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_COMMENT

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-domain = atom *("." atom) atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
A valid address containing comments
Address contains a comment in a position that is deprecated
Other diagnoses: ISEMAIL_CFWS_COMMENT

"foo"(yay)@(hoopla)[1.2.3.4]

Test #
164

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Address literal can't be commented (RFC 5321)
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING, ISEMAIL_CFWS_COMMENT, ISEMAIL_RFC5321_ADDRESSLITERAL

cal(woo(yay)hoopla)@iamcal.com

Test #
165

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
A valid address containing comments
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT

cal(foo\@bar)@iamcal.com

Test #
166

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
A valid address containing comments
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT

cal(foo\)bar)@iamcal.com

Test #
167

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
A valid address containing comments and an escaped parenthesis
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT

cal(foo(bar)@iamcal.com

Test #
168

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_UNCLOSEDCOMMENT

CFWS = (1*([FWS] comment) [FWS]) / FWS FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space comment = "(" *([FWS] ccontent) [FWS] ")" ccontent = ctext / quoted-pair / comment ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext
RFC 5322 section 3.2.2
Unclosed parenthesis in comment
Unclosed comment
Other diagnoses: ISEMAIL_CFWS_COMMENT

cal(foo)bar)@iamcal.com

Test #
169

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Too many closing parentheses
Address contains text after a comment or Folding White Space
Other diagnoses: ISEMAIL_CFWS_COMMENT

cal(foo\)@iamcal.com

Test #
170

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_UNCLOSEDCOMMENT

CFWS = (1*([FWS] comment) [FWS]) / FWS FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space comment = "(" *([FWS] ccontent) [FWS] ")" ccontent = ctext / quoted-pair / comment ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext
RFC 5322 section 3.2.2
Backslash at end of comment has nothing to escape
Unclosed comment
Other diagnoses: ISEMAIL_CFWS_COMMENT

first().last@iana.org

Test #
171

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
A valid address containing an empty comment
The local part is in a deprecated form
Other diagnoses: ISEMAIL_CFWS_COMMENT

first.(␍␊
middle␍␊
)last@iana.org

Test #
172

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_COMMENT

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-domain = atom *("." atom) atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Comment with folding white space
Address contains a comment in a position that is deprecated
Other diagnoses: ISEMAIL_CFWS_FWS

first(12345678901234567890123456789012345678901234567890)last@(1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890)iana.org

Test #
173

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Too long with comments, not too long without
Address contains text after a comment or Folding White Space
Other diagnoses: ISEMAIL_CFWS_COMMENT

first(Welcometo␍␊
the("wonderful"(!))world␍␊
ofemail)@iana.org

Test #
174

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Silly example from my blog post
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT, ISEMAIL_CFWS_FWS

pete(hisaccount)@silly.test(hishost)

Test #
175

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Canonical example from RFC 5322
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT, ISEMAIL_CFWS_FWS

c@(Chris'shost.)public.example

Test #
176

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Canonical example from RFC 5322
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_FWS

jdoe@machine(comment).example

Test #
177

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_FWS

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-domain = atom *("." atom) atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Canonical example from RFC 5322
Address contains an obsolete form of Folding White Space
Other diagnoses: ISEMAIL_CFWS_COMMENT

1234@local(blah).machine.example

Test #
178

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Canonical example from RFC 5322
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT, ISEMAIL_CFWS_FWS

first(middle)last@iana.org

Test #
179

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Can't have a comment or white space except at an element boundary
Address contains text after a comment or Folding White Space
Other diagnoses: ISEMAIL_CFWS_COMMENT

first(abc.def).last@iana.org

Test #
180

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
Comment can contain a dot
The local part is in a deprecated form
Other diagnoses: ISEMAIL_CFWS_COMMENT

first(a"bc.def).last@iana.org

Test #
181

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_LOCALPART

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
Comment can contain double quote
The local part is in a deprecated form
Other diagnoses: ISEMAIL_CFWS_COMMENT

first.(")middle.last(")@iana.org

Test #
182

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Comment can contain a quote
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_DEPREC_COMMENT, ISEMAIL_CFWS_COMMENT

first(abc("def".ghi).mno)middle(abc("def".ghi).mno).last@(abc("def".ghi).mno)example(abc("def".ghi).mno).(abc("def".ghi).mno)com(abc("def".ghi).mno)

Test #
183

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Can't have comments or white space except at an element boundary
Address contains text after a comment or Folding White Space
Other diagnoses: ISEMAIL_CFWS_COMMENT

first(abc\(def)@iana.org

Test #
184

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Comment can contain quoted-pair
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT

first.last@iana(1234567890123456789012345678901234567890123456789012345678901234567890).org

Test #
185

Category
ISEMAIL_CFWS

Diagnosis
ISEMAIL_CFWS_COMMENT

dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Label is longer than 63 octets, but not with comment removed
Address contains comments

a(a(b(c)d(e(f))g)h(i)j)@iana.org

Test #
186

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_COMMENT

a(a(b(c)d(e(f))g)(h(i)j)@iana.org

Test #
187

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_UNCLOSEDCOMMENT

CFWS = (1*([FWS] comment) [FWS]) / FWS FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space comment = "(" *([FWS] ccontent) [FWS] ")" ccontent = ctext / quoted-pair / comment ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext
RFC 5322 section 3.2.2
Braces are not properly matched
Unclosed comment
Other diagnoses: ISEMAIL_CFWS_COMMENT

name.lastname@domain.com

Test #
188

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

.@

Test #
189

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may begin with a dot

a@b

Test #
190

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLD

In the case of a top-level domain used by itself in an email address, a single string is used without any dots. This makes the requirement, described in more detail below, that only fully-qualified domain names appear in SMTP transactions on the public Internet, particularly important where top-level domains are involved.
RFC 5321 section 2.3.5
Address is valid but at a Top Level Domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

@bar.com

Test #
191

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NOLOCALPART

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Address has no local part

@@bar.com

Test #
192

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NOLOCALPART

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
Address has no local part

a@bar.com

Test #
193

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_MX_RECORD

Couldn't find an MX record for this domain but an A-record does exist
Expected category was ISEMAIL_VALID_CATEGORY
Expected diagnosis was ISEMAIL_VALID

aaa.com

Test #
194

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_NODOMAIN

addr-spec = local-part "@" domain
RFC 5322 section 3.4.1
Mailbox = Local-part "@" ( Domain / address-literal )
RFC 5321 section 4.1.2
Address has no domain part

aaa@.com

Test #
195

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may begin with a dot

aaa@.123

Test #
196

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may begin with a dot

aaa@[123.123.123.123]

Test #
197

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
Address is valid but at a literal address not a domain

aaa@[123.123.123.123]a

Test #
198

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_DOMLIT

domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
extra data outside address-literal
Extra characters were found after the end of the domain literal
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

aaa@[123.123.123.333]

Test #
199

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_DOMAINLITERAL

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]
RFC 5322 section 3.4.1
not a valid IP
The domain literal is not a valid RFC 5321 address literal

a@bar.com.

Test #
200

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_END

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may end with a dot

a@bar

Test #
201

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLD

In the case of a top-level domain used by itself in an email address, a single string is used without any dots. This makes the requirement, described in more detail below, that only fully-qualified domain names appear in SMTP transactions on the public Internet, particularly important where top-level domains are involved.
RFC 5321 section 2.3.5
Address is valid but at a Top Level Domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

a-b@bar.com

Test #
202

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_MX_RECORD

Couldn't find an MX record for this domain but an A-record does exist
Expected category was ISEMAIL_VALID_CATEGORY
Expected diagnosis was ISEMAIL_VALID

+@b.c

Test #
203

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

TLDs can be any length
Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

+@b.com

Test #
204

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

a@-b.com

Test #
205

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOMAINHYPHENSTART

Domain = sub-domain *("." sub-domain) Let-dig = ALPHA / DIGIT Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
RFC 5321 section 4.1.2
A domain or subdomain cannot begin with a hyphen

a@b-.com

Test #
206

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOMAINHYPHENEND

Domain = sub-domain *("." sub-domain) Let-dig = ALPHA / DIGIT Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
RFC 5321 section 4.1.2
A domain or subdomain cannot end with a hyphen

-@..com

Test #
207

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
Neither part of the address may begin with a dot

-@a..com

Test #
208

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_CONSECUTIVEDOTS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
The address may not contain consecutive dots

a@b.co-foo.uk

Test #
209

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

"hellomynameis"@stutter.com

Test #
210

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

"Test\"Fail\"Ing"@iana.org

Test #
211

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

valid@about.museum

Test #
212

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

invalid@about.museum-

Test #
213

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOMAINHYPHENEND

Domain = sub-domain *("." sub-domain) Let-dig = ALPHA / DIGIT Ldh-str = *( ALPHA / DIGIT / "-" ) Let-dig
RFC 5321 section 4.1.2
A domain or subdomain cannot end with a hyphen

shaitan@my-domain.thisisminekthx

Test #
214

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Disagree with Paul Gregg here
Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD

test@...........com

Test #
215

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_DOT_START

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Domain = sub-domain *("." sub-domain)
RFC 5321 section 4.1.2
......
Neither part of the address may begin with a dot

foobar@192.168.0.1

Test #
216

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_TLDNUMERIC

Errata ID 1081, reported 2007-11-20, identifies a problem with the evolution of naming of top-level domains and the text of RFC 1123. It reads: Section 2.1 says: However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be alphabetic. It should say: However, a valid host name can never have the dotted-decimal form #.#.#.#, since at least the highest-level component label will be not all-numeric. Notes: RFC 3696 section 2 states: "There is an additional rule that essentially requires that top-level domain names not be all-numeric." The eleven IDN test TLDs created in September 2007 contain hyphen-minus as specified in the IDNA RFCs. It should say: However, a valid host name can never have the dotted-decimal form #.#.#.#, since this change does not permit the highest-level component label to start with a digit even if it is not all-numeric. Notes: This is a correct identification of the problem, but the wrong fix. RFC 3696, which ID 1081 cites, is an informational document that is deliberately relaxed about the fine details and says so. It is not relevant to determination of the text that should have been (with perfect knowledge of the future) in 1123. Based on discussions when we were doing RFC 1591 and subsequently, the expectation then (and presumably when 1123 was written) was that the name of any new TLD would follow the rules for the existing ones, i.e., that they would be exactly two or three characters long and be all-alphabetic (which is exactly what 1123 says). The slightly-odd "will be" language in 1123 was, I believe, because that restriction was expected to be enforced by IANA, rather than being a protocol issue. ICANN, with a different set of assignment policies, effectively eliminated the length rule with the TLDs allocated in 2000. IDNA (RFC 3490) uses a syntax for IDNs that requires embedded hyphens in TLDs if there were ever to be an actual IDN TLD (hence the comment in ID 1081 about the IANA IDN testbed). While the proposed correction in Errata ID 1081 would fix the problem by imposing the narrowest possible restriction ("not all-numeric"), the original host name rule and the original statement in 1123 both assume the possibility of a minimal check to differentiate between domain names and IP addresses, i.e., checking the first digit only. Because I believe that there are probably implementations that depend on such minimal parsing --some probably ancient and embedded-- it would appear to be wise to relax the rule as little as possible and, in particular, to restrict the "leading digit" exception to domains below the top-level, as 1123 effectively does. The suggested text above reflects that reasoning. Because of the possible consequences of this issue, I would hope that it would be discussed with the relevant DNS-related WGs, the Root Server Advisory Committee (RSAC), and with IANA for comment and as a heads-up. This issue is substantive enough that it should probably be dealt with by a document that explicitly updates 1123 and that is processed on the Standards Track, but an accurate statement in the errata is the next-best option until that can be done. In the interim and while this suggestion is being discussed, Errata ID 1081 should probably be taken out of "validated" status.
John Klensin, RFC 1123 erratum 1353
ip need to be []
Address is valid but the Top Level Domain begins with a number
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD, ISEMAIL_DNSWARN_NO_RECORD

"Joe\\Blow"@iana.org

Test #
217

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

Invalid\
Folding\
Whitespace@iana.org

Test #
218

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Even obs-local-part doesn't allow CFWS in the middle of an atom
Address contains text after a comment or Folding White Space

HM2Kinsists@(thatcommentsareallowed)this.is.ok

Test #
219

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_FWS

user%uucp!path@berkeley.edu

Test #
220

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

"first(last)"@iana.org

Test #
221

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_QUOTEDSTRING

quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] qcontent = qtext / quoted-pair qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext quoted-pair = ("\" (VCHAR / WSP)) / obs-qp
RFC 5322 section 3.4.1
Address is valid but contains a quoted string

␍␊
(␍␊
x␍␊
)␍␊
first␍␊
(␍␊
x␍␊
)␍␊
.␍␊
(␍␊
x)␍␊
last␍␊
(x␍␊
)␍␊
@iana.org

Test #
222

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
Address contains a comment or Folding White Space around the @ sign
Other diagnoses: ISEMAIL_CFWS_FWS, ISEMAIL_CFWS_COMMENT, ISEMAIL_DEPREC_LOCALPART, ISEMAIL_DEPREC_FWS, ISEMAIL_DEPREC_COMMENT

first.last@iana.org

Test #
223

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_CFWS_NEAR_AT

Comments and folding white space SHOULD NOT be used around the "@" in the addr-spec.
RFC 5322 section 3.4.1
4. SHOULD NOT This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.
RFC 2119 section 4
FWS is allowed after local part (this is similar to #152 but is the test proposed by John Kloor)
Address contains a comment or Folding White Space around the @ sign

test.␍␊
␍␊
obs@syntax.com

Test #
224

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_FWS

obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS] quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS]
RFC 5322 section 3.4.1
obs-domain = atom *("." atom) atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
obs-fws allows multiple lines (test 2: space before break)
Address contains an obsolete form of Folding White Space

test.␍␊
␍␊
obs@syntax.com

Test #
225

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_FWS_CRLF_X2

CFWS = (1*([FWS] comment) [FWS]) / FWS FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space comment = "(" *([FWS] ccontent) [FWS] ")" ccontent = ctext / quoted-pair / comment ctext = %d33-39 / ; Printable US-ASCII %d42-91 / ; characters not including %d93-126 / ; "(", ")", or "\" obs-ctext
RFC 5322 section 3.2.2
obs-fws must have at least one WSP per line
Folding White Space contains consecutive CRLF sequences
Other diagnoses: ISEMAIL_DEPREC_FWS

"UnicodeNULL\"@char.com

Test #
226

Category
ISEMAIL_DEPREC

Diagnosis
ISEMAIL_DEPREC_QP

obs-qp = "\" (%d0 / obs-NO-WS-CTL / LF / CR) obs-NO-WS-CTL = %d1-8 / ; US-ASCII control %d11 / ; characters that do not %d12 / ; include the carriage %d14-31 / ; return, line feed, and %d127 ; white space characters
RFC 5322 section 4.1
Can have escaped Unicode Character 'NULL' (U+0000)
A quoted pair contains a deprecated character
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

"UnicodeNULL"@char.com

Test #
227

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_QTEXT

qtext = %d33 / ; Printable US-ASCII %d35-91 / ; characters not including %d93-126 / ; "\" or the quote character obs-qtext
RFC 5322 section 3.2.4
Cannot have unescaped Unicode Character 'NULL' (U+0000)
A quoted string contains a character that is not allowed
Other diagnoses: ISEMAIL_RFC5321_QUOTEDSTRING

UnicodeNULL\@char.com

Test #
228

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_ATEXT_AFTER_CFWS

local-part = dot-atom / quoted-string / obs-local-part dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext) quoted-string = [CFWS] DQUOTE *([FWS] qcontent) [FWS] DQUOTE [CFWS] obs-local-part = word *("." word) word = atom / quoted-string atom = [CFWS] 1*atext [CFWS]
RFC 5322 section 3.4.1
domain = dot-atom / domain-literal / obs-domain dot-atom = [CFWS] dot-atom-text [CFWS] dot-atom-text = 1*atext *("." 1*atext)
RFC 5322 section 3.4.1
Escaped Unicode Character 'NULL' (U+0000) must be in quoted string
Address contains text after a comment or Folding White Space

cdburgess+!#$%&'*-/=?+_{}|~test@gmail.com

Test #
229

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

Example given in comments
Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.

first.last@[IPv6:::a2:a3:a4:b1:b2:b3:b4]

Test #
230

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_IPV6DEPRECATED

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
:: only elides one zero group (IPv6 authority is RFC 4291)
Address is valid but contains a :: that only elides one zero group
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3::]

Test #
231

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_IPV6DEPRECATED

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
:: only elides one zero group (IPv6 authority is RFC 4291)
Address is valid but contains a :: that only elides one zero group
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6::]

Test #
232

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONSTRT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address starts with a single colon
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

first.last@[IPv6:::]

Test #
233

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6::::]

Test #
234

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6::b4]

Test #
235

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONSTRT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address starts with a single colon
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

first.last@[IPv6:::b4]

Test #
236

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6::::b4]

Test #
237

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6::b3:b4]

Test #
238

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONSTRT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address starts with a single colon
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

first.last@[IPv6:::b3:b4]

Test #
239

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6::::b3:b4]

Test #
240

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1::b4]

Test #
241

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1:::b4]

Test #
242

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1:]

Test #
243

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONEND

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address ends with a single colon
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

first.last@[IPv6:a1::]

Test #
244

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1:::]

Test #
245

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1:a2:]

Test #
246

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONEND

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address ends with a single colon
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

first.last@[IPv6:a1:a2::]

Test #
247

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1:a2:::]

Test #
248

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:0123:4567:89ab:cdef::]

Test #
249

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:0123:4567:89ab:CDEF::]

Test #
250

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:::a3:a4:b1:ffff:11.22.33.44]

Test #
251

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:::a2:a3:a4:b1:ffff:11.22.33.44]

Test #
252

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_IPV6DEPRECATED

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
:: only elides one zero group (IPv6 authority is RFC 4291)
Address is valid but contains a :: that only elides one zero group
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1:a2:a3:a4::11.22.33.44]

Test #
253

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1:a2:a3:a4:b1::11.22.33.44]

Test #
254

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_IPV6DEPRECATED

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
:: only elides one zero group (IPv6 authority is RFC 4291)
Address is valid but contains a :: that only elides one zero group
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6::11.22.33.44]

Test #
255

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONSTRT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address starts with a single colon
Other diagnoses: ISEMAIL_RFC5322_IPV6_GRPCOUNT

first.last@[IPv6::::11.22.33.44]

Test #
256

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1:11.22.33.44]

Test #
257

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_GRPCOUNT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains the wrong number of groups
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1::11.22.33.44]

Test #
258

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1:::11.22.33.44]

Test #
259

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1:a2::11.22.33.44]

Test #
260

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1:a2:::11.22.33.44]

Test #
261

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.44]

Test #
262

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:0123:4567:89ab:cdef::11.22.33.xx]

Test #
263

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 address contains an illegal group of characters

first.last@[IPv6:0123:4567:89ab:CDEF::11.22.33.44]

Test #
264

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:0123:4567:89ab:CDEFF::11.22.33.44]

Test #
265

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 address contains an illegal group of characters

first.last@[IPv6:a1::a4:b1::b4:11.22.33.44]

Test #
266

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1::11.22.33]

Test #
267

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 address contains an illegal group of characters

first.last@[IPv6:a1::11.22.33.44.55]

Test #
268

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 address contains an illegal group of characters

first.last@[IPv6:a1::b211.22.33.44]

Test #
269

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_BADCHAR

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 address contains an illegal group of characters

first.last@[IPv6:a1::b2:11.22.33.44]

Test #
270

Category
ISEMAIL_RFC5321

Diagnosis
ISEMAIL_RFC5321_ADDRESSLITERAL

address-literal = "[" ( IPv4-address-literal / IPv6-address-literal / General-address-literal ) "]"
RFC 5321 section 4.1.2
IPv4-address-literal = Snum 3("." Snum) Snum = 1*3DIGIT ; representing a decimal integer ; value in the range 0 through 255
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
Address is valid but at a literal address not a domain

first.last@[IPv6:a1::b2::11.22.33.44]

Test #
271

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_2X2XCOLON

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 literal address contains too many :: sequences
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

first.last@[IPv6:a1::b3:]

Test #
272

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONEND

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address ends with a single colon

first.last@[IPv6::a2::b4]

Test #
273

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONSTRT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address starts with a single colon

first.last@[IPv6:a1:a2:a3:a4:b1:b2:b3:]

Test #
274

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONEND

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address ends with a single colon

first.last@[IPv6::a2:a3:a4:b1:b2:b3:b4]

Test #
275

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_COLONSTRT

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
IPv6 address starts with a single colon

first.last@[IPv6:a1:a2:a3:a4::b1:b2:b3:b4]

Test #
276

Category
ISEMAIL_RFC5322

Diagnosis
ISEMAIL_RFC5322_IPV6_MAXGRPS

IPv6-address-literal = "IPv6:" IPv6-addr IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp IPv6-hex = 1*4HEXDIG IPv6-full = IPv6-hex 7(":" IPv6-hex) IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)] ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 6 groups in addition to the ; "::" may be present. IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::" [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal ; The "::" represents at least 2 16-bit groups of ; zeros. No more than 4 groups in addition to the ; "::" and IPv4-address-literal may be present.
RFC 5321 section 4.1.3
IPv6 authority is RFC 4291
The IPv6 address has too many groups
Other diagnoses: ISEMAIL_RFC5321_ADDRESSLITERAL

test@test.com

Test #
277

Category
ISEMAIL_VALID_CATEGORY

Diagnosis
ISEMAIL_VALID

test.com has an A-record but not an MX-record
Address is valid. Please note that this does not mean the address actually exists, nor even that the domain actually exists. This address could be issued by the domain owner without breaking the rules of any RFCs.
Expected category was ISEMAIL_DNSWARN
Expected diagnosis was ISEMAIL_DNSWARN_NO_MX_RECORD

test@example.com

Test #
278

Category
ISEMAIL_ERR

Diagnosis
ISEMAIL_ERR_EXPECTING_ATEXT

atext = ALPHA / DIGIT / ; Printable US-ASCII "!" / "#" / ; characters not including "$" / "%" / ; specials. Used for atoms. "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~"
RFC 5322 section 3.2.3
Address has a newline at the end
Address contains a character that is not allowed

test@xn--example.com

Test #
279

Category
ISEMAIL_DNSWARN

Diagnosis
ISEMAIL_DNSWARN_NO_RECORD

Address is at an Internationalized Domain Name (Punycode)
Couldn't find an MX record or an A-record for this domain
Other diagnoses: ISEMAIL_DNSWARN_NO_MX_RECORD
« back to top