Re: Setting up a mail group

From: Ken Poulton (poulton@zonker.hpl.hp.com-DeleteThis)
Date: Mon Nov 14 1994 - 15:17:21 PST


Received: from zonker-fddi.hpl.hp.com by opus.hpl.hp.com with SMTP (1.37.109.8/15.5+ECS 3.3+HPL1.1) id AA26622; Mon, 14 Nov 1994 15:17:31 -0800
Return-Path: <poulton@zonker.hpl.hp.com-DeleteThis>
Received: by zonker.hpl.hp.com (1.37.109.8/15.5+ECS 3.3+HPL1.1) id AA13667; Mon, 14 Nov 1994 15:17:21 -0800
Date: Mon, 14 Nov 1994 15:17:21 -0800
From: Ken Poulton <poulton@zonker.hpl.hp.com-DeleteThis>
Message-Id: <9411142317.AA13667@zonker.hpl.hp.com-DeleteThis>
To: wind_talk@opus.hpl.hp.com-DeleteThis
Subject: Re:  Setting up a mail group


> I was wondering how you set up a mail group like windtalk.
>
> I would like to create them for:
>
> Skiing/Snowboarding (snow.talk?)
> CFA Candidates (people studying for the CFA)
>
> I have a sparc 10, but only limited internet access (just mail).

We use a public-domain listserver system. I attach the README. If this
looks like something you want to get and you have no FTP access, I could
e-mail the source to you (it comes in a 1.3 MB shar file).

Ken Poulton
poulton@opus.hpl.hp.com-DeleteThis

"Never put off until tomorrow what you can postpone into the next
millenium." -- Bob Jewett

                             LISTPROCESSOR SYSTEM
                             --------------------

           Copyright (c) 1991-93, Anastasios C. Kotsikonas

                           tasos@cs.bu.edu-DeleteThis
                             July 1 1993

DESCRIPTION:
     This is a system that implements various mailing lists with
     one list manager. It is automated, and obliterates the need
     for user intervention and maintenance of multiple aliases of
     the form "list, list-owner, list-request", etc. There is
     support provided for public and private hierarchical
     archives, moderated and non-moderated lists, peer lists,
     peer servers, private lists, address aliasing, news connec-
     tions and gateways, mail queueing, digests, list ownership,
     owner preferences, crash recovery, batch processing, confi-
     gurable headers, regular expressions, archive searching, and
     live user connections via TCP/IP.

COPYING: You may distribute the software freely, but you may not include
any part of the code in a commercial application whatsoever, directly or by
implication. Modified code may NOT be distributed.

AGREEMENT: This software can be used and distributed freely only as a
whole and not in parts, as long as you do not remove or alter the author
and copyright notices in the file defs.h; this notices are #define'd in
the symbols VERSION and COPYRIGHT. Although you may alter the code
provided for your personal use, you may not alter the functions
create_header(), create_multi_recipient_header() and main() in list.c,
listproc.c and serverd.c (where applicable), and you may not redistribute
any changes you may have made. No part of the source code bearing a
copyright notice can be included in commercial software systems without
written permission by the author.
By using this software you are bound by this agreement.
This software comes with no warranties and cannot be sold for profit.
The AGREEMENT and COPYRIGHT notices should be included in all source
files when distributing this software.
COPYRIGHT: Copyright (c) 1991-93, Anastasios C. Kotsikonas
Use, duplication or disclosure by the Federal Government is subject to the
restrictions set forth in FAR 52.227-19(c), Commercial Computer Software or,
for Department of Defense Users, by DFAR 252.227-7013(c)(1)(ii).

UPDATES: All updates can be obtained from cs.bu.edu (128.197.10.1) via
anonymous ftp, in the directory pub/listserv. If you downloaded this version
from another ftp site, please keep an eye on cs.bu.edu. Bug fixes will
be posted periodically over there, and no notifications will be posted to
news; you should check the directory periodically.

