If it isn't in the list of forbidden characters, then it's valid. The Perl module agrees. Just because Hotmail or something says it isn't valid doesn't mean it really isn't valid according to the specification.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test&test@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&test@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test&@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&&&&&@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|&&[&&&@test.com|) ? print "Yes.\n" : print "No.\n"'
No.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|test\&@test.com|) ? print "Yes.\n" : print "No.\n"'
No.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|"test"@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|"test&"@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.
chester [~] $ perl -e 'use Mail::RFC822::Address qw(valid);valid(q|"test\&"@test.com|) ? print "Yes.\n" : print "No.\n"'
Yes.