cf/README for sendmail 8.12.3

Eric Allman of the Sendmail Consortium

INTRODUCTION AND EXAMPLE

Configuration files are contained in the subdirectory "cf", with a suffix ".mc". They must be run through "m4" to produce a ".cf" file. You must pre-load "cf.m4":

m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf

Alternatively, you can simply:

cd ${CFDIR}/cf
./Build config.cf

where ${CFDIR} is the root of the cf directory and config.mc is the name of your configuration file. If you are running a version of M4 that understands the __file__ builtin (versions of GNU m4 >= 0.75 do this, but the versions distributed with 4.4BSD and derivatives do not) or the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory. For "traditional" versions, ${CFDIR} must be "..", or you must use -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash!
For example:

m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf
Let's examine a typical .mc file:

	divert(-1)
	#
	# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
	#	All rights reserved.
	# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
	# Copyright (c) 1988, 1993
	#	The Regents of the University of California.  All rights reserved.
	#
	# By using this file, you agree to the terms and conditions set
	# forth in the LICENSE file which can be found at the top level of
	# the sendmail distribution.
	#

	#
	#  This is a Berkeley-specific configuration file for HP-UX 9.x.
	#  It applies only to the Computer Science Division at Berkeley,
	#  and should not be used elsewhere.   It is provided on the sendmail
	#  distribution as a sample only.  To create your own configuration
	#  file, create an appropriate domain file in ../domain, change the
	#  `DOMAIN' macro below to reference that file, and copy the result
	#  to a name of your own choosing.
	#
	divert(0)

The divert(-1) will delete the crud in the resulting output file. The copyright notice can be replaced by whatever your lawyers require; our lawyers require the one that is included in these files. A copyleft is a copyright by another name. The divert(0) restores regular output.

VERSIONID(`<SCCS or RCS version id>')

VERSIONID is a macro that stuffs the version information into the resulting file. You could use SCCS, RCS, CVS, something else, or omit it completely. This is not the same as the version id included in SMTP greeting messages -- this is defined in m4/version.m4.

OSTYPE(`hpux9')dnl

You must specify an OSTYPE to properly configure things such as the pathname of the help and status files, the flags needed for the local mailer, and other important things. If you omit it, you will get an error when you try to build the configuration. Look at the ostype directory for the list of known operating system types.

DOMAIN(`CS.Berkeley.EDU')dnl

This example is specific to the Computer Science Division at Berkeley. You can use "DOMAIN(`generic')" to get a sufficiently bland definition that may well work for you, or you can create a customized domain definition appropriate for your environment.

MAILER(`local')
MAILER(`smtp')

These describe the mailers used at the default CS site. The local mailer is always included automatically.

Beware: MAILER declarations should always be at the end of the configuration file.

The general rules are that the order should be:

VERSIONID
OSTYPE
DOMAIN
FEATURE
local macro definitions
MAILER
LOCAL_CONFIG
LOCAL_RULE_*
LOCAL_RULESETS

There are a few exceptions to this rule. Local macro definitions which influence a FEATURE() should be done before that feature. For example, a define(`PROCMAIL_MAILER_PATH', ...) should be done before FEATURE(`local_procmail').

BE SURE YOU CUSTOMIZE THESE FILES!
They have some Berkeley-specific assumptions built in, such as the name of their UUCP-relay. You'll want to create your own domain description, and use that in place of domain/Berkeley.EDU.m4.