There are several ways to setup multiple domain on single Active Directory / Exchange domain. I am listing one which I used for my organization:
1. Create an OU for placing users of xyz.com, say XYZ.
2. Create Universal Security Group for xyz.com users with mail sending permission to all xyz.com users, say XyzSec.
3. Create a Recipient Policy for xyz.com, say xyz.com with a custom filter rule using memberOf attribute (here filter rule will include memberOf XyzSec).
4. Create Address List for xyz.com users so that users of other domain can easily find them in GAL.
5. If you want xyz.com users to logon to their own domain, then you have to add UPN suffix to XYZ OU using ADSIEDIT tool.
6. In ADSIEDIT, locate XYZ OU under domainDNS class. Open Properties, under Attribute Editor tab you will find number of attributes.
7. Locate uPNSuffixes attribute and edit it to include xyz.com.
Now you are ready to create users for xyz.com domain.
8. In Active Directory Users and Computers go to XYZ OU and create new users there.
9. Steps will be similar to normal account creation except you will find that here you can select either abc.com or xyz.com domain because of the UPN suffix we added in steps 6 and 7. Here you have to select xyz.com.
10. After account creation done, add that user to XyzSec security group.
Now after a while this user will get xyz.com smtp address once Recipient Policy created for this domain gets applied automatically. You can also apply this policy manually through Exchange System Manager.
Please remember, to append xyz.com smtp address automatically to users following must be taken care:
1. Users must be created in XYZ OU and xyz.com domain must be selected in Account Creation Wizard.
2. Users must be added to XyzSec security group so that they can pass memberOf filter rule created in xyz.com Recipient Policy.
I hope this will address your query.