home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2843 / README < prev    next >
Encoding:
Text File  |  1991-02-24  |  7.2 KB  |  220 lines

  1. README - Tue May  1 14:46:33 PDT 1990
  2.  
  3. This is release 3.0 of the CFC and Ease programs.
  4.  
  5. Ease is a compiler for sendmail configuration files.  It reads a high-level
  6. mail configuration language and produces a sendmail.cf file.  If you've ever
  7. stared at a sendmail.cf, you know why this is valuable.
  8.  
  9. Cfc is performs the inverse operation: it converts sendmail.cf files into
  10. source for ease.  It gives you hope for working with your existing sendmail.cf
  11. files.
  12.  
  13. This is a fresh posting of the entire source for 'ease' and "cfc'.
  14. It incorporates all of the previous netwide posting (version 2.0),
  15. plus some additional support for new and undocumented sendmail features.
  16.  
  17. Ease was written by
  18.     James S. Schoner, Purdue University Computing Center,
  19.               West Lafayette, Indiana  47907
  20. and is copyright (c) 1985 by Purdue Research Foundation.
  21.  
  22. Ease has been enhanced and maintained by various persons, most notably
  23.     Arnold D. Robbins (arnold@unix.cc.emory.edu),
  24.     Bruce Barnett (barnett@crdgw1ge.com,  uunet!crdgw1!barnett)
  25.     Stephen Schaefer of Bowling Green State University,
  26.     Raymond A. Schnitzler of Bellcore,
  27.     Andrew Partan of the Corporation for Open Systems,
  28.     Rich Salz of Bolt Beranak, and Newman.
  29.  
  30. Cfc was written by Arnold D. Robbins, and has been enhanced by Bruce Barnett
  31. (see below).
  32.  
  33. Notable changes to cfc since release 2.0 are described in the note
  34. from Bruce Barnett below.
  35.  
  36.  
  37.     -----------------------------------------------------------
  38.  
  39.         Ease 3.0 and cfc Release Notes:
  40.         Bruce Barnett barnett@crdgw1.ge.com
  41.         February 1991
  42.  
  43. This document describes Ease 3.0. This version was originally a
  44. modified version of the last official release of ease 2.1. I called it
  45. 2.1 Beta and sent it to several dozen people. I sent the patches to the authors
  46. of ease and cfc, but an updated version was never posted to the net.
  47. The authors have decided to let me post the changes, so I guess I have
  48. the baton now.
  49.  
  50. Since this is a major release, I decided to call it Ease 3.0
  51.  
  52. The main feature of Ease/Cfc 3.0:
  53.  
  54.  
  55.     I subjected the Cfc/Ease programs to a test suite
  56.     that converted *.cf files to ease files, and back again.
  57.     I compared the input of cfc  (The original .cf file)
  58.     to the output of ease. The goal was twofold:
  59.  
  60.         1. To automatically produce an Ease file than can
  61.            be used to generate a .cf file identical to the original
  62.         2. To produce an Ease file that can be used without
  63.             editing. You will see warnings, and possible errors 
  64.             that came from the vendor's supplied sendmail.cf
  65.             file. But in a few minutes time, you should have a 
  66.             working, and error free, ease version of your 
  67.             sendmail.cf file.
  68.  
  69.     In other words, you can start using ease as a high level
  70. langauge and feel confident that you won't break anything.
  71.     
  72.  
  73. Current status of Ease 3.0
  74.     It will handle 100% of the standard Ultrix, SunOS, HP, and Berkeley
  75.     versions of sendmail (I hope). It handles 99% of the IDA
  76.     enhancement package. See the TODO file for problems.
  77.  
  78.     I don't plan to do any major work maintaining this package,
  79. but I will gladly accept bug fixes and enhancements.
  80.  
  81. New features of the Ease grammar at a glance:
  82.  
  83. Added asm("") command. This can be used to insert something strange into
  84.     the sendmail file. Or something Ease or cfc is too stupid to
  85.     translate properly. This is the work-around for the new/fancy
  86.     stuff.
  87.  
  88. Example:
  89.     asm("Dq$?x$!x <$g>$|$g$.");
  90.  
  91. Added eval()    [$&]
  92.  
  93. SunOS 4.0 support:
  94.     Added m_domain
  95.     Added o_maxempty
  96.     Added o_maxhops    
  97.     Added o_nfs    
  98.     Added o_aliasfile
  99.     Added ypmap()    [${   $} on RHS]
  100.  
  101.     Added default definitions of
  102.         any_in_etc_hosts
  103.         any_in_mydomainname
  104.         any_in_myhostname
  105.  
  106. Ultrix 3.0 support:
  107.     Added f_mail11
  108.     Added ypalias()  [${ on LHS]
  109.     Added yppasswd() [$" on LHS]
  110.  
  111. HP/UX support:
  112.     added o_nameserver    OI
  113.     added program()        $<
  114.  
  115. IDA support:
  116.     Added f_relativize
  117.     Added m_uucpname
  118.     Added o_envelope
  119.     Added f_bsmtp
  120.     Support for Header/Envelope re-write rulesets (S=20/21)
  121.     alias()            $(@    in RHS
  122.     quote()            $!    in headers
  123.  
  124.     resolved():
  125.     #     if (resolved( one_or_more ))    /* found one, return it */
  126.     #         resolve (mailer ($1));
  127.     R$#$+    $#$1
  128.  
  129.     nested rulesets:
  130.     #     if ( one_or_more @. one_or_more ? one_or_more )    /* relativize & return */
  131.     #         resolve (mailer (TCP),
  132.     #                 host ($3 ),
  133.     #                 user (retry (RULESET_28($1@.$2))));
  134.     R$+@.$+?$+    $#TCP$@$3$:$>28 $1@.$2
  135.                 user (retry (RULESET_28($1@.$2))));
  136.  
  137.     canon with default value:
  138.     #     if ( one_or_more @ exactly_one )    /* host: try name server */
  139.     #         return ( $1@ canon ( $2 default (  $2."UUCP ")));
  140.     R$+@$-    $@$1@$[$2$:$2.UUCP $]
  141.  
  142.  
  143. Not everything in IDA is supported. (Remember to use the asm() command!)
  144.  
  145. ----------------
  146. General Improvements to the Ease Program:
  147.     Improved reporting of syntax errors
  148.     Built in use of /lib/cpp
  149.         if et is given a CPP flag, it will call it.
  150.     If a macro is a single upper case letter, and has not been defined
  151.     the letter assigned to it will be the same as the macro name.
  152.     This allows the original input file to be compared to the ease
  153.     output.
  154.  
  155.     There have been some substantial changes to the grammar handling.
  156.     Several improvements have been made to the error reporting.
  157.     In addition, ease supports the -d flag, which is used to debug
  158.     the parser.  (See the makefile if you are interested in this.)
  159.  
  160.     Several bugs were fixed, including a lot of problems with the ifset()
  161.     construct. It's still not perfect. See the manual page for cfc(local)
  162.  
  163. ----------------------------
  164. Changes to CFC (Sendmail.cf to ease translator):
  165.  
  166.     Added new flags to cfc:
  167.     -s => SunOS
  168.     -i => IDA sendmail
  169.     -d => Ultrix
  170.     -C [..] => add predefined classes 
  171.         e.g. -C ADG => added classes A, B, and G
  172.  
  173. See the file CONVERTING on tips to convert your sendmail file into ease.
  174. I have included some scritps that can compare the original sendmail
  175. file to the output of ease. If the rules are identical, then you can
  176. feel comfortable using ease instead of raw cf.
  177.  
  178.  
  179. --------------
  180. I have also included the document TESTING, along with some
  181. shellscripts that I use to perform regression testing of sendmail.
  182. When I make a major change to my sendmail rules, I run a series of
  183. addresses through sendmail and look at the differences. This way I can
  184. check for address rewrite errors before I install a new version.
  185.  
  186. I have also include a document called INTRO, that gives a simple
  187. introduction to sendmail. You may want to look at the file
  188.     debug/Makefile
  189. as this gives you an example how I do it.
  190.  
  191. This package also includes two more goodies:
  192.  
  193.     build-new-aliases - this is a shell script I use to 
  194.         kill sendmail, rebuild the aliases, and restart
  195.         sendmail. The problem is sometimes a kill -15 won't
  196.         immediately stop sendmail from running. This gives
  197.         the daemons a change to clean up first.
  198.  
  199. Also - see the directory test. This includes a shell script to test
  200. sendmail files, written by Simon Kenyon. You have two ways to debug
  201. sendmail files now!
  202.  
  203. ============================================================================
  204.  
  205. If you find these programs useful, or if you have suggestions or changes,
  206. please drop me a line. I would really appreciate any patches to this
  207. package, as I don't plan any major upgrade to support all of the IDA
  208. extensions. I will merge any patches and release new versions, as they
  209. are sent to me. 
  210.  
  211.     Bruce Barnett
  212.     General Electric
  213.     Corporate Research and Development
  214.     P. O. Box 8, 1 River Road
  215.     Schenectady, NY 12301
  216.  
  217.     barnett@crdgw1.ge.com
  218.  
  219.  
  220.