COMPILER: The programs are written to be ANSI C compliant (almost); if your
compiler cannot handle them, I suggest you also download unproto.tar.Z
from cs.bu.edu; cd pub/unproto; this is a nice set of programs that will
convert ANSI-isms to old style C -- please send any questions about unproto
to its author, not me. In this case, follow the instructions in the Makefile
in the src directory for adjustments to be able to use this package.
For those compilers that die when they see a contol-L in the source code, I
have written a C program that "cleans" source files; it is called clean.c and
can be found in pub/utils as well; compile as follows:
                % cc -Dunix clean.c -o clean
The compiler should support symbol names longer than 8 characters. Also consult
the Makefile, as well as the PORT SPECIFIC section in ../doc/server.1

LINKING: If you are using the interactive part of ListProcessor and your
setup uses a name server, you may wish to link with libraries that provide
DNS support (for example, on SYSV R4 compile with -lsockdns instead of
-lsocket).

PREPROCESSOR: Strings are defined using both ANSI C specifications and
non-ANSI standards, so that unproto will work correctly (unproto 2.0 does not
handle ANSI string concatenations). Which ones are used during compilation
depends whether the macro __STDC__ is defined by the compiler/preprocessor.
Note: the script 'stds' is now rarely needed and can be obtained from cs.bu.edu
in the directory pub/listserv/utils.

SOURCE CODE MODIFICATIONS: If you modify the code to work around problems
with your operating system, or enhance the system, please send me diff's
to be incorporated in the next release.

TCP/IP SUPPORT: The 'system' mailmethod and the live ListProcessor require
support for Berkeley sockets and internet support. The system defines the macro
TCP_IP in defs.h. Remove this definition if your host does not support sockets,
etc. Failure to do so will lead to compiler errors.

SEMAPHORE/SIGNAL SUPPORT: The interactive part of the system depends on
semaphore support. If your host does not support semaphores, undefine the
symbol GO_INTERACTIVE in defs.h; this symbol is automatically undefined if
TCP_IP is not defined, or the SIGCLD/SIGCHLD, SIGUSR1 and SIGUSR2 signals are
not present. The system uses the POSIX waipid() function which may not be
available on your system (like Sequent for example). You may use wait3()
instead; see serverd.c, sighandle(). If you use wait3() and its first argument
whould be a union, then compile with -DWAIT3_NEEDS_UNION (integer is used by
default).

SPECIAL HEADER FILES: Platforms that have the <sys/select.h>, <ulimit.h>
and/or <setjmp.h> header files should use -DHAVE_SELECT_H -DHAVE_ULIMIT_H
and -DHAVE_SETJMP_H when compiling.

SIGNALS: Various UNIX versions deal with signals in a number of ways.
If your UNIX is strict SYSVR4 compile with -Dsvr4 -- SYSVR4 uses sighold() and
sigrelse(); if it is SYSVR3 compile with -Dsvr3 -- the same functions are
defined; if it is strict BSD based compile with -Dbsd -- BSD uses
sigblock() and sigsetmask(). If your system does not define either of these
sets of routines or is not a strict implementation of the above, do not
use the above flags and certain signals will be ignored at certain times
due to an old- bug with system(). In defs.h certain ports are given
predefined flavors.

NON-BLOCKING I/O: The system employs a timeout mechanism that works
only with the 'system' mailmethod, provided that the host supports
non-blocking I/O; if it does not, undefine the symbol NONBLOCKING_IO
in defs.h (defined by default).

LOCKS: The system relies heavily on locks; however, a number of systems
do not support locking across NFS mounted file systems, or do not support
locks at all. If you are experiencing locking problems, define the symbol
NO_LOCKS in defs.h (or compile with -DNO_LOCKS) and pray, or move the system
to a local file system. The following ports have NO_LOCKS automatically
defined: Minix, Ultrix, NeXT, Apollo, Xenix, Convex.

SYSLOG: You may use syslog(3) for reporting if you compile with
-DSYSLOG=facility.

USING ANOTHER HOST TO SEND MAIL: By default, the 'system' mailmethod connects
to "localhost" for mail delivery; you may use another host by altering the
symbol SENDMAIL_HOST in sysmail.h

SUBSCRIPTION SUSPENSION: The system scans error messages looking for addresses
to suspend sending mail to, and it allows by default a 7 day grace period. This
period may be changed by altering list.h or by compiling with
-DGRACE_PERIOD=time_in_seconds.

