Hmm, sorry but I don't buy that the "correct way to validate" is not to validate the input. Email addresses aren't a special enough case to be handled differently than any other user input, which we always validate to both sanitize and show client-side errors, if nothing else. Sure, the complete regex is complex, but it is defined and is hardly unconquerable. Look at Django's `EmailValidator` implementation for examp…
Regarding that testdata, what is the reason for rejecting bare IP literals on the right hand side? It seems pedantic to require the square braces.
I ran a fresh install of Django to confirm and it behaves as you suggest.
Edit: Perhaps only for low digits. Hmm.
>>> from django.core.validators import EmailValidator
>>> e = EmailValidator()
>>> e.__call__('foo@[1.2.3.4]')
>>> e.__call__('foo@1.2.3.4')
ValidationError: [u'Enter a valid email address.']
>>> e.__call__('foo@0.0.0.0')
ValidationError: [u'Enter a valid email address.']
>>> e.__call__('foo@[0.0.0.0]')
>>> e.__call__('foo@10.10.10.10')
>>> e.__call__('foo@[10.10.10.10]')
>>> e.__call__('foo@255.255.255.255')
>>> e.__call__('foo@[255.255.255.255]')