A CNAME is a DNS record that says that domainA.com lives where domainB.com is. That means you then do another lookup on domainB.com and get its A record. Somewhere down the chain you have to have an A record. An A record is what ties a domain to an IP.
The problem here is that a CNAME is not the same thing as 301. If you go to the CNAME as mentioned above, your browser will still say domainA.com. We use a CNAME because we have a load balancer with AWS. So our site resolves to a CNAME that resolves to the load balancer address but it still shows up as www.ourdomain.com. We have dozens of URLs like this pointed to the same hosting configuration and each domain is seen as the original TLD. This will cause duplicate content problems for your client.
The correct solution is to set them up with an A record pointed at a web server and then have your web server return a 301.