home *** CD-ROM | disk | FTP | other *** search
/ ftp.xmission.com / 2014.06.ftp.xmission.com.tar / ftp.xmission.com / pub / lists / gather / archive / gather.9601 next >
Internet Message Format  |  1996-02-03  |  37KB

  1. From: Sithonnas Vivax <s0btrose@cabell.vcu.edu>
  2. Subject: Airfare and Hotels
  3. Date: 31 Jan 1996 2:36:38 EST
  4.  
  5. Hiyas everyone...
  6.    I started my airline comparison and found that depending on where
  7. one was flying from costs appeared to differ drastically... in order
  8. for me to make this research worthwile what I need is for those folks
  9. who are going to be using, or considering, flying as their method of
  10. travel to let me know where they would be flying from... this will
  11. allow me to get a true idea of costs... 
  12.   Also... if we can try and finalize a date first it would probably
  13. be a good idea.. this would allow us to start talking it up to people
  14. in order to get a rough idea of how many people might actually come
  15. (something needed to talk to the hotels about group rates, etc)
  16. Thanks,
  17.  
  18.  
  19. -------------------------------------------------------------------------------
  20.  
  21. From: FireMyst <dragon@xmission.com>
  22. Subject: Returned mail: User unknown (fwd)
  23. Date: 31 Jan 1996 16:25:11 -0700 (MST)
  24.  
  25.   This message is in MIME format.  The first part should be readable text,
  26.   while the remaining parts are likely unreadable without MIME-aware tools.
  27.   Send mail to mime@docserver.cac.washington.edu for more info.
  28.  
  29. --MAB14082.823117821/xmission.xmission.com
  30. Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
  31. Content-ID: <Pine.SOL.3.91.960131162219.29398F@xmission>
  32.  
  33.     Ok, if I did this right, there is an attachment with the original 
  34. message.  It failed for the following reason:
  35.  
  36. > Dual "To:" addresses could cause a problem since it parses the message to
  37. > address the list.  There is no xmlistadmin-outgoing address anymore, so 
  38. > thus, you got the error message.
  39.  
  40. So watch this when fowarding ;)
  41.  
  42. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  43. .    -FireMyst       .       "He never said the word 'Dragon'        .
  44. .                       .        to himself.  Nor would it have         .
  45. .   <dragon@dal.net>    .       made things any better if he had."      .
  46. . <dragon@xmission.com> . -C.S Lewis "The Voyage of the 'Dawn Treader'" .
  47. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  48. .   Try DALnet: The friendly IRC network! /server dragon.dal.net 7000   .
  49. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  50. --MAB14082.823117821/xmission.xmission.com
  51. Content-Type: MESSAGE/DELIVERY-STATUS
  52. Content-ID: <Pine.SOL.3.91.960131162219.29398G@xmission>
  53.  
  54. Reporting-MTA: dns; xmission.xmission.com
  55. Arrival-Date: Wed, 31 Jan 1996 12:50:20 -0700 (MST)
  56.  
  57. Final-Recipient: RFC822; listmaster@xmission.xmission.com
  58. Action: failed
  59. Status: 5.1.1
  60. Last-Attempt-Date: Wed, 31 Jan 1996 12:50:21 -0700 (MST)
  61.  
  62. --MAB14082.823117821/xmission.xmission.com
  63. Content-Type: MESSAGE/RFC822
  64. Content-ID: <Pine.SOL.3.91.960131162219.29398H@xmission>
  65.  
  66. Return-Path: gather-request@xmission.com
  67. Received: (from slist@localhost) by xmission.xmission.com (8.7.1/8.7.1) id MAA14082 for listmaster@xmission.com; Wed, 31 Jan 1996 12:50:20 -0700 (MST)
  68. X-From_: dragon  Wed Jan 31 12:39:33 1996
  69. Received: (from dragon@localhost) by xmission.xmission.com (8.7.1/8.7.1) id MAA10034; Wed, 31 Jan 1996 12:39:32 -0700 (MST)
  70. Old-Date: Wed, 31 Jan 1996 12:39:29 -0700 (MST)
  71. Message-ID: <Pine.SOL.3.91.960131123111.24097O-100000@xmission>
  72. MIME-Version: 1.0
  73. Content-Type: TEXT/PLAIN; charset=US-ASCII
  74. X-Diagnostic: Unprocessed
  75. X-Envelope-To: gather
  76. X-Diagnostic: Maintainer dragon@xmission.com could not be reached
  77.  
  78.     XMission has changed mailing lists from majordomo to SmartList.  I
  79. have appended the SmartList manual to this mail after my sig.  Standard
  80. apologies etc.. 
  81.  
  82. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  83. .    -FireMyst       .       "He never said the word 'Dragon'        .
  84. .                       .        to himself.  Nor would it have         .
  85. .   <dragon@dal.net>    .       made things any better if he had."      .
  86. . <dragon@xmission.com> . -C.S Lewis "The Voyage of the 'Dawn Treader'" .
  87. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  88. .   Try DALnet: The friendly IRC network! /server dragon.dal.net 7000   .
  89. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
  90.  
  91.  
  92.  
  93.         SmartList mailinglist management
  94.         --------------------------------
  95.         1. Creating and removing mailinglists or archive servers
  96.         2. Remote maintenance of mailinglists
  97.         3. Customisation
  98.         3a.Digest processing
  99.         3b.Restricting subscriptions
  100.         3c.Restricting submissions
  101.         3d.Auto subscription on first submission
  102.         3e.Autosending files to new subscribers
  103.         3f.Moderated lists
  104.         3g.List of lists
  105.         3h.Positively discriminate certain daemons
  106.         3i.Default help text replies
  107.         3j.Unsubscribe assistance
  108.         3k.Exploding other (non-SmartList) lists
  109.         3l.Schematic overview of what goes on behind the scenes
  110.         4. The archive server
  111.         4a.Sending files to the archive server
  112.         4b.Restricting access to the archive server
  113.         5. The format of the dist file
  114.         6. Multigram and the thresholds in rc.init/rc.custom
  115.         7. Choplist & sendmail
  116.         8. FTP addresses & the SmartList mailinglist
  117.  
  118. $Id: Manual,v 1.49 1995/10/30 02:09:09 srb Exp $
  119.  
  120.  
  121. 1. Creating and removing mailinglists or archive servers
  122.    -----------------------------------------------------
  123.  
  124. Make sure that the .bin directory is in your PATH.  Now you can issue
  125. commands like:
  126.  
  127.     createlist testing
  128.     createlist testing joe@somewhere.edu
  129.     createlist -a testing joe@somewhere.edu
  130.     removelist testing
  131.  
  132. The first command creates a mailinglist with two useful addresses:
  133.  
  134.     testing
  135.     testing-request
  136.  
  137. The second command does the same, but it also specifies joe@somewhere.edu
  138. to be the responsible contact person for this list.
  139.  
  140. The third command does the same, except instead of creating a mailinglist,
  141. it creates an archive server.
  142.  
  143. The fourth command removes all traces of the "testing" mailinglist again.
  144.  
  145. There are four other convenience-utilities that can be used:
  146.     led    A wrapper around your editor, should be used when instead
  147.         of calling up your editor directly whenever editing a
  148.         SmartList managed file.     It automatically takes care
  149.         of proper locking and does attribute checks.
  150.     delink
  151.         It will unlink a file from its hardlinked counterpart(s)
  152.         (without deleting it).
  153.     showlink
  154.         It will display what groups of files are linked together.
  155.     donatelist
  156.         It will put a list under complete and exclusive control
  157.         of the maintainer (a local user).  See below.
  158.  
  159. If you are running several lists maintained by separate maintainers, you
  160. can give a maintainer complete and sole control over his or her own list
  161. without the need for them to have user list or group list rights.
  162. For this to work, you simply have to "donatelist the_maintainer his_list"
  163. the whole tree that contains his list to him (her).  Make sure that the
  164. group id of all necessary files in the tree are still group-writable by
  165. "list", because that's the access privilege the mailinglist will be running
  166. under.
  167.  
  168. The maintainer has to be careful to use an umask of 007 while editing in
  169. his mailinglist directory.  This allows the mailinglist-programs to function
  170. while still limiting access to all mailinglist files to *one* person only
  171. (the maintainer).
  172.  
  173.  
  174. 2. Remote maintenance of mailinglists
  175.    ----------------------------------
  176.  
  177. To facilitate remote maintenance of some mailinglists by their maintainers
  178. I have created the .bin/x_command script.  It parses mails sent to the
  179. -request address and can execute some administrative commands.
  180.  
  181. The mail should be sent to the -request address of a mailinglist and
  182. should contain a field in the header looking like this:
  183.  
  184. X-Command: joe@somewhere.edu password command
  185.  
  186. "command" can be anything of the following:
  187.  
  188.     subscribe mailaddress
  189.     unsubscribe mailaddress
  190.     checkdist mailaddress        To multigram-match mailaddress to
  191.                     the list (showing the eight best
  192.                     matches)
  193.     showdist            To list the distfile
  194.     showlog                To list the log
  195.     wipelog                To clear the log
  196.     help                To show this command summary
  197.     info                Ditto
  198.  
  199. The exact fieldname defaults to "X-Command", but can be customised to
  200. whatever you want.
  201.  
  202. The password defaults to "password", but can/should be changed.
  203.  
  204. The "joe@somewhere.edu" is always the mail address of the maintainer.  Note
  205. that this has to match what was specified on the command line of
  206. "createlist" when the list was created.
  207.  
  208. Note that the X-Command: field has to be part of the header, when it's
  209. in the body of the mail, it has no effect.
  210.  
  211. Anytime an X-Command: mail has been processed, the results will be
  212. mailed back to the maintainer of the list, and the X-Command: field
  213. will have been renamed to X-Processed:.
  214.  
  215. Although this remote-facility is convenient, some might argue that it
  216. presents a security hole.  Well, in order to make this hole as small as
  217. possible, you can keep the password secret.  Also, the exact mailaddress
  218. of the maintainer might not be publicly known.    You can simply change
  219. the X-Command field into something else like X-MyCommand.  Above all, since
  220. faking mail is a well known possibility it would be ridiculous to take
  221. more precautions than these.  Besides, if someone indeed manages to sneak in
  222. a bogus X-Command:, it will never go unnoticed since the mailing list
  223. maintainer (and only the maintainer) will always receive the X-Processed:
  224. mail.
  225.  
  226. For your convenience, a sample script "doxcommand" is present in the
  227. SmartList/examples directory.  It can be used to easily generate these
  228. X-Command mails.  Do remember to read-protect this script once the password
  229. has been changed.
  230.  
  231.  
  232. 3. Customisation
  233.    -------------
  234.  
  235. The mailinglists can be customised in several ways:
  236.  
  237. - For all the lists:
  238.     - Since all the lists initially share the same help.txt, subscribe.txt,
  239.       unsubscribe.txt, rc.init, rc.submit and rc.request files
  240.       (hardlinked), any change to them will affect all lists.
  241.     - Since all the lists have the .bin directory in their PATH, any
  242.       change to one of the Bourne shell scripts in there will affect
  243.       them all.
  244. - Per list:
  245.     - Every list directory contains an "rc.custom" rcfile which can
  246.       be edited to your hearts content to customise certain parameters
  247.       for this list only.
  248.     - Small local customisations can be realised by uncommenting one
  249.       or more of the RC_LOCAL_* assignments in rc.custom.
  250.       You then have to create the appropriate rc.local* file in which
  251.       you can put any commands you'd like (e.g. adding a general signature
  252.       or disclaimer to every outgoing submission).
  253.     - For graver customisation you can remove the hardlink (using
  254.       .bin/delink for example) to any of the files in a list directory and
  255.       provide that list with its own copy in order to edit that to taste.
  256.     - Since the current directory is in the PATH before the .bin
  257.       directory you can create per-list copies of any of the Bourne shell
  258.       scripts in .bin which can then be changed without affecting the
  259.       other lists.
  260. - Per group of lists:
  261.     - The same applies as when customising per list, but you should
  262.       then hardlink the appropriate files among the group of list
  263.       directories.
  264.  
  265. By default the scripts create and use hardlinks in various places.  You are
  266. completely free to change some or all into symbolic links instead (or
  267. substitute "ln" with "ln -s" in some scripts).
  268. Some editors have a habit of moving the file you were editing to a backup
  269. name and writing out a new copy in its place.  This can cause problems if
  270. the editor is unaware of the symbolic or hard links in place.  You should
  271. make sure that the editor is aware of the link and preserves it, even after
  272. the file has been edited (for people using emacs: try setting
  273. backup-by-copying-when-linked to true).
  274. By using the "led" script instead of calling your editor directly you
  275. will be timely warned of anything your editor broke.
  276.  
  277. If you are not using the remote-maintenance facility and you start editing
  278. or customising scripts/files by hand, then you should make sure that there
  279. doesn't arrive any mail to those lists that are affected by your changes.
  280. The best way to do this is by using the command "led" whenever you want
  281. to edit a SmartList governed file.  Led will take care of all the necessary
  282. locking for any file, led can also be used to edit non-SmartList files.
  283.  
  284. If you don't use "led" but still would like to put incoming mails on hold
  285. temporarily, then you can do this:
  286.  
  287. - for all the lists by creating the file:    .etc/rc.lock
  288. - only for one list by creating the file:    rc.lock
  289.   in the list directory of that list.
  290.  
  291. The .bin/flist command checks to see if these rc.lock files exist AND are
  292. not older than 17 minutes before delivering the mail.  So, if you create
  293. an rc.lock file, mails to that (or all) lists will stall for the next
  294. 17 minutes.  If you need more time, touch the file every so often.
  295. You should remove the rc.lock files again after finishing your editing.
  296.  
  297. If you would like to change the -dist alias (used to distribute the
  298. mail to the subscribers) into something less well known, go right ahead,
  299. but remember to change the corresponding assignment to listdist.  For
  300. completeness sake one should also correct the createlist and removelist
  301. scripts in that case.  If you are using choplist to expand the dist-file,
  302. then you don't even need a -dist alias at all.
  303.  
  304.  
  305. 3a.Digest processing
  306.    -----------------
  307.  
  308. You can configure a list to send out digests of accumulated submissions.
  309. In order to do so, simply uncomment the appropriate assignment to
  310. digest_flag in rc.init (if you want all lists to be digested) or rc.custom
  311. (if you only want this list to be digested).  Digests are then sent out
  312. every so often depending on size and age of the accumulated messages.
  313.  
  314. The conditions for sending out a digest are checked during the arrival
  315. of every submission.  If, however, traffic on the list sometimes is very low
  316. (i.e. less often than the maximum age of a digest) a digest could be laying
  317. around for longer than the specified maximum period (3 days by default).
  318.  
  319. In order to make sure that the digest gets sent out anyway, you should be
  320. running the .bin/cronlist program every so often.  The recommended
  321. procedure is to create a cron job (under the list account) that contains
  322. something like the following entry:
  323.  
  324. 0 6 * * * /usr/local/lib/slist/.bin/cronlist
  325.  
  326. The cronlist script can be customised to taste (maybe you'll need to
  327. adjust the setting of the PATH variable).
  328. Beware: call cronlist with an absolute or relative path, do not rely on
  329. PATH to find it for you (cronlist uses $0 to find the location of the
  330. lists it is responsible for).
  331.  
  332. By default, cronlist will run the flush_digests program.
  333. By using the above listed crontab entry, you will ensure that at six o'clock
  334. in the morning all the overdue digests will be sent out.
  335.  
  336. Flush_digests normally checks the age of the digest and does not send it
  337. out until it is overdue.  If you want to force flush_digests to send out
  338. a digest of a particular list, you can create the file ".digest.force" in
  339. that list's directory.    During the next run of flush_digests, it will
  340. remove .digest.force and push out the digest (if any) regardless of its age.
  341.  
  342. If you create a file named digest.admin in either the main directory of
  343. the digested list or in the archive/latest directory belonging to it, it
  344. will be picked up by the next flush_digests and included up front to the
  345. actual digest under the heading "Administrivia".
  346. The archive/latest/digest.admin file digested list will be automatically
  347. removed after the digest has been pushed out.
  348. The digest.admin file in the main directory of the digested list will not be
  349. removed and is included in every digest.
  350.  
  351. If you want to give your subscribers the choice of receiving digests or not.
  352. This is what you can do:
  353.  
  354.     Create two lists.  E.g. if your list would be called "thelist", then
  355.     you have the `real' list called "thelist" (created and used like
  356.     a regular list) and the `digested' list called "thelist-d".
  357.  
  358.     In the distfile of thelist you should include thelist-d as one of
  359.     the subscribers.  In the rc.custom file of thelist-d you should
  360.     edit the assignment to undigested_list to read
  361.     "undigested_list =    thelist@$domain".
  362.  
  363.     After you've done this, you're all set.     People that want digests
  364.     simply subscribe to thelist-d and people that don't, subscribe to
  365.     thelist.
  366.  
  367.  
  368. 3b.Restricting subscriptions
  369.    -------------------------
  370.  
  371. There are three ways in which you can restrict who can subscribe to a list:
  372. - You can put the addresses of unwanted subscribers on the so-called reject-
  373.   list (the `reject'-file).
  374. - You can create a program (e.g. a shell script) called "subscreen".  It must
  375.   be executable and will receive the mail address of the prospective subscriber
  376.   as the first argument.  If subscription for that address is allowed, the
  377.   program must return with exitcode zero.  If subscription is disallowed,
  378.   simply return with exitcode one.  A sample program is provided in the
  379.   examples directory.
  380. - You can completely disable automatic subscription by uncommenting the
  381.   appropriate "auto_subscribe" line in rc.custom.
  382. - You can completely disable automatic unsubscription by uncommenting the
  383.   appropriate "auto_unsubscribe" line in rc.custom.
  384.  
  385.  
  386. 3c.Restricting submissions
  387.    -----------------------
  388.  
  389. You can restrict submissions to people on the accept-list (the `accept'-file).
  390. Mail from anyone else will be passed on to the maintainer instead of being
  391. submitted.  To enable this you have to uncomment the appropriate
  392. "foreign_submit" line in rc.custom.  By default the accept file is hardlinked
  393. to the dist file (i.e. if submissions are restricted, only subscribers
  394. can do so).  If you want to allow only an even more select group, delink the
  395. accept file and edit it to taste.  If you'd like to have both the dynamic
  396. accept file and a static one, create a new file "accept2", it will be
  397. searched in addition to the regular accept file.
  398.  
  399. Beware that using an accept file is incompatible with having an owner- alias
  400. for this list (procmail administered lists do not need the owner- alias
  401. anyway, so if you've never heard of such a thing, ignore this warning).
  402.  
  403. If, in addition to notifying the maintainer you want an automated reply
  404. to be generated to the submitter which was not in the accept file, then you
  405. can accomplish this by simply creating an accept.txt file.  Its contents
  406. will (like the contents of the help.txt file) be returned to the submitter.
  407.  
  408. This feature is not the same as a moderated list, the two features can be
  409. used accumulatively.
  410.  
  411. On a related note, SmartList, by default, tries to identify administrative
  412. requests that got mailed to the submission address instead of the -request
  413. address and diverts them to the -request address.  If for some reason this
  414. is undesirable, you can uncomment the appropriate "divertcheck" variable
  415. assignment in rc.custom to disable this feature.
  416.  
  417.  
  418. 3d.Auto subscription on first submission
  419.    -------------------------------------
  420.  
  421. Instead of rejecting submissions by people not on the accept (dist) list,
  422. you can enable "force_subscribe".  This will cause people submitting
  423. mails to the list to be autosubscribed to the list if they were not in the
  424. dist file.
  425.  
  426.  
  427. 3e.Autosending files to new subscribers
  428.    ------------------------------------
  429.  
  430. You can create a file named "subscribe.files".    It can contain any
  431. number of archive-server commands.  The results (i.e. the files requested)
  432. will be sent to the new subscriber.
  433.  
  434.  
  435. 3f.Moderated lists
  436.    ---------------
  437.  
  438. First create a file named "moderators", it should contain the fully
  439. qualified mail addresses of all the moderators for this list (i.e. just
  440. local usernames are not sufficient, at least include an @host or host! ).
  441. Then uncomment the appropriate "moderated_flag" line in rc.custom.
  442.  
  443. >From then on all mail that does not contain an
  444. "Approved: the_address_of_one_of_the_moderators" field is forwarded to
  445. all the moderators.
  446.  
  447. One of the moderators should then resend the mail to the list after adding
  448. an "Approved: his_own_address" field to the header (and possible editing
  449. the contents of the mail).  It will be no problem if several moderators
  450. resubmit the same submission concurrently, since the mailinglist will
  451. filter out duplicates anyway (i.e. only the first one will go out and
  452. be archived).
  453.  
  454.  
  455. 3g.List of lists
  456.    -------------
  457.  
  458. If you want people to be able to get an overview of which lists are
  459. publicly available at your site, you can have your listmaintainers create
  460. a file called "info.txt" in their respective list directory.  This info.txt
  461. file should contain a short description of the purpose and main topic of
  462. this particular list.
  463.  
  464. You can then setup a command like examples/gatherinfo in crontab to collect
  465. all these various info.txt files once a day.
  466.  
  467. The thus gathered info.txt files can be placed in a directory which can
  468. be accessed by a gopher or ftp server, or, you can put them into the
  469. archive directory of a procmail-managed mail-archive server (e.g. under
  470. the mail-alias "metalist").
  471.  
  472.  
  473. 3h.Positively discriminate certain daemons
  474.    ---------------------------------------
  475.  
  476. SmartList usually does not accept submissions or subscriptions from daemons.
  477. If you'd like to make an exception for some, you can do this by tuning
  478. the daemon_bias variable.  A sample template can be found in the rc.init
  479. file.  This variable can of course be set in the rc.init, rc.custom or
  480. rc.local files.     Instead of directly specifying a weight and a regexp, you
  481. can just specify a weight.  You'll then have to make sure that the variable
  482. is set only when mail from your special daemons arrives.
  483.  
  484. Beware that if you change this for a list that has a digested shadowlist,
  485. you change it for the digested version as well.
  486.  
  487.  
  488. 3i.Default help text replies
  489.    -------------------------
  490.  
  491. By uncommenting the appropriate "auto_help" line in the rc.custom file the
  492. list will respond to every undecipherable request message as if it requested
  493. help.  Messages that will still get through to the maintainer are those:
  494. - that seem to come from a daemon.
  495. - which look like a reply.
  496.  
  497. Depending on the typical audience you have on the list, enabling this might
  498. not be a good idea.
  499.  
  500.  
  501. 3j.Unsubscribe assistance
  502.    ----------------------
  503.  
  504. By uncommenting the appropriate "unsub_assist" line in the rc.custom file
  505. you can turn on the unsubscribe assistance.  If the someone is trying to
  506. unsubscribe from the list, but his mailaddress could not be found, he
  507. will receive back a number of multigram matches (determined by the value
  508. of unsub_assist) between his unsubscribe message and the dist file.
  509.  
  510. If you'd like to enable this feature, please keep the following points
  511. in mind:
  512. - People can get excerpts of the dist file this way.
  513. - Malevolent individuals might become encouraged to unsubscribe lots
  514.   of people from your list.  This will not go by unnoticed, of course.
  515.   It will be logged and the innocent subscribers will receive a copy
  516.   of the unsubscribe request they didn't send.    Nevertheless, it can cause
  517.   considerable inconvenience.
  518.  
  519.  
  520. 3k.Exploding other (non-SmartList) lists
  521.    -------------------------------------
  522.  
  523. A SmartList list can easily be used to function as a local exploder for
  524. a larger mailinglist.  The advantages over using a regular alias are
  525. threefold:
  526. - (Un)subscription is handled automatically.
  527. - Bounce messages go to the local exploder list (instead of the larger
  528.   mailinglist which really is not interested in your mail problems with
  529.   some local aliases).
  530. - Misdirected administrative requests are filtered out of the regular
  531.   submission channel.
  532.  
  533. If the larger mailinglist you are exploding locally is a SmartList list
  534. as well, then there are no special precautions to take at all.
  535. If the larger mailinglist is not managed by SmartList, misdirected
  536. administrative requests will be caught *and* handled by the local list;
  537. if this "handling" turns out to be a problem you can turn it off
  538. by uncommenting the appropriate "pass_diverts" variable in rc.custom
  539. (this will cause misdirected administrative requests to be caught but
  540. then passed on to the maintainer verbatim).
  541.  
  542.  
  543. 3m.Schematic overview of what goes on behind the scenes
  544.    ----------------------------------------------------
  545.  
  546. Suppose you have two entries in the aliases file, one for thelist@domain
  547. and one for thelist-request@domain.
  548.  
  549. Whenever mail arrives for either address, the following happens:
  550.     - flist is started suid root with thelist as its argument
  551.         - changes its current directory to that of the (internally
  552.           hardcoded) main list directory
  553.         - changes its uid and gid to that of the (internally
  554.           hardcoded) list account
  555.         - changes its current directory to that of thelist
  556.         - waits until both ../.etc/rc.lock and rc.lock are gone or
  557.           are old enough (17 minutes)
  558.  
  559. Then, if it was a regular submission to thelist@domain:
  560.     - flist execs procmail with rcfile rc.submit
  561.         - pulls in rc.init that sets up the defaults
  562.         - pulls in rc.custom that overrides some defaults (if any)
  563.         - checks the submission format
  564.             - if needed it now checks:
  565.                 - the accept list
  566.                 - the moderators list (Approved:)
  567.             - checks the msgid cache for duplicate submissions
  568.             - if needed does digest processing (and stop)
  569.         - archives the mail
  570.         - munges the header of the mail to taste
  571.         - fires off sendmail to send the mail to thelist-dist@domain
  572.     - If the mail was an administrative request, it does not get
  573.       passed on to the list, instead, procmail pulls in rc.request
  574.  
  575. But, if it was an administrative mail for thelist-request@domain:
  576.     - flist execs procmail with rcfile rc.request
  577.         - pulls in rc.init that sets up the defaults
  578.         - pulls in rc.custom that overrides some defaults (if any)
  579.         - performs the necessary actions, depending on the content
  580.         - if the content was undecipherable, it gets passed on to
  581.           the maintainer of thelist
  582.  
  583. If there are grave system failures during all this, the catch-all script
  584. rc.post will kick in and make sure that the mail is stashed away somewhere
  585. or forwarded to the maintainer, whatever works.     This to ensure that no
  586. mail gets lost.
  587.  
  588.  
  589. 4. The archive server
  590.    ------------------
  591.  
  592. All mail (except mail being forwarded from another mailinglist) sent to any
  593. of the lists is archived.  The archiving is fairly straightforward.
  594. E.g. if you have a list called "scuba", then all submissions are archived
  595. in scuba/archive/latest/.  The mails will be stored one-mail-per-file each.
  596. The files will be numbered.
  597.  
  598. Now, normally, only the last two mails will be kept around, the others
  599. are periodically removed.  This in order to keep down the archiving costs
  600. for people with limited diskspace.  To change the size of the archive-history
  601. edit the rc.custom file.  To get more sophisticated archiving, like grouping
  602. submissions monthly, you should either create a cron job or edit the
  603. .bin/arch_trunc file.
  604.  
  605. The archive server can be accessed per mailinglist by sending mail
  606. to the -request address with the following Subject:
  607.  
  608.     Subject: archive
  609.  
  610. The body of the mail or the rest of the subject line can then be
  611. filed with requests to the archive server.  It basically understands
  612. five commands:
  613.  
  614.     get file ...
  615.     ls directory ...
  616.     egrep case_insensitive_regular_expression file ...
  617.     maxfiles nnn
  618.     help
  619.  
  620. The archive server does a thorough check on the commands and the files
  621. that are requested.  This to ensure that it does not access any files
  622. outside the "scuba/archive" directory.    Any text-file that you put in
  623. the "scuba/archive" directory (or any of its subdirectories) can now be
  624. retrieved by the archive commands.
  625.  
  626. If a file requested via the archive server starts with a header that begins
  627. with `Content-Type:', then the file is sent out as is, without encapsulation.
  628. This allows you to prepare the files in special formats that are directly
  629. supported by the recipient's mailuser agent.  The leading Content-Type: and
  630. any immediately following fields will become part of the header.
  631.  
  632. All other files are MIME-encapsulated before transmission.  You should take
  633. a look at /usr/local/lib/slist/.bin/mimencap.local if you want to extend or
  634. customise the recognised file types.
  635.  
  636. The MIME-encapsulation is automatic and depends on the availability of the
  637. metamail package in the PATH defined in rc.init.  The programs from this
  638. package which need to be available are: mimencode and splitmail.
  639. If mimencode is not found on the PATH, the files will be sent out with a
  640. standard wrapper around them.
  641.  
  642. You can switch from MIME-encoding to uuencoding by applying the
  643. appropriate patch from .examples/uuencode.dif.
  644.  
  645. If you put links in the "scuba/archive" tree, you can allow the archive
  646. server to retrieve files from other parts of the filesystem.
  647.  
  648. The whole archive server can be found in the .bin/arch_retrieve script.
  649. The archive server can be extended with arbitrary commands via the
  650. examples/retrieve.local script that comes with the distribution.
  651.  
  652.  
  653. 4a.Sending files to the archive server
  654.    -----------------------------------
  655.  
  656. The archive server as installed with SmartList does not directly support
  657. the receipt and storage of files.
  658. What you can do is look in the at the rcfile script .examples/putfile.
  659. It provides you with all you'd need to receive and store files.
  660.  
  661.  
  662. 4b.Restricting access to the archive server
  663.    ----------------------------------------
  664.  
  665. You can restrict archive access to people on the accept-lists
  666. (the `accept' and `accept2'-file).  Mail from anyone else will be passed on
  667. to the maintainer instead of being passed to the archive server.  To enable
  668. this you have to uncomment the appropriate "restrict_archive" line in
  669. rc.custom.
  670.  
  671.  
  672. 5. The format of the dist file
  673.    ---------------------------
  674.  
  675. You do not need to know this, unless you edit the dist file by hand or want
  676. to incorporate an existing list of addresses.
  677.  
  678. In order to distribute incoming submissions the dist file is fed to sendmail
  679. with the regular :include: alias.  So the format of this file must
  680. be in accordance with what sendmail would expect.  In addition to that
  681. this file is searched and edited by multigram in order to find particular
  682. subscribers.  The format which multigram expects is a bit more rigid than
  683. what sendmail allows.
  684.  
  685. The following conditions apply:
  686. - One subscriber per line.
  687. - Empty lines are allowed.
  688. - The mail address of the subscriber must be the first word on the line.
  689. - Comments may follow the address (but separated from the address by
  690.   at least one whitespace character).
  691. - Everything preceding the line containing:
  692.     (Only addresses below this line can be automatically removed)
  693.   is write protected from changes by multigram (i.e. these addresses can
  694.   never be automatically/accidentally unsubscribed).
  695. - If the line:
  696.     (Only addresses below this line can be automatically removed)
  697.   is not present at all, automatic unsubscriptions to this list are impossible.
  698. - Whenever multigram automatically removes an address from the list, it
  699.   rewrites the dist file `in situ'.  This means that the dist file will be
  700.   contracted at that point, any excess slack at the end will be overwritten
  701.   by newlines (i.e. the dist file never shrinks, this because ANSI-C does not
  702.   provide a truncate() command of some kind).  I choose to write in situ in
  703.   order to avoid copying the dist file every time it changes (a real life
  704.   saver if the list grows too big).
  705. - Multigram always adds new subscribers on the line immediately following the
  706.   last filled entry in the dist file.
  707.  
  708. Some sample entries (the preferred format):
  709.     joe@some.where
  710.     joe@some.where (some comment)
  711.     joe@some.where (some comment) (some more comments)
  712.  
  713. Depreciated, but allowed:
  714.     <joe@some.where>
  715.     <joe@some.where> some comment
  716.     <joe@some.where> (some comment)
  717.  
  718. Not allowed by multigram (although sendmail doesn't mind):
  719.     (some comment) joe@some.where
  720.     some comment <joe@some.where>
  721.  
  722.  
  723. 6. Multigram and the thresholds in rc.init/rc.custom
  724.    -------------------------------------------------
  725.  
  726. The rc.init and rc.custom scripts define some threshold values:
  727.  
  728.     match_threshold, off_threshold, reject_threshold, submit_threshold.
  729.  
  730. These values are fed to multigram as a cut-off value with which to decide
  731. if a certain mail address is on a list.
  732. The higher the threshold, the better the match must be.     The thresholds
  733. have a scale from -16383 to 32766.  This means that, for instance a threshold
  734. of 30730 can be used to find only mailaddresses that are almost verbatim
  735. on the list.  A value of 24476 on the other hand allows for some error
  736. (like mailaddresses munged by gateways etc.) in finding matches to the
  737. list.
  738.  
  739. The values 30730 and 24476 are somewhat arbitrary values which seem
  740. to work well for the particular problems at hand.
  741.  
  742. To get a feeling for the values computed by multigram you can do
  743. the following test:
  744.  
  745.     Create a file with the same format as the distfile, fill it with
  746.     any number of addresses you like (e.g. you could take an existing
  747.     distfile).
  748.     Now make a copy of this `distfile' and alter some of the addresses
  749.     a bit (like omit one character, or add some gateway information,
  750.     switch two words, change it into an uucp address, etc.).
  751.     Next you should call up multigram with the following command line:
  752.  
  753.         multigram -l-16000 -b300 pseudo_distfile <altered_distfile
  754.  
  755.     Multigram will display up the 300 best matches it found after
  756.     crossreferencing altered_distfile and pseudo_distfile.
  757.     The output produced by multigram can be disected as follows:
  758.  
  759.         lineno. name1 goodness name2
  760.  
  761.     Lineno. and name1 refer to the line number in pseudo_distfile which
  762.     contains the mailaddress name1.     Goodness is the metric that
  763.     corresponds to the aforementioned threshold values, and name2 is
  764.     the matching mailaddress from altered_distfile (which is usually
  765.     the incoming mail).
  766.  
  767.     Once you get the hang of it you can play around a bit with the
  768.     entries in altered_distfile by mutilating them more and more in
  769.     order to see what multigram makes of it (try inserting some non-
  770.     existing addresses as well).
  771.  
  772.  
  773. 7. Choplist & sendmail
  774.    -------------------
  775.  
  776. There are two ways of distributing the message to the addresses listed
  777. in the dist file: either directly through sendmail and the :include:
  778. alias expansion, or indirectly, through choplist which does the
  779. expansion itself and calls up sendmail on suitable chunks.
  780.  
  781. By default, choplist takes care of the expansion, uncomment the appropriate
  782. alt_sendmail environment variable in rc.init to revert to standard sendmail
  783. expansion.
  784.  
  785. Choplist tries to make sure that even for big lists, the alias expansion
  786. goes as swiftly as possible and several sendmails will be delivering the
  787. mail to the subscribers concurrently.  The various limits that can be
  788. imposed on this process can be tuned in the rc.init file.
  789.  
  790. Most sendmails will do a worse job without choplist as a preprocessor.
  791.  
  792. A side effect of using choplist as a preprocessor is that there is no need for
  793. a -dist alias anymore.
  794.  
  795.  
  796. 8. FTP addresses & the SmartList mailinglist
  797.    -----------------------------------------
  798.  
  799. A recent version can be picked up at various comp.sources.misc archives.
  800. The latest version can be obtained directly from the ftp-archive at:
  801.  
  802.     ftp.informatik.rwth-aachen.de
  803.  
  804. as (g)zipped tar file:       /pub/packages/procmail/SmartList.tar.gz
  805. as compressed tar file:       /pub/packages/procmail/SmartList.tar.Z
  806.  
  807. There exists a dedicated mailinglist for SmartList users, send your
  808. subscription requests to:
  809.  
  810.         SmartList-request@informatik.rwth-aachen.de
  811.  
  812. For procmail related questions not specific to the SmartList package
  813. you can also write to the procmail mailinglist, send your subscription
  814. requests to:
  815.  
  816.         procmail-request@informatik.rwth-aachen.de
  817.  
  818. There is a readonly announcement list to stay informed about new versions
  819. and official patches of both procmail & SmartList, send your subscription
  820. requests to:
  821.  
  822.         procmail-announce-request@informatik.rwth-aachen.de
  823.  
  824.  
  825. --MAB14082.823117821/xmission.xmission.com--
  826.  
  827.  
  828. -------------------------------------------------------------------------------
  829.  
  830. From: Barry <barry@laser.net>
  831. Subject: a few things...
  832. Date: 30 Jan 1996 20:23:03 -0500 (EST)
  833.  
  834. Just wanted to fill everyone in on a few possibilities I explored today:
  835.  
  836. I called my father's travel agent and inquired about airfare rates to 
  837. washington dulles as opposed to those to richmond's byrd field.  She told 
  838. me that while the airline rates are only a little higher to richmond than 
  839. to dulles the airlines usually have a lot of special promotions to 
  840. dulles.  It may be something that everyone wants to check with their own 
  841. travel agents about...
  842.  
  843. I dropped by the brand new hyatt in fair lakes virginia (if you are 
  844. looking at a map it is halfway between fairfax and centerville).  This 
  845. is a new hotel in a new area that is being developed.  THis may be a 
  846. slightly more upscale type of place than many were thinking about, but 
  847. the hotel is apparantly not doing too well in that area and the assistant 
  848. manager assured me that he'd be able to cut us some sort of deal, 
  849. although he was reluctant to give me any exact figures.  This hotel does 
  850. have courtesy busses both to and from dulles airport and the metro.
  851.  
  852. Just some mental fodder for you to chew on... We'll probably have to wait 
  853. to see how things pan out before being able to get any more definate info...
  854.  
  855. Barry J. Bocaner
  856. <barry@laser.net>
  857.  
  858.  
  859.