pikegmu
Bear with me a minute whilst I explain - starting with standard ftp and not ftps or ftpes
The problem area for most people with ftp is that it uses two connections.
Standard (active) ftp defaults to a control (or command) channel on port 21 outbound from the client to the server and a data channel on port 20 outbound from the server to the client.
For standard (active) ftp with the server behind a NAT firewall, port 21 needs to be forwarded to the server.
Standard (active) ftp with the client behind a NAT firewall usually works because most NAT firewalls know to "fix up" the ftp protocol (that by the way is Cisco's terminology

), so when they see an outgoing control channel established on port 21 to a given ip address, they look for an incoming connection request
from the same ip address and forward it to the host that established the control channel - all other incoming connection requests that do not have specific forwarding configured are discarded.
This causes a problem when the standard (active) ftp session is established on a non-standard port - for example 210 - assume the server side has been properly configured for the non-standard port, and it is now trying to establish the data channel to the client - the client side firewall does not recognise the outgoing connection on 210 to be an ftp control connection and so does not provide the "fix-up" instead it discards the incoming request. This is the reason for standard (passive) ftp.
I will be very brief here with standard (passive) ftp - the main difference between active & passive ftp is that with passive ftp both the control and data channels are established by the ftp client and so the NAT firewall at the client end does not create any problems - the problem instead is shifted to the server end, and can be quite challenging if the server is behind a NAT firewall.
Essentially the server tells the client to establish the data connection on a particular randomly selected port and then waits for the connection, and if the server is behind a NAT firewall, that port or a range of ports needs to be forwarded to the server in addition to the control port - the problem here is in knowing which port(s) to forward.
Now to ftps and ftpes - which I don't claim a great deal of knowledge about.
As far as I understand - these secure types of ftp also use two separate control and data channels - so the problems I outlined above still exist - ftps apparently defaults to 990 for the control port and 989 for the data.
So what my question translates to - is will your client side NAT firewall recognise the outgoing connection on 990 as ftps and allow the inbound connection through or will it discard it?