                     The Unix Listserv Program
                          Version 4.0.0
                 Installation and Operations Guide

     Copyright (C) 1991,1992  Kimmo Suominen, Christophe Wolfhugel

1) Installation / Customization

- Create a user named "listserv" on your system, preferably in its own
  group (this makes it easier to give access to maintenance users).
  You may of course choose another user if you wish.

  The user should *not* have any special privileges. It is *not* an
  administrative user.

  You may wish to disable logins on that account, and allow access
  only with rlogin (to avoid having a shared password).

  It is also a nice idea to put listserv's home directory on a stable
  file system, ie. where there are few risks of running out of space.
  In the current release, TULP gives an undefined (which could be
  mail loops, but we did not test this) behavior if the file system it's
  running on is full. Do not put the directory on a file system
  which is vital for the system.

  Create the directory expl in listserv's home directory. If you
  prefer using another organization, you'll have to change the
  adequate defines in conf.h and Makefile.
  
  Create the queue dir, relative to TULPDIR (see conf.h).

  TULP's binaries and scripts will be put in /usr/local/etc, all
  service files will be in ~/expl and we suggest that you put
  the sources in ~/src.

- Login as root and create some mail aliases (described method
  is for Sendmail). Aliases are generally stored in /usr/lib/aliases
  or /etc/aliases, some sites may have another location, anyway the
  system administrator should know about it.

  You must create 3 service aliases:
     listman:          address of the listserv manager (you!)
     listserv-request: listman
     list-errors:      where errors should be reported (generally also you).
  These two aliases must of course *not* point to Listserv otherwise you'll
  create a deadly loop.

  If you have decided not to use the -request facility in conf.h then
  you do not need the listserv-request alias. It is strongly
  discouraged not to use the -request facility.

  Ask your system administrator to add "listserv" to the list of
  trusted users in the sendmail configuration file (/etc/sendmail.cf).
  In order to modify the sendmail configuration file, the system
  administrator will need to do the following in most UNIX systems:

  1. Kill the sendmail daemon.
  2. edit sendmail.cf adding  the command Tlistserv in the trusted users
     section of the file.
  3. recompile the sendmail configuration file:  sendmail -bz (where
     the frozen file is used, recent versions of Sendmail don't use it
     anymore)
  4. restart the sendmail daemon:                sendmail -bd -q31m
  
  This will allow listserv to send mail while defining the appropriate From
  envelope.

  If you wish to use the test list, also add an alias:
     test:          "|/usr/local/etc/deliver test"

  And finally alias listserv to the deliver package:
     listserv:      "|/usr/local/etc/deliver listserv"

  Note: if you have Perl installed on your system, use deliver.pl instead. 
  You will get more functions, particularly trapping of administrative
  requests sent to lists.

- Issue a newaliases in order to refresh the database. Also rebuild
  your frozen Sendmail configuration file if any. The Sendmail
  daemon should be restarted in order to be sure that all modifications
  have been taken into account.

- You'll now have to edit the configuration file conf.h in order to
  set the parameters according to your system and to your wishes.

  Parse this file carefully in order not to miss anything.

- Edit helpfile in order to fill it in with your local adresses.
  You can also add whatever you'd like to. For example, on my
  production version on grasp.insa-lyon.fr I have explanations
  on how to retrieve the FAQ archives via the listserv.

- Check and modify Makefile according to your system. On AIX 3.1,
  -D_BSD does not need to be added (if you have compilation errors,
  then it's that you have wrong options).

  Don't forget to put the proper directories.

- Edit and customize 'deliver' and 'rc.tulp' according to your
  system.

- Issue 'make all' in order to compile all the stuff.

- Once compiled and linked successfully, issue a make 'install'.
  That will copy the executables and scripts to the right place.

  Verify that 'queue' is setuid to listserv (no danger, check the source
  to get the confirmation) or delivery of messages in the queue will fail.

- Copy helpfile, lists and test.* to ~/expl. If you wish to
  create new lists, refer to the latter comments and also to tulp(5).

- After copying the files  helpfile, lists and test.* to ~/expl make sure
  the protection mode masks, owner and group for the files in the expl
  directory are setup for the listserv owner and group.

The installation of TULP in now ready, you can now create your lists
and start the application.


2) Running TULP

TULP should be started preferably with the /usr/local/etc/rc.tulp
script. 

NEVER NEVER NEVER run Tulp as root.

The daemon should immediately go into background (except if DEBUG was
defined in the Makefile). You should now have the 'test' list ready
for use with one subscriber: the list-manager (listman).

Important events are filed to the syslog or to the fakesyslog you have
defined.

You may wish to create a file listname.n in order to enable the
usage of the X-Sequence: field in the header of the resent messages.


3) Listserv shutdown

Normal shutdown is obtained when sending kill -15 to the listserv pid.
shutdown generally does not take more than a few seconds, but when
relaying a message it can be much longer.

Shutdown may also be done by mail by sending the adequate string to the
listserver. Change it in conf.h !


4) Creating a list (delete is reverse operation)

Creating a list is easy.

- Choose the list name in order to be at most MAX_FILE-2 long (this name
  if called 'listname' for the following text).

  In fact it should not be longer than 12 characters as, too bad,
  Posix only requires 14 characters long filenames. If the names
  are longer, you'll be system specific.

- Go to ~/expl and create 'listname.w' containing the welcome
  message that will be sent to every new subscriber.
  Create 'listname.u' and put in it any user you wish to subscribe
  immediately (see test.u format), otherwise just 'touch listname.u'.
  The file *must* exist. Create the file listname.n if you wish
  to have Sequence numbers.
  If you wish to have archiving, issue 'mkdir listname'.
  Verify that these files are mode 700.

  Customize the header of list.u (see file tulp(5)) according to your
  needs.

- The file list.n, if existing contains the number (in text) of the next
  message. If present, the X-Sequence: field will be added to every
  forwarded message.

- Edit the file lists and add the new list if you wish to have that list
  appear in the catalog.

- Edit (as root) /usr/lib/aliases and alias the new list name to the
  deliver script and refresh the aliases database.
  Also put the -request alias (to a human) if you have choosen
  the adequate compilation option in conf.h.
  Exemple:
        tulp:           "|/usr/local/etc/deliver tulp"
        tulp-request:   listman
  (or use deliver.pl preferably if you have Perl).

The new list is ready, you don't need to restart the listserv.

Don't forget to subscribe to the new list, specifying address 'listname@host'
as subscriber email.


5) Miscellaneous

This listserv is used successfully in coordination with INN  in order
to establish a full bi-directionnal gateway between mailing lists and
Usenet newsgroups.  This works fine only if listserv if the 'head' of
the gatewayed list/group.
