home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 1 / 1580 / README < prev    next >
Encoding:
Text File  |  1990-12-28  |  5.6 KB  |  117 lines

  1. This package contains the beta distribution of the Anonymous Contact
  2. Service (ACS) software. The software has been tested on only one system
  3. (a Sun-2/120 running SunOS3.4.) YOU USE IT ENTIRELY AT YOUR OWN RISK.
  4. This software is hereby placed in the public domain EXCEPT for
  5. smail2.5, which carries its own copyright and distribution restrictions.
  6. See the documentation in the mailer directory.
  7.  
  8. The ACS, in its current configuration, requires a system which has
  9. either the dbm or ndbm libraries, Perl3.0pl18, smail2.5 and its mutant
  10. brother, acsmail (provided in the distribution), a mail transport
  11. agent which deals with /usr/lib/aliases properly (sendmail works,
  12. smail2.5 and smail3.1.18 probably do), elm2.3 (but it should be 
  13. easy to adapt other mail UA's to handle the bounced message handling),
  14. and a news package which includes "inews" - Cnews works, B2.11.19
  15. probably works.
  16.  
  17. WHAT IT DOES
  18.  
  19. The ACS provides two primary functions - it allows users to anonymously
  20. post articles, and to receive replies to those articles in which the
  21. replying party is also anonymous (the latter function extends to
  22. general two-way e-mail conversations in which neither party knows the
  23. other's actual e-mail address.) Each user who posts an anonymous
  24. article or sends an anonymous e-mail message is assigned an alias.
  25. The site running the ACS software acts as the nameserver for those
  26. aliases in a double-blind fashion. An e-mail message sent to
  27. "acs-post@<server-machine>" is treated as an article to be posted
  28. anonymously. The ACS software assigns the user an alias (if they
  29. don't already have one), and rewrites the article header so that
  30. the message appears to come from "acs-alias@<server-machine>" and
  31. posts the message to alt.personals. Anonymous e-mail messages come
  32. to "acs-alias@<server-machine>" and are intercepted by the sendmail
  33. (or equiv.) aliasing feature. The sender's e-mail address is replaced
  34. by an alias, the recipient's alias is replaced by their actual e-mail
  35. address, and the message is forwarded.
  36.  
  37. For additional information on what the ACS does, read the "Intro"
  38. document in this distribution.
  39.  
  40. HOW IT WORKS
  41.  
  42. /usr/lib/aliases contains aliases for acs-ping, acs-post, and each
  43. anonymous user who has used the system. These aliases are pipes into
  44. three suid root programs in the ACS source directory: anon-ping,
  45. anon-post, and anon-reply. These programs dump their stdin into
  46. uniquely named files in the ACS spool directory, except for anon-reply,
  47. which writes the user's alias into the first line of the spool file
  48. before dumping its stdin into the spool file. The files in the spool
  49. directory are named PING#####, POST#####, or REP#####, depending on
  50. which type of message they contain. The ##### is the pid of the
  51. instance of anon-whatever that does the writing. (NOTE: there is a
  52. potential bug here: on a very fast system which wraps around on its
  53. process ids very quickly and doesn't unspool the incoming messages
  54. frequently enough, older messages could be overwritten. Some better
  55. "unique" file naming strategy is needed.)
  56.  
  57. The workhorse of the system is a Perl script called "unspool". This
  58. is invoked by cron at regular intervals (I run it every 15 minutes)
  59. to scavenge the contents of the spool directory and process the files
  60. according to their type. unspool processes the files in the spool
  61. directory by their type (REP, POST, then PING). For each message,
  62. it extracts the user's address from the From: line, and checks to
  63. see if that user has already been registered with the system. It does
  64. this using the address as the key to a dbm database called "real2alias".
  65. The data corresponding to the key is the user's alias. If the user
  66. has not been registered, unspool creates an alias for the user of the
  67. form "acs-..." where "..." is a sequential entry starting with "a" and
  68. incrementing to "zzz" and beyond. (The last assigned alias is stored in
  69. the file "alias-index" which unspool reads, increments, and writes as
  70. needed.) unspool then adds the address:alias record to the real2alias
  71. database, and appends a line for that user to the /usr/lib/aliases file
  72. of the form 'acs-xxx:"|/usr/personals/anon-reply acs-xxx"'.
  73.  
  74. For additional information on how unspool works, see the documentation
  75. in the code.
  76.  
  77. ADMINISTRATIVE FUNCTIONS
  78.  
  79. There are a number of scripts in this directory to help the ACS
  80. administrator keep things running smoothly. They are:
  81.  
  82. addalias - add a new record to the real2alias database.
  83.  
  84. rmbyalias - remove a database record given the user's alias.
  85.  
  86. rmbyaddr - remove a database record given a user's address.
  87.  
  88. dupalias - check the database for duplicate aliases. This is needed
  89.            if you accidentally delete unspool's lock file and 
  90.            another instance of unspool starts up. 
  91.  
  92. fixit - a modified version of dbmrmbyalias.perl which creates
  93.              a new instance of the database with one record removed.
  94.  
  95. listr2a - write the contents of real2alias on stdout. Each line
  96.           contains a record of the form "alias:address".
  97.  
  98. nextalias - a pretty much useless way of finding out what the
  99.                  next alias assigned will be. It's easier to cat
  100.                  alias-index.
  101.  
  102. MISCELLANEOUS
  103.  
  104. This directory includes three "Intro" files, which describe how to
  105. use the ACS. Each one includes a header so they can be posted simply
  106. by typing "inews -h < <Intro-file>". While the config.perl script
  107. processes them to change references to my system, you'll still
  108. probably need to tune them a bit for your purposes. "Intro" is the
  109. long (definitive) version of the file, which is posted to several
  110. newsgroups. "Intro2" is the same thing, but is only posted to
  111. alt.personals. "Intro-short" is the short form version of the
  112. instructions.
  113.  
  114. Dave Mack
  115. {csu,acs-admin,acs-a}@alembic.ACS.COM
  116. uunet!alembic!{csu,acs-admin,acs-a}
  117.