Wait, wait! Don't tell me!
But once again, schema matters, because when you created a new user, even though you set their eUPN accordingly, they're getting email aliases with that pesky onmicrosoft.com domain as the primary alias. So you think, It's just Exchange 2010, I'll use PowerShell remoting and do some wizardry behind the scenes. Nope, fail. You can't. The primary SMTP alias comes from an Active Directory property that's automatically populated in domains with on premises Exchange when you create a user's mailbox.
Enter the ADSIEdit
If you've been an Exchange administrator for a while, you've probably played with the proxyAddresses attribute before. I've mentioned it before when you're looking to add a secondary alias. But if you don't even have a primary alias, you'll be seeing this:
|proxyAddresses is undefined|
Launching ADSIEdit from Administrator Tools on the Start Menu gets us going. Connect to your Default Naming Context and drill down to your user object. Right clicking the user allows you to select Properties. Double check that the Show only attributes that have values is unchecked.
Drilling down through our list you'll see that proxyAddresses is blank. Set it to SMTP:firstname.lastname@example.org. Make sure that you have one and only one address with the SMTP capitalized. Hop over to your Directory Synchronization host and re-run the Directory Synchronization Configuration wizard.
Other Cool Stuff
Let's say you want to see who you've missed this property on before. If you launch ADUC, you can create a custom query and configure an LDAP filter: