From:	CSBVAX::CSBVAX::MRGATE::"SMTP::CUNYVM.CUNY.EDU::MAILSERV-REPLY%UNCG.BITNET" 14-MAR-1989 01:02
To:	MRGATE::"ARISIA::EVERHART"
Subj:	Re: SEND [MAILSERV_SOURCE]V101.*  ([MAILSERV_SOURCE]V101.1_OF_4)


Received: from uncg.bitnet by CUNYVM.CUNY.EDU (IBM VM SMTP R1.1) with BSMTP id 7192; Tue, 14 Mar 89 00:39:03 EST
Date: Mon, 13 Mar 89 16:28 EST
From: "PMDF Mailserv V1.02" <MAILSERV-REPLY%UNCG.BITNET@CUNYVM.CUNY.EDU>
Subject: Re: SEND [MAILSERV_SOURCE]V101.*  ([MAILSERV_SOURCE]V101.1_OF_4)
To: EVERHART%ARISIA.decnet@GE-CRD.ARPA

$! ................... Cut between dotted lines and save. ...................
$!...........................................................................
$! VAX/VMS archive file created by VMS_SHARE V06.10 7-FEB-1989.
$!
$! VMS_SHARE was written by James Gray (Gray:OSBUSouth@Xerox.COM) from
$! VMS_SHAR by Michael Bednarek (U3369429@ucsvc.dn.mu.oz.au).
$!
$! To unpack, simply save, concatinate all parts into one file and
$! execute (@) that file.
$!
$! This archive was created by user ETHIES
$! on  5-MAR-1989 14:18:12.20.
$!
$! ATTENTION: To keep each article below 50 blocks (25600 bytes), this
$!            program has been transmitted in 4 parts.  You should
$!            concatenate ALL parts to ONE file and execute (@) that file.
$!
$! It contains the following 4 files:
$!        HELP.TXT
$!        MAILSERV.DOC
$!        MAILSERV.PAS
$!        MAILSERV_TABLES.CLD
$!
$!============================================================================
$ SET SYMBOL/SCOPE=( NOLOCAL, NOGLOBAL )
$ VERSION = F$GETSYI( "VERSION" )
$ IF VERSION .GES "V4.4" THEN GOTO VERSION_OK
$ WRITE SYS$OUTPUT "You are running VMS ''VERSION'; ", -
    "VMS_SHARE V06.10 7-FEB-1989 requires VMS V4.4 or higher."
$ EXIT 44 ! SS$_ABORT
$VERSION_OK:
$ GOTO START
$!
$UNPACK_FILE:
$ WRITE SYS$OUTPUT "Creating ''FILE_IS'"
$ DEFINE/USER_MODE SYS$OUTPUT NL:
$ EDIT/TPU/COMMAND=SYS$INPUT/NODISPLAY/OUTPUT='FILE_IS'/NOSECTION -
    VMS_SHARE_DUMMY.DUMMY
