I'm sure I've seen a huge (several hundreds lines) regexp RFC 822 compliant for checking mail here in the monastery.
(But despite my search I couldn't manage to find it again...)
But thanks to Clownburner, I will know be able to recreate it...
But people usually use Email::Valid, this combined with some MX check/hack (EXPN/CHCK/RCPT TO check)
could produce a pretty good email checking