MESSAGE
| DATE | 2004-07-26 |
| FROM | From: "Inker, Evan"
|
| SUBJECT | Subject: [hangout] Active FTP vs. Passive FTP, a Definitive Explanation
|
From owner-hangout-destenys-at-mrbrklyn.com Mon Jul 26 13:59:09 2004 X-UIDL: M_`!!"fU!!6/i!!SNN!! Received: from www2.mrbrklyn.com (localhost [127.0.0.1]) by mrbrklyn.com (8.12.11/8.11.2/SuSE Linux 8.11.1-0.5) with ESMTP id i6QHx9HS013798 for ; Mon, 26 Jul 2004 13:59:09 -0400 Received: (from mdom-at-localhost) by www2.mrbrklyn.com (8.12.11/8.12.3/Submit) id i6QHx8pt013797 for hangout-destenys; Mon, 26 Jul 2004 13:59:08 -0400 X-Authentication-Warning: www2.mrbrklyn.com: mdom set sender to owner-hangouts-at-www2.mrbrklyn.com using -f Received: from mail57.messagelabs.com (mail57.messagelabs.com [195.245.230.115]) by mrbrklyn.com (8.12.11/8.11.2/SuSE Linux 8.11.1-0.5) with SMTP id i6QHx751013792 for ; Mon, 26 Jul 2004 13:59:07 -0400 X-VirusChecked: Checked X-Env-Sender: EInker-at-gam.com X-Msg-Ref: server-4.tower-57.messagelabs.com!1090865139!11426210 X-StarScan-Version: 5.2.10; banners=-,-,- X-Originating-IP: [193.202.231.225] Received: (qmail 23787 invoked from network); 26 Jul 2004 18:05:39 -0000 Received: from unknown (HELO w2gw-ldn02.gam.com) (193.202.231.225) by server-4.tower-57.messagelabs.com with SMTP; 26 Jul 2004 18:05:39 -0000 Received: from ntas-ldn15.gam.com (unverified) by w2gw-ldn02.gam.com (Content Technologies SMTPRS 4.3.12) with ESMTP id for ; Mon, 26 Jul 2004 19:05:39 +0100 Received: by ntas-ldn15.gam.com with Internet Mail Service (5.5.2653.19) id ; Mon, 26 Jul 2004 19:05:39 +0100 Message-ID: <386AEEE1B7BAC34CB4DDF394C23492785F5233-at-w2cs-nyk02> From: "Inker, Evan" To: hangout-at-nylxs.com Subject: [hangout] Active FTP vs. Passive FTP, a Definitive Explanation Date: Mon, 26 Jul 2004 19:05:37 +0100 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: multipart/related; boundary="----_=_NextPart_000_01C4733B.274A1E10"; type="multipart/alternative" Sender: owner-hangouts-at-mrbrklyn.com Precedence: bulk Reply-To: "Inker, Evan" List: New Yorker GNU Linux Scene Admin: To unsubscribe send unsubscribe name-at-domian.com in the body to hangout-request-at-www2.mrbrklyn.com X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on www2.mrbrklyn.com X-Spam-Status: No, hits=-4.7 required=4.0 tests=BAYES_00, HTML_FONTCOLOR_UNKNOWN,HTML_MESSAGE autolearn=no version=2.63 X-Spam-Level: X-Keywords: X-UID: 36725 Status: RO Content-Length: 39386 Lines: 816
This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible.
------_=_NextPart_000_01C4733B.274A1E10 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01C4733B.274A1E10"
------_=_NextPart_001_01C4733B.274A1E10 Content-Type: text/plain
Active FTP vs. Passive FTP, a Definitive Explanation
http://www.slacksite.com/other/ftp.html
Contents:
* Introduction
* The Basics
* Active FTP
* Active FTP Example
* Passive FTP
* Passive FTP Example
* Summary
* References
* Appendix 1: Configuration of Common FTP Servers
introIntroduction
One of the most commonly seen questions when dealing with firewalls and other Internet connectivity issues is the difference between active and passive FTP and how best to support either or both of them. Hopefully the following text will help to clear up some of the confusion over how to support FTP in a firewalled environment.
This may not be the definitive explanation, as the title claims, however, I've heard enough good feedback and seen this document linked in enough places to know that quite a few people have found it to be useful. I am always looking for ways to improve things though, and if you find something that is not quite clear or needs more explanation, please let me know! Recent additions to this document include the examples of both active and passive command line FTP sessions. These session examples should help make things a bit clearer. They also provide a nice picture into what goes on behind the scenes during an FTP session. Now, on to the information...
basicsThe Basics
FTP is a TCP based service exclusively. There is no UDP component to FTP. FTP is an unusual service in that it utilizes two ports, a 'data' port and a 'command' port (also known as the control port). Traditionally these are port 21 for the command port and port 20 for the data port. The confusion begins however, when we find that depending on the mode, the data port is not always on port 20.
activeActive FTP
In active mode FTP the client connects from a random unprivileged port (N > 1024) to the FTP server's command port, port 21. Then, the client starts listening to port N+1 and sends the FTP command PORT N+1 to the FTP server. The server will then connect back to the client's specified data port from its local data port, which is port 20.
>From the server-side firewall's standpoint, to support active mode FTP the following communication channels need to be opened:
* FTP server's port 21 from anywhere (Client initiates connection)
* FTP server's port 21 to ports > 1024 (Server responds to client's control port)
* FTP server's port 20 to ports > 1024 (Server initiates data connection to client's data port)
* FTP server's port 20 from ports > 1024 (Client sends ACKs to server's data port)
When drawn out, the connection appears as follows:
In step 1, the client's command port contacts the server's command port and sends the command PORT 1027. The server then sends an ACK back to the client's command port in step 2. In step 3 the server initiates a connection on its local data port to the data port the client specified earlier. Finally, the client sends an ACK back as shown in step 4.
The main problem with active mode FTP actually falls on the client side. The FTP client doesn't make the actual connection to the data port of the server--it simply tells the server what port it is listening on and the server connects back to the specified port on the client. From the client side firewall this appears to be an outside system initiating a connection to an internal client--something that is usually blocked.
actexampleActive FTP Example
Below is an actual example of an active FTP session. The only things that have been changed are the server names, IP addresses, and user names. In this example an FTP session is initiated from testbox1.slacksite.com (192.168.150.80), a linux box running the standard FTP command line client, to testbox2.slacksite.com (192.168.150.90), a linux box running ProFTPd 1.2.2RC2. The debugging (-d) flag is used with the FTP client to show what is going on behind the scenes. Everything in red is the debugging output which shows the actual FTP commands being sent to the server and the responses generated from those commands. Normal server output is shown in black, and user input is in bold.
There are a few interesting things to consider about this dialog. Notice that when the PORT command is issued, it specifies a port on the client (192.168.150.80) system, rather than the server. We will see the opposite behavior when we use passive FTP. While we are on the subject, a quick note about the format of the PORT command. As you can see in the example below it is formatted as a series of six numbers separated by commas. The first four octets are the IP address while the second two octets comprise the port that will be used for the data connection. To find the actual port multiply the fifth octet by 256 and then add the sixth octet to the total. Thus in the example below the port number is ( (14*256) + 178), or 3762. A quick check with netstat should confirm this information.
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker): slacker
---> USER slacker
331 Password required for slacker.
Password: TmpPass
---> PASS XXXX
230 User slacker logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PORT 192,168,150,80,14,178
200 PORT command successful.
---> LIST
150 Opening ASCII mode data connection for file list.
drwx------ 3 slacker users 104 Jul 27 01:45 public_html
226 Transfer complete.
ftp> quit
---> QUIT
221 Goodbye.
passivePassive FTP
In order to resolve the issue of the server initiating the connection to the client a different method for FTP connections was developed. This was known as passive mode, or PASV, after the command used by the client to tell the server it is in passive mode.
In passive mode FTP the client initiates both connections to the server, solving the problem of firewalls filtering the incoming data port connection to the client from the server. When opening an FTP connection, the client opens two random unprivileged ports locally (N > 1024 and N+1). The first port contacts the server on port 21, but instead of then issuing a PORT command and allowing the server to connect back to its data port, the client will issue the PASV command. The result of this is that the server then opens a random unprivileged port (P > 1024) and sends the PORT P command back to the client. The client then initiates the connection from port N+1 to port P on the server to transfer data.
>From the server-side firewall's standpoint, to support passive mode FTP the following communication channels need to be opened:
* FTP server's port 21 from anywhere (Client initiates connection)
* FTP server's port 21 to ports > 1024 (Server responds to client's control port)
* FTP server's ports > 1024 from anywhere (Client initiates data connection to random port specified by server)
* FTP server's ports > 1024 to remote ports > 1024 (Server sends ACKs (and data) to client's data port)
When drawn, a passive mode FTP connection looks like this:
In step 1, the client contacts the server on the command port and issues the PASV command. The server then replies in step 2 with PORT 2024, telling the client which port it is listening to for the data connection. In step 3 the client then initiates the data connection from its data port to the specified server data port. Finally, the server sends back an ACK in step 4 to the client's data port.
While passive mode FTP solves many of the problems from the client side, it opens up a whole range of problems on the server side. The biggest issue is the need to allow any remote connection to high numbered ports on the server. Fortunately, many FTP daemons, including the popular WU-FTPD allow the administrator to specify a range of ports which the FTP server will use. See Appendix 1 for more information.
The second issue involves supporting and troubleshooting clients which do (or do not) support passive mode. As an example, the command line FTP utility provided with Solaris does not support passive mode, necessitating a third-party FTP client, such as ncftp.
With the massive popularity of the World Wide Web, many people prefer to use their web browser as an FTP client. Most browsers only support passive mode when accessing ftp:// URLs. This can either be good or bad depending on what the servers and firewalls are configured to support.
pasvexamplePassive FTP Example
Below is an actual example of a passive FTP session. The only things that have been changed are the server names, IP addresses, and user names. In this example an FTP session is initiated from testbox1.slacksite.com (192.168.150.80), a linux box running the standard FTP command line client, to testbox2.slacksite.com (192.168.150.90), a linux box running ProFTPd 1.2.2RC2. The debugging (-d) flag is used with the FTP client to show what is going on behind the scenes. Everything in red is the debugging output which shows the actual FTP commands being sent to the server and the responses generated from those commands. Normal server output is shown in black, and user input is in bold.
Notice the difference in the PORT command in this example as opposed to the active FTP example. Here, we see a port being opened on the server (192.168.150.90) system, rather than the client. See the discussion about the format of the PORT command above, in the Active FTP Example section .
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker): slacker
---> USER slacker
331 Password required for slacker.
Password: TmpPass
---> PASS XXXX
230 User slacker logged in.
---> SYST
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> passive
Passive mode on.
ftp> ls
ftp: setsockopt (ignored): Permission denied
---> PASV
227 Entering Passive Mode (192,168,150,90,195,149).
---> LIST
150 Opening ASCII mode data connection for file list
drwx------ 3 slacker users 104 Jul 27 01:45 public_html
226 Transfer complete.
ftp> quit
---> QUIT
221 Goodbye.
summarySummary
The following chart should help admins remember how each FTP mode works:
Active FTP :
command : client >1024 -> server 21
data : client >1024 <- server 20
Passive FTP :
command : client >1024 -> server 21
data : client >1024 -> server >1024
A quick summary of the pros and cons of active vs. passive FTP is also in order:
Active FTP is beneficial to the FTP server admin, but detrimental to the client side admin. The FTP server attempts to make connections to random high ports on the client, which would almost certainly be blocked by a firewall on the client side. Passive FTP is beneficial to the client, but detrimental to the FTP server admin. The client will make both connections to the server, but one of them will be to a random high port, which would almost certainly be blocked by a firewall on the server side.
Luckily, there is somewhat of a compromise. Since admins running FTP servers will need to make their servers accessible to the greatest number of clients, they will almost certainly need to support passive FTP. The exposure of high level ports on the server can be minimized by specifying a limited port range for the FTP server to use. Thus, everything except for this range of ports can be firewalled on the server side. While this doesn't eliminate all risk to the server, it decreases it tremendously. See Appendix 1 for more information.
referencesReferences
An excellent reference on how various internet protocols work and the issues involved in firewalling them can be found in the O'Reilly and Associates book, Building Internet Firewalls, 2nd Ed, by Brent Chapman and Elizabeth Zwicky.
Finally, the definitive reference on FTP would be RFC 959, which sets forth the official specifications of the FTP protocol. RFCs can be downloaded from numerous locations, including ftp://nic.merit.edu/documents/rfc/rfc0959.txt .
**************************************************************************** This message contains confidential information and is intended only for the individual or entity named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message which arise as a result of e-mail transmission. If verification is required please request a hard-copy version. This message is provided for informational purposes and should not be construed as an invitation or offer to buy or sell any securities or related financial instruments. GAM operates in many jurisdictions and is regulated or licensed in those jurisdictions as required. ****************************************************************************
------_=_NextPart_001_01C4733B.274A1E10 Content-Type: text/html
Message
Active FTP vs. Passive FTP, a Definitive Explanation
Contents:
One of the most commonly seen questions when dealing with firewalls and other Internet connectivity issues is the difference between active and passive FTP and how best to support either or both of them. Hopefully the following text will help to clear up some of the confusion over how to support FTP in a firewalled environment.
This may not be the definitive explanation, as the title claims, however, I've heard enough good feedback and seen this document linked in enough places to know that quite a few people have found it to be useful. I am always looking for ways to improve things though, and if you find something that is not quite clear or needs more explanation, please let me know! Recent additions to this document include the examples of both active and passive command line FTP sessions. These session examples should help make things a bit clearer. They also provide a nice picture into what goes on behind the scenes during an FTP session. Now, on to the information...
FTP is a TCP based service exclusively. There is no UDP component to FTP. FTP is an unusual service in that it utilizes two ports, a 'data' port and a 'command' port (also known as the control port). Traditionally these are port 21 for the command port and port 20 for the data port. The confusion begins however, when we find that depending on the mode, the data port is not always on port 20.
In active mode FTP the client connects from a random unprivileged port (N > 1024) to the FTP server's command port, port 21. Then, the client starts listening to port N+1 and sends the FTP command PORT N+1 to the FTP server. The server will then connect back to the client's specified data port from its local data port, which is port 20.
From the server-side firewall's standpoint, to support active mode FTP the following communication channels need to be opened:
- FTP server's port 21 from anywhere (Client initiates connection)
- FTP server's port 21 to ports > 1024 (Server responds to client's
control port) - FTP server's port 20 to ports > 1024 (Server initiates data connection
to client's data port) - FTP server's port 20 from ports > 1024 (Client sends ACKs to server's
data port)
When drawn out, the connection appears as follows:
In step 1, the client's command port contacts the server's command port and sends the command PORT 1027. The server then sends an ACK back to the client's command port in step 2. In step 3 the server initiates a connection on its local data port to the data port the client specified earlier. Finally, the client sends an ACK back as shown in step 4.
The main problem with active mode FTP actually falls on the client side. The FTP client doesn't make the actual connection to the data port of the server--it simply tells the server what port it is listening on and the server connects back to the specified port on the client. From the client side firewall this appears to be an outside system initiating a connection to an internal client--something that is usually blocked.
Below is an actual example of an active FTP session. The only things that have been changed are the server names, IP addresses, and user names. In this example an FTP session is initiated from testbox1.slacksite.com (192.168.150.80), a linux box running the standard FTP command line client, to testbox2.slacksite.com (192.168.150.90), a linux box running ProFTPd 1.2.2RC2. The debugging (-d) flag is used with the FTP client to show what is going on behind the scenes. Everything in red is the debugging output which shows the actual FTP commands being sent to the server and the responses generated from those commands. Normal server output is shown in black, and user input is in bold.
There are a few interesting things to consider about this dialog. Notice that when the PORT command is issued, it specifies a port on the client (192.168.150.80) system, rather than the server. We will see the opposite behavior when we use passive FTP. While we are on the subject, a quick note about the format of the PORT command. As you can see in the example below it is formatted as a series of six numbers separated by commas. The first four octets are the IP address while the second two octets comprise the port that will be used for the data connection. To find the actual port multiply the fifth octet by 256 and then add the sixth octet to the total. Thus in the example below the port number is ( (14*256) + 178), or 3762. A quick check with netstat should confirm this information. testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2 Connected to testbox2.slacksite.com. 220 testbox2.slacksite.com FTP server ready. Name (testbox2:slacker): slacker ---> USER slacker 331 Password required for slacker. Password: TmpPass ---> PASS XXXX 230 User slacker logged in. ---> SYST 215 UNIX Type: L8 Remote system type is UNIX. Using binary mode to transfer files. ftp> ls ftp: setsockopt (ignored): Permission denied ---> PORT 192,168,150,80,14,178 200 PORT command successful. ---> LIST 150 Opening ASCII mode data connection for file list. drwx------ 3 slacker users 104 Jul 27 01:45 public_html 226 Transfer complete. ftp> quit ---> QUIT 221 Goodbye.
In order to resolve the issue of the server initiating the connection to the client a different method for FTP connections was developed. This was known as passive mode, or PASV, after the command used by the client to tell the server it is in passive mode.
In passive mode FTP the client initiates both connections to the server, solving the problem of firewalls filtering the incoming data port connection to the client from the server. When opening an FTP connection, the client opens two random unprivileged ports locally (N > 1024 and N+1). The first port contacts the server on port 21, but instead of then issuing a PORT command and allowing the server to connect back to its data port, the client will issue the PASV command. The result of this is that the server then opens a random unprivileged port (P > 1024) and sends the PORT P command back to the client. The client then initiates the connection from port N+1 to port P on the server to transfer data.
From the server-side firewall's standpoint, to support passive mode FTP the following communication channels need to be opened:
- FTP server's port 21 from anywhere (Client initiates connection)
- FTP server's port 21 to ports > 1024 (Server responds to client's
control port) - FTP server's ports > 1024 from anywhere (Client initiates data
connection to random port specified by server) - FTP server's ports > 1024 to remote ports > 1024 (Server sends ACKs
(and data) to client's data port)
When drawn, a passive mode FTP connection looks like this:
In step 1, the client contacts the server on the command port and issues the PASV command. The server then replies in step 2 with
PORT 2024, telling the client which port it is listening to for the data connection. In step 3 the client then initiates the data connection from its data port to the specified server data port. Finally, the server sends back an ACK in step 4 to the client's data port.
While passive mode FTP solves many of the problems from the client side, it opens up a whole range of problems on the server side. The biggest issue is the need to allow any remote connection to high numbered ports on the server. Fortunately, many FTP daemons, including the popular WU-FTPD allow the administrator to specify a range of ports which the FTP server will use. See href="http://www.slacksite.com/other/ftp-appendix1.html">Appendix 1 for more information.
The second issue involves supporting and troubleshooting clients which do (or do not) support passive mode. As an example, the command line FTP utility provided with Solaris does not support passive mode, necessitating a third-party FTP client, such as ncftp.
With the massive popularity of the World Wide Web, many people prefer to use their web browser as an FTP client. Most browsers only support passive mode when accessing ftp:// URLs. This can either be good or bad depending on what the servers and firewalls are configured to support.
Below is an actual example of a passive FTP session. The only things that have been changed are the server names, IP addresses, and user names. In this example an FTP session is initiated from testbox1.slacksite.com (192.168.150.80), a linux box running the standard FTP command line client, to testbox2.slacksite.com (192.168.150.90), a linux box running ProFTPd 1.2.2RC2. The debugging (-d) flag is used with the FTP client to show what is going on behind the scenes. Everything in red is the debugging output which shows the actual FTP commands being sent to the server and the responses generated from those commands. Normal server output is shown in black, and user input is in bold.
Notice the difference in the PORT command in this example as opposed to the active FTP example. Here, we see a port being opened on the server (192.168.150.90) system, rather than the client. See the discussion about the format of the PORT command above, in the href="http://www.slacksite.com/other/actexample">Active FTP Example section.
testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2 Connected to testbox2.slacksite.com. 220 testbox2.slacksite.com FTP server ready. Name (testbox2:slacker): slacker ---> USER slacker 331 Password required for slacker. Password: TmpPass ---> PASS XXXX 230 User slacker logged in. ---> SYST 215 UNIX Type: L8 Remote system type is UNIX. Using binary mode to transfer files. ftp> passive Passive mode on. ftp> ls ftp: setsockopt (ignored): Permission denied ---> PASV 227 Entering Passive Mode (192,168,150,90,195,149). ---> LIST 150 Opening ASCII mode data connection for file list drwx------ 3 slacker users 104 Jul 27 01:45 public_html 226 Transfer complete. ftp> quit ---> QUIT 221 Goodbye.
The following chart should help admins remember how each FTP mode works: Active FTP : command : client >1024 -> server 21 data : client >1024 <- server 20
Passive FTP : command : client >1024 -> server 21 data : client >1024 -> server >1024
A quick summary of the pros and cons of active vs. passive FTP is also in order:
Active FTP is beneficial to the FTP server admin, but detrimental to the client side admin. The FTP server attempts to make connections to random high ports on the client, which would almost certainly be blocked by a firewall on the client side. Passive FTP is beneficial to the client, but detrimental to the FTP server admin. The client will make both connections to the server, but one of them will be to a random high port, which would almost certainly be blocked by a firewall on the server side.
Luckily, there is somewhat of a compromise. Since admins running FTP servers will need to make their servers accessible to the greatest number of clients, they will almost certainly need to support passive FTP. The exposure of high level ports on the server can be minimized by specifying a limited port range for the FTP server to use. Thus, everything except for this range of ports can be firewalled on the server side. While this doesn't eliminate all risk to the server, it decreases it tremendously. See href="http://www.slacksite.com/other/ftp-appendix1.html">Appendix 1 for more information.
An excellent reference on how various internet protocols work and the issues involved in firewalling them can be found in the O'Reilly and Associates book, Building Internet Firewalls, 2nd Ed, by Brent Chapman and Elizabeth Zwicky.
Finally, the definitive reference on FTP would be RFC 959, which sets forth the official specifications of the FTP protocol. RFCs can be downloaded from numerous locations, including href="ftp://nic.merit.edu/documents/rfc/rfc0959.txt">ftp://nic.merit.edu/documents/rfc/rfc0959.txt.
****************************************************************************
This message contains confidential information and is intended only
for the individual or entity named. If you are not the named addressee
you should not disseminate, distribute or copy this e-mail.
Please notify the sender immediately by e-mail if you have received
this e-mail by mistake and delete this e-mail from your system.
E-mail transmission cannot be guaranteed to be secure or error-free
as information could be intercepted, corrupted, lost, destroyed, arrive
late or incomplete, or contain viruses. The sender therefore does not
accept liability for any errors or omissions in the contents of this
message which arise as a result of e-mail transmission.
If verification is required please request a hard-copy version.
This message is provided for informational purposes and should not
be construed as an invitation or offer to buy or sell any securities or
related financial instruments.
GAM operates in many jurisdictions and is
regulated or licensed in those jurisdictions as required.
****************************************************************************
------_=_NextPart_001_01C4733B.274A1E10--
------_=_NextPart_000_01C4733B.274A1E10 Content-Type: image/gif; name="activeftp.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="activeftp.gif" Content-Location: http://www.slacksite.com/images/ftp/acti veftp.gif
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 AgUAADs=
------_=_NextPart_000_01C4733B.274A1E10 Content-Type: image/gif; name="passiveftp.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="passiveftp.gif" Content-Location: http://www.slacksite.com/images/ftp/pass iveftp.gif
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
------_=_NextPart_000_01C4733B.274A1E10-- ____________________________ NYLXS: New Yorker Free Software Users Scene Fair Use - because it's either fair use or useless.... NYLXS is a trademark of NYLXS, Inc
|
|