
###########  This is a beta release.  Please report bugs to
###########  shaver@atanasoff.cs.iastate.edu (Dave Shaver)

Beta: 12/MAY/90

Iowa State University Computer Science Department Mail server.

	Based in great part on the Multihouse Mail Server written by
	jv@mh.nl (Johan Vromans).

This package contains the following files.

README
	This document.

INSTALL
	The documentation on how to install the package.

config
	The configuration file.  Hopefully one-stop-editing for
	the entire package.

process.pl
	perl script to parse mail messages, and to enqueue the
	requests.

rfc822.pl
	a package to process rfc822 based messages.

dorequest.pl
	perl script to encode and split the files, and sent them to
	the requester.

unpack.pl
	perl script to unpack set of files.

user_docs
	directory of documentation that can be sent to users

listener.c
	a simple wrapper around "process.pl" to enable setuid
	processing.  Some work has been done to make process
	pass taintperl, but dorequest will take some work.
	(Any volunteers?)

Makefile.SH
	type "sh Makefile.SH" to extract Makefile

getvar
	Perl script to grab items from config (used by Makefile.SH)

Principle of operation
======================

A system-wide alias is installed so users can mail to it.  That alias
just pipes the entire message into "listener".  Listener effectivily
changes user to the mail server user, and passes control to the perl
script "process".  (taintperl should be used sometime soon!?)

"process" reads the mail message, extracts the return address to be
used from the mail headers, and parses the commands in the message
body.  See "user_docs/help" for a detailed description of the
commands.  "process" tries to locate the requested files in the archive
libraries, using default extensions to filenames as described below.
Requests are then fed to "dorequest", with the return address, filename,
encoding and byte limit passed as arguments.  "dorequest" encodes the
file, splits it into parts, and passes each part to the mail system for
delivery.

When all parts of a specific delivery are concatenated in the correct
order, the original file can be unpacked using the perl program
"unpack.pl".

Structure of the archives
=========================

The mail server can handle a list of directories, each of which
contains zero or more archive entries. By default the following
conventions in the naming of archive entries are used:

XXXX      Plain file (ascii text)
XXXX.shar Shell Archive
XXXX.Z    Compressed file
XXXX.tar  Unix tar format
XXXX.TZ   Compressed tar
XXXX.zoo  Zoo archive format
XXXX.zip  Zip archive format
XXXX.ps   PostScript (ascii text)

When someone requests for item XXXX, all of these possibilities are
tried in locating the desired archive item.

See INSTALL for more detailed information.
