The ServiceMail Toolkit, v2.0 5-10-93

Jay C. Weber <weber@eitech.com>
Eric Rescorla <ekr@eitech.com> 
Salil Deshpande <salil@eitech.com>
Enterprise Integration Technologies (EIT)

This distribution contains software that helps you set up servers that
others can access via electronic mail.  Such servers can include archive
servers and mailing-list maintainers (for which code is included in this
distribution), but also custom services like solid modelers, text
formatters, simulators, etc.  In fact, earlier versions of this distribution
were used to create the following email services:

 o a semiconductor process simulator at Stanford University

 o a PDES-described solid rendering service at the University of Utah

 o an image-to-text (OCR) service at Cornell

 o a LaTeX-to-Postscript compiler, an FTP gateway, a WAIS gateway,
   a stock quote service, etc. at EIT

We hope you will think of many other batch-oriented services that your
organization can provide to the world.  The advantage of the use of email
access is, of course, is its ubiquity; virtually all of the roughly
five million world-wide Internet users (on roughly 750,000 machines) would
then be able to run your software prototype, retrieve your technical reports,
or demo your new product.  Plus, there are 10-15 million other users who
can reach your services through MCI Mail, Compuserve, and AT&T Easylink
gateways.

Theoretically, this distribution should be straightfoward to install and
use on all UNIX systems.  However, it has been tested mostly on Sun
Workstations. We are very interested to hear of your experiences, both
good and bad.


Installation Issues
-------------------

ServiceMail needs access to an email stream.  This distribution supports
two alternative sources:  through .forward files or through system
aliases.  Both require a small amount of work from a system administrator,
but alias approach is more palatable to finicky administrators.  The
default .forward approach is probably easier to configure and maintain.

For the .forward approach,first procure an account that is dedicated to
ServiceMail.  We recommend calling it "services", and giving it only
the most basic user priviledges (read/write its home directory, read
and execute standard UNIX commands).  Make sure you give it a good
(read: obscure) password, especially if the account is called "services",
since standard account names are often the subject of system attacks.
This account should be for ServiceMail only, e.g., don't use your own
account because all email will be redirected to the email shell (though
I suppose you could change the way unrecognized services are handled
by stuffing the messages into your personal mailbox).

Now, if you have the distribution as servicemail.tar.Z:

  Other than creating the services account, no administrator priviledges
  are required.  Log in as services, make sure you are in ~services and
  the Toolkit .tar.Z file is handy, and unpack it by

    % uncompress servicemail.tar.Z
    % tar xf servicemail.tar

For the aliases approach, create a destination directory (say,
/usr/local/src/servicemail), change to that directory, and unpack
the distribution as above.  Then check the file src/man/mesh.man
for information about what to add to the system aliases file.

For either approach, next read the INSTALL file for information about
configuration options and when to run "make".


Configuring Example Services
----------------------------

The toolkit comes with several example services that are almost online.
To actually turn them on, edit the file src/mesh/config.tcl and
"uncomment" out one or more of the "define-service" lines.  Some of
these services are system dependent (latex2ps requires the latex and
dvi2ps commands), and some require some setup (listserv requires the
directory ~/Lists and some existing mailing lists to do much;
archive-request requires the directory ~/archive and some files therein
to manipulate) -- check the comments and code for these services.


Creating Custom Services
------------------------

The main reason to use this toolkit is to build custom services.  One of
these days we'll have a graphical and/or interactive interface for building
new services, but for now there's no getting around a little hacking.  If
you are not familiar with TCL, it helps to have some experience in writing
UNIX shell scripts.  We recommend that you start with one of the example
services in src/services.  There is a lengthy man page on TCL in
doc/Tcl.man.  Also, look at doc/mesh/hacking.doc for some information
on special TCL builtins and calling conventions.

A word about security.  If you build an "exec" service, you are asking for
trouble.  There are also many subtle ways to create security problems.
For example, if any of your services evaluate their switches, then someone
can send "{rm -r *}" as a switch and cause problems.  Make sure that
publicly available services don't consume substantial resources; e.g.,
if any service prints output (or mills parts!) make sure it is obscure or
has some access control.  The example ps2paper service uses a simple
scheme to check if requestors are local; it's better than nothing but
fairly easy to fool.

We want to hear from you!
-------------------------

Please let us know when you install the toolkit and what kind of services
you are building for public use.  We are working on a directory
service that will help people find public services and discover how to
invoke them.  When you install a new, public service, send a message to
the "register" service at "services@eitech.com", with a description of
your service in the body (for now, in any format you wish).  To see
what public services others have produced, try our "directory" service.

If you have problems, questions or suggestions write a message to the
"servicemail-help@eitech.com" mailing list.  You can join this mailing
list by sending a message to the
"listserv subscribe servicemail-help your-real-name" service at
"services@eitech.com".  This mailing list contains bug fixes,
explanations, and announcements of new versions.

