Is there a way I can set an OWA server in my DMZ to talk to a DC in the local site?
The DMZ is located at the same (physical) site as a LAN with DCs on it. (There is no DC in the DMZ.)
Can I force it to use a DC on this (local) subnet, as its picking random ones at the other side of the world!
You need to define AD Sites in Active Directory Sites and Services. You then specify what subnets define each site. Then you can assign Domain Controllers to that site.
If you have a world-wide distribution of the same AD Domain, you should absolutely set this up, because not only are your mail servers using random DCs across the world, but your workstations are as well.
Configuring sites is of course a good start. However you should still be aware that you cannot "force" the usage of a specific DC using Sites and Services. This is by design. For example, if the DC in your site is down, Windows should try a DC in another site.
If you have a topology with a main location (such as HQ or datacenter) and remote "spoke" sites with DC's that only need to perform local authentication and other DC functions, the remote DC's can be configured to not advertise certain services by using the DnsAvoidRegisterRecords registry setting.
Also note that you can influence preference order by using the Priority and Weight of the SRV DNS records in the _msdcs subdomain, but that should only be done after a thorough analysis. Clients attempt to contact the server with the lowest priority. Weight is a load-balancing mechanism that is used when selecting a target host from those that have the same priority. Clients randomly choose SRV records that specify target hosts to be contacted, with probability proportional to the weight.
More information:
How to optimize the location of a domain controller or global catalog that resides outside of a client's site
http://support.microsoft.com/kb/306602
SRV Resource Records
http://technet.microsoft.com/en-us/library/cc961719.aspx