home *** CD-ROM | disk | FTP | other *** search
- README - Tue May 1 14:46:33 PDT 1990
-
- This is release 3.0 of the CFC and Ease programs.
-
- Ease is a compiler for sendmail configuration files. It reads a high-level
- mail configuration language and produces a sendmail.cf file. If you've ever
- stared at a sendmail.cf, you know why this is valuable.
-
- Cfc is performs the inverse operation: it converts sendmail.cf files into
- source for ease. It gives you hope for working with your existing sendmail.cf
- files.
-
- This is a fresh posting of the entire source for 'ease' and "cfc'.
- It incorporates all of the previous netwide posting (version 2.0),
- plus some additional support for new and undocumented sendmail features.
-
- Ease was written by
- James S. Schoner, Purdue University Computing Center,
- West Lafayette, Indiana 47907
- and is copyright (c) 1985 by Purdue Research Foundation.
-
- Ease has been enhanced and maintained by various persons, most notably
- Arnold D. Robbins (arnold@unix.cc.emory.edu),
- Bruce Barnett (barnett@crdgw1ge.com, uunet!crdgw1!barnett)
- Stephen Schaefer of Bowling Green State University,
- Raymond A. Schnitzler of Bellcore,
- Andrew Partan of the Corporation for Open Systems,
- Rich Salz of Bolt Beranak, and Newman.
-
- Cfc was written by Arnold D. Robbins, and has been enhanced by Bruce Barnett
- (see below).
-
- Notable changes to cfc since release 2.0 are described in the note
- from Bruce Barnett below.
-
-
- -----------------------------------------------------------
-
- Ease 3.0 and cfc Release Notes:
- Bruce Barnett barnett@crdgw1.ge.com
- February 1991
-
- This document describes Ease 3.0. This version was originally a
- modified version of the last official release of ease 2.1. I called it
- 2.1 Beta and sent it to several dozen people. I sent the patches to the authors
- of ease and cfc, but an updated version was never posted to the net.
- The authors have decided to let me post the changes, so I guess I have
- the baton now.
-
- Since this is a major release, I decided to call it Ease 3.0
-
- The main feature of Ease/Cfc 3.0:
-
-
- I subjected the Cfc/Ease programs to a test suite
- that converted *.cf files to ease files, and back again.
- I compared the input of cfc (The original .cf file)
- to the output of ease. The goal was twofold:
-
- 1. To automatically produce an Ease file than can
- be used to generate a .cf file identical to the original
- 2. To produce an Ease file that can be used without
- editing. You will see warnings, and possible errors
- that came from the vendor's supplied sendmail.cf
- file. But in a few minutes time, you should have a
- working, and error free, ease version of your
- sendmail.cf file.
-
- In other words, you can start using ease as a high level
- langauge and feel confident that you won't break anything.
-
-
- Current status of Ease 3.0
- It will handle 100% of the standard Ultrix, SunOS, HP, and Berkeley
- versions of sendmail (I hope). It handles 99% of the IDA
- enhancement package. See the TODO file for problems.
-
- I don't plan to do any major work maintaining this package,
- but I will gladly accept bug fixes and enhancements.
-
- New features of the Ease grammar at a glance:
-
- Added asm("") command. This can be used to insert something strange into
- the sendmail file. Or something Ease or cfc is too stupid to
- translate properly. This is the work-around for the new/fancy
- stuff.
-
- Example:
- asm("Dq$?x$!x <$g>$|$g$.");
-
- Added eval() [$&]
-
- SunOS 4.0 support:
- Added m_domain
- Added o_maxempty
- Added o_maxhops
- Added o_nfs
- Added o_aliasfile
- Added ypmap() [${ $} on RHS]
-
- Added default definitions of
- any_in_etc_hosts
- any_in_mydomainname
- any_in_myhostname
-
- Ultrix 3.0 support:
- Added f_mail11
- Added ypalias() [${ on LHS]
- Added yppasswd() [$" on LHS]
-
- HP/UX support:
- added o_nameserver OI
- added program() $<
-
- IDA support:
- Added f_relativize
- Added m_uucpname
- Added o_envelope
- Added f_bsmtp
- Support for Header/Envelope re-write rulesets (S=20/21)
- alias() $(@ in RHS
- quote() $! in headers
-
- resolved():
- # if (resolved( one_or_more )) /* found one, return it */
- # resolve (mailer ($1));
- R$#$+ $#$1
-
- nested rulesets:
- # if ( one_or_more @. one_or_more ? one_or_more ) /* relativize & return */
- # resolve (mailer (TCP),
- # host ($3 ),
- # user (retry (RULESET_28($1@.$2))));
- R$+@.$+?$+ $#TCP$@$3$:$>28 $1@.$2
- user (retry (RULESET_28($1@.$2))));
-
- canon with default value:
- # if ( one_or_more @ exactly_one ) /* host: try name server */
- # return ( $1@ canon ( $2 default ( $2."UUCP ")));
- R$+@$- $@$1@$[$2$:$2.UUCP $]
-
-
- Not everything in IDA is supported. (Remember to use the asm() command!)
-
- ----------------
- General Improvements to the Ease Program:
- Improved reporting of syntax errors
- Built in use of /lib/cpp
- if et is given a CPP flag, it will call it.
- If a macro is a single upper case letter, and has not been defined
- the letter assigned to it will be the same as the macro name.
- This allows the original input file to be compared to the ease
- output.
-
- There have been some substantial changes to the grammar handling.
- Several improvements have been made to the error reporting.
- In addition, ease supports the -d flag, which is used to debug
- the parser. (See the makefile if you are interested in this.)
-
- Several bugs were fixed, including a lot of problems with the ifset()
- construct. It's still not perfect. See the manual page for cfc(local)
-
- ----------------------------
- Changes to CFC (Sendmail.cf to ease translator):
-
- Added new flags to cfc:
- -s => SunOS
- -i => IDA sendmail
- -d => Ultrix
- -C [..] => add predefined classes
- e.g. -C ADG => added classes A, B, and G
-
- See the file CONVERTING on tips to convert your sendmail file into ease.
- I have included some scritps that can compare the original sendmail
- file to the output of ease. If the rules are identical, then you can
- feel comfortable using ease instead of raw cf.
-
-
- --------------
- I have also included the document TESTING, along with some
- shellscripts that I use to perform regression testing of sendmail.
- When I make a major change to my sendmail rules, I run a series of
- addresses through sendmail and look at the differences. This way I can
- check for address rewrite errors before I install a new version.
-
- I have also include a document called INTRO, that gives a simple
- introduction to sendmail. You may want to look at the file
- debug/Makefile
- as this gives you an example how I do it.
-
- This package also includes two more goodies:
-
- build-new-aliases - this is a shell script I use to
- kill sendmail, rebuild the aliases, and restart
- sendmail. The problem is sometimes a kill -15 won't
- immediately stop sendmail from running. This gives
- the daemons a change to clean up first.
-
- Also - see the directory test. This includes a shell script to test
- sendmail files, written by Simon Kenyon. You have two ways to debug
- sendmail files now!
-
- ============================================================================
-
- If you find these programs useful, or if you have suggestions or changes,
- please drop me a line. I would really appreciate any patches to this
- package, as I don't plan any major upgrade to support all of the IDA
- extensions. I will merge any patches and release new versions, as they
- are sent to me.
-
- Bruce Barnett
- General Electric
- Corporate Research and Development
- P. O. Box 8, 1 River Road
- Schenectady, NY 12301
-
- barnett@crdgw1.ge.com
-
-
-