xref: /freebsd/contrib/sendmail/cf/README (revision 13058a916175518dfbac6ce66b9b8e22ecf43155)
1c2aa98e2SPeter Wemm
206f25ae9SGregory Neil Shapiro		SENDMAIL CONFIGURATION FILES
3c2aa98e2SPeter Wemm
406f25ae9SGregory Neil ShapiroThis document describes the sendmail configuration files.  This package
506f25ae9SGregory Neil Shapirorequires a post-V7 version of m4; if you are running the 4.2bsd, SysV.2, or
606f25ae9SGregory Neil Shapiro7th Edition version.  SunOS's /usr/5bin/m4 or BSD-Net/2's m4 both work.
706f25ae9SGregory Neil ShapiroGNU m4 version 1.1 or later also works.  Unfortunately, the M4 on BSDI 1.0
8c2aa98e2SPeter Wemmdoesn't work -- you'll have to use a Net/2 or GNU version.  GNU m4 is
942e5d165SGregory Neil Shapiroavailable from ftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the
10193538b7SGregory Neil Shapirolatest version).  EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x
1106f25ae9SGregory Neil Shapirois fine).  Use GNU m4 on this platform.
12c2aa98e2SPeter Wemm
1306f25ae9SGregory Neil ShapiroTo get started, you may want to look at tcpproto.mc (for TCP-only sites),
1406f25ae9SGregory Neil Shapirouucpproto.mc (for UUCP-only sites), and clientproto.mc (for clusters of
1506f25ae9SGregory Neil Shapiroclients using a single mail host).  Others are versions previously used at
1606f25ae9SGregory Neil ShapiroBerkeley.  For example, ucbvax has gone away, but ucbvax.mc demonstrates
1706f25ae9SGregory Neil Shapirosome interesting techniques.
18c2aa98e2SPeter Wemm
19c2aa98e2SPeter Wemm*******************************************************************
20c2aa98e2SPeter Wemm***  BE SURE YOU CUSTOMIZE THESE FILES!  They have some		***
21c2aa98e2SPeter Wemm***  Berkeley-specific assumptions built in, such as the name	***
2206f25ae9SGregory Neil Shapiro***  of their UUCP-relay.  You'll want to create your own	***
2306f25ae9SGregory Neil Shapiro***  domain description, and use that in place of		***
24c2aa98e2SPeter Wemm***  domain/Berkeley.EDU.m4.					***
25c2aa98e2SPeter Wemm*******************************************************************
26c2aa98e2SPeter Wemm
27c2aa98e2SPeter Wemm
28c2aa98e2SPeter Wemm+--------------------------+
29c2aa98e2SPeter Wemm| INTRODUCTION AND EXAMPLE |
30c2aa98e2SPeter Wemm+--------------------------+
31c2aa98e2SPeter Wemm
32c2aa98e2SPeter WemmConfiguration files are contained in the subdirectory "cf", with a
33c2aa98e2SPeter Wemmsuffix ".mc".  They must be run through "m4" to produce a ".cf" file.
34c2aa98e2SPeter WemmYou must pre-load "cf.m4":
35c2aa98e2SPeter Wemm
36c2aa98e2SPeter Wemm	m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf
37c2aa98e2SPeter Wemm
3806f25ae9SGregory Neil ShapiroAlternatively, you can simply:
3906f25ae9SGregory Neil Shapiro
4006f25ae9SGregory Neil Shapiro	cd ${CFDIR}/cf
4106f25ae9SGregory Neil Shapiro	./Build config.cf
4206f25ae9SGregory Neil Shapiro
43c2aa98e2SPeter Wemmwhere ${CFDIR} is the root of the cf directory and config.mc is the
44c2aa98e2SPeter Wemmname of your configuration file.  If you are running a version of M4
45c2aa98e2SPeter Wemmthat understands the __file__ builtin (versions of GNU m4 >= 0.75 do
46c2aa98e2SPeter Wemmthis, but the versions distributed with 4.4BSD and derivatives do not)
47c2aa98e2SPeter Wemmor the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory.
48c2aa98e2SPeter WemmFor "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST
49c2aa98e2SPeter Wemmuse -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash!  For example:
50c2aa98e2SPeter Wemm
51c2aa98e2SPeter Wemm	m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf
52c2aa98e2SPeter Wemm
53c2aa98e2SPeter WemmLet's examine a typical .mc file:
54c2aa98e2SPeter Wemm
55c2aa98e2SPeter Wemm	divert(-1)
56c2aa98e2SPeter Wemm	#
57602a2b1bSGregory Neil Shapiro	# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
5806f25ae9SGregory Neil Shapiro	#	All rights reserved.
59c2aa98e2SPeter Wemm	# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
60c2aa98e2SPeter Wemm	# Copyright (c) 1988, 1993
61c2aa98e2SPeter Wemm	#	The Regents of the University of California.  All rights reserved.
62c2aa98e2SPeter Wemm	#
63c2aa98e2SPeter Wemm	# By using this file, you agree to the terms and conditions set
64c2aa98e2SPeter Wemm	# forth in the LICENSE file which can be found at the top level of
65c2aa98e2SPeter Wemm	# the sendmail distribution.
66c2aa98e2SPeter Wemm	#
67c2aa98e2SPeter Wemm
68c2aa98e2SPeter Wemm	#
69c2aa98e2SPeter Wemm	#  This is a Berkeley-specific configuration file for HP-UX 9.x.
70c2aa98e2SPeter Wemm	#  It applies only to the Computer Science Division at Berkeley,
71c2aa98e2SPeter Wemm	#  and should not be used elsewhere.   It is provided on the sendmail
72c2aa98e2SPeter Wemm	#  distribution as a sample only.  To create your own configuration
73c2aa98e2SPeter Wemm	#  file, create an appropriate domain file in ../domain, change the
74c2aa98e2SPeter Wemm	#  `DOMAIN' macro below to reference that file, and copy the result
75c2aa98e2SPeter Wemm	#  to a name of your own choosing.
76c2aa98e2SPeter Wemm	#
77c2aa98e2SPeter Wemm	divert(0)
78c2aa98e2SPeter Wemm
79c2aa98e2SPeter WemmThe divert(-1) will delete the crud in the resulting output file.
80c2aa98e2SPeter WemmThe copyright notice can be replaced by whatever your lawyers require;
8106f25ae9SGregory Neil Shapiroour lawyers require the one that is included in these files.  A copyleft
82c2aa98e2SPeter Wemmis a copyright by another name.  The divert(0) restores regular output.
83c2aa98e2SPeter Wemm
84c2aa98e2SPeter Wemm	VERSIONID(`<SCCS or RCS version id>')
85c2aa98e2SPeter Wemm
86c2aa98e2SPeter WemmVERSIONID is a macro that stuffs the version information into the
8706f25ae9SGregory Neil Shapiroresulting file.  You could use SCCS, RCS, CVS, something else, or
88c2aa98e2SPeter Wemmomit it completely.  This is not the same as the version id included
89c2aa98e2SPeter Wemmin SMTP greeting messages -- this is defined in m4/version.m4.
90c2aa98e2SPeter Wemm
9106f25ae9SGregory Neil Shapiro	OSTYPE(`hpux9')dnl
92c2aa98e2SPeter Wemm
93c2aa98e2SPeter WemmYou must specify an OSTYPE to properly configure things such as the
94c2aa98e2SPeter Wemmpathname of the help and status files, the flags needed for the local
95c2aa98e2SPeter Wemmmailer, and other important things.  If you omit it, you will get an
96c2aa98e2SPeter Wemmerror when you try to build the configuration.  Look at the ostype
97c2aa98e2SPeter Wemmdirectory for the list of known operating system types.
98c2aa98e2SPeter Wemm
9906f25ae9SGregory Neil Shapiro	DOMAIN(`CS.Berkeley.EDU')dnl
100c2aa98e2SPeter Wemm
101c2aa98e2SPeter WemmThis example is specific to the Computer Science Division at Berkeley.
10206f25ae9SGregory Neil ShapiroYou can use "DOMAIN(`generic')" to get a sufficiently bland definition
103c2aa98e2SPeter Wemmthat may well work for you, or you can create a customized domain
104c2aa98e2SPeter Wemmdefinition appropriate for your environment.
105c2aa98e2SPeter Wemm
10606f25ae9SGregory Neil Shapiro	MAILER(`local')
10706f25ae9SGregory Neil Shapiro	MAILER(`smtp')
108c2aa98e2SPeter Wemm
10906f25ae9SGregory Neil ShapiroThese describe the mailers used at the default CS site.  The
110c2aa98e2SPeter Wemmlocal mailer is always included automatically.  Beware: MAILER
111c2aa98e2SPeter Wemmdeclarations should always be at the end of the configuration file,
11206f25ae9SGregory Neil Shapiroand MAILER(`smtp') should always precede MAILER(`procmail'), and
11306f25ae9SGregory Neil ShapiroMAILER(`uucp').  The general rules are that the order should be:
114c2aa98e2SPeter Wemm
115c2aa98e2SPeter Wemm	VERSIONID
116c2aa98e2SPeter Wemm	OSTYPE
117c2aa98e2SPeter Wemm	DOMAIN
118c2aa98e2SPeter Wemm	FEATURE
119c2aa98e2SPeter Wemm	local macro definitions
120c2aa98e2SPeter Wemm	MAILER
12106f25ae9SGregory Neil Shapiro	LOCAL_RULE_*
12206f25ae9SGregory Neil Shapiro	LOCAL_RULESETS
12306f25ae9SGregory Neil Shapiro
12406f25ae9SGregory Neil ShapiroThere are a few exceptions to this rule.  Local macro definitions which
12506f25ae9SGregory Neil Shapiroinfluence a FEATURE() should be done before that feature.  For example,
12606f25ae9SGregory Neil Shapiroa define(`PROCMAIL_MAILER_PATH', ...) should be done before
12706f25ae9SGregory Neil ShapiroFEATURE(`local_procmail').
128c2aa98e2SPeter Wemm
129c2aa98e2SPeter Wemm
130c2aa98e2SPeter Wemm+----------------------------+
131c2aa98e2SPeter Wemm| A BRIEF INTRODUCTION TO M4 |
132c2aa98e2SPeter Wemm+----------------------------+
133c2aa98e2SPeter Wemm
134c2aa98e2SPeter WemmSendmail uses the M4 macro processor to ``compile'' the configuration
135c2aa98e2SPeter Wemmfiles.  The most important thing to know is that M4 is stream-based,
136c2aa98e2SPeter Wemmthat is, it doesn't understand about lines.  For this reason, in some
137c2aa98e2SPeter Wemmplaces you may see the word ``dnl'', which stands for ``delete
138c2aa98e2SPeter Wemmthrough newline''; essentially, it deletes all characters starting
139c2aa98e2SPeter Wemmat the ``dnl'' up to and including the next newline character.  In
140c2aa98e2SPeter Wemmmost cases sendmail uses this only to avoid lots of unnecessary
141c2aa98e2SPeter Wemmblank lines in the output.
142c2aa98e2SPeter Wemm
143c2aa98e2SPeter WemmOther important directives are define(A, B) which defines the macro
144c2aa98e2SPeter Wemm``A'' to have value ``B''.  Macros are expanded as they are read, so
145c2aa98e2SPeter Wemmone normally quotes both values to prevent expansion.  For example,
146c2aa98e2SPeter Wemm
147c2aa98e2SPeter Wemm	define(`SMART_HOST', `smart.foo.com')
148c2aa98e2SPeter Wemm
149c2aa98e2SPeter WemmOne word of warning:  M4 macros are expanded even in lines that appear
150c2aa98e2SPeter Wemmto be comments.  For example, if you have
151c2aa98e2SPeter Wemm
15206f25ae9SGregory Neil Shapiro	# See FEATURE(`foo') above
153c2aa98e2SPeter Wemm
15406f25ae9SGregory Neil Shapiroit will not do what you expect, because the FEATURE(`foo') will be
155c2aa98e2SPeter Wemmexpanded.  This also applies to
156c2aa98e2SPeter Wemm
157c2aa98e2SPeter Wemm	# And then define the $X macro to be the return address
158c2aa98e2SPeter Wemm
159c2aa98e2SPeter Wemmbecause ``define'' is an M4 keyword.  If you want to use them, surround
160c2aa98e2SPeter Wemmthem with directed quotes, `like this'.
161c2aa98e2SPeter Wemm
162c2aa98e2SPeter Wemm+----------------+
163c2aa98e2SPeter Wemm| FILE LOCATIONS |
164c2aa98e2SPeter Wemm+----------------+
165c2aa98e2SPeter Wemm
166c2aa98e2SPeter Wemmsendmail 8.9 has introduced a new configuration directory for sendmail
167c2aa98e2SPeter Wemmrelated files, /etc/mail.  The new files available for sendmail 8.9 --
16806f25ae9SGregory Neil Shapirothe class {R} /etc/mail/relay-domains and the access database
16906f25ae9SGregory Neil Shapiro/etc/mail/access -- take advantage of this new directory.  Beginning with
17006f25ae9SGregory Neil Shapiro8.10, all files will use this directory by default (some options may be
17106f25ae9SGregory Neil Shapiroset by OSTYPE() files).  This new directory should help to restore
17206f25ae9SGregory Neil Shapirouniformity to sendmail's file locations.
17306f25ae9SGregory Neil Shapiro
17406f25ae9SGregory Neil ShapiroBelow is a table of some of the common changes:
17506f25ae9SGregory Neil Shapiro
17606f25ae9SGregory Neil ShapiroOld filename			New filename
17706f25ae9SGregory Neil Shapiro------------			------------
17806f25ae9SGregory Neil Shapiro/etc/bitdomain			/etc/mail/bitdomain
17906f25ae9SGregory Neil Shapiro/etc/domaintable		/etc/mail/domaintable
18006f25ae9SGregory Neil Shapiro/etc/genericstable		/etc/mail/genericstable
18106f25ae9SGregory Neil Shapiro/etc/uudomain			/etc/mail/uudomain
18206f25ae9SGregory Neil Shapiro/etc/virtusertable		/etc/mail/virtusertable
18306f25ae9SGregory Neil Shapiro/etc/userdb			/etc/mail/userdb
18406f25ae9SGregory Neil Shapiro
18506f25ae9SGregory Neil Shapiro/etc/aliases			/etc/mail/aliases
18606f25ae9SGregory Neil Shapiro/etc/sendmail/aliases		/etc/mail/aliases
18706f25ae9SGregory Neil Shapiro/etc/ucbmail/aliases		/etc/mail/aliases
18806f25ae9SGregory Neil Shapiro/usr/adm/sendmail/aliases	/etc/mail/aliases
18906f25ae9SGregory Neil Shapiro/usr/lib/aliases		/etc/mail/aliases
19006f25ae9SGregory Neil Shapiro/usr/lib/mail/aliases		/etc/mail/aliases
19106f25ae9SGregory Neil Shapiro/usr/ucblib/aliases		/etc/mail/aliases
19206f25ae9SGregory Neil Shapiro
19306f25ae9SGregory Neil Shapiro/etc/sendmail.cw		/etc/mail/local-host-names
19406f25ae9SGregory Neil Shapiro/etc/mail/sendmail.cw		/etc/mail/local-host-names
19506f25ae9SGregory Neil Shapiro/etc/sendmail/sendmail.cw	/etc/mail/local-host-names
19606f25ae9SGregory Neil Shapiro
19706f25ae9SGregory Neil Shapiro/etc/sendmail.ct		/etc/mail/trusted-users
19806f25ae9SGregory Neil Shapiro
19906f25ae9SGregory Neil Shapiro/etc/sendmail.oE		/etc/mail/error-header
20006f25ae9SGregory Neil Shapiro
20106f25ae9SGregory Neil Shapiro/etc/sendmail.hf		/etc/mail/helpfile
20206f25ae9SGregory Neil Shapiro/etc/mail/sendmail.hf		/etc/mail/helpfile
20306f25ae9SGregory Neil Shapiro/usr/ucblib/sendmail.hf		/etc/mail/helpfile
20406f25ae9SGregory Neil Shapiro/etc/ucbmail/sendmail.hf	/etc/mail/helpfile
20506f25ae9SGregory Neil Shapiro/usr/lib/sendmail.hf		/etc/mail/helpfile
20606f25ae9SGregory Neil Shapiro/usr/share/lib/sendmail.hf	/etc/mail/helpfile
20706f25ae9SGregory Neil Shapiro/usr/share/misc/sendmail.hf	/etc/mail/helpfile
20806f25ae9SGregory Neil Shapiro/share/misc/sendmail.hf		/etc/mail/helpfile
20906f25ae9SGregory Neil Shapiro
21006f25ae9SGregory Neil Shapiro/etc/service.switch		/etc/mail/service.switch
21106f25ae9SGregory Neil Shapiro
21206f25ae9SGregory Neil Shapiro/etc/sendmail.st		/etc/mail/statistics
21306f25ae9SGregory Neil Shapiro/etc/mail/sendmail.st		/etc/mail/statistics
21406f25ae9SGregory Neil Shapiro/etc/mailer/sendmail.st		/etc/mail/statistics
21506f25ae9SGregory Neil Shapiro/etc/sendmail/sendmail.st	/etc/mail/statistics
21606f25ae9SGregory Neil Shapiro/usr/lib/sendmail.st		/etc/mail/statistics
21706f25ae9SGregory Neil Shapiro/usr/ucblib/sendmail.st		/etc/mail/statistics
21806f25ae9SGregory Neil Shapiro
21906f25ae9SGregory Neil ShapiroNote that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR
22006f25ae9SGregory Neil Shapiroto create the pathnames.  The default value of this variable is
22106f25ae9SGregory Neil Shapiro`/etc/mail/'.  If you set this macro to a different value, you MUST include
22206f25ae9SGregory Neil Shapiroa trailing slash.
223c2aa98e2SPeter Wemm
22413058a91SGregory Neil ShapiroNotice: all filenames used in a .mc (or .cf) file should be absolute
22513058a91SGregory Neil Shapiro(starting at the root, i.e., with '/').  Relative filenames most
22613058a91SGregory Neil Shapirolikely cause surprises during operations (unless otherwise noted).
22713058a91SGregory Neil Shapiro
22813058a91SGregory Neil Shapiro
229c2aa98e2SPeter Wemm+--------+
230c2aa98e2SPeter Wemm| OSTYPE |
231c2aa98e2SPeter Wemm+--------+
232c2aa98e2SPeter Wemm
233c2aa98e2SPeter WemmYou MUST define an operating system environment, or the configuration
234c2aa98e2SPeter Wemmfile build will puke.  There are several environments available; look
235c2aa98e2SPeter Wemmat the "ostype" directory for the current list.  This macro changes
236c2aa98e2SPeter Wemmthings like the location of the alias file and queue directory.  Some
237c2aa98e2SPeter Wemmof these files are identical to one another.
238c2aa98e2SPeter Wemm
239c2aa98e2SPeter WemmIt is IMPERATIVE that the OSTYPE occur before any MAILER definitions.
240c2aa98e2SPeter WemmIn general, the OSTYPE macro should go immediately after any version
241c2aa98e2SPeter Wemminformation, and MAILER definitions should always go last.
242c2aa98e2SPeter Wemm
243c2aa98e2SPeter WemmOperating system definitions are usually easy to write.  They may define
244c2aa98e2SPeter Wemmthe following variables (everything defaults, so an ostype file may be
245c2aa98e2SPeter Wemmempty).  Unfortunately, the list of configuration-supported systems is
246c2aa98e2SPeter Wemmnot as broad as the list of source-supported systems, since many of
247c2aa98e2SPeter Wemmthe source contributors do not include corresponding ostype files.
248c2aa98e2SPeter Wemm
24906f25ae9SGregory Neil ShapiroALIAS_FILE		[/etc/mail/aliases] The location of the text version
250c2aa98e2SPeter Wemm			of the alias file(s).  It can be a comma-separated
251c2aa98e2SPeter Wemm			list of names (but be sure you quote values with
252c2aa98e2SPeter Wemm			commas in them -- for example, use
253c2aa98e2SPeter Wemm				define(`ALIAS_FILE', `a,b')
254c2aa98e2SPeter Wemm			to get "a" and "b" both listed as alias files;
255c2aa98e2SPeter Wemm			otherwise the define() primitive only sees "a").
25606f25ae9SGregory Neil ShapiroHELP_FILE		[/etc/mail/helpfile] The name of the file
257c2aa98e2SPeter Wemm			containing information printed in response to
258c2aa98e2SPeter Wemm			the SMTP HELP command.
259c2aa98e2SPeter WemmQUEUE_DIR		[/var/spool/mqueue] The directory containing
26006f25ae9SGregory Neil Shapiro			queue files.  To use multiple queues, supply
26106f25ae9SGregory Neil Shapiro			a value ending with an asterisk.  For
262602a2b1bSGregory Neil Shapiro			example, /var/spool/mqueue/qd* will use all of the
26306f25ae9SGregory Neil Shapiro			directories or symbolic links to directories
264602a2b1bSGregory Neil Shapiro			beginning with 'qd' in /var/spool/mqueue as queue
26506f25ae9SGregory Neil Shapiro			directories.  The names 'qf', 'df', and 'xf' are
266602a2b1bSGregory Neil Shapiro			reserved as specific subdirectories for the
267602a2b1bSGregory Neil Shapiro			corresponding queue file types as explained in
268602a2b1bSGregory Neil Shapiro			doc/op/op.me.
26906f25ae9SGregory Neil ShapiroSTATUS_FILE		[/etc/mail/statistics] The file containing status
270c2aa98e2SPeter Wemm			information.
271c2aa98e2SPeter WemmLOCAL_MAILER_PATH	[/bin/mail] The program used to deliver local mail.
27206f25ae9SGregory Neil ShapiroLOCAL_MAILER_FLAGS	[Prmn9] The flags used by the local mailer.  The
27306f25ae9SGregory Neil Shapiro			flags lsDFMAw5:/|@q are always included.
274c2aa98e2SPeter WemmLOCAL_MAILER_ARGS	[mail -d $u] The arguments passed to deliver local
275c2aa98e2SPeter Wemm			mail.
276c2aa98e2SPeter WemmLOCAL_MAILER_MAX	[undefined] If defined, the maximum size of local
277c2aa98e2SPeter Wemm			mail that you are willing to accept.
27806f25ae9SGregory Neil ShapiroLOCAL_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
27906f25ae9SGregory Neil Shapiro			messages to deliver in a single connection.  Only
28006f25ae9SGregory Neil Shapiro			useful for LMTP local mailers.
281c2aa98e2SPeter WemmLOCAL_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
282c2aa98e2SPeter Wemm			that ARRIVE from an address that resolves to the
283c2aa98e2SPeter Wemm			local mailer and which are converted to MIME will be
284c2aa98e2SPeter Wemm			labeled with this character set.
28506f25ae9SGregory Neil ShapiroLOCAL_MAILER_EOL	[undefined] If defined, the string to use as the
28606f25ae9SGregory Neil Shapiro			end of line for the local mailer.
28706f25ae9SGregory Neil ShapiroLOCAL_MAILER_DSN_DIAGNOSTIC_CODE
28806f25ae9SGregory Neil Shapiro			[X-Unix] The DSN Diagnostic-Code value for the
28906f25ae9SGregory Neil Shapiro			local mailer.  This should be changed with care.
290c2aa98e2SPeter WemmLOCAL_SHELL_PATH	[/bin/sh] The shell used to deliver piped email.
291c2aa98e2SPeter WemmLOCAL_SHELL_FLAGS	[eu9] The flags used by the shell mailer.  The
292c2aa98e2SPeter Wemm			flags lsDFM are always included.
293c2aa98e2SPeter WemmLOCAL_SHELL_ARGS	[sh -c $u] The arguments passed to deliver "prog"
294c2aa98e2SPeter Wemm			mail.
295c2aa98e2SPeter WemmLOCAL_SHELL_DIR		[$z:/] The directory search path in which the
296c2aa98e2SPeter Wemm			shell should run.
297c2aa98e2SPeter WemmUSENET_MAILER_PATH	[/usr/lib/news/inews] The name of the program
298c2aa98e2SPeter Wemm			used to submit news.
29906f25ae9SGregory Neil ShapiroUSENET_MAILER_FLAGS	[rsDFMmn] The mailer flags for the usenet mailer.
300c2aa98e2SPeter WemmUSENET_MAILER_ARGS	[-m -h -n] The command line arguments for the
301c2aa98e2SPeter Wemm			usenet mailer.
302c2aa98e2SPeter WemmUSENET_MAILER_MAX	[100000] The maximum size of messages that will
303c2aa98e2SPeter Wemm			be accepted by the usenet mailer.
304c2aa98e2SPeter WemmSMTP_MAILER_FLAGS	[undefined] Flags added to SMTP mailer.  Default
30506f25ae9SGregory Neil Shapiro			flags are `mDFMuX' for all SMTP-based mailers; the
30606f25ae9SGregory Neil Shapiro			"esmtp" mailer adds `a'; "smtp8" adds `8'; and
30706f25ae9SGregory Neil Shapiro			"dsmtp" adds `%'.
30806f25ae9SGregory Neil ShapiroRELAY_MAILER_FLAGS	[undefined] Flags added to the relay mailer.  Default
30906f25ae9SGregory Neil Shapiro			flags are `mDFMuX' for all SMTP-based mailers; the
31006f25ae9SGregory Neil Shapiro			relay mailer adds `a8'.  If this is not defined,
31106f25ae9SGregory Neil Shapiro			then SMTP_MAILER_FLAGS is used.
312c2aa98e2SPeter WemmSMTP_MAILER_MAX		[undefined] The maximum size of messages that will
31306f25ae9SGregory Neil Shapiro			be transported using the smtp, smtp8, esmtp, or dsmtp
314c2aa98e2SPeter Wemm			mailers.
31506f25ae9SGregory Neil ShapiroSMTP_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
31606f25ae9SGregory Neil Shapiro			messages to deliver in a single connection for the
31706f25ae9SGregory Neil Shapiro			smtp, smtp8, esmtp, or dsmtp mailers.
31842e5d165SGregory Neil ShapiroSMTP_MAILER_ARGS	[TCP $h] The arguments passed to the smtp mailer.
319c2aa98e2SPeter Wemm			About the only reason you would want to change this
320c2aa98e2SPeter Wemm			would be to change the default port.
32142e5d165SGregory Neil ShapiroESMTP_MAILER_ARGS	[TCP $h] The arguments passed to the esmtp mailer.
32242e5d165SGregory Neil ShapiroSMTP8_MAILER_ARGS	[TCP $h] The arguments passed to the smtp8 mailer.
32342e5d165SGregory Neil ShapiroDSMTP_MAILER_ARGS	[TCP $h] The arguments passed to the dsmtp mailer.
32442e5d165SGregory Neil ShapiroRELAY_MAILER_ARGS	[TCP $h] The arguments passed to the relay mailer.
32506f25ae9SGregory Neil ShapiroRELAY_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
32606f25ae9SGregory Neil Shapiro			messages to deliver in a single connection for the
32706f25ae9SGregory Neil Shapiro			relay mailer.
328c2aa98e2SPeter WemmSMTP_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
329c2aa98e2SPeter Wemm			that ARRIVE from an address that resolves to one of
330c2aa98e2SPeter Wemm			the SMTP mailers and which are converted to MIME will
331c2aa98e2SPeter Wemm			be labeled with this character set.
332c2aa98e2SPeter WemmUUCP_MAILER_PATH	[/usr/bin/uux] The program used to send UUCP mail.
333c2aa98e2SPeter WemmUUCP_MAILER_FLAGS	[undefined] Flags added to UUCP mailer.  Default
334c2aa98e2SPeter Wemm			flags are `DFMhuU' (and `m' for uucp-new mailer,
335c2aa98e2SPeter Wemm			minus `U' for uucp-dom mailer).
336c2aa98e2SPeter WemmUUCP_MAILER_ARGS	[uux - -r -z -a$g -gC $h!rmail ($u)] The arguments
337c2aa98e2SPeter Wemm			passed to the UUCP mailer.
338c2aa98e2SPeter WemmUUCP_MAILER_MAX		[100000] The maximum size message accepted for
339c2aa98e2SPeter Wemm			transmission by the UUCP mailers.
340c2aa98e2SPeter WemmUUCP_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
341c2aa98e2SPeter Wemm			that ARRIVE from an address that resolves to one of
342c2aa98e2SPeter Wemm			the UUCP mailers and which are converted to MIME will
343c2aa98e2SPeter Wemm			be labeled with this character set.
344c2aa98e2SPeter WemmFAX_MAILER_PATH		[/usr/local/lib/fax/mailfax] The program used to
345c2aa98e2SPeter Wemm			submit FAX messages.
346c2aa98e2SPeter WemmFAX_MAILER_ARGS		[mailfax $u $h $f] The arguments passed to the FAX
347c2aa98e2SPeter Wemm			mailer.
348c2aa98e2SPeter WemmFAX_MAILER_MAX		[100000] The maximum size message accepted for
349c2aa98e2SPeter Wemm			transmission by FAX.
350c2aa98e2SPeter WemmPOP_MAILER_PATH		[/usr/lib/mh/spop] The pathname of the POP mailer.
35106f25ae9SGregory Neil ShapiroPOP_MAILER_FLAGS	[Penu] Flags added to POP mailer.  Flags lsDFMq
352c2aa98e2SPeter Wemm			are always added.
353c2aa98e2SPeter WemmPOP_MAILER_ARGS		[pop $u] The arguments passed to the POP mailer.
354c2aa98e2SPeter WemmPROCMAIL_MAILER_PATH	[/usr/local/bin/procmail] The path to the procmail
3552e43090eSPeter Wemm			program.  This is also used by
3562e43090eSPeter Wemm			FEATURE(`local_procmail').
357c2aa98e2SPeter WemmPROCMAIL_MAILER_FLAGS	[SPhnu9] Flags added to Procmail mailer.  Flags
35806f25ae9SGregory Neil Shapiro			DFM are always set.  This is NOT used by
3592e43090eSPeter Wemm			FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS
360c2aa98e2SPeter Wemm			instead.
361c2aa98e2SPeter WemmPROCMAIL_MAILER_ARGS	[procmail -Y -m $h $f $u] The arguments passed to
362c2aa98e2SPeter Wemm			the Procmail mailer.  This is NOT used by
3632e43090eSPeter Wemm			FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS
364c2aa98e2SPeter Wemm			instead.
365c2aa98e2SPeter WemmPROCMAIL_MAILER_MAX	[undefined] If set, the maximum size message that
366c2aa98e2SPeter Wemm			will be accepted by the procmail mailer.
367c2aa98e2SPeter WemmMAIL11_MAILER_PATH	[/usr/etc/mail11] The path to the mail11 mailer.
368c2aa98e2SPeter WemmMAIL11_MAILER_FLAGS	[nsFx] Flags for the mail11 mailer.
369c2aa98e2SPeter WemmMAIL11_MAILER_ARGS	[mail11 $g $x $h $u] Arguments passed to the mail11
370c2aa98e2SPeter Wemm			mailer.
371c2aa98e2SPeter WemmPH_MAILER_PATH		[/usr/local/etc/phquery] The path to the phquery
372c2aa98e2SPeter Wemm			program.
37306f25ae9SGregory Neil ShapiroPH_MAILER_FLAGS		[ehmu] Flags for the phquery mailer.  Flags nrDFM
37406f25ae9SGregory Neil Shapiro			are always set.
375c2aa98e2SPeter WemmPH_MAILER_ARGS		[phquery -- $u] -- arguments to the phquery mailer.
37606f25ae9SGregory Neil ShapiroCYRUS_MAILER_FLAGS	[Ah5@/:|] The flags used by the cyrus mailer.  The
377c2aa98e2SPeter Wemm			flags lsDFMnPq are always included.
378c2aa98e2SPeter WemmCYRUS_MAILER_PATH	[/usr/cyrus/bin/deliver] The program used to deliver
379c2aa98e2SPeter Wemm			cyrus mail.
380c2aa98e2SPeter WemmCYRUS_MAILER_ARGS	[deliver -e -m $h -- $u] The arguments passed
381c2aa98e2SPeter Wemm			to deliver cyrus mail.
382c2aa98e2SPeter WemmCYRUS_MAILER_MAX	[undefined] If set, the maximum size message that
383c2aa98e2SPeter Wemm			will be accepted by the cyrus mailer.
384c2aa98e2SPeter WemmCYRUS_MAILER_USER	[cyrus:mail] The user and group to become when
385c2aa98e2SPeter Wemm			running the cyrus mailer.
38606f25ae9SGregory Neil ShapiroCYRUS_BB_MAILER_FLAGS	[u] The flags used by the cyrusbb mailer.
38706f25ae9SGregory Neil Shapiro			The flags lsDFMnP are always included.
388c2aa98e2SPeter WemmCYRUS_BB_MAILER_ARGS	[deliver -e -m $u] The arguments passed
389c2aa98e2SPeter Wemm			to deliver cyrusbb mail.
390c2aa98e2SPeter WemmconfEBINDIR		[/usr/libexec] The directory for executables.
3912e43090eSPeter Wemm			Currently used for FEATURE(`local_lmtp') and
3922e43090eSPeter Wemm			FEATURE(`smrsh').
39306f25ae9SGregory Neil ShapiroQPAGE_MAILER_FLAGS	[mDFMs] The flags used by the qpage mailer.
39406f25ae9SGregory Neil ShapiroQPAGE_MAILER_PATH	[/usr/local/bin/qpage] The program used to deliver
39506f25ae9SGregory Neil Shapiro			qpage mail.
39606f25ae9SGregory Neil ShapiroQPAGE_MAILER_ARGS	[qpage -l0 -m -P$u] The arguments passed
39706f25ae9SGregory Neil Shapiro			to deliver qpage mail.
39806f25ae9SGregory Neil ShapiroQPAGE_MAILER_MAX	[4096] If set, the maximum size message that
39906f25ae9SGregory Neil Shapiro			will be accepted by the qpage mailer.
400c2aa98e2SPeter Wemm
40106f25ae9SGregory Neil ShapiroNote: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS:
40206f25ae9SGregory Neil ShapiroMODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of
40306f25ae9SGregory Neil Shapirothe macro Name_MAILER_FLAGS and change can be: flags that should
40406f25ae9SGregory Neil Shapirobe used directly (thus overriding the default value), or if it
40506f25ae9SGregory Neil Shapirostarts with `+' (`-') then those flags are added to (removed from)
40606f25ae9SGregory Neil Shapirothe default value.  Example:
40706f25ae9SGregory Neil Shapiro
40806f25ae9SGregory Neil Shapiro	MODIFY_MAILER_FLAGS(`LOCAL', `+e')
40906f25ae9SGregory Neil Shapiro
41006f25ae9SGregory Neil Shapirowill add the flag `e' to LOCAL_MAILER_FLAGS.
41106f25ae9SGregory Neil ShapiroWARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS
41206f25ae9SGregory Neil Shapirounconditionally, i.e., without respecting any definitions in an
41306f25ae9SGregory Neil ShapiroOSTYPE setting.
414c2aa98e2SPeter Wemm
415c2aa98e2SPeter Wemm
416c2aa98e2SPeter Wemm+---------+
417c2aa98e2SPeter Wemm| DOMAINS |
418c2aa98e2SPeter Wemm+---------+
419c2aa98e2SPeter Wemm
420c2aa98e2SPeter WemmYou will probably want to collect domain-dependent defines into one
42106f25ae9SGregory Neil Shapirofile, referenced by the DOMAIN macro.  For example, the Berkeley
422c2aa98e2SPeter Wemmdomain file includes definitions for several internal distinguished
423c2aa98e2SPeter Wemmhosts:
424c2aa98e2SPeter Wemm
425c2aa98e2SPeter WemmUUCP_RELAY	The host that will accept UUCP-addressed email.
426c2aa98e2SPeter Wemm		If not defined, all UUCP sites must be directly
427c2aa98e2SPeter Wemm		connected.
428c2aa98e2SPeter WemmBITNET_RELAY	The host that will accept BITNET-addressed email.
429c2aa98e2SPeter Wemm		If not defined, the .BITNET pseudo-domain won't work.
430c2aa98e2SPeter WemmDECNET_RELAY	The host that will accept DECNET-addressed email.
431c2aa98e2SPeter Wemm		If not defined, the .DECNET pseudo-domain and addresses
432c2aa98e2SPeter Wemm		of the form node::user will not work.
433c2aa98e2SPeter WemmFAX_RELAY	The host that will accept mail to the .FAX pseudo-domain.
434c2aa98e2SPeter Wemm		The "fax" mailer overrides this value.
435193538b7SGregory Neil ShapiroLOCAL_RELAY	The site that will handle unqualified names -- that
436193538b7SGregory Neil Shapiro		is, names with out an @domain extension.
437193538b7SGregory Neil Shapiro		Normally MAIL_HUB is preferred for this function.
438193538b7SGregory Neil Shapiro		LOCAL_RELAY is mostly useful in conjunction with
439193538b7SGregory Neil Shapiro		FEATURE(stickyhost) -- see the discussion of
440193538b7SGregory Neil Shapiro		stickyhost below.  If not set, they are assumed to
441193538b7SGregory Neil Shapiro		belong on this machine.  This allows you to have a
442193538b7SGregory Neil Shapiro		central site to store a company- or department-wide
443193538b7SGregory Neil Shapiro		alias database.  This only works at small sites,
444193538b7SGregory Neil Shapiro		and only with some user agents.
445c2aa98e2SPeter WemmLUSER_RELAY	The site that will handle lusers -- that is, apparently
44606f25ae9SGregory Neil Shapiro		local names that aren't local accounts or aliases.  To
44706f25ae9SGregory Neil Shapiro		specify a local user instead of a site, set this to
44806f25ae9SGregory Neil Shapiro		``local:username''.
449c2aa98e2SPeter Wemm
450c2aa98e2SPeter WemmAny of these can be either ``mailer:hostname'' (in which case the
451c2aa98e2SPeter Wemmmailer is the internal mailer name, such as ``uucp-new'' and the hostname
452c2aa98e2SPeter Wemmis the name of the host as appropriate for that mailer) or just a
453c2aa98e2SPeter Wemm``hostname'', in which case a default mailer type (usually ``relay'',
454c2aa98e2SPeter Wemma variant on SMTP) is used.  WARNING: if you have a wildcard MX
455c2aa98e2SPeter Wemmrecord matching your domain, you probably want to define these to
456c2aa98e2SPeter Wemmhave a trailing dot so that you won't get the mail diverted back
457c2aa98e2SPeter Wemmto yourself.
458c2aa98e2SPeter Wemm
459c2aa98e2SPeter WemmThe domain file can also be used to define a domain name, if needed
460c2aa98e2SPeter Wemm(using "DD<domain>") and set certain site-wide features.  If all hosts
461c2aa98e2SPeter Wemmat your site masquerade behind one email name, you could also use
462c2aa98e2SPeter WemmMASQUERADE_AS here.
463c2aa98e2SPeter Wemm
464c2aa98e2SPeter WemmYou do not have to define a domain -- in particular, if you are a
465c2aa98e2SPeter Wemmsingle machine sitting off somewhere, it is probably more work than
466c2aa98e2SPeter Wemmit's worth.  This is just a mechanism for combining "domain dependent
467c2aa98e2SPeter Wemmknowledge" into one place.
468c2aa98e2SPeter Wemm
469c2aa98e2SPeter Wemm+---------+
470c2aa98e2SPeter Wemm| MAILERS |
471c2aa98e2SPeter Wemm+---------+
472c2aa98e2SPeter Wemm
473c2aa98e2SPeter WemmThere are fewer mailers supported in this version than the previous
474c2aa98e2SPeter Wemmversion, owing mostly to a simpler world.  As a general rule, put the
47506f25ae9SGregory Neil ShapiroMAILER definitions last in your .mc file, and always put MAILER(`smtp')
47606f25ae9SGregory Neil Shapirobefore MAILER(`uucp') and MAILER(`procmail') -- several features and
47706f25ae9SGregory Neil Shapirodefinitions will modify the definition of mailers, and the smtp mailer
47806f25ae9SGregory Neil Shapiromodifies the UUCP mailer.  Moreover, MAILER(`cyrus'), MAILER(`pop'),
47906f25ae9SGregory Neil ShapiroMAILER(`phquery'), and MAILER(`usenet') must be defined after
48006f25ae9SGregory Neil ShapiroMAILER(`local').
481c2aa98e2SPeter Wemm
482c2aa98e2SPeter Wemmlocal		The local and prog mailers.  You will almost always
483c2aa98e2SPeter Wemm		need these; the only exception is if you relay ALL
484c2aa98e2SPeter Wemm		your mail to another site.  This mailer is included
485c2aa98e2SPeter Wemm		automatically.
486c2aa98e2SPeter Wemm
487c2aa98e2SPeter Wemmsmtp		The Simple Mail Transport Protocol mailer.  This does
488c2aa98e2SPeter Wemm		not hide hosts behind a gateway or another other
489c2aa98e2SPeter Wemm		such hack; it assumes a world where everyone is
490c2aa98e2SPeter Wemm		running the name server.  This file actually defines
49106f25ae9SGregory Neil Shapiro		five mailers: "smtp" for regular (old-style) SMTP to
492c2aa98e2SPeter Wemm		other servers, "esmtp" for extended SMTP to other
493c2aa98e2SPeter Wemm		servers, "smtp8" to do SMTP to other servers without
494c2aa98e2SPeter Wemm		converting 8-bit data to MIME (essentially, this is
495c2aa98e2SPeter Wemm		your statement that you know the other end is 8-bit
49606f25ae9SGregory Neil Shapiro		clean even if it doesn't say so), "dsmtp" to do on
49706f25ae9SGregory Neil Shapiro		demand delivery, and "relay" for transmission to the
49806f25ae9SGregory Neil Shapiro		RELAY_HOST, LUSER_RELAY, or MAIL_HUB.
499c2aa98e2SPeter Wemm
50042e5d165SGregory Neil Shapirouucp		The UNIX-to-UNIX Copy Program mailer.  Actually, this
501c2aa98e2SPeter Wemm		defines two mailers, "uucp-old" (a.k.a. "uucp") and
502c2aa98e2SPeter Wemm		"uucp-new" (a.k.a. "suucp").  The latter is for when you
503c2aa98e2SPeter Wemm		know that the UUCP mailer at the other end can handle
504c2aa98e2SPeter Wemm		multiple recipients in one transfer.  If the smtp mailer
505c2aa98e2SPeter Wemm		is also included in your configuration, two other mailers
506c2aa98e2SPeter Wemm		("uucp-dom" and "uucp-uudom") are also defined [warning:
507c2aa98e2SPeter Wemm		you MUST specify MAILER(smtp) before MAILER(uucp)].  When you
508c2aa98e2SPeter Wemm		include the uucp mailer, sendmail looks for all names in
50906f25ae9SGregory Neil Shapiro		class {U} and sends them to the uucp-old mailer; all
51006f25ae9SGregory Neil Shapiro		names in class {Y} are sent to uucp-new; and all
51106f25ae9SGregory Neil Shapiro		names in class {Z} are sent to uucp-uudom.  Note that
512c2aa98e2SPeter Wemm		this is a function of what version of rmail runs on
513c2aa98e2SPeter Wemm		the receiving end, and hence may be out of your control.
514c2aa98e2SPeter Wemm		See the section below describing UUCP mailers in more
515c2aa98e2SPeter Wemm		detail.
516c2aa98e2SPeter Wemm
517c2aa98e2SPeter Wemmusenet		Usenet (network news) delivery.  If this is specified,
518c2aa98e2SPeter Wemm		an extra rule is added to ruleset 0 that forwards all
519c2aa98e2SPeter Wemm		local email for users named ``group.usenet'' to the
520c2aa98e2SPeter Wemm		``inews'' program.  Note that this works for all groups,
521c2aa98e2SPeter Wemm		and may be considered a security problem.
522c2aa98e2SPeter Wemm
523c2aa98e2SPeter Wemmfax		Facsimile transmission.  This is experimental and based
524c2aa98e2SPeter Wemm		on Sam Leffler's HylaFAX software.  For more information,
525193538b7SGregory Neil Shapiro		see http://www.hylafax.org/.
526c2aa98e2SPeter Wemm
527c2aa98e2SPeter Wemmpop		Post Office Protocol.
528c2aa98e2SPeter Wemm
529c2aa98e2SPeter Wemmprocmail	An interface to procmail (does not come with sendmail).
530c2aa98e2SPeter Wemm		This is designed to be used in mailertables.  For example,
531c2aa98e2SPeter Wemm		a common question is "how do I forward all mail for a given
532c2aa98e2SPeter Wemm		domain to a single person?".  If you have this mailer
533c2aa98e2SPeter Wemm		defined, you could set up a mailertable reading:
534c2aa98e2SPeter Wemm
535c2aa98e2SPeter Wemm			host.com	procmail:/etc/procmailrcs/host.com
536c2aa98e2SPeter Wemm
537c2aa98e2SPeter Wemm		with the file /etc/procmailrcs/host.com reading:
538c2aa98e2SPeter Wemm
539c2aa98e2SPeter Wemm			:0	# forward mail for host.com
540c2aa98e2SPeter Wemm			! -oi -f $1 person@other.host
541c2aa98e2SPeter Wemm
542c2aa98e2SPeter Wemm		This would arrange for (anything)@host.com to be sent
543c2aa98e2SPeter Wemm		to person@other.host.  Within the procmail script, $1 is
544c2aa98e2SPeter Wemm		the name of the sender and $2 is the name of the recipient.
5452e43090eSPeter Wemm		If you use this with FEATURE(`local_procmail'), the FEATURE
546c2aa98e2SPeter Wemm		should be listed first.
547c2aa98e2SPeter Wemm
548c2aa98e2SPeter Wemmmail11		The DECnet mail11 mailer, useful only if you have the mail11
549c2aa98e2SPeter Wemm		program from gatekeeper.dec.com:/pub/DEC/gwtools (and
550c2aa98e2SPeter Wemm		DECnet, of course).  This is for Phase IV DECnet support;
551c2aa98e2SPeter Wemm		if you have Phase V at your site you may have additional
552c2aa98e2SPeter Wemm		problems.
553c2aa98e2SPeter Wemm
554c2aa98e2SPeter Wemmphquery		The phquery program.  This is somewhat counterintuitively
555c2aa98e2SPeter Wemm		referenced as the "ph" mailer internally.  It can be used
556c2aa98e2SPeter Wemm		to do CCSO name server lookups.  The phquery program, which
557c2aa98e2SPeter Wemm		this mailer uses, is distributed with the ph client.
558c2aa98e2SPeter Wemm
559c2aa98e2SPeter Wemmcyrus		The cyrus and cyrusbb mailers.  The cyrus mailer delivers to
560c2aa98e2SPeter Wemm		a local cyrus user.  this mailer can make use of the
561c2aa98e2SPeter Wemm		"user+detail@local.host" syntax; it will deliver the mail to
562c2aa98e2SPeter Wemm		the user's "detail" mailbox if the mailbox's ACL permits.
563c2aa98e2SPeter Wemm		The cyrusbb mailer delivers to a system-wide cyrus mailbox
56406f25ae9SGregory Neil Shapiro		if the mailbox's ACL permits.  The cyrus mailer must be
56506f25ae9SGregory Neil Shapiro		defined after the local mailer.
566c2aa98e2SPeter Wemm
56706f25ae9SGregory Neil Shapiroqpage		A mailer for QuickPage, a pager interface.  See
56806f25ae9SGregory Neil Shapiro		http://www.qpage.org/ for further information.
569c2aa98e2SPeter Wemm
570c2aa98e2SPeter WemmThe local mailer accepts addresses of the form "user+detail", where
571c2aa98e2SPeter Wemmthe "+detail" is not used for mailbox matching but is available
5722e43090eSPeter Wemmto certain local mail programs (in particular, see
5732e43090eSPeter WemmFEATURE(`local_procmail')).  For example, "eric", "eric+sendmail", and
5742e43090eSPeter Wemm"eric+sww" all indicate the same user, but additional arguments <null>,
5752e43090eSPeter Wemm"sendmail", and "sww" may be provided for use in sorting mail.
576c2aa98e2SPeter Wemm
577c2aa98e2SPeter Wemm
578c2aa98e2SPeter Wemm+----------+
579c2aa98e2SPeter Wemm| FEATURES |
580c2aa98e2SPeter Wemm+----------+
581c2aa98e2SPeter Wemm
582c2aa98e2SPeter WemmSpecial features can be requested using the "FEATURE" macro.  For
583c2aa98e2SPeter Wemmexample, the .mc line:
584c2aa98e2SPeter Wemm
5852e43090eSPeter Wemm	FEATURE(`use_cw_file')
586c2aa98e2SPeter Wemm
58706f25ae9SGregory Neil Shapirotells sendmail that you want to have it read an /etc/mail/local-host-names
58806f25ae9SGregory Neil Shapirofile to get values for class {w}.  The FEATURE may contain up to 9
58906f25ae9SGregory Neil Shapirooptional parameters -- for example:
590c2aa98e2SPeter Wemm
5912e43090eSPeter Wemm	FEATURE(`mailertable', `dbm /usr/lib/mailertable')
592c2aa98e2SPeter Wemm
593c2aa98e2SPeter WemmThe default database map type for the table features can be set with
594c2aa98e2SPeter Wemm
595c2aa98e2SPeter Wemm	define(`DATABASE_MAP_TYPE', `dbm')
596c2aa98e2SPeter Wemm
597c2aa98e2SPeter Wemmwhich would set it to use ndbm databases.  The default is the Berkeley DB
598c2aa98e2SPeter Wemmhash database format.  Note that you must still declare a database map type
599c2aa98e2SPeter Wemmif you specify an argument to a FEATURE.  DATABASE_MAP_TYPE is only used
60006f25ae9SGregory Neil Shapiroif no argument is given for the FEATURE.  It must be specified before any
60106f25ae9SGregory Neil Shapirofeature that uses a map.
602c2aa98e2SPeter Wemm
603c2aa98e2SPeter WemmAvailable features are:
604c2aa98e2SPeter Wemm
60506f25ae9SGregory Neil Shapirouse_cw_file	Read the file /etc/mail/local-host-names file to get
60606f25ae9SGregory Neil Shapiro		alternate names for this host.  This might be used if you
60706f25ae9SGregory Neil Shapiro		were on a host that MXed for a dynamic set of other hosts.
60806f25ae9SGregory Neil Shapiro		If the set is static, just including the line "Cw<name1>
60906f25ae9SGregory Neil Shapiro		<name2> ..." (where the names are fully qualified domain
61006f25ae9SGregory Neil Shapiro		names) is probably superior.  The actual filename can be
61106f25ae9SGregory Neil Shapiro		overridden by redefining confCW_FILE.
612c2aa98e2SPeter Wemm
61306f25ae9SGregory Neil Shapirouse_ct_file	Read the file /etc/mail/trusted-users file to get the
61406f25ae9SGregory Neil Shapiro		names of users that will be ``trusted'', that is, able to
61506f25ae9SGregory Neil Shapiro		set their envelope from address using -f without generating
61606f25ae9SGregory Neil Shapiro		a warning message.  The actual filename can be overridden
61706f25ae9SGregory Neil Shapiro		by redefining confCT_FILE.
618c2aa98e2SPeter Wemm
619c2aa98e2SPeter Wemmredirect	Reject all mail addressed to "address.REDIRECT" with
62006f25ae9SGregory Neil Shapiro		a ``551 User has moved; please try <address>'' message.
621c2aa98e2SPeter Wemm		If this is set, you can alias people who have left
622c2aa98e2SPeter Wemm		to their new address with ".REDIRECT" appended.
623c2aa98e2SPeter Wemm
62406f25ae9SGregory Neil Shapironouucp		Don't route UUCP addresses.  This feature takes one
62506f25ae9SGregory Neil Shapiro		parameter:
62606f25ae9SGregory Neil Shapiro		`reject': reject addresses which have "!" in the local
62706f25ae9SGregory Neil Shapiro			part unless it originates from a system
62806f25ae9SGregory Neil Shapiro			that is allowed to relay.
62906f25ae9SGregory Neil Shapiro		`nospecial': don't do anything special with "!".
63006f25ae9SGregory Neil Shapiro		Warnings: 1. See the NOTICE in the ANTI-SPAM section.
63106f25ae9SGregory Neil Shapiro		2. don't remove "!" from OperatorChars if `reject' is
63206f25ae9SGregory Neil Shapiro		given as parameter.
633c2aa98e2SPeter Wemm
63406f25ae9SGregory Neil Shapironocanonify	Don't pass addresses to $[ ... $] for canonification
635193538b7SGregory Neil Shapiro		by default, i.e., host/domain names are considered canonical,
636193538b7SGregory Neil Shapiro		except for unqualified names, which must not be used in this
637193538b7SGregory Neil Shapiro		mode (violation of the standard).  It can be changed by
638193538b7SGregory Neil Shapiro		setting the DaemonPortOptions modifiers (M=).  That is,
63906f25ae9SGregory Neil Shapiro		FEATURE(`nocanonify') will be overridden by setting the
64006f25ae9SGregory Neil Shapiro		'c' flag.  Conversely, if FEATURE(`nocanonify') is not used,
64106f25ae9SGregory Neil Shapiro		it can be emulated by setting the 'C' flag
64206f25ae9SGregory Neil Shapiro		(DaemonPortOptions=Modifiers=C).  This would generally only
64306f25ae9SGregory Neil Shapiro		be used by sites that only act as mail gateways or which have
64406f25ae9SGregory Neil Shapiro		user agents that do full canonification themselves.  You may
64506f25ae9SGregory Neil Shapiro		also want to use
64606f25ae9SGregory Neil Shapiro		"define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off
64706f25ae9SGregory Neil Shapiro		the usual resolver options that do a similar thing.
64806f25ae9SGregory Neil Shapiro
64906f25ae9SGregory Neil Shapiro		An exception list for FEATURE(`nocanonify') can be
65006f25ae9SGregory Neil Shapiro		specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE,
65106f25ae9SGregory Neil Shapiro		i.e., a list of domains which are nevertheless passed to
65206f25ae9SGregory Neil Shapiro		$[ ... $] for canonification.  This is useful to turn on
65306f25ae9SGregory Neil Shapiro		canonification for local domains, e.g., use
65406f25ae9SGregory Neil Shapiro		CANONIFY_DOMAIN(`my.domain my') to canonify addresses
65506f25ae9SGregory Neil Shapiro		which end in "my.domain" or "my".
65606f25ae9SGregory Neil Shapiro		Another way to require canonification in the local
65706f25ae9SGregory Neil Shapiro		domain is CANONIFY_DOMAIN(`$=m').
65806f25ae9SGregory Neil Shapiro
65906f25ae9SGregory Neil Shapiro		A trailing dot is added to addresses with more than
66006f25ae9SGregory Neil Shapiro		one component in it such that other features which
66106f25ae9SGregory Neil Shapiro		expect a trailing dot (e.g., virtusertable) will
66206f25ae9SGregory Neil Shapiro		still work.
66306f25ae9SGregory Neil Shapiro
66406f25ae9SGregory Neil Shapiro		If `canonify_hosts' is specified as parameter, i.e.,
66506f25ae9SGregory Neil Shapiro		FEATURE(`nocanonify', `canonify_hosts'), then
66606f25ae9SGregory Neil Shapiro		addresses which have only a hostname, e.g.,
66706f25ae9SGregory Neil Shapiro		<user@host>, will be canonified (and hopefully fully
66806f25ae9SGregory Neil Shapiro		qualified), too.
669c2aa98e2SPeter Wemm
670193538b7SGregory Neil Shapirostickyhost	This feature is sometimes used with LOCAL_RELAY,
671193538b7SGregory Neil Shapiro		although it can be used for a different effect with
672193538b7SGregory Neil Shapiro		MAIL_HUB.
673193538b7SGregory Neil Shapiro
674602a2b1bSGregory Neil Shapiro		When used without MAIL_HUB, email sent to
675193538b7SGregory Neil Shapiro		"user@local.host" are marked as "sticky" -- that
676193538b7SGregory Neil Shapiro		is, the local addresses aren't matched against UDB,
677193538b7SGregory Neil Shapiro		don't go through ruleset 5, and are not forwarded to
678193538b7SGregory Neil Shapiro		the LOCAL_RELAY (if defined).
679193538b7SGregory Neil Shapiro
680193538b7SGregory Neil Shapiro		With MAIL_HUB, mail addressed to "user@local.host"
681193538b7SGregory Neil Shapiro		is forwarded to the mail hub, with the envelope
682193538b7SGregory Neil Shapiro		address still remaining "user@local.host".
683193538b7SGregory Neil Shapiro		Without stickyhost, the envelope would be changed
684193538b7SGregory Neil Shapiro		to "user@mail_hub", in order to protect against
685193538b7SGregory Neil Shapiro		mailing loops.
686c2aa98e2SPeter Wemm
687c2aa98e2SPeter Wemmmailertable	Include a "mailer table" which can be used to override
68806f25ae9SGregory Neil Shapiro		routing for particular domains (which are not in class {w},
68906f25ae9SGregory Neil Shapiro		i.e.  local host names).  The argument of the FEATURE may be
69006f25ae9SGregory Neil Shapiro		the key definition.  If none is specified, the definition
69106f25ae9SGregory Neil Shapiro		used is:
6922e43090eSPeter Wemm
69306f25ae9SGregory Neil Shapiro			hash /etc/mail/mailertable
6942e43090eSPeter Wemm
695c2aa98e2SPeter Wemm		Keys in this database are fully qualified domain names
696c2aa98e2SPeter Wemm		or partial domains preceded by a dot -- for example,
69706f25ae9SGregory Neil Shapiro		"vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU".  As a
69806f25ae9SGregory Neil Shapiro		special case of the latter, "." matches any domain not
69906f25ae9SGregory Neil Shapiro		covered by other keys.  Values must be of the form:
700c2aa98e2SPeter Wemm			mailer:domain
701c2aa98e2SPeter Wemm		where "mailer" is the internal mailer name, and "domain"
702c2aa98e2SPeter Wemm		is where to send the message.  These maps are not
703c2aa98e2SPeter Wemm		reflected into the message header.  As a special case,
704c2aa98e2SPeter Wemm		the forms:
705c2aa98e2SPeter Wemm			local:user
706c2aa98e2SPeter Wemm		will forward to the indicated user using the local mailer,
707c2aa98e2SPeter Wemm			local:
708c2aa98e2SPeter Wemm		will forward to the original user in the e-mail address
709c2aa98e2SPeter Wemm		using the local mailer, and
710c2aa98e2SPeter Wemm			error:code message
71106f25ae9SGregory Neil Shapiro			error:D.S.N:code message
71206f25ae9SGregory Neil Shapiro		will give an error message with the indicated SMTP reply
71306f25ae9SGregory Neil Shapiro		code and message, where D.S.N is an RFC 1893 compliant
71406f25ae9SGregory Neil Shapiro		error code.
715c2aa98e2SPeter Wemm
716c2aa98e2SPeter Wemmdomaintable	Include a "domain table" which can be used to provide
717c2aa98e2SPeter Wemm		domain name mapping.  Use of this should really be
718c2aa98e2SPeter Wemm		limited to your own domains.  It may be useful if you
719c2aa98e2SPeter Wemm		change names (e.g., your company changes names from
720c2aa98e2SPeter Wemm		oldname.com to newname.com).  The argument of the
721c2aa98e2SPeter Wemm		FEATURE may be the key definition.  If none is specified,
722c2aa98e2SPeter Wemm		the definition used is:
7232e43090eSPeter Wemm
72406f25ae9SGregory Neil Shapiro			hash /etc/mail/domaintable
7252e43090eSPeter Wemm
726c2aa98e2SPeter Wemm		The key in this table is the domain name; the value is
727c2aa98e2SPeter Wemm		the new (fully qualified) domain.  Anything in the
728c2aa98e2SPeter Wemm		domaintable is reflected into headers; that is, this
729c2aa98e2SPeter Wemm		is done in ruleset 3.
730c2aa98e2SPeter Wemm
731c2aa98e2SPeter Wemmbitdomain	Look up bitnet hosts in a table to try to turn them into
732c2aa98e2SPeter Wemm		internet addresses.  The table can be built using the
733c2aa98e2SPeter Wemm		bitdomain program contributed by John Gardiner Myers.
734c2aa98e2SPeter Wemm		The argument of the FEATURE may be the key definition; if
735c2aa98e2SPeter Wemm		none is specified, the definition used is:
7362e43090eSPeter Wemm
73706f25ae9SGregory Neil Shapiro			hash /etc/mail/bitdomain
7382e43090eSPeter Wemm
739c2aa98e2SPeter Wemm		Keys are the bitnet hostname; values are the corresponding
740c2aa98e2SPeter Wemm		internet hostname.
741c2aa98e2SPeter Wemm
742c2aa98e2SPeter Wemmuucpdomain	Similar feature for UUCP hosts.  The default map definition
743c2aa98e2SPeter Wemm		is:
7442e43090eSPeter Wemm
74506f25ae9SGregory Neil Shapiro			hash /etc/mail/uudomain
7462e43090eSPeter Wemm
747c2aa98e2SPeter Wemm		At the moment there is no automagic tool to build this
748c2aa98e2SPeter Wemm		database.
749c2aa98e2SPeter Wemm
750c2aa98e2SPeter Wemmalways_add_domain
751c2aa98e2SPeter Wemm		Include the local host domain even on locally delivered
752c2aa98e2SPeter Wemm		mail.  Normally it is not added on unqualified names.
753c2aa98e2SPeter Wemm		However, if you use a shared message store but do not use
754c2aa98e2SPeter Wemm		the same user name space everywhere, you may need the host
755c2aa98e2SPeter Wemm		name on local names.
756c2aa98e2SPeter Wemm
757c2aa98e2SPeter Wemmallmasquerade	If masquerading is enabled (using MASQUERADE_AS), this
758c2aa98e2SPeter Wemm		feature will cause recipient addresses to also masquerade
759c2aa98e2SPeter Wemm		as being from the masquerade host.  Normally they get
760c2aa98e2SPeter Wemm		the local hostname.  Although this may be right for
761c2aa98e2SPeter Wemm		ordinary users, it can break local aliases.  For example,
762c2aa98e2SPeter Wemm		if you send to "localalias", the originating sendmail will
763c2aa98e2SPeter Wemm		find that alias and send to all members, but send the
764c2aa98e2SPeter Wemm		message with "To: localalias@masqueradehost".  Since that
765c2aa98e2SPeter Wemm		alias likely does not exist, replies will fail.  Use this
766c2aa98e2SPeter Wemm		feature ONLY if you can guarantee that the ENTIRE
767c2aa98e2SPeter Wemm		namespace on your masquerade host supersets all the
768c2aa98e2SPeter Wemm		local entries.
769c2aa98e2SPeter Wemm
770c2aa98e2SPeter Wemmlimited_masquerade
77106f25ae9SGregory Neil Shapiro		Normally, any hosts listed in class {w} are masqueraded.  If
77206f25ae9SGregory Neil Shapiro		this feature is given, only the hosts listed in class {M} (see
77306f25ae9SGregory Neil Shapiro		below:  MASQUERADE_DOMAIN) are masqueraded.  This is useful
77406f25ae9SGregory Neil Shapiro		if you have several domains with disjoint namespaces hosted
77506f25ae9SGregory Neil Shapiro		on the same machine.
776c2aa98e2SPeter Wemm
777c2aa98e2SPeter Wemmmasquerade_entire_domain
778c2aa98e2SPeter Wemm		If masquerading is enabled (using MASQUERADE_AS) and
779c2aa98e2SPeter Wemm		MASQUERADE_DOMAIN (see below) is set, this feature will
780c2aa98e2SPeter Wemm		cause addresses to be rewritten such that the masquerading
781c2aa98e2SPeter Wemm		domains are actually entire domains to be hidden.  All
782c2aa98e2SPeter Wemm		hosts within the masquerading domains will be rewritten
783c2aa98e2SPeter Wemm		to the masquerade name (used in MASQUERADE_AS).  For example,
784c2aa98e2SPeter Wemm		if you have:
785c2aa98e2SPeter Wemm
78606f25ae9SGregory Neil Shapiro			MASQUERADE_AS(`masq.com')
78706f25ae9SGregory Neil Shapiro			MASQUERADE_DOMAIN(`foo.org')
78806f25ae9SGregory Neil Shapiro			MASQUERADE_DOMAIN(`bar.com')
789c2aa98e2SPeter Wemm
790c2aa98e2SPeter Wemm		then *foo.org and *bar.com are converted to masq.com.  Without
791c2aa98e2SPeter Wemm		this feature, only foo.org and bar.com are masqueraded.
792c2aa98e2SPeter Wemm
793c2aa98e2SPeter Wemm		    NOTE: only domains within your jurisdiction and
794c2aa98e2SPeter Wemm		    current hierarchy should be masqueraded using this.
795c2aa98e2SPeter Wemm
79606f25ae9SGregory Neil Shapirogenericstable	This feature will cause unqualified addresses (i.e., without
79706f25ae9SGregory Neil Shapiro		a domain) and addresses with a domain listed in class {G}
79806f25ae9SGregory Neil Shapiro		to be looked up in a map and turned into another ("generic")
79906f25ae9SGregory Neil Shapiro		form, which can change both the domain name and the user name.
80006f25ae9SGregory Neil Shapiro		This is similar to the userdb functionality.  The same types of
80106f25ae9SGregory Neil Shapiro		addresses as for masquerading are looked up, i.e., only header
802c2aa98e2SPeter Wemm		sender addresses unless the allmasquerade and/or
803c2aa98e2SPeter Wemm		masquerade_envelope features are given.  Qualified addresses
80406f25ae9SGregory Neil Shapiro		must have the domain part in class {G}; entries can
80506f25ae9SGregory Neil Shapiro		be added to this class by the macros GENERICS_DOMAIN or
80606f25ae9SGregory Neil Shapiro		GENERICS_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
80706f25ae9SGregory Neil Shapiro		MASQUERADE_DOMAIN_FILE, see below).
808c2aa98e2SPeter Wemm
8092e43090eSPeter Wemm		The argument of FEATURE(`genericstable') may be the map
810c2aa98e2SPeter Wemm		definition; the default map definition is:
811c2aa98e2SPeter Wemm
81206f25ae9SGregory Neil Shapiro			hash /etc/mail/genericstable
813c2aa98e2SPeter Wemm
81406f25ae9SGregory Neil Shapiro		The key for this table is either the full address, the domain
81506f25ae9SGregory Neil Shapiro		(with a leading @; the localpart is passed as first argument)
81606f25ae9SGregory Neil Shapiro		or the unqualified username (tried in the order mentioned);
81706f25ae9SGregory Neil Shapiro		the value is the new user address.  If the new user address
81806f25ae9SGregory Neil Shapiro		does not include a domain, it will be qualified in the standard
81906f25ae9SGregory Neil Shapiro		manner, i.e., using $j or the masquerade name.  Note that the
820c2aa98e2SPeter Wemm		address being looked up must be fully qualified.  For local
8212e43090eSPeter Wemm		mail, it is necessary to use FEATURE(`always_add_domain')
8222e43090eSPeter Wemm		for the addresses to be qualified.
82306f25ae9SGregory Neil Shapiro		The "+detail" of an address is passed as %1, so entries like
82406f25ae9SGregory Neil Shapiro
82506f25ae9SGregory Neil Shapiro			old+*@foo.org	new+%1@example.com
82606f25ae9SGregory Neil Shapiro			gen+*@foo.org	%1@example.com
82706f25ae9SGregory Neil Shapiro
82806f25ae9SGregory Neil Shapiro		and other forms are possible.
82906f25ae9SGregory Neil Shapiro
83006f25ae9SGregory Neil Shapirogenerics_entire_domain
83106f25ae9SGregory Neil Shapiro		If the genericstable is enabled and GENERICS_DOMAIN or
83206f25ae9SGregory Neil Shapiro		GENERICS_DOMAIN_FILE is used, this feature will cause
83306f25ae9SGregory Neil Shapiro		addresses to be searched in the map if their domain
83406f25ae9SGregory Neil Shapiro		parts are subdomains of elements in class {G}.
835c2aa98e2SPeter Wemm
836c2aa98e2SPeter Wemmvirtusertable	A domain-specific form of aliasing, allowing multiple
837c2aa98e2SPeter Wemm		virtual domains to be hosted on one machine.  For example,
838c2aa98e2SPeter Wemm		if the virtuser table contained:
839c2aa98e2SPeter Wemm
840c2aa98e2SPeter Wemm			info@foo.com	foo-info
841c2aa98e2SPeter Wemm			info@bar.com	bar-info
84206f25ae9SGregory Neil Shapiro			joe@bar.com	error:nouser No such user here
84306f25ae9SGregory Neil Shapiro			jax@bar.com	error:D.S.N:unavailable Address invalid
84406f25ae9SGregory Neil Shapiro			@baz.org	jane@example.net
845c2aa98e2SPeter Wemm
846c2aa98e2SPeter Wemm		then mail addressed to info@foo.com will be sent to the
847c2aa98e2SPeter Wemm		address foo-info, mail addressed to info@bar.com will be
84806f25ae9SGregory Neil Shapiro		delivered to bar-info, and mail addressed to anyone at baz.org
84906f25ae9SGregory Neil Shapiro		will be sent to jane@example.net, mail to joe@bar.com will
85006f25ae9SGregory Neil Shapiro		be rejected with the specified error message, and mail to
85106f25ae9SGregory Neil Shapiro		jax@bar.com will also have a RFC 1893 compliant error code
85206f25ae9SGregory Neil Shapiro		D.S.N.
853c2aa98e2SPeter Wemm
85406f25ae9SGregory Neil Shapiro		The username from the original address is passed
85506f25ae9SGregory Neil Shapiro		as %1 allowing:
856c2aa98e2SPeter Wemm
85706f25ae9SGregory Neil Shapiro			@foo.org	%1@example.com
85806f25ae9SGregory Neil Shapiro
85906f25ae9SGregory Neil Shapiro		meaning someone@foo.org will be sent to someone@example.com.
86006f25ae9SGregory Neil Shapiro		Additionally, if the local part consists of "user+detail"
86106f25ae9SGregory Neil Shapiro		then "detail" is passed as %2 when a match against user+*
86206f25ae9SGregory Neil Shapiro		is attempted, so entries like
86306f25ae9SGregory Neil Shapiro
86406f25ae9SGregory Neil Shapiro			old+*@foo.org	new+%2@example.com
86506f25ae9SGregory Neil Shapiro			gen+*@foo.org	%2@example.com
86606f25ae9SGregory Neil Shapiro			+*@foo.org	%1+%2@example.com
86706f25ae9SGregory Neil Shapiro
86806f25ae9SGregory Neil Shapiro		and other forms are possible.  Note: to preserve "+detail"
86906f25ae9SGregory Neil Shapiro		for a default case (@domain) +*@domain must be used as
87006f25ae9SGregory Neil Shapiro		exemplified above.
871c2aa98e2SPeter Wemm
872c2aa98e2SPeter Wemm		All the host names on the left hand side (foo.com, bar.com,
87306f25ae9SGregory Neil Shapiro		and baz.org) must be in class {w} or class {VirtHost}, the
87406f25ae9SGregory Neil Shapiro		latter can be defined by the macros VIRTUSER_DOMAIN or
87506f25ae9SGregory Neil Shapiro		VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
87606f25ae9SGregory Neil Shapiro		MASQUERADE_DOMAIN_FILE, see below).  If VIRTUSER_DOMAIN or
87706f25ae9SGregory Neil Shapiro		VIRTUSER_DOMAIN_FILE is used, then the entries of class
87806f25ae9SGregory Neil Shapiro		{VirtHost} are added to class {R}, i.e., relaying is allowed
87906f25ae9SGregory Neil Shapiro		to (and from) those domains.  The default map definition is:
880c2aa98e2SPeter Wemm
88106f25ae9SGregory Neil Shapiro			hash /etc/mail/virtusertable
882c2aa98e2SPeter Wemm
883c2aa98e2SPeter Wemm		A new definition can be specified as the second argument of
884c2aa98e2SPeter Wemm		the FEATURE macro, such as
885c2aa98e2SPeter Wemm
88606f25ae9SGregory Neil Shapiro			FEATURE(`virtusertable', `dbm /etc/mail/virtusers')
887c2aa98e2SPeter Wemm
88806f25ae9SGregory Neil Shapirovirtuser_entire_domain
88906f25ae9SGregory Neil Shapiro		If the virtusertable is enabled and VIRTUSER_DOMAIN or
89006f25ae9SGregory Neil Shapiro		VIRTUSER_DOMAIN_FILE is used, this feature will cause
89106f25ae9SGregory Neil Shapiro		addresses to be searched in the map if their domain
89206f25ae9SGregory Neil Shapiro		parts are subdomains of elements in class {VirtHost}.
89306f25ae9SGregory Neil Shapiro
89406f25ae9SGregory Neil Shapiroldap_routing	Implement LDAP-based e-mail recipient routing according to
89506f25ae9SGregory Neil Shapiro		the Internet Draft draft-lachman-laser-ldap-mail-routing-01.
89606f25ae9SGregory Neil Shapiro		This provides a method to re-route addresses with a
89706f25ae9SGregory Neil Shapiro		domain portion in class {LDAPRoute} to either a
89806f25ae9SGregory Neil Shapiro		different mail host or a different address.  Hosts can
89906f25ae9SGregory Neil Shapiro		be added to this class using LDAPROUTE_DOMAIN and
90006f25ae9SGregory Neil Shapiro		LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
90106f25ae9SGregory Neil Shapiro		MASQUERADE_DOMAIN_FILE, see below).
90206f25ae9SGregory Neil Shapiro
90306f25ae9SGregory Neil Shapiro		See the LDAP ROUTING section below for more information.
90406f25ae9SGregory Neil Shapiro
90506f25ae9SGregory Neil Shapironodns		If you aren't running DNS at your site (for example,
90606f25ae9SGregory Neil Shapiro		you are UUCP-only connected).  It's hard to consider
907c2aa98e2SPeter Wemm		this a "feature", but hey, it had to go somewhere.
908c2aa98e2SPeter Wemm		Actually, as of 8.7 this is a no-op -- remove "dns" from
909c2aa98e2SPeter Wemm		the hosts service switch entry instead.
910c2aa98e2SPeter Wemm
91106f25ae9SGregory Neil Shapironullclient	This is a special case -- it creates a configuration file
91206f25ae9SGregory Neil Shapiro		containing nothing but support for forwarding all mail to a
91306f25ae9SGregory Neil Shapiro		central hub via a local SMTP-based network.  The argument
91406f25ae9SGregory Neil Shapiro		is the name of that hub.
915c2aa98e2SPeter Wemm
916c2aa98e2SPeter Wemm		The only other feature that should be used in conjunction
91706f25ae9SGregory Neil Shapiro		with this one is FEATURE(`nocanonify').  No mailers
918c2aa98e2SPeter Wemm		should be defined.  No aliasing or forwarding is done.
919c2aa98e2SPeter Wemm
920c2aa98e2SPeter Wemmlocal_lmtp	Use an LMTP capable local mailer.  The argument to this
921c2aa98e2SPeter Wemm		feature is the pathname of an LMTP capable mailer.  By
922c2aa98e2SPeter Wemm		default, mail.local is used.  This is expected to be the
923c2aa98e2SPeter Wemm		mail.local which came with the 8.9 distribution which is
924c2aa98e2SPeter Wemm		LMTP capable.  The path to mail.local is set by the
925c2aa98e2SPeter Wemm		confEBINDIR m4 variable -- making the default
926c2aa98e2SPeter Wemm		LOCAL_MAILER_PATH /usr/libexec/mail.local.
92706f25ae9SGregory Neil Shapiro		WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
92806f25ae9SGregory Neil Shapiro		i.e., without respecting any definitions in an OSTYPE setting.
929c2aa98e2SPeter Wemm
93006f25ae9SGregory Neil Shapirolocal_procmail	Use procmail or another delivery agent as the local mailer.
93106f25ae9SGregory Neil Shapiro		The argument to this feature is the pathname of the
93206f25ae9SGregory Neil Shapiro		delivery agent, which defaults to PROCMAIL_MAILER_PATH.
93306f25ae9SGregory Neil Shapiro		Note that this does NOT use PROCMAIL_MAILER_FLAGS or
93406f25ae9SGregory Neil Shapiro		PROCMAIL_MAILER_ARGS for the local mailer; tweak
93506f25ae9SGregory Neil Shapiro		LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or
93606f25ae9SGregory Neil Shapiro		specify the appropriate parameters.  When procmail is used,
93706f25ae9SGregory Neil Shapiro		the local mailer can make use of the
93806f25ae9SGregory Neil Shapiro		"user+indicator@local.host" syntax; normally the +indicator
93906f25ae9SGregory Neil Shapiro		is just tossed, but by default it is passed as the -a
94006f25ae9SGregory Neil Shapiro		argument to procmail.
94106f25ae9SGregory Neil Shapiro
94206f25ae9SGregory Neil Shapiro		This feature can take up to three arguments:
94306f25ae9SGregory Neil Shapiro
94406f25ae9SGregory Neil Shapiro		1. Path to the mailer program
94506f25ae9SGregory Neil Shapiro		   [default: /usr/local/bin/procmail]
94606f25ae9SGregory Neil Shapiro		2. Argument vector including name of the program
94706f25ae9SGregory Neil Shapiro		   [default: procmail -Y -a $h -d $u]
94806f25ae9SGregory Neil Shapiro		3. Flags for the mailer [default: SPfhn9]
94906f25ae9SGregory Neil Shapiro
95006f25ae9SGregory Neil Shapiro		Empty arguments cause the defaults to be taken.
95106f25ae9SGregory Neil Shapiro
95206f25ae9SGregory Neil Shapiro		For example, this allows it to use the maildrop
95306f25ae9SGregory Neil Shapiro		(http://www.flounder.net/~mrsam/maildrop/) mailer instead
95406f25ae9SGregory Neil Shapiro		by specifying:
95506f25ae9SGregory Neil Shapiro
95606f25ae9SGregory Neil Shapiro		FEATURE(`local_procmail', `/usr/local/bin/maildrop',
95706f25ae9SGregory Neil Shapiro		 `maildrop -d $u')
95806f25ae9SGregory Neil Shapiro
95906f25ae9SGregory Neil Shapiro		or scanmails using:
96006f25ae9SGregory Neil Shapiro
96106f25ae9SGregory Neil Shapiro		FEATURE(`local_procmail', `/usr/local/bin/scanmails')
96206f25ae9SGregory Neil Shapiro
96306f25ae9SGregory Neil Shapiro		WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
96406f25ae9SGregory Neil Shapiro		i.e.,  without respecting any definitions in an OSTYPE setting.
965c2aa98e2SPeter Wemm
966c2aa98e2SPeter Wemmbestmx_is_local	Accept mail as though locally addressed for any host that
967c2aa98e2SPeter Wemm		lists us as the best possible MX record.  This generates
968c2aa98e2SPeter Wemm		additional DNS traffic, but should be OK for low to
969c2aa98e2SPeter Wemm		medium traffic hosts.  The argument may be a set of
970c2aa98e2SPeter Wemm		domains, which will limit the feature to only apply to
971c2aa98e2SPeter Wemm		these domains -- this will reduce unnecessary DNS
972c2aa98e2SPeter Wemm		traffic.  THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH
973c2aa98e2SPeter Wemm		WILDCARD MX RECORDS!!!  If you have a wildcard MX record
974c2aa98e2SPeter Wemm		that matches your domain, you cannot use this feature.
975c2aa98e2SPeter Wemm
976c2aa98e2SPeter Wemmsmrsh		Use the SendMail Restricted SHell (smrsh) provided
977c2aa98e2SPeter Wemm		with the distribution instead of /bin/sh for mailing
978c2aa98e2SPeter Wemm		to programs.  This improves the ability of the local
979c2aa98e2SPeter Wemm		system administrator to control what gets run via
980c2aa98e2SPeter Wemm		e-mail.  If an argument is provided it is used as the
981c2aa98e2SPeter Wemm		pathname to smrsh; otherwise, the path defined by
982c2aa98e2SPeter Wemm		confEBINDIR is used for the smrsh binary -- by default,
983c2aa98e2SPeter Wemm		/usr/libexec/smrsh is assumed.
984c2aa98e2SPeter Wemm
985c2aa98e2SPeter Wemmpromiscuous_relay
986c2aa98e2SPeter Wemm		By default, the sendmail configuration files do not permit
987c2aa98e2SPeter Wemm		mail relaying (that is, accepting mail from outside your
98806f25ae9SGregory Neil Shapiro		local host (class {w}) and sending it to another host than
98906f25ae9SGregory Neil Shapiro		your local host).  This option sets your site to allow
99006f25ae9SGregory Neil Shapiro		mail relaying from any site to any site.  In almost all
99106f25ae9SGregory Neil Shapiro		cases, it is better to control relaying more carefully
99206f25ae9SGregory Neil Shapiro		with the access map, class {R}, or authentication.  Domains
99306f25ae9SGregory Neil Shapiro		can be added to class {R} by the macros RELAY_DOMAIN or
99406f25ae9SGregory Neil Shapiro		RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
99506f25ae9SGregory Neil Shapiro		MASQUERADE_DOMAIN_FILE, see below).
996c2aa98e2SPeter Wemm
997c2aa98e2SPeter Wemmrelay_entire_domain
998c2aa98e2SPeter Wemm		By default, only hosts listed as RELAY in the access db
999c2aa98e2SPeter Wemm		will be allowed to relay.  This option also allows any
100006f25ae9SGregory Neil Shapiro		host in your domain as defined by class {m}.
1001c2aa98e2SPeter Wemm
1002c2aa98e2SPeter Wemmrelay_hosts_only
1003c2aa98e2SPeter Wemm		By default, names that are listed as RELAY in the access
100406f25ae9SGregory Neil Shapiro		db and class {R} are domain names, not host names.
1005c2aa98e2SPeter Wemm		For example, if you specify ``foo.com'', then mail to or
1006c2aa98e2SPeter Wemm		from foo.com, abc.foo.com, or a.very.deep.domain.foo.com
1007c2aa98e2SPeter Wemm		will all be accepted for relaying.  This feature changes
1008c2aa98e2SPeter Wemm		the behaviour to lookup individual host names only.
1009c2aa98e2SPeter Wemm
1010c2aa98e2SPeter Wemmrelay_based_on_MX
1011c2aa98e2SPeter Wemm		Turns on the ability to allow relaying based on the MX
1012065a643dSPeter Wemm		records of the host portion of an incoming recipient; that
1013065a643dSPeter Wemm		is, if an MX record for host foo.com points to your site,
1014065a643dSPeter Wemm		you will accept and relay mail addressed to foo.com.  See
1015c2aa98e2SPeter Wemm		description below for more information before using this
1016065a643dSPeter Wemm		feature.  Also, see the KNOWNBUGS entry regarding bestmx
1017065a643dSPeter Wemm		map lookups.
1018065a643dSPeter Wemm
10192e43090eSPeter Wemm		FEATURE(`relay_based_on_MX') does not necessarily allow
1020065a643dSPeter Wemm		routing of these messages which you expect to be allowed,
1021065a643dSPeter Wemm		if route address syntax (or %-hack syntax) is used.  If
1022065a643dSPeter Wemm		this is a problem, add entries to the access-table or use
10232e43090eSPeter Wemm		FEATURE(`loose_relay_check').
1024c2aa98e2SPeter Wemm
102506f25ae9SGregory Neil Shapirorelay_mail_from
102606f25ae9SGregory Neil Shapiro		Allows relaying if the mail sender is listed as RELAY in
102706f25ae9SGregory Neil Shapiro		the access map.  If an optional argument `domain' is given,
102806f25ae9SGregory Neil Shapiro		the domain portion of the mail sender is checked too.
102906f25ae9SGregory Neil Shapiro		This should only be used if absolutely necessary as the
103006f25ae9SGregory Neil Shapiro		sender address can be easily forged.  Use of this feature
103106f25ae9SGregory Neil Shapiro		requires the "From:" tag be prepended to the key in the
103206f25ae9SGregory Neil Shapiro		access map; see the discussion of tags and
103306f25ae9SGregory Neil Shapiro		FEATURE(`relay_mail_from') in the section on ANTI-SPAM
103406f25ae9SGregory Neil Shapiro		CONFIGURATION CONTROL.
103506f25ae9SGregory Neil Shapiro
1036c2aa98e2SPeter Wemmrelay_local_from
1037c2aa98e2SPeter Wemm		Allows relaying if the domain portion of the mail sender
1038c2aa98e2SPeter Wemm		is a local host.  This should only be used if absolutely
1039065a643dSPeter Wemm		necessary as it opens a window for spammers.  Specifically,
1040065a643dSPeter Wemm		they can send mail to your mail server that claims to be
1041065a643dSPeter Wemm		from your domain (either directly or via a routed address),
1042065a643dSPeter Wemm		and you will go ahead and relay it out to arbitrary hosts
1043065a643dSPeter Wemm		on the Internet.
1044c2aa98e2SPeter Wemm
1045c2aa98e2SPeter Wemmaccept_unqualified_senders
1046c2aa98e2SPeter Wemm		Normally, MAIL FROM: commands in the SMTP session will be
1047c2aa98e2SPeter Wemm		refused if the connection is a network connection and the
1048c2aa98e2SPeter Wemm		sender address does not include a domain name.  If your
104906f25ae9SGregory Neil Shapiro		setup sends local mail unqualified (i.e., MAIL FROM: <joe>),
1050c2aa98e2SPeter Wemm		you will need to use this feature to accept unqualified
105106f25ae9SGregory Neil Shapiro		sender addresses.  Setting the DaemonPortOptions modifier
105206f25ae9SGregory Neil Shapiro		'u' overrides the default behavior, i.e., unqualified
105306f25ae9SGregory Neil Shapiro		addresses are accepted even without this FEATURE.
105406f25ae9SGregory Neil Shapiro		If this FEATURE is not used, the DaemonPortOptions modifier
105506f25ae9SGregory Neil Shapiro		'f' can be used to enforce fully qualified addresses.
1056c2aa98e2SPeter Wemm
1057c2aa98e2SPeter Wemmaccept_unresolvable_domains
1058c2aa98e2SPeter Wemm		Normally, MAIL FROM: commands in the SMTP session will be
105906f25ae9SGregory Neil Shapiro		refused if the host part of the argument to MAIL FROM:
106006f25ae9SGregory Neil Shapiro		cannot be located in the host name service (e.g., an A or
106106f25ae9SGregory Neil Shapiro		MX record in DNS).  If you are inside a firewall that has
106206f25ae9SGregory Neil Shapiro		only a limited view of the Internet host name space, this
106306f25ae9SGregory Neil Shapiro		could cause problems.  In this case you probably want to
106406f25ae9SGregory Neil Shapiro		use this feature to accept all domains on input, even if
106506f25ae9SGregory Neil Shapiro		they are unresolvable.
1066c2aa98e2SPeter Wemm
1067c2aa98e2SPeter Wemmaccess_db	Turns on the access database feature.  The access db gives
1068c2aa98e2SPeter Wemm		you the ability to allow or refuse to accept mail from
1069c2aa98e2SPeter Wemm		specified domains for administrative reasons.  By default,
10702e43090eSPeter Wemm		the access database specification is:
10712e43090eSPeter Wemm
107206f25ae9SGregory Neil Shapiro			hash /etc/mail/access
10732e43090eSPeter Wemm
107406f25ae9SGregory Neil Shapiro		The format of the database is described in the anti-spam
107506f25ae9SGregory Neil Shapiro		configuration control section later in this document.
1076c2aa98e2SPeter Wemm
1077c2aa98e2SPeter Wemmblacklist_recipients
1078c2aa98e2SPeter Wemm		Turns on the ability to block incoming mail for certain
1079c2aa98e2SPeter Wemm		recipient usernames, hostnames, or addresses.  For
1080c2aa98e2SPeter Wemm		example, you can block incoming mail to user nobody,
1081c2aa98e2SPeter Wemm		host foo.mydomain.com, or guest@bar.mydomain.com.
1082c2aa98e2SPeter Wemm		These specifications are put in the access db as
108306f25ae9SGregory Neil Shapiro		described in the anti-spam configuration control section
108406f25ae9SGregory Neil Shapiro		later in this document.
1085c2aa98e2SPeter Wemm
1086193538b7SGregory Neil Shapirodelay_checks	The rulesets check_mail and check_relay will not be called
1087193538b7SGregory Neil Shapiro		when a client connects or issues a MAIL command, respectively.
1088193538b7SGregory Neil Shapiro		Instead, those rulesets will be called by the check_rcpt
1089193538b7SGregory Neil Shapiro		ruleset; they will be skipped under certain circumstances.
1090193538b7SGregory Neil Shapiro		See "Delay all checks" in "ANTI-SPAM CONFIGURATION CONTROL".
1091193538b7SGregory Neil Shapiro
109206f25ae9SGregory Neil Shapirorbl		This feature is deprecated! Please use dnsbl instead.
109306f25ae9SGregory Neil Shapiro		Turns on rejection of hosts found in the Realtime Blackhole
109406f25ae9SGregory Neil Shapiro		List.  If an argument is provided it is used as the domain
109513058a91SGregory Neil Shapiro		in which blocked hosts are listed; otherwise, the main RBL
109613058a91SGregory Neil Shapiro		domain rbl.maps.vix.com is used (see NOTE below).  For
109713058a91SGregory Neil Shapiro		details, see http://maps.vix.com/rbl/.
1098c2aa98e2SPeter Wemm
109906f25ae9SGregory Neil Shapirodnsbl		Turns on rejection of hosts found in an DNS based rejection
110006f25ae9SGregory Neil Shapiro		list.  If an argument is provided it is used as the domain
110106f25ae9SGregory Neil Shapiro		in which blocked hosts are listed; otherwise it defaults to
1102193538b7SGregory Neil Shapiro		blackholes.mail-abuse.org.  An explanation for an DNS based
1103193538b7SGregory Neil Shapiro		rejection list can be found http://mail-abuse.org/rbl/.  A
1104193538b7SGregory Neil Shapiro		second argument can be used to change the default error
1105193538b7SGregory Neil Shapiro		message of Mail from $&{client_addr} refused by blackhole site
1106193538b7SGregory Neil Shapiro		SERVER where SERVER is replaced by the first argument.  This
1107193538b7SGregory Neil Shapiro		feature can be included several times to query different DNS
1108193538b7SGregory Neil Shapiro		based rejection lists.
110906f25ae9SGregory Neil Shapiro
111013058a91SGregory Neil Shapiro		NOTE: The default DNS blacklist, blackholes.mail-abuse.org,
111113058a91SGregory Neil Shapiro		is a service offered by the Mail Abuse Prevention System
111213058a91SGregory Neil Shapiro		(MAPS).  As of July 31, 2001, MAPS is a subscription
111313058a91SGregory Neil Shapiro		service, so using that network address won't work if you
111413058a91SGregory Neil Shapiro		haven't subscribed.  Contact MAPS to subscribe
111513058a91SGregory Neil Shapiro		(http://mail-abuse.org/).
111613058a91SGregory Neil Shapiro
1117c2aa98e2SPeter Wemmloose_relay_check
111806f25ae9SGregory Neil Shapiro		Normally, if % addressing is used for a recipient, e.g.
111906f25ae9SGregory Neil Shapiro		user%site@othersite, and othersite is in class {R}, the
1120c2aa98e2SPeter Wemm		check_rcpt ruleset will strip @othersite and recheck
1121c2aa98e2SPeter Wemm		user@site for relaying.  This feature changes that
1122c2aa98e2SPeter Wemm		behavior.  It should not be needed for most installations.
1123c2aa98e2SPeter Wemm
112406f25ae9SGregory Neil Shapirono_default_msa	Don't generate the default MSA daemon, i.e.,
112506f25ae9SGregory Neil Shapiro		DAEMON_OPTIONS(`Port=587,Name=MSA,M=E')
112606f25ae9SGregory Neil Shapiro		To define a MSA daemon with other parameters, use this
112706f25ae9SGregory Neil Shapiro		FEATURE and introduce new settings via DAEMON_OPTIONS().
1128c2aa98e2SPeter Wemm
1129c2aa98e2SPeter Wemm+-------+
1130c2aa98e2SPeter Wemm| HACKS |
1131c2aa98e2SPeter Wemm+-------+
1132c2aa98e2SPeter Wemm
1133c2aa98e2SPeter WemmSome things just can't be called features.  To make this clear,
1134c2aa98e2SPeter Wemmthey go in the hack subdirectory and are referenced using the HACK
1135c2aa98e2SPeter Wemmmacro.  These will tend to be site-dependent.  The release
1136c2aa98e2SPeter Wemmincludes the Berkeley-dependent "cssubdomain" hack (that makes
1137c2aa98e2SPeter Wemmsendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU;
113806f25ae9SGregory Neil Shapirothis is intended as a short-term aid while moving hosts into
1139c2aa98e2SPeter Wemmsubdomains.
1140c2aa98e2SPeter Wemm
1141c2aa98e2SPeter Wemm
1142c2aa98e2SPeter Wemm+--------------------+
1143c2aa98e2SPeter Wemm| SITE CONFIGURATION |
1144c2aa98e2SPeter Wemm+--------------------+
1145c2aa98e2SPeter Wemm
1146c2aa98e2SPeter Wemm    *****************************************************
1147c2aa98e2SPeter Wemm    * This section is really obsolete, and is preserved	*
1148c2aa98e2SPeter Wemm    * only for back compatibility.  You should plan on	*
1149c2aa98e2SPeter Wemm    * using mailertables for new installations.	  In	*
1150c2aa98e2SPeter Wemm    * particular, it doesn't work for the newer forms	*
1151c2aa98e2SPeter Wemm    * of UUCP mailers, such as uucp-uudom.		*
1152c2aa98e2SPeter Wemm    *****************************************************
1153c2aa98e2SPeter Wemm
1154c2aa98e2SPeter WemmComplex sites will need more local configuration information, such as
1155c2aa98e2SPeter Wemmlists of UUCP hosts they speak with directly.  This can get a bit more
1156c2aa98e2SPeter Wemmtricky.  For an example of a "complex" site, see cf/ucbvax.mc.
1157c2aa98e2SPeter Wemm
1158c2aa98e2SPeter WemmThe SITECONFIG macro allows you to indirectly reference site-dependent
1159c2aa98e2SPeter Wemmconfiguration information stored in the siteconfig subdirectory.  For
1160c2aa98e2SPeter Wemmexample, the line
1161c2aa98e2SPeter Wemm
116206f25ae9SGregory Neil Shapiro	SITECONFIG(`uucp.ucbvax', `ucbvax', `U')
1163c2aa98e2SPeter Wemm
1164c2aa98e2SPeter Wemmreads the file uucp.ucbvax for local connection information.  The
1165c2aa98e2SPeter Wemmsecond parameter is the local name (in this case just "ucbvax" since
1166c2aa98e2SPeter Wemmit is locally connected, and hence a UUCP hostname).  The third
1167c2aa98e2SPeter Wemmparameter is the name of both a macro to store the local name (in
116806f25ae9SGregory Neil Shapirothis case, {U}) and the name of the class (e.g., {U}) in which to store
1169c2aa98e2SPeter Wemmthe host information read from the file.  Another SITECONFIG line reads
1170c2aa98e2SPeter Wemm
117106f25ae9SGregory Neil Shapiro	SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W')
1172c2aa98e2SPeter Wemm
1173c2aa98e2SPeter WemmThis says that the file uucp.ucbarpa contains the list of UUCP sites
117406f25ae9SGregory Neil Shapiroconnected to ucbarpa.Berkeley.EDU.  Class {W} will be used to
1175c2aa98e2SPeter Wemmstore this list, and $W is defined to be ucbarpa.Berkeley.EDU, that
1176c2aa98e2SPeter Wemmis, the name of the relay to which the hosts listed in uucp.ucbarpa
117706f25ae9SGregory Neil Shapiroare connected.  [The machine ucbarpa is gone now, but this
117806f25ae9SGregory Neil Shapiroout-of-date configuration file has been left around to demonstrate
117906f25ae9SGregory Neil Shapirohow you might do this.]
1180c2aa98e2SPeter Wemm
1181c2aa98e2SPeter WemmNote that the case of SITECONFIG with a third parameter of ``U'' is
1182c2aa98e2SPeter Wemmspecial; the second parameter is assumed to be the UUCP name of the
1183c2aa98e2SPeter Wemmlocal site, rather than the name of a remote site, and the UUCP name
118406f25ae9SGregory Neil Shapirois entered into class {w} (the list of local hostnames) as $U.UUCP.
1185c2aa98e2SPeter Wemm
1186c2aa98e2SPeter WemmThe siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing
1187c2aa98e2SPeter Wemmmore than a sequence of SITE macros describing connectivity.  For
1188c2aa98e2SPeter Wemmexample:
1189c2aa98e2SPeter Wemm
119006f25ae9SGregory Neil Shapiro	SITE(`cnmat')
119106f25ae9SGregory Neil Shapiro	SITE(`sgi olympus')
1192c2aa98e2SPeter Wemm
1193c2aa98e2SPeter WemmThe second example demonstrates that you can use two names on the
1194c2aa98e2SPeter Wemmsame line; these are usually aliases for the same host (or are at
1195c2aa98e2SPeter Wemmleast in the same company).
1196c2aa98e2SPeter Wemm
1197c2aa98e2SPeter Wemm
1198c2aa98e2SPeter Wemm+--------------------+
1199c2aa98e2SPeter Wemm| USING UUCP MAILERS |
1200c2aa98e2SPeter Wemm+--------------------+
1201c2aa98e2SPeter Wemm
1202c2aa98e2SPeter WemmIt's hard to get UUCP mailers right because of the extremely ad hoc
1203c2aa98e2SPeter Wemmnature of UUCP addressing.  These config files are really designed
1204c2aa98e2SPeter Wemmfor domain-based addressing, even for UUCP sites.
1205c2aa98e2SPeter Wemm
1206c2aa98e2SPeter WemmThere are four UUCP mailers available.  The choice of which one to
1207c2aa98e2SPeter Wemmuse is partly a matter of local preferences and what is running at
1208c2aa98e2SPeter Wemmthe other end of your UUCP connection.  Unlike good protocols that
1209c2aa98e2SPeter Wemmdefine what will go over the wire, UUCP uses the policy that you
1210c2aa98e2SPeter Wemmshould do what is right for the other end; if they change, you have
1211c2aa98e2SPeter Wemmto change.  This makes it hard to do the right thing, and discourages
1212c2aa98e2SPeter Wemmpeople from updating their software.  In general, if you can avoid
1213c2aa98e2SPeter WemmUUCP, please do.
1214c2aa98e2SPeter Wemm
1215c2aa98e2SPeter WemmThe major choice is whether to go for a domainized scheme or a
1216c2aa98e2SPeter Wemmnon-domainized scheme.  This depends entirely on what the other
1217c2aa98e2SPeter Wemmend will recognize.  If at all possible, you should encourage the
1218c2aa98e2SPeter Wemmother end to go to a domain-based system -- non-domainized addresses
1219c2aa98e2SPeter Wemmdon't work entirely properly.
1220c2aa98e2SPeter Wemm
1221c2aa98e2SPeter WemmThe four mailers are:
1222c2aa98e2SPeter Wemm
1223c2aa98e2SPeter Wemm    uucp-old (obsolete name: "uucp")
1224c2aa98e2SPeter Wemm	This is the oldest, the worst (but the closest to UUCP) way of
1225c2aa98e2SPeter Wemm	sending messages accros UUCP connections.  It does bangify
1226c2aa98e2SPeter Wemm	everything and prepends $U (your UUCP name) to the sender's
1227c2aa98e2SPeter Wemm	address (which can already be a bang path itself).  It can
1228c2aa98e2SPeter Wemm	only send to one address at a time, so it spends a lot of
1229c2aa98e2SPeter Wemm	time copying duplicates of messages.  Avoid this if at all
1230c2aa98e2SPeter Wemm	possible.
1231c2aa98e2SPeter Wemm
1232c2aa98e2SPeter Wemm    uucp-new (obsolete name: "suucp")
1233c2aa98e2SPeter Wemm	The same as above, except that it assumes that in one rmail
1234c2aa98e2SPeter Wemm	command you can specify several recipients.  It still has a
1235c2aa98e2SPeter Wemm	lot of other problems.
1236c2aa98e2SPeter Wemm
1237c2aa98e2SPeter Wemm    uucp-dom
1238c2aa98e2SPeter Wemm	This UUCP mailer keeps everything as domain addresses.
1239c2aa98e2SPeter Wemm	Basically, it uses the SMTP mailer rewriting rules.  This mailer
124006f25ae9SGregory Neil Shapiro	is only included if MAILER(`smtp') is also specified.
1241c2aa98e2SPeter Wemm
1242c2aa98e2SPeter Wemm	Unfortunately, a lot of UUCP mailer transport agents require
1243c2aa98e2SPeter Wemm	bangified addresses in the envelope, although you can use
1244c2aa98e2SPeter Wemm	domain-based addresses in the message header.  (The envelope
1245c2aa98e2SPeter Wemm	shows up as the From_ line on UNIX mail.)  So....
1246c2aa98e2SPeter Wemm
1247c2aa98e2SPeter Wemm    uucp-uudom
1248c2aa98e2SPeter Wemm	This is a cross between uucp-new (for the envelope addresses)
1249c2aa98e2SPeter Wemm	and uucp-dom (for the header addresses).  It bangifies the
1250c2aa98e2SPeter Wemm	envelope sender (From_ line in messages) without adding the
1251c2aa98e2SPeter Wemm	local hostname, unless there is no host name on the address
1252c2aa98e2SPeter Wemm	at all (e.g., "wolf") or the host component is a UUCP host name
1253c2aa98e2SPeter Wemm	instead of a domain name ("somehost!wolf" instead of
125406f25ae9SGregory Neil Shapiro	"some.dom.ain!wolf").  This is also included only if MAILER(`smtp')
1255c2aa98e2SPeter Wemm	is also specified.
1256c2aa98e2SPeter Wemm
1257c2aa98e2SPeter WemmExamples:
1258c2aa98e2SPeter Wemm
125906f25ae9SGregory Neil ShapiroOn host grasp.insa-lyon.fr (UUCP host name "grasp"), the following
126006f25ae9SGregory Neil Shapirosummarizes the sender rewriting for various mailers.
1261c2aa98e2SPeter Wemm
1262c2aa98e2SPeter WemmMailer		sender		rewriting in the envelope
1263c2aa98e2SPeter Wemm------		------		-------------------------
1264c2aa98e2SPeter Wemmuucp-{old,new}	wolf		grasp!wolf
1265c2aa98e2SPeter Wemmuucp-dom	wolf		wolf@grasp.insa-lyon.fr
1266c2aa98e2SPeter Wemmuucp-uudom	wolf		grasp.insa-lyon.fr!wolf
1267c2aa98e2SPeter Wemm
1268c2aa98e2SPeter Wemmuucp-{old,new}	wolf@fr.net	grasp!fr.net!wolf
1269c2aa98e2SPeter Wemmuucp-dom	wolf@fr.net	wolf@fr.net
1270c2aa98e2SPeter Wemmuucp-uudom	wolf@fr.net	fr.net!wolf
1271c2aa98e2SPeter Wemm
1272c2aa98e2SPeter Wemmuucp-{old,new}	somehost!wolf	grasp!somehost!wolf
1273c2aa98e2SPeter Wemmuucp-dom	somehost!wolf	somehost!wolf@grasp.insa-lyon.fr
1274c2aa98e2SPeter Wemmuucp-uudom	somehost!wolf	grasp.insa-lyon.fr!somehost!wolf
1275c2aa98e2SPeter Wemm
1276c2aa98e2SPeter WemmIf you are using one of the domainized UUCP mailers, you really want
1277c2aa98e2SPeter Wemmto convert all UUCP addresses to domain format -- otherwise, it will
1278c2aa98e2SPeter Wemmdo it for you (and probably not the way you expected).  For example,
1279c2aa98e2SPeter Wemmif you have the address foo!bar!baz (and you are not sending to foo),
1280c2aa98e2SPeter Wemmthe heuristics will add the @uucp.relay.name or @local.host.name to
1281c2aa98e2SPeter Wemmthis address.  However, if you map foo to foo.host.name first, it
1282c2aa98e2SPeter Wemmwill not add the local hostname.  You can do this using the uucpdomain
1283c2aa98e2SPeter Wemmfeature.
1284c2aa98e2SPeter Wemm
1285c2aa98e2SPeter Wemm
1286c2aa98e2SPeter Wemm+-------------------+
1287c2aa98e2SPeter Wemm| TWEAKING RULESETS |
1288c2aa98e2SPeter Wemm+-------------------+
1289c2aa98e2SPeter Wemm
1290c2aa98e2SPeter WemmFor more complex configurations, you can define special rules.
1291c2aa98e2SPeter WemmThe macro LOCAL_RULE_3 introduces rules that are used in canonicalizing
1292c2aa98e2SPeter Wemmthe names.  Any modifications made here are reflected in the header.
1293c2aa98e2SPeter Wemm
1294c2aa98e2SPeter WemmA common use is to convert old UUCP addresses to SMTP addresses using
1295c2aa98e2SPeter Wemmthe UUCPSMTP macro.  For example:
1296c2aa98e2SPeter Wemm
1297c2aa98e2SPeter Wemm	LOCAL_RULE_3
129806f25ae9SGregory Neil Shapiro	UUCPSMTP(`decvax',	`decvax.dec.com')
129906f25ae9SGregory Neil Shapiro	UUCPSMTP(`research',	`research.att.com')
1300c2aa98e2SPeter Wemm
1301c2aa98e2SPeter Wemmwill cause addresses of the form "decvax!user" and "research!user"
1302c2aa98e2SPeter Wemmto be converted to "user@decvax.dec.com" and "user@research.att.com"
1303c2aa98e2SPeter Wemmrespectively.
1304c2aa98e2SPeter Wemm
1305c2aa98e2SPeter WemmThis could also be used to look up hosts in a database map:
1306c2aa98e2SPeter Wemm
1307c2aa98e2SPeter Wemm	LOCAL_RULE_3
1308c2aa98e2SPeter Wemm	R$* < @ $+ > $*		$: $1 < @ $(hostmap $2 $) > $3
1309c2aa98e2SPeter Wemm
1310c2aa98e2SPeter WemmThis map would be defined in the LOCAL_CONFIG portion, as shown below.
1311c2aa98e2SPeter Wemm
1312c2aa98e2SPeter WemmSimilarly, LOCAL_RULE_0 can be used to introduce new parsing rules.
1313c2aa98e2SPeter WemmFor example, new rules are needed to parse hostnames that you accept
1314c2aa98e2SPeter Wemmvia MX records.  For example, you might have:
1315c2aa98e2SPeter Wemm
1316c2aa98e2SPeter Wemm	LOCAL_RULE_0
1317c2aa98e2SPeter Wemm	R$+ <@ host.dom.ain.>	$#uucp $@ cnmat $: $1 < @ host.dom.ain.>
1318c2aa98e2SPeter Wemm
1319c2aa98e2SPeter WemmYou would use this if you had installed an MX record for cnmat.Berkeley.EDU
1320c2aa98e2SPeter Wemmpointing at this host; this rule catches the message and forwards it on
1321c2aa98e2SPeter Wemmusing UUCP.
1322c2aa98e2SPeter Wemm
1323c2aa98e2SPeter WemmYou can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2.
1324c2aa98e2SPeter WemmThese rulesets are normally empty.
1325c2aa98e2SPeter Wemm
1326c2aa98e2SPeter WemmA similar macro is LOCAL_CONFIG.  This introduces lines added after the
132706f25ae9SGregory Neil Shapiroboilerplate option setting but before rulesets.  Do not declare rulesets in
132806f25ae9SGregory Neil Shapirothe LOCAL_CONFIG section.  It can be used to declare local database maps or
132906f25ae9SGregory Neil Shapirowhatever.  For example:
1330c2aa98e2SPeter Wemm
1331c2aa98e2SPeter Wemm	LOCAL_CONFIG
133206f25ae9SGregory Neil Shapiro	Khostmap hash /etc/mail/hostmap
1333c2aa98e2SPeter Wemm	Kyplocal nis -m hosts.byname
1334c2aa98e2SPeter Wemm
1335c2aa98e2SPeter Wemm
1336c2aa98e2SPeter Wemm+---------------------------+
1337c2aa98e2SPeter Wemm| MASQUERADING AND RELAYING |
1338c2aa98e2SPeter Wemm+---------------------------+
1339c2aa98e2SPeter Wemm
1340c2aa98e2SPeter WemmYou can have your host masquerade as another using
1341c2aa98e2SPeter Wemm
134206f25ae9SGregory Neil Shapiro	MASQUERADE_AS(`host.domain')
1343c2aa98e2SPeter Wemm
1344c2aa98e2SPeter WemmThis causes mail being sent to be labeled as coming from the
1345c2aa98e2SPeter Wemmindicated host.domain, rather than $j.  One normally masquerades as
134606f25ae9SGregory Neil Shapiroone of one's own subdomains (for example, it's unlikely that
134706f25ae9SGregory Neil ShapiroBerkeley would choose to masquerade as an MIT site).  This
134806f25ae9SGregory Neil Shapirobehaviour is modified by a plethora of FEATUREs; in particular, see
134906f25ae9SGregory Neil Shapiromasquerade_envelope, allmasquerade, limited_masquerade, and
135006f25ae9SGregory Neil Shapiromasquerade_entire_domain.
1351c2aa98e2SPeter Wemm
1352c2aa98e2SPeter WemmThe masquerade name is not normally canonified, so it is important
1353c2aa98e2SPeter Wemmthat it be your One True Name, that is, fully qualified and not a
1354c2aa98e2SPeter WemmCNAME.  However, if you use a CNAME, the receiving side may canonify
1355c2aa98e2SPeter Wemmit for you, so don't think you can cheat CNAME mapping this way.
1356c2aa98e2SPeter Wemm
1357c2aa98e2SPeter WemmNormally the only addresses that are masqueraded are those that come
135806f25ae9SGregory Neil Shapirofrom this host (that is, are either unqualified or in class {w}, the list
135906f25ae9SGregory Neil Shapiroof local domain names).  You can augment this list, which is realized
136006f25ae9SGregory Neil Shapiroby class {M} using
1361c2aa98e2SPeter Wemm
136206f25ae9SGregory Neil Shapiro	MASQUERADE_DOMAIN(`otherhost.domain')
1363c2aa98e2SPeter Wemm
1364c2aa98e2SPeter WemmThe effect of this is that although mail to user@otherhost.domain
1365c2aa98e2SPeter Wemmwill not be delivered locally, any mail including any user@otherhost.domain
1366c2aa98e2SPeter Wemmwill, when relayed, be rewritten to have the MASQUERADE_AS address.
1367c2aa98e2SPeter WemmThis can be a space-separated list of names.
1368c2aa98e2SPeter Wemm
1369c2aa98e2SPeter WemmIf these names are in a file, you can use
1370c2aa98e2SPeter Wemm
137106f25ae9SGregory Neil Shapiro	MASQUERADE_DOMAIN_FILE(`filename')
1372c2aa98e2SPeter Wemm
137306f25ae9SGregory Neil Shapiroto read the list of names from the indicated file (i.e., to add
137406f25ae9SGregory Neil Shapiroelements to class {M}).
137506f25ae9SGregory Neil Shapiro
137606f25ae9SGregory Neil ShapiroTo exempt hosts or subdomains from being masqueraded, you can use
137706f25ae9SGregory Neil Shapiro
137806f25ae9SGregory Neil Shapiro	MASQUERADE_EXCEPTION(`host.domain')
137906f25ae9SGregory Neil Shapiro
138006f25ae9SGregory Neil ShapiroThis can come handy if you want to masquerade a whole domain
138106f25ae9SGregory Neil Shapiroexcept for one (or a few) host(s).
1382c2aa98e2SPeter Wemm
1383c2aa98e2SPeter WemmNormally only header addresses are masqueraded.  If you want to
1384c2aa98e2SPeter Wemmmasquerade the envelope as well, use
1385c2aa98e2SPeter Wemm
13862e43090eSPeter Wemm	FEATURE(`masquerade_envelope')
1387c2aa98e2SPeter Wemm
1388c2aa98e2SPeter WemmThere are always users that need to be "exposed" -- that is, their
1389c2aa98e2SPeter Wemminternal site name should be displayed instead of the masquerade name.
139006f25ae9SGregory Neil ShapiroRoot is an example (which has been "exposed" by default prior to 8.10).
139106f25ae9SGregory Neil ShapiroYou can add users to this list using
1392c2aa98e2SPeter Wemm
139306f25ae9SGregory Neil Shapiro	EXPOSED_USER(`usernames')
1394c2aa98e2SPeter Wemm
139506f25ae9SGregory Neil ShapiroThis adds users to class {E}; you could also use something like
1396c2aa98e2SPeter Wemm
139706f25ae9SGregory Neil Shapiro	FE/etc/mail/exposed-users
1398c2aa98e2SPeter Wemm
1399c2aa98e2SPeter WemmYou can also arrange to relay all unqualified names (that is, names
1400c2aa98e2SPeter Wemmwithout @host) to a relay host.  For example, if you have a central
1401c2aa98e2SPeter Wemmemail server, you might relay to that host so that users don't have
1402c2aa98e2SPeter Wemmto have .forward files or aliases.  You can do this using
1403c2aa98e2SPeter Wemm
14042e43090eSPeter Wemm	define(`LOCAL_RELAY', `mailer:hostname')
1405c2aa98e2SPeter Wemm
1406c2aa98e2SPeter WemmThe ``mailer:'' can be omitted, in which case the mailer defaults to
1407c2aa98e2SPeter Wemm"relay".  There are some user names that you don't want relayed, perhaps
1408c2aa98e2SPeter Wemmbecause of local aliases.  A common example is root, which may be
1409c2aa98e2SPeter Wemmlocally aliased.  You can add entries to this list using
1410c2aa98e2SPeter Wemm
141106f25ae9SGregory Neil Shapiro	LOCAL_USER(`usernames')
1412c2aa98e2SPeter Wemm
141306f25ae9SGregory Neil ShapiroThis adds users to class {L}; you could also use something like
1414c2aa98e2SPeter Wemm
141506f25ae9SGregory Neil Shapiro	FL/etc/mail/local-users
1416c2aa98e2SPeter Wemm
1417c2aa98e2SPeter WemmIf you want all incoming mail sent to a centralized hub, as for a
1418c2aa98e2SPeter Wemmshared /var/spool/mail scheme, use
1419c2aa98e2SPeter Wemm
14202e43090eSPeter Wemm	define(`MAIL_HUB', `mailer:hostname')
1421c2aa98e2SPeter Wemm
1422c2aa98e2SPeter WemmAgain, ``mailer:'' defaults to "relay".  If you define both LOCAL_RELAY
14232e43090eSPeter Wemmand MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will
1424c2aa98e2SPeter Wemmbe sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB.
142506f25ae9SGregory Neil ShapiroNote: there is a (long standing) bug which keeps this combination from
142606f25ae9SGregory Neil Shapiroworking for addresses of the form user+detail.
142706f25ae9SGregory Neil ShapiroNames in class {L} will be delivered locally, so you MUST have aliases or
1428c2aa98e2SPeter Wemm.forward files for them.
1429c2aa98e2SPeter Wemm
1430c2aa98e2SPeter WemmFor example, if you are on machine mastodon.CS.Berkeley.EDU and you have
14312e43090eSPeter WemmFEATURE(`stickyhost'), the following combinations of settings will have the
1432c2aa98e2SPeter Wemmindicated effects:
1433c2aa98e2SPeter Wemm
1434c2aa98e2SPeter Wemmemail sent to....	eric			  eric@mastodon.CS.Berkeley.EDU
1435c2aa98e2SPeter Wemm
1436c2aa98e2SPeter WemmLOCAL_RELAY set to	mail.CS.Berkeley.EDU	  (delivered locally)
1437c2aa98e2SPeter Wemmmail.CS.Berkeley.EDU	  (no local aliasing)	    (aliasing done)
1438c2aa98e2SPeter Wemm
1439c2aa98e2SPeter WemmMAIL_HUB set to		mammoth.CS.Berkeley.EDU	  mammoth.CS.Berkeley.EDU
1440c2aa98e2SPeter Wemmmammoth.CS.Berkeley.EDU	  (aliasing done)	    (aliasing done)
1441c2aa98e2SPeter Wemm
1442c2aa98e2SPeter WemmBoth LOCAL_RELAY and	mail.CS.Berkeley.EDU	  mammoth.CS.Berkeley.EDU
1443c2aa98e2SPeter WemmMAIL_HUB set as above	  (no local aliasing)	    (aliasing done)
1444c2aa98e2SPeter Wemm
14452e43090eSPeter WemmIf you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and
1446c2aa98e2SPeter WemmMAIL_HUB act identically, with MAIL_HUB taking precedence.
1447c2aa98e2SPeter Wemm
1448c2aa98e2SPeter WemmIf you want all outgoing mail to go to a central relay site, define
1449c2aa98e2SPeter WemmSMART_HOST as well.  Briefly:
1450c2aa98e2SPeter Wemm
1451c2aa98e2SPeter Wemm	LOCAL_RELAY applies to unqualified names (e.g., "eric").
1452c2aa98e2SPeter Wemm	MAIL_HUB applies to names qualified with the name of the
1453c2aa98e2SPeter Wemm		local host (e.g., "eric@mastodon.CS.Berkeley.EDU").
145406f25ae9SGregory Neil Shapiro	SMART_HOST applies to names qualified with other hosts or
145506f25ae9SGregory Neil Shapiro		bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU"
145606f25ae9SGregory Neil Shapiro		or "eric@[127.0.0.1]").
1457c2aa98e2SPeter Wemm
1458c2aa98e2SPeter WemmHowever, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY,
1459c2aa98e2SPeter WemmDECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you
1460c2aa98e2SPeter Wemmreally want absolutely everything to go to a single central site you will
1461c2aa98e2SPeter Wemmneed to unset all the other relays -- or better yet, find or build a
1462c2aa98e2SPeter Wemmminimal config file that does this.
1463c2aa98e2SPeter Wemm
1464c2aa98e2SPeter WemmFor duplicate suppression to work properly, the host name is best
1465c2aa98e2SPeter Wemmspecified with a terminal dot:
1466c2aa98e2SPeter Wemm
1467c2aa98e2SPeter Wemm	define(`MAIL_HUB', `host.domain.')
1468c2aa98e2SPeter Wemm	      note the trailing dot ---^
1469c2aa98e2SPeter Wemm
1470c2aa98e2SPeter Wemm
147106f25ae9SGregory Neil Shapiro+--------------+
147206f25ae9SGregory Neil Shapiro| LDAP ROUTING |
147306f25ae9SGregory Neil Shapiro+--------------+
147406f25ae9SGregory Neil Shapiro
147506f25ae9SGregory Neil ShapiroFEATURE(`ldap_routing') can be used to implement the IETF Internet Draft
147606f25ae9SGregory Neil ShapiroLDAP Schema for Intranet Mail Routing
147706f25ae9SGregory Neil Shapiro(draft-lachman-laser-ldap-mail-routing-01).  This feature enables
147806f25ae9SGregory Neil ShapiroLDAP-based rerouting of a particular address to either a different host
147906f25ae9SGregory Neil Shapiroor a different address.  The LDAP lookup is first attempted on the full
148006f25ae9SGregory Neil Shapiroaddress (e.g., user@example.com) and then on the domain portion
148106f25ae9SGregory Neil Shapiro(e.g., @example.com).  Be sure to setup your domain for LDAP routing using
148206f25ae9SGregory Neil ShapiroLDAPROUTE_DOMAIN(), e.g.:
148306f25ae9SGregory Neil Shapiro
148406f25ae9SGregory Neil Shapiro	LDAPROUTE_DOMAIN(`example.com')
148506f25ae9SGregory Neil Shapiro
148606f25ae9SGregory Neil ShapiroBy default, the feature will use the schemas as specified in the draft
148706f25ae9SGregory Neil Shapiroand will not reject addresses not found by the LDAP lookup.  However,
148806f25ae9SGregory Neil Shapirothis behavior can be changed by giving additional arguments to the FEATURE()
148906f25ae9SGregory Neil Shapirocommand:
149006f25ae9SGregory Neil Shapiro
149106f25ae9SGregory Neil Shapiro	FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>)
149206f25ae9SGregory Neil Shapiro
149306f25ae9SGregory Neil Shapirowhere <mailHost> is a map definition describing how to lookup an alternative
149406f25ae9SGregory Neil Shapiromail host for a particular address; <mailRoutingAddress> is a map definition
149506f25ae9SGregory Neil Shapirodescribing how to lookup an alternative address for a particular address; and
149606f25ae9SGregory Neil Shapirothe <bounce> argument, if present and not the word "passthru", dictates
149706f25ae9SGregory Neil Shapirothat mail should be bounced if neither a mailHost nor mailRoutingAddress
149806f25ae9SGregory Neil Shapirois found.
149906f25ae9SGregory Neil Shapiro
150006f25ae9SGregory Neil ShapiroThe default <mailHost> map definition is:
150106f25ae9SGregory Neil Shapiro
150206f25ae9SGregory Neil Shapiro	ldap -1 -v mailHost -k (&(objectClass=inetLocalMailRecipient)
150306f25ae9SGregory Neil Shapiro				 (mailLocalAddress=%0))
150406f25ae9SGregory Neil Shapiro
150506f25ae9SGregory Neil ShapiroThe default <mailRoutingAddress> map definition is:
150606f25ae9SGregory Neil Shapiro
150706f25ae9SGregory Neil Shapiro	ldap -1 -v mailRoutingAddress -k (&(objectClass=inetLocalMailRecipient)
150806f25ae9SGregory Neil Shapiro					   (mailLocalAddress=%0))
150906f25ae9SGregory Neil Shapiro
151006f25ae9SGregory Neil ShapiroNote that neither includes the LDAP server hostname (-h server) or base DN
151106f25ae9SGregory Neil Shapiro(-b o=org,c=COUNTRY), both necessary for LDAP queries.  It is presumed that
151206f25ae9SGregory Neil Shapiroyour .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with
151306f25ae9SGregory Neil Shapirothese settings.  If this is not the case, the map definitions should be
151406f25ae9SGregory Neil Shapirochanged as described above.
151506f25ae9SGregory Neil Shapiro
151606f25ae9SGregory Neil ShapiroThe following possibilities exist as a result of an LDAP lookup on an
151706f25ae9SGregory Neil Shapiroaddress:
151806f25ae9SGregory Neil Shapiro
151906f25ae9SGregory Neil Shapiro	mailHost is	mailRoutingAddress is	Results in
152006f25ae9SGregory Neil Shapiro	-----------	---------------------	----------
152106f25ae9SGregory Neil Shapiro	set to a	set			mail delivered to
152206f25ae9SGregory Neil Shapiro	"local" host				mailRoutingAddress
152306f25ae9SGregory Neil Shapiro
152406f25ae9SGregory Neil Shapiro	set to a	not set			delivered to
152506f25ae9SGregory Neil Shapiro	"local" host				original address
152606f25ae9SGregory Neil Shapiro
152706f25ae9SGregory Neil Shapiro	set to a	set			mailRoutingAddress
152806f25ae9SGregory Neil Shapiro	remote host				relayed to mailHost
152906f25ae9SGregory Neil Shapiro
153006f25ae9SGregory Neil Shapiro	set to a	not set			original address
153106f25ae9SGregory Neil Shapiro	remote host				relayed to mailHost
153206f25ae9SGregory Neil Shapiro
153306f25ae9SGregory Neil Shapiro	not set		set			mail delivered to
153406f25ae9SGregory Neil Shapiro						mailRoutingAddress
153506f25ae9SGregory Neil Shapiro
153606f25ae9SGregory Neil Shapiro	not set		not set			delivered to
153706f25ae9SGregory Neil Shapiro						original address *OR*
153806f25ae9SGregory Neil Shapiro						bounced as unknown user
153906f25ae9SGregory Neil Shapiro
154006f25ae9SGregory Neil ShapiroThe term "local" host above means the host specified is in class {w}.
154106f25ae9SGregory Neil ShapiroNote that the last case depends on whether the third argument is given
154206f25ae9SGregory Neil Shapiroto the FEATURE() command.  The default is to deliver the message to the
154306f25ae9SGregory Neil Shapirooriginal address.
154406f25ae9SGregory Neil Shapiro
154506f25ae9SGregory Neil ShapiroThe LDAP entries should be set up with an objectClass of
154606f25ae9SGregory Neil ShapiroinetLocalMailRecipient and the address be listed in a mailLocalAddress
154706f25ae9SGregory Neil Shapiroattribute.  If present, there must be only one mailHost attribute and it
154806f25ae9SGregory Neil Shapiromust contain a fully qualified host name as its value.  Similarly, if
154906f25ae9SGregory Neil Shapiropresent, there must be only one mailRoutingAddress attribute and it must
155006f25ae9SGregory Neil Shapirocontain an RFC 822 compliant address.  Some example LDAP records (in ldif
155106f25ae9SGregory Neil Shapiroformat):
155206f25ae9SGregory Neil Shapiro
155306f25ae9SGregory Neil Shapiro	dn: uid=tom, o=example.com, c=US
155406f25ae9SGregory Neil Shapiro	objectClass: inetLocalMailRecipient
155506f25ae9SGregory Neil Shapiro	mailLocalAddress: tom@example.com
155606f25ae9SGregory Neil Shapiro	mailRoutingAddress: thomas@mailhost.example.com
155706f25ae9SGregory Neil Shapiro
155806f25ae9SGregory Neil ShapiroThis would deliver mail for tom@example.com to thomas@mailhost.example.com.
155906f25ae9SGregory Neil Shapiro
156006f25ae9SGregory Neil Shapiro	dn: uid=dick, o=example.com, c=US
156106f25ae9SGregory Neil Shapiro	objectClass: inetLocalMailRecipient
156206f25ae9SGregory Neil Shapiro	mailLocalAddress: dick@example.com
156306f25ae9SGregory Neil Shapiro	mailHost: eng.example.com
156406f25ae9SGregory Neil Shapiro
156506f25ae9SGregory Neil ShapiroThis would relay mail for dick@example.com to the same address but redirect
156606f25ae9SGregory Neil Shapirothe mail to MX records listed for the host eng.example.com.
156706f25ae9SGregory Neil Shapiro
156806f25ae9SGregory Neil Shapiro	dn: uid=harry, o=example.com, c=US
156906f25ae9SGregory Neil Shapiro	objectClass: inetLocalMailRecipient
157006f25ae9SGregory Neil Shapiro	mailLocalAddress: harry@example.com
157106f25ae9SGregory Neil Shapiro	mailHost: mktmail.example.com
157206f25ae9SGregory Neil Shapiro	mailRoutingAddress: harry@mkt.example.com
157306f25ae9SGregory Neil Shapiro
157406f25ae9SGregory Neil ShapiroThis would relay mail for harry@example.com to the MX records listed for
157506f25ae9SGregory Neil Shapirothe host mktmail.example.com using the new address harry@mkt.example.com
157606f25ae9SGregory Neil Shapirowhen talking to that host.
157706f25ae9SGregory Neil Shapiro
157806f25ae9SGregory Neil Shapiro	dn: uid=virtual.example.com, o=example.com, c=US
157906f25ae9SGregory Neil Shapiro	objectClass: inetLocalMailRecipient
158006f25ae9SGregory Neil Shapiro	mailLocalAddress: @virtual.example.com
158106f25ae9SGregory Neil Shapiro	mailHost: server.example.com
158206f25ae9SGregory Neil Shapiro	mailRoutingAddress: virtual@example.com
158306f25ae9SGregory Neil Shapiro
158406f25ae9SGregory Neil ShapiroThis would send all mail destined for any username @virtual.example.com to
158506f25ae9SGregory Neil Shapirothe machine server.example.com's MX servers and deliver to the address
158606f25ae9SGregory Neil Shapirovirtual@example.com on that relay machine.
158706f25ae9SGregory Neil Shapiro
158806f25ae9SGregory Neil Shapiro
1589c2aa98e2SPeter Wemm+---------------------------------+
1590c2aa98e2SPeter Wemm| ANTI-SPAM CONFIGURATION CONTROL |
1591c2aa98e2SPeter Wemm+---------------------------------+
1592c2aa98e2SPeter Wemm
1593c2aa98e2SPeter WemmThe primary anti-spam features available in sendmail are:
1594c2aa98e2SPeter Wemm
1595c2aa98e2SPeter Wemm* Relaying is denied by default.
1596c2aa98e2SPeter Wemm* Better checking on sender information.
1597c2aa98e2SPeter Wemm* Access database.
1598c2aa98e2SPeter Wemm* Header checks.
1599c2aa98e2SPeter Wemm
160006f25ae9SGregory Neil ShapiroRelaying (transmission of messages from a site outside your host (class
160106f25ae9SGregory Neil Shapiro{w}) to another site except yours) is denied by default.  Note that this
160206f25ae9SGregory Neil Shapirochanged in sendmail 8.9; previous versions allowed relaying by default.
160306f25ae9SGregory Neil ShapiroIf you really want to revert to the old behaviour, you will need to use
160406f25ae9SGregory Neil ShapiroFEATURE(`promiscuous_relay').  You can allow certain domains to relay
160506f25ae9SGregory Neil Shapirothrough your server by adding their domain name or IP address to class
160606f25ae9SGregory Neil Shapiro{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database
160706f25ae9SGregory Neil Shapiro(described below).  The file consists (like any other file based class)
160806f25ae9SGregory Neil Shapiroof entries listed on separate lines, e.g.,
160906f25ae9SGregory Neil Shapiro
161006f25ae9SGregory Neil Shapiro	sendmail.org
161106f25ae9SGregory Neil Shapiro	128.32
161206f25ae9SGregory Neil Shapiro	1:2:3:4:5:6:7
161306f25ae9SGregory Neil Shapiro	host.mydomain.com
1614c2aa98e2SPeter Wemm
1615c2aa98e2SPeter WemmIf you use
1616c2aa98e2SPeter Wemm
16172e43090eSPeter Wemm	FEATURE(`relay_entire_domain')
1618c2aa98e2SPeter Wemm
161906f25ae9SGregory Neil Shapirothen any host in any of your local domains (that is, class {m})
1620065a643dSPeter Wemmwill be relayed (that is, you will accept mail either to or from any
1621065a643dSPeter Wemmhost in your domain).
1622c2aa98e2SPeter Wemm
1623c2aa98e2SPeter WemmYou can also allow relaying based on the MX records of the host
1624c2aa98e2SPeter Wemmportion of an incoming recipient address by using
1625c2aa98e2SPeter Wemm
16262e43090eSPeter Wemm	FEATURE(`relay_based_on_MX')
1627c2aa98e2SPeter Wemm
1628c2aa98e2SPeter WemmFor example, if your server receives a recipient of user@domain.com
1629c2aa98e2SPeter Wemmand domain.com lists your server in its MX records, the mail will be
1630065a643dSPeter Wemmaccepted for relay to domain.com.  Note that this will stop spammers
1631065a643dSPeter Wemmfrom using your host to relay spam but it will not stop outsiders from
1632065a643dSPeter Wemmusing your server as a relay for their site (that is, they set up an
1633065a643dSPeter WemmMX record pointing to your mail server, and you will relay mail addressed
1634065a643dSPeter Wemmto them without any prior arrangement).  Along the same lines,
1635c2aa98e2SPeter Wemm
16362e43090eSPeter Wemm	FEATURE(`relay_local_from')
1637c2aa98e2SPeter Wemm
1638c2aa98e2SPeter Wemmwill allow relaying if the sender specifies a return path (i.e.
1639c2aa98e2SPeter WemmMAIL FROM: <user@domain>) domain which is a local domain.  This a
1640c2aa98e2SPeter Wemmdangerous feature as it will allow spammers to spam using your mail
1641c2aa98e2SPeter Wemmserver by simply specifying a return address of user@your.domain.com.
1642c2aa98e2SPeter WemmIt should not be used unless absolutely necessary.
164306f25ae9SGregory Neil ShapiroA slightly better solution is
164406f25ae9SGregory Neil Shapiro
164506f25ae9SGregory Neil Shapiro	FEATURE(`relay_mail_from')
164606f25ae9SGregory Neil Shapiro
164706f25ae9SGregory Neil Shapirowhich allows relaying if the mail sender is listed as RELAY in the
164806f25ae9SGregory Neil Shapiroaccess map.  If an optional argument `domain' is given, the domain
164906f25ae9SGregory Neil Shapiroportion of the mail sender is also checked to allowing relaying.
165006f25ae9SGregory Neil ShapiroThis option only works together with the tag From: for the LHS of
165106f25ae9SGregory Neil Shapirothe access map entries (see below: Finer control...).
165206f25ae9SGregory Neil Shapiro
1653c2aa98e2SPeter Wemm
1654c2aa98e2SPeter WemmIf source routing is used in the recipient address (i.e.
1655c2aa98e2SPeter WemmRCPT TO: <user%site.com@othersite.com>), sendmail will check
1656c2aa98e2SPeter Wemmuser@site.com for relaying if othersite.com is an allowed relay host
165706f25ae9SGregory Neil Shapiroin either class {R}, class {m} if FEATURE(`relay_entire_domain') is used,
16582e43090eSPeter Wemmor the access database if FEATURE(`access_db') is used.  To prevent
1659c2aa98e2SPeter Wemmthe address from being stripped down, use:
1660c2aa98e2SPeter Wemm
16612e43090eSPeter Wemm	FEATURE(`loose_relay_check')
1662c2aa98e2SPeter Wemm
1663c2aa98e2SPeter WemmIf you think you need to use this feature, you probably do not.  This
1664c2aa98e2SPeter Wemmshould only be used for sites which have no control over the addresses
1665c2aa98e2SPeter Wemmthat they provide a gateway for.  Use this FEATURE with caution as it
1666c2aa98e2SPeter Wemmcan allow spammers to relay through your server if not setup properly.
1667c2aa98e2SPeter Wemm
166806f25ae9SGregory Neil ShapiroNOTICE: It is possible to relay mail through a system which the anti-relay
166906f25ae9SGregory Neil Shapirorules do not prevent: the case of a system that does use FEATURE(`nouucp',
167006f25ae9SGregory Neil Shapiro`nospecial') (system A) and relays local messages to a mail hub (e.g., via
167106f25ae9SGregory Neil ShapiroLOCAL_RELAY or LUSER_RELAY) (system B).  If system B doesn't use
167206f25ae9SGregory Neil ShapiroFEATURE(`nouucp') at all, addresses of the form
167306f25ae9SGregory Neil Shapiro<example.net!user@local.host> would be relayed to <user@example.net>.
167406f25ae9SGregory Neil ShapiroSystem A doesn't recognize `!' as an address separator and therefore
167506f25ae9SGregory Neil Shapiroforwards it to the mail hub which in turns relays it because it came from
167606f25ae9SGregory Neil Shapiroa trusted local host.  So if a mailserver allows UUCP (bang-format)
167706f25ae9SGregory Neil Shapiroaddresses, all systems from which it allows relaying should do the same
167806f25ae9SGregory Neil Shapiroor reject those addresses.
167906f25ae9SGregory Neil Shapiro
1680c2aa98e2SPeter WemmAs of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has
1681c2aa98e2SPeter Wemman unresolvable domain (i.e., one that DNS, your local name service,
1682c2aa98e2SPeter Wemmor special case rules in ruleset 3 cannot locate).  If you want to
168306f25ae9SGregory Neil Shapirocontinue to accept such domains, e.g., because you are inside a
1684c2aa98e2SPeter Wemmfirewall that has only a limited view of the Internet host name space
1685c2aa98e2SPeter Wemm(note that you will not be able to return mail to them unless you have
1686c2aa98e2SPeter Wemmsome "smart host" forwarder), use
1687c2aa98e2SPeter Wemm
16882e43090eSPeter Wemm	FEATURE(`accept_unresolvable_domains')
1689c2aa98e2SPeter Wemm
1690c2aa98e2SPeter Wemmsendmail will also refuse mail if the MAIL FROM: parameter is not
1691c2aa98e2SPeter Wemmfully qualified (i.e., contains a domain as well as a user).  If you
1692c2aa98e2SPeter Wemmwant to continue to accept such senders, use
1693c2aa98e2SPeter Wemm
16942e43090eSPeter Wemm	FEATURE(`accept_unqualified_senders')
1695c2aa98e2SPeter Wemm
169606f25ae9SGregory Neil ShapiroSetting the DaemonPortOptions modifier 'u' overrides the default behavior,
169706f25ae9SGregory Neil Shapiroi.e., unqualified addresses are accepted even without this FEATURE.  If
169806f25ae9SGregory Neil Shapirothis FEATURE is not used, the DaemonPortOptions modifier 'f' can be used
169906f25ae9SGregory Neil Shapiroto enforce fully qualified addresses.
170006f25ae9SGregory Neil Shapiro
1701c2aa98e2SPeter WemmAn ``access'' database can be created to accept or reject mail from
1702c2aa98e2SPeter Wemmselected domains.  For example, you may choose to reject all mail
1703c2aa98e2SPeter Wemmoriginating from known spammers.  To enable such a database, use
1704c2aa98e2SPeter Wemm
17052e43090eSPeter Wemm	FEATURE(`access_db')
1706c2aa98e2SPeter Wemm
1707c2aa98e2SPeter WemmThe FEATURE macro can accept a second parameter giving the key file
1708c2aa98e2SPeter Wemmdefinition for the database; for example
1709c2aa98e2SPeter Wemm
171006f25ae9SGregory Neil Shapiro	FEATURE(`access_db', `hash /etc/mail/access')
1711c2aa98e2SPeter Wemm
1712065a643dSPeter WemmRemember, since /etc/mail/access is a database, after creating the text
1713065a643dSPeter Wemmfile as described below, you must use makemap to create the database
1714065a643dSPeter Wemmmap.  For example:
1715065a643dSPeter Wemm
1716065a643dSPeter Wemm	makemap hash /etc/mail/access < /etc/mail/access
1717065a643dSPeter Wemm
1718c2aa98e2SPeter WemmThe table itself uses e-mail addresses, domain names, and network
1719c2aa98e2SPeter Wemmnumbers as keys.  For example,
1720c2aa98e2SPeter Wemm
1721c2aa98e2SPeter Wemm	spammer@aol.com		REJECT
1722c2aa98e2SPeter Wemm	cyberspammer.com	REJECT
1723065a643dSPeter Wemm	192.168.212		REJECT
1724c2aa98e2SPeter Wemm
1725c2aa98e2SPeter Wemmwould refuse mail from spammer@aol.com, any user from cyberspammer.com
1726c2aa98e2SPeter Wemm(or any host within the cyberspammer.com domain), and any host on the
1727065a643dSPeter Wemm192.168.212.* network.
1728c2aa98e2SPeter Wemm
1729c2aa98e2SPeter WemmThe value part of the map can contain:
1730c2aa98e2SPeter Wemm
1731065a643dSPeter Wemm	OK		Accept mail even if other rules in the
1732065a643dSPeter Wemm			running ruleset would reject it, for example,
1733065a643dSPeter Wemm			if the domain name is unresolvable.
1734065a643dSPeter Wemm	RELAY		Accept mail addressed to the indicated domain or
1735065a643dSPeter Wemm			received from the indicated domain for relaying
1736065a643dSPeter Wemm			through your SMTP server.  RELAY also serves as
1737065a643dSPeter Wemm			an implicit OK for the other checks.
1738065a643dSPeter Wemm	REJECT		Reject the sender or recipient with a general
1739c2aa98e2SPeter Wemm			purpose message.
1740065a643dSPeter Wemm	DISCARD		Discard the message completely using the
1741193538b7SGregory Neil Shapiro			$#discard mailer.  If it is used in check_compat,
1742193538b7SGregory Neil Shapiro			it affects only the designated recipient, not
1743193538b7SGregory Neil Shapiro			the whole message as it does in all other cases.
1744193538b7SGregory Neil Shapiro			This should only be used if really necessary.
174542e5d165SGregory Neil Shapiro	### any text	where ### is an RFC 821 compliant error code and
174642e5d165SGregory Neil Shapiro			"any text" is a message to return for the command.
174742e5d165SGregory Neil Shapiro			The string should be quoted to avoid surprises,
174842e5d165SGregory Neil Shapiro			e.g., sendmail may remove spaces otherwise.
174906f25ae9SGregory Neil Shapiro	ERROR:### any text
175006f25ae9SGregory Neil Shapiro			as above, but useful to mark error messages as such.
175106f25ae9SGregory Neil Shapiro	ERROR:D.S.N:### any text
175206f25ae9SGregory Neil Shapiro			where D.S.N is an RFC 1893 compliant error code
175306f25ae9SGregory Neil Shapiro			and the rest as above.
1754c2aa98e2SPeter Wemm
1755c2aa98e2SPeter WemmFor example:
1756c2aa98e2SPeter Wemm
175742e5d165SGregory Neil Shapiro	cyberspammer.com	ERROR:"550 We don't accept mail from spammers"
1758c2aa98e2SPeter Wemm	okay.cyberspammer.com	OK
175906f25ae9SGregory Neil Shapiro	sendmail.org		RELAY
1760c2aa98e2SPeter Wemm	128.32			RELAY
176106f25ae9SGregory Neil Shapiro	1:2:3:4:5:6:7		RELAY
176206f25ae9SGregory Neil Shapiro	[127.0.0.3]		OK
176306f25ae9SGregory Neil Shapiro	[1:2:3:4:5:6:7:8]	OK
1764c2aa98e2SPeter Wemm
176506f25ae9SGregory Neil Shapirowould accept mail from okay.cyberspammer.com, but would reject mail from
176606f25ae9SGregory Neil Shapiroall other hosts at cyberspammer.com with the indicated message.  It would
176706f25ae9SGregory Neil Shapiroallow relaying mail from and to any hosts in the sendmail.org domain, and
176806f25ae9SGregory Neil Shapiroallow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:*
176906f25ae9SGregory Neil Shapironetwork.  The latter two entries are for checks against ${client_name} if
177006f25ae9SGregory Neil Shapirothe IP address doesn't resolve to a hostname (or is considered as "may be
177106f25ae9SGregory Neil Shapiroforged").
177206f25ae9SGregory Neil Shapiro
177306f25ae9SGregory Neil ShapiroWarning: if you change the RFC 821 compliant error code from the default
177406f25ae9SGregory Neil Shapirovalue of 550, then you should probably also change the RFC 1893 compliant
177506f25ae9SGregory Neil Shapiroerror code to match it.  For example, if you use
177606f25ae9SGregory Neil Shapiro
177706f25ae9SGregory Neil Shapiro	user@example.com	450 mailbox full
177806f25ae9SGregory Neil Shapiro
177906f25ae9SGregory Neil Shapirothe error returned would be "450 4.0.0 mailbox full" which is wrong.
178006f25ae9SGregory Neil ShapiroUse "450 4.2.2 mailbox full" or "ERROR:4.2.2:450 mailbox full"
178106f25ae9SGregory Neil Shapiroinstead.
178206f25ae9SGregory Neil Shapiro
178306f25ae9SGregory Neil ShapiroNote, UUCP users may need to add hostname.UUCP to the access database
178406f25ae9SGregory Neil Shapiroor class {R}.  If you also use:
1785c2aa98e2SPeter Wemm
17862e43090eSPeter Wemm	FEATURE(`relay_hosts_only')
1787c2aa98e2SPeter Wemm
1788c2aa98e2SPeter Wemmthen the above example will allow relaying for sendmail.org, but not
1789c2aa98e2SPeter Wemmhosts within the sendmail.org domain.  Note that this will also require
179006f25ae9SGregory Neil Shapirohosts listed in class {R} to be fully qualified host names.
1791c2aa98e2SPeter Wemm
1792c2aa98e2SPeter WemmYou can also use the access database to block sender addresses based on
1793c2aa98e2SPeter Wemmthe username portion of the address.  For example:
1794c2aa98e2SPeter Wemm
179542e5d165SGregory Neil Shapiro	FREE.STEALTH.MAILER@	ERROR:550 Spam not accepted
1796c2aa98e2SPeter Wemm
1797c2aa98e2SPeter WemmNote that you must include the @ after the username to signify that
1798c2aa98e2SPeter Wemmthis database entry is for checking only the username portion of the
1799c2aa98e2SPeter Wemmsender address.
1800c2aa98e2SPeter Wemm
1801c2aa98e2SPeter WemmIf you use:
1802c2aa98e2SPeter Wemm
18032e43090eSPeter Wemm	FEATURE(`blacklist_recipients')
1804c2aa98e2SPeter Wemm
1805c2aa98e2SPeter Wemmthen you can add entries to the map for local users, hosts in your
1806c2aa98e2SPeter Wemmdomains, or addresses in your domain which should not receive mail:
1807c2aa98e2SPeter Wemm
180842e5d165SGregory Neil Shapiro	badlocaluser@		ERROR:550 Mailbox disabled for this username
180942e5d165SGregory Neil Shapiro	host.mydomain.com	ERROR:550 That host does not accept mail
181042e5d165SGregory Neil Shapiro	user@otherhost.mydomain.com	ERROR:550 Mailbox disabled for this recipient
1811c2aa98e2SPeter Wemm
1812c2aa98e2SPeter WemmThis would prevent a recipient of badlocaluser@mydomain.com, any
1813c2aa98e2SPeter Wemmuser at host.mydomain.com, and the single address
181406f25ae9SGregory Neil Shapirouser@otherhost.mydomain.com from receiving mail.  Please note: a
181506f25ae9SGregory Neil Shapirolocal username must be now tagged with an @ (this is consistent
181606f25ae9SGregory Neil Shapirowith the check of the sender address, and hence it is possible to
181706f25ae9SGregory Neil Shapirodistinguish between hostnames and usernames).  Enabling this feature
181806f25ae9SGregory Neil Shapirowill keep you from sending mails to all addresses that have an
181906f25ae9SGregory Neil Shapiroerror message or REJECT as value part in the access map.  Taking
182006f25ae9SGregory Neil Shapirothe example from above:
1821065a643dSPeter Wemm
1822065a643dSPeter Wemm	spammer@aol.com		REJECT
1823065a643dSPeter Wemm	cyberspammer.com	REJECT
1824065a643dSPeter Wemm
1825065a643dSPeter WemmMail can't be sent to spammer@aol.com or anyone at cyberspammer.com.
1826c2aa98e2SPeter Wemm
1827c2aa98e2SPeter WemmThere is also a ``Realtime Blackhole List'' run by the MAPS project
1828c2aa98e2SPeter Wemmat http://maps.vix.com/.  This is a database maintained in DNS of
1829c2aa98e2SPeter Wemmspammers.  To use this database, use
1830c2aa98e2SPeter Wemm
183106f25ae9SGregory Neil Shapiro	FEATURE(`dnsbl')
1832c2aa98e2SPeter Wemm
1833c2aa98e2SPeter WemmThis will cause sendmail to reject mail from any site in the
183413058a91SGregory Neil ShapiroRealtime Blackhole List database.  This default DNS blacklist,
183513058a91SGregory Neil Shapiroblackholes.mail-abuse.org, is a service offered by the Mail Abuse
183613058a91SGregory Neil ShapiroPrevention System (MAPS).  As of July 31, 2001, MAPS is a subscription
183713058a91SGregory Neil Shapiroservice, so using that network address won't work if you haven't
183813058a91SGregory Neil Shapirosubscribed.  Contact MAPS to subscribe (http://mail-abuse.org/).
183913058a91SGregory Neil Shapiro
184013058a91SGregory Neil ShapiroYou can specify an alternative RBL server to check by specifying an
184113058a91SGregory Neil Shapiroargument to the FEATURE.  The default error message is
184213058a91SGregory Neil Shapiro
184313058a91SGregory Neil ShapiroYou can specify an alternative RBL domain to check by specifying an
184413058a91SGregory Neil Shapiroargument to the FEATURE.  The default error message is
1845193538b7SGregory Neil Shapiro
184606f25ae9SGregory Neil Shapiro	Mail from $&{client_addr} refused by blackhole site DOMAIN
1847193538b7SGregory Neil Shapiro
1848193538b7SGregory Neil Shapirowhere DOMAIN is the first argument of the feature.  A second argument
1849193538b7SGregory Neil Shapirocan be used to specify a different text.  This FEATURE can be
1850193538b7SGregory Neil Shapiroincluded several times to query different DNS based rejection lists,
1851193538b7SGregory Neil Shapiroe.g., the dial-up user list (see http://maps.vix.com/dul/).
1852c2aa98e2SPeter Wemm
1853c2aa98e2SPeter WemmThe features described above make use of the check_relay, check_mail,
1854c2aa98e2SPeter Wemmand check_rcpt rulesets.  If you wish to include your own checks,
1855c2aa98e2SPeter Wemmyou can put your checks in the rulesets Local_check_relay,
1856c2aa98e2SPeter WemmLocal_check_mail, and Local_check_rcpt.  For example if you wanted to
1857c2aa98e2SPeter Wemmblock senders with all numeric usernames (i.e. 2312343@bigisp.com),
1858c2aa98e2SPeter Wemmyou would use Local_check_mail and the new regex map:
1859c2aa98e2SPeter Wemm
1860c2aa98e2SPeter Wemm	LOCAL_CONFIG
1861c2aa98e2SPeter Wemm	Kallnumbers regex -a@MATCH ^[0-9]+$
1862c2aa98e2SPeter Wemm
1863c2aa98e2SPeter Wemm	LOCAL_RULESETS
1864c2aa98e2SPeter Wemm	SLocal_check_mail
1865c2aa98e2SPeter Wemm	# check address against various regex checks
1866c2aa98e2SPeter Wemm	R$*				$: $>Parse0 $>3 $1
1867c2aa98e2SPeter Wemm	R$+ < @ bigisp.com. > $*	$: $(allnumbers $1 $)
1868c2aa98e2SPeter Wemm	R@MATCH				$#error $: 553 Header Error
1869c2aa98e2SPeter Wemm
1870c2aa98e2SPeter WemmThese rules are called with the original arguments of the corresponding
1871c2aa98e2SPeter Wemmcheck_* ruleset.  If the local ruleset returns $#OK, no further checking
1872c2aa98e2SPeter Wemmis done by the features described above and the mail is accepted.  If the
1873c2aa98e2SPeter Wemmlocal ruleset resolves to a mailer (such as $#error or $#discard), the
1874c2aa98e2SPeter Wemmappropriate action is taken.  Otherwise, the results of the local
1875c2aa98e2SPeter Wemmrewriting are ignored.
1876c2aa98e2SPeter Wemm
187706f25ae9SGregory Neil ShapiroFiner control by using tags for the LHS of the access map
187806f25ae9SGregory Neil Shapiro
187906f25ae9SGregory Neil ShapiroRead this section only if the options listed so far are not sufficient
188006f25ae9SGregory Neil Shapirofor your purposes.  There is now the option to tag entries in the
188106f25ae9SGregory Neil Shapiroaccess map according to their type.  Three tags are available:
188206f25ae9SGregory Neil Shapiro
188306f25ae9SGregory Neil Shapiro	Connect:	connection information (${client_addr}, ${client_name})
1884602a2b1bSGregory Neil Shapiro	From:		envelope sender
1885602a2b1bSGregory Neil Shapiro	To:		envelope recipient
188606f25ae9SGregory Neil Shapiro
188706f25ae9SGregory Neil ShapiroIf the required item is looked up in a map, it will be tried first
188806f25ae9SGregory Neil Shapirowith the corresponding tag in front, then (as fallback to enable
188906f25ae9SGregory Neil Shapirobackward compatibility) without any tag.  For example,
189006f25ae9SGregory Neil Shapiro
189106f25ae9SGregory Neil Shapiro	From:spammer@some.dom	REJECT
189206f25ae9SGregory Neil Shapiro	To:friend.domain	RELAY
189306f25ae9SGregory Neil Shapiro	Connect:friend.domain	OK
189406f25ae9SGregory Neil Shapiro	Connect:from.domain	RELAY
189506f25ae9SGregory Neil Shapiro	From:good@another.dom	OK
189606f25ae9SGregory Neil Shapiro	From:another.dom	REJECT
189706f25ae9SGregory Neil Shapiro
189806f25ae9SGregory Neil ShapiroThis would deny mails from spammer@some.dom but you could still
189906f25ae9SGregory Neil Shapirosend mail to that address even if FEATURE(`blacklist_recipients')
190006f25ae9SGregory Neil Shapirois enabled.  Your system will allow relaying to friend.domain, but
190106f25ae9SGregory Neil Shapironot from it (unless enabled by other means).  Connections from that
190206f25ae9SGregory Neil Shapirodomain will be allowed even if it ends up in one of the DNS based
190306f25ae9SGregory Neil Shapirorejection lists.  Relaying is enabled from from.domain but not to
190406f25ae9SGregory Neil Shapiroit (since relaying is based on the connection information for
190506f25ae9SGregory Neil Shapirooutgoing relaying, the tag Connect: must be used; for incoming
190606f25ae9SGregory Neil Shapirorelaying, which is based on the recipient address, To: must be
190706f25ae9SGregory Neil Shapiroused).  The last two entries allow mails from good@another.dom but
190806f25ae9SGregory Neil Shapiroreject mail from all other addresses with another.dom as domain
190906f25ae9SGregory Neil Shapiropart.
191006f25ae9SGregory Neil Shapiro
191106f25ae9SGregory Neil ShapiroDelay all checks
191206f25ae9SGregory Neil Shapiro
191306f25ae9SGregory Neil ShapiroBy using FEATURE(`delay_checks') the rulesets check_mail and check_relay
191406f25ae9SGregory Neil Shapirowill not be called when a client connects or issues a MAIL command,
191506f25ae9SGregory Neil Shapirorespectively.  Instead, those rulesets will be called by the check_rcpt
191606f25ae9SGregory Neil Shapiroruleset; they will be skipped if a sender has been authenticated using
191706f25ae9SGregory Neil Shapiroa "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH().
191806f25ae9SGregory Neil ShapiroIf check_mail returns an error then the RCPT TO command will be rejected
191906f25ae9SGregory Neil Shapirowith that error.  If it returns some other result starting with $# then
192006f25ae9SGregory Neil Shapirocheck_relay will be skipped.  If the sender address (or a part of it) is
192106f25ae9SGregory Neil Shapirolisted in the access map and it has a RHS of OK or RELAY, then check_relay
192206f25ae9SGregory Neil Shapirowill be skipped.  This has an interesting side effect: if your domain is
192306f25ae9SGregory Neil Shapiromy.domain and you have
192406f25ae9SGregory Neil Shapiro
192506f25ae9SGregory Neil Shapiro	my.domain	RELAY
192606f25ae9SGregory Neil Shapiro
192706f25ae9SGregory Neil Shapiroin the access map, then all e-mail with a sender address of
192806f25ae9SGregory Neil Shapiro<user@my.domain> gets through, even if check_relay would reject it
192906f25ae9SGregory Neil Shapiro(e.g., based on the hostname or IP address).  This allows spammers
193006f25ae9SGregory Neil Shapiroto get around DNS based blacklist by faking the sender address.  To
193106f25ae9SGregory Neil Shapiroavoid this problem you have to use tagged entries:
193206f25ae9SGregory Neil Shapiro
193306f25ae9SGregory Neil Shapiro	To:my.domain		RELAY
193406f25ae9SGregory Neil Shapiro	Connect:my.domain	RELAY
193506f25ae9SGregory Neil Shapiro
193606f25ae9SGregory Neil Shapiroif you need those entries at all (class {R} may take care of them).
193706f25ae9SGregory Neil Shapiro
193806f25ae9SGregory Neil ShapiroFEATURE(`delay_checks') can take an optional argument:
193906f25ae9SGregory Neil Shapiro
194006f25ae9SGregory Neil Shapiro	FEATURE(`delay_checks', `friend')
194106f25ae9SGregory Neil Shapiro		 enables spamfriend test
194206f25ae9SGregory Neil Shapiro	FEATURE(`delay_checks', `hater')
194306f25ae9SGregory Neil Shapiro		 enables spamhater test
194406f25ae9SGregory Neil Shapiro
194506f25ae9SGregory Neil ShapiroIf such an argument is given, the recipient will be looked up in the access
194606f25ae9SGregory Neil Shapiromap (using the tag To:).  If the argument is `friend', then the other
194706f25ae9SGregory Neil Shapirorulesets will be skipped if the recipient address is found and has RHS
194806f25ae9SGregory Neil Shapirospamfriend.  If the argument is `hater', then the other rulesets will be
194906f25ae9SGregory Neil Shapiroapplied if the recipient address is found and has RHS spamhater.
195006f25ae9SGregory Neil Shapiro
195106f25ae9SGregory Neil ShapiroThis allows for simple exceptions from the tests, e.g., by activating
195206f25ae9SGregory Neil Shapirothe spamfriend option and having
195306f25ae9SGregory Neil Shapiro
195406f25ae9SGregory Neil Shapiro	To:abuse@	SPAMFRIEND
195506f25ae9SGregory Neil Shapiro
195606f25ae9SGregory Neil Shapiroin the access map, mail to abuse@localdomain will get through.  It is
195706f25ae9SGregory Neil Shapiroalso possible to specify a full address or an address with +detail:
195806f25ae9SGregory Neil Shapiro
195906f25ae9SGregory Neil Shapiro	To:abuse@abuse.my.domain	SPAMFRIEND
196006f25ae9SGregory Neil Shapiro	To:me+abuse@		SPAMFRIEND
196106f25ae9SGregory Neil Shapiro
196206f25ae9SGregory Neil Shapiro
196306f25ae9SGregory Neil ShapiroHeader Checks
1964c2aa98e2SPeter Wemm
1965c2aa98e2SPeter WemmYou can also reject mail on the basis of the contents of headers.
1966c2aa98e2SPeter WemmThis is done by adding a ruleset call to the 'H' header definition command
1967c2aa98e2SPeter Wemmin sendmail.cf.  For example, this can be used to check the validity of
1968c2aa98e2SPeter Wemma Message-ID: header:
1969c2aa98e2SPeter Wemm
1970c2aa98e2SPeter Wemm	LOCAL_RULESETS
1971c2aa98e2SPeter Wemm	HMessage-Id: $>CheckMessageId
1972c2aa98e2SPeter Wemm
1973c2aa98e2SPeter Wemm	SCheckMessageId
1974c2aa98e2SPeter Wemm	R< $+ @ $+ >		$@ OK
1975c2aa98e2SPeter Wemm	R$*			$#error $: 553 Header Error
1976c2aa98e2SPeter Wemm
197706f25ae9SGregory Neil ShapiroThe alternative format:
1978065a643dSPeter Wemm
197906f25ae9SGregory Neil Shapiro	HSubject: $>+CheckSubject
1980065a643dSPeter Wemm
198106f25ae9SGregory Neil Shapirothat is, $>+ instead of $>, gives the full Subject: header including
198206f25ae9SGregory Neil Shapirocomments to the ruleset (comments in parentheses () are stripped
198306f25ae9SGregory Neil Shapiroby default).
19842e43090eSPeter Wemm
198506f25ae9SGregory Neil ShapiroA default ruleset for headers which don't have a specific ruleset
198606f25ae9SGregory Neil Shapirodefined for them can be given by:
1987065a643dSPeter Wemm
198806f25ae9SGregory Neil Shapiro	H*: $>CheckHdr
198906f25ae9SGregory Neil Shapiro
1990602a2b1bSGregory Neil ShapiroNotice: All rules act on tokens as explained in doc/op/op.{me,ps,txt}.
1991602a2b1bSGregory Neil ShapiroThat may cause problems with simple header checks due to the
1992602a2b1bSGregory Neil Shapirotokenization. It might be simpler to use a regex map and apply it
1993602a2b1bSGregory Neil Shapiroto $&{currHeader}.
1994602a2b1bSGregory Neil Shapiro
199506f25ae9SGregory Neil ShapiroAfter all of the headers are read, the check_eoh ruleset will be called for
199606f25ae9SGregory Neil Shapiroany final header-related checks.  The ruleset is called with the number of
199706f25ae9SGregory Neil Shapiroheaders and the size of all of the headers in bytes separated by $|.  One
199806f25ae9SGregory Neil Shapiroexample usage is to reject messages which do not have a Message-Id:
199906f25ae9SGregory Neil Shapiroheader.  However, the Message-Id: header is *NOT* a required header and is
200006f25ae9SGregory Neil Shapironot a guaranteed spam indicator.  This ruleset is an example and should
200106f25ae9SGregory Neil Shapiroprobably not be used in production.
200206f25ae9SGregory Neil Shapiro
200306f25ae9SGregory Neil Shapiro	LOCAL_CONFIG
200406f25ae9SGregory Neil Shapiro	Kstorage macro
200506f25ae9SGregory Neil Shapiro
200606f25ae9SGregory Neil Shapiro	LOCAL_RULESETS
200706f25ae9SGregory Neil Shapiro	HMessage-Id: $>CheckMessageId
200806f25ae9SGregory Neil Shapiro
200906f25ae9SGregory Neil Shapiro	SCheckMessageId
201006f25ae9SGregory Neil Shapiro	# Record the presence of the header
201106f25ae9SGregory Neil Shapiro	R$*			$: $(storage {MessageIdCheck} $@ OK $) $1
201206f25ae9SGregory Neil Shapiro	R< $+ @ $+ >		$@ OK
201306f25ae9SGregory Neil Shapiro	R$*			$#error $: 553 Header Error
201406f25ae9SGregory Neil Shapiro
201506f25ae9SGregory Neil Shapiro	Scheck_eoh
201606f25ae9SGregory Neil Shapiro	# Check the macro
201706f25ae9SGregory Neil Shapiro	R$*			$: < $&{MessageIdCheck} >
201806f25ae9SGregory Neil Shapiro	# Clear the macro for the next message
201906f25ae9SGregory Neil Shapiro	R$*			$: $(storage {MessageIdCheck} $) $1
202006f25ae9SGregory Neil Shapiro	# Has a Message-Id: header
202106f25ae9SGregory Neil Shapiro	R< $+ >			$@ OK
202206f25ae9SGregory Neil Shapiro	# Allow missing Message-Id: from local mail
202306f25ae9SGregory Neil Shapiro	R$*			$: < $&{client_name} >
202406f25ae9SGregory Neil Shapiro	R< >			$@ OK
202506f25ae9SGregory Neil Shapiro	R< $=w >		$@ OK
202606f25ae9SGregory Neil Shapiro	# Otherwise, reject the mail
202706f25ae9SGregory Neil Shapiro	R$*			$#error $: 553 Header Error
202806f25ae9SGregory Neil Shapiro
202942e5d165SGregory Neil Shapiro+----------+
203006f25ae9SGregory Neil Shapiro| STARTTLS |
203142e5d165SGregory Neil Shapiro+----------+
203206f25ae9SGregory Neil Shapiro
203306f25ae9SGregory Neil ShapiroIn this text, cert will be used as an abreviation for X.509 certificate,
203406f25ae9SGregory Neil ShapiroDN is the distinguished name of a cert, and CA is a certification authority.
203506f25ae9SGregory Neil Shapiro
203613058a91SGregory Neil ShapiroFor STARTTLS to be offered by sendmail you need to set at least
203713058a91SGregory Neil Shapirothis variables (the file names and paths are just examples):
203813058a91SGregory Neil Shapiro
203913058a91SGregory Neil Shapiro	define(`confCACERT_PATH', `/etc/mail/certs/')
204013058a91SGregory Neil Shapiro	define(`confCACERT', `/etc/mail/certs/CA.cert.pem')
204113058a91SGregory Neil Shapiro	define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem')
204213058a91SGregory Neil Shapiro	define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem')
204313058a91SGregory Neil Shapiro
204413058a91SGregory Neil ShapiroOn systems which do not have the compile flag HASURANDOM set (see
204513058a91SGregory Neil Shapirosendmail/README) you also must set confRAND_FILE.
204613058a91SGregory Neil Shapiro
204713058a91SGregory Neil ShapiroSee doc/op/op.{me,ps} for more information about these options,
204813058a91SGregory Neil Shapiroesp. the sections ``Certificates for STARTTLS'' and ``PRNG for
204913058a91SGregory Neil ShapiroSTARTTLS''.
205013058a91SGregory Neil Shapiro
205106f25ae9SGregory Neil ShapiroMacros related to STARTTLS are:
205206f25ae9SGregory Neil Shapiro
205306f25ae9SGregory Neil Shapiro${cert_issuer} holds the DN of the CA (the cert issuer).
205406f25ae9SGregory Neil Shapiro${cert_subject} holds the DN of the cert (called the cert subject).
205506f25ae9SGregory Neil Shapiro${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1,
205606f25ae9SGregory Neil Shapiro	SSLv3, SSLv2.
205706f25ae9SGregory Neil Shapiro${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA,
205806f25ae9SGregory Neil Shapiro	EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA.
205906f25ae9SGregory Neil Shapiro${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm
206006f25ae9SGregory Neil Shapiro	used for the connection.
206106f25ae9SGregory Neil Shapiro${verify} holds the result of the verification of the presented cert. Possible
206206f25ae9SGregory Neil Shapiro	values are:
206306f25ae9SGregory Neil Shapiro	OK	verification succeeded.
206406f25ae9SGregory Neil Shapiro	NO	no cert presented.
206506f25ae9SGregory Neil Shapiro	FAIL	cert presented but could not be verified, e.g., the signing
206606f25ae9SGregory Neil Shapiro		CA is missing.
206706f25ae9SGregory Neil Shapiro	NONE	STARTTLS has not been performed.
206806f25ae9SGregory Neil Shapiro	TEMP	temporary error occurred.
206906f25ae9SGregory Neil Shapiro	PROTOCOL some protocol error occurred.
207006f25ae9SGregory Neil Shapiro	SOFTWARE STARTTLS handshake failed.
207106f25ae9SGregory Neil Shapiro${server_name}	the name of the server of the current outgoing SMTP
207206f25ae9SGregory Neil Shapiro	connection.
207306f25ae9SGregory Neil Shapiro${server_addr}	the address of the server of the current outgoing SMTP
207406f25ae9SGregory Neil Shapiro	connection.
207506f25ae9SGregory Neil Shapiro
207606f25ae9SGregory Neil ShapiroRelaying
207706f25ae9SGregory Neil Shapiro
207806f25ae9SGregory Neil ShapiroSMTP STARTTLS can allow relaying for senders who have successfully
207906f25ae9SGregory Neil Shapiroauthenticated themselves. This is done in the ruleset RelayAuth. If the
208006f25ae9SGregory Neil Shapiroverification of the cert failed (${verify} != OK), relaying is subject to
208106f25ae9SGregory Neil Shapirothe usual rules. Otherwise the DN of the issuer is looked up in the access
208206f25ae9SGregory Neil Shapiromap using the tag CERTISSUER. If the resulting value is RELAY, relaying is
208306f25ae9SGregory Neil Shapiroallowed. If it is SUBJECT, the DN of the cert subject is looked up next in
208406f25ae9SGregory Neil Shapirothe access map. using the tag CERTSUBJECT. If the value is RELAY, relaying
208506f25ae9SGregory Neil Shapirois allowed.
208606f25ae9SGregory Neil Shapiro
208706f25ae9SGregory Neil ShapiroTo make things a bit more flexible (or complicated), the values for
208806f25ae9SGregory Neil Shapiro${cert_issuer} and ${cert_subject} can be optionally modified by regular
208906f25ae9SGregory Neil Shapiroexpressions defined in the m4 variables _CERT_REGEX_ISSUER_ and
209006f25ae9SGregory Neil Shapiro_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in
209106f25ae9SGregory Neil Shapirorulesets and map lookups, they are modified as follows: each non-printable
209206f25ae9SGregory Neil Shapirocharacter and the characters '<', '>', '(', ')', '"', '+' are replaced by
209306f25ae9SGregory Neil Shapirotheir HEX value with a leading '+'. For example:
209406f25ae9SGregory Neil Shapiro
209506f25ae9SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email=
209606f25ae9SGregory Neil Shapirodarth+cert@endmail.org
209706f25ae9SGregory Neil Shapiro
209806f25ae9SGregory Neil Shapirois encoded as:
209906f25ae9SGregory Neil Shapiro
210006f25ae9SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN=
210106f25ae9SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
210206f25ae9SGregory Neil Shapiro
210306f25ae9SGregory Neil Shapiro(line breaks have been inserted for readability).
210406f25ae9SGregory Neil Shapiro
210506f25ae9SGregory Neil ShapiroOf course it is also possible to write a simple rulesets that allows
210606f25ae9SGregory Neil Shapirorelaying for everyone who can present a cert that can be verified, e.g.,
210706f25ae9SGregory Neil Shapiro
210806f25ae9SGregory Neil ShapiroLOCAL_RULESETS
210906f25ae9SGregory Neil ShapiroSLocal_check_rcpt
211006f25ae9SGregory Neil ShapiroR$*	$: $&{verify}
211106f25ae9SGregory Neil ShapiroROK	$# OK
211206f25ae9SGregory Neil Shapiro
211306f25ae9SGregory Neil ShapiroAllowing Connections
211406f25ae9SGregory Neil Shapiro
211506f25ae9SGregory Neil ShapiroThe rulesets tls_server and tls_client are used to decide whether an SMTP
211606f25ae9SGregory Neil Shapiroconnection is accepted (or should continue).
211706f25ae9SGregory Neil Shapiro
211806f25ae9SGregory Neil Shapirotls_server is called when sendmail acts as client after a STARTTLS command
211906f25ae9SGregory Neil Shapiro(should) have been issued. The parameter is the value of ${verify}.
212006f25ae9SGregory Neil Shapiro
212106f25ae9SGregory Neil Shapirotls_client is called when sendmail acts as server, after a STARTTLS command
212206f25ae9SGregory Neil Shapirohas been issued, and from check_mail. The parameter is the value of
212306f25ae9SGregory Neil Shapiro${verify} and STARTTLS or MAIL, respectively.
212406f25ae9SGregory Neil Shapiro
212506f25ae9SGregory Neil ShapiroBoth rulesets behave the same. If no access map is in use, the connection
212606f25ae9SGregory Neil Shapirowill be accepted unless ${verify} is SOFTWARE, in which case the connection
212706f25ae9SGregory Neil Shapirois always aborted.  Otherwise, ${client_name} (${server_name}) is looked
212806f25ae9SGregory Neil Shapiroup in the access map using the tag TLS_Srv (or TLS_Clt), which is done
212906f25ae9SGregory Neil Shapirowith the ruleset LookUpDomain. If no entry is found, ${client_addr}
213006f25ae9SGregory Neil Shapiro(${server_addr}) is looked up in the access map (same tag, ruleset
213106f25ae9SGregory Neil ShapiroLookUpAddr). If this doesn't result in an entry either, just the tag is
213206f25ae9SGregory Neil Shapirolooked up in the access map (included the trailing :).  The result of the
213306f25ae9SGregory Neil Shapirolookups is then used to call the ruleset tls_connection, which checks the
213406f25ae9SGregory Neil Shapirorequirement specified by the RHS in the access map against the actual
213506f25ae9SGregory Neil Shapiroparameters of the current TLS connection, esp. ${verify} and
213606f25ae9SGregory Neil Shapiro${cipher_bits}. Legal RHSs in the access map are:
213706f25ae9SGregory Neil Shapiro
213806f25ae9SGregory Neil ShapiroVERIFY		verification must have succeeded
213906f25ae9SGregory Neil ShapiroVERIFY:bits	verification must have succeeded and ${cipher_bits} must
214006f25ae9SGregory Neil Shapiro		be greater than or equal bits.
214106f25ae9SGregory Neil ShapiroENCR:bits	${cipher_bits} must be greater than or equal bits.
214206f25ae9SGregory Neil Shapiro
214306f25ae9SGregory Neil ShapiroThe RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary
214406f25ae9SGregory Neil Shapiroor permanent error. The default is a temporary error code (403 4.7.0)
214506f25ae9SGregory Neil Shapirounless the macro TLS_PERM_ERR is set during generation of the .cf file.
214606f25ae9SGregory Neil Shapiro
214706f25ae9SGregory Neil ShapiroIf a certain level of encryption is required, then it might also be
214806f25ae9SGregory Neil Shapiropossible that this level is provided by the security layer from a SASL
214906f25ae9SGregory Neil Shapiroalgorithm, e.g., DIGEST-MD5.
215006f25ae9SGregory Neil Shapiro
215106f25ae9SGregory Neil ShapiroExample: e-mail send to secure.example.com should only use an encrypted
215206f25ae9SGregory Neil Shapiroconnection. e-mail received from hosts within the laptop.example.com domain
215306f25ae9SGregory Neil Shapiroshould only be accepted if they have been authenticated.
215406f25ae9SGregory Neil ShapiroTLS_Srv:secure.example.com      ENCR:112
215506f25ae9SGregory Neil ShapiroTLS_Clt:laptop.example.com      PERM+VERIFY:112
215606f25ae9SGregory Neil Shapiro
2157602a2b1bSGregory Neil ShapiroNotice: requiring that e-mail is sent to a server only encrypted,
2158602a2b1bSGregory Neil Shapiroe.g., via
2159602a2b1bSGregory Neil Shapiro
2160602a2b1bSGregory Neil ShapiroTLS_Srv:secure.domain	ENCR:112
2161602a2b1bSGregory Neil Shapiro
2162602a2b1bSGregory Neil Shapirodoesn't necessarily mean that e-mail sent to that domain is encrypted.
2163602a2b1bSGregory Neil ShapiroIf the domain has multiple MX servers, e.g.,
2164602a2b1bSGregory Neil Shapiro
2165602a2b1bSGregory Neil Shapirosecure.domain.	IN MX 10	mail.secure.domain.
2166602a2b1bSGregory Neil Shapirosecure.domain.	IN MX 50	mail.other.domain.
2167602a2b1bSGregory Neil Shapiro
2168602a2b1bSGregory Neil Shapirothen mail to user@secure.domain may go unencrypted to mail.other.domain.
2169602a2b1bSGregory Neil Shapiro
2170602a2b1bSGregory Neil Shapiro
217106f25ae9SGregory Neil ShapiroReceived: Header
217206f25ae9SGregory Neil Shapiro
217306f25ae9SGregory Neil ShapiroThe Received: header reveals whether STARTTLS has been used. It contains an
217406f25ae9SGregory Neil Shapiroextra line:
217506f25ae9SGregory Neil Shapiro
217606f25ae9SGregory Neil Shapiro(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify})
217706f25ae9SGregory Neil Shapiro
217842e5d165SGregory Neil Shapiro+---------------------+
217906f25ae9SGregory Neil Shapiro| SMTP AUTHENTICATION |
218042e5d165SGregory Neil Shapiro+---------------------+
218106f25ae9SGregory Neil Shapiro
218206f25ae9SGregory Neil ShapiroThe macros ${auth_authen}, ${auth_author}, and ${auth_type} can be
218306f25ae9SGregory Neil Shapiroused in anti-relay rulesets to allow relaying for those users that
218406f25ae9SGregory Neil Shapiroauthenticated themselves.  A very simple example is:
218506f25ae9SGregory Neil Shapiro
218606f25ae9SGregory Neil ShapiroSLocal_check_rcpt
218706f25ae9SGregory Neil ShapiroR$*		$: $&{auth_type}
218806f25ae9SGregory Neil ShapiroR$+		$# OK
218906f25ae9SGregory Neil Shapiro
219006f25ae9SGregory Neil Shapirowhich checks whether a user has successfully authenticated using
219106f25ae9SGregory Neil Shapiroany available mechanism.  Depending on the setup of the CYRUS SASL
219206f25ae9SGregory Neil Shapirolibrary, more sophisticated rulesets might be required, e.g.,
219306f25ae9SGregory Neil Shapiro
219406f25ae9SGregory Neil ShapiroSLocal_check_rcpt
219506f25ae9SGregory Neil ShapiroR$*		$: $&{auth_type} $| $&{auth_authen}
219606f25ae9SGregory Neil ShapiroRDIGEST-MD5 $| $+@$=w	$# OK
219706f25ae9SGregory Neil Shapiro
219806f25ae9SGregory Neil Shapiroto allow relaying for users that authenticated using DIGEST-MD5
219906f25ae9SGregory Neil Shapiroand have an identity in the local domains.
220006f25ae9SGregory Neil Shapiro
220106f25ae9SGregory Neil ShapiroThe ruleset Strust_auth is used to determine whether a given AUTH=
220206f25ae9SGregory Neil Shapiroparameter (that is passed to this ruleset) should be trusted.  This
220306f25ae9SGregory Neil Shapiroruleset may make use of the other ${auth_*} macros.  Only if the
220406f25ae9SGregory Neil Shapiroruleset resolves to the error mailer, the AUTH= parameter is not
220506f25ae9SGregory Neil Shapirotrusted.  A user supplied ruleset Local_trust_auth can be written
220606f25ae9SGregory Neil Shapiroto modify the default behavior, which only trust the AUTH=
220706f25ae9SGregory Neil Shapiroparameter if it is identical to the authenticated user.
220806f25ae9SGregory Neil Shapiro
220906f25ae9SGregory Neil ShapiroPer default, relaying is allowed for any user who authenticated
221006f25ae9SGregory Neil Shapirovia a "trusted" mechanism, i.e., one that is defined via
221106f25ae9SGregory Neil ShapiroTRUST_AUTH_MECH(`list of mechanisms')
2212193538b7SGregory Neil ShapiroFor example:
2213193538b7SGregory Neil ShapiroTRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5')
221406f25ae9SGregory Neil Shapiro
221506f25ae9SGregory Neil ShapiroIf the selected mechanism provides a security layer the number of
221606f25ae9SGregory Neil Shapirobits used for the key of the symmetric cipher is stored in the
221706f25ae9SGregory Neil Shapiromacro ${auth_ssf}.
2218c2aa98e2SPeter Wemm
2219c2aa98e2SPeter Wemm+--------------------------------+
2220c2aa98e2SPeter Wemm| ADDING NEW MAILERS OR RULESETS |
2221c2aa98e2SPeter Wemm+--------------------------------+
2222c2aa98e2SPeter Wemm
2223c2aa98e2SPeter WemmSometimes you may need to add entirely new mailers or rulesets.  They
2224c2aa98e2SPeter Wemmshould be introduced with the constructs MAILER_DEFINITIONS and
2225c2aa98e2SPeter WemmLOCAL_RULESETS respectively.  For example:
2226c2aa98e2SPeter Wemm
2227c2aa98e2SPeter Wemm	MAILER_DEFINITIONS
2228c2aa98e2SPeter Wemm	Mmymailer, ...
2229c2aa98e2SPeter Wemm	...
2230c2aa98e2SPeter Wemm
2231c2aa98e2SPeter Wemm	LOCAL_RULESETS
2232c2aa98e2SPeter Wemm	Smyruleset
2233c2aa98e2SPeter Wemm	...
2234c2aa98e2SPeter Wemm
2235c2aa98e2SPeter Wemm
223606f25ae9SGregory Neil Shapiro#if _FFR_MILTER
2237193538b7SGregory Neil Shapiro+-------------------------+
2238193538b7SGregory Neil Shapiro| ADDING NEW MAIL FILTERS |
2239193538b7SGregory Neil Shapiro+-------------------------+
224006f25ae9SGregory Neil Shapiro
224106f25ae9SGregory Neil ShapiroSendmail supports mail filters to filter incoming SMTP messages according
224206f25ae9SGregory Neil Shapiroto the "Sendmail Mail Filter API" documentation.  These filters can be
224306f25ae9SGregory Neil Shapiroconfigured in your mc file using the two commands:
224406f25ae9SGregory Neil Shapiro
224506f25ae9SGregory Neil Shapiro	MAIL_FILTER(`name', `equates')
224606f25ae9SGregory Neil Shapiro	INPUT_MAIL_FILTER(`name', `equates')
224706f25ae9SGregory Neil Shapiro
224806f25ae9SGregory Neil ShapiroThe first command, MAIL_FILTER(), simply defines a filter with the given
224906f25ae9SGregory Neil Shapironame and equates.  For example:
225006f25ae9SGregory Neil Shapiro
225106f25ae9SGregory Neil Shapiro	MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
225206f25ae9SGregory Neil Shapiro
225306f25ae9SGregory Neil ShapiroThis creates the equivalent sendmail.cf entry:
225406f25ae9SGregory Neil Shapiro
225506f25ae9SGregory Neil Shapiro	Xarchive, S=local:/var/run/archivesock, F=R
225606f25ae9SGregory Neil Shapiro
225706f25ae9SGregory Neil ShapiroThe INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER
225806f25ae9SGregory Neil Shapirobut also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name
225906f25ae9SGregory Neil Shapiroof the filter such that the filter will actually be called by sendmail.
226006f25ae9SGregory Neil Shapiro
226106f25ae9SGregory Neil ShapiroFor example, the two commands:
226206f25ae9SGregory Neil Shapiro
226306f25ae9SGregory Neil Shapiro	INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
226406f25ae9SGregory Neil Shapiro	INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T')
226506f25ae9SGregory Neil Shapiro
226606f25ae9SGregory Neil Shapiroare equivalent to the three commands:
226706f25ae9SGregory Neil Shapiro
226806f25ae9SGregory Neil Shapiro	MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
226906f25ae9SGregory Neil Shapiro	MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T')
227006f25ae9SGregory Neil Shapiro	define(`confINPUT_MAIL_FILTERS', `archive, spamcheck')
227106f25ae9SGregory Neil Shapiro
227206f25ae9SGregory Neil ShapiroIn general, INPUT_MAIL_FILTER() should be used unless you need to define
227306f25ae9SGregory Neil Shapiromore filters than you want to use for `confINPUT_MAIL_FILTERS'.
227406f25ae9SGregory Neil Shapiro
227506f25ae9SGregory Neil ShapiroNote that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER()
227606f25ae9SGregory Neil Shapirocommands will clear the list created by the prior INPUT_MAIL_FILTER()
227706f25ae9SGregory Neil Shapirocommands.
227806f25ae9SGregory Neil Shapiro#endif /* _FFR_MILTER */
227906f25ae9SGregory Neil Shapiro
228006f25ae9SGregory Neil Shapiro
2281c2aa98e2SPeter Wemm+-------------------------------+
2282c2aa98e2SPeter Wemm| NON-SMTP BASED CONFIGURATIONS |
2283c2aa98e2SPeter Wemm+-------------------------------+
2284c2aa98e2SPeter Wemm
228506f25ae9SGregory Neil ShapiroThese configuration files are designed primarily for use by
228606f25ae9SGregory Neil ShapiroSMTP-based sites.  They may not be well tuned for UUCP-only or
2287c2aa98e2SPeter WemmUUCP-primarily nodes (the latter is defined as a small local net
228806f25ae9SGregory Neil Shapiroconnected to the rest of the world via UUCP).  However, there is
228906f25ae9SGregory Neil Shapiroone hook to handle some special cases.
2290c2aa98e2SPeter Wemm
2291c2aa98e2SPeter WemmYou can define a ``smart host'' that understands a richer address syntax
2292c2aa98e2SPeter Wemmusing:
2293c2aa98e2SPeter Wemm
22942e43090eSPeter Wemm	define(`SMART_HOST', `mailer:hostname')
2295c2aa98e2SPeter Wemm
2296c2aa98e2SPeter WemmIn this case, the ``mailer:'' defaults to "relay".  Any messages that
2297c2aa98e2SPeter Wemmcan't be handled using the usual UUCP rules are passed to this host.
2298c2aa98e2SPeter Wemm
2299c2aa98e2SPeter WemmIf you are on a local SMTP-based net that connects to the outside
2300c2aa98e2SPeter Wemmworld via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules.
2301c2aa98e2SPeter WemmFor example:
2302c2aa98e2SPeter Wemm
230306f25ae9SGregory Neil Shapiro	define(`SMART_HOST', `uucp-new:uunet')
2304c2aa98e2SPeter Wemm	LOCAL_NET_CONFIG
2305c2aa98e2SPeter Wemm	R$* < @ $* .$m. > $*	$#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
2306c2aa98e2SPeter Wemm
2307c2aa98e2SPeter WemmThis will cause all names that end in your domain name ($m) via
230806f25ae9SGregory Neil ShapiroSMTP; anything else will be sent via uucp-new (smart UUCP) to uunet.
23092e43090eSPeter WemmIf you have FEATURE(`nocanonify'), you may need to omit the dots after
2310c2aa98e2SPeter Wemmthe $m.  If you are running a local DNS inside your domain which is
2311c2aa98e2SPeter Wemmnot otherwise connected to the outside world, you probably want to
2312c2aa98e2SPeter Wemmuse:
2313c2aa98e2SPeter Wemm
23142e43090eSPeter Wemm	define(`SMART_HOST', `smtp:fire.wall.com')
2315c2aa98e2SPeter Wemm	LOCAL_NET_CONFIG
2316c2aa98e2SPeter Wemm	R$* < @ $* . > $*	$#smtp $@ $2. $: $1 < @ $2. > $3
2317c2aa98e2SPeter Wemm
2318c2aa98e2SPeter WemmThat is, send directly only to things you found in your DNS lookup;
2319c2aa98e2SPeter Wemmanything else goes through SMART_HOST.
2320c2aa98e2SPeter Wemm
2321c2aa98e2SPeter WemmYou may need to turn off the anti-spam rules in order to accept
23222e43090eSPeter WemmUUCP mail with FEATURE(`promiscuous_relay') and
23232e43090eSPeter WemmFEATURE(`accept_unresolvable_domains').
2324c2aa98e2SPeter Wemm
2325c2aa98e2SPeter Wemm
2326c2aa98e2SPeter Wemm+-----------+
2327c2aa98e2SPeter Wemm| WHO AM I? |
2328c2aa98e2SPeter Wemm+-----------+
2329c2aa98e2SPeter Wemm
2330c2aa98e2SPeter WemmNormally, the $j macro is automatically defined to be your fully
2331c2aa98e2SPeter Wemmqualified domain name (FQDN).  Sendmail does this by getting your
2332c2aa98e2SPeter Wemmhost name using gethostname and then calling gethostbyname on the
2333c2aa98e2SPeter Wemmresult.  For example, in some environments gethostname returns
2334c2aa98e2SPeter Wemmonly the root of the host name (such as "foo"); gethostbyname is
2335c2aa98e2SPeter Wemmsupposed to return the FQDN ("foo.bar.com").  In some (fairly rare)
2336c2aa98e2SPeter Wemmcases, gethostbyname may fail to return the FQDN.  In this case
2337c2aa98e2SPeter Wemmyou MUST define confDOMAIN_NAME to be your fully qualified domain
2338c2aa98e2SPeter Wemmname.  This is usually done using:
2339c2aa98e2SPeter Wemm
2340c2aa98e2SPeter Wemm	Dmbar.com
2341c2aa98e2SPeter Wemm	define(`confDOMAIN_NAME', `$w.$m')dnl
2342c2aa98e2SPeter Wemm
2343c2aa98e2SPeter Wemm
234406f25ae9SGregory Neil Shapiro+-----------------------------------+
234506f25ae9SGregory Neil Shapiro| ACCEPTING MAIL FOR MULTIPLE NAMES |
234606f25ae9SGregory Neil Shapiro+-----------------------------------+
234706f25ae9SGregory Neil Shapiro
234806f25ae9SGregory Neil ShapiroIf your host is known by several different names, you need to augment
234906f25ae9SGregory Neil Shapiroclass {w}.  This is a list of names by which your host is known, and
235006f25ae9SGregory Neil Shapiroanything sent to an address using a host name in this list will be
235106f25ae9SGregory Neil Shapirotreated as local mail.  You can do this in two ways:  either create the
235206f25ae9SGregory Neil Shapirofile /etc/mail/local-host-names containing a list of your aliases (one per
235306f25ae9SGregory Neil Shapiroline), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add
235406f25ae9SGregory Neil Shapiro``LOCAL_DOMAIN(`alias.host.name')''.  Be sure you use the fully-qualified
235506f25ae9SGregory Neil Shapironame of the host, rather than a short name.
235606f25ae9SGregory Neil Shapiro
235706f25ae9SGregory Neil ShapiroIf you want to have different address in different domains, take
235806f25ae9SGregory Neil Shapiroa look at the virtusertable feature, which is also explained at
235906f25ae9SGregory Neil Shapirohttp://www.sendmail.org/virtual-hosting.html
236006f25ae9SGregory Neil Shapiro
236106f25ae9SGregory Neil Shapiro
2362c2aa98e2SPeter Wemm+--------------------+
2363c2aa98e2SPeter Wemm| USING MAILERTABLES |
2364c2aa98e2SPeter Wemm+--------------------+
2365c2aa98e2SPeter Wemm
23662e43090eSPeter WemmTo use FEATURE(`mailertable'), you will have to create an external
2367c2aa98e2SPeter Wemmdatabase containing the routing information for various domains.
2368c2aa98e2SPeter WemmFor example, a mailertable file in text format might be:
2369c2aa98e2SPeter Wemm
2370c2aa98e2SPeter Wemm	.my.domain		xnet:%1.my.domain
237106f25ae9SGregory Neil Shapiro	uuhost1.my.domain	uucp-new:uuhost1
2372c2aa98e2SPeter Wemm	.bitnet			smtp:relay.bit.net
2373c2aa98e2SPeter Wemm
237406f25ae9SGregory Neil ShapiroThis should normally be stored in /etc/mail/mailertable.  The actual
2375c2aa98e2SPeter Wemmdatabase version of the mailertable is built using:
2376c2aa98e2SPeter Wemm
237706f25ae9SGregory Neil Shapiro	makemap hash /etc/mail/mailertable < /etc/mail/mailertable
2378c2aa98e2SPeter Wemm
2379c2aa98e2SPeter WemmThe semantics are simple.  Any LHS entry that does not begin with
2380c2aa98e2SPeter Wemma dot matches the full host name indicated.  LHS entries beginning
238142e5d165SGregory Neil Shapirowith a dot match anything ending with that domain name (including
238242e5d165SGregory Neil Shapirothe leading dot) -- that is, they can be thought of as having a
238342e5d165SGregory Neil Shapiroleading ".+" regular expression pattern for a non-empty sequence of
238442e5d165SGregory Neil Shapirocharacters.  Matching is done in order of most-to-least qualified
238542e5d165SGregory Neil Shapiro-- for example, even though ".my.domain" is listed first in the
238642e5d165SGregory Neil Shapiroabove example, an entry of "uuhost1.my.domain" will match the second
238742e5d165SGregory Neil Shapiroentry since it is more explicit.  Note: e-mail to "user@my.domain"
238842e5d165SGregory Neil Shapirodoes not match any entry in the above table.  You need to have
238942e5d165SGregory Neil Shapirosomething like:
239006f25ae9SGregory Neil Shapiro
239106f25ae9SGregory Neil Shapiro	my.domain		esmtp:host.my.domain
2392c2aa98e2SPeter Wemm
2393c2aa98e2SPeter WemmThe RHS should always be a "mailer:host" pair.  The mailer is the
239406f25ae9SGregory Neil Shapiroconfiguration name of a mailer (that is, an {M} line in the
2395c2aa98e2SPeter Wemmsendmail.cf file).  The "host" will be the hostname passed to
2396c2aa98e2SPeter Wemmthat mailer.  In domain-based matches (that is, those with leading
2397c2aa98e2SPeter Wemmdots) the "%1" may be used to interpolate the wildcarded part of
2398c2aa98e2SPeter Wemmthe host name.  For example, the first line above sends everything
2399c2aa98e2SPeter Wemmaddressed to "anything.my.domain" to that same host name, but using
2400c2aa98e2SPeter Wemmthe (presumably experimental) xnet mailer.
2401c2aa98e2SPeter Wemm
2402c2aa98e2SPeter WemmIn some cases you may want to temporarily turn off MX records,
2403c2aa98e2SPeter Wemmparticularly on gateways.  For example, you may want to MX
2404c2aa98e2SPeter Wemmeverything in a domain to one machine that then forwards it
2405c2aa98e2SPeter Wemmdirectly.  To do this, you might use the DNS configuration:
2406c2aa98e2SPeter Wemm
2407c2aa98e2SPeter Wemm	*.domain.	IN	MX	0	relay.machine
2408c2aa98e2SPeter Wemm
2409c2aa98e2SPeter Wemmand on relay.machine use the mailertable:
2410c2aa98e2SPeter Wemm
2411c2aa98e2SPeter Wemm	.domain		smtp:[gateway.domain]
2412c2aa98e2SPeter Wemm
2413c2aa98e2SPeter WemmThe [square brackets] turn off MX records for this host only.
2414c2aa98e2SPeter WemmIf you didn't do this, the mailertable would use the MX record
2415c2aa98e2SPeter Wemmagain, which would give you an MX loop.
2416c2aa98e2SPeter Wemm
2417c2aa98e2SPeter Wemm
2418c2aa98e2SPeter Wemm+--------------------------------+
2419c2aa98e2SPeter Wemm| USING USERDB TO MAP FULL NAMES |
2420c2aa98e2SPeter Wemm+--------------------------------+
2421c2aa98e2SPeter Wemm
2422c2aa98e2SPeter WemmThe user database was not originally intended for mapping full names
2423c2aa98e2SPeter Wemmto login names (e.g., Eric.Allman => eric), but some people are using
242406f25ae9SGregory Neil Shapiroit that way.  (it is recommended that you set up aliases for this
2425c2aa98e2SPeter Wemmpurpose instead -- since you can specify multiple alias files, this
2426c2aa98e2SPeter Wemmis fairly easy.)  The intent was to locate the default maildrop at
2427c2aa98e2SPeter Wemma site, but allow you to override this by sending to a specific host.
2428c2aa98e2SPeter Wemm
2429c2aa98e2SPeter WemmIf you decide to set up the user database in this fashion, it is
24302e43090eSPeter Wemmimperative that you not use FEATURE(`stickyhost') -- otherwise,
2431c2aa98e2SPeter Wemme-mail sent to Full.Name@local.host.name will be rejected.
2432c2aa98e2SPeter Wemm
2433c2aa98e2SPeter WemmTo build the internal form of the user database, use:
2434c2aa98e2SPeter Wemm
243506f25ae9SGregory Neil Shapiro	makemap btree /etc/mail/userdb < /etc/mail/userdb.txt
2436c2aa98e2SPeter Wemm
243706f25ae9SGregory Neil ShapiroAs a general rule, it is an extremely bad idea to using full names
243806f25ae9SGregory Neil Shapiroas e-mail addresses, since they are not in any sense unique.  For
243942e5d165SGregory Neil Shapiroexample, the UNIX software-development community has at least two
244006f25ae9SGregory Neil Shapirowell-known Peter Deutsches, and at one time Bell Labs had two
244106f25ae9SGregory Neil ShapiroStephen R. Bournes with offices along the same hallway.  Which one
244206f25ae9SGregory Neil Shapirowill be forced to suffer the indignity of being Stephen_R_Bourne_2?
244306f25ae9SGregory Neil ShapiroThe less famous of the two, or the one that was hired later?
2444c2aa98e2SPeter Wemm
2445c2aa98e2SPeter WemmFinger should handle full names (and be fuzzy).  Mail should use
244606f25ae9SGregory Neil Shapirohandles, and not be fuzzy.
2447c2aa98e2SPeter Wemm
2448c2aa98e2SPeter Wemm
2449c2aa98e2SPeter Wemm+--------------------------------+
2450c2aa98e2SPeter Wemm| MISCELLANEOUS SPECIAL FEATURES |
2451c2aa98e2SPeter Wemm+--------------------------------+
2452c2aa98e2SPeter Wemm
2453c2aa98e2SPeter WemmPlussed users
2454c2aa98e2SPeter Wemm	Sometimes it is convenient to merge configuration on a
2455c2aa98e2SPeter Wemm	centralized mail machine, for example, to forward all
2456c2aa98e2SPeter Wemm	root mail to a mail server.  In this case it might be
2457c2aa98e2SPeter Wemm	useful to be able to treat the root addresses as a class
2458c2aa98e2SPeter Wemm	of addresses with subtle differences.  You can do this
2459c2aa98e2SPeter Wemm	using plussed users.  For example, a client might include
2460c2aa98e2SPeter Wemm	the alias:
2461c2aa98e2SPeter Wemm
2462c2aa98e2SPeter Wemm		root:  root+client1@server
2463c2aa98e2SPeter Wemm
2464c2aa98e2SPeter Wemm	On the server, this will match an alias for "root+client1".
2465c2aa98e2SPeter Wemm	If that is not found, the alias "root+*" will be tried,
2466c2aa98e2SPeter Wemm	then "root".
2467c2aa98e2SPeter Wemm
2468c2aa98e2SPeter Wemm
2469c2aa98e2SPeter Wemm+----------------+
2470c2aa98e2SPeter Wemm| SECURITY NOTES |
2471c2aa98e2SPeter Wemm+----------------+
2472c2aa98e2SPeter Wemm
2473c2aa98e2SPeter WemmA lot of sendmail security comes down to you.  Sendmail 8 is much
2474c2aa98e2SPeter Wemmmore careful about checking for security problems than previous
2475c2aa98e2SPeter Wemmversions, but there are some things that you still need to watch
2476c2aa98e2SPeter Wemmfor.  In particular:
2477c2aa98e2SPeter Wemm
2478c2aa98e2SPeter Wemm* Make sure the aliases file isn't writable except by trusted
2479c2aa98e2SPeter Wemm  system personnel.  This includes both the text and database
2480c2aa98e2SPeter Wemm  version.
2481c2aa98e2SPeter Wemm
2482c2aa98e2SPeter Wemm* Make sure that other files that sendmail reads, such as the
2483c2aa98e2SPeter Wemm  mailertable, are only writable by trusted system personnel.
2484c2aa98e2SPeter Wemm
2485c2aa98e2SPeter Wemm* The queue directory should not be world writable PARTICULARLY
2486c2aa98e2SPeter Wemm  if your system allows "file giveaways" (that is, if a non-root
2487c2aa98e2SPeter Wemm  user can chown any file they own to any other user).
2488c2aa98e2SPeter Wemm
2489c2aa98e2SPeter Wemm* If your system allows file giveaways, DO NOT create a publically
2490c2aa98e2SPeter Wemm  writable directory for forward files.  This will allow anyone
2491c2aa98e2SPeter Wemm  to steal anyone else's e-mail.  Instead, create a script that
2492c2aa98e2SPeter Wemm  copies the .forward file from users' home directories once a
2493c2aa98e2SPeter Wemm  night (if you want the non-NFS-mounted forward directory).
2494c2aa98e2SPeter Wemm
2495c2aa98e2SPeter Wemm* If your system allows file giveaways, you'll find that
2496c2aa98e2SPeter Wemm  sendmail is much less trusting of :include: files -- in
2497c2aa98e2SPeter Wemm  particular, you'll have to have /SENDMAIL/ANY/SHELL/ in
2498c2aa98e2SPeter Wemm  /etc/shells before they will be trusted (that is, before
2499c2aa98e2SPeter Wemm  files and programs listed in them will be honored).
2500c2aa98e2SPeter Wemm
2501c2aa98e2SPeter WemmIn general, file giveaways are a mistake -- if you can turn them
250206f25ae9SGregory Neil Shapirooff, do so.
2503c2aa98e2SPeter Wemm
2504c2aa98e2SPeter Wemm
2505c2aa98e2SPeter Wemm+--------------------------------+
2506c2aa98e2SPeter Wemm| TWEAKING CONFIGURATION OPTIONS |
2507c2aa98e2SPeter Wemm+--------------------------------+
2508c2aa98e2SPeter Wemm
2509c2aa98e2SPeter WemmThere are a large number of configuration options that don't normally
2510c2aa98e2SPeter Wemmneed to be changed.  However, if you feel you need to tweak them, you
2511c2aa98e2SPeter Wemmcan define the following M4 variables.  This list is shown in four
2512c2aa98e2SPeter Wemmcolumns:  the name you define, the default value for that definition,
2513c2aa98e2SPeter Wemmthe option or macro that is affected (either Ox for an option or Dx
2514c2aa98e2SPeter Wemmfor a macro), and a brief description.  Greater detail of the semantics
2515c2aa98e2SPeter Wemmcan be found in the Installation and Operations Guide.
2516c2aa98e2SPeter Wemm
2517c2aa98e2SPeter WemmSome options are likely to be deprecated in future versions -- that is,
2518c2aa98e2SPeter Wemmthe option is only included to provide back-compatibility.  These are
2519c2aa98e2SPeter Wemmmarked with "*".
2520c2aa98e2SPeter Wemm
2521c2aa98e2SPeter WemmRemember that these options are M4 variables, and hence may need to
2522c2aa98e2SPeter Wemmbe quoted.  In particular, arguments with commas will usually have to
2523c2aa98e2SPeter Wemmbe ``double quoted, like this phrase'' to avoid having the comma
2524c2aa98e2SPeter Wemmconfuse things.  This is common for alias file definitions and for
2525c2aa98e2SPeter Wemmthe read timeout.
2526c2aa98e2SPeter Wemm
2527c2aa98e2SPeter WemmM4 Variable Name	Configuration	Description & [Default]
2528c2aa98e2SPeter Wemm================	=============	=======================
2529c2aa98e2SPeter WemmconfMAILER_NAME		$n macro	[MAILER-DAEMON] The sender name used
2530c2aa98e2SPeter Wemm					for internally generated outgoing
2531c2aa98e2SPeter Wemm					messages.
2532c2aa98e2SPeter WemmconfDOMAIN_NAME		$j macro	If defined, sets $j.  This should
2533c2aa98e2SPeter Wemm					only be done if your system cannot
2534c2aa98e2SPeter Wemm					determine your local domain name,
2535c2aa98e2SPeter Wemm					and then it should be set to
2536c2aa98e2SPeter Wemm					$w.Foo.COM, where Foo.COM is your
2537c2aa98e2SPeter Wemm					domain name.
2538c2aa98e2SPeter WemmconfCF_VERSION		$Z macro	If defined, this is appended to the
2539c2aa98e2SPeter Wemm					configuration version name.
2540c2aa98e2SPeter WemmconfFROM_HEADER		From:		[$?x$x <$g>$|$g$.] The format of an
2541c2aa98e2SPeter Wemm					internally generated From: address.
2542c2aa98e2SPeter WemmconfRECEIVED_HEADER	Received:
2543c2aa98e2SPeter Wemm		[$?sfrom $s $.$?_($?s$|from $.$_)
254406f25ae9SGregory Neil Shapiro			$.$?{auth_type}(authenticated)
2545c2aa98e2SPeter Wemm			$.by $j ($v/$Z)$?r with $r$. id $i$?u
2546c2aa98e2SPeter Wemm			for $u; $|;
2547c2aa98e2SPeter Wemm			$.$b]
2548c2aa98e2SPeter Wemm					The format of the Received: header
2549c2aa98e2SPeter Wemm					in messages passed through this host.
2550c2aa98e2SPeter Wemm					It is unwise to try to change this.
255106f25ae9SGregory Neil ShapiroconfCW_FILE		Fw class	[/etc/mail/local-host-names] Name
255206f25ae9SGregory Neil Shapiro					of file used to get the local
255306f25ae9SGregory Neil Shapiro					additions to class {w} (local host
255406f25ae9SGregory Neil Shapiro					names).
255506f25ae9SGregory Neil ShapiroconfCT_FILE		Ft class	[/etc/mail/trusted-users] Name of
255606f25ae9SGregory Neil Shapiro					file used to get the local additions
255706f25ae9SGregory Neil Shapiro					to class {t} (trusted users).
2558c2aa98e2SPeter WemmconfCR_FILE		FR class	[/etc/mail/relay-domains] Name of
2559c2aa98e2SPeter Wemm					file used to get the local additions
256006f25ae9SGregory Neil Shapiro					to class {R} (hosts allowed to relay).
2561c2aa98e2SPeter WemmconfTRUSTED_USERS	Ct class	[no default] Names of users to add to
2562c2aa98e2SPeter Wemm					the list of trusted users.  This list
2563c2aa98e2SPeter Wemm					always includes root, uucp, and daemon.
25642e43090eSPeter Wemm					See also FEATURE(`use_ct_file').
256506f25ae9SGregory Neil ShapiroconfTRUSTED_USER	TrustedUser	[no default] Trusted user for file
256606f25ae9SGregory Neil Shapiro					ownership and starting the daemon.
256706f25ae9SGregory Neil Shapiro					Not to be confused with
256806f25ae9SGregory Neil Shapiro					confTRUSTED_USERS (see above).
2569c2aa98e2SPeter WemmconfSMTP_MAILER		-		[esmtp] The mailer name used when
2570c2aa98e2SPeter Wemm					SMTP connectivity is required.
257106f25ae9SGregory Neil Shapiro					One of "smtp", "smtp8",
257206f25ae9SGregory Neil Shapiro					"esmtp", or "dsmtp".
2573c2aa98e2SPeter WemmconfUUCP_MAILER		-		[uucp-old] The mailer to be used by
2574c2aa98e2SPeter Wemm					default for bang-format recipient
2575c2aa98e2SPeter Wemm					addresses.  See also discussion of
257606f25ae9SGregory Neil Shapiro					class {U}, class {Y}, and class {Z}
257706f25ae9SGregory Neil Shapiro					in the MAILER(`uucp') section.
2578c2aa98e2SPeter WemmconfLOCAL_MAILER	-		[local] The mailer name used when
2579c2aa98e2SPeter Wemm					local connectivity is required.
2580c2aa98e2SPeter Wemm					Almost always "local".
2581c2aa98e2SPeter WemmconfRELAY_MAILER	-		[relay] The default mailer name used
2582c2aa98e2SPeter Wemm					for relaying any mail (e.g., to a
2583c2aa98e2SPeter Wemm					BITNET_RELAY, a SMART_HOST, or
2584c2aa98e2SPeter Wemm					whatever).  This can reasonably be
2585c2aa98e2SPeter Wemm					"uucp-new" if you are on a
2586c2aa98e2SPeter Wemm					UUCP-connected site.
2587c2aa98e2SPeter WemmconfSEVEN_BIT_INPUT	SevenBitInput	[False] Force input to seven bits?
2588c2aa98e2SPeter WemmconfEIGHT_BIT_HANDLING	EightBitMode	[pass8] 8-bit data handling
2589c2aa98e2SPeter WemmconfALIAS_WAIT		AliasWait	[10m] Time to wait for alias file
2590c2aa98e2SPeter Wemm					rebuild until you get bored and
2591c2aa98e2SPeter Wemm					decide that the apparently pending
2592c2aa98e2SPeter Wemm					rebuild failed.
2593c2aa98e2SPeter WemmconfMIN_FREE_BLOCKS	MinFreeBlocks	[100] Minimum number of free blocks on
2594c2aa98e2SPeter Wemm					queue filesystem to accept SMTP mail.
2595c2aa98e2SPeter Wemm					(Prior to 8.7 this was minfree/maxsize,
2596c2aa98e2SPeter Wemm					where minfree was the number of free
2597c2aa98e2SPeter Wemm					blocks and maxsize was the maximum
2598c2aa98e2SPeter Wemm					message size.  Use confMAX_MESSAGE_SIZE
2599c2aa98e2SPeter Wemm					for the second value now.)
2600c2aa98e2SPeter WemmconfMAX_MESSAGE_SIZE	MaxMessageSize	[infinite] The maximum size of messages
2601c2aa98e2SPeter Wemm					that will be accepted (in bytes).
2602c2aa98e2SPeter WemmconfBLANK_SUB		BlankSub	[.] Blank (space) substitution
2603c2aa98e2SPeter Wemm					character.
2604c2aa98e2SPeter WemmconfCON_EXPENSIVE	HoldExpensive	[False] Avoid connecting immediately
260506f25ae9SGregory Neil Shapiro					to mailers marked expensive.
2606c2aa98e2SPeter WemmconfCHECKPOINT_INTERVAL	CheckpointInterval
2607c2aa98e2SPeter Wemm					[10] Checkpoint queue files every N
2608c2aa98e2SPeter Wemm					recipients.
2609c2aa98e2SPeter WemmconfDELIVERY_MODE	DeliveryMode	[background] Default delivery mode.
2610c2aa98e2SPeter WemmconfAUTO_REBUILD	AutoRebuildAliases
2611c2aa98e2SPeter Wemm					[False] Automatically rebuild alias
2612c2aa98e2SPeter Wemm					file if needed.
261306f25ae9SGregory Neil Shapiro					There is a potential for a denial
261406f25ae9SGregory Neil Shapiro					of service attack if this is set.
261506f25ae9SGregory Neil Shapiro					This option is deprecated and will
261606f25ae9SGregory Neil Shapiro					be removed from a future version.
2617c2aa98e2SPeter WemmconfERROR_MODE		ErrorMode	[print] Error message mode.
2618c2aa98e2SPeter WemmconfERROR_MESSAGE	ErrorHeader	[undefined] Error message header/file.
2619065a643dSPeter WemmconfSAVE_FROM_LINES	SaveFromLine	Save extra leading From_ lines.
2620c2aa98e2SPeter WemmconfTEMP_FILE_MODE	TempFileMode	[0600] Temporary file mode.
2621c2aa98e2SPeter WemmconfMATCH_GECOS		MatchGECOS	[False] Match GECOS field.
2622c2aa98e2SPeter WemmconfMAX_HOP		MaxHopCount	[25] Maximum hop count.
262306f25ae9SGregory Neil ShapiroconfIGNORE_DOTS*	IgnoreDots	[False; always False in -bs or -bd
262406f25ae9SGregory Neil Shapiro					mode] Ignore dot as terminator for
262506f25ae9SGregory Neil Shapiro					incoming messages?
2626c2aa98e2SPeter WemmconfBIND_OPTS		ResolverOptions	[undefined] Default options for DNS
2627c2aa98e2SPeter Wemm					resolver.
2628c2aa98e2SPeter WemmconfMIME_FORMAT_ERRORS*	SendMimeErrors	[True] Send error messages as MIME-
2629c2aa98e2SPeter Wemm					encapsulated messages per RFC 1344.
2630c2aa98e2SPeter WemmconfFORWARD_PATH	ForwardPath	[$z/.forward.$w:$z/.forward]
2631c2aa98e2SPeter Wemm					The colon-separated list of places to
2632c2aa98e2SPeter Wemm					search for .forward files.  N.B.: see
2633c2aa98e2SPeter Wemm					the Security Notes section.
2634c2aa98e2SPeter WemmconfMCI_CACHE_SIZE	ConnectionCacheSize
2635c2aa98e2SPeter Wemm					[2] Size of open connection cache.
2636c2aa98e2SPeter WemmconfMCI_CACHE_TIMEOUT	ConnectionCacheTimeout
2637c2aa98e2SPeter Wemm					[5m] Open connection cache timeout.
2638c2aa98e2SPeter WemmconfHOST_STATUS_DIRECTORY HostStatusDirectory
2639c2aa98e2SPeter Wemm					[undefined] If set, host status is kept
2640c2aa98e2SPeter Wemm					on disk between sendmail runs in the
2641c2aa98e2SPeter Wemm					named directory tree.  This need not be
2642c2aa98e2SPeter Wemm					a full pathname, in which case it is
2643c2aa98e2SPeter Wemm					interpreted relative to the queue
2644c2aa98e2SPeter Wemm					directory.
2645c2aa98e2SPeter WemmconfSINGLE_THREAD_DELIVERY  SingleThreadDelivery
2646c2aa98e2SPeter Wemm					[False] If this option and the
2647c2aa98e2SPeter Wemm					HostStatusDirectory option are both
2648c2aa98e2SPeter Wemm					set, single thread deliveries to other
2649c2aa98e2SPeter Wemm					hosts.  That is, don't allow any two
2650c2aa98e2SPeter Wemm					sendmails on this host to connect
2651c2aa98e2SPeter Wemm					simultaneously to any other single
2652c2aa98e2SPeter Wemm					host.  This can slow down delivery in
2653c2aa98e2SPeter Wemm					some cases, in particular since a
2654c2aa98e2SPeter Wemm					cached but otherwise idle connection
2655c2aa98e2SPeter Wemm					to a host will prevent other sendmails
2656c2aa98e2SPeter Wemm					from connecting to the other host.
265706f25ae9SGregory Neil ShapiroconfUSE_ERRORS_TO*	UseErrorsTo	[False] Use the Errors-To: header to
2658c2aa98e2SPeter Wemm					deliver error messages.  This should
2659c2aa98e2SPeter Wemm					not be necessary because of general
2660c2aa98e2SPeter Wemm					acceptance of the envelope/header
2661c2aa98e2SPeter Wemm					distinction.
2662c2aa98e2SPeter WemmconfLOG_LEVEL		LogLevel	[9] Log level.
266306f25ae9SGregory Neil ShapiroconfME_TOO		MeToo		[True] Include sender in group
266406f25ae9SGregory Neil Shapiro					expansions.  This option is
266506f25ae9SGregory Neil Shapiro					deprecated and will be removed from
266606f25ae9SGregory Neil Shapiro					a future version.
2667c2aa98e2SPeter WemmconfCHECK_ALIASES	CheckAliases	[False] Check RHS of aliases when
2668c2aa98e2SPeter Wemm					running newaliases.  Since this does
2669c2aa98e2SPeter Wemm					DNS lookups on every address, it can
2670c2aa98e2SPeter Wemm					slow down the alias rebuild process
2671c2aa98e2SPeter Wemm					considerably on large alias files.
2672c2aa98e2SPeter WemmconfOLD_STYLE_HEADERS*	OldStyleHeaders	[True] Assume that headers without
2673c2aa98e2SPeter Wemm					special chars are old style.
267406f25ae9SGregory Neil ShapiroconfCLIENT_OPTIONS	ClientPortOptions
267506f25ae9SGregory Neil Shapiro					[none] Options for outgoing SMTP client
267606f25ae9SGregory Neil Shapiro					connections.
2677c2aa98e2SPeter WemmconfPRIVACY_FLAGS	PrivacyOptions	[authwarnings] Privacy flags.
2678c2aa98e2SPeter WemmconfCOPY_ERRORS_TO	PostmasterCopy	[undefined] Address for additional
2679c2aa98e2SPeter Wemm					copies of all error messages.
2680c2aa98e2SPeter WemmconfQUEUE_FACTOR	QueueFactor	[600000] Slope of queue-only function.
2681c2aa98e2SPeter WemmconfDONT_PRUNE_ROUTES	DontPruneRoutes	[False] Don't prune down route-addr
2682c2aa98e2SPeter Wemm					syntax addresses to the minimum
2683c2aa98e2SPeter Wemm					possible.
2684c2aa98e2SPeter WemmconfSAFE_QUEUE*		SuperSafe	[True] Commit all messages to disk
2685c2aa98e2SPeter Wemm					before forking.
2686c2aa98e2SPeter WemmconfTO_INITIAL		Timeout.initial	[5m] The timeout waiting for a response
2687c2aa98e2SPeter Wemm					on the initial connect.
2688c2aa98e2SPeter WemmconfTO_CONNECT		Timeout.connect	[0] The timeout waiting for an initial
2689c2aa98e2SPeter Wemm					connect() to complete.  This can only
2690c2aa98e2SPeter Wemm					shorten connection timeouts; the kernel
2691c2aa98e2SPeter Wemm					silently enforces an absolute maximum
2692c2aa98e2SPeter Wemm					(which varies depending on the system).
2693c2aa98e2SPeter WemmconfTO_ICONNECT		Timeout.iconnect
2694c2aa98e2SPeter Wemm					[undefined] Like Timeout.connect, but
2695c2aa98e2SPeter Wemm					applies only to the very first attempt
2696c2aa98e2SPeter Wemm					to connect to a host in a message.
2697c2aa98e2SPeter Wemm					This allows a single very fast pass
2698c2aa98e2SPeter Wemm					followed by more careful delivery
2699c2aa98e2SPeter Wemm					attempts in the future.
2700c2aa98e2SPeter WemmconfTO_HELO		Timeout.helo	[5m] The timeout waiting for a response
2701c2aa98e2SPeter Wemm					to a HELO or EHLO command.
2702c2aa98e2SPeter WemmconfTO_MAIL		Timeout.mail	[10m] The timeout waiting for a
2703c2aa98e2SPeter Wemm					response to the MAIL command.
2704c2aa98e2SPeter WemmconfTO_RCPT		Timeout.rcpt	[1h] The timeout waiting for a response
2705c2aa98e2SPeter Wemm					to the RCPT command.
2706c2aa98e2SPeter WemmconfTO_DATAINIT		Timeout.datainit
2707c2aa98e2SPeter Wemm					[5m] The timeout waiting for a 354
2708c2aa98e2SPeter Wemm					response from the DATA command.
2709c2aa98e2SPeter WemmconfTO_DATABLOCK	Timeout.datablock
2710c2aa98e2SPeter Wemm					[1h] The timeout waiting for a block
2711c2aa98e2SPeter Wemm					during DATA phase.
2712c2aa98e2SPeter WemmconfTO_DATAFINAL	Timeout.datafinal
2713c2aa98e2SPeter Wemm					[1h] The timeout waiting for a response
2714c2aa98e2SPeter Wemm					to the final "." that terminates a
2715c2aa98e2SPeter Wemm					message.
2716c2aa98e2SPeter WemmconfTO_RSET		Timeout.rset	[5m] The timeout waiting for a response
2717c2aa98e2SPeter Wemm					to the RSET command.
2718c2aa98e2SPeter WemmconfTO_QUIT		Timeout.quit	[2m] The timeout waiting for a response
2719c2aa98e2SPeter Wemm					to the QUIT command.
2720c2aa98e2SPeter WemmconfTO_MISC		Timeout.misc	[2m] The timeout waiting for a response
2721c2aa98e2SPeter Wemm					to other SMTP commands.
272206f25ae9SGregory Neil ShapiroconfTO_COMMAND		Timeout.command	[1h] In server SMTP, the timeout
272306f25ae9SGregory Neil Shapiro					waiting	for a command to be issued.
272406f25ae9SGregory Neil ShapiroconfTO_IDENT		Timeout.ident	[5s] The timeout waiting for a
272506f25ae9SGregory Neil Shapiro					response to an IDENT query.
2726c2aa98e2SPeter WemmconfTO_FILEOPEN		Timeout.fileopen
2727c2aa98e2SPeter Wemm					[60s] The timeout waiting for a file
2728c2aa98e2SPeter Wemm					(e.g., :include: file) to be opened.
272906f25ae9SGregory Neil ShapiroconfTO_CONTROL		Timeout.control
273006f25ae9SGregory Neil Shapiro					[2m] The timeout for a complete
273106f25ae9SGregory Neil Shapiro					control socket transaction to complete.
2732c2aa98e2SPeter WemmconfTO_QUEUERETURN	Timeout.queuereturn
2733c2aa98e2SPeter Wemm					[5d] The timeout before a message is
2734c2aa98e2SPeter Wemm					returned as undeliverable.
2735c2aa98e2SPeter WemmconfTO_QUEUERETURN_NORMAL
2736c2aa98e2SPeter Wemm			Timeout.queuereturn.normal
2737c2aa98e2SPeter Wemm					[undefined] As above, for normal
2738c2aa98e2SPeter Wemm					priority messages.
2739c2aa98e2SPeter WemmconfTO_QUEUERETURN_URGENT
2740c2aa98e2SPeter Wemm			Timeout.queuereturn.urgent
2741c2aa98e2SPeter Wemm					[undefined] As above, for urgent
2742c2aa98e2SPeter Wemm					priority messages.
2743c2aa98e2SPeter WemmconfTO_QUEUERETURN_NONURGENT
2744c2aa98e2SPeter Wemm			Timeout.queuereturn.non-urgent
2745c2aa98e2SPeter Wemm					[undefined] As above, for non-urgent
2746c2aa98e2SPeter Wemm					(low) priority messages.
2747c2aa98e2SPeter WemmconfTO_QUEUEWARN	Timeout.queuewarn
2748c2aa98e2SPeter Wemm					[4h] The timeout before a warning
2749c2aa98e2SPeter Wemm					message is sent to the sender telling
275006f25ae9SGregory Neil Shapiro					them that the message has been
275106f25ae9SGregory Neil Shapiro					deferred.
2752c2aa98e2SPeter WemmconfTO_QUEUEWARN_NORMAL	Timeout.queuewarn.normal
2753c2aa98e2SPeter Wemm					[undefined] As above, for normal
2754c2aa98e2SPeter Wemm					priority messages.
2755c2aa98e2SPeter WemmconfTO_QUEUEWARN_URGENT	Timeout.queuewarn.urgent
2756c2aa98e2SPeter Wemm					[undefined] As above, for urgent
2757c2aa98e2SPeter Wemm					priority messages.
2758c2aa98e2SPeter WemmconfTO_QUEUEWARN_NONURGENT
2759c2aa98e2SPeter Wemm			Timeout.queuewarn.non-urgent
2760c2aa98e2SPeter Wemm					[undefined] As above, for non-urgent
2761c2aa98e2SPeter Wemm					(low) priority messages.
2762c2aa98e2SPeter WemmconfTO_HOSTSTATUS	Timeout.hoststatus
2763c2aa98e2SPeter Wemm					[30m] How long information about host
2764c2aa98e2SPeter Wemm					statuses will be maintained before it
2765c2aa98e2SPeter Wemm					is considered stale and the host should
2766c2aa98e2SPeter Wemm					be retried.  This applies both within
2767c2aa98e2SPeter Wemm					a single queue run and to persistent
2768c2aa98e2SPeter Wemm					information (see below).
276906f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS	Timeout.resolver.retrans
277006f25ae9SGregory Neil Shapiro					[varies] Sets the resolver's
277106f25ae9SGregory Neil Shapiro					retransmition time interval (in
277206f25ae9SGregory Neil Shapiro					seconds).  Sets both
277306f25ae9SGregory Neil Shapiro					Timeout.resolver.retrans.first and
277406f25ae9SGregory Neil Shapiro					Timeout.resolver.retrans.normal.
277506f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS_FIRST  Timeout.resolver.retrans.first
277606f25ae9SGregory Neil Shapiro					[varies] Sets the resolver's
277706f25ae9SGregory Neil Shapiro					retransmition time interval (in
277806f25ae9SGregory Neil Shapiro					seconds) for the first attempt to
277906f25ae9SGregory Neil Shapiro					deliver a message.
278006f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS_NORMAL  Timeout.resolver.retrans.normal
278106f25ae9SGregory Neil Shapiro					[varies] Sets the resolver's
278206f25ae9SGregory Neil Shapiro					retransmition time interval (in
278306f25ae9SGregory Neil Shapiro					seconds) for all resolver lookups
278406f25ae9SGregory Neil Shapiro					except the first delivery attempt.
278506f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY	Timeout.resolver.retry
278606f25ae9SGregory Neil Shapiro					[varies] Sets the number of times
278706f25ae9SGregory Neil Shapiro					to retransmit a resolver query.
278806f25ae9SGregory Neil Shapiro					Sets both
278906f25ae9SGregory Neil Shapiro					Timeout.resolver.retry.first and
279006f25ae9SGregory Neil Shapiro					Timeout.resolver.retry.normal.
279106f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY_FIRST  Timeout.resolver.retry.first
279206f25ae9SGregory Neil Shapiro					[varies] Sets the number of times
279306f25ae9SGregory Neil Shapiro					to retransmit a resolver query for
279406f25ae9SGregory Neil Shapiro					the first attempt to deliver a
279506f25ae9SGregory Neil Shapiro					message.
279606f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY_NORMAL  Timeout.resolver.retry.normal
279706f25ae9SGregory Neil Shapiro					[varies] Sets the number of times
279806f25ae9SGregory Neil Shapiro					to retransmit a resolver query for
279906f25ae9SGregory Neil Shapiro					all resolver lookups except the
280006f25ae9SGregory Neil Shapiro					first delivery attempt.
2801c2aa98e2SPeter WemmconfTIME_ZONE		TimeZoneSpec	[USE_SYSTEM] Time zone info -- can be
2802c2aa98e2SPeter Wemm					USE_SYSTEM to use the system's idea,
2803c2aa98e2SPeter Wemm					USE_TZ to use the user's TZ envariable,
2804c2aa98e2SPeter Wemm					or something else to force that value.
2805c2aa98e2SPeter WemmconfDEF_USER_ID		DefaultUser	[1:1] Default user id.
2806c2aa98e2SPeter WemmconfUSERDB_SPEC		UserDatabaseSpec
280706f25ae9SGregory Neil Shapiro					[undefined] User database
280806f25ae9SGregory Neil Shapiro					specification.
2809c2aa98e2SPeter WemmconfFALLBACK_MX		FallbackMXhost	[undefined] Fallback MX host.
281006f25ae9SGregory Neil ShapiroconfTRY_NULL_MX_LIST	TryNullMXList	[False] If this host is the best MX
281106f25ae9SGregory Neil Shapiro					for a host and other arrangements
281206f25ae9SGregory Neil Shapiro					haven't been made, try connecting
281306f25ae9SGregory Neil Shapiro					to the host directly; normally this
281406f25ae9SGregory Neil Shapiro					would be a config error.
281506f25ae9SGregory Neil ShapiroconfQUEUE_LA		QueueLA		[varies] Load average at which
281606f25ae9SGregory Neil Shapiro					queue-only function kicks in.
281706f25ae9SGregory Neil Shapiro					Default values is (8 * numproc)
281806f25ae9SGregory Neil Shapiro					where numproc is the number of
281906f25ae9SGregory Neil Shapiro					processors online (if that can be
282006f25ae9SGregory Neil Shapiro					determined).
282106f25ae9SGregory Neil ShapiroconfREFUSE_LA		RefuseLA	[varies] Load average at which
282206f25ae9SGregory Neil Shapiro					incoming SMTP connections are
282306f25ae9SGregory Neil Shapiro					refused.  Default values is (12 *
282406f25ae9SGregory Neil Shapiro					numproc) where numproc is the
282506f25ae9SGregory Neil Shapiro					number of processors online (if
282606f25ae9SGregory Neil Shapiro					that can be determined).
282706f25ae9SGregory Neil ShapiroconfMAX_ALIAS_RECURSION	MaxAliasRecursion
282806f25ae9SGregory Neil Shapiro					[10] Maximum depth of alias recursion.
2829c2aa98e2SPeter WemmconfMAX_DAEMON_CHILDREN	MaxDaemonChildren
2830c2aa98e2SPeter Wemm					[undefined] The maximum number of
2831c2aa98e2SPeter Wemm					children the daemon will permit.  After
2832c2aa98e2SPeter Wemm					this number, connections will be
2833c2aa98e2SPeter Wemm					rejected.  If not set or <= 0, there is
2834c2aa98e2SPeter Wemm					no limit.
283506f25ae9SGregory Neil ShapiroconfMAX_HEADERS_LENGTH	MaxHeadersLength
2836193538b7SGregory Neil Shapiro					[32768] Maximum length of the sum
283706f25ae9SGregory Neil Shapiro					of all headers.
283806f25ae9SGregory Neil ShapiroconfMAX_MIME_HEADER_LENGTH  MaxMimeHeaderLength
283906f25ae9SGregory Neil Shapiro					[undefined] Maximum length of
284006f25ae9SGregory Neil Shapiro					certain MIME header field values.
2841c2aa98e2SPeter WemmconfCONNECTION_RATE_THROTTLE ConnectionRateThrottle
2842c2aa98e2SPeter Wemm					[undefined] The maximum number of
2843c2aa98e2SPeter Wemm					connections permitted per second.
2844c2aa98e2SPeter Wemm					After this many connections are
2845c2aa98e2SPeter Wemm					accepted, further connections will be
2846c2aa98e2SPeter Wemm					delayed.  If not set or <= 0, there is
2847c2aa98e2SPeter Wemm					no limit.
2848c2aa98e2SPeter WemmconfWORK_RECIPIENT_FACTOR
2849c2aa98e2SPeter Wemm			RecipientFactor	[30000] Cost of each recipient.
285006f25ae9SGregory Neil ShapiroconfSEPARATE_PROC	ForkEachJob	[False] Run all deliveries in a
285106f25ae9SGregory Neil Shapiro					separate process.
2852c2aa98e2SPeter WemmconfWORK_CLASS_FACTOR	ClassFactor	[1800] Priority multiplier for class.
2853c2aa98e2SPeter WemmconfWORK_TIME_FACTOR	RetryFactor	[90000] Cost of each delivery attempt.
2854c2aa98e2SPeter WemmconfQUEUE_SORT_ORDER	QueueSortOrder	[Priority] Queue sort algorithm:
285506f25ae9SGregory Neil Shapiro					Priority, Host, Filename, or Time.
2856c2aa98e2SPeter WemmconfMIN_QUEUE_AGE	MinQueueAge	[0] The minimum amount of time a job
2857c2aa98e2SPeter Wemm					must sit in the queue between queue
2858c2aa98e2SPeter Wemm					runs.  This allows you to set the
2859c2aa98e2SPeter Wemm					queue run interval low for better
2860c2aa98e2SPeter Wemm					responsiveness without trying all
2861c2aa98e2SPeter Wemm					jobs in each run.
2862c2aa98e2SPeter WemmconfDEF_CHAR_SET	DefaultCharSet	[unknown-8bit] When converting
2863c2aa98e2SPeter Wemm					unlabeled 8 bit input to MIME, the
2864c2aa98e2SPeter Wemm					character set to use by default.
2865c2aa98e2SPeter WemmconfSERVICE_SWITCH_FILE	ServiceSwitchFile
286606f25ae9SGregory Neil Shapiro					[/etc/mail/service.switch] The file
286706f25ae9SGregory Neil Shapiro					to use for the service switch on
286806f25ae9SGregory Neil Shapiro					systems that do not have a
286906f25ae9SGregory Neil Shapiro					system-defined switch.
2870c2aa98e2SPeter WemmconfHOSTS_FILE		HostsFile	[/etc/hosts] The file to use when doing
2871c2aa98e2SPeter Wemm					"file" type access of hosts names.
2872c2aa98e2SPeter WemmconfDIAL_DELAY		DialDelay	[0s] If a connection fails, wait this
2873c2aa98e2SPeter Wemm					long and try again.  Zero means "don't
2874c2aa98e2SPeter Wemm					retry".  This is to allow "dial on
2875c2aa98e2SPeter Wemm					demand" connections to have enough time
2876c2aa98e2SPeter Wemm					to complete a connection.
2877c2aa98e2SPeter WemmconfNO_RCPT_ACTION	NoRecipientAction
2878c2aa98e2SPeter Wemm					[none] What to do if there are no legal
2879c2aa98e2SPeter Wemm					recipient fields (To:, Cc: or Bcc:)
2880c2aa98e2SPeter Wemm					in the message.  Legal values can
2881c2aa98e2SPeter Wemm					be "none" to just leave the
2882c2aa98e2SPeter Wemm					nonconforming message as is, "add-to"
2883c2aa98e2SPeter Wemm					to add a To: header with all the
2884c2aa98e2SPeter Wemm					known recipients (which may expose
2885c2aa98e2SPeter Wemm					blind recipients), "add-apparently-to"
2886c2aa98e2SPeter Wemm					to do the same but use Apparently-To:
2887c2aa98e2SPeter Wemm					instead of To:, "add-bcc" to add an
2888c2aa98e2SPeter Wemm					empty Bcc: header, or
2889c2aa98e2SPeter Wemm					"add-to-undisclosed" to add the header
2890c2aa98e2SPeter Wemm					``To: undisclosed-recipients:;''.
2891c2aa98e2SPeter WemmconfSAFE_FILE_ENV	SafeFileEnvironment
2892c2aa98e2SPeter Wemm					[undefined] If set, sendmail will do a
2893c2aa98e2SPeter Wemm					chroot() into this directory before
2894c2aa98e2SPeter Wemm					writing files.
2895c2aa98e2SPeter WemmconfCOLON_OK_IN_ADDR	ColonOkInAddr	[True unless Configuration Level > 6]
2896c2aa98e2SPeter Wemm					If set, colons are treated as a regular
2897c2aa98e2SPeter Wemm					character in addresses.  If not set,
2898c2aa98e2SPeter Wemm					they are treated as the introducer to
2899c2aa98e2SPeter Wemm					the RFC 822 "group" syntax.  Colons are
2900c2aa98e2SPeter Wemm					handled properly in route-addrs.  This
2901c2aa98e2SPeter Wemm					option defaults on for V5 and lower
2902c2aa98e2SPeter Wemm					configuration files.
2903c2aa98e2SPeter WemmconfMAX_QUEUE_RUN_SIZE	MaxQueueRunSize	[0] If set, limit the maximum size of
2904c2aa98e2SPeter Wemm					any given queue run to this number of
2905c2aa98e2SPeter Wemm					entries.  Essentially, this will stop
290606f25ae9SGregory Neil Shapiro					reading each queue directory after this
2907c2aa98e2SPeter Wemm					number of entries are reached; it does
2908c2aa98e2SPeter Wemm					_not_ pick the highest priority jobs,
2909c2aa98e2SPeter Wemm					so this should be as large as your
2910c2aa98e2SPeter Wemm					system can tolerate.  If not set, there
2911c2aa98e2SPeter Wemm					is no limit.
2912c2aa98e2SPeter WemmconfDONT_EXPAND_CNAMES	DontExpandCnames
2913c2aa98e2SPeter Wemm					[False] If set, $[ ... $] lookups that
2914c2aa98e2SPeter Wemm					do DNS based lookups do not expand
2915c2aa98e2SPeter Wemm					CNAME records.  This currently violates
2916c2aa98e2SPeter Wemm					the published standards, but the IETF
2917c2aa98e2SPeter Wemm					seems to be moving toward legalizing
2918c2aa98e2SPeter Wemm					this.  For example, if "FTP.Foo.ORG"
2919c2aa98e2SPeter Wemm					is a CNAME for "Cruft.Foo.ORG", then
2920c2aa98e2SPeter Wemm					with this option set a lookup of
2921c2aa98e2SPeter Wemm					"FTP" will return "FTP.Foo.ORG"; if
2922c2aa98e2SPeter Wemm					clear it returns "Cruft.FOO.ORG".  N.B.
2923c2aa98e2SPeter Wemm					you may not see any effect until your
2924c2aa98e2SPeter Wemm					downstream neighbors stop doing CNAME
2925c2aa98e2SPeter Wemm					lookups as well.
2926c2aa98e2SPeter WemmconfFROM_LINE		UnixFromLine	[From $g $d] The From_ line used
2927c2aa98e2SPeter Wemm					when sending to files or programs.
2928c2aa98e2SPeter WemmconfSINGLE_LINE_FROM_HEADER  SingleLineFromHeader
2929c2aa98e2SPeter Wemm					[False] From: lines that have
2930c2aa98e2SPeter Wemm					embedded newlines are unwrapped
2931c2aa98e2SPeter Wemm					onto one line.
2932c2aa98e2SPeter WemmconfALLOW_BOGUS_HELO	AllowBogusHELO	[False] Allow HELO SMTP command that
2933c2aa98e2SPeter Wemm					does not include a host name.
2934c2aa98e2SPeter WemmconfMUST_QUOTE_CHARS	MustQuoteChars	[.'] Characters to be quoted in a full
2935c2aa98e2SPeter Wemm					name phrase (@,;:\()[] are automatic).
2936c2aa98e2SPeter WemmconfOPERATORS		OperatorChars	[.:%@!^/[]+] Address operator
2937c2aa98e2SPeter Wemm					characters.
2938c2aa98e2SPeter WemmconfSMTP_LOGIN_MSG	SmtpGreetingMessage
2939c2aa98e2SPeter Wemm					[$j Sendmail $v/$Z; $b]
2940c2aa98e2SPeter Wemm					The initial (spontaneous) SMTP
2941c2aa98e2SPeter Wemm					greeting message.  The word "ESMTP"
2942c2aa98e2SPeter Wemm					will be inserted between the first and
2943c2aa98e2SPeter Wemm					second words to convince other
2944c2aa98e2SPeter Wemm					sendmails to try to speak ESMTP.
2945c2aa98e2SPeter WemmconfDONT_INIT_GROUPS	DontInitGroups	[False] If set, the initgroups(3)
2946c2aa98e2SPeter Wemm					routine will never be invoked.  You
2947c2aa98e2SPeter Wemm					might want to do this if you are
2948c2aa98e2SPeter Wemm					running NIS and you have a large group
2949c2aa98e2SPeter Wemm					map, since this call does a sequential
2950c2aa98e2SPeter Wemm					scan of the map; in a large site this
2951c2aa98e2SPeter Wemm					can cause your ypserv to run
2952c2aa98e2SPeter Wemm					essentially full time.  If you set
2953c2aa98e2SPeter Wemm					this, agents run on behalf of users
2954c2aa98e2SPeter Wemm					will only have their primary
2955c2aa98e2SPeter Wemm					(/etc/passwd) group permissions.
2956c2aa98e2SPeter WemmconfUNSAFE_GROUP_WRITES	UnsafeGroupWrites
2957c2aa98e2SPeter Wemm					[False] If set, group-writable
2958c2aa98e2SPeter Wemm					:include: and .forward files are
2959c2aa98e2SPeter Wemm					considered "unsafe", that is, programs
2960c2aa98e2SPeter Wemm					and files cannot be directly referenced
2961c2aa98e2SPeter Wemm					from such files.  World-writable files
2962c2aa98e2SPeter Wemm					are always considered unsafe.
296306f25ae9SGregory Neil ShapiroconfCONNECT_ONLY_TO	ConnectOnlyTo	[undefined] override connection
296406f25ae9SGregory Neil Shapiro					address (for testing).
296506f25ae9SGregory Neil ShapiroconfCONTROL_SOCKET_NAME	ControlSocketName
296606f25ae9SGregory Neil Shapiro					[undefined] Control socket for daemon
296706f25ae9SGregory Neil Shapiro					management.
2968c2aa98e2SPeter WemmconfDOUBLE_BOUNCE_ADDRESS  DoubleBounceAddress
2969c2aa98e2SPeter Wemm					[postmaster] If an error occurs when
2970c2aa98e2SPeter Wemm					sending an error message, send that
2971c2aa98e2SPeter Wemm					"double bounce" error message to this
2972c2aa98e2SPeter Wemm					address.
297306f25ae9SGregory Neil ShapiroconfDEAD_LETTER_DROP	DeadLetterDrop	[undefined] Filename to save bounce
297406f25ae9SGregory Neil Shapiro					messages which could not be returned
297506f25ae9SGregory Neil Shapiro					to the user or sent to postmaster.
297606f25ae9SGregory Neil Shapiro					If not set, the queue file will
297706f25ae9SGregory Neil Shapiro					be renamed.
297806f25ae9SGregory Neil ShapiroconfRRT_IMPLIES_DSN	RrtImpliesDsn	[False] Return-Receipt-To: header
297906f25ae9SGregory Neil Shapiro					implies DSN request.
2980c2aa98e2SPeter WemmconfRUN_AS_USER		RunAsUser	[undefined] If set, become this user
2981c2aa98e2SPeter Wemm					when reading and delivering mail.
2982c2aa98e2SPeter Wemm					Causes all file reads (e.g., .forward
2983c2aa98e2SPeter Wemm					and :include: files) to be done as
2984c2aa98e2SPeter Wemm					this user.  Also, all programs will
2985c2aa98e2SPeter Wemm					be run as this user, and all output
2986c2aa98e2SPeter Wemm					files will be written as this user.
2987c2aa98e2SPeter Wemm					Intended for use only on firewalls
2988c2aa98e2SPeter Wemm					where users do not have accounts.
2989c2aa98e2SPeter WemmconfMAX_RCPTS_PER_MESSAGE  MaxRecipientsPerMessage
2990c2aa98e2SPeter Wemm					[infinite] If set, allow no more than
2991c2aa98e2SPeter Wemm					the specified number of recipients in
2992c2aa98e2SPeter Wemm					an SMTP envelope.  Further recipients
2993c2aa98e2SPeter Wemm					receive a 452 error code (i.e., they
2994c2aa98e2SPeter Wemm					are deferred for the next delivery
2995c2aa98e2SPeter Wemm					attempt).
2996c2aa98e2SPeter WemmconfDONT_PROBE_INTERFACES  DontProbeInterfaces
2997c2aa98e2SPeter Wemm					[False] If set, sendmail will _not_
2998c2aa98e2SPeter Wemm					insert the names and addresses of any
299906f25ae9SGregory Neil Shapiro					local interfaces into class {w}
3000c2aa98e2SPeter Wemm					(list of known "equivalent" addresses).
3001c2aa98e2SPeter Wemm					If you set this, you must also include
3002c2aa98e2SPeter Wemm					some support for these addresses (e.g.,
3003c2aa98e2SPeter Wemm					in a mailertable entry) -- otherwise,
3004c2aa98e2SPeter Wemm					mail to addresses in this list will
3005c2aa98e2SPeter Wemm					bounce with a configuration error.
300606f25ae9SGregory Neil ShapiroconfPID_FILE		PidFile		[system dependent] Location of pid
300706f25ae9SGregory Neil Shapiro					file.
300806f25ae9SGregory Neil ShapiroconfPROCESS_TITLE_PREFIX  ProcessTitlePrefix
300906f25ae9SGregory Neil Shapiro					[undefined] Prefix string for the
301006f25ae9SGregory Neil Shapiro					process title shown on 'ps' listings.
3011c2aa98e2SPeter WemmconfDONT_BLAME_SENDMAIL	DontBlameSendmail
3012c2aa98e2SPeter Wemm					[safe] Override sendmail's file
3013c2aa98e2SPeter Wemm					safety checks.  This will definitely
3014c2aa98e2SPeter Wemm					compromise system security and should
3015c2aa98e2SPeter Wemm					not be used unless absolutely
3016c2aa98e2SPeter Wemm					necessary.
3017c2aa98e2SPeter WemmconfREJECT_MSG		-		[550 Access denied] The message
3018c2aa98e2SPeter Wemm					given if the access database contains
3019c2aa98e2SPeter Wemm					REJECT in the value portion.
302006f25ae9SGregory Neil ShapiroconfDF_BUFFER_SIZE	DataFileBufferSize
302106f25ae9SGregory Neil Shapiro					[4096] The maximum size of a
302206f25ae9SGregory Neil Shapiro					memory-buffered data (df) file
302306f25ae9SGregory Neil Shapiro					before a disk-based file is used.
302406f25ae9SGregory Neil ShapiroconfXF_BUFFER_SIZE	XScriptFileBufferSize
302506f25ae9SGregory Neil Shapiro					[4096] The maximum size of a
302606f25ae9SGregory Neil Shapiro					memory-buffered transcript (xf)
302706f25ae9SGregory Neil Shapiro					file before a disk-based file is
302806f25ae9SGregory Neil Shapiro					used.
302906f25ae9SGregory Neil ShapiroconfAUTH_MECHANISMS	AuthMechanisms	[GSSAPI KERBEROS_V4 DIGEST-MD5
303006f25ae9SGregory Neil Shapiro					CRAM-MD5] List of authentication
303106f25ae9SGregory Neil Shapiro					mechanisms for AUTH (separated by
303206f25ae9SGregory Neil Shapiro					spaces).  The advertised list of
303306f25ae9SGregory Neil Shapiro					authentication mechanisms will be the
303406f25ae9SGregory Neil Shapiro					intersection of this list and the list
303506f25ae9SGregory Neil Shapiro					of available mechanisms as determined
303606f25ae9SGregory Neil Shapiro					by the CYRUS SASL library.
3037602a2b1bSGregory Neil ShapiroconfDEF_AUTH_INFO	DefaultAuthInfo	[undefined] Name of file that contains
303806f25ae9SGregory Neil Shapiro					authentication information for
303906f25ae9SGregory Neil Shapiro					outgoing connections.  This file
304006f25ae9SGregory Neil Shapiro					must contain the user id, the
304106f25ae9SGregory Neil Shapiro					authorization id, the password
304206f25ae9SGregory Neil Shapiro					(plain text), and the realm to use,
304306f25ae9SGregory Neil Shapiro					each on a separate line and must be
304406f25ae9SGregory Neil Shapiro					readable by root (or the trusted
304506f25ae9SGregory Neil Shapiro					user) only.  If no realm is
304606f25ae9SGregory Neil Shapiro					specified, $j is used.
304706f25ae9SGregory Neil Shapiro
304806f25ae9SGregory Neil Shapiro					NOTE: Currently, AuthMechanisms is
304906f25ae9SGregory Neil Shapiro					used to determine the list of
305006f25ae9SGregory Neil Shapiro					mechanisms to use on an outgoing
305106f25ae9SGregory Neil Shapiro					connection.  Sites which require a
305206f25ae9SGregory Neil Shapiro					different list of mechanisms for
305306f25ae9SGregory Neil Shapiro					incoming connections and outgoing
305406f25ae9SGregory Neil Shapiro					connections will have the ability
305506f25ae9SGregory Neil Shapiro					to do this in 8.11 by specifying a
305606f25ae9SGregory Neil Shapiro					list of mechanisms as the fifth
305706f25ae9SGregory Neil Shapiro					line of the DefaultAuthInfo file.
305806f25ae9SGregory Neil Shapiro					If no mechanisms are given in the
305906f25ae9SGregory Neil Shapiro					file, AuthMechanisms is used.  The
306006f25ae9SGregory Neil Shapiro					code for doing so is included as
306106f25ae9SGregory Neil Shapiro					in the sendmail source code but
306206f25ae9SGregory Neil Shapiro					disabled.  It can be enabled by
306306f25ae9SGregory Neil Shapiro					recompiling sendmail with:
306406f25ae9SGregory Neil Shapiro					-D_FFR_DEFAUTHINFO_MECHS
306506f25ae9SGregory Neil ShapiroconfAUTH_OPTIONS	AuthOptions	[undefined] If this options is 'A'
306606f25ae9SGregory Neil Shapiro					then the AUTH= parameter for the
306706f25ae9SGregory Neil Shapiro					MAIL FROM command is only issued
306806f25ae9SGregory Neil Shapiro					when authentication succeeded.
306906f25ae9SGregory Neil ShapiroconfLDAP_DEFAULT_SPEC	LDAPDefaultSpec	[undefined] Default map
307006f25ae9SGregory Neil Shapiro					specification for LDAP maps.  The
307106f25ae9SGregory Neil Shapiro					value should only contain LDAP
307206f25ae9SGregory Neil Shapiro					specific settings such as "-h host
307306f25ae9SGregory Neil Shapiro					-p port -d bindDN", etc.  The
307406f25ae9SGregory Neil Shapiro					settings will be used for all LDAP
307506f25ae9SGregory Neil Shapiro					maps unless they are specified in
307606f25ae9SGregory Neil Shapiro					the individual map specification
307706f25ae9SGregory Neil Shapiro					('K' command).
307806f25ae9SGregory Neil ShapiroconfCACERT_PATH		CACERTPath	[undefined] Path to directory
307906f25ae9SGregory Neil Shapiro					with certs of CAs.
308006f25ae9SGregory Neil ShapiroconfCACERT		CACERTFile	[undefined] File containing one CA
308106f25ae9SGregory Neil Shapiro					cert.
308206f25ae9SGregory Neil ShapiroconfSERVER_CERT		ServerCertFile	[undefined] File containing the
308306f25ae9SGregory Neil Shapiro					cert of the server, i.e., this cert
308406f25ae9SGregory Neil Shapiro					is used when sendmail acts as
308506f25ae9SGregory Neil Shapiro					server.
308606f25ae9SGregory Neil ShapiroconfSERVER_KEY		ServerKeyFile	[undefined] File containing the
308706f25ae9SGregory Neil Shapiro					private key belonging to the server
308806f25ae9SGregory Neil Shapiro					cert.
308906f25ae9SGregory Neil ShapiroconfCLIENT_CERT		ClientCertFile	[undefined] File containing the
309006f25ae9SGregory Neil Shapiro					cert of the client, i.e., this cert
309106f25ae9SGregory Neil Shapiro					is used when sendmail acts as
309206f25ae9SGregory Neil Shapiro					client.
309306f25ae9SGregory Neil ShapiroconfCLIENT_KEY		ClientKeyFile	[undefined] File containing the
309406f25ae9SGregory Neil Shapiro					private key belonging to the client
309506f25ae9SGregory Neil Shapiro					cert.
309606f25ae9SGregory Neil ShapiroconfDH_PARAMETERS	DHParameters	[undefined] File containing the
309706f25ae9SGregory Neil Shapiro					DH parameters.
309806f25ae9SGregory Neil ShapiroconfRAND_FILE		RandFile	[undefined] File containing random
309942e5d165SGregory Neil Shapiro					data (use prefix file:) or the
310042e5d165SGregory Neil Shapiro					name of the UNIX socket if EGD is
310142e5d165SGregory Neil Shapiro					used (use prefix egd:).  STARTTLS
310242e5d165SGregory Neil Shapiro					requires this option if the compile
310342e5d165SGregory Neil Shapiro					flag HASURANDOM is not set (see
310406f25ae9SGregory Neil Shapiro					sendmail/README).
3105c2aa98e2SPeter Wemm
3106c2aa98e2SPeter WemmSee also the description of OSTYPE for some parameters that can be
3107c2aa98e2SPeter Wemmtweaked (generally pathnames to mailers).
3108c2aa98e2SPeter Wemm
310906f25ae9SGregory Neil ShapiroDaemonPortOptions are a special case since multiple daemons can be
311006f25ae9SGregory Neil Shapirodefined.  This can be done via
311106f25ae9SGregory Neil Shapiro
311206f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`field1=value1,field2=value2,...')
311306f25ae9SGregory Neil Shapiro
311406f25ae9SGregory Neil ShapiroIf DAEMON_OPTIONS is not used, then the default is
311506f25ae9SGregory Neil Shapiro
311606f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Port=smtp, Name=MTA')
311706f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Port=587, Name=MSA, M=E')
311806f25ae9SGregory Neil Shapiro
311906f25ae9SGregory Neil ShapiroIf you use one DAEMON_OPTIONS macro, it will alter the parameters
312006f25ae9SGregory Neil Shapiroof the first of these.  The second will still be defaulted; it
312106f25ae9SGregory Neil Shapirorepresents a "Message Submission Agent" (MSA) as defined by RFC
312206f25ae9SGregory Neil Shapiro2476 (see below).  To turn off the default definition for the MSA,
312306f25ae9SGregory Neil Shapirouse FEATURE(`no_default_msa') (see also FEATURES).  If you use
312406f25ae9SGregory Neil Shapiroadditional DAEMON_OPTIONS macros, they will add additional daemons.
312506f25ae9SGregory Neil Shapiro
312606f25ae9SGregory Neil ShapiroExample 1:  To change the port for the SMTP listener, while
312706f25ae9SGregory Neil Shapirostill using the MSA default, use
312806f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Port=925, Name=MTA')
312906f25ae9SGregory Neil Shapiro
313006f25ae9SGregory Neil ShapiroExample 2:  To change the port for the MSA daemon, while still
313106f25ae9SGregory Neil Shapirousing the default SMTP port, use
313206f25ae9SGregory Neil Shapiro	FEATURE(`no_default_msa')
313306f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Name=MTA')
313406f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Port=987, Name=MSA, M=E')
313506f25ae9SGregory Neil Shapiro
313606f25ae9SGregory Neil ShapiroNote that if the first of those DAEMON_OPTIONS lines were omitted, then
313706f25ae9SGregory Neil Shapirothere would be no listener on the standard SMTP port.
313806f25ae9SGregory Neil Shapiro
313906f25ae9SGregory Neil ShapiroExample 3: To listen on both IPv4 and IPv6 interfaces, use
314006f25ae9SGregory Neil Shapiro
314106f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Name=MTA-v4, Family=inet')
314206f25ae9SGregory Neil Shapiro	DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6')
314306f25ae9SGregory Neil Shapiro
314406f25ae9SGregory Neil ShapiroA "Message Submission Agent" still uses all of the same rulesets for
314506f25ae9SGregory Neil Shapiroprocessing the message (and therefore still allows message rejection via
314606f25ae9SGregory Neil Shapirothe check_* rulesets).  In accordance with the RFC, the MSA will ensure
314706f25ae9SGregory Neil Shapirothat all domains in the envelope are fully qualified if the message is
314806f25ae9SGregory Neil Shapirorelayed to another MTA.  It will also enforce the normal address syntax
314906f25ae9SGregory Neil Shapirorules and log error messages.  Additionally, by using the M=a modifier
315006f25ae9SGregory Neil Shapiroyou can require authentication before messages are accepted by the MSA.
31518774250cSGregory Neil ShapiroNotice: Do NOT use the 'a' modifier on a public accessible MTA!
315206f25ae9SGregory Neil ShapiroFinally, the M=E modifier shown above disables ETRN as required by RFC
315306f25ae9SGregory Neil Shapiro2476.
315406f25ae9SGregory Neil Shapiro
3155c2aa98e2SPeter Wemm
3156c2aa98e2SPeter Wemm+-----------+
3157c2aa98e2SPeter Wemm| HIERARCHY |
3158c2aa98e2SPeter Wemm+-----------+
3159c2aa98e2SPeter Wemm
3160c2aa98e2SPeter WemmWithin this directory are several subdirectories, to wit:
3161c2aa98e2SPeter Wemm
3162c2aa98e2SPeter Wemmm4		General support routines.  These are typically
3163c2aa98e2SPeter Wemm		very important and should not be changed without
3164c2aa98e2SPeter Wemm		very careful consideration.
3165c2aa98e2SPeter Wemm
3166c2aa98e2SPeter Wemmcf		The configuration files themselves.  They have
3167c2aa98e2SPeter Wemm		".mc" suffixes, and must be run through m4 to
3168c2aa98e2SPeter Wemm		become complete.  The resulting output should
3169c2aa98e2SPeter Wemm		have a ".cf" suffix.
3170c2aa98e2SPeter Wemm
3171c2aa98e2SPeter Wemmostype		Definitions describing a particular operating
3172c2aa98e2SPeter Wemm		system type.  These should always be referenced
3173c2aa98e2SPeter Wemm		using the OSTYPE macro in the .mc file.  Examples
3174c2aa98e2SPeter Wemm		include "bsd4.3", "bsd4.4", "sunos3.5", and
3175c2aa98e2SPeter Wemm		"sunos4.1".
3176c2aa98e2SPeter Wemm
3177c2aa98e2SPeter Wemmdomain		Definitions describing a particular domain, referenced
3178c2aa98e2SPeter Wemm		using the DOMAIN macro in the .mc file.  These are
3179c2aa98e2SPeter Wemm		site dependent; for example, "CS.Berkeley.EDU.m4"
3180c2aa98e2SPeter Wemm		describes hosts in the CS.Berkeley.EDU subdomain.
3181c2aa98e2SPeter Wemm
3182c2aa98e2SPeter Wemmmailer		Descriptions of mailers.  These are referenced using
3183c2aa98e2SPeter Wemm		the MAILER macro in the .mc file.
3184c2aa98e2SPeter Wemm
3185c2aa98e2SPeter Wemmsh		Shell files used when building the .cf file from the
3186c2aa98e2SPeter Wemm		.mc file in the cf subdirectory.
3187c2aa98e2SPeter Wemm
3188c2aa98e2SPeter Wemmfeature		These hold special orthogonal features that you might
3189c2aa98e2SPeter Wemm		want to include.  They should be referenced using
3190c2aa98e2SPeter Wemm		the FEATURE macro.
3191c2aa98e2SPeter Wemm
3192c2aa98e2SPeter Wemmhack		Local hacks.  These can be referenced using the HACK
3193c2aa98e2SPeter Wemm		macro.  They shouldn't be of more than voyeuristic
3194c2aa98e2SPeter Wemm		interest outside the .Berkeley.EDU domain, but who knows?
3195c2aa98e2SPeter Wemm
3196c2aa98e2SPeter Wemmsiteconfig	Site configuration -- e.g., tables of locally connected
3197c2aa98e2SPeter Wemm		UUCP sites.
3198c2aa98e2SPeter Wemm
3199c2aa98e2SPeter Wemm
3200c2aa98e2SPeter Wemm+------------------------+
3201c2aa98e2SPeter Wemm| ADMINISTRATIVE DETAILS |
3202c2aa98e2SPeter Wemm+------------------------+
3203c2aa98e2SPeter Wemm
3204c2aa98e2SPeter WemmThe following sections detail usage of certain internal parts of the
3205c2aa98e2SPeter Wemmsendmail.cf file.  Read them carefully if you are trying to modify
3206c2aa98e2SPeter Wemmthe current model.  If you find the above descriptions adequate, these
3207c2aa98e2SPeter Wemmshould be {boring, confusing, tedious, ridiculous} (pick one or more).
3208c2aa98e2SPeter Wemm
3209c2aa98e2SPeter WemmRULESETS (* means built in to sendmail)
3210c2aa98e2SPeter Wemm
3211c2aa98e2SPeter Wemm   0 *	Parsing
3212c2aa98e2SPeter Wemm   1 *	Sender rewriting
3213c2aa98e2SPeter Wemm   2 *	Recipient rewriting
3214c2aa98e2SPeter Wemm   3 *	Canonicalization
3215c2aa98e2SPeter Wemm   4 *	Post cleanup
3216c2aa98e2SPeter Wemm   5 *	Local address rewrite (after aliasing)
3217c2aa98e2SPeter Wemm  1x	mailer rules (sender qualification)
3218c2aa98e2SPeter Wemm  2x	mailer rules (recipient qualification)
3219c2aa98e2SPeter Wemm  3x	mailer rules (sender header qualification)
3220c2aa98e2SPeter Wemm  4x	mailer rules (recipient header qualification)
3221c2aa98e2SPeter Wemm  5x	mailer subroutines (general)
3222c2aa98e2SPeter Wemm  6x	mailer subroutines (general)
3223c2aa98e2SPeter Wemm  7x	mailer subroutines (general)
3224c2aa98e2SPeter Wemm  8x	reserved
3225c2aa98e2SPeter Wemm  90	Mailertable host stripping
3226c2aa98e2SPeter Wemm  96	Bottom half of Ruleset 3 (ruleset 6 in old sendmail)
3227c2aa98e2SPeter Wemm  97	Hook for recursive ruleset 0 call (ruleset 7 in old sendmail)
3228c2aa98e2SPeter Wemm  98	Local part of ruleset 0 (ruleset 8 in old sendmail)
3229c2aa98e2SPeter Wemm  99	Guaranteed null (for debugging)
3230c2aa98e2SPeter Wemm
3231c2aa98e2SPeter Wemm
3232c2aa98e2SPeter WemmMAILERS
3233c2aa98e2SPeter Wemm
3234c2aa98e2SPeter Wemm   0	local, prog	local and program mailers
3235c2aa98e2SPeter Wemm   1	[e]smtp, relay	SMTP channel
3236c2aa98e2SPeter Wemm   2	uucp-*		UNIX-to-UNIX Copy Program
3237c2aa98e2SPeter Wemm   3	netnews		Network News delivery
3238c2aa98e2SPeter Wemm   4	fax		Sam Leffler's HylaFAX software
3239c2aa98e2SPeter Wemm   5	mail11		DECnet mailer
3240c2aa98e2SPeter Wemm
3241c2aa98e2SPeter Wemm
3242c2aa98e2SPeter WemmMACROS
3243c2aa98e2SPeter Wemm
3244c2aa98e2SPeter Wemm   A
3245c2aa98e2SPeter Wemm   B	Bitnet Relay
3246c2aa98e2SPeter Wemm   C	DECnet Relay
3247c2aa98e2SPeter Wemm   D	The local domain -- usually not needed
3248c2aa98e2SPeter Wemm   E	reserved for X.400 Relay
3249c2aa98e2SPeter Wemm   F	FAX Relay
3250c2aa98e2SPeter Wemm   G
3251c2aa98e2SPeter Wemm   H	mail Hub (for mail clusters)
3252c2aa98e2SPeter Wemm   I
3253c2aa98e2SPeter Wemm   J
3254c2aa98e2SPeter Wemm   K
3255c2aa98e2SPeter Wemm   L	Luser Relay
325606f25ae9SGregory Neil Shapiro   M	Masquerade (who you claim to be)
3257c2aa98e2SPeter Wemm   N
3258c2aa98e2SPeter Wemm   O
3259c2aa98e2SPeter Wemm   P
3260c2aa98e2SPeter Wemm   Q
3261c2aa98e2SPeter Wemm   R	Relay (for unqualified names)
3262c2aa98e2SPeter Wemm   S	Smart Host
3263c2aa98e2SPeter Wemm   T
326406f25ae9SGregory Neil Shapiro   U	my UUCP name (if you have a UUCP connection)
326506f25ae9SGregory Neil Shapiro   V	UUCP Relay (class {V} hosts)
326606f25ae9SGregory Neil Shapiro   W	UUCP Relay (class {W} hosts)
326706f25ae9SGregory Neil Shapiro   X	UUCP Relay (class {X} hosts)
3268c2aa98e2SPeter Wemm   Y	UUCP Relay (all other hosts)
3269c2aa98e2SPeter Wemm   Z	Version number
3270c2aa98e2SPeter Wemm
3271c2aa98e2SPeter Wemm
3272c2aa98e2SPeter WemmCLASSES
3273c2aa98e2SPeter Wemm
3274c2aa98e2SPeter Wemm   A
3275c2aa98e2SPeter Wemm   B	domains that are candidates for bestmx lookup
3276c2aa98e2SPeter Wemm   C
3277c2aa98e2SPeter Wemm   D
3278c2aa98e2SPeter Wemm   E	addresses that should not seem to come from $M
327906f25ae9SGregory Neil Shapiro   F	hosts this system forward for
3280c2aa98e2SPeter Wemm   G	domains that should be looked up in genericstable
3281c2aa98e2SPeter Wemm   H
3282c2aa98e2SPeter Wemm   I
3283c2aa98e2SPeter Wemm   J
3284c2aa98e2SPeter Wemm   K
3285c2aa98e2SPeter Wemm   L	addresses that should not be forwarded to $R
3286c2aa98e2SPeter Wemm   M	domains that should be mapped to $M
328706f25ae9SGregory Neil Shapiro   N	host/domains that should not be mapped to $M
3288c2aa98e2SPeter Wemm   O	operators that indicate network operations (cannot be in local names)
3289c2aa98e2SPeter Wemm   P	top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc.
3290c2aa98e2SPeter Wemm   Q
329106f25ae9SGregory Neil Shapiro   R	domains this system is willing to relay (pass anti-spam filters)
3292c2aa98e2SPeter Wemm   S
3293c2aa98e2SPeter Wemm   T
3294c2aa98e2SPeter Wemm   U	locally connected UUCP hosts
3295c2aa98e2SPeter Wemm   V	UUCP hosts connected to relay $V
3296c2aa98e2SPeter Wemm   W	UUCP hosts connected to relay $W
3297c2aa98e2SPeter Wemm   X	UUCP hosts connected to relay $X
3298c2aa98e2SPeter Wemm   Y	locally connected smart UUCP hosts
3299c2aa98e2SPeter Wemm   Z	locally connected domain-ized UUCP hosts
3300c2aa98e2SPeter Wemm   .	the class containing only a dot
3301c2aa98e2SPeter Wemm   [	the class containing only a left bracket
3302c2aa98e2SPeter Wemm
3303c2aa98e2SPeter Wemm
3304c2aa98e2SPeter WemmM4 DIVERSIONS
3305c2aa98e2SPeter Wemm
3306c2aa98e2SPeter Wemm   1	Local host detection and resolution
3307c2aa98e2SPeter Wemm   2	Local Ruleset 3 additions
3308c2aa98e2SPeter Wemm   3	Local Ruleset 0 additions
3309c2aa98e2SPeter Wemm   4	UUCP Ruleset 0 additions
3310c2aa98e2SPeter Wemm   5	locally interpreted names (overrides $R)
3311c2aa98e2SPeter Wemm   6	local configuration (at top of file)
3312c2aa98e2SPeter Wemm   7	mailer definitions
331306f25ae9SGregory Neil Shapiro   8	DNS based blacklists
3314c2aa98e2SPeter Wemm   9	special local rulesets (1 and 2)
331506f25ae9SGregory Neil Shapiro
331613058a91SGregory Neil Shapiro$Revision: 8.383.2.1.2.47 $, Last updated $Date: 2001/07/13 22:31:49 $
3317