home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd1.bin / files / comm / mail / listserv / docs / listserv.doc < prev    next >
Encoding:
Text File  |  1994-06-22  |  35.7 KB  |  860 lines

  1.            Peti's Amiga ListSERV -- written by Peter Simons
  2.  
  3.                        Release 3 (22 June 1994)
  4.  
  5. Copyright
  6. *********
  7.  
  8.    ListSERV is copyrighted in ©1993 and ©1994 by Peter Simons,
  9. Germany.  All rights are reserved. Permission is granted to distribute
  10. the package in its unmodified form if you do not charge *any* fees.  If
  11. you want to include ListSERV in any kind of software collection that is
  12. sold, like a CD ROM for example, you *must* to ask me for my explicit
  13. permission!
  14.  
  15. ListSERV is not gratis
  16. ======================
  17.  
  18.    When I started writing ListSERV a few month ago, all I needed was a
  19. simple daemon that automates the un-/subscription process. But when I
  20. released the first, simple version, I noticed that my ListSERV was the
  21. only program of its kind available for the Amiga and many, many users
  22. had requests for various features. You can guess how it continued from
  23. then on, can't you? After all, I spent several hundred hours
  24. programming and chasing down bugs with weird configurations (you won't
  25. believe how many different sendmails are out there) and finally,
  26. ListSERV has become a pretty sophisticated product. That's why I think
  27. it's fair to get at least a few bucks out of my work.
  28.  
  29.    This version of ListSERV is an experimental version with only a few
  30. limitations to let you test whether you think this software satisfies
  31. your needs. This evaluation version has the FAQ and LONGINDEX commands
  32. disabled and won't allow you to administrate more than 2 lists. This
  33. should be enough for you to test the capabilities and might even serve
  34. your purposes if your needs are small.
  35.  
  36. Registration
  37. ============
  38.  
  39.    If you think ListSERV is what you need and you want to enjoy the full
  40. capabilities, you must register with me. The shareware fee is DM 20 or
  41. US $15. If you pay an extra fee for the material (DM 10 for european
  42. users or US $10 for non-european users), you'll receive a fully printed
  43. manual and the latest version of ListSERV on floppy disk via snail mail.
  44.  
  45.    Additionally, registered users will be subscribed to the support
  46. mailing list where they can get obtain assistance with setup problems
  47. or submit bug reports and enhancement requests. I will also announce or
  48. even submit new versions on this list to make sure you do not miss out
  49. a newer version.
  50.  
  51.    If you want to register, please fill out the included
  52. `Registration.txt' form and deliver it to me via either e-mail or snail
  53. mail. *Please take note that I do only accept "Deutsche Mark" or "US
  54. Dollars".*
  55.  
  56. Concept of mailing lists
  57. ************************
  58.  
  59.    Basically, the USENET provides two kinds of communication: News and
  60. mail. While mail is of a strictly private nature and is most suitable
  61. for exchange between two or three persons, news is public and allow
  62. discussions with a greater number of participants.
  63.  
  64.    Mailing lists are something inbetween. They allow for (mostly) public
  65. discussion using the e-mail interface. This may sound strange but
  66. several valid reasons exist to choose a mailing list rather than a
  67. newsgroup. The first significant advantage is that mail is a lot faster
  68. than news and thus, mailing lists have shorter turn-around times than
  69. posting to newsgroups. Additionally, mailing lists are easy to set up
  70. and later remove if no longer required, while adding a new newsgroup
  71. requires public discussion, voting, etc...
  72.  
  73.    Furthermore, mailing lists are much more private than newsgroups. One
  74. can control who subscribes and who does not subscribe. One is even able
  75. to ban people from the list if they misbehave -- what is not possible
  76. in a news environment.
  77.  
  78.    So, how does this magical "mailing list" work technically? First you
  79. have to find someone willing to install the required software on his
  80. machine. Who is obviously you, since you're reading this document.
  81. This machine is called the mailing list "host". The list stands and
  82. falls with this machine. It must be able to handle all the traffic, it
  83. should work reliable and lastly, it should have a fast connection to
  84. the net. The quicker this machine is reached by e-mail, the quicker the
  85. the turnaround for the mailing list.
  86.  
  87.    Once the list is set up and announced, a list of addresses has to be
  88. collected. These people are called the "subscribers" of the mailing
  89. list. Now, whenever someone wants to "post" to the list, he simply
  90. sends an e-mail message to a special address on your site, for example
  91. "testlist@yoursite.foo.bar". When the mail arrives on your site, it is
  92. processed by the ListSERV software and a copy of the mail will be sent
  93. to *all* subscribed addresses. Basically, this is what a mailing list
  94. is all about. In case someone wants to reply to our testmail, he simply
  95. sends another e-mail to the list's address and again all subscribers
  96. will receive a copy, including the person who originally started the
  97. thread.
  98.  
  99. Features of ListSERV
  100. ====================
  101.  
  102.    In the above paragraph I used the term "processing" the mail. Now,
  103. here's a list of features that describes what I meant with "processing":
  104.  
  105.    - The package contains the so called ListSERV-daemon, a tool that
  106.      handles all kinds of user requests automatically. Users can
  107.      subscribe or unsubscribe, they can search for certain addresses and
  108.      more...
  109.  
  110.    - ListSERV's important parts are written in ARexx and thus can be
  111.      modified to fit your special requirements
  112.  
  113.    - ListSERV may add a signature to any article posted to the list.
  114.      Each mailing list may have its own signature, so you can state
  115.      vital information there.
  116.  
  117.    - ListSERV automatically sets the "Reply-To:" entry in the mail
  118.      header to the list's address. Therefore, replies to articles
  119.      delivered via the list will be sent back to the list again. Users
  120.      can simply reply.
  121.  
  122.    - ListSERV supports totally secret and encrypted mailing lists,
  123.      using the Pretty Good Privacy (PGP) package. You can set up
  124.      confidential mailing lists that can be used for development of
  125.      commercial soft-/hardware.
  126.  
  127.    - ListSERV supports FAQs.
  128.  
  129.    - ListSERV allows you to archive all traffic of a mailing list.
  130.  
  131. ListSERV's system requirements
  132. ==============================
  133.  
  134.    ListSERV requires OS 2.04 or later. To be specific,
  135. netsupport.library requires OS 2.04 and since ListSERV relies on
  136. netsupport.library very much... There are no further requirements --
  137. besides a working UUCP or TCP installation of course. ListSERV needs
  138. only 4k stack and very little memory.
  139.  
  140. Installing the ListSERV mailing list package
  141. ********************************************
  142.  
  143.    The installation of ListSERV is trivial, and the following may look
  144. like I over reacted since dedicated a whole chapter on the installation
  145. of ListSERV. Nevertheless:
  146.  
  147.    - Get ready!
  148.  
  149.    - Meditate a little bit... try to understand all the implications of
  150.      installing this software package. Ask yourself whether you really
  151.      need all this stuff? Does the USENET make any sense at all?
  152.  
  153.    - Warm up your fingers--you'll have to type some stuff soon.
  154.  
  155.    - Okay, let's go: Please type "`lha x ListSERV3_0 UUCP:'" and press
  156.      the RETURN key.
  157.  
  158.    - Lean back and enjoy the show...
  159.  
  160.    - Feel the tension rise now!
  161.  
  162.    - Feel even more tension!!
  163.  
  164.    - Wow--LhA has terminated: Relax now.
  165.  
  166. That's it!
  167.  
  168.    Okay, that was fun, wasn't it? You'll find a directory called
  169. `ListSERV' in your `UUCP:' directory -- or wherever you decided to
  170. install ListSERV. This directory has to be assigned to the logical name
  171. "ListSERV:".
  172.  
  173. Installing the netsupport.library
  174. =================================
  175.  
  176.    The installation of the library is actually very easy. Just copy the
  177. file `netsupport.library' from `ListSERV:libs/' to your `LIBS:'
  178. directory. However, the library needs its own configfile which is the
  179. topic of the following paragraphs.
  180.  
  181.    You can place the file in any path you like, you can even chose any
  182. name you want. All you have to do is to set the environment variable
  183. "NSPConfig" according to the path. The library will check, in order of
  184. precedence, for a local and a global variable and use the value as the
  185. path and name for the config file. If no "NSPConfig" variable is set,
  186. the default path is `S:NSPConfig'.
  187.  
  188.    A valid config file may contain one keyword per line. Keywords *must*
  189. begin at the first column. The parameter can be separated from the
  190. keyword using either space(s) or tab(s). Lines starting with a "#" are
  191. comment lines and will be ignored.
  192.  
  193. Here's an example:
  194.  
  195.      #
  196.      # NetSupport.Library config file
  197.      #
  198.      # $VER: NSPConfig 1.23 (22.2.94)
  199.      #
  200.      
  201.      #
  202.      # where the default config file is
  203.      #
  204.      MasterConfig    UULib:Config
  205.      
  206.      #
  207.      # Configuration for MakeLogEntry()
  208.      #
  209.      DefaultLog      UUSpool:Logfile, stdout
  210.      ListSERV        ListSERV:logfile, stdout
  211.  
  212. The above entries have the following meanings:
  213.  
  214.    - MasterConfig
  215.  
  216.      This is important for routines dealing with config files. The
  217.      caller has the possibility to provide a NULL as filename and let
  218.      the library determine the correct file. The library will use the
  219.      file you specify here. This should generally be the main config
  220.      file of your installation, like `UULib:Config' for UUCP or
  221.      `inet:s/inet.config' for the AS225r2 package. This feature makes
  222.      the programs, using the library, package-independent.
  223.  
  224.    - DefaultLog
  225.  
  226.      You can specify a separate logfile for each program that uses the
  227.      library. However, just in case you forget it, this logfile will be
  228.      used. You can specify several logfiles, separated with commas. The
  229.      libraries parsing routines are still a little bit weak, so please
  230.      do not try special tricks, okay? An entry of "stdout" is a magic,
  231.      standing for the program's standard output stream. An entry like
  232.  
  233.           Testname        T:testlog, stdout
  234.  
  235.      will write the log entry to both, the file and the output window.
  236.      You may also specify "CONSOLE:" for the standard error stream of
  237.      the program. This is always a window and will not be affected by
  238.      redirection, unlike "stdout". "PRT:" will naturally send a copy of
  239.      every log entry to the printer, etc...
  240.  
  241.      As mentioned above, you can specify logfile(s) for each program
  242.      using the library. The program should state the keyword it uses in
  243.      its manual, but usually it's just the name of the program.
  244.      ListSERV, for example, can be configured like this:
  245.  
  246.           ListSERV        ListSERV:logfile, stdout
  247.  
  248. Elements of the ListSERV package
  249. ********************************
  250.  
  251.    ListSERV is not a single program, but a set of tools, scripts and
  252. programs that belong together. In the following chapter, I'd like to
  253. describe each part separately.
  254.  
  255. ListSERV daemon
  256. ===============
  257.  
  258.    The ListSERV daemon is located in `ListSERV:c/'. It is responsible
  259. for handling all commands your users may want to issue.  Usually,
  260. you'll set up an alias named "listserv" that pipes the incoming mail to
  261. the daemon which expects it from standard input. Such an alias looks
  262. like this: "listserv:: "|ListSERV:c/ListSERV"". Just add this line to
  263. your alias file and the daemon will be installed and ready to accept
  264. commands.
  265.  
  266.    ListSERV parses the mail and tries to determine the sender using the
  267. "From:" line. If no valid "From:" has been found, the mail is not
  268. processed. Any other header entry other than "From:" is ignored. The
  269. mail body may contain one of the following commands:
  270.  
  271. `HELP'
  272.      Will send a help file `ListSERV:Help' back. You may -- of course
  273.      -- modify this file to fulfill your requirements. A basic help file
  274.      is available in ASCII and TexInfo version.
  275.  
  276. `HELP listname'
  277.      This commands returns the description file for the specified list.
  278.      This is usually a short summary of the purpose of the list.
  279.  
  280. `LIST [address]'
  281.      Lists all mailing lists to which the given address is subscribed.
  282.      If you omit the 'address' the command will assume the mailbox is
  283.      in the from line.
  284.  
  285. `INDEX'
  286.      Lists all the lists available for subscription.
  287.  
  288. `LONGINDEX'
  289.      Lists all the lists and their descriptions.
  290.  
  291. `ADD [address] listname'
  292. `DELETE [address] listname'
  293.      Adds or deletes the given address to or from the list specified.
  294.      Mail is sent to the address given to confirm the add or delete
  295.      operation.
  296.  
  297.      *Attention: Please note that it is possible to add or delete
  298.      someone else's subscription to a mailing list. This facility is
  299.      provided so that subscribers may alter their own subscriptions
  300.      from a new or different computer account. There is therefore some
  301.      potential for abuse; I have chosen to limit this by mailing a
  302.      confirmation notification of any addition or deletion to the
  303.      address added or deleted including a copy of the message which
  304.      requested the operation.  At least you can find out who's doing it
  305.      to you.*
  306.  
  307.      If you omit the 'address' the command will assume the mailbox that
  308.      is in the From: line of the message. Note that SUBSCRIBE is a
  309.      synonym for ADD; UNSUBSCRIBE for DELETE.
  310.  
  311. `DELETE-ALL [address]'
  312. `UNSUBSCRIBE-ALL [address]'
  313.      Unsubscribes given address from all mailing lists. Mail is sent to
  314.      the address given to confirm the deletions. If you omit the
  315.      'address' the command will assume the mailbox that is in the From:
  316.      line of the message.
  317.  
  318. `FAQ [listname]'
  319.      Sends a list of "Frequently Asked Questions" for the appropriate
  320.      mailing list. If the listname parameter is omitted, a list of
  321.      available FAQs is sent instead.
  322.  
  323.    A command must be the first word on each line in the message. Lines
  324. which do not start with a command word are interpreted as HELP. So does
  325. a message that does not contain any command. A single message may
  326. contain multiple commands; some commands may result in separate replies
  327. (namely FAQ, HELP) while others will just write something to the
  328. logfile. You will always receive a response to any command found in the
  329. mail.
  330.  
  331.    Additionally, ListSERV accepts the name of a default list as command
  332. line parameter, for example: "ListSERV <mail testlist". This list will
  333. be assumed as "mailinglist" if you omit the parameter at the ADD,
  334. DELETE, HELP and FAQ commands.
  335.  
  336.    This feature is usually used to set up the common "LIST-request"
  337. address on your site. Mailing to this address rather than to "listserv"
  338. reduces the chance of misuse.
  339.  
  340. One short example:
  341.  
  342.      To: Testlist-request@foo.bar.com
  343.      Subject:
  344.      
  345.      ADD myaddress@mysite
  346.      FAQ
  347.  
  348. will add myaddress@mysite to the "Testlist" and send testlist's FAQ
  349. back. You see, it's not possible to get the list of available FAQs when
  350. mailing to a "-request" address, because ListSERV will try to send a
  351. specific FAQ out.
  352.  
  353. ListMail
  354. ========
  355.  
  356.    ListMail is located in `ListSERV:c/'. It will send a mail to a list
  357. of receivers. Of course almost any sendmail is able to handle this task
  358. but ListMail has a few additional features. For example, it will it
  359. recognize if the address of the poster is contained in the list and
  360. will send him a short receipt rather than the complete mail again.
  361.  
  362.    ListMail expects a full RFC mail, because it is using rmail to
  363. deliver it, not sendmail! These RFC mails are generated by the
  364. ListMailFilter script described below.
  365.  
  366.    ListMail tries to "batch" mail as best it can, meaning that the
  367. actual body will be transferred only once and the list of all
  368. recipients will be provided to rmail over the command line. Get it...?
  369. Okay, I'll try to be more verbose. Outgoing mail is stored in batches,
  370. each consisting of three files: One C.* file and two D.* files. The C.*
  371. (command-) file file is meant for your uucico and it will tell it what
  372. to do with the two other files. (Usually just send them over to the
  373. other site.) Then you have two D.* (data-) files, one contains the
  374. actual mail and the other contains the command that should be called to
  375. handle that mail. This is something like "rmail recipient@site.domain"
  376. or "rmail site.domain!recipient". What ListMail does is simply
  377. specifying several addresses in the second data file. Then the same
  378. mail is delivered to several recipients, without having to transfer the
  379. mail several times. Otherwise you would have one mail message per
  380. individual subscribed to the list. Imagine if you had 100 users in your
  381. mailing list and everytime someone posted a message, 100 batches of
  382. mail were created. Instead you will have one batch of mail for about
  383. 20-30 addresses. However, the amount of batched addresses is limited by
  384. the max. commandline length, which is 512 characters under OS 2.04. (1)
  385.  
  386. DoNewMailinglist
  387. ================
  388.  
  389.    This script is located in `ListSERV:s/'.  It lets you easily create
  390. a new mailing list. Just make sure that the S-bit of the file is set,
  391. call "DoNewMailinglist LISTNAME" and the script will initialize
  392. everything for you.  Please take note that this script *must* be
  393. customized for your system! (Will be described later in the chapter
  394. "Creating a mailing list".)
  395.  
  396. SendMailingList
  397. ===============
  398.  
  399.    This script is located in `ListSERV:s/'. Please make sure it has its
  400. S-bit set. SendMailingList will read an incoming mail from standard
  401. input and handle the whole task of processing and sending it to the
  402. recipients. The only parameter this script expects is the name of the
  403. mailing list it shall post the mail to.
  404.  
  405.    Usually, this script is started by an alias, set up by the
  406. DoNewMailingList script, for example: "testlist:
  407. "|ListSERV:s/SendMailingList testlist"".
  408.  
  409. MailListFilter
  410. ==============
  411.  
  412.    This script is located in `ListSERV:s/'. Please make sure it has its
  413. S-bit set. MailListFilter does some highly sophisticated magic: It
  414. takes the incoming mail and turns it into a full-blown RFC mail,
  415. required by rmail. An envelope is created, the "Reply-To:" header field
  416. is set back to the list's address, certain filed such as
  417. "Return-Receipt-To:" are filtered, etc...
  418.  
  419.    You may wonder why the address in the envelope is "LISTNAME-error"
  420. and not just "listname". Now that is pretty reasonable: The envelope
  421. address is used whenever the mail fails, bounces or if the mail can't
  422. be delivered. With this envelope, the mail will be sent to a human user
  423. rather than to the list, what would be fatal! (Can you spell infinite
  424. loop?)
  425.  
  426.    ---------- Footnotes ----------
  427.  
  428.    (1)  ListMail will respect the "MaxRMailLen" entry in UUCP's config
  429. file.
  430.  
  431. Creating a new mailing list
  432. ***************************
  433.  
  434.    Enough of "background knowledge", let's start with the real stuff.
  435. You can create a new mailing list using the DoNewMailinglist script.
  436. However, before you can use the script, you must customize the script to
  437. your machine. DoNewMailinglist assumes your alias file as
  438. `UULIB:mail/Aliases' and your editor as "DME". If you have another
  439. setup, please change these entries with an ordinary text editor. That's
  440. all.
  441.  
  442.    Now call "DoNewMailinglist test" to create a mailing list named
  443. "test". The script will start your editor several times to let you
  444. create a few files. These files will be located in the
  445. `ListSERV:groups/<name>/' directory, where "<name>" is the name of your
  446. mailing list. In our case, the directory is called
  447. `ListSERV:groups/test/'. Here's description of each file:
  448.  
  449. `List'
  450.      This file contains the list of subscribed addresses. Please take
  451.      note that it must only contain the addresses. No comments or real
  452.      names are allowed. List only one address per line and avoid blank
  453.      lines. You should enter only your address here and let the rest
  454.      handle the daemon.
  455.  
  456. `Description'
  457.      The contents of this file will be used when an LONGINDEX or HELP
  458.      <list> has been issued to the daemon. This should be a brief
  459.      description of the purpose of the list.
  460.  
  461. `Introduction'
  462.      This file will be sent to all new subscribers and should contain
  463.      instructions about the list, for example: "Please do not post
  464.      binaries to this list!"
  465.  
  466. `FAQ'
  467.      This file can be used to maintain a list FAQ (frequently asked
  468.      questions). If this file exists, it will be listed with the FAQ
  469.      command of daemon and will be sent out with the "FAQ <list>"
  470.      command. This file is not necessary, unlike than the previous
  471.      files.
  472.  
  473. `Signature'
  474.      Here you may design a small signature that is appended to every
  475.      article posted to the list. I usually state the name of list and
  476.      the address of the list managers here. You should preface the
  477.      actual text with a few blank lines. If this file does not exist,
  478.      no signature will be appended.
  479.  
  480. `Banned'
  481.      Here you can ban certain addresses or pattern from issuing commands
  482.      regarding this special list, for example ADD and DELETE. All
  483.      AmigaDOS patterns are supported. You can specify one pattern per
  484.      line.
  485.  
  486.      I usually use the following pattern per default:
  487.  
  488.           (~(#?@#?)|#?peti.GUN.de)
  489.  
  490.      This will ban any address that does not contain an at ("@") and
  491.      every address that ends in "peti.GUN.de". Hence, it is impossible
  492.      to subscribe local addresses to the list! I know it's sad but
  493.      you'll always find people who try to subscribe one mailing list to
  494.      another just to annoy you. This won't happen now!
  495.  
  496.    Okay, when you have edited all files, the script will terminate and
  497. the list is set up and working. If you take a look at your alias file
  498. now, you'll notice that all required aliases have been appended there.
  499. You might want to modify them for certain purposes:
  500.  
  501. `test:: "|ListSERV:s/SendMailingList test"'
  502.      Obviously, "test" is the address you can use to post to the list.
  503.      If your machine is called "peti.GUN.de", the address of the list
  504.      would be "test@peti.GUN.de". SendMailingList is another script
  505.      that will be discussed later.
  506.  
  507. `test-error:: listserv-manager'
  508.      This is the address bounces will be sent to. The mailing list
  509.      software will set the envelope of the outgoing mail to
  510.      <listname>-error rather then <listname> to prevent bounces from
  511.      beeing sent back to the list, causing an infinite loop. Usually,
  512.      "listserv-manager" is an alias for postmaster.
  513.  
  514. `test-admin:: listserv-manager'
  515.      The admin address the list's administrators can be reached under.
  516.      Although most users are not smart enough to use it (They prefer
  517.      sending any question they have to the world-wide list usually.) it
  518.      is a nice idea IMHO. You can list several addresses here in case
  519.      several people are responsible for the list.
  520.  
  521. `test-request:: "|ListSERV:c/ListSERV test"'
  522.      This address is a special case of the "listserv" alias. Since the
  523.      list's name is stated on the commandline, all commands apply to
  524.      this special list. This makes it easier for the user because a
  525.      simple "ADD" is enough to subscribe to the list.
  526.  
  527. Testing the ListSERV daemon
  528. ===========================
  529.  
  530.    Well, everything should be set up correctly now. (Check: Have you
  531. already created the "listserv"-alias that directs mail to the daemon?
  532. If not, please do it now, we'll need it immediately.)
  533.  
  534.    Start your favorite mail agent and send an e-mail to "listserv". Now
  535. put the following commands in the message body:
  536.  
  537.      LONGINDEX
  538.      FAQ
  539.      ADD listserv test
  540.      ADD your_full_address test
  541.      DELETE simons@peti.GUN.de test
  542.  
  543.    Let's see what should happen: The FAQ and LONGINDEX command should
  544. return the appropriate lists, the first ADD should fail because
  545. "listserv" is a local address. The second ADD should return that you're
  546. already subscribed to the list and the DELETE will fail because the
  547. stated address is not subscribed at all.
  548.  
  549. After a few seconds, you should receive a few mails in your folder. You
  550. may wonder why you receive a few of them two times: The reason is that a
  551. copy of every ADD, DELETE and LIST commands will be sent to the list's
  552. administrator. Which is you!
  553.  
  554. This is what you should get:
  555.  
  556.      Subject: Re: your ListSERV request "LONGINDEX"
  557.      
  558.      ------------------------ Index of mailing lists ----------------------
  559.      test
  560.           This list is just for internal testing purposes and I really
  561.           doubt that you'll find it very interesting!
  562.      ----------------------------------------------------------------------
  563.  
  564. and
  565.  
  566.      Subject: Re: your ListSERV request "FAQ"
  567.      
  568.      ------------------------ Index of available FAQs ---------------------
  569.      test
  570.      ----------------------------------------------------------------------
  571.  
  572. and
  573.  
  574.      Subject: Re: your ListSERV request "DELETE simons@peti.GUN.de test"
  575.      
  576.      Per request by your_full_address
  577.              "DELETE simons@peti.GUN.de test"
  578.      'simons@peti.GUN.de' was NOT FOUND on the 'test' mailing list.
  579.  
  580. Furthermore, your logfile will contain these lines:
  581.  
  582.      (date/time) ListSERV, your_full_address: LONGINDEX
  583.      (date/time) ListSERV, your_full_address: FAQ
  584.      (date/time) ListSERV, your_full_address: ADD listserv test
  585.      (date/time) ListSERV, listserv: address is banned--mail junked
  586.      (date/time) ListSERV, your_full_address: ADD your_full_address test
  587.      (date/time) ListSERV, your_full_address: address is banned--mail junked
  588.      (date/time) ListSERV, your_full_address: DELETE simons@peti.GUN.de test
  589.  
  590. Testing the list
  591. ================
  592.  
  593.    If the above examples worked correctly for you, you're installation
  594. is complete and obviously working. If something radically different
  595. happened, you should check whether all required files exist (maybe with
  596. SnoopDOS?), whether all aliases set up correctly, etc... If that
  597. doesn't help at all, feel free to contact me via e-mail to get help!
  598.  
  599.    Finally, we want to test the list itself. Start your mail agent
  600. again and send an e-mail to "test" and write whatever you like. Send
  601. the the mail off when you're ready. Okay, hard-disk-access, calculating
  602. and...  finished. Now look into your header and you'll find... what is
  603. this?
  604.  
  605.    Sorry, but you just learned ListSERV's receipt feature. ListSERV
  606. won't deliver a copy of the mail to the person who originally sent it
  607. to the list. Instead, it will return a short receipt with the ID of the
  608. mail, the To: address and the time it has been posted to the other
  609. receivers. The subject should be "mailing list receipt". However, your
  610. nice mail is not lost, just take a look at `ListSERV:groups/test/Log'!
  611. This file will be used as an archive of every mail posted to the list!
  612.  
  613.    Now try to post another message to the mailing list, but use a
  614. different "From:" address this time. Just make one up, it doesn't
  615. matter:
  616.  
  617.      From: smart@user.foobar.com
  618.      To: listserv
  619.      Subject: My second test post
  620.      
  621.      Wow, I looove Peter Simons!
  622.  
  623. This time, the mail should arrive in your folder correctly.
  624.  
  625. Removing a mailing list
  626. =======================
  627.  
  628.    To remove a mailing list, just delete it's directory in
  629. `ListSERV:groups/'. Furthermore, you have to remove the list's aliases
  630. from your alias file. That is all.
  631.  
  632. Banning addresses from ListSERV completely
  633. ==========================================
  634.  
  635.    There are several good reason to ban certain addresses from
  636. ListSERV. Maybe someone tries to annoy you or maybe you had some bad
  637. experiences with mail loops. Because of this, ListSERV uses a global
  638. banfile to determine whether a request should be processed or not. This
  639. file has the same format as the local banfile described earlier, but it
  640. is located in `ListSERV:Banned'.
  641.  
  642.    If a from address matches one of the patterns listed in this file,
  643. the mail will be junked immediately. No command will be processed, no
  644. reply will be sent. I use this file to prevent mail loops:
  645.  
  646.      (#?-daemon#?|#?listserv#?)
  647.  
  648. This entry will drop any mail comming from a mail daemon -- usually a
  649. bounce -- or from another ListSERV.
  650.  
  651. Encrypted mailing lists
  652. ***********************
  653.  
  654.    Encrypted mailing lists can be required for several purposes. For
  655. discussing strictly private topics, for development of commercial
  656. software, etc... ListSERV supports encrypted mailing list's using the
  657. well-known "Pretty Good Privacy" (PGP) package. ListSERV should work
  658. with any PGP version higher than 2.2. Earlier version do not work
  659. because they were not able to encrypt a message for multiple receivers.
  660.  
  661.    *Attention:* Although encrypted mailing lists are _very_ secure,
  662. they're no absolutely secure. ListSERV is designed to work with little
  663. or no user interaction and no system that is working automatically can
  664. be really secure. Accessing your secret ring with PGP requires you to
  665. enter a password to unlock it. Unfortunately, most people do not sit in
  666. front of their computers 24 hours a day, thus you have to save the
  667. password somewhere where PGP can access it -- namely in the PGPPASS
  668. environment variable. Thus, everybody who is able to access your
  669. machine (your brother, the FBI/CIA/NSA, etc...) is able to sift through
  670. your mail traffic.
  671.  
  672.    Of course this doesn't really matter in 99% of the cases, because
  673. the FBI rarely breaks into houses to find out how far your commercial
  674. GUI builder is, but if you're trying to destroy the American society or
  675. to contact the Mafia via e-mail, you should consider this.
  676.  
  677.    Before you read on, you should check out the PGP manual. Better yet,
  678. use it a few weeks before you really try to set the list up. PGP is not
  679. what I call trivial and you should know the terms before you provide a
  680. sensible service as an encrypted mailing list. If you know PGP, read on.
  681.  
  682. Creating an encrypted mailing list
  683. ==================================
  684.  
  685.    The basic idea of the encrypted mailing list is to create a key for
  686. your machine. Maybe calling it "Mailing lists <peti.GUN.de>" or
  687. whatever you like. Then append an additional Key-ID for every encrypted
  688. mailing list you run on your system. This will make it easier for the
  689. posters using utilities like PGPSendmail. The password you use to
  690. unlock the secret part of your key *must* be set in the environment
  691. variable PGPPASS (Please refer to the PGP documentation for further
  692. details!) to make sure ListSERV can decrypt the incoming mails. Now
  693. collect the public keys of your subscribers and send them a copy of
  694. your machine key in return. Make sure all public keys are authenticated
  695. correctly. PGP will be run in batchmode and every key that is not
  696. trusted will be rejected automatically.
  697.  
  698.    Now create a directory named `secretgroups' in your `ListSERV:'
  699. directory and furthermore create a subdirectory of the name of your
  700. list, just the like in the normal directory path. The directory
  701. "secretgroups" is invisible to the ListSERV daemon. Thus, it isn't
  702. listed with the INDEX command, nobody can subscribe automatically, etc.
  703. Most people won't even know that the mailing list exists.
  704.  
  705.    Secret mailing list's need no Introduction, Description and FAQ file,
  706. because ListSERV can't access them anyway. All you need is the `List'
  707. file and `Signature' is you want one. The `Log' will be created as
  708. usual.
  709.  
  710. Now that the directory is set up, add the usual aliases to your alias
  711. file:
  712.  
  713.      <listname>:: "|ListSERV:s/SendSecureMailingList <listname>"
  714.      <listname>-error:: listserv-manager
  715.      <listname>-admin:: listserv-manager
  716.  
  717.    Please take note that we use a different script for posting now.
  718. Also, the <listname-request> alias is not necessary anymore.
  719.  
  720.    The SendSecureMailingList will use the PGPMore tool included in the
  721. PGP distribution to decrypt the incoming mail. Please make sure PGPMore
  722. is available in your command path. Then it will process the mail, copy
  723. it into the archive, append the signature and send it out via
  724. EncListMail.  (1) EncListMail is pretty much the same as the ordinary
  725. ListMail, except for that it will encrypt the mail for the recipients
  726. before it sends it out. It is necessary, that all subscribers have
  727. stated the address they're subscribed under in their key-id. Otherwise
  728. PGP won't be able to determine which key to use.
  729.  
  730.    As you can see, this process has quite a number of stages: The
  731. script, pgpmore, pgp, EncListMail, EncRMail, PGP and rmail. I used pipes
  732. wherever possible to make the whole thing as fast as possible. (It
  733. would probably run *very* fast on a multi-processor system, but...)
  734. Nevertheless, it might be a good idea, to make the programs resident.
  735. This will speed the whole process up significantly.
  736.  
  737. Common problems
  738. ===============
  739.  
  740. Here is a short checklist you can go through in case the encrypted
  741. mailing lists does not work as expected:
  742.  
  743.    - Have you set the password to unlock the list's secret key in the
  744.      PGPPASS variable or do you hand it to PGP in some other way?
  745.  
  746.    - Is the password you set in PGPPASS correct? Is it really the
  747.      required one for your list's key?
  748.  
  749.    - Is PGPMore available in your command path?
  750.  
  751.    - Are the addresses of the subscribers really listed in their key?
  752.  
  753.    - Does PGP accept the keys as trusted? (You should try this by simply
  754.      encrypting a short text for all subscribers manually. PGP will
  755.      tell you if it doesn't accept one of the keys.)
  756.  
  757.    - Do you have enough memory available?
  758.  
  759.    - Do you have a PGP version 2.2 or greater? (I recommend 2.3a.3 or
  760.      higher, by the way!)
  761.  
  762.    ---------- Footnotes ----------
  763.  
  764.    (1)  If you don't like the mail beeing logged unencrypted, just
  765. change the order of commands in the script.
  766.  
  767. The author
  768. **********
  769.  
  770. If you want to contact me (e-mail preferred), you may use the following
  771. addresses:
  772.  
  773. SnailMail:
  774.      Peter Simons, Europaring 20, 53123 Bonn, Germany
  775.  
  776. Voice:
  777.      +49 228 746061
  778.  
  779. E-Mail:
  780.      simons@peti.GUN.de
  781.  
  782. About the author
  783. ================
  784.  
  785.    Congratulations! Amongst the 12.42% of software users who actually
  786. bother to read the documentation, you are one of the brightest as you
  787. have apparently chosen to read the hidden gem in it: The section "About
  788. The Author".
  789.  
  790.    Disclaimer(1): Although this has not been written by Peter Simons
  791. himself, it is not necessarily more objectively than it would have been
  792. if he did it himself.
  793.  
  794.    As a first approximation to the author, let us have a look at a text
  795. he wrote about himself in a list of systems in his home domain. (It may
  796. be of interest to some that his self-description has been 4.46 times as
  797. long as the actual technical data of his site.)
  798.  
  799.      I (Peter Simons) was born on Sep 4th 1973 as child of a plain
  800.      supermodel and a nobel price winner and I had a very nice
  801.      childhood, although it has always been some kind of nuisance to me
  802.      that the people used to overlook my really notable IQ because of my
  803.      extraordinarily handsome appearance.
  804.  
  805.    Note for the reader: I have not known Peter as a child, but you may
  806. approximate his look of today by imagining a friendly ice bear with a
  807. full beard. (Still a very handsome ice bear, as his girl-friend would
  808. probably remark, if she bothered about "all that computer stuff" like
  809. this text.)
  810.  
  811.    Although Peter is not really a computer freak - ListSERV probably
  812. owes its existence to the boring breaks between playing and watching
  813. basketball, meeting girls, going to parties, watching M*A*S*H, etc. -
  814. the adoption of his nickname "Peti" as site name for his A3000 homebox
  815. (peti.GUN.de) symbolizes the fusion of man and machine to a system of
  816. high productivity. Furthermore, the natural environment of Peter is
  817. best-suited for computer people: The stationer's shop near his home is
  818. the only one I know offering Amigas, Amiga literature and Fish disks
  819. just as natural as the more mundane things a stationer sells.
  820.  
  821. <abrupt and unreasonable break>
  822.  
  823.    This "About The Author" section is shareware. If you want to know how
  824. it ends or if you have moulded an opinion about Peter Simons utilizing
  825. the information provided herein, send me all your money.
  826.  
  827.                 Arno Eigenwillig <arno@yaps.dinoco.de>
  828.  
  829.    ---------- Footnotes ----------
  830.  
  831.    (1)  What documentation can get along without disclaimer nowadays?
  832.  
  833. Acknowledgments
  834. ***************
  835.  
  836.    Amiga ListSERV is a "grown project" and many people contributed in
  837. one or the other way. Nevertheless, I'd like to single a few persons
  838. out for their help and support:
  839.  
  840. Brett Wuth
  841.      For contributing the MailListFilter script that saved me a *lot*
  842.      of time and effort.
  843.  
  844. Kai 'wusel' Siering
  845.      The basic structure of my mailing list package has been adopted
  846.      from Kai's private ListSERV.
  847.  
  848. Carlos Amezaga
  849.      Thanks Carlos, you have been my most constant beta tester and I
  850.      wonder how many bugs ListSERV would still have if you hadn't used
  851.      my software. Additionally, thanks a lot for proofreading my manual.
  852.  
  853. Arno Eigenwillig
  854.      Thanks a lot for the "About the Author" section. :-)
  855.  
  856. Ralph-Thomas Aussem
  857.      Thanks for the wonderful AmigaSMail, it works like a charm.
  858.      (Especially after you corrected the bug with my pipes. :->)
  859.  
  860.