I haven't been able to find an exact answer for your question, but hopefully I can put you on the right track. I had this same problem at work when I was on RH Linux. We had a firewall in the way, and somewhere I found that the answer was configuring CPAN to use ncftp (or ncftpget?) instead of ftp. I can't remember if that means in the ".CPAN/config.pm" file you need to change the "ftp" value from "/usr/bin/ftp" to "/usr/bin/ncftp" or what. But something along those lines is what it took to get CPAN working for me.
HTH.