b_part := CREATE_BUFFER( "{Part}", GET_INFO( COMMAND_LINE, "file_name" ) )
; s_file_spec := GET_INFO( COMMAND_LINE, "output_file" ); SET( OUTPUT_FILE
, b_part, s_file_spec ); b_errors := CREATE_BUFFER( "{Errors}" ); i_errors
:= 0; pat_beg_1 := ANCHOR & "-+-+-+ Beginning"; pat_beg_2 := LINE_BEGIN
& "+-+-+-+ Beginning"; pat_end := ANCHOR & "+-+-+-+-+ End"; POSITION
( BEGINNING_OF( b_part ) ); LOOP EXITIF SEARCH( SPAN( ' ' )@r_trail
& LINE_END, FORWARD) = 0; POSITION( r_trail ); ERASE( r_trail ); ENDLOOP
; POSITION( BEGINNING_OF( b_part ) ); i_append_line := 0; LOOP EXITIF MARK
( NONE ) = END_OF( b_part ); s_x := ERASE_CHARACTER( 1 )
; IF s_x = '+' THEN r_skip := SEARCH( pat_beg_1, FORWARD, EXACT ); IF r_skip
<> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ERASE_LINE; ENDIF
; ENDIF; IF s_x = '-' THEN r_skip := SEARCH( pat_end, FORWARD, EXACT )
; IF r_skip <> 0 THEN s_x := ''; MOVE_HORIZONTAL( -CURRENT_OFFSET ); m_skip
:= MARK( NONE ); r_skip := SEARCH( pat_beg_2, FORWARD, EXACT ); IF r_skip
<> 0 THEN POSITION( END_OF( r_skip ) ); MOVE_HORIZONTAL( -CURRENT_OFFSET )
; MOVE_VERTICAL( 1 ); MOVE_HORIZONTAL( -1 ); ELSE POSITION( END_OF( b_part
) ); ENDIF; ERASE( CREATE_RANGE( m_skip, MARK( NONE ), NONE ) ); ENDIF; ENDIF
; IF s_x = 'V' THEN s_x := ''; IF i_append_line <> 0 THEN APPEND_LINE
; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF; i_append_line := 1
; MOVE_VERTICAL( 1 ); ENDIF; IF s_x = 'X' THEN s_x := ''; IF i_append_line
<> 0 THEN APPEND_LINE; MOVE_HORIZONTAL( -CURRENT_OFFSET ); ENDIF
; i_append_line := 0; MOVE_VERTICAL( 1 ); ENDIF; IF s_x <> '' THEN i_errors
:= i_errors + 1; s_text := CURRENT_LINE; POSITION( b_errors ); COPY_TEXT
( "The following line could not be unpacked properly:" ); SPLIT_LINE
; COPY_TEXT( s_x ); COPY_TEXT( s_text ); POSITION( b_part ); MOVE_VERTICAL
( 1 ); ENDIF; ENDLOOP; POSITION( BEGINNING_OF( b_part ) ); LOOP r_x := SEARCH
( "`", FORWARD, EXACT ); EXITIF r_x = 0; POSITION( r_x ); ERASE_CHARACTER
( 1 ); COPY_TEXT( ASCII( INT( ERASE_CHARACTER( 3 ) ) ) ); ENDLOOP
; IF i_errors = 0 THEN SET( NO_WRITE, b_errors, ON ); ELSE POSITION
( BEGINNING_OF( b_errors ) ); COPY_TEXT( FAO
( "The following !UL errors were detected while unpacking !AS", i_errors
, s_file_spec ) ); SPLIT_LINE; SET( OUTPUT_FILE, b_errors, "SYS$COMMAND" )
; ENDIF; EXIT;
$ DELETE VMS_SHARE_DUMMY.DUMMY;*
$ CHECKSUM 'FILE_IS
$ WRITE SYS$OUTPUT " CHECKSUM ", -
  F$ELEMENT( CHECKSUM_IS .EQ. CHECKSUM$CHECKSUM, ",", "failed!!,passed." )
