I suspect that the problem is the 'p01-' or 'p02-' prefix on the server address. These prefixes represent different load-balancing servers within a cluster, and from time to time one or another (there may be more) is down, and if it happens to be the one with your prefix, then the server won't recognise you. I suspect that this 'p0x-' prefix is put there by the automatic setup mechanism in Mail which queries the server responding to a particular email address. It gets back the address of just one server in the cluster - not the address of the cluster itself. Once the prefix is there, you can't edit it. Here's how I think you can fix it for good:
1. Go to Mail/Preferences/Accounts and add a new mail account (using the plus icon at the bottom).
2. In the Email Address: field, enter a POP email address (i.e. one which does NOT have me.com at the end). Any email address will do - doesn't have to be yours. Leave the password blank.
3. This may either take you to a screen saying 'Can't send password to server - set up manually?' (answer yes), or just take you to the manual setup sheet anyway.
4. You now have an 'Incoming Mail Server' sheet. Pull down the Account Type and choose IMAP.
5. Give your account any name of your choosing (e.g. iCloud)
6. Enter your Incoming Mail Server as: 'imap.mail.me.com' (no quotes - note no 'p0x-' prefix).
7. Enter your user name as your @me.com email address without the @me.com. Enter your correct password and click Continue.
8. Enter 'smtp.mail.me.com' as your outgoing mail server, or choose it from the list if it is already set up. Just follow the bouncing ball to set up your outgoing server - you can always change this at the end.
9. Once your account has been set up, don't forget to change your email address back to your @me.com address in the Account Information tab of your new account.
10. You should then be able to delete your old email account. A good idea to populate your new account from the cloud first, just in case.
When set up this way, the server will silently add the 'p01-', 'p02-' etc prefix at the time of connection and connect to one of the servers in the cluster. You should then not see your username rejected unless all servers are down. I suspect that you will get better performance as well, because you should always connect to the least busy server.