I am having a similar difficulty. Here is my scenario (names changed to protect the innocent):
sme.example.com is my sme server (in testing)
ip: 10.0.0.88
gateway: 10.0.0.1
corp.dns: 10.0.0.1
mail.example.net is my (personal) mail server
ip: 10.0.0.60
10.0.0.1 is my gateway running dns (glorified hosts file) for local lan, it has host records for mail.example.net --> 10.0.0.60
The problem is that from the console on sme.example.com I ping mail.example.net and it resolves to the internet. The sme server is getting mx records from the internet, which is fine, but it is trying to deliver to preference 1 (web host) not preference 0 (my public IP), I presume this is the case because the firewall is not letting lan traffic route out and back in again through the public address, so it fails immediately on pref0 and goes to pref1 which is at the web host.
When i try and ping mail.example.net it resolves to the public IP, not the private ip of 10.0.0.60. So, the corporate dns entry does not appear to be doing anything of value. I added a couple records to /etc/hosts, and now I can ping the address and it resolves internally just fine, however, when I send mail to the domain, the mail server still tries to send to pref1, leading my to believe that it still resolves mail.example.net to the internet address.
I have tried adding the domain to my sme server with all three options for resolution... the net effect is either the same issue or the mail for example.net just gets delivered locally.
What am I doing wrong? I really need to test mail on this thing, but I can't seem to do it this way. Every other mail server and server distro (lin or win) lets me add a host record or respects my dns server and delivers mail without issue... even if they grab mx records from the web, they still resolve that mail.example.net from the mx record according to the hosts file or the dns server.
Help?