Errors-To: lines: If you do not want the system to put Errors-To: lines
compile with -DNO_ERRORS_TO.

ZMAILER and other non-sendmail mailers: If your mailer requires a
'HELO hostname' or 'HELO ip-address' greeting, then compile with -DZMAILER.
If TCP/IP is available, the host's name and IP address are obtained with system
calls. If not, they default to "localhost" and "127.0.0.1" (see defs.h) and
they have to redefined. By default, the hostname is included in the greeting.
If the IP address is required, see list.c and listproc.c.

UPGRADING: If you are upgrading from an earlier version, take a look at the
UPGRADING and PORT SPECIFIC sections in ../doc/server.nr and run the
upgrade_to_6.0c shell script.

PORTS: The code has been ported to the following UNIXes:
SUN, IBM, SGI, DEC, HP, Convex, Stardent, KPC, NeXT, SCO, Apollo, Sequent, Data
General, i860, i386 (bsd) and OSF. If you are on a different host, try first
compiling with -Dunknown_port.

INSTALLATION DIRECTORY: Change the HOMEDIR symbol in Makefile to be the top
level directory where this system is installed.

FORUM: You should join our forum at unix-listproc@avs.com-DeleteThis where we discuss
problems and enhancements about this system; send a subscribe request to
listproc@avs.com-DeleteThis

ACKNOWLEDGEMENTS: I would like to thank the following people for their
suggestions and contributions to this system (not all suggestions have been
incorporated):
1) Bob Boyd (rbn@epavax.rtpnc.epa.gov-DeleteThis): IRIX port, gateway connections
   feedback, 5.3 beta testing. [Since Dec. 1992 Bob is no longer at EPA
   and I wish him good luck]
2) Stefan Schroer (Stefan.Schroer@cyber.urz.uni-wuppertal.dbp.de-DeleteThis): MINIX port
   (code not reported since 5.0), help files, original 'get' and 'index'
   requests.
3) Scott J. Ellentuch (tuc@stormking.com-DeleteThis): IBM R6000 port, enhancements to
   the farch utility, 5.3&up beta testing, setting up of the unix-listproc
   forum, endless support on the net -- he is my buddy.
4) David Warner (warner@austin.onu.edu-DeleteThis): IBM R6000 bug fixing, 5.3 beta
   testing, tolerance with my obnoxious code -- I owe this gentleman a lot.
5) Nathan F. Estey (nestey@copper.Denver.Colorado.EDU-DeleteThis): 5.4 suggestions.
6) Aad Nienhuis (aad@sconar.sco.uva.nl-DeleteThis) for the catmail utility.
7) Warren Burstein (warren@itexjct.jct.ac.il-DeleteThis): digests, owner moderated lists
   (listproc sends messages to owner, owner sends back the approved ones --
   my scheme uses APPROVE and DISCARD requests), significant code rewriting,
   manager preferences, automatic archiving of messages.
8) Nicos Kontopoulos (nicos@cs.bu.edu-DeleteThis) for a lot of tiny suggestions.
9) Matthias Klose <doko@cs.tu-berlin.de-DeleteThis>, John Neil <neil@dehn.mth.pdx.edu-DeleteThis>
   for the NeXT port.
10) Ken Mayer (ken@visix.com-DeleteThis) for the Precedence: stuff.
11) Henry Spencer for the pattern matching routines.
12) Carlos O'Ryan Lira (coryan@mat.puc.cl-DeleteThis) for the Apollo port.
13) Anand V Raman (A.Raman@massey.ac.nz-DeleteThis) for modifying 'setup' to rebuild the
    system under the HOMEDIR definition in Makefile.
14) Kenneth Lorber (keni@oasys.dt.navy.mil-DeleteThis) for providing fio.c and speeding up
    the system by reducing the number of syscom()'s.