$ RETURN
$!
$START:
$ FILE_IS = "HELP.TXT"
$ CHECKSUM_IS = 807160211
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
XPMDF MAILSERV V1.01                                                     HELP
X
XThe PMDF MAILSERV facility is a mail server available to all sites running
XPMDF. `032
X
XCurrently the following commands are available:
X
XHELP - sends a help file (this file).  This command takes no parameters.
X
XINDEX - sends an index of all files currently available on the MAILSERVer.
X    This command takes no parameters.
X
XINFO - sends a help file.  This command is the same as HELP and takes no
X    parameters.
X
XLISTS - sends a list of mailing lists for the site.  This command takes no
X    parameters.
X
XSEND - sends the requested file.  You can specify a directory, filename,`032
X    and file type when using the SEND command. Some examples of valid send
X    commands (given that the files exist):
X
X    SEND HELP.TXT
X    SEND [RUSH]GEDDY.LEE
X    SEND [DOC.V2.AFTER]TURN.THE_PAGE
X
XSEND/LIST - sends the requested mailing list.  You specify the name of the
X    mailing list.  Some examples of valid SEND/LIST commands are (given that
X    the lists exist):
X
X    SEND/LIST MAILSERV-L
X    SEND/LIST PLAGUE_L  (this is a real list!)
X   `032
XSUBSCRIBE - subscribe to the specified mailing list.  You specify the name of
X    the mailing list.  Some examples of valid SUBSCRIBE commands are (given
X    that the lists exist):
X
X    SUBSCRIBE MAILSERV-L
X    SUBSCRIBE ALIFESON-L
X
XUNSUBSCRIBE - unsubscribe to the specified mailing list.  You specify the
X    name of the mailing list.  Some examples of value UNSUBSCRIBE commands
X    are (given that the lists exist):
X
X    UNSUBSCRIBE BOINK-L
X    UNSUBSCRIBE POLICY-L
$ GOSUB UNPACK_FILE

$ FILE_IS = "MAILSERV.DOC"
$ CHECKSUM_IS = 273290770
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X                                    MAILSERV
X
X
X   1.0  AN INTRODUCTION`032
X
X   The MAILSERV program is a PMDF channel program which provides file serving
X   and mailing list handling.  Send any questions or comment to: `032
X
X     Eric Thies`032
X     Academic Computer Center`032
X     University of North Carolina at Greensboro`032
X     Greensboro, NC 27412 (USA)`032
X     (919) 334-5350`032
X     ethies@uncg.bitnet -or- ethies@uncecs.edu`032
X
X   The MAILSERV channel program provides 3 general services:  distribution of
X   general information, file serving, and mailing list manipulation.  Distri-
X   bution  of  general  information means that the MAILSERV will send general
X   information about the server, in the form of mail messages, in response to
X   requests for general information.  These requests are currently limited to
X   the commands HELP, INDEX, INFO (same as HELP), and  LISTS.   File  serving
X   means  that  MAILSERV will process commands requesting files and will mail
X   these files back to the requestor.  Mailing list manipulation  means  that
X   MAILSERV will accept requests for subscription to and removal from mailing
X   lists. `032
X
X   The  MAILSERV  program  is  a PMDF channel program.  As such, it only pro-
X   cesses mail.  It does not process interactive messages as the  LISTSERVers
X   on  BITNET  do.   It processes mail messages, interpreting the body of the
X   message as commands. `032
X
X   MAILSERV  uses two directories:  a files directory (and optional subdirec-
X   tories) and a mailing list directory. `032
X
X   MAILSERV_FILES_DIR  - this rooted logical name points to the top directory
X   of the set of directories containing the files for the MAILSERV.  Examples
X   of defining this logical name (defined in MASTER.COM) are: `032
X
X     $ define/user mailserv_files_dir disk4:[mailserv.files.]`032
X     $ define/user mailserv_files_dir disk2:[mailserv.]`032
X     $ define/user mailserv_files_dir disk3: `032
X
X   MAILSERV_MAIL_DIR  -  this logical name points to the directory containing
X   the mailing lists for MAILSERV.  Examples of defining  this  logical  name
X   (defined in MASTER.COM) are: `032
X
X     $ define/user mailserv_mail_dir disk2:[mailserv.maillist]`032
X     $ define/user mailserv_mail_dir disk1:[maillists]`032
X     $ define/user mailserv_mail_dir disk7:[users.maillists]`032
X
X   If  you don't want mailing lists enabled for your site, do not include the
X   MAILSERV_MAIL_DIR logical name in MASTER.COM.  MAILSERV  will  respond  to
X   mailing  list  commands saying that mailing lists are not enabled for your
X   site. `032
X
X
X   1.1  File Serving`032
X
X
X   File serving is implemented with the SEND command.  The send command takes
X   one required parameter and an optional second parameter.   This  parameter
X   or  parameters  specify  the file to send to the requestor.  The parameter
X   can include a directory specification, and MUST include a  file  name  and
X   file   type.    These   file   specifications   are   combined   with  the
X   MAILSERV_FILE_DIR  logical  name  described  above  to  form  a   complete
X   filespec, which MAILSERV then uses to access the file. `032
X
X   The  optional  second  parameter  is to allow for SEND commands to use the
X   form popular with many existing servers: `032
X
X     SEND <name> <type>`032
X
X   MAILSERV  prepends  a period to the second parameter and then appends this
X   to the first parameter.  Thus the command SEND HELP TXT  is  the  same  as
X   SEND HELP.TXT . `032
X
X   If no directory is present in the SEND filespec, then the top level direc-
X   tory ([000000]) is assumed. `032
X
X
X   1.2  An Example of a File Directory`032
X
X
X   To  illustrate  the defining of MAILSERV_FILES_DIR, the placement of files
X   in this directory, and the cooresponding SEND  commands  to  access  these
X   files, an example. `032
X
X   In this example, we want to put our files in subdirectory on disk4, namely
X   the [mailserv] directory.  Since MAILSERV_FILES_DIR needs to be  a  rooted
X   logical  name,  we define it as follows (see installation instructions for
X   more details). `032
X
X     $ define/user MAILSERV_FILES_DIR disk4:[mailserv.]`032
X
X   Next, we put the files HELP.TXT and INDEX.TXT in disk4:[mailserv], the top
X   level of the files directory.  These two  files  are  the  files  sent  in
X   response to the HELP (and INFO) and INDEX commands.  These files should be
X   edited according to the needs of your site. `032
X
X   Now,  suppose  you have some documentation on the BOINK language.  You can
X   create the directory disk4:[mailserv.boink] and put this documentation  in
X   this  directory.   Also,  you  have some game sources.  You can create the
X   directory disk4:[mailserv.games.source] and put the files in  this  direc-
X   tory. `032
X
X   Some example SEND commands to access these files are: `032
X
X     SEND HELP.TXT`032
X     SEND INDEX TXT`032
X     SEND [BOINK]HOW_TO_BOINK.DOC`032
X     SEND [GAMES.SOURCE]WHAMMY.PAS`032
X     SEND [GAMES.SOURCE]SLAMMY BAS`032
X
X
X
X   1.3  Mailing List Manipulation`032
X
X
X   MAILSERV  implements  mailing list manipulation with the SUBSCRIBE and UN-
X   SUBSCRIBE commands.  The SUBSCRIBE takes one parameter:  the mailing  list
X   to  subscribe  to.   The  SUBSCRIBE command adds the return address of the
X   current message to the specified mailing list.  Likewise, the  UNSUBSCRIBE
X   command  removes the return address of the current message from the speci-
X   fied mailing list. `032
X
X   MAILSERV  mailing lists contain only addresses.  This means that your per-
X   sonal name isn't preserved and then restored when mail is sent to you from
X   the  list.   This  is  because MAILSERV mailing lists are implemented as a
X   file of PMDF aliases, and any address in the mailing list  must  obey  the
X   rules for aliases. `032
X
X
X   1.4  An Example of A Mailing List`032
X
X
X   As an example, let's say you want to set up a mailing list called BOINK-L.
X   You have decided that your MAILSERV  mailing  lists  will  reside  in  the
X   directory  disk5:[mailing_lists].   You  first define MAILSERV_MAIL_DIR as
X   follows (see installation instructions for more details): `032
X
X     $ define/user MAILSERV_MAIL_DIR disk5:[mailing_lists]`032
X
X   Then you create the file disk5:[mailing_lists]boink-l.dis .  MAILSERV will
X   search for this file to determine if the BOINK-L list exists. `032
X
X   Now  when  MAILSERV  encounters a SUBSCRIBE BOINK-L command or UNSUBSCRIBE
X   BOINK-L command, it will use the file boink-l.dis.  The next  step  is  to
X   add the following line to your PMDF ALIASES.  file: `032
X
X   BOINK-L:  <disk5:[mailing_lists]boink-l.dis`032
X
X   You  may  also want to set a local forwarding address for the BOINK-L list
X   as follows: `032
X
X     $ set process /priv=sysnam`032
X     $ mail`032
X     MAIL> set forward /user=BOINK-L IN%"""BOINK-L"""`032
X
X   This  allows users to send mail to BOINK-L rather than IN%"BOINK-L".  This
X   isn't so important if the mailing list is a local distribution of  a  net-
X   work mailing list. `032
X
X
X   2.0  INSTALLING MAILSERV`032
X
X
X   Installing  MAILSERV consists of several steps, detailed below.  This sec-
X   tion is followed by a sample installation. `032
X
X
X   2.1  Compile, link and place the MAILSERV executable. `032
X
X
X   The  MAILSERV  source  (MAILSERV.PAS  and  MAILSERV_TABLES.CLD)  should be
X   placed in the PMDF_ROOT:[SRC] directory.  It should be compile, linked and
X   placed with the following commands: `032
X
X     $ set default pmdf_root:[src]`032
X     $ pascal mailserv`032
X     $ set command/object mailserv_tables`032
X     $ link mailserv,mailserv_tables,[exe]pmdflib.olb/library`032
X     $ rename mailserv.exe [exe]`032
X
X
X
X   2.2  Choose a files and mail directory and a command limit`032
X
X
X   Decide  where  you  want  the files for your MAILSERV server to reside and
X   where you want your mailing lists to reside.  Remember that while  mailing
X   lists  probably won't take up too much disk space, the disk space taken up
X   by files on the server will probably increase steadily. `032
X
X   Next,  decide  on a command limit for MAILSERV.  This is the limit of com-
X   mands per mail message which MAILSERV will process.  If  you  decide  that
X   you  don't want a limit, use zero (0) when defining the limit.  You should
X   also decide whether you want MAILSERV to produce a log file  of  processed
X   commands. `032
X
X
X   2.3  Modify PMDF_ROOT:[EXE]MASTER.COM`032
X
X
X   You   need   to   add   a   few   lines   in   2   different   places   to
X   PMDF_ROOT:[EXE]MASTER.COM.  Of the lines below, add the lines which  begin
V   with >>> to MASTER.COM.  Leave off the >>> when you add them to the file.`
X032
X
X     $ if channel_name .eqs.  "l" then goto local_channel`032
X     $ if channel_name .eqs.  "d" then goto DECnet_compatibility_channel`032
X     $ if channel_name .eqs.  "directory" then goto dir_channel`032
X     >>>$ if channel_name .eqs.  "mailserv" then goto mailserv_channel`032
V     $ if f$extract(0,5,channel_name) .eqs.  "anje_" then goto BITNET_channel
X`032
X
X   [farther down in MASTER.COM]`032
X
X     $ dir_channel: `032
X     $ ! `032
X     $ run pmdf_root:[exe]dir_master`032
X     $ goto out1`032
X     >>>$ ! `032
X     >>>$ !  The MAILSERV channel`032
X     >>>$ ! `032
X     >>>$ mailserv_channel: `032
X     >>>$ ! `032
X     >>>$ define/user mailserv_files_dir fac:[ethies.mailserv.files.]`032
X     >>>$ define/user mailserv_mail_dir fac:[mailer.mailserv]`032
X     >>>$ define/user mailserv_command_limit 10`032
X     >>>$ run pmdf_root:[exe]mailserv`032
X     >>>$ goto out1`032
X     $ ! `032
X     $ !  This is a DECnet channel;  set up and use DN_MASTER`032
X     $ ! `032
X     $ DECnet_channel: `032
X
X
X   Make sure to substitute your choices for the files and mail directories in
X   the define commands for  MAILSERV_FILES_DIR  and  MAILSERV_MAIL_DIR  shown
X   above.   You can also set the command limit for MAILSERV to suit the needs
X   of your host.  Using zero (0) for the limit  tells  MAILSERV  to  have  no
X   limit of commands per message. `032
X
X
X   2.4  Modify the ALIASES file`032
X
X
X   Add  the  following  aliases  to  your  alias  file,  which  by default is
X   PMDF_ROOT:[TABLE]ALIASES.  The first alias will route mail sent  to  MAIL-
X   SERV  on  your  host to the MAILSERV channel.  The second alias will route
X   any  bounced  messages  (the  return  address  of   MAILSERV   replys   is
X   MAILSERV-REPLY)  to  the postmaster.  This will hopefully prevent any mail
X   bounce loops.  Make sure that you have a POSTMASTER alias  in  your  alias
X   file  which  points  to the username of the postmaster for your site.  See
X   the PMDF manual for more information. `032
X
X     MAILSERV:  MAILSERV@MAILSERV-CHANNEL`032
X     MAILSERV-REPLY:  POSTMASTER`032
X
X
X
X   2.5  Modify the PMDF configuration file. `032
X
X
X   Add  the  following  channel  to  your  PMDF  configuration file, which by
V   default is PMDF_ROOT:[TABLE]PMDF.CNF.  This defines the MAILSERV channel.`
X032
X
X     MAILSERV`032
X     MAILSERV-CHANNEL`032
X
X
X
X   2.6  Set forwarding for MAILSERV in VMS MAIL`032
X
X
X   For  the  convenience  of local users, you should set a forwarding address
X   for MAILSERV as follows: `032
X
X     $ set process /priv=sysnam`032
X     $ mail`032
X     MAIL> set forward /user=MAILSERV IN%"""MAILSERV"""`032
X     MAIL> exit`032
X
X
X
X   2.7  Place required files in the files directory`032
X
X
X   The  files  HELP.TXT  and INDEX.TXT are needed for the HELP and INDEX com-
X   mands to work.  These files should be place in the top level of your files
X   directory.   HELP.TXT  should  provide users with a basic understanding of
X   the MAILSERV commands, while INDEX.TXT should contain a list of all  files
X   available from your server. `032
X
X
X   2.8  Place required files in the mail directory`032
X
X
X   The file LISTS.TXT is needed for the LISTS command and should be placed in
X   your mail directory.  It should contain a list of all mailing lists avail-
X   able  on  your  host  along with any other information you feel your users
X   will need. `032
X
X   You  should  create  the .DIS files for the mailing lists you want at this
X   time.  These files must be in the mail directory as well.  Then, for  each
X   mailing  list  you have created, add a line to the ALIASES.  file.  With a
X   mailing list called RUSH-L and the  file  spec  of  the  mailing  list  as
X   disk4:[mailing]rush-l.dis, here's an example of an entry in ALIASES: `032
X
X     rush-l:  <disk4:[mailing]rush-l.dis`032
X
X
X   2.9  Create a MAILSERV log file`032
X
X
X   If  you  have  decided  to have MAILSERV produce a log file, create a file
X   called PMDF_ROOT:[LOG]MAILSERV.LOG.  MAILSERV will write  log  message  to
X   this file as long as it exists. `032
X
X
X   2.10  An installation example`032
X
X
V   This example installation will hopefully make things a bit more clear. `03
X2
X
V   First, I move, compile, link, and move the executable image of MAILSERV: `
X032
X
X     $ copy mailserv.pas pmdf_root:[src]`032
X     $ copy mailserv_tables.cld pmdf_root:[src]`032
X     $ set default pmdf_root:[src]`032
X     $ pascal mailserv`032
X     $ set command/object mailserv_tables`032
X     $ link mailserv,mailserv_tables,[exe]pmdflib.olb/library`032
X     $ rename mailserv.exe [exe]`032
X
X
X   Next,  I  decide  where  I want my files directory, my mail directory, and
X   what I want the command limit to be for  MAILSERV.   Since  our  disk4  is
X   designated  for  storing such files, I decide that my files directory will
X   be on disk4, and the directory will be [mailserv].  Next, I decide that my
X   mail  directory  will  be  on  disk5,  in  the  directory [mailing_lists].
X   Finally, I decide that a limit of 10 commands per mail message  will  suf-
X   fice for our site. `032
X
X   Using  this information, I make the following changes to MASTER.COM in the
X   directory PMDF_ROOT:[EXE].  The lines I add are prefixed with >>>. `032
X
X     $ if channel_name .eqs.  "l" then goto local_channel`032
X     $ if channel_name .eqs.  "d" then goto DECnet_compatibility_channel`032
X     $ if channel_name .eqs.  "directory" then goto dir_channel`032
X     >>>$ if channel_name .eqs.  "mailserv" then goto mailserv_channel`032
V     $ if f$extract(0,5,channel_name) .eqs.  "anje_" then goto BITNET_channel
X`032
X
X
X     $ dir_channel: `032
X     $ ! `032
X     $ run pmdf_root:[exe]dir_master`032
X     $ goto out1`032
X     >>>$ ! `032
X     >>>$ !  The MAILSERV channel`032
X     >>>$ ! `032
X     >>>$ mailserv_channel: `032
X     >>>$ ! `032
X     >>>$ define/user mailserv_files_dir disk4:[mailserv.]`032
X     >>>$ define/user mailserv_mail_dir disk5:[mailing_lists]`032
X     >>>$ define/user mailserv_command_limit 10`032
X     >>>$ run pmdf_root:[exe]mailserv`032
X     >>>$ goto out1`032
X     $ ! `032
X     $ !  This is a DECnet channel;  set up and use DN_MASTER`032
X     $ ! `032
X     $ DECnet_channel: `032
X
X
X   Next, I make the changes to my ALIASES file. `032
X
X     MAILSERV:  MAILSERV@MAILSERV-CHANNEL`032
X     MAILSERV-REPLY:  POSTMASTER`032
X
X   I  already  have  an alias for POSTMASTER in my alias file.  Since I'm the
X   postmaster for UNCG, postmaster mail goes to my ETHIES account.  It  looks
X   like this. `032
X
X     POSTMASTER:  ETHIES`032
X
X   I add the following channel to my PMDF.CNF`032
X
X     MAILSERV`032
X     MAILSERV-CHANNEL`032
X
X   Now,  I  edit  the  files HELP.TXT and INDEX.TXT and place them in the top
X   level of the files directory`032
X
X     $ copy help.txt disk4:[mailserv]help.txt`032
X     $ copy index.txt disk4:[mailserv]index.txt`032
X
X   I edit my LISTS.TXT file and place it in my mail directory. `032
X
X     $ copy lists.txt disk5:[mailing_lists]`032
X
X   I've  decided  that  I  want a BOINK-L list, a WHAMMO-L list, and a RUSH-L
X   list, so I created the .DIS files for these lists. `032
X
X     $ create disk5:[mailing_lists]boink-l.dis`032
X     (hit control-z)`032
X     $ create disk5:[mailing_lists]whammo-l.dis`032
X     (hit control-z)`032
X     $ create disk5:[mailing_lists]rush-l.dis`032
X     (hit control-z)`032
X
X   Then  I  add  the  following  three lines to my ALIASES file for the above
X   mailing lists`032
X
X     boink-l:  <disk5:[mailing_lists]boink-l.dis`032
X     whammo-l:  <disk5:[mailing_lists]whammo-l.dis`032
X     rush-l:  <disk5:[mailing_lists]rush-l.dis`032
X
X   I  also want to have MAILSERV log the commands it processes, so I create a
X   MAILSERV logfile`032
X
X     $ create pmdf_root:[log]mailserv.log`032
X     (hit control-z)`032
X
X   The mailserv is now ready to go. `032
$ GOSUB UNPACK_FILE

