Hi, i'm no expert here but i got the same basic problem, can recieve mail, in your case it looks like you need to setup a split dns server, so that when zimbra checks the dns server it will see the internal ip address instead of the public ip address.
just wondering,
What service are you using from dyndns?
Do you have an static IP address?
Is your port 25 open on the ISP?
what is the output of telnet if you try to connecto to your server on port 25 from outside? e.g. telnet mail.dyndnsdomain.com 25
split dns wiki
http://wiki.zimbra.com/index.php?title=Split_dns