Thanks a lot for all the replies, public and private (especially Berk for detailed explanations). It turns out that my nat rule was not complete/correct (just as all of the replies had implied this possibility).
So, for the record, the rules I'm using right now are as follows, and work perfectly: nat on $ext_if1 proto tcp from self to any port smtp \ tag IF2 -> ($ext_if2) pass out log quick on $ext_if1 route-to ($ext_if2 $ext_gw2) \ tagged IF2 keep state Thanks again for the great community support.