i've given this much thought and can only recommend testing what goes on with a tool like tcpdump or ethereal.
Start ethereal, try to send an email and see what happens with the packets. Do it with the firewall on and off. If you don't have much experience with ethereal, play wit it for a while and you'll kinda pick up on what it does. Try to use that to debug what is going on.
Another question, are u able to recieve mail with the firewall up? And try adding the following rule:
iptables -A OUTPUT -j ACCEPT
i know it's the default policy for OUTPUT to ACCEPT already, but add it anyway just for kicks.