I know Microsoft doesn't support the practice of running Exchange 2000 Server on a domain controller (DC), but what about Exchange Server 2003?
Microsoft supports the practice of installing and running Exchange 2003 on a DC as long as the DC is also a Global Catalog (GC) server. This, after all, is essentially what Windows Small Business Server (SBS) 2003 does. The approach is a decent alternative for sites or organizations that want a local Exchange server and GC but don't want to support two machines. After all, in a branch office that has only 10 users, why have two servers when you can get by with one? (Although an even better approach might be to deploy Microsoft Office Outlook 2003 in Cached Exchange mode and eliminate the local Exchange server altogether.)
Of course, running Exchange 2003 on a GC server has its faults. Exchange will always use the local server as its GC, so you lose the ability for Exchange to automatically pick a new GC when necessary (a moot point, however, in a one-box installation). You can't use an Exchange 2003/GC server in a cluster because Active Directory (AD) doesn't support the practice of clustering DCs. You can't use Exchange's /3GB switch, or Exchange might hog too much of the system's memory. (This limitation means that you probably shouldn't run Exchange on a GC server if you expect the server to be heavily loaded.) Running Exchange on a GC complicates Exchange restoration; if the server fails, you have to restore AD before you can restore Exchange. Finally, be aware that unless your Exchange administrator is also in charge of administering AD, running Exchange on a DC violates the principle of least privilege, which argues that you should limit access to your DCs as much as possible. (For an expanded discussion of this topic, see the Web-exclusive article "One-Box Servers," September 2003, InstantDoc 40299.)