Skip to content

Validators::isEmail: Add check for DNS nameservers.#269

Closed
janbarasek wants to merge 15 commits intonette:masterfrom
janbarasek:patch-15
Closed

Validators::isEmail: Add check for DNS nameservers.#269
janbarasek wants to merge 15 commits intonette:masterfrom
janbarasek:patch-15

Conversation

@janbarasek
Copy link
Copy Markdown
Contributor

  • new feature
  • BC break? no

E-mail should be valid only in case of domain name use valid MX DNS record.

Examples:

Validators::isEmail('jan@barasek.com'); // true
Validators::isEmail('jan@aaadfergrtgeaaa.com'); // true
Validators::isEmail('jan@aaadfergrtgeaaa.com', true); // false

@milo
Copy link
Copy Markdown
Member

milo commented Oct 12, 2021

You don't need MX record. A, or AAAA is sufficient to deliver e-mails.

@mabar
Copy link
Copy Markdown
Contributor

mabar commented Oct 12, 2021

Also I think checkdnsrr(idn_to_ascii($domain), 'MX')) should be used. checkdnsrr() returns bool and idn_to_ascii() is for domains like ñandu.cl (var_dump(checkdnsrr(idn_to_ascii('ñandu.cl'), 'MX'));)

Ideal would imho be to support only fully FQDN - if trailing dot is missing, add it. It should prevent multiple lookups with relative domain name. So instead of google.com, always look for google.com.

@milo
Copy link
Copy Markdown
Member

milo commented Oct 13, 2021

Part after @ can be domain (MX is required), or hostname (one of MX, A, or AAAA is required). I think checking existence of MX or A or AAAA by checkdnsrr() is sufficient.

To IDN - yes, idn_to_ascii() shoud be used, but I'm not sure, default parameters are OK.

@dg
Copy link
Copy Markdown
Member

dg commented Oct 21, 2021

@janbarasek can you update PR please?

@nechutny
Copy link
Copy Markdown

There was forum post about this 8 years ago https://forum.nette.org/en/1293-mail-adress-validation-mx-records and it contains good points which needs to be solved.

@milo
Copy link
Copy Markdown
Member

milo commented Oct 21, 2021

I don't think so

  • check MX/A - yes, it will
  • it will be slower - yes, that's the price (surely few tens of ms, not seconds)
  • process MX records - no, thats what MTA will do
  • whois database - a little bit off topic

We only want to check that domain/hostname exists, not that they has correctly configured mail delivery. If domain/hostname is wrong, MTA fails immediately (that's what we want to prevent). If domain/hostname is correct, but MX records are incorrect or host is down, MTA will use queue and will try to deliver later.

@dg dg force-pushed the master branch 8 times, most recently from 8cb1b67 to 5002ffb Compare October 26, 2021 23:33
@dg dg force-pushed the master branch 2 times, most recently from a7a3cf1 to 3698c0c Compare October 13, 2022 01:21
@dg dg force-pushed the master branch 2 times, most recently from 6307c27 to fac1f2b Compare October 23, 2022 16:31
@dg dg force-pushed the master branch 2 times, most recently from edc34c3 to 7c2a4de Compare December 4, 2022 22:52
@dg dg force-pushed the master branch 3 times, most recently from bfae9e7 to c567207 Compare December 21, 2022 01:02
@dg dg force-pushed the master branch 11 times, most recently from 46e8fe1 to 489126b Compare January 16, 2023 03:57
@dg dg force-pushed the master branch 10 times, most recently from db81e54 to 27251ce Compare January 18, 2023 03:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants