I pulled this out of my firewall script, hope it helps.
My firewall/router is a dual homed Linux box. Substitute your proper interface(s) and appropriate IP addresses for any of the $VARIABLES as needed.
for my install, IPTABLES="/sbin/iptables".
Code:
# --------------------------------------
# inbound smtp/mail (25)
# --------------------------------------
echo ""
echo -n "Accept inbound mail requests from the Internet"
$IPTABLES -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d $EXTERNAL_ADDRESS --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -p tcp -s $EXTERNAL_ADDRESS --sport 25 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
echo ""
echo -n "Forwarding incoming port 25 traffic to mail server"
$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTERNAL_INTERFACE -s 0/0 --sport 1024:65535 -d 0/0 --dport 25 -m state --state NEW,ESTABLISHED -j DNAT --to-dest $MAIL_SERVER
$IPTABLES -A FORWARD -p tcp -i $EXTERNAL_INTERFACE -s 0/0 --sport 1024:65535 -o $INTERNAL_INTERFACE -d $MAIL_SERVER --dport 25 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -p tcp -i $INTERNAL_INTERFACE -s $MAIL_SERVER --sport 25 -o $EXTERNAL_INTERFACE -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -p tcp -o $EXTERNAL_INTERFACE -s $MAIL_SERVER --sport 25 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j MASQUERADE