
                    ListManager.rexx 1.20
                    =====================

ListManager is a mailing list tool for the Universal Message System
(UMS). It does not only easy handling of subscribed mailing lists
(client mode) but also can serve them (server mode). In both cases
ListManager works as an news-mail gateway, too.

In client mode ListManager sorts mails from incoming mailing lists
into local newsgroups (import mode) or sends posting in this
newsgroups to the corresponding mailinglist (export mode).

In server mode - well - ListManager serves mailing lists. In this case
it sends all messages received to the subscribers of the mailing
list, too. Messages are forwarded both from the lists mail account
and the newsgroup corresponding to the mailing list.

Most people will use only client mode. Just skip the parts about
server mode here in the docs :-)


How does it work?
-----------------

Client Mode:
 · All incoming mails are scanned for ReplyName matching "Mailinglist
   '#?'" (case insensitive). The mails are put into the newsgroup
   mailinglist.#?, where #? is substituted by the #? of the above
   pattern. Eg. "Mailinglist 'blasfasel'" goes into newgroup
   "mailinglists.blafasel".

   Further, the mailinglists name and address are added to the config
   variable, if not already present. The address is updated
   automaticaly from the ReplyAddr field if necessary.

   If a mailinglist does not set a ReplyName like this, you can use
   Klaus Melchior's SetFolder in order to correct the ReplyName!

 · For each known mailing list the corresponding newsgroup is scanned
   for new postings. These are forwarded to the mailinglist by
   sending it to the address found in the config variable.


Server Mode:
 · All mail to the ListManager deamon account is processed as
   controll messages. This includes subscription, help and some more
   commands (see below).
 · All mailing lists found in the config var to be served here are
   processed as follows:
   - All mails for the mailing list are forwarded to the subscribers
     and posted into the correspondig newsgroup. In this mode ToName
     is testet instead of ReplyName (we are the list :-).
   - All new postings in the corresponding newsgroup are forwarded to
     the subscribers.
 · Server mode implies client mode.


Usage:
------

Template: NAME,PASSWORD,SERVER/K,NODEAMONACCOUNT/S,LOOP/K,DEBUGLEVEL/N/K

NAME
PASSWORD
SERVER
  UMS standard command line options
  (defaults to "lists" "" "")

NODEAMONACCOUNT
  This is only useful if the ListManager runs on a real user account.

  NOTE: this is _not_ suggested usage. Please use an extra (deamon)
        user whenever possible. If serving a list with no deamon
        account you must be very careful not to mix addresses.

  If it isn't possible for you to use an extra user for mailinglist
  handling (because you are limited to a single mail address eg. due
  to POP) ListManager uses a userflag instead of "Old" to determine
  which messages from newsgroups must be exported. This flag is
  automatically reserved by using the config variable "flags.user".
  Please check all other UMS tools which use userflags in order to
  avoid conflics. If a tool does not support "user.flags" please
  notify the author!

LOOP
  Never quit ListManager just run it in a loop. After one loop is completed
  the supplied command is started

DEBUGLEVEL
  messages with log level lower or equal this value are not only
  written to the UMS Logfile, but also to StdIO. (default: 5)


Known Commands:
---------------

This server understands the commands:

    QUIT
    HELP
    USERS LIST/A
    WHO LIST/A
    INDEX
    WHICH
    ADD LIST/A,NAME/K,ADDR/K
    SUBSCRIBE LIST/A,NAME/K,ADDR/K
    REMOVE LIST/A,NAME/K,ADDR/K
    DELETE LIST/A,NAME/K,ADDR/K
    UNSUBSCRIBE LIST/A,NAME/K,ADDR/K
    DESCRIPTION LIST/A
    DESC LIST/A
    INFO LIST/A

For detailed information, please refer to the example helpfile.


Installation for Client Mode:
-----------------------------

For using ListManager, it's quite usefull to have an extra user who
gets all the mailinglists. The suggested name is "lists". For security
reasons restrict EXPORT, WRITEACCESS and NETACCESS as far as
possible.

If you are not able to use an extra deamon user you must use the
NODEAMONACCOUNT argument. The only valid reason for not using an
extra user is that you can only use exaclty one email address, eg.
when using POP mail). NODEAMONACCOUNT invokes a lot of magic. It's
very tricky. I propose the use of an extra user for this deamon stuff
handling whenever possible.

If you are subscribed to a Mailinglist which does not create a ReplyName in
the form of "Mailinglist 'Listname'" please use Klaus Melchior's SetFolder
in oder to correct this. Here's an example configuration for SetFolder:

