home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Magazine 1997 January / CD_shareware_1-97.iso / DOS / COMUNICA / L32B5.ZIP / LISTSERV.DOC < prev    next >
Encoding:
Text File  |  1996-06-21  |  58.2 KB  |  1,307 lines

  1.  
  2. Listserv v2.92 (06/21/96) - by Pete Nelson
  3. Terminal One BBS (510) 689-9528
  4. Author: pete@terminal-one.com
  5.  
  6.  
  7. Listserv is a wcCODE application that will let you run Internet
  8. mailing lists from your Wildcat BBS.  Listserv can run several types
  9. of mailing lists, can automatically handle subscription or
  10. unsubscription requests, can store and send out an archive of messages
  11. on the list and comes with Listutil for easy management of your
  12. mailing lists and does a bunch of other really cool stuff.
  13.  
  14.  
  15.  
  16. * What is a listserv? *
  17.  
  18. A listserv is a program that runs mailing lists on Internet. People
  19. send e-mail to the listserv address, and the listserv program sends
  20. that e-mail out to the other subscribers.  The Listserv .WCX works in
  21. the same manner. People send e-mail to the address you set up, and
  22. when you run the Listserv program, it sends out the messages to the
  23. subscribers.  Listserv will only send and receive messages in the
  24. conference you specify in the configuration file, which must be your
  25. conference for Internet e-mail.  Do not set up a conference in
  26. Makewild or wcGATE for your mailing list.  From what I can tell, it
  27. won't work.  wcGATE was only written to handle incoming messages from
  28. a mailing list, and wasn't designed to host one.  If MSI is smart,
  29. they'll add this feature to wcGATE so I won't have to work on Listserv
  30. anymore, although it is kinda fun!  :)
  31.  
  32.  
  33.  
  34. * Installation *
  35.  
  36. Listserv can be run as an event, but can also be set up as a menu
  37. choice for the sysop to run at his/her discretion.  You need to copy
  38. the following files into your main Wildcat directory:
  39.  
  40.  
  41. LISTSERV.WCX - Compiled Listserv program.  Set this up as a menu
  42. option for the sysop or as an event.  This is the program that checks
  43. and processes your Internet mailing lists.
  44.  
  45.  
  46. LISTUTIL.WCX - Utility to let to add/view/remove mailing lists, and to
  47. add/drop/view subscribers to those lists.  Run this only as a menu
  48. option.
  49.  
  50.  
  51. LISTSERV.CFG - Contains configuration info needed by Listserv. Put the
  52. conference number on the first line.  Put the path where the Listserv
  53. files resides.  All files should be in this directory except for the
  54. LISTSERV.WCX, LISTUTIL.WCX and LISTSERV.CFG.  Your LISTSERV.CFG should
  55. be in the main Wildcat directory.  Example of LISTSERV.CFG:
  56.  
  57. 11
  58. C:\WILDCAT\LISTDATA\
  59. Y
  60. Y
  61. Y
  62.  
  63. ------------
  64. Line 1 is the number of the Internet E-Mail Conference
  65. Line 2 is the path to the Listserv files, include the trailing backslash!
  66. Line 3 is Y or N - Should Listserv dump skipped messages to a file?
  67. Line 4 is Y or N - Should Listserv send the .HLP file for messages
  68.                    addressed to listserv@ that it can not process?
  69. Line 5 is Y or N - Should Listserv filter any "To:" information out of
  70.                    the first five lines of each outgoing message
  71.  
  72. If you answer Yes to line 3, Listserv will dump a copy of any message
  73. that is skipped to a file called LISTSERV.DMP.  This will let you
  74. review any messages that are getting passed over during processing.
  75. Messages that get dumped would be:
  76.  
  77.   A) Someone trying to post and is not allowed (List types 2, 4 or 6)
  78.   B) An address that matched in the LISTSERV.SKP file
  79.  
  80. This is a good way to find out if messages are bouncing due to an
  81. unknown address or domain name.
  82.  
  83. If you answer Yes to line 4, Listserv will reply back with the .HLP
  84. custom help message when it can not process a message addressed to
  85. listserv@.  This would happen if an unknown mailing list name was used
  86. when trying to subscribe, or if some other unknown command is put in
  87. the message body.
  88.  
  89.  
  90. LISTSERV.PTR - Stores the high message pointer for your Internet
  91. E-Mail conference, default is 0.  Be SURE to change this number when
  92. you first install or when you renumber your Internet e-mail database,
  93. as it could drastically affect your mailing list.  If this file does
  94. not exist, create it and put the number zero on the first line.  When
  95. you first install it, whatever number you out in there is the first
  96. message that Listserv will process.  If you have thousands of messages
  97. in your e-mail conference, Listserv will have to process those the
  98. first time it runs.  It's a good idea to put the high message number
  99. of your e-mail conference instead of 0.
  100.  
  101.  
  102. LISTSERV.DAT - Stores info on all the mailing lists you host.  This
  103. will not be present in the ZIP file.  It will be created when you make
  104. your first mailing list.
  105.  
  106.  
  107. LISTSERV.FLT - Filter file:  This file, if it exists, can be used to
  108. filter out certain lines on outgoing messages.  It should contain the
  109. exact text of the line you want filtered out.  This file need only
  110. exist if you have problems with messages looping back to your mailing
  111. list address or wcGATE is not exporting messages that are sent out by
  112. your mailing lists.  Example:
  113.  
  114. To: wildcat-l@terminal-one.com
  115. To: aliens-l@terminal-one.com
  116.  
  117. With the v4.10 upgrade of Wildcat, wcGATE will not export messages
  118. addressed to your own domain.  Since incoming messages for the mailing
  119. list have a 'To: listname@domain.com' in the header, that is sent back
  120. out on the messages for the mailing list.  wcGATE sees that and thinks
  121. it's for your domain and won't export it.  If you have problems with
  122. wcGATE not exporting messages, try putting the exact 'To:' line from
  123. the header in the LISTSERV.FLT file You may have to put a few
  124. different lines in there depending on any variations that would be in
  125. the header.  For example:
  126.  
  127. To: wildcat-l@terminal-one.com
  128. To: wildcat-l@terminal-one.com (Wildcat-L)
  129.  
  130. However, with v4.11, if wcGATE sees a message from your system that is
  131. addresses back to your system, it will strip out the domain name and
  132. send a copy back to your domain.  If you run into Listserv looping
  133. messages around, try putting that 'To: ' line in the filter file.
  134. This 'feature' of wcGATE can cause major problems.  Listserv should
  135. automatically filter these lines out, but I have encountered one
  136. system where it wasn't, so this file may be needed.
  137.  
  138.  
  139. LISTSERV.LOG - Listserv's log file.  This is added to every time
  140. Listserv runs.  It will give you some stats on the messages sent out
  141. and the messages that were skipped.  This will be stored in the main
  142. Wildcat directory.
  143.  
  144.  
  145. LISTSERV.HLP - Custom Help File.  If a message is sent to LISTSERV
  146. with a subject of 'HELP' or 'HELP is put on a line in the message
  147. body, this file will be sent back if it exists.  You can put anything
  148. you want in this file, such as a list of the mailing lists you host or
  149. commands that are used to subscribe to your mailing lists.
  150.  
  151.  
  152. LISTSERV.SKP - Skip File.  If your having problems with messages
  153. getting bounced back and forth between a mail daemon or postmaster and
  154. the Listserv program, put that mailing address in here.  Any messages
  155. that are addressed to a mailing list will be skipped if the From
  156. address is in this file.  When Listserv compares a line from the skip
  157. file and the From address of the message, it will do a 'contains'
  158. check, i.e., it will check the entire From address for the existence
  159. of that string.  Example:  If you put 'daemon' in the skip file,
  160. Listserv would skip messages from 'daemon-server' and 'mail-daemon',
  161. etc.  This file is optional.
  162.  
  163.  
  164.  
  165. * Creating a new Mailing List with Listutil *
  166.  
  167. Be sure to create the LISTSERV.CFG file first.  Also, please be aware
  168. that Listserv will only send and receive messages in one conference -
  169. your Internet E-Mail Conference.  It is not designed to support
  170. mailing lists in different conferences.  I only stress this because
  171. people often get confused about this.
  172.  
  173. The next thing you need to do is run Listutil and create your first
  174. mailing list.  Choose the option to Create a new Mailing List.
  175.  
  176. First it will ask you for the name of your mailing list.  Choose a
  177. name that is suited to your mailing list.  I run a Wildcat mailing
  178. list, so I called mine Wildcat-L.  Type in the name of your mailing
  179. list, minus your domain name.
  180.  
  181. It will then ask you for the file name to use.  Let me explain how the
  182. file naming works.  Suppose you ran a mailing list called WILDCAT-L,
  183. and the file name was WILDLIST.  Your file names for that mailing list
  184. would be:
  185.  
  186. WILDLIST.DAT - Subscriber list.  Binary file
  187. WILDLIST.ADD - Message sent to new subscribers. Text file
  188. WILDLIST.DRP - Message sent to people that unsubscribe.  Text file
  189. WILDLIST.SIG - Text Signature added to outgoing messages on the mailing list.
  190. WILDLIST.NOT - Message sent to people that try to post on the mailing
  191.                list when they're not a subscriber or they're not authorized
  192.                to post on that list or try to retrieve an archive of the
  193.                messages when they are not a subscribed.  Text file
  194. WILDLIST.CLS - Message sent on a closed list to users that try to subscribe
  195.                automatically.  Text file
  196. WILDLIST.LST - List of users authorized to post on the mailing list.  MUST
  197.                exist for type 5 and 6 mailing lists.  It does not affect
  198.                types 1 through 4.  Text file
  199. WILDLIST.OLD - List of all addresses that have unsubscribed from the mailing
  200.                list.  Text file
  201.  
  202.  
  203. Every file for that mailing list is based on the main file name.
  204. Listserv will automatically create the .DAT file for you when someone
  205. subscribes or when you add a subscriber.  The other files are standard
  206. text files you can create.  If the .ADD, .DRP, .NOT, .CLS  or .SIG
  207. files are not present, then that message or .SIG will not be sent.
  208.  
  209. Listserv supports six types of mailing lists:
  210.  
  211.      1) Automatic subscriptions, anyone can post
  212.      2) Automatic subscriptions, must subscribe to post
  213.      3) Must e-mail host to subscribe, anyone can post
  214.      4) Must e-mail host to subscribe, only subscribers can post
  215.      5) Automatic subscriptions, must be authorized to post
  216.      6) Must e-mail host to subscribe, must be authorized to post
  217.  
  218. For type 5 and 6 lists, you MUST create a .LST file.  This is an ASCII
  219. file, and on each line of the file you would list the addresses that
  220. are authorized to post on that list.  Example:
  221.  
  222. Pete Nelson
  223. John Doe
  224. pete@terminal-one.com
  225. president@whitehouse.gov
  226.  
  227.  
  228. A name without a domain name (Pete Nelson) would be your user name on
  229. the BBS. This way you can post locally to your own mailing list.  When
  230. you post locally to the mailing list, be sure to enter the listname
  231. without the domain name.
  232.  
  233. You will also be asked some other questions while creating a new
  234. mailing list. "Number of archived messages to store" allows you to
  235. define the number of messages Listserv holds on to for archive
  236. requests.  For example, if you entered '5', Listserv would save to
  237. disk the last five messages sent out on the mailing list.  If you
  238. enter '0', then no messages will be saved.
  239.  
  240. "Can non-subscribers request archived messages?"  Answer No to this if
  241. only subscribers can receive archived messages.  Also, this will send
  242. the ".NOT" file if a non-subscriber requests the archived messages.
  243. Answer Yes to this question if anyone can receive the archived
  244. messages.
  245.  
  246. "Should Listserv send a confirmation reply when a message gets
  247. posted?" Answer Yes to this if you want the sender to get a
  248. confirmation that their message was posted to the mailing list.
  249. Answer No if no confirmation is to be sent out.
  250.  
  251. "Should Listserv allow users to request a list of subscribers?"
  252. Answer Yes if you want to allow people to retrieve the current
  253. subscriber list for this mailing list.
  254.  
  255. "Can only subscribers to the list retrieve a list of subscribers?"
  256. Answer Yes if you only want subscribers to be able to retrieve the
  257. current subscriber list.  Answer No if anyone, including
  258. non-subscribers, can retrieve the current subscriber list.
  259.  
  260. "Should Listserv save all the addresses that unsubscribe?"  Answer Yes
  261. if you want the e-mail addresses of all the people that unsubscribe
  262. saved to a text file (.OLD).
  263.  
  264. "Use Sender's Name or List name on outgoing messages?"  Answer "S" to
  265. use the original sender's name in the from field on outgoing messages.
  266. Answer "L" to use the mailing list name.  For example, if the list is
  267. set to use the sender's name, a message may look like this when
  268. received:
  269.  
  270.   From: pete.nelson@terminal-one.com
  271.     To: john.doe@foo.bar.com
  272.   Subj: New Listserv
  273.  
  274. If it is set to use the list name, it may look like this:
  275.  
  276.   From: listserv-distrib@terminal-one.com
  277.     To: john.doe@foo.bar.com
  278.   Subj: New Listserv
  279.  
  280.  
  281. "Should Listserv include a subscriber count in confirmation replies?"
  282. Answer Yes to add one line to confirmation replies that lists the
  283. current number of subscribers.  Answer No if no subscriber count
  284. should be listed.
  285.  
  286.  
  287. You will also need to make a user account for each mailing list so
  288. incoming messages don't get bounced back.  Make sure this account has
  289. full access to your Internet e-mail conference.  Give the account name
  290. the same name as your mailing list, minus your domain name.  Example:
  291. If the mailing list address is WILDCAT-L@TERMINAL-ONE.COM, make a user
  292. called WILDCAT-L
  293.  
  294. Also, be sure to create an account for the LISTSERV@ address.  The
  295. easiest way to make these accounts is to do so through wcPRO or the
  296. User Database in the Sysop Menu.  Just add a user with the name of
  297. LISTSERV.
  298.  
  299.  
  300.  
  301. * Adding or Dropping subscribers manually *
  302.  
  303. Run Listutil, and choose the option to Add Subscribers or Drop
  304. Subscribers. Enter the name of the mailing list, then enter the
  305. address you wish to add or remove.  When dropping a subscriber, you
  306. can type in a partial name and Listutil will find a match on that
  307. name.  You will be asked to verify the address when adding and
  308. dropping subscribers.  Once they are added or dropped, you will also
  309. have the option of sending the .ADD or .DRP file if they exist.
  310.  
  311.  
  312.  
  313. * Removing a Mailing List *
  314.  
  315. Run Listutil and choose the option to Remove a Mailing List.  Enter
  316. the name of the mailing list you wish to remove.
  317.  
  318. *NOTE* When you Remove a Mailing List via Listutil, it does not delete
  319. the data files the list was using.  You need to delete the files
  320. manually if you remove a mailing list, otherwise the files remain in
  321. case you removed a list accidentally.
  322.  
  323.  
  324.  
  325. * Moderating a mailing list *
  326.  
  327. Listutil has a feature that will let you scan the message database for
  328. any unprocessed mailing list messages.  Listutil will check from the
  329. last time Listserv was ran.  It will check each message to see if its
  330. for the 'listserv' address or one of your mailing lists.  If it is, it
  331. will display a short message header and the message body.  You are
  332. then given an option to delete the message or go on to the next
  333. unprocessed message.  Hitting [ENTER] for the default answer will go
  334. on to the next message.  Once the message is deleted, Listserv will
  335. skip over that message when it runs. This is how you can moderate your
  336. mailing lists!
  337.  
  338.  
  339.  
  340. * Editing the custom mailing list messages *
  341.  
  342. Listutil has a feature that will let you edit the custom mailing list
  343. messages right from the BBS.  You can edit the .ADD, .DRP, .SIG, .NOT
  344. and .CLS files using the internal Wildcat full-screen editor.  It's a
  345. simple and easy!
  346.  
  347.  
  348.  
  349. * Subscribing/unsubscribing from the mailing lists. *
  350.  
  351. Users who wish to sign up to the mailing list should send e-mail to
  352. the list (ex: wildcat-l@terminal-one.com) and use for the subject
  353. either the word 'subscribe' or 'unsubscribe'.
  354.  
  355. Users may also send e-mail to listserv@domain.name.com (ex:
  356. listserv@terminal-one.com).  In the body of the message, they can put
  357. their subscription requests in as 'subscribe listname' or 'unsubscribe
  358. listname'.  When someone subscribes to the mailing list, they may add
  359. their real name after the mailing list name.  To unsubscribe, they
  360. would put 'unsubscribe listname' in the message body.  Be sure that
  361. the real name is not used here, as Listserv won't recognize it.
  362. Using the listserv@ address is the recommended way of adding or
  363. dropping from a mailing list.
  364.  
  365. Example of acceptable add/drop commands in the message body:
  366.  
  367.    subscribe wildcat-l
  368.    subscribe wildcat-l Pete Nelson
  369.    unsubscribe wildcat-l
  370.  
  371.  
  372. When someone unsubscribes from a mailing list, it will fill that
  373. address with "<BLANK>".  This makes it easy for any 3rd party
  374. developers to determine if a record has been used or is available.  If
  375. you are writing any programs that would remove a subscriber from a
  376. mailing list, fill sublist.name with "<BLANK>".
  377.  
  378.  
  379.  
  380. * Archiving Messages *
  381.  
  382. Listserv will keep an archive of up to a defined number of messages
  383. sent out on a mailing list.  This will be saved as the main list
  384. filename plus a number as an extension, starting at one, such as
  385. WILDLIST.1, WILDLIST.10, etc. The lowest numbered message will be the
  386. oldest (.1) and the highest numbered one will be the newest.  If you
  387. need to delete a message, keep the messages in a consistent numerical
  388. order, i.e. don't have it jump from '.4' to '.6'.
  389.  
  390. People can retrieve the archived messages by sending e-mail to the
  391. listserv@ address.  Put the words 'archive listname' in the message
  392. body.  Listserv will reply by sending out the archived messages to the
  393. requester.  If your list is set up so that only subscribers can
  394. request messages, the they must be a subscriber to the mailing list.
  395. If a request comes in from a non-subscriber, the will be sent the
  396. ".NOT" file as a reply.
  397.  
  398.  
  399.  
  400. * Retrieving Subscriber Lists from a Mailing List *
  401.  
  402. Subscribers on your mailing lists can retrieve a current list of
  403. subscribers if allowed.  Send e-mail to the listserv@ address, and put
  404. in the message body 'REVIEW LISTNAME'.  This will send that person
  405. back a list of subscribers with one address on each line.  If someone
  406. wanted a subscriber list for Wildcat-L, they would send e-mail to
  407. listserv@terminal-one.com and put 'REVIEW WILDCAT-L' in the message
  408. body.
  409.  
  410. If the list is set up to not allow review requests or that person is
  411. not a subscriber and the review command is only open to subscribers,
  412. then Listserv will send back the ".NOT" file as a reply.
  413.  
  414.  
  415.  
  416. * Purging Old Sent Messages *
  417.  
  418. Listutil has an option that will let you purge message sent by a
  419. mailing, which will help keep your e-mail conference free of old
  420. messages.  Choose option 'X' on the Listutil main menu.  It will
  421. prompt for the mailing list to purge messages for.  It will then
  422. prompt for the number of days old a message has to be before being
  423. purged.  For example, if you put '7' in here it would delete messages
  424. from that mailing list that were seven days old or older.
  425.  
  426. This will start at the first message in the conference and scan
  427. through all the messages in that conference.  Depending on how many
  428. messages are in your Internet E-Mail conference, this may be a short
  429. or lengthy process.  The other alternative would be to use wcPRO and
  430. set up an event to do the same kind of delete.
  431.  
  432.  
  433.  
  434. * Importing/Exporting Subscriber Lists *
  435.  
  436. Option 'U' in Listutil will take you to the Misc. Utilities Menu.
  437. From here, you can import or export a list of subscribers.  When
  438. importing a list, it should have one e-mail address per line.  You
  439. can also put the subscriber's real name after the e-mail address.
  440. If the e-mail address is for a local user or subscriber, put "<L>"
  441. in front of the name, followed by their user name on your BBS.
  442. When exporting, Listutil will create the same type of file.
  443. Importing Example:
  444.  
  445. president@whitehouse.gov Bill Clinton
  446. pnelson@value.net
  447. weasel@ccnet.com
  448. sysop@terminal-one.com Pete nelson
  449. john.doe@somewhere.org
  450. <L> Pete Nelson
  451. <L> Michele Long
  452.  
  453. Note: When you import local subscribers with <L>, Listutil will put
  454. their name as both the e-mail address and the real name
  455.  
  456.  
  457.  
  458. * Packing your Data Files *
  459.  
  460. The Pack function in Listutil will remove deleted record in your data
  461. files. Removing deleted records may help speed up the processing of
  462. your mailing lists.
  463.  
  464.  
  465.  
  466. * Using separate configuration files *
  467.  
  468. Listserv and Listutil allow you to specify the configuration file to
  469. use. The default is LISTSERV.CFG, and in most cases you would not need
  470. to specify a different configuration file.
  471.  
  472. However, say you had two or three users on your BBS that want to do
  473. the maintenance on your mailing list, but you don't want them to have
  474. access to each others mailing lists.  You can do this by passing a
  475. config file name to Listserv or Listutil when you run them.  This file
  476. is in the same format as LISTSERV.CFG, but you would specify a
  477. different directory to the data files. Listserv will use only the data
  478. files in that directory when running now. This way, each user does not
  479. have administrative access to the other mailing lists, and Listserv
  480. will not process messages for any of the other lists. Since it stores
  481. the message pointer file in each directory, processing one set of
  482. lists will not affect any other sets of lists. (Are you following me?)
  483.  
  484. One exception is the LISTSERV.HLP file.  Requesting this will send the
  485. LISTSERV.HLP in the data directory specified by the current config file.
  486.  
  487. To run Listserv or Listutil with a specific configuration file, set up
  488. an option in Makemenu to run a WCX, and put the config file name as
  489. well. Example:
  490.  
  491. LISTSERV.WCX LIST1.CFG
  492. LISTUTIL.WCX LIST1.CFG
  493. LISTSERV.WCX MYLIST.CFG
  494. LISTUTIL.WCX MYLIST.CFG
  495.  
  496. You can probably also create a wcCODE program and use the Run or Chain
  497. command to do this.  However, I was unable to get wcCODE to run the
  498. .WCX with a parameter.
  499.  
  500.  
  501.  
  502. * Special Info on using wcPACK *
  503.  
  504. Right now, Listserv uses the number stored in the pointer file to file
  505. to find the next message to check, but wcPACK can cause this to become
  506. incorrect.  I may try to add support so it checks the high message
  507. number for the current conference for the mailing list account
  508. (WILDCAT-L, for example).  That way the high message number will get
  509. updated when wcPACK does its high message number update.  So for now,
  510. if you want your mailing list to work correctly, don't use wcPACK on
  511. your Internet e-mail conference.  You may also want to check the high
  512. message pointers before you run Listserv.  I currently run it as an
  513. option on my sysop menu, and I always check things before I run it.
  514.  
  515. However, I've found that using wcPACK on the Internet e-mail
  516. conference generally does not cause problems when running with
  517. Listserv.  I would do some testing to be sure, and I always run wcPACK
  518. on my Internet e-mail conference manually.  As long as there is one
  519. message higher in the conference than the highest message number in
  520. Listserv pointer file, then you shouldn't run into problems.  Your
  521. mileage may vary.
  522.  
  523.  
  524.  
  525. * Bounced Messages *
  526.  
  527. One of the problems with running a mailing list is what to do with the
  528. bounced or rejected messages.  I had been adding support to have
  529. Listserv look for certain subjects (HOST UNKNOWN, WARNING FROM UUCP,
  530. UNDELIVERABLE). With the release of v2.03, Listserv can skip messages
  531. sent by non-subscribers. None of the Postmaster, UUCP, mail daemons or
  532. other automatic mail handlers on different hosts are usually signed up
  533. to a mailing list, therefore any returned messages from them are
  534. skipped, unless your mailing list allows anyone to post on it.
  535. However, if you have the .NOT file present, Listserv will reply back
  536. and you may get a message stuck in a loop.  Check the section on the
  537. LISTSERV.SKP file for ways to solve this.
  538.  
  539. If you also run into problems with Listserv looping messages back and
  540. forth on a mailing list, try putting the mailing list name (minus your
  541. domain) in the skip file.  This tells Listserv to skip any messages
  542. that are from the mailing list and that are addressed back to the
  543. mailing list.
  544.  
  545.  
  546.  
  547. * Overview of Listserv Commands *
  548.  
  549. Here is an overview of the commands that can be used when sending
  550. e-mail to your listserv@ address.  These are not case sensitive, and
  551. "list-name" should be replace with one of your mailing list names.
  552.  
  553.  
  554.   subscribe list-name Firstname Lastname
  555.     (Subscribe to a mailing list)
  556.  
  557.   unsubscribe list-name
  558.     (Unsubscribe from a mailing list)
  559.  
  560.   archive list-name
  561.     (Sends all archived messages)
  562.  
  563.   review list-name
  564.     (Sends a list of subscribers, if allowed)
  565.  
  566.   help
  567.     (Sends the LISTSERV.HLP file)
  568.  
  569.   lists
  570.     (Send the LISTSERV.LST file)
  571.  
  572.  
  573.  
  574. * SAMPLE.ZIP *
  575.  
  576. The SAMPLE.ZIP file contains three sample files; the filter file, the
  577. skip file and the config file.  These may help in getting your mailing
  578. lists operating.
  579.  
  580.  
  581.  
  582. * Listserv Data Records *
  583.  
  584. It occurred to me that I should post the records for the data
  585. structures so other coders out there can write utilities for Listserv
  586. if they needed to. Here they are, including remark lines so you may
  587. cut and paste:
  588.  
  589.  
  590. // This is the data type for the list of subscribers of each list
  591. // The "name" would be the e-mail addresses of the subscriber
  592. // The 'date_subscribed' added in v2.40 is the date that the address
  593. // subscribed to the mailing list.  Added on 6-9-95
  594. // real_name is the real name of the subscriber.  Added in v2.80
  595.  
  596. type sublist_rec
  597.      name as string*70
  598.      date_subscribed as date
  599.      real_name as string*30
  600. end type
  601.  
  602. // This is the data type for the master list of mailing lists
  603. // found in LISTSERV.DAT.  The 'name' would be the name of the mailing
  604. // list address (ex: wildcat-l).  The 'subfile' would be the set of
  605. // data files used by that mailing list (ex: WILDLIST.DAT, WILDLIST.SIG,
  606. // WILDLIST.ADD, etc)
  607. // The 'type' would be the list type, specified as 1 through 6.  This was
  608. // added with the v2.20 release on 2-8-95
  609. // The 'max_archive', 'send_nonsub_archive' and 'send_confirm' were added
  610. // with the v2.30 release on 4-10-95
  611. // 'max_archive' is an integer from 0 to 999, number of archived messages
  612. // to store.
  613. // 'send_nonsub_archive' is either "Y" or "N"  Used to determine if
  614. // non-subscribers can get archived messages.  Yes if they can, No if not.
  615. // 'send_confirm' is either "Y" or "N".  Yes if a confirmation reply is sent
  616. // when someone posts a message, No if not.
  617. // 'review_allow' is either "Y" or "N".  Sets whether or not this list
  618. // allows retrieval of subscriber lists
  619. // 'review_must_subscribe' is either "Y" or "N".  Sets whether or not
  620. // someone must be a subscriber to retrieve the current subscriber list
  621. // 'save_unsubscribers' is either "Y" or "N".  Sets whether or not any
  622. // addresses that unsubscribe get saved to the .OLD file.
  623. // 'messages_sent' stores the number of messages sent by this list
  624. // Note: this only counts normal list traffic, and does not count add/drop
  625. // requests, etc.
  626. // 'message_count_start_date' stores the date this lists started to keep
  627. // track of the messages sent
  628. // 'add_count_to_confirm' is either "Y" or "N".  Sets whether or not
  629. // a current subscriber count gets added to confirmation messages
  630. // 'subscriber_or_list_name' is either "S" or "L".  Sets whether outgoing
  631. // messages on a mailing list use the list name or the original sender
  632. // in the "From:" field
  633. //
  634.  
  635. type list_record
  636.      name as string*70
  637.      subfile as string*8
  638.      type as integer
  639.      send_nonsub_archive as string*1
  640.      send_confirm as string*1
  641.      review_allow as string*1
  642.      review_must_subscribe as string*1
  643.      save_unsubscribers as string*1
  644.      messages_sent as long
  645.      message_count_start_date as date
  646.      add_count_to_confirm as string*1
  647.      subscriber_or_list_name as string*1
  648. end type
  649.  
  650. // End of data types for Listserv
  651.  
  652.  
  653.  
  654. * Listserv and Wildcat Mailing lists *
  655.  
  656. I run a Listserv mailing list, and I suggest you sign up for this.
  657. I use that mailing list to send out the new versions of Listserv.
  658. Sign up using 'subscribe listserv-distrib' in the message body.
  659. We also host some other mailing lists.  E-mail
  660. listserv@terminal-one.com and puit the word 'help" in the message
  661. body.
  662.  
  663. If there is anything missing in the docs, please tell me!  Writing
  664. documentation is not my strong point, and if I'm leaving something out
  665. then I'd like to get it added.
  666.  
  667.  
  668.  
  669. * Where to get Listserv *
  670.  
  671. The latest versions of Listserv should be available at the following
  672. locations:
  673.  
  674. BBS:  Terminal One  (510) 689-9528
  675.       MSI HQ        (805) 873-2400
  676. WWW:  http://www.ecis.com/~weasel
  677.  
  678. Or sign up for the Listserv-Distrib mailing list and you will always
  679. get the latest version!
  680.  
  681. You can e-mail me at pete.nelson@terminal-one.com or
  682. weasel@ecis.com.
  683.  
  684. If this version of Listserv is older than a few weeks, chances are
  685. that there is a newer version.
  686.  
  687. All Listserv archives are compressed with PKZip and should uncompress
  688. with AV verification, # OQF192.  If the AV file has been tampered
  689. with, get an authentic version from one of the above sources. If all
  690. else fails, feel free to e-mail me and I'll send you the latest
  691. version as a message attachment.
  692.  
  693.  
  694.  
  695. * Registration *
  696.  
  697. Listserv is a free program and does not require payment.  However, I
  698. would like anyone that uses the program to register just so I know who
  699. is using it.
  700.  
  701. Registration is easy and free!  Run Listutil and choose 'E', then 'R'
  702. to register.  I will send you back a registration number.  Be sure to
  703. tell me what kind of mailing list(s) you run!
  704.  
  705. Once you have that number, make a file called "LISTSERV.KEY" in your
  706. main Wildcat directory, and put that number on the first line.  Next
  707. time you run Listserv or Listutil, you'll see that it's registered!
  708. (Yeah!!)
  709.  
  710. If you still feel compelled to pay me, you may do so.  Heck, I'm not
  711. going to turn down money when someone offers it!  :)  My mailing
  712. address is:
  713.  
  714.   Pete Nelson
  715.   1647 Willow Pass Rd. #225
  716.   Concord, CA  94520
  717.  
  718. I will also accept large amounts of Peach Iced Tea Snapple, Mountain
  719. Dew, Yoo-hoo, Lifesaver Lollipops (preferred), gift certificates for
  720. Outback Steakhouse or fully paid trips to BBS conventions.  Also, XXL,
  721. black, 100% cotton t-shirts will do, preferably Blackbird aviation
  722. shirts.
  723.  
  724. "ONE BBSCON will be in San Francisco at the Moscone Center..."
  725. Scratch that.  I won't be attending this year because:
  726.  
  727. 1)  The horrendous price, $295 if you sign up before May 1st.
  728.     Already too pricey for me, and it only goes up as it gets later in
  729.     the year.
  730.  
  731. 2)  It's no longer ONE BBSCON, it's ONE ISPCON.  While it's great that
  732.     they're gearing their focus towards ISPs, I'm not one and I'm not
  733.     planning on being one.  I run a BBS, and I'd rather go to a BBS
  734.     convention.
  735.  
  736. 3)  Mustang Software won't be there.  What fun would that be?
  737.  
  738. However, I will be at DefCon in Las Vegas this year.  July 26-28
  739. at the Monte Carlo.  Check their web page for more info.
  740. http://www.defcon.org
  741.  
  742.  
  743.  
  744. * Revision History *
  745.  
  746. v2.92 - (06/17/96) Fixed a bug where Listser was not checking the
  747.         Skip List on messages addressed to LISTSERV.
  748.       - Added a "LISTS" command to Listserv.  When Listserv sees that
  749.         command in the message body, it will send back the file
  750.         LISTSERV.LST in the message body.
  751.  
  752. v2.91 - (04/18/96) Made several changes in the log file reports.
  753.         It will now report the action that occured rather than just
  754.         saying it sent a message.  It will also report the message
  755.         numbers it processed.
  756.       - Added some extra debugging info to the dump file in case
  757.         I need it to solve a bug.
  758.  
  759. v2.90 - (04/03/96) Fixed a bug where some subscribers would get the
  760.         mailing list name used as their real name if they did not use
  761.         a real name when subscribing.  Check your recent subscribers to
  762.         see if the mailing list name as anyone's real name.
  763.  
  764. v2.89 - (03/18/96) When adding or editing a subscriber, you now have
  765.         the ability to send a custom message as well as the standard
  766.         new subscriber message.
  767.  
  768. v2.88 - (03/08/96) Fixed some bugs with the import subscribers
  769.         function in Listutil.
  770.  
  771. v2.87 - (02/28/96) Made importing of local subscribers work correctly.
  772.         When you have a list of subscribers, put "<L>" in front of
  773.         each e-mail address that is a local susbcriber on your system.
  774.         Example:
  775.            pete@terminal-one.com
  776.            weasel@ecis.com
  777.            <L> Pete Nelson
  778.            <L> John Doe
  779.            someone@somewhere.org
  780.         This way Listutil can tell that it is a local address and will
  781.         no longer try to put the first name as an e-mail address and
  782.         the last name as the real name.
  783.       - When Listutil exports a list of subscribers, it will now add
  784.         the "<L>" flag for local addresses.
  785.  
  786. v2.86 - (02/14/96) Made the "To:" filtering a configurable option.
  787.       - When adding, dropping or editing subscribers, you can now
  788.         search on real name as well as e-mail address.
  789.       - Added an option to send the .ADD message after you edit a
  790.         subscriber's record.
  791.  
  792. v2.85 - (02/13/96) Fixed a very serious bug introduced in v2.84 where
  793.         Listserv would only send the first five lines of the message.
  794.         My fault for not testing it well enough.
  795.  
  796. v2.84 - (02/12/96) Fixed a bug where the last subscriber in a list
  797.         would not get messages if the previous subscriber in the list
  798.         was blank.
  799.       - Fixed a bug where some addresses were not recognized as valid
  800.         subscribers.
  801.       - Listserv will now check the first five lines of a message and
  802.         remove any line that starts with "To:".  I don't forsee this
  803.         as a problem to most people, but it's always a possibility.
  804.  
  805. v2.83 - (01/31/96) Fixed a bug where if you had more than 32,767
  806.         messages, the Change Pointer option showed the wrong last
  807.         processed message number.
  808.       - When exporting a subscriber list, you can now also export
  809.         the subscriber's real name.
  810.       - Added a new option to the Subscriber Menu - Edit Subscriber
  811.         This will let you change the subscriber's e-mail address or
  812.         their real name.
  813.  
  814. v2.82 - (01/16/95) Added a new feature in Listutil that will let
  815.         you send out a certain number of archived messages from a
  816.         mailing list.  It prompts for the number of messages and an
  817.         e-mail address to send them to.  If you chose ten messages,
  818.         it would send out the last ten messages from the list.
  819.         This new option is on the Misc Utilities menu.
  820.       - When importing a subscriber list, you have the option to
  821.         either append to or overwrite the current list.
  822.  
  823. v2.81 - (01/08/95) Fixed a bug where Listserv was not recognizing
  824.         some subscription requests.
  825.       - When you add or import a mailing list, you can also add the
  826.         subscriber's real name.
  827.       - Reviewing the mailing list subscribers will include the real
  828.         name in the subscriber list.
  829.  
  830.  
  831. v2.80 - (01/05/96) Added a Real Name field to the subscribers list.
  832.         When subscribing to a mailing list via listserv@, put the
  833.         real name after the mailing list.  Ex:
  834.         subscribe wildcat-l Pete Nelson
  835.  
  836. v2.77 - (11/10/95) The Drop Subscriber function will stay in that
  837.         function until you hit Enter to exit it.
  838.       - When a local mailing list message is archived, message headers
  839.         will get added to the archived message.
  840.       - Added automatic filtering for those annoying "To:" lines on
  841.         outgoing messages.  Here's how it works:  If Listserv sees
  842.         "To:" at the beginning of the line and also sees the mailing
  843.         list name somewhere else in that line, then it gets filtered
  844.         out of the outgoing message.  Although the filter file will
  845.         still be checked, this should cover all instances.
  846.       - Fixed an Assertion Failed: Gosub Overflow error when Listserv
  847.         received several Help message requests.
  848.       - When e-mailing the author from Listutil, it will set the From
  849.         address to the sysop name in Makewild.  Previously, it was
  850.         using the current user's name, and would not work correctly
  851.         when running Listutil from the command line.
  852.         (ex: Wildcat /r listutil.wcx)
  853.       - Fixed a bug where a list that needed a .LST file and did not
  854.         have one would cause an error in Listserv when a message was
  855.         received for that list.
  856.  
  857. v2.76 - (10/31/95) Fixed a bug where the Delete Message function in
  858.         Listutil would not return to the conference that was selected
  859.         at startup.
  860.  
  861. v2.75 - (10/24/95) Fixed the missing options to edit Listserv files
  862.         and custom mailing list messages.
  863.       - When adding subscribers, you no longer need to choose the
  864.         mailing list name for each subscriber.  Listutil will
  865.         continue to add subscribers to the same mailing list until
  866.         you exit that list.
  867.       - When searching for subscribers, you can continue to search
  868.         without having to re-enter the search function.
  869.  
  870. v2.74 - (10/20/95) When importing a subscriber list, you have the
  871.         option of sending the .ADD message (if present) to the
  872.         addresses that are imported.
  873.       - Did a major clean-up of the Listutil Main Menu.  All functions
  874.         are grouped in the appropriate sub-menu now.
  875.       - The Registration option no longer lets you edit your BBS name
  876.         as it appears in MakeWild.
  877.  
  878. v2.73 - (10/09/95) Fixed some minor bugs when trying to perform
  879.         operations in Listutil when you had no mailing lists or no
  880.         subscribers.
  881.       - Changed the time statement in the confirmation messages and
  882.         the log file.
  883.       - Log file no longer records 0 message activity if no activity
  884.         takes place when Listserv does it's processing.
  885.  
  886. v2.72 - (10/02/95) Changed the search subscribers and drop subscribers
  887.         function.  When searching or dropping, it no longer asks for a
  888.         mailing list name.  It will instead search all of your mailing
  889.         lists for a match.  I'm glad this was suggested to me, as I
  890.         like it better than the previous search & drop routines.
  891.       - Changed the Rebuild Data Files function to a Pack Function,
  892.         which is a more accurate term.  Running this will now pack all
  893.         data files in one sweep.  All this does is remove deleted
  894.         entries from the LISTSERV.DAT file and the .DAT subscriber
  895.         files.
  896.       - This time, I really did fix the subscriber count bug!
  897.  
  898. v2.71 - (09/29/95) Fixed the bug where the subscriber counts in the
  899.         confirmation requests were not getting reset for each message.
  900.  
  901. v2.70 - (09/26/95) Outgoing messages can show the From field as
  902.         either the message sender's name or mailing list name,
  903.         configurable via Listutil.
  904.       - Current subscriber count can be added to the confirmation
  905.         replies, configurable via Listutil.
  906.  
  907. v2.63 - (09/18/95) Fixed a bug where sending the LISTSERV.HLP file
  908.         from Listutil would add it to the current conference rather
  909.         than the e-mail conference.
  910.         - Added a message counter to the Purge function in Listutil.
  911.  
  912. v2.62 - (09/11/95) Fixed a bug where archive requests for an invalid
  913.         list name were going through as a valid list name.
  914.  
  915. v2.61 - (09/08/95) Recompiled with v4.10.  My fault - I installed 4.11
  916.         on our network and the path statement was changed to access
  917.         the BBS, which also caused me to be using v4.11 of the
  918.         compiler.  Sorry!
  919.  
  920. v2.60 - (09/07/95) When either an invalid list name or unknown command
  921.         is sent to the listserv@ address, it will respond with the
  922.         LISTSERV.HLP file; configurable in LISTSERV.CFG.
  923.       - You can now send the LISTSERV.HLP file directly from Listutil,
  924.         under the Miscellaneous Utilities option.
  925.       - Listserv will now keep count of the messages sent.  It only
  926.         counts normal traffic that is sent out to all subscribers and
  927.         does not count add/drop requests, etc.
  928.       - Listserv can now save to a text file all e-mail addresses that
  929.         unsubscribe from your mailing lists; sysop configurable via
  930.         Listutil.
  931.       - Added the pause prompt to the "View Mailing List" option in
  932.         Listutil.
  933.       - Made a slight change to the message counter while Listserv
  934.         is running.
  935.       - Added a message counter to the Moderate command in Listutil.
  936.       - Hitting Escape while running the Moderate command in
  937.         Listutil will stop the message scanning.
  938.  
  939. v2.53 - (08/25/95) Added a message counter that is displayed when
  940.         Listserv is scanning the e-mail conference.
  941.       - Added support for different configuration files.  This is only
  942.         needed if you plan to have different people operate different
  943.         lists and don't want them to access each others mailing lists.
  944.         See documentation above for more information.
  945.       - Listserv will check for the LISTSERV.PTR before running.
  946.         Previously, it would exit out with a system error if it did
  947.         not exist.
  948.  
  949. v2.52 - (07/31/95) Accidentally compiled with v4.11.  Recompiled with
  950.         v4.10.
  951.  
  952. v2.51 - (07/29/95) Added the ability to edit the mailing list
  953.         parameters in Listutil.  If you need to change something, you
  954.         no longer have to remove and recreate the mailing list.
  955.       - Retrieving the Listserv Help file can be done now by putting
  956.         'HELP' in the message body.  Previously, you had to put it as
  957.         the subject.
  958.  
  959. v2.50 - (07/24/95) Added the ability for users to retrieve current
  960.         subscriber lists for your mailing lists.  To retrieve a
  961.         subscriber list, send e-mail to the listserv@ address, and put
  962.         'REVIEW LISTNAME' in the message body.
  963.  
  964. v2.48 - (07/19/95) Added Import/Export capability for subscriber lists
  965.         to Listutil.
  966.       - Fixed a bug that would cause Listserv requests that were
  967.         preceded by spaces to be ignored.
  968.       - Changed the way Listserv and Listutil did screen updates.
  969.         Previously, I was using the 'Delay' command to pause for a
  970.         moment in order to make screen displays smooth.  I changed all
  971.         Delay commands to the UpdateScreen command.  It still displays
  972.         smooth, but operates much faster now.
  973.  
  974. v2.47 - (07/13/95) Hopefully fixed the problem with messages looping
  975.         back and forth to the mailing list.  Here's the fix; if the
  976.         message is addressed to a mailing list, it will check the From
  977.         and To addresses.  If they match, then it will skip that
  978.         message. From what I can tell, there is probably a certain
  979.         order of messages that get processed that causes one message
  980.         to go back to the list. I haven't been able to duplicate the
  981.         problem, but this should fix.
  982.  
  983. v2.46 - (07/10/95) If set in the config file, Listserv will dump any
  984.         skipped messages to a dump file.  This file will be called
  985.         LISTSERV.DMP, and will be saved in the same directory as all
  986.         the other Listserv files (the directory set in your config
  987.         file).
  988.       - Listutil will let you view or kill the Listserv dump file.
  989.       - Fixed a spelling error in the Purge Messages function in
  990.         Listutil.
  991.       - My sunburn is almost gone.
  992.  
  993. v2.45 - (07/06/95) Added a feature to Listutil that will let you purge
  994.         messages sent by a mailing list.
  995.       - I have a very bad sunburn.  Ouch!
  996.  
  997. v2.44 - (06/28/95) You can edit the other Listserv files (.HLP, .FLT,
  998.         .SKP) right from Listutil.
  999.       - You can view and delete the Listserv log file right from
  1000.         Listutil.
  1001.       - Fixed a small bug with some registration keys.
  1002.  
  1003. v2.43 - (06/19/95) Hitting Escape while Listserv is running will stop
  1004.         its processing.  Be aware that aborting the processing will
  1005.         not update the pointer file.
  1006.       - You can now edit the .LST from Listutil.
  1007.       - If you try to edit a .LST or .CLS file for a mailing list that
  1008.         does not use it, it will not let you edit the file.
  1009.       - You can e-mail me directly from Listutil to get your
  1010.         registration code.
  1011.       - The Listserv WCX compiled to exactly 14,400 bytes (14.4k).
  1012.         Weird!  :)
  1013.  
  1014. v2.42 - (06/14/95) Changed the registration key information.
  1015.       - Changed the way the LISTSERV.SKP file works.  Previously, it
  1016.         would check for an exact match between the each line in the
  1017.         file and the From address.  Now, it does a 'contains' match.
  1018.         Example:  If you put 'daemon' in the skip file, Listserv would
  1019.         skip any messages that came from 'mail-daemon',
  1020.         'daemon-server', etc.
  1021.  
  1022. v2.41 - (06/13/95) Added a function to edit the custom mailing list
  1023.         messages directly from Listutil.
  1024.       - When a subscriber is added/dropped manually, you have an
  1025.         option of sending the .ADD or .DRP file.
  1026.  
  1027. v2.40 - (06/09/95) Added support for a defined path for the Listserv
  1028.         files.  Helps keep your main Wildcat directory less cluttered.
  1029.       - Added a 'Date Subscribed' field in the mailing list subscriber
  1030.         file.
  1031.       - Any addresses that unsubscribe or get removed from a mailing
  1032.         list will fill that address with "<BLANK>".  Previously, it
  1033.         was storing a " " (space) for a blank address.  This should
  1034.         make it easier for any 3rd party programs to drop subscribers
  1035.         from a mailing list and to recognize blank fields.
  1036.       - Listutil: The 'Change Message Pointer' option will now display
  1037.         the number of the last message processed by Listserv and the
  1038.         high message number in the Internet E-Mail Conference.
  1039.  
  1040. v2.35 - (06/02/95) Fixed the spelling error in the Listserv tagline.
  1041.  
  1042. v2.34 - (05/16/95) I talked to Richard Bash at Combat Arms BBS last
  1043.         night, and he had a problem with messages getting compressed
  1044.         since the filter file had an extra carriage return at the end,
  1045.         so those carriage returns were getting filtered out of the
  1046.         message.  As I was explaining how to get around it, it
  1047.         occurred to me that it would be easier for Listserv to ignore
  1048.         the extra carriage returns at the end of the filter file.
  1049.         Now it does just that - ignores any blank lines or extra
  1050.         carriage returns at the end of the filter file.
  1051.  
  1052. v2.33 - (05/09/95) Added an optional LISTSERV.SKP file.  Any addresses
  1053.         in this text file will be skipped over by Listserv.  This
  1054.         should fix any problems with messages bouncing back and forth
  1055.         between Listserv and any mail daemons or postmasters.
  1056.  
  1057. v2.32 - (05/03/95) Fixed a bug that was causing messages to local
  1058.         users to have the wrong user ID.
  1059.       - Fixed a bug where the program would return to conference 0
  1060.         upon exit rather than the conference it had originally been
  1061.         started from.
  1062.  
  1063. v2.31 - (04/13/95) Removed a line of code I had added for debugging
  1064.         and forgot to remove (Confirm Y, Confirm N).  Oops!  :)
  1065.       - Listserv no longer skips over messages with blank subjects
  1066.  
  1067. v2.30 - (04/10/95) Made the following items sysop configurable:
  1068.          * Number of archived messages to save (0-999)
  1069.          * Sending of confirmation replies when messages are posted
  1070.          * Archive message requests can be restricted to subscribers
  1071.            only
  1072.  
  1073. v2.26 - (04/04/95) Fixed a rather boneheaded bug on my part where the
  1074.         archived messages were saved using the mailing list name
  1075.         rather than its main file name.
  1076.       - Fixed a bug in the outgoing addressing of archive requests
  1077.  
  1078. v2.25 - (04/04/95) Added support for archived message storage and
  1079.         retrieval. See the Archiving Messages section for more info.
  1080.       - Fixed a 'File Already Open' bug
  1081.       - Listutil: Added an option to e-mail the author.
  1082.         (Hey, that's me!)
  1083.  
  1084. v2.24 - (03/13/95) When a message is sent out on the mailing list,
  1085.         Listserv will send a confirmation message back to the author
  1086.         of the original message.  The format of the message is:
  1087.            Your message 'This is the subject' was sent out to
  1088.            LISTNAME on 03/13/95 at 01:45:23 pm.
  1089.       - When Listserv receives a message addressed to LISTSERV with a
  1090.         subject of 'help', it will send back a file called
  1091.         LISTSERV.HLP if it exists.  You can put anything in here that
  1092.         you want, such as a list of your mailing lists, how to
  1093.         subscribe, etc.
  1094.       - Fixed a very minor bug in Listutil
  1095.       - Listutil will now display the total number of subscribers when
  1096.         listing or searching a subscriber list.
  1097.       - The rebuild function in Listutil now trims any leading or
  1098.         trailing spaces off the subscriber's mailing address.  I
  1099.         noticed some e-mail addresses were being added with a leading
  1100.         space and it was annoying me, so I changed it.  :)
  1101.  
  1102. v2.23 - (03/01/95) Now creates a LISTSERV.LOG file that shows the
  1103.         message counts each time Listserv runs.
  1104.       - Added an option in Listutil to rebuild a mailing list
  1105.         subscriber file.
  1106.       - New computers at work - wcCODE compiles and runs really fast
  1107.         on a Pentium 90!
  1108.  
  1109. v2.22 - (02/10/95) Added the ability to the Moderate function to edit
  1110.         the message body or subject
  1111.  
  1112. v2.21 - (02/09/95) Added a feature to Listutil that will search for
  1113.         messages that have not been processed by Listserv.  It will
  1114.         check each message to see if it is addressed to 'listserv' or
  1115.         one of your mailing lists.  If it is, it will show you a
  1116.         message header as well as the body of the message.  You are
  1117.         then given an option to delete the message or to go on to the
  1118.         next message. Once the message has been deleted, Listserv will
  1119.         skip over it when it runs.
  1120.       - Thanks to MSI support, Listserv now does a different (correct)
  1121.         method of checking to see if a message has been deleted.
  1122.         According to the Addendum text, a flag of 200 signifies a
  1123.         deleted message. So I tried using the FlagIsSet command to
  1124.         test for it, but didn't have much luck.  Called MSI support.
  1125.         They said the FlagIsSet command is broken.  They said you can
  1126.         do this to test for a flag:
  1127.              If (Msg.Flags and 0x0200) <> 0 Then Print "Flag is set."
  1128.              If (Msg.Flags and 0x0200) = 0 Then Print "Flag is cleared."
  1129.         This should work for any of the bit-masked flags you need to
  1130.         check!  Thanks MSI!
  1131.  
  1132. v2.20 - (02/08/95) Listserv now supports six types of mailing lists!
  1133.         These will be set up through Listutil.  Be sure to read the
  1134.         UPGRADE.DOC file!  Here are the new types of mailing lists:
  1135.          (1)  Anyone can subscribe, anyone can post
  1136.          (2)  Anyone can subscribe, only subscribers can post
  1137.          (3)  Must e-mail host to subscribe, anyone can post
  1138.          (4)  Must e-mail host to subscribe, only subscribers can post
  1139.          (5)  Anyone can subscribe, must be authorized to post
  1140.          (6)  Must e-mail host to subscribe, must be authorized to post
  1141.         Listserv will send out a custom message for a type 3, 4 or 6
  1142.         message when someone tries to subscribe.  It will also send
  1143.         out a message for a type 5 or 6 if an unauthorized person
  1144.         tries to post.
  1145.       - Fixed a bug where Listserv would skip some messages to the
  1146.         LISTSERV address when the Subject contained a subscribe or
  1147.         unsubscribe message.  This should work more reliably now.
  1148.       - (Wow... I've more than doubled the size of the code since
  1149.         v2.00!)
  1150.  
  1151. v2.13 - (02/06/95) Fixed a bug where Listserv would exit when someone
  1152.         that was not a subscriber tried to send a message to the list.
  1153.       - The "From: username@domain.com" that was added to each message
  1154.         has been removed.  The incoming message header always has the
  1155.         From address anyway (unless you sent the message locally), so
  1156.         it was kind of redundant.
  1157.       - Each message will now have a "Processed with Listserv v2.13",
  1158.         or the current version number, added to the end
  1159.  
  1160. v2.12 - (01/30/95) Added support for a registration key file.  People
  1161.         that register will now get a key file saying that they have a
  1162.         registered copy of Listserv!
  1163.       - LISTUTIL: As my wcCODE programming knowledge expands, I
  1164.         optimize my code a little more.  All the Yes/No prompts in
  1165.         Listutil now use a standard one or two lines of code using
  1166.         InputYesNo, rather than the six or seven lines of code using
  1167.         an Inkey command I had been using.
  1168.  
  1169. v2.11 - (01/09/95) The first revision for the new year! Added support
  1170.         for a custom message (LISTSERV.NOT) that is sent out to people
  1171.         that try to send a message out on the mailing list when they
  1172.         are not a subscriber.
  1173.       - Fixed some spelling errors in the docs.  :)
  1174.  
  1175. v2.10 - (12/22/94) Modified the way Listserv does its displays so it
  1176.         runs smoother rather than "blocky", although it now runs
  1177.         slightly slower. If this is a major problem I will change it
  1178.         back to its original display method.
  1179.       - LISTUTIL: A few minor bug fixes
  1180.  
  1181. v2.09 - (12/19/94) Fixed a bug where Listserv would send a blank
  1182.         message if no filter file existed.  This has been fixed, and
  1183.         why I didn't catch this when I released v2.08 is beyond me!
  1184.         Guess it was just one of those days.  :)
  1185.       - Released the data structures in the docs.
  1186.       - LISTUTIL.WCX: Added an option to reset the high message
  1187.         pointer
  1188.  
  1189. v2.08 - (12/12/94) Added a feature to let the sysop filter out certain
  1190.         text on outgoing messages.  The optional file LISTSERV.FLT
  1191.         should contain the lines you want filtered out of outgoing
  1192.         messages.  See the documentation in the above text on how it
  1193.         should be formatted.
  1194.  
  1195. v2.07 - (12/01/94) The feature to skip deleted messages added in v2.06
  1196.         was causing Listserv to skip all new imported messages.  This
  1197.         should now be fixed.
  1198.  
  1199. v2.06 - (11/29/94) Listserv will now skips messages flagged as
  1200.         deleted.  This way you can add some sort of basic moderation
  1201.         to your mailing list.
  1202.       - Fixed a bug that would cause Listserv to start at the first
  1203.         message if the last message pointer (in the LISTSERV.PTR file)
  1204.         was pointing to a non-existent message.  Example: Say the last
  1205.         message was 870, and that message had been marked as deleted
  1206.         and wcPACK was run to remove it.  Message 870 no longer
  1207.         exists, so Listserv can't find it and starts at the beginning
  1208.         of the list.
  1209.  
  1210. v2.05 - (11/16/94) Listserv now supports a LISTSERV@ address.  Users
  1211.         can now send a message to listserv@domain.name.com, and put
  1212.         the 'subscribe listname' and 'unsubscribe listname' in the
  1213.         body of the message.
  1214.  
  1215.       - Fixed a bug that occasionally happened when Listserv reached
  1216.         the last record in it's subscriber list and would hang if the
  1217.         last record was blank.
  1218.  
  1219. v2.04 - (11/15/94) Not released due to a bug
  1220.  
  1221. v2.03 - (11/10/94) Messages sent by a non-subscriber are skipped and
  1222.         not sent out on the mailing list.
  1223.       - Fixed a bug where Listserv would send/process one message and
  1224.         then exit.
  1225.  
  1226. v2.02 - (10/31/94) Recompiled to work with Wildcat v4.01
  1227.       - Messages with a subject of HOST UNKNOWN are now skipped
  1228.       - Fixed a bug where Listserv was sending out messages with blank
  1229.         subjects.  Listserv now skips such messages.
  1230.  
  1231. v2.01 - (10/7/94) Turned off the Pause prompt
  1232.       - Messages with a subject of EXECUTION FAILED or a blank subject
  1233.         are now skipped and not sent out on the mailing list
  1234.  
  1235. v2.00 - (10/6/94) Support for multiple mailing lists added!  Yeah!
  1236.       - Custom messages for each mailing list
  1237.       - Listutil now handles the support for adding/removing mailing
  1238.         lists
  1239.       - When using Listutil, you can type in a full or partial name,
  1240.         and it will come of with a match.  IE: WILD would find WILDCAT
  1241.         if it existed.  This works in both the mailing list and
  1242.         subscriber areas.
  1243.       - Messages with a subject of SUB or UNSUB are now treated as
  1244.         subscription/unsubscription requests.
  1245.       - Listserv will change back to the original conference it was
  1246.         launched from
  1247.  
  1248. v1.06 - (9-29-94) Messages that contain a subject of WARNING FROM
  1249.         UUCP, UNDELIVERABLE or UNKNOWN ADDRESS are skipped.  This way
  1250.         bounced messages are not sent back out on the mailing list.
  1251.       - Fixed a bug that would give a "file already open" error when
  1252.         an unsubscription request was immediately followed by a
  1253.         subscription request.
  1254.  
  1255. v1.05 - (9-22-94) Messages with the a subject of SUB, UNSUB or blank
  1256.         are now considered invalid subscription requests.  A custom
  1257.         message is sent out (INVALSUB.MSG) when Listserv gets one of
  1258.         these messages. (Thanks to steve.henry@ambassador.com for the
  1259.         suggestion)
  1260.       - All messages sent out on the list now show the From name as
  1261.         the mailing list name.  This makes it easier to send replies
  1262.         back to the mailing list rather than the original sender.
  1263.         (Thanks to sysop@guildnet.org for the suggestion)
  1264.  
  1265. v1.04 - (9-12-94) Fixed a bug that was causing wcGATE not to export
  1266.         the outgoing messages.  Here's what was happening: There is a
  1267.         field in the Message Header record called Network Name. My
  1268.         Internet provider is Holonet, and I wrote a small WCX to have
  1269.         it display all the Network Names in the messages in my
  1270.         Internet E-mail conf.  Well, all the ones that were imported
  1271.         said HOLONET, and all the local ones added by the system,
  1272.         straight Wildcat and not the wcCODE program, were blank.  When
  1273.         Listserv got a message from Internet, the Network Name was
  1274.         already set to HOLONET, and when it saved an outgoing message,
  1275.         the Network Name was still set to HOLONET, hence wcGATE thinks
  1276.         that the message had already been imported so it didn't export
  1277.         it again.  All I did was reset the Network Name to blank
  1278.         before the message was saved so wcGATE will export the
  1279.         message.
  1280.  
  1281. v1.03 - Fixed a bug that was causing messages to be saved as public
  1282.         rather than private.  All outgoing messages created are now
  1283.         private. (Thanks to Steve at MSI for sending me the message
  1284.         flags info!)
  1285.       - Added support for custom messages that are sent when people
  1286.         subscribe and unsubscribe from the list
  1287.       - Added a utility that lets you add/drop/list subscribers in the
  1288.         mailing list.
  1289.  
  1290. v1.02 - Added support so users already signed up for the list cannot
  1291.         get signed up again
  1292.       - Added/changed come of the colors
  1293.       - Added support for a customizable tagline (.sig) for each
  1294.         message.
  1295.       - Fixed a bug where it put the mailing list name as the "From"
  1296.         name
  1297.       - Turned off the "More" prompt.
  1298.  
  1299. v1.01 - Sends a reply when you subscribe or unsubscribe from the list.
  1300.       - Included in docs how to actually subscribe/unsubscribe to the
  1301.         mailing list!  Ooops, slight oversight.
  1302.  
  1303. v1.0 - Initial Release.
  1304.  
  1305.  
  1306. I can't believe I've written so much documentation for this program!  :)
  1307.