Well, there are a couple of things that I think we should clear up. First of all, we should clear up the question of whether any process could reach pop.gmail.com. From where my systems connect to the internet, this DNS name resolves to 22.214.171.124 and 126.96.36.199 Can you ping either of these addresses and get a response? If so, can you then ping pop.gmail.com and get a response?
From your firewall script, I guess that you will not be able to get the second experiment to work, but that is uncertain, as some systems have automatic ways of punching holes through the firewall for DNS traffic. If you could post the actual rules, rather than the script which generates them, it would be instructive.
Part way down in your script, a comment says that you are going to allow UDP, DNS and passive FTP traffic, but the rule just below that does not do exactly that. It allows packets received in reply to connection requests initiated either on the firewall or on machines on the LAN behind the firewall, and would permit an active FTP as well as a passive FTP connection, if the control channel was set up from behind the firewall or on the firewall machine. I am not entirely sure if it will allow DNS exchanges begun from behind the firewall (these are, in fact, UDP packets).
BTW, since your OUTPUT chain policy is ACCEPT, the rules you have specified for this chain are redundant. The only rules that would have an effect with this policy are ones that REJECT or DROP packets.
If it is possible to resolve the DNS name to an address, and to get a ping response, then I guess it might be time to do a packet trace, looking at packets that have either source or destination port 110 and TCP protocol, so that you can tell whether no packet goes out, or none returns, or one returns and is somehow misdirected.