You can force this by using the --force-badname option 'adduser --force-badname Ali', or by changing the regex in the aforementioned config-file, however...
The reason upper-case letters aren't normally allowed is that it leads to ambiguous and confusing usernames, both to humans and to programs. I.e. John, john, JOHn, and JOHN, would all be separate usernames, if allowed or forced (sixteen variations with four of the same letters, upper and lower-case). As to other symbols, it could lead to catastrophic and dire consequences in some cases-- for example having the pipe symbol '|' would probably be a really bad idea, because it means something in the command-line, and sometimes to other programs that might not deal well with it in a username. With caps, standard email in particular is usually not case-sensitive, and could lead to mixed up or undeliverable mailboxes if used this way-- normally reverting all to lower-case, because that's the historical standard, not to mention whatever is contained in the RFC's. Be careful if you tread outside those bounds. I'm not saying never do it-- but be advised and consider that it would be experimental and may not be freindly to all your purposes.