15) All of those of you who made literally a myriad of small suggestions here
    and there, and contributed even a single character of code, and especially
    all of you who let me into your systems to do the ports myself.

            The ListProcessor system includes 158 files:

 HOMEDIR/doc:
   *.nr -- proformatted man pages
   catmail.1 -- man page for the catmail utility
   farch.1 -- man page for the file archiving utility
   ilp.1 -- man page for the Interactive ListProcessor client
   list.1 -- man page for the mailing list processing application
   listproc.1 -- man page for the request processing application
   queue.1 -- man page for the mail queue processing application
   server.1 -- man page describing the system
   serverd.1 -- man page for the system daemon
   start.1 -- man page for the system's housekeeper
   README -- instructions for installing the man pages on your system

 HOMEDIR/help:
   TOPICS -- index file with topics and corresponding filenames
   general -- general help file
   approve -- help on the approve request
   discard -- help on the discard request
   information -- help on the information request
   lists -- help on the lists request
   recipients -- help on the recipients request
   set -- help on the set request
   statistics -- help on the statistics request
   subscribe -- help on the subscribe request
   unsubscribe -- help on the unsubscribe request
   index -- help on the index request
   get -- help on the get request
   release -- help on the release request
   which -- help on the which request
   reports -- help on the reports request
   edit -- help on the edit request
   put -- help on the put request
   live -- help on how to access the live ListProcessor
   listproc -- help on this system
   fax -- help on the fax request
   search -- help on the search request
   run -- help on the run request

 HOMEDIR/archives:
   HOMEDIR/archives/listproc: Master archive:
     DIR -- info on files and directories they are located
     INDEX -- master index of all archives (listproc, pub, unix)
     summary-of-requests -- list of all commands
     info -- info on this archive
     HOMEDIR/archives/listproc/example.dat:
       example.dat1 -- part 1 of file example.dat in archive listproc
       example.dat2 -- part 2 of file example.dat in archive listproc
       example.dat3 -- part 3 of file example.dat in archive listproc
   HOMEDIR/archives/ilp: Source files for the ILP client:
     DIR -- info on files in this subdirectory
     INDEX -- index of all archives in this archive
     ilp.c -- the ILP client
     ilp.h -- specific definitions for ilp.h
     ilpp.h -- definition of ILP Protocol
     ilp.1 -- (as before)
     ilp.nr -- (as before)
     makefile -- makefile to build the ILP client
   HOMEDIR/archives/pub: Subarchive of listproc:
     DIR -- info on files and directories they are located
     INDEX -- index of all archives in this archive
     info -- info on this archive
   HOMEDIR/archives/unix: Subarchive of listproc:
     DIR -- info on files and directories they are located
     INDEX -- index of all archives in this archive
     info -- info on this archive
   HOMEDIR/archives/pub/unix: Subarchive of pub (duplicate name example):
     DIR -- info on files and directories they are located
     INDEX -- index of files in this archive
     info -- info on this archive
   HOMEDIR/archives/pub/private: Subarchive of pub; example private archive
     DIR -- info on files and directories they are located
     INDEX -- index of files in this archive
     info -- info on this archive

 HOMEDIR/src:
   REGISTRATION -- registration form for using this software
   README -- this file
   global.h -- global variables definitions
   struct.h -- defines the server structure
   defs.h -- general definitions
   tlock.c -- tests for locks, i.e. whether any server programs are running
                     on another file system via NFS
   list.h -- specific definitions for list.c
   list.c -- the list's server
   listproc.h -- specific definitions for listproc.c
   listproc.c -- server for individual requests
   pqueue.h -- specific definitions for pqueue.c
   pqueue.c -- processes the mail queue
   serverd.h -- specific definitions for serverd.c
   serverd.c -- parent program that spawns list or listproc
   start.h -- specific definitions for start.c
   start.c -- does housekeeping before spawning serverd, makes sure that
                   files exist, kills any running server processes, etc
   sysmail.h -- specific definitions for sysmail.c
   sysmail.c -- system mailmethod routines
   catmail.h -- specific definitions for catmail.c
   catmail.c -- append incoming mail to the appropriate file
   signals.c -- signal processing routines
   sender.c -- sender address manipulation routines
   misc.c -- general purpose routines
   farch.c -- utility for easy archiving of files
   next.h -- specific definitions for NeXT hosts
   sem.c -- semaphore definitions for serverd's interactive part
   rev.c -- source to BSD 'rev'
   ilpp.h -- Interactive ListProcessor Protocol definition
   ilp.h -- specific definitions for ilp.c
   ilp.c -- client application to connect to an interactive system
   silp.c -- system ilp used by ListProcessor to connect to remote servers
   regex.c -- fornt end to pattern matching routines
   regerror.c -- pattern matching routines -- Henry Spencer
   regexp.c -- pattern matching routines -- Henry Spencer
   regexp.h -- pattern matching routines -- Henry Spencer
   regmagic.h -- pattern matching routines -- Henry Spencer
   regsub.c -- pattern matching routines -- Henry Spencer
   fwin.c -- utility that returns subsets of files
   fio.c -- simple system calls submitted by keni@oasys.dt.navy.mil-DeleteThis
   strftime.c -- UC Berkeley public domain version of this function
   semset.c -- utility to check/set a semaphore's value
   Makefile -- to build your own server

 HOMEDIR/src/ansi:
   *.h -- specific ANSI string definitions for various programs

 HOMEDIR/src/nonansi:
   *.h -- specific non-ANSI string definitions for various programs

 HOMEDIR/gateway:
   gateway.c -- gateway for connecting your host to another on Internet
   gateway.h -- specific definitions for gateway.c
   ilpp.h -- definition of the interactive ListProcessor Protocol
   README -- how to install and use the gateway
   Makefile -- how to build the gateway

 HOMEDIR/util:
   combine.c -- user utility to automatically combine archive files
                   received in multiple mail messages
   expn.c -- check if address is reachable
   check_addr -- script to check the validity of an incoming address
   mmdfcatmail.c -- utility to use before catmail if using an MMDF mailer
   which.sh -- UCB "which" source
   use_From:_address.sh -- program+script to use the From: address instead of
                           the "From " for identification

 HOMEDIR:
   makefile -- to build your system
   ILPP -- description of the ILP protocol
   setup -- a script to be run before starting for the first time
   systest -- script that analyzes your system
   queued -- daemon controlling the processing of the mail queue
   peer -- script to add a peer list
   news -- script to add a news group to a list
   redux -- script that reduces the size of mbox by removing unnecessary
                   fields from the header of each message
   ulock -- in conjunction with the 'flocks' file, this utility
                   removes all locked files (unlocks them)
   flocks -- script to remove locked files
   .awk -- awk program used for the 'statistics' and 'recipients'
                  ListProcessor requests
   .stats -- shell script used for the 'statistics' ListProcessor request
   .grep -- shell program used for the 'statistics' ListProcessor request
   .ignored -- a list of email addresses whose messages are ignored
   owners -- a list of all list owner addresses
   unwanted.hosts -- hosts not allowed to connect to ILP
   upgrade_to_6.0c -- upgrade script
   welcome.live -- welcome message upon live log in
   README -- general guidelines for first time users
   FAQ -- most frequently asked questions
   WHATS_NEW -- what's with this version
   config -- the system's configuration file

               |-->-----------> START
               | |
               | |
               ^ (spawns-and-dies)
               | |
               | |
               |--<--restart--- SERVERD <--shutdown-<--|
                                  /\ r
                                 / \ e
                                / \ s
                    (spawns either one as necessary) t
                              / \ a
                             / \ r
                           LIST LISTPROC --->---t

