mailgun / flanker

Python email address and Mime parsing library
http://www.mailgun.com
Apache License 2.0
1.63k stars 204 forks source link

Many invalid characters are allowed in domain part of email addresses #223

Open rklingsberg opened 5 years ago

rklingsberg commented 5 years ago

I found this while testing flanker:

from flanker.addresslib import address
for sym in ('`', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '=', '>', '?', '@', '^', '_', '{', '|', '}', '~'):
    addr = 'addr@example{}com'.format(sym)

    if address.parse(addr, addr_spec_only=True, strict=True):
        print('{}\tVALID'.format(addr))
    else:
        print('{}\tINVALID'.format(addr))
addr@example`com        VALID
addr@example!com        VALID
addr@example"com        INVALID
addr@example#com        VALID
addr@example$com        VALID
addr@example%com        VALID
addr@example&com        VALID
addr@example'com        VALID
addr@example(com        INVALID
No handlers could be found for logger "flanker.addresslib._parser.lexer"
addr@example)com        INVALID
addr@example*com        VALID
addr@example+com        VALID
addr@example,com        INVALID
addr@example-com        VALID
addr@example.com        VALID
addr@example/com        VALID
addr@example:com        INVALID
addr@example;com        INVALID
addr@example<com        INVALID
addr@example=com        VALID
addr@example>com        INVALID
addr@example?com        VALID
addr@example@com        INVALID
addr@example^com        VALID
addr@example_com        VALID
addr@example{com        VALID
addr@example|com        VALID
addr@example}com        VALID
addr@example~com        VALID

I'm sorry to say I'm not sure how to fix this, but I wanted to let you know.