$ FILE_IS = "MAILSERV.PAS"
$ CHECKSUM_IS = 857048353
$ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY
X%INCLUDE 'ATTRIB.INC'
XPROGRAM mailserv (outbound, output,
X                %INCLUDE 'APFILES.INC',
X                %INCLUDE 'MMFILES.INC',
X                %INCLUDE 'QUFILES.INC');
X`009`009
X(*******************************************************************)
X(*                                                                 *)
X(*      Author:    Eric Thies (ethies@uncg.bitnet)                 *)
X(*                 University of North Carolina at Greensboro      *)
X(*                 January 1989                                    *)
X(*                                                                 *)
X(*    Redistribution of this file is prohibited.                   *)
X(*                                                                 *)
X(*    These files are not to be copied, modified or distributed    *)
X(*    except in accordance with the rules and regulations of the   *)
X(*    PMDF project.                                                *)
X(*                                                                 *)
X(*    This software is copyrighted (c) 1989 by the PMDF project    *)
X(*    and by Eric Thies.  The author assumes no liability for      *)
X(*    damages that occur as a result of use or abuse of this       *)
X(*    software nor does he commit to any support whatsoever.  Such *)
X(*    support if available will come under the authority of the    *)
X(*    PMDF project at their discretion.                            *)
X(*                                                                 *)
X(*    The MAILSERV program is a mail file server.  It reads a file *)
X(*    of message file names and process these messages, using the  *)
X(*    body of the message as the commands for the server.          *)
-+-+-+-+-+ End of part 1 +-+-+-+-+-
