SAFT - Simple Asynchronous File Transfer

SAFT is an Internet protocol designed to do asynchronous file transfer: any user A can send a file to another user B without B doing any action. A and B can be homed by different hosts.

Note: F*EX (File EXchange) is the successor of SAFT/sendfile

The main characteristics of the SAFT protocol are: A special feature has been integrated into SAFT: asynchronous transfer of messages.
In terms of SAFT a message is just a line of text being written directly to the terminal session of the receiver.

SAFT has been implemented as a typical client/server protocol. The SAFT client sends data files to the SAFT server on the Internet. The server receives all files and delivers them either to the local recipient or saves them into a spool area, from where they can be fetched by the recipient using a receive client. The basic principle is the same as for Internet mail. The spooling procedure and the receive client are not described by the SAFT standard and must be implemented separately. SAFT is the description of the transfer protocol only.

The client/server communication is split into the communication protocol and the transfered file itself as a binary "data bit stream".

SAFT has the following command set and supports the file attributes described here:

For saving network bandwith SAFT can transfer files using the gzip algorithm. Encryption and signature with the PGP software are supported.

Command line arguments are UTF-7 coded strings, for supporting all flavours of operating systems and their character sets by using a clean ASCII protocol. UTF-7 provides a reversible and loss-free encoding of Unicode according to NVT-ASCII. UTF-7 translates characters, which are not included in the NVT-ASCII chracter set, using Unicode and encodes them back into NVT-ASCII using the mbase64 algorithm. Doing so has the advantage that a text consisting of large parts of readable ASCII characters can be read plain, only the non-ASCII parts will be encoded.

SAFT uses TCP as its transportation layer and is bound to port 487, which has been assigned by the IANA for SAFT. The SAFT client connects to this port on the SAFT server.

For demonstration purposes and as a reference implementation the sendfile software has been coded.

F*EX (File EXchange) is the successor of SAFT/sendfile

A SAFT server acts as any other Internet server, you can connect to it using a telnet client speaking directly to port 487 (for debugging purposes):

$ telnet 487
Connected to
220 SAFT server (sendfiled 1.5 on Linux) ready.
214-The following commands are recognized:
214-   FROM <sender> [<real name>]
214-   TO <recipient>
214-   FILE <name>
214-   SIZE <size to transfer> <size uncompressed>
214-   TYPE BINARY|SOURCE|TEXT=<RFC-1345 character set name> [COMPRESSED|CRYPTED]
214-   DATE <ISO-8601 date & time string>
214-   SIGN [<pgp signature> (armor)]
214-   MSG <message>
214-   DEL
214-   RESEND
214-   DATA
214-   QUIT
214-All argument strings have to be UTF-7 encoded.
214 You must specify at least FROM, TO, FILE, SIZE and DATA to send a file.
221 Goodbye.
Connection closed by foreign host.

Back to the homepage
last updated: 2008-05-01
author: Ulli Horlacher