( SetFolder.Folder
    "AMOK-L  Comments  \"#?(To|Cc): #?amok-l@#?.uni-stuttgart.de#?\" \"Mailinglist 'AMOK',amok-l@listserv.uni-stuttgart.de\"\n"
    "Envoy-L ReplyAddr \"beta@iam.com\" \"Mailinglist 'Envoy',beta@iam.com\""
)

For the case you got some postings to be exported to mailinglists not
already present in the config variable, this is the format :-)

    ( ListManager.Mailinglists
        "Ums-DEV,Ums-Dev@lyssa.owl.de\n"
        "Oberon-A,oberon-a@wossname.apana.org.au\n"
        "AMOK,amok-l@listserv.uni-stuttgart.de" )

If only using client operation further configuration is not nesseccary!
ListManager will automatically add all incoming mailinglist into it's config
variable.


Installation for Server Mode:
-----------------------------

Okay, this is for the guys willing to run a mailinglist. This may
look a bit compilcated but this is just do keep some nerd away ;-)

First of all you need an alias for your Deamon, suggested name is
"ListServ" or "request". This may be the deamon user's name, but this
is not suggested since you may use the same deamon account for other
purposes. See also note below (ListManger.Server).

You also have to set the alias "postmaster" to your own account if you did
not already to that. Users of the lists are instructed to send questions to
this alias.

Then you need a bunch of extra config variables for handling the
server stuff:

ListManager.Server
  This is the name of the user which handles all requests. Enter here
  the alias you just created. All mails with this ToName set are
  handled as controll messages. The presence of this varibale is
  taken as indicator whether to run in server mode, too.

  NOTE: Only one name is checked, so there is no use of adding more
        aliases.

ListManager.HostName
  This name of your host. In almost all cases this is identical to
  rfc.domainname. If you are using "NODEAMONACCOUNT" you must use the
  variable ListManager.Address instead!

ListManager.Address
  Only if you are forced to use NODEAMONACCOUNT" you have to set this
  variable. It must contain your one and only email address.

  HostName and Address are used to generate the reply address and the
  footer added to every forwarded mail.

ListManager.Owner (optional)
  Alias for the 'Owner' of ListManager, this is the person to
  maintain setup, etc. usually the postmaster. This is used to
  generate the Errors-To:-Header and the footer.
  Default: postmaster

ListManager.HelpFile (optional but suggested)
  Filename (including path) of a file describing the usage of
  ListManger. Best to take the example helpfile included with the
  distribution. Change the e-mail addresses at the top and bottom of
  the text to suit your needs.

Per-list configuration
----------------------

Now you have set up the ListServer but there are no mailing list
specified to be served. This is what has to be configurated for each
mailinglist.

First of all you need two more aliases for your (deamon) user. So if
you are serving "testlist" the appropriate UMS user must have the
aliases "testlist" and "Mailinglist 'testlist'".

And again, some configuration variables:

ListManager.Mailinglists
  This variable is well known from client operation. Those lists without an
  address are run in server mode. Example (only "My-List" is served by the
  local system):

    ( ListManager.Mailinglists
        "Ums-DEV,Ums-Dev@lyssa.owl.de\n"
        "My-List,\n"
        "Oberon-A,oberon-a@wossname.apana.org.au\n"
        "AMOK,amok-l@listserv.uni-stuttgart.de" )

  Add an appropriate line the this variable. Mind the comma!


You need extra variables for each of the lists in server mode (<list>
is to be substituted by the name of the list):

ListManager.<list>.group (optional)
  Name of the newsgroup corresponsing to the mailinglist. Suggested
  name is "mailinglist.<list>". If you ommit this variable ListManager does
  not gate the mails to any newsgroup.

ListManager.<list>.descfile (optional)
  Filename (including path) of a file containing a short description
  about this mailinglist. This text can be requested using the
  DESCRIPTION command.

ListManager.<list>.users
  This will hold the names and addresses for the subscribers of the
  list. ListManger will maintain it automatically for you. Example:

  ( ListManager.Testlist.users "" )

  And here's an example with some entries, just in case you need it:

  ( ListManager.Testlist.users
      "Joe User,joe@site.sub.org\n"
      "Otto Normalverbraucher,lists@verbrauch.in.de\n"
  )

ListManager.<list>.alias (optional)
  If a list is named "Testlist" ListManager automatically scans for mails
  to the names "Testlist" and "Mailinglist 'Testlist'". If you want
  ListManager to check an additional alias you can specify it here.

ListManager.<list>.access
  Generally everyone can subscribe to your Mailinglists just by sending a
  control message to Listmanager. You can restrict the use of the commands
  "ADD"/"SUBSCRIBE" and "REMOVE"/"UNSUBSCRIBE" to certain users by setting
  "access" to a pattern which must match the address of the user sending
  the control message.
