Skip to content

Conversation

@janbarasek
Copy link
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
Member

milo commented Oct 12, 2021

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

@mabar
Copy link
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
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
Member

dg commented Oct 21, 2021

@janbarasek can you update PR please?

@nechutny
Copy link

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
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 4 times, most recently from ba103e3 to ce70865 Compare March 30, 2025 21:06
@dg dg force-pushed the master branch 2 times, most recently from 9aff0b8 to e67c406 Compare June 3, 2025 04:55
@dg dg force-pushed the master branch 8 times, most recently from a702672 to 5ab770f Compare June 19, 2025 19:00
@dg dg force-pushed the master branch 3 times, most recently from 99fbd2d to 8ee89b1 Compare August 6, 2025 21:44
@dg dg force-pushed the master branch 6 times, most recently from 1765d9d to 17932ce Compare October 31, 2025 00:46
@dg dg force-pushed the master branch 7 times, most recently from ad7c562 to baa7cb7 Compare December 1, 2025 17:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

5 participants