EPSVが解消するのはFTPアドレスの問題で、2本目の接続ではない
FTPログインがプロキシ経由で成功しても一覧取得や転送の準備が失敗するとき、パッシブデータのエンドポイントを理解する。
EPSVもFTPのデータ接続を別途開きます。変わるのはエンドポイントの情報であり、接続の本数ではありません。
従来のPASV応答はアドレスとポートを返します。そのアドレスはサーバーのネットワーク外では使えないことがあります。EPSVはポートを返し、制御接続に対応するサーバーアドレスを使います。
プロキシ経由ではFTPサーバーの論理的な同一性を保ちます。中継機器の待ち受けアドレスが、返されたデータポートを所有するサーバーとは限りません。
データ接続には想定したプロキシ経路と、選択したポートへ到達する許可も必要です。FTP制御ポートへのCONNECTを受け入れても、その後のすべてのデータ接続が許可されるわけではありません。
EPSVを無効化する前に、パッシブ応答と、転送のために要求されたサーバーアドレスおよびポートを確認します。FTPログインの成功は制御接続を確立するだけで、データ接続は確認対象として残ります。Python ftplibでは、PySocksの既定値だけに頼らず両方のソケットコンストラクターを追跡してください。