The diagram shows that 'start' spawns 'serverd' and then dies, and that
'listproc' may request 'serverd' to die (shutdown) or request that the
system is restarted, in which case 'serverd' spawns 'start' and dies.

Enjoy!

Revision history:

Version Date Status Comments
------------------------------------------------------------------------------
 3.45 12/20/90 Outdated * First public version; bugs with listproc
 3.67 01/03/91 Outdated Bugs fixed
 3.68 01/04/91 Outdated * v3.67 + tlock utility
 4.0 04/09/91 Exprmntl v3.68 + STATISTICS listproc command
 4.1 04/16/91 Outdated v4.0 + redux utility
 4.2 05/02/91 Outdated v4.1 w/ optimized source code, better doc.
 4.21 05/03/91 Outdated v4.2 w/ redux which was left out by mistake
 4.3 05/03/91 Outdated * v4.21 w/ better mailer-daemon msg handling
 4.4 05/22/91 Exprmntl v4.3 w/ enhanced tlock,control,start,listproc
 4.5 06/12/91 Exprmntl v4.3 w/ enhanced listproc
 5.0 07/17/91 Outdated * v4.4 + support for multiple lists
 5.1 08/27/91 Outdated v5.0 + bug fixes, enhanced listproc
 5.1 Rev I 10/03/91 Outdated v5.0 + more bug fixes
 5.2 10/08/91 Outdated * v5.1 + archives, GET, INDEX requests,
                                        farch utility, moderated lists,
                                       disabled listproc commands on a per list
                                       basis, link with peer lists and news
                                       feeds
 5.2 Rev A 10/10/91 Outdated v5.2 + bug fixes
 5.21 10/15/91 Exprmntl v5.2A + multiple recipients in one message
 5.3 beta 10/31/91 Exprmntl v5.21 + system mailmethod, bug fixes
 5.3 12/05/91 Outdated v5.21 + bug fixes, universal system mailmethod,
                                        multiple recipients in one message,
                                        support for blanks in email addresses,
                                        user-set limit on size of messages,
                                        RFC 821 compliant SMTP implementation,
                                        extensive mail loop detection mechanism,
                                        new scripts (stds, reformat), enhanced
                                        GET request, and more.
 5.31 12/09/91 PstdNews * v5.3 + mail queueing capability/subsystem +
                                       RELEASE request
 5.4 beta 12/16/91 Exprmntl v5.31 + crash recovery mechanism, manager
                                        approved subscriptions (private lists),
                                        multiple lines of text for describing
                                        archived files, batch processing,
                                        WHICH request, automatic use of
                                        unproto in the Makefile, private
                                        archives, list owners with restricted
                                        system privileges, email aliasing
                                        for requests, SYSTEM/REPORTS/PUT/EDIT
                                        list administration requests, automatic
                                        archiving of distributed messages only,
                                        enhanced INDEX/GET requests, same
                                        archive names allowed on different
                                        levels of the hierarchy (path spec. to
                                        an archive)
 5.4 02/05/92 Outdated v5.31 + v5.4 beta
 5.41 03/05/92 PstdNews * v5.4 + catmail (system is now more secure), bug
                                        fixes, owner preferences
 5.5 beta 04/08/92 Exprmntl v5.41 + two ways for moderating lists by owners
                                        (+ APPROVE/DISCARD list administration
                                        requests), enhanced farch, fix to GET
                                        request, list digests, optional
                                        Comment: line, manager preferences,
                                        enhanced help system, GET/INDEX
                                        requests now report file sizes, new
                                        config options ignore_invalid_requests
                                        and relaxed_syntax, EXECUTE request
 5.5 05/18/92 Outdated v5.5 beta + NeXT port
 6.0beta 01/19/93 Exprmntl v5.5 + interactive system, ULISTPROCESSOR_UMASK
                                        env var, Precedence:, configurable
                                        headers, regular expressions, auto
                                        archiving of lists' messages, enhanced
                                        farch, ability to execute commands
                                        on a per list basis, ability to
                                        continue commands in the config file on
                                        multiple lines, HP, Apollo, Sequent &
                                        DG ports, interception of requests sent
                                        to a list, list defaults, CONCEAL
                                        attribute, user settable subscription
                                        addresses, various user utilities,
                                        gateway client, screening and analysis
                                        of error messages, support for syslog,
                                        auto splitting of outgoing files, FAX
                                        request

 6.0 04/01/93 Outdated v6.0beta + ports + bug fixes + SEARCH request
 6.0a 07/20/93 Outdated v6.0 + VIEW requests server/client abort
                                        operation, more bug fixes, true
                                        concurrency
 6.0b 09/13/93 Outdated * v6.0a + tons of bug fixes, better mail loop
                                        detection
 6.0c 11/30/93 Released v6.0b + ability not to compress archived files,
                                        ULISTPROC_ARCHIVES_UMASK env var, bug
                                        fixes

*Source for these versions has been posted to news.



This archive was generated by hypermail 2b29 : Mon Dec 10 2001 - 02:28:21 PST