README revision 110560
1
2		SENDMAIL CONFIGURATION FILES
3
4This document describes the sendmail configuration files.  It
5explains how to create a sendmail.cf file for use with sendmail.
6It also describes how to set options for sendmail which are explained
7in the Sendmail Installation and Operation guide (doc/op/op.me).
8
9To get started, you may want to look at tcpproto.mc (for TCP-only
10sites) and clientproto.mc (for clusters of clients using a single
11mail host), or the generic-*.mc files as operating system-specific
12examples.
13
14Table of Content:
15
16INTRODUCTION AND EXAMPLE
17A BRIEF INTRODUCTION TO M4
18FILE LOCATIONS
19OSTYPE
20DOMAINS
21MAILERS
22FEATURES
23HACKS
24SITE CONFIGURATION
25USING UUCP MAILERS
26TWEAKING RULESETS
27MASQUERADING AND RELAYING
28USING LDAP FOR ALIASES, MAPS, AND CLASSES
29LDAP ROUTING
30ANTI-SPAM CONFIGURATION CONTROL
31STARTTLS
32SMTP AUTHENTICATION
33ADDING NEW MAILERS OR RULESETS
34ADDING NEW MAIL FILTERS
35QUEUE GROUP DEFINITIONS
36NON-SMTP BASED CONFIGURATIONS
37WHO AM I?
38ACCEPTING MAIL FOR MULTIPLE NAMES
39USING MAILERTABLES
40USING USERDB TO MAP FULL NAMES
41MISCELLANEOUS SPECIAL FEATURES
42SECURITY NOTES
43TWEAKING CONFIGURATION OPTIONS
44MESSAGE SUBMISSION PROGRAM
45FORMAT OF FILES AND MAPS
46DIRECTORY LAYOUT
47ADMINISTRATIVE DETAILS
48
49
50+--------------------------+
51| INTRODUCTION AND EXAMPLE |
52+--------------------------+
53
54Configuration files are contained in the subdirectory "cf", with a
55suffix ".mc".  They must be run through "m4" to produce a ".cf" file.
56You must pre-load "cf.m4":
57
58	m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf
59
60Alternatively, you can simply:
61
62	cd ${CFDIR}/cf
63	./Build config.cf
64
65where ${CFDIR} is the root of the cf directory and config.mc is the
66name of your configuration file.  If you are running a version of M4
67that understands the __file__ builtin (versions of GNU m4 >= 0.75 do
68this, but the versions distributed with 4.4BSD and derivatives do not)
69or the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory.
70For "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST
71use -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash!  For example:
72
73	m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf
74
75Let's examine a typical .mc file:
76
77	divert(-1)
78	#
79	# Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
80	#	All rights reserved.
81	# Copyright (c) 1983 Eric P. Allman.  All rights reserved.
82	# Copyright (c) 1988, 1993
83	#	The Regents of the University of California.  All rights reserved.
84	#
85	# By using this file, you agree to the terms and conditions set
86	# forth in the LICENSE file which can be found at the top level of
87	# the sendmail distribution.
88	#
89
90	#
91	#  This is a Berkeley-specific configuration file for HP-UX 9.x.
92	#  It applies only to the Computer Science Division at Berkeley,
93	#  and should not be used elsewhere.   It is provided on the sendmail
94	#  distribution as a sample only.  To create your own configuration
95	#  file, create an appropriate domain file in ../domain, change the
96	#  `DOMAIN' macro below to reference that file, and copy the result
97	#  to a name of your own choosing.
98	#
99	divert(0)
100
101The divert(-1) will delete the crud in the resulting output file.
102The copyright notice can be replaced by whatever your lawyers require;
103our lawyers require the one that is included in these files.  A copyleft
104is a copyright by another name.  The divert(0) restores regular output.
105
106	VERSIONID(`<SCCS or RCS version id>')
107
108VERSIONID is a macro that stuffs the version information into the
109resulting file.  You could use SCCS, RCS, CVS, something else, or
110omit it completely.  This is not the same as the version id included
111in SMTP greeting messages -- this is defined in m4/version.m4.
112
113	OSTYPE(`hpux9')dnl
114
115You must specify an OSTYPE to properly configure things such as the
116pathname of the help and status files, the flags needed for the local
117mailer, and other important things.  If you omit it, you will get an
118error when you try to build the configuration.  Look at the ostype
119directory for the list of known operating system types.
120
121	DOMAIN(`CS.Berkeley.EDU')dnl
122
123This example is specific to the Computer Science Division at Berkeley.
124You can use "DOMAIN(`generic')" to get a sufficiently bland definition
125that may well work for you, or you can create a customized domain
126definition appropriate for your environment.
127
128	MAILER(`local')
129	MAILER(`smtp')
130
131These describe the mailers used at the default CS site.  The local
132mailer is always included automatically.  Beware: MAILER declarations
133should always be at the end of the configuration file.  The general
134rules are that the order should be:
135
136	VERSIONID
137	OSTYPE
138	DOMAIN
139	FEATURE
140	local macro definitions
141	MAILER
142	LOCAL_CONFIG
143	LOCAL_RULE_*
144	LOCAL_RULESETS
145
146There are a few exceptions to this rule.  Local macro definitions which
147influence a FEATURE() should be done before that feature.  For example,
148a define(`PROCMAIL_MAILER_PATH', ...) should be done before
149FEATURE(`local_procmail').
150
151*******************************************************************
152***  BE SURE YOU CUSTOMIZE THESE FILES!  They have some		***
153***  Berkeley-specific assumptions built in, such as the name	***
154***  of their UUCP-relay.  You'll want to create your own	***
155***  domain description, and use that in place of		***
156***  domain/Berkeley.EDU.m4.					***
157*******************************************************************
158
159
160+----------------------------+
161| A BRIEF INTRODUCTION TO M4 |
162+----------------------------+
163
164Sendmail uses the M4 macro processor to ``compile'' the configuration
165files.  The most important thing to know is that M4 is stream-based,
166that is, it doesn't understand about lines.  For this reason, in some
167places you may see the word ``dnl'', which stands for ``delete
168through newline''; essentially, it deletes all characters starting
169at the ``dnl'' up to and including the next newline character.  In
170most cases sendmail uses this only to avoid lots of unnecessary
171blank lines in the output.
172
173Other important directives are define(A, B) which defines the macro
174``A'' to have value ``B''.  Macros are expanded as they are read, so
175one normally quotes both values to prevent expansion.  For example,
176
177	define(`SMART_HOST', `smart.foo.com')
178
179One word of warning:  M4 macros are expanded even in lines that appear
180to be comments.  For example, if you have
181
182	# See FEATURE(`foo') above
183
184it will not do what you expect, because the FEATURE(`foo') will be
185expanded.  This also applies to
186
187	# And then define the $X macro to be the return address
188
189because ``define'' is an M4 keyword.  If you want to use them, surround
190them with directed quotes, `like this'.
191
192Since m4 uses single quotes (opening "`" and closing "'") to quote
193arguments, those quotes can't be used in arguments.  For example,
194it is not possible to define a rejection message containing a single
195quote. Usually there are simple workarounds by changing those
196messages; in the worst case it might be ok to change the value
197directly in the generated .cf file, which however is not advised.
198
199
200Notice:
201-------
202
203This package requires a post-V7 version of m4; if you are running the
2044.2bsd, SysV.2, or 7th Edition version.  SunOS's /usr/5bin/m4 or
205BSD-Net/2's m4 both work.  GNU m4 version 1.1 or later also works.
206Unfortunately, the M4 on BSDI 1.0 doesn't work -- you'll have to use a
207Net/2 or GNU version.  GNU m4 is available from
208ftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the latest version).
209EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x is fine).  Use GNU
210m4 on this platform.
211
212
213+----------------+
214| FILE LOCATIONS |
215+----------------+
216
217sendmail 8.9 has introduced a new configuration directory for sendmail
218related files, /etc/mail.  The new files available for sendmail 8.9 --
219the class {R} /etc/mail/relay-domains and the access database
220/etc/mail/access -- take advantage of this new directory.  Beginning with
2218.10, all files will use this directory by default (some options may be
222set by OSTYPE() files).  This new directory should help to restore
223uniformity to sendmail's file locations.
224
225Below is a table of some of the common changes:
226
227Old filename			New filename
228------------			------------
229/etc/bitdomain			/etc/mail/bitdomain
230/etc/domaintable		/etc/mail/domaintable
231/etc/genericstable		/etc/mail/genericstable
232/etc/uudomain			/etc/mail/uudomain
233/etc/virtusertable		/etc/mail/virtusertable
234/etc/userdb			/etc/mail/userdb
235
236/etc/aliases			/etc/mail/aliases
237/etc/sendmail/aliases		/etc/mail/aliases
238/etc/ucbmail/aliases		/etc/mail/aliases
239/usr/adm/sendmail/aliases	/etc/mail/aliases
240/usr/lib/aliases		/etc/mail/aliases
241/usr/lib/mail/aliases		/etc/mail/aliases
242/usr/ucblib/aliases		/etc/mail/aliases
243
244/etc/sendmail.cw		/etc/mail/local-host-names
245/etc/mail/sendmail.cw		/etc/mail/local-host-names
246/etc/sendmail/sendmail.cw	/etc/mail/local-host-names
247
248/etc/sendmail.ct		/etc/mail/trusted-users
249
250/etc/sendmail.oE		/etc/mail/error-header
251
252/etc/sendmail.hf		/etc/mail/helpfile
253/etc/mail/sendmail.hf		/etc/mail/helpfile
254/usr/ucblib/sendmail.hf		/etc/mail/helpfile
255/etc/ucbmail/sendmail.hf	/etc/mail/helpfile
256/usr/lib/sendmail.hf		/etc/mail/helpfile
257/usr/share/lib/sendmail.hf	/etc/mail/helpfile
258/usr/share/misc/sendmail.hf	/etc/mail/helpfile
259/share/misc/sendmail.hf		/etc/mail/helpfile
260
261/etc/service.switch		/etc/mail/service.switch
262
263/etc/sendmail.st		/etc/mail/statistics
264/etc/mail/sendmail.st		/etc/mail/statistics
265/etc/mailer/sendmail.st		/etc/mail/statistics
266/etc/sendmail/sendmail.st	/etc/mail/statistics
267/usr/lib/sendmail.st		/etc/mail/statistics
268/usr/ucblib/sendmail.st		/etc/mail/statistics
269
270Note that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR
271to create the pathnames.  The default value of this variable is
272`/etc/mail/'.  If you set this macro to a different value, you MUST include
273a trailing slash.
274
275Notice: all filenames used in a .mc (or .cf) file should be absolute
276(starting at the root, i.e., with '/').  Relative filenames most
277likely cause surprises during operations (unless otherwise noted).
278
279
280+--------+
281| OSTYPE |
282+--------+
283
284You MUST define an operating system environment, or the configuration
285file build will puke.  There are several environments available; look
286at the "ostype" directory for the current list.  This macro changes
287things like the location of the alias file and queue directory.  Some
288of these files are identical to one another.
289
290It is IMPERATIVE that the OSTYPE occur before any MAILER definitions.
291In general, the OSTYPE macro should go immediately after any version
292information, and MAILER definitions should always go last.
293
294Operating system definitions are usually easy to write.  They may define
295the following variables (everything defaults, so an ostype file may be
296empty).  Unfortunately, the list of configuration-supported systems is
297not as broad as the list of source-supported systems, since many of
298the source contributors do not include corresponding ostype files.
299
300ALIAS_FILE		[/etc/mail/aliases] The location of the text version
301			of the alias file(s).  It can be a comma-separated
302			list of names (but be sure you quote values with
303			commas in them -- for example, use
304				define(`ALIAS_FILE', `a,b')
305			to get "a" and "b" both listed as alias files;
306			otherwise the define() primitive only sees "a").
307HELP_FILE		[/etc/mail/helpfile] The name of the file
308			containing information printed in response to
309			the SMTP HELP command.
310QUEUE_DIR		[/var/spool/mqueue] The directory containing
311			queue files.  To use multiple queues, supply
312			a value ending with an asterisk.  For
313			example, /var/spool/mqueue/qd* will use all of the
314			directories or symbolic links to directories
315			beginning with 'qd' in /var/spool/mqueue as queue
316			directories.  The names 'qf', 'df', and 'xf' are
317			reserved as specific subdirectories for the
318			corresponding queue file types as explained in
319			doc/op/op.me.  See also QUEUE GROUP DEFINITIONS.
320MSP_QUEUE_DIR		[/var/spool/clientmqueue] The directory containing
321			queue files for the MSP (Mail Submission Program,
322			see sendmail/SECURITY).
323STATUS_FILE		[/etc/mail/statistics] The file containing status
324			information.
325LOCAL_MAILER_PATH	[/bin/mail] The program used to deliver local mail.
326LOCAL_MAILER_FLAGS	[Prmn9] The flags used by the local mailer.  The
327			flags lsDFMAw5:/|@q are always included.
328LOCAL_MAILER_ARGS	[mail -d $u] The arguments passed to deliver local
329			mail.
330LOCAL_MAILER_MAX	[undefined] If defined, the maximum size of local
331			mail that you are willing to accept.
332LOCAL_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
333			messages to deliver in a single connection.  Only
334			useful for LMTP local mailers.
335LOCAL_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
336			that ARRIVE from an address that resolves to the
337			local mailer and which are converted to MIME will be
338			labeled with this character set.
339LOCAL_MAILER_EOL	[undefined] If defined, the string to use as the
340			end of line for the local mailer.
341LOCAL_MAILER_DSN_DIAGNOSTIC_CODE
342			[X-Unix] The DSN Diagnostic-Code value for the
343			local mailer.  This should be changed with care.
344LOCAL_SHELL_PATH	[/bin/sh] The shell used to deliver piped email.
345LOCAL_SHELL_FLAGS	[eu9] The flags used by the shell mailer.  The
346			flags lsDFM are always included.
347LOCAL_SHELL_ARGS	[sh -c $u] The arguments passed to deliver "prog"
348			mail.
349LOCAL_SHELL_DIR		[$z:/] The directory search path in which the
350			shell should run.
351LOCAL_MAILER_QGRP	[undefined] The queue group for the local mailer.
352USENET_MAILER_PATH	[/usr/lib/news/inews] The name of the program
353			used to submit news.
354USENET_MAILER_FLAGS	[rsDFMmn] The mailer flags for the usenet mailer.
355USENET_MAILER_ARGS	[-m -h -n] The command line arguments for the
356			usenet mailer.  NOTE: Some versions of inews
357			(such as those shipped with newer versions of INN)
358			use different flags.  Double check the defaults
359			against the inews man page.
360USENET_MAILER_MAX	[undefined] The maximum size of messages that will
361			be accepted by the usenet mailer.
362USENET_MAILER_QGRP	[undefined] The queue group for the usenet mailer.
363SMTP_MAILER_FLAGS	[undefined] Flags added to SMTP mailer.  Default
364			flags are `mDFMuX' for all SMTP-based mailers; the
365			"esmtp" mailer adds `a'; "smtp8" adds `8'; and
366			"dsmtp" adds `%'.
367RELAY_MAILER_FLAGS	[undefined] Flags added to the relay mailer.  Default
368			flags are `mDFMuX' for all SMTP-based mailers; the
369			relay mailer adds `a8'.  If this is not defined,
370			then SMTP_MAILER_FLAGS is used.
371SMTP_MAILER_MAX		[undefined] The maximum size of messages that will
372			be transported using the smtp, smtp8, esmtp, or dsmtp
373			mailers.
374SMTP_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
375			messages to deliver in a single connection for the
376			smtp, smtp8, esmtp, or dsmtp mailers.
377SMTP_MAILER_MAXRCPTS	[undefined] If defined, the maximum number of
378			recipients to deliver in a single connection for the
379			smtp, smtp8, esmtp, or dsmtp mailers.
380SMTP_MAILER_ARGS	[TCP $h] The arguments passed to the smtp mailer.
381			About the only reason you would want to change this
382			would be to change the default port.
383ESMTP_MAILER_ARGS	[TCP $h] The arguments passed to the esmtp mailer.
384SMTP8_MAILER_ARGS	[TCP $h] The arguments passed to the smtp8 mailer.
385DSMTP_MAILER_ARGS	[TCP $h] The arguments passed to the dsmtp mailer.
386RELAY_MAILER_ARGS	[TCP $h] The arguments passed to the relay mailer.
387SMTP_MAILER_QGRP	[undefined] The queue group for the smtp mailer.
388ESMTP_MAILER_QGRP	[undefined] The queue group for the esmtp mailer.
389SMTP8_MAILER_QGRP	[undefined] The queue group for the smtp8 mailer.
390DSMTP_MAILER_QGRP	[undefined] The queue group for the dsmtp mailer.
391RELAY_MAILER_QGRP	[undefined] The queue group for the relay mailer.
392RELAY_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
393			messages to deliver in a single connection for the
394			relay mailer.
395SMTP_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
396			that ARRIVE from an address that resolves to one of
397			the SMTP mailers and which are converted to MIME will
398			be labeled with this character set.
399UUCP_MAILER_PATH	[/usr/bin/uux] The program used to send UUCP mail.
400UUCP_MAILER_FLAGS	[undefined] Flags added to UUCP mailer.  Default
401			flags are `DFMhuU' (and `m' for uucp-new mailer,
402			minus `U' for uucp-dom mailer).
403UUCP_MAILER_ARGS	[uux - -r -z -a$g -gC $h!rmail ($u)] The arguments
404			passed to the UUCP mailer.
405UUCP_MAILER_MAX		[100000] The maximum size message accepted for
406			transmission by the UUCP mailers.
407UUCP_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
408			that ARRIVE from an address that resolves to one of
409			the UUCP mailers and which are converted to MIME will
410			be labeled with this character set.
411UUCP_MAILER_QGRP	[undefined] The queue group for the UUCP mailers.
412FAX_MAILER_PATH		[/usr/local/lib/fax/mailfax] The program used to
413			submit FAX messages.
414FAX_MAILER_ARGS		[mailfax $u $h $f] The arguments passed to the FAX
415			mailer.
416FAX_MAILER_MAX		[100000] The maximum size message accepted for
417			transmission by FAX.
418POP_MAILER_PATH		[/usr/lib/mh/spop] The pathname of the POP mailer.
419POP_MAILER_FLAGS	[Penu] Flags added to POP mailer.  Flags lsDFMq
420			are always added.
421POP_MAILER_ARGS		[pop $u] The arguments passed to the POP mailer.
422POP_MAILER_QGRP		[undefined] The queue group for the pop mailer.
423PROCMAIL_MAILER_PATH	[/usr/local/bin/procmail] The path to the procmail
424			program.  This is also used by
425			FEATURE(`local_procmail').
426PROCMAIL_MAILER_FLAGS	[SPhnu9] Flags added to Procmail mailer.  Flags
427			DFM are always set.  This is NOT used by
428			FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS
429			instead.
430PROCMAIL_MAILER_ARGS	[procmail -Y -m $h $f $u] The arguments passed to
431			the Procmail mailer.  This is NOT used by
432			FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS
433			instead.
434PROCMAIL_MAILER_MAX	[undefined] If set, the maximum size message that
435			will be accepted by the procmail mailer.
436PROCMAIL_MAILER_QGRP	[undefined] The queue group for the procmail mailer.
437MAIL11_MAILER_PATH	[/usr/etc/mail11] The path to the mail11 mailer.
438MAIL11_MAILER_FLAGS	[nsFx] Flags for the mail11 mailer.
439MAIL11_MAILER_ARGS	[mail11 $g $x $h $u] Arguments passed to the mail11
440			mailer.
441MAIL11_MAILER_QGRP	[undefined] The queue group for the mail11 mailer.
442PH_MAILER_PATH		[/usr/local/etc/phquery] The path to the phquery
443			program.
444PH_MAILER_FLAGS		[ehmu] Flags for the phquery mailer.  Flags nrDFM
445			are always set.
446PH_MAILER_ARGS		[phquery -- $u] -- arguments to the phquery mailer.
447PH_MAILER_QGRP		[undefined] The queue group for the ph mailer.
448CYRUS_MAILER_FLAGS	[Ah5@/:|] The flags used by the cyrus mailer.  The
449			flags lsDFMnPq are always included.
450CYRUS_MAILER_PATH	[/usr/cyrus/bin/deliver] The program used to deliver
451			cyrus mail.
452CYRUS_MAILER_ARGS	[deliver -e -m $h -- $u] The arguments passed
453			to deliver cyrus mail.
454CYRUS_MAILER_MAX	[undefined] If set, the maximum size message that
455			will be accepted by the cyrus mailer.
456CYRUS_MAILER_USER	[cyrus:mail] The user and group to become when
457			running the cyrus mailer.
458CYRUS_MAILER_QGRP	[undefined] The queue group for the cyrus mailer.
459CYRUS_BB_MAILER_FLAGS	[u] The flags used by the cyrusbb mailer.
460			The flags lsDFMnP are always included.
461CYRUS_BB_MAILER_ARGS	[deliver -e -m $u] The arguments passed
462			to deliver cyrusbb mail.
463CYRUSV2_MAILER_FLAGS	[A@/:|m] The flags used by the cyrusv2 mailer.  The
464			flags lsDFMnqXz are always included.
465CYRUSV2_MAILER_MAXMSGS	[undefined] If defined, the maximum number of
466			messages to deliver in a single connection for the
467			cyrusv2 mailer.
468CYRUSV2_MAILER_MAXRCPTS	[undefined] If defined, the maximum number of
469			recipients to deliver in a single connection for the
470			cyrusv2 mailer.
471CYRUSV2_MAILER_ARGS	[FILE /var/imap/socket/lmtp] The arguments passed
472			to the cyrusv2 mailer.  This can be used to
473			change the name of the Unix domain socket, or
474			to switch to delivery via TCP (e.g., `TCP $h lmtp')
475CYRUSV2_MAILER_QGRP	[undefined] The queue group for the cyrusv2 mailer.
476CYRUSV2_MAILER_CHARSET	[undefined] If defined, messages containing 8-bit data
477			that ARRIVE from an address that resolves to one the
478			Cyrus mailer and which are converted to MIME will
479			be labeled with this character set.
480confEBINDIR		[/usr/libexec] The directory for executables.
481			Currently used for FEATURE(`local_lmtp') and
482			FEATURE(`smrsh').
483QPAGE_MAILER_FLAGS	[mDFMs] The flags used by the qpage mailer.
484QPAGE_MAILER_PATH	[/usr/local/bin/qpage] The program used to deliver
485			qpage mail.
486QPAGE_MAILER_ARGS	[qpage -l0 -m -P$u] The arguments passed
487			to deliver qpage mail.
488QPAGE_MAILER_MAX	[4096] If set, the maximum size message that
489			will be accepted by the qpage mailer.
490QPAGE_MAILER_QGRP	[undefined] The queue group for the qpage mailer.
491LOCAL_PROG_QGRP		[undefined] The queue group for the prog mailer.
492
493Note: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS:
494MODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of
495the macro Name_MAILER_FLAGS and change can be: flags that should
496be used directly (thus overriding the default value), or if it
497starts with `+' (`-') then those flags are added to (removed from)
498the default value.  Example:
499
500	MODIFY_MAILER_FLAGS(`LOCAL', `+e')
501
502will add the flag `e' to LOCAL_MAILER_FLAGS.  Notice: there are
503several smtp mailers all of which are manipulated individually.
504See the section MAILERS for the available mailer names.
505WARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS
506unconditionally, i.e., without respecting any definitions in an
507OSTYPE setting.
508
509
510+---------+
511| DOMAINS |
512+---------+
513
514You will probably want to collect domain-dependent defines into one
515file, referenced by the DOMAIN macro.  For example, the Berkeley
516domain file includes definitions for several internal distinguished
517hosts:
518
519UUCP_RELAY	The host that will accept UUCP-addressed email.
520		If not defined, all UUCP sites must be directly
521		connected.
522BITNET_RELAY	The host that will accept BITNET-addressed email.
523		If not defined, the .BITNET pseudo-domain won't work.
524DECNET_RELAY	The host that will accept DECNET-addressed email.
525		If not defined, the .DECNET pseudo-domain and addresses
526		of the form node::user will not work.
527FAX_RELAY	The host that will accept mail to the .FAX pseudo-domain.
528		The "fax" mailer overrides this value.
529LOCAL_RELAY	The site that will handle unqualified names -- that
530		is, names without an @domain extension.
531		Normally MAIL_HUB is preferred for this function.
532		LOCAL_RELAY is mostly useful in conjunction with
533		FEATURE(`stickyhost') -- see the discussion of
534		stickyhost below.  If not set, they are assumed to
535		belong on this machine.  This allows you to have a
536		central site to store a company- or department-wide
537		alias database.  This only works at small sites,
538		and only with some user agents.
539LUSER_RELAY	The site that will handle lusers -- that is, apparently
540		local names that aren't local accounts or aliases.  To
541		specify a local user instead of a site, set this to
542		``local:username''.
543
544Any of these can be either ``mailer:hostname'' (in which case the
545mailer is the internal mailer name, such as ``uucp-new'' and the hostname
546is the name of the host as appropriate for that mailer) or just a
547``hostname'', in which case a default mailer type (usually ``relay'',
548a variant on SMTP) is used.  WARNING: if you have a wildcard MX
549record matching your domain, you probably want to define these to
550have a trailing dot so that you won't get the mail diverted back
551to yourself.
552
553The domain file can also be used to define a domain name, if needed
554(using "DD<domain>") and set certain site-wide features.  If all hosts
555at your site masquerade behind one email name, you could also use
556MASQUERADE_AS here.
557
558You do not have to define a domain -- in particular, if you are a
559single machine sitting off somewhere, it is probably more work than
560it's worth.  This is just a mechanism for combining "domain dependent
561knowledge" into one place.
562
563
564+---------+
565| MAILERS |
566+---------+
567
568There are fewer mailers supported in this version than the previous
569version, owing mostly to a simpler world.  As a general rule, put the
570MAILER definitions last in your .mc file.
571
572local		The local and prog mailers.  You will almost always
573		need these; the only exception is if you relay ALL
574		your mail to another site.  This mailer is included
575		automatically.
576
577smtp		The Simple Mail Transport Protocol mailer.  This does
578		not hide hosts behind a gateway or another other
579		such hack; it assumes a world where everyone is
580		running the name server.  This file actually defines
581		five mailers: "smtp" for regular (old-style) SMTP to
582		other servers, "esmtp" for extended SMTP to other
583		servers, "smtp8" to do SMTP to other servers without
584		converting 8-bit data to MIME (essentially, this is
585		your statement that you know the other end is 8-bit
586		clean even if it doesn't say so), "dsmtp" to do on
587		demand delivery, and "relay" for transmission to the
588		RELAY_HOST, LUSER_RELAY, or MAIL_HUB.
589
590uucp		The UNIX-to-UNIX Copy Program mailer.  Actually, this
591		defines two mailers, "uucp-old" (a.k.a. "uucp") and
592		"uucp-new" (a.k.a. "suucp").  The latter is for when you
593		know that the UUCP mailer at the other end can handle
594		multiple recipients in one transfer.  If the smtp mailer
595		is included in your configuration, two other mailers
596		("uucp-dom" and "uucp-uudom") are also defined [warning: you
597		MUST specify MAILER(`smtp') before MAILER(`uucp')].  When you
598		include the uucp mailer, sendmail looks for all names in
599		class {U} and sends them to the uucp-old mailer; all
600		names in class {Y} are sent to uucp-new; and all
601		names in class {Z} are sent to uucp-uudom.  Note that
602		this is a function of what version of rmail runs on
603		the receiving end, and hence may be out of your control.
604		See the section below describing UUCP mailers in more
605		detail.
606
607usenet		Usenet (network news) delivery.  If this is specified,
608		an extra rule is added to ruleset 0 that forwards all
609		local email for users named ``group.usenet'' to the
610		``inews'' program.  Note that this works for all groups,
611		and may be considered a security problem.
612
613fax		Facsimile transmission.  This is experimental and based
614		on Sam Leffler's HylaFAX software.  For more information,
615		see http://www.hylafax.org/.
616
617pop		Post Office Protocol.
618
619procmail	An interface to procmail (does not come with sendmail).
620		This is designed to be used in mailertables.  For example,
621		a common question is "how do I forward all mail for a given
622		domain to a single person?".  If you have this mailer
623		defined, you could set up a mailertable reading:
624
625			host.com	procmail:/etc/procmailrcs/host.com
626
627		with the file /etc/procmailrcs/host.com reading:
628
629			:0	# forward mail for host.com
630			! -oi -f $1 person@other.host
631
632		This would arrange for (anything)@host.com to be sent
633		to person@other.host.  Within the procmail script, $1 is
634		the name of the sender and $2 is the name of the recipient.
635		If you use this with FEATURE(`local_procmail'), the FEATURE
636		should be listed first.
637
638		Of course there are other ways to solve this particular
639		problem, e.g., a catch-all entry in a virtusertable.
640
641mail11		The DECnet mail11 mailer, useful only if you have the mail11
642		program from gatekeeper.dec.com:/pub/DEC/gwtools (and
643		DECnet, of course).  This is for Phase IV DECnet support;
644		if you have Phase V at your site you may have additional
645		problems.
646
647phquery		The phquery program.  This is somewhat counterintuitively
648		referenced as the "ph" mailer internally.  It can be used
649		to do CCSO name server lookups.  The phquery program, which
650		this mailer uses, is distributed with the ph client.
651
652cyrus		The cyrus and cyrusbb mailers.  The cyrus mailer delivers to
653		a local cyrus user.  this mailer can make use of the
654		"user+detail@local.host" syntax (see
655		FEATURE(`preserve_local_plus_detail')); it will deliver the
656		mail to the user's "detail" mailbox if the mailbox's ACL
657		permits.  The cyrusbb mailer delivers to a system-wide
658		cyrus mailbox if the mailbox's ACL permits.  The cyrus
659		mailer must be defined after the local mailer.
660
661cyrusv2		The mailer for Cyrus v2.x.  The cyrusv2 mailer delivers to
662		local cyrus users via LMTP.  This mailer can make use of the
663		"user+detail@local.host" syntax (see
664		FEATURE(`preserve_local_plus_detail')); it will deliver the
665		mail to the user's "detail" mailbox if the mailbox's ACL
666		permits.  The cyrusv2 mailer must be defined after the
667		local mailer.
668
669qpage		A mailer for QuickPage, a pager interface.  See
670		http://www.qpage.org/ for further information.
671
672The local mailer accepts addresses of the form "user+detail", where
673the "+detail" is not used for mailbox matching but is available
674to certain local mail programs (in particular, see
675FEATURE(`local_procmail')).  For example, "eric", "eric+sendmail", and
676"eric+sww" all indicate the same user, but additional arguments <null>,
677"sendmail", and "sww" may be provided for use in sorting mail.
678
679
680+----------+
681| FEATURES |
682+----------+
683
684Special features can be requested using the "FEATURE" macro.  For
685example, the .mc line:
686
687	FEATURE(`use_cw_file')
688
689tells sendmail that you want to have it read an /etc/mail/local-host-names
690file to get values for class {w}.  A FEATURE may contain up to 9
691optional parameters -- for example:
692
693	FEATURE(`mailertable', `dbm /usr/lib/mailertable')
694
695The default database map type for the table features can be set with
696
697	define(`DATABASE_MAP_TYPE', `dbm')
698
699which would set it to use ndbm databases.  The default is the Berkeley DB
700hash database format.  Note that you must still declare a database map type
701if you specify an argument to a FEATURE.  DATABASE_MAP_TYPE is only used
702if no argument is given for the FEATURE.  It must be specified before any
703feature that uses a map.
704
705Also, features which can take a map definition as an argument can also take
706the special keyword `LDAP'.  If that keyword is used, the map will use the
707LDAP definition described in the ``USING LDAP FOR ALIASES, MAPS, AND
708CLASSES'' section below.
709
710Available features are:
711
712use_cw_file	Read the file /etc/mail/local-host-names file to get
713		alternate names for this host.  This might be used if you
714		were on a host that MXed for a dynamic set of other hosts.
715		If the set is static, just including the line "Cw<name1>
716		<name2> ..." (where the names are fully qualified domain
717		names) is probably superior.  The actual filename can be
718		overridden by redefining confCW_FILE.
719
720use_ct_file	Read the file /etc/mail/trusted-users file to get the
721		names of users that will be ``trusted'', that is, able to
722		set their envelope from address using -f without generating
723		a warning message.  The actual filename can be overridden
724		by redefining confCT_FILE.
725
726redirect	Reject all mail addressed to "address.REDIRECT" with
727		a ``551 User has moved; please try <address>'' message.
728		If this is set, you can alias people who have left
729		to their new address with ".REDIRECT" appended.
730
731nouucp		Don't route UUCP addresses.  This feature takes one
732		parameter:
733		`reject': reject addresses which have "!" in the local
734			part unless it originates from a system
735			that is allowed to relay.
736		`nospecial': don't do anything special with "!".
737		Warnings: 1. See the notice in the anti-spam section.
738		2. don't remove "!" from OperatorChars if `reject' is
739		given as parameter.
740
741nocanonify	Don't pass addresses to $[ ... $] for canonification
742		by default, i.e., host/domain names are considered canonical,
743		except for unqualified names, which must not be used in this
744		mode (violation of the standard).  It can be changed by
745		setting the DaemonPortOptions modifiers (M=).  That is,
746		FEATURE(`nocanonify') will be overridden by setting the
747		'c' flag.  Conversely, if FEATURE(`nocanonify') is not used,
748		it can be emulated by setting the 'C' flag
749		(DaemonPortOptions=Modifiers=C).  This would generally only
750		be used by sites that only act as mail gateways or which have
751		user agents that do full canonification themselves.  You may
752		also want to use
753		"define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off
754		the usual resolver options that do a similar thing.
755
756		An exception list for FEATURE(`nocanonify') can be
757		specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE,
758		i.e., a list of domains which are nevertheless passed to
759		$[ ... $] for canonification.  This is useful to turn on
760		canonification for local domains, e.g., use
761		CANONIFY_DOMAIN(`my.domain my') to canonify addresses
762		which end in "my.domain" or "my".
763		Another way to require canonification in the local
764		domain is CANONIFY_DOMAIN(`$=m').
765
766		A trailing dot is added to addresses with more than
767		one component in it such that other features which
768		expect a trailing dot (e.g., virtusertable) will
769		still work.
770
771		If `canonify_hosts' is specified as parameter, i.e.,
772		FEATURE(`nocanonify', `canonify_hosts'), then
773		addresses which have only a hostname, e.g.,
774		<user@host>, will be canonified (and hopefully fully
775		qualified), too.
776
777stickyhost	This feature is sometimes used with LOCAL_RELAY,
778		although it can be used for a different effect with
779		MAIL_HUB.
780
781		When used without MAIL_HUB, email sent to
782		"user@local.host" are marked as "sticky" -- that
783		is, the local addresses aren't matched against UDB,
784		don't go through ruleset 5, and are not forwarded to
785		the LOCAL_RELAY (if defined).
786
787		With MAIL_HUB, mail addressed to "user@local.host"
788		is forwarded to the mail hub, with the envelope
789		address still remaining "user@local.host".
790		Without stickyhost, the envelope would be changed
791		to "user@mail_hub", in order to protect against
792		mailing loops.
793
794mailertable	Include a "mailer table" which can be used to override
795		routing for particular domains (which are not in class {w},
796		i.e.  local host names).  The argument of the FEATURE may be
797		the key definition.  If none is specified, the definition
798		used is:
799
800			hash /etc/mail/mailertable
801
802		Keys in this database are fully qualified domain names
803		or partial domains preceded by a dot -- for example,
804		"vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU".  As a
805		special case of the latter, "." matches any domain not
806		covered by other keys.  Values must be of the form:
807			mailer:domain
808		where "mailer" is the internal mailer name, and "domain"
809		is where to send the message.  These maps are not
810		reflected into the message header.  As a special case,
811		the forms:
812			local:user
813		will forward to the indicated user using the local mailer,
814			local:
815		will forward to the original user in the e-mail address
816		using the local mailer, and
817			error:code message
818			error:D.S.N:code message
819		will give an error message with the indicated SMTP reply
820		code and message, where D.S.N is an RFC 1893 compliant
821		error code.
822
823domaintable	Include a "domain table" which can be used to provide
824		domain name mapping.  Use of this should really be
825		limited to your own domains.  It may be useful if you
826		change names (e.g., your company changes names from
827		oldname.com to newname.com).  The argument of the
828		FEATURE may be the key definition.  If none is specified,
829		the definition used is:
830
831			hash /etc/mail/domaintable
832
833		The key in this table is the domain name; the value is
834		the new (fully qualified) domain.  Anything in the
835		domaintable is reflected into headers; that is, this
836		is done in ruleset 3.
837
838bitdomain	Look up bitnet hosts in a table to try to turn them into
839		internet addresses.  The table can be built using the
840		bitdomain program contributed by John Gardiner Myers.
841		The argument of the FEATURE may be the key definition; if
842		none is specified, the definition used is:
843
844			hash /etc/mail/bitdomain
845
846		Keys are the bitnet hostname; values are the corresponding
847		internet hostname.
848
849uucpdomain	Similar feature for UUCP hosts.  The default map definition
850		is:
851
852			hash /etc/mail/uudomain
853
854		At the moment there is no automagic tool to build this
855		database.
856
857always_add_domain
858		Include the local host domain even on locally delivered
859		mail.  Normally it is not added on unqualified names.
860		However, if you use a shared message store but do not use
861		the same user name space everywhere, you may need the host
862		name on local names.  An optional argument specifies
863		another domain to be added than the local.
864
865allmasquerade	If masquerading is enabled (using MASQUERADE_AS), this
866		feature will cause recipient addresses to also masquerade
867		as being from the masquerade host.  Normally they get
868		the local hostname.  Although this may be right for
869		ordinary users, it can break local aliases.  For example,
870		if you send to "localalias", the originating sendmail will
871		find that alias and send to all members, but send the
872		message with "To: localalias@masqueradehost".  Since that
873		alias likely does not exist, replies will fail.  Use this
874		feature ONLY if you can guarantee that the ENTIRE
875		namespace on your masquerade host supersets all the
876		local entries.
877
878limited_masquerade
879		Normally, any hosts listed in class {w} are masqueraded.  If
880		this feature is given, only the hosts listed in class {M} (see
881		below:  MASQUERADE_DOMAIN) are masqueraded.  This is useful
882		if you have several domains with disjoint namespaces hosted
883		on the same machine.
884
885masquerade_entire_domain
886		If masquerading is enabled (using MASQUERADE_AS) and
887		MASQUERADE_DOMAIN (see below) is set, this feature will
888		cause addresses to be rewritten such that the masquerading
889		domains are actually entire domains to be hidden.  All
890		hosts within the masquerading domains will be rewritten
891		to the masquerade name (used in MASQUERADE_AS).  For example,
892		if you have:
893
894			MASQUERADE_AS(`masq.com')
895			MASQUERADE_DOMAIN(`foo.org')
896			MASQUERADE_DOMAIN(`bar.com')
897
898		then *foo.org and *bar.com are converted to masq.com.  Without
899		this feature, only foo.org and bar.com are masqueraded.
900
901		    NOTE: only domains within your jurisdiction and
902		    current hierarchy should be masqueraded using this.
903
904local_no_masquerade
905		This feature prevents the local mailer from masquerading even
906		if MASQUERADE_AS is used.  MASQUERADE_AS will only have effect
907		on addresses of mail going outside the local domain.
908
909masquerade_envelope
910		If masquerading is enabled (using MASQUERADE_AS) or the
911		genericstable is in use, this feature will cause envelope
912		addresses to also masquerade as being from the masquerade
913		host.  Normally only the header addresses are masqueraded.
914
915genericstable	This feature will cause unqualified addresses (i.e., without
916		a domain) and addresses with a domain listed in class {G}
917		to be looked up in a map and turned into another ("generic")
918		form, which can change both the domain name and the user name.
919		Notice: if you use an MSP (as it is default starting with
920		8.12), the MTA will only receive qualified addresses from the
921		MSP (as required by the RFCs).  Hence you need to add your
922		domain to class {G}.  This feature is similar to the userdb
923		functionality.  The same types of addresses as for
924		masquerading are looked up, i.e., only header sender
925		addresses unless the allmasquerade and/or masquerade_envelope
926		features are given.  Qualified addresses must have the domain
927		part in class {G}; entries can be added to this class by the
928		macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE (analogously
929		to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE, see below).
930
931		The argument of FEATURE(`genericstable') may be the map
932		definition; the default map definition is:
933
934			hash /etc/mail/genericstable
935
936		The key for this table is either the full address, the domain
937		(with a leading @; the localpart is passed as first argument)
938		or the unqualified username (tried in the order mentioned);
939		the value is the new user address.  If the new user address
940		does not include a domain, it will be qualified in the standard
941		manner, i.e., using $j or the masquerade name.  Note that the
942		address being looked up must be fully qualified.  For local
943		mail, it is necessary to use FEATURE(`always_add_domain')
944		for the addresses to be qualified.
945		The "+detail" of an address is passed as %1, so entries like
946
947			old+*@foo.org	new+%1@example.com
948			gen+*@foo.org	%1@example.com
949
950		and other forms are possible.
951
952generics_entire_domain
953		If the genericstable is enabled and GENERICS_DOMAIN or
954		GENERICS_DOMAIN_FILE is used, this feature will cause
955		addresses to be searched in the map if their domain
956		parts are subdomains of elements in class {G}.
957
958virtusertable	A domain-specific form of aliasing, allowing multiple
959		virtual domains to be hosted on one machine.  For example,
960		if the virtuser table contained:
961
962			info@foo.com	foo-info
963			info@bar.com	bar-info
964			joe@bar.com	error:nouser 550 No such user here
965			jax@bar.com	error:5.7.0:550 Address invalid
966			@baz.org	jane@example.net
967
968		then mail addressed to info@foo.com will be sent to the
969		address foo-info, mail addressed to info@bar.com will be
970		delivered to bar-info, and mail addressed to anyone at baz.org
971		will be sent to jane@example.net, mail to joe@bar.com will
972		be rejected with the specified error message, and mail to
973		jax@bar.com will also have a RFC 1893 compliant error code
974		5.7.0.
975
976		The username from the original address is passed
977		as %1 allowing:
978
979			@foo.org	%1@example.com
980
981		meaning someone@foo.org will be sent to someone@example.com.
982		Additionally, if the local part consists of "user+detail"
983		then "detail" is passed as %2 and "+detail" is passed as %3
984		when a match against user+* is attempted, so entries like
985
986			old+*@foo.org	new+%2@example.com
987			gen+*@foo.org	%2@example.com
988			+*@foo.org	%1%3@example.com
989			X++@foo.org	Z%3@example.com
990			@bar.org	%1%3
991
992		and other forms are possible.  Note: to preserve "+detail"
993		for a default case (@domain) %1%3 must be used as RHS.
994		There are two wildcards after "+": "+" matches only a non-empty
995		detail, "*" matches also empty details, e.g., user+@foo.org
996		matches +*@foo.org but not ++@foo.org.  This can be used
997		to ensure that the parameters %2 and %3 are not empty.
998
999		All the host names on the left hand side (foo.com, bar.com,
1000		and baz.org) must be in class {w} or class {VirtHost}.  The
1001		latter can be defined by the macros VIRTUSER_DOMAIN or
1002		VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
1003		MASQUERADE_DOMAIN_FILE, see below).  If VIRTUSER_DOMAIN or
1004		VIRTUSER_DOMAIN_FILE is used, then the entries of class
1005		{VirtHost} are added to class {R}, i.e., relaying is allowed
1006		to (and from) those domains.  The default map definition is:
1007
1008			hash /etc/mail/virtusertable
1009
1010		A new definition can be specified as the second argument of
1011		the FEATURE macro, such as
1012
1013			FEATURE(`virtusertable', `dbm /etc/mail/virtusers')
1014
1015virtuser_entire_domain
1016		If the virtusertable is enabled and VIRTUSER_DOMAIN or
1017		VIRTUSER_DOMAIN_FILE is used, this feature will cause
1018		addresses to be searched in the map if their domain
1019		parts are subdomains of elements in class {VirtHost}.
1020
1021ldap_routing	Implement LDAP-based e-mail recipient routing according to
1022		the Internet Draft draft-lachman-laser-ldap-mail-routing-01.
1023		This provides a method to re-route addresses with a
1024		domain portion in class {LDAPRoute} to either a
1025		different mail host or a different address.  Hosts can
1026		be added to this class using LDAPROUTE_DOMAIN and
1027		LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
1028		MASQUERADE_DOMAIN_FILE, see below).
1029
1030		See the LDAP ROUTING section below for more information.
1031
1032nodns		If you aren't running DNS at your site (for example,
1033		you are UUCP-only connected).  It's hard to consider
1034		this a "feature", but hey, it had to go somewhere.
1035		Actually, as of 8.7 this is a no-op -- remove "dns" from
1036		the hosts service switch entry instead.
1037
1038nullclient	This is a special case -- it creates a configuration file
1039		containing nothing but support for forwarding all mail to a
1040		central hub via a local SMTP-based network.  The argument
1041		is the name of that hub.
1042
1043		The only other feature that should be used in conjunction
1044		with this one is FEATURE(`nocanonify').  No mailers
1045		should be defined.  No aliasing or forwarding is done.
1046
1047local_lmtp	Use an LMTP capable local mailer.  The argument to this
1048		feature is the pathname of an LMTP capable mailer.  By
1049		default, mail.local is used.  This is expected to be the
1050		mail.local which came with the 8.9 distribution which is
1051		LMTP capable.  The path to mail.local is set by the
1052		confEBINDIR m4 variable -- making the default
1053		LOCAL_MAILER_PATH /usr/libexec/mail.local.
1054		WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
1055		i.e., without respecting any definitions in an OSTYPE setting.
1056
1057local_procmail	Use procmail or another delivery agent as the local mailer.
1058		The argument to this feature is the pathname of the
1059		delivery agent, which defaults to PROCMAIL_MAILER_PATH.
1060		Note that this does NOT use PROCMAIL_MAILER_FLAGS or
1061		PROCMAIL_MAILER_ARGS for the local mailer; tweak
1062		LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or
1063		specify the appropriate parameters.  When procmail is used,
1064		the local mailer can make use of the
1065		"user+indicator@local.host" syntax; normally the +indicator
1066		is just tossed, but by default it is passed as the -a
1067		argument to procmail.
1068
1069		This feature can take up to three arguments:
1070
1071		1. Path to the mailer program
1072		   [default: /usr/local/bin/procmail]
1073		2. Argument vector including name of the program
1074		   [default: procmail -Y -a $h -d $u]
1075		3. Flags for the mailer [default: SPfhn9]
1076
1077		Empty arguments cause the defaults to be taken.
1078		Note that if you are on a system with a broken
1079		setreuid() call, you may need to add -f $f to the procmail
1080		argument vector to pass the proper sender to procmail.
1081
1082		For example, this allows it to use the maildrop
1083		(http://www.flounder.net/~mrsam/maildrop/) mailer instead
1084		by specifying:
1085
1086		FEATURE(`local_procmail', `/usr/local/bin/maildrop',
1087		 `maildrop -d $u')
1088
1089		or scanmails using:
1090
1091		FEATURE(`local_procmail', `/usr/local/bin/scanmails')
1092
1093		WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
1094		i.e.,  without respecting any definitions in an OSTYPE setting.
1095
1096bestmx_is_local	Accept mail as though locally addressed for any host that
1097		lists us as the best possible MX record.  This generates
1098		additional DNS traffic, but should be OK for low to
1099		medium traffic hosts.  The argument may be a set of
1100		domains, which will limit the feature to only apply to
1101		these domains -- this will reduce unnecessary DNS
1102		traffic.  THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH
1103		WILDCARD MX RECORDS!!!  If you have a wildcard MX record
1104		that matches your domain, you cannot use this feature.
1105
1106smrsh		Use the SendMail Restricted SHell (smrsh) provided
1107		with the distribution instead of /bin/sh for mailing
1108		to programs.  This improves the ability of the local
1109		system administrator to control what gets run via
1110		e-mail.  If an argument is provided it is used as the
1111		pathname to smrsh; otherwise, the path defined by
1112		confEBINDIR is used for the smrsh binary -- by default,
1113		/usr/libexec/smrsh is assumed.
1114
1115promiscuous_relay
1116		By default, the sendmail configuration files do not permit
1117		mail relaying (that is, accepting mail from outside your
1118		local host (class {w}) and sending it to another host than
1119		your local host).  This option sets your site to allow
1120		mail relaying from any site to any site.  In almost all
1121		cases, it is better to control relaying more carefully
1122		with the access map, class {R}, or authentication.  Domains
1123		can be added to class {R} by the macros RELAY_DOMAIN or
1124		RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
1125		MASQUERADE_DOMAIN_FILE, see below).
1126
1127relay_entire_domain
1128		This option allows any host in your domain as defined by
1129		class {m} to use your server for relaying.  Notice: make
1130		sure that your domain is not just a top level domain,
1131		e.g., com.  This can happen if you give your host a name
1132		like example.com instead of host.example.com.
1133
1134relay_hosts_only
1135		By default, names that are listed as RELAY in the access
1136		db and class {R} are treated as domain names, not host names.
1137		For example, if you specify ``foo.com'', then mail to or
1138		from foo.com, abc.foo.com, or a.very.deep.domain.foo.com
1139		will all be accepted for relaying.  This feature changes
1140		the behaviour to lookup individual host names only.
1141
1142relay_based_on_MX
1143		Turns on the ability to allow relaying based on the MX
1144		records of the host portion of an incoming recipient; that
1145		is, if an MX record for host foo.com points to your site,
1146		you will accept and relay mail addressed to foo.com.  See
1147		description below for more information before using this
1148		feature.  Also, see the KNOWNBUGS entry regarding bestmx
1149		map lookups.
1150
1151		FEATURE(`relay_based_on_MX') does not necessarily allow
1152		routing of these messages which you expect to be allowed,
1153		if route address syntax (or %-hack syntax) is used.  If
1154		this is a problem, add entries to the access-table or use
1155		FEATURE(`loose_relay_check').
1156
1157relay_mail_from
1158		Allows relaying if the mail sender is listed as RELAY in
1159		the access map.  If an optional argument `domain' (this
1160		is the literal word `domain', not a placeholder) is given,
1161		relaying can be allowed just based on the domain portion
1162		of the sender address.  This feature should only be used if
1163		absolutely necessary as the sender address can be easily
1164		forged.  Use of this feature requires the "From:" tag to
1165		be used for the key in the access map; see the discussion
1166		of tags and FEATURE(`relay_mail_from') in the section on
1167		anti-spam configuration control.
1168
1169relay_local_from
1170		Allows relaying if the domain portion of the mail sender
1171		is a local host.  This should only be used if absolutely
1172		necessary as it opens a window for spammers.  Specifically,
1173		they can send mail to your mail server that claims to be
1174		from your domain (either directly or via a routed address),
1175		and you will go ahead and relay it out to arbitrary hosts
1176		on the Internet.
1177
1178accept_unqualified_senders
1179		Normally, MAIL FROM: commands in the SMTP session will be
1180		refused if the connection is a network connection and the
1181		sender address does not include a domain name.  If your
1182		setup sends local mail unqualified (i.e., MAIL FROM: <joe>),
1183		you will need to use this feature to accept unqualified
1184		sender addresses.  Setting the DaemonPortOptions modifier
1185		'u' overrides the default behavior, i.e., unqualified
1186		addresses are accepted even without this FEATURE.
1187		If this FEATURE is not used, the DaemonPortOptions modifier
1188		'f' can be used to enforce fully qualified addresses.
1189
1190accept_unresolvable_domains
1191		Normally, MAIL FROM: commands in the SMTP session will be
1192		refused if the host part of the argument to MAIL FROM:
1193		cannot be located in the host name service (e.g., an A or
1194		MX record in DNS).  If you are inside a firewall that has
1195		only a limited view of the Internet host name space, this
1196		could cause problems.  In this case you probably want to
1197		use this feature to accept all domains on input, even if
1198		they are unresolvable.
1199
1200access_db	Turns on the access database feature.  The access db gives
1201		you the ability to allow or refuse to accept mail from
1202		specified domains for administrative reasons.  Moreover,
1203		it can control the behavior of sendmail in various situations.
1204		By default, the access database specification is:
1205
1206			hash -T<TMPF> /etc/mail/access
1207
1208		See the anti-spam configuration control section for further
1209		important information about this feature.  Notice:
1210		"-T<TMPF>" is meant literal, do not replace it by anything.
1211
1212blacklist_recipients
1213		Turns on the ability to block incoming mail for certain
1214		recipient usernames, hostnames, or addresses.  For
1215		example, you can block incoming mail to user nobody,
1216		host foo.mydomain.com, or guest@bar.mydomain.com.
1217		These specifications are put in the access db as
1218		described in the anti-spam configuration control section
1219		later in this document.
1220
1221delay_checks	The rulesets check_mail and check_relay will not be called
1222		when a client connects or issues a MAIL command, respectively.
1223		Instead, those rulesets will be called by the check_rcpt
1224		ruleset; they will be skipped under certain circumstances.
1225		See "Delay all checks" in the anti-spam configuration control
1226		section.  Note: this feature is incompatible to the versions
1227		in 8.10 and 8.11.
1228
1229dnsbl		Turns on rejection of hosts found in an DNS based rejection
1230		list.  If an argument is provided it is used as the domain
1231		in which blocked hosts are listed; otherwise it defaults to
1232		blackholes.mail-abuse.org.  An explanation for an DNS based
1233		rejection list can be found at http://mail-abuse.org/rbl/.
1234		A second argument can be used to change the default error
1235		message.  Without that second argument, the error message
1236		will be
1237			Rejected: IP-ADDRESS listed at SERVER
1238		where IP-ADDRESS and SERVER are replaced by the appropriate
1239		information.  By default, temporary lookup failures are
1240		ignored.  This behavior can be changed by specifying a
1241		third argument, which must be either `t' or a full error
1242		message.  See the anti-spam configuration control section for
1243		an example.  The dnsbl feature can be included several times
1244		to query different DNS based rejection lists.  See also
1245		enhdnsbl for an enhanced version.
1246
1247		Set the DNSBL_MAP mc option to change the default map
1248		definition from `host'.  Set the DNSBL_MAP_OPT mc option
1249		to add additional options to the map specification used.
1250
1251		Some DNS based rejection lists cause failures if asked
1252		for AAAA records. If your sendmail version is compiled
1253		with IPv6 support (NETINET6) and you experience this
1254		problem, add
1255
1256			define(`DNSBL_MAP', `dns -R A')
1257
1258		before the first use of this feature.  Alternatively you
1259		can use enhdnsbl instead (see below).
1260
1261		NOTE: The default DNS blacklist, blackholes.mail-abuse.org,
1262		is a service offered by the Mail Abuse Prevention System
1263		(MAPS).  As of July 31, 2001, MAPS is a subscription
1264		service, so using that network address won't work if you
1265		haven't subscribed.  Contact MAPS to subscribe
1266		(http://mail-abuse.org/).
1267
1268enhdnsbl	Enhanced version of dnsbl (see above).  Further arguments
1269		(up to 5) can be used to specify specific return values
1270		from lookups.  Temporary lookup failures are ignored unless
1271		a third argument is given, which must be either `t' or a full
1272		error message.  By default, any successful lookup will
1273		generate an error.  Otherwise the result of the lookup is
1274		compared with the supplied argument(s), and only if a match
1275		occurs an error is generated.  For example,
1276
1277		FEATURE(`enhdnsbl', `dnsbl.example.com', `', `t', `127.0.0.2.')
1278
1279		will reject the e-mail if the lookup returns the value
1280		``127.0.0.2.'', or generate a 451 response if the lookup
1281		temporarily failed.  The arguments can contain metasymbols
1282		as they are allowed in the LHS of rules.  As the example
1283		shows, the default values are also used if an empty argument,
1284		i.e., `', is specified.  This feature requires that sendmail
1285		has been compiled with the flag DNSMAP (see sendmail/README).
1286
1287		Set the EDNSBL_TO mc option to change the DNS retry count
1288		from the default value of 5.
1289
1290lookupdotdomain	Look up also .domain in the access map.  This allows to
1291		match only subdomains.  It does not work well with
1292		FEATURE(`relay_hosts_only'), because most lookups for
1293		subdomains are suppressed by the latter feature.
1294
1295loose_relay_check
1296		Normally, if % addressing is used for a recipient, e.g.
1297		user%site@othersite, and othersite is in class {R}, the
1298		check_rcpt ruleset will strip @othersite and recheck
1299		user@site for relaying.  This feature changes that
1300		behavior.  It should not be needed for most installations.
1301
1302authinfo	Provide a separate map for client side authentication
1303		information.  See SMTP AUTHENTICATION for details.
1304		By default, the authinfo database specification is:
1305
1306			hash /etc/mail/authinfo
1307
1308preserve_luser_host
1309		Preserve the name of the recipient host if LUSER_RELAY is
1310		used.  Without this option, the domain part of the
1311		recipient address will be replaced by the host specified as
1312		LUSER_RELAY.  This feature only works if the hostname is
1313		passed to the mailer (see mailer triple in op.me).  Note
1314		that in the default configuration the local mailer does not
1315		receive the hostname, i.e., the mailer triple has an empty
1316		hostname.
1317
1318preserve_local_plus_detail
1319		Preserve the +detail portion of the address when passing
1320		address to local delivery agent.  Disables alias and
1321		.forward +detail stripping (e.g., given user+detail, only
1322		that address will be looked up in the alias file; user+* and
1323		user will not be looked up).  Only use if the local
1324		delivery agent in use supports +detail addressing.
1325
1326compat_check	Enable ruleset check_compat to look up pairs of addresses
1327		with the Compat: tag --	Compat:sender<@>recipient -- in the
1328		access map.  Valid values for the RHS include
1329			DISCARD	silently discard recipient
1330			TEMP:	return a temporary error
1331			ERROR:	return a permanent error
1332		In the last two cases, a 4xy/5xy SMTP reply code should
1333		follow the colon.
1334
1335no_default_msa	Don't generate the default MSA daemon, i.e.,
1336		DAEMON_OPTIONS(`Port=587,Name=MSA,M=E')
1337		To define a MSA daemon with other parameters, use this
1338		FEATURE and introduce new settings via DAEMON_OPTIONS().
1339
1340msp		Defines config file for Message Submission Program.
1341		See sendmail/SECURITY for details and cf/cf/submit.mc how
1342		to use it.  An optional argument can be used to override
1343		the default of `[localhost]' to use as host to send all
1344		e-mails to.  Note that MX records will be used if the
1345		specified hostname is not in square brackets (e.g.,
1346		[hostname]).  If `MSA' is specified as second argument then
1347		port 587 is used to contact the server.  Example:
1348
1349			FEATURE(`msp', `', `MSA')
1350
1351		Some more hints about possible changes can be found below
1352		in the section MESSAGE SUBMISSION PROGRAM.
1353
1354		Note: Due to many problems, submit.mc uses
1355
1356			FEATURE(`msp', `[127.0.0.1]')
1357
1358		by default.  If you have a machine with IPv6 only,
1359		change it to
1360
1361			FEATURE(`msp', `[IPv6:::1]')
1362
1363		If you want to continue using '[localhost]', (the behavior
1364		up to 8.12.6), use
1365
1366			FEATURE(`msp')
1367
1368queuegroup	A simple example how to select a queue group based
1369		on the full e-mail address or the domain of the
1370		recipient.  Selection is done via entries in the
1371		access map using the tag QGRP:, for example:
1372
1373			QGRP:example.com	main
1374			QGRP:friend@some.org	others
1375			QGRP:my.domain		local
1376
1377		where "main", "others", and "local" are names of
1378		queue groups.  If an argument is specified, it is used
1379		as default queue group.
1380
1381		Note: please read the warning in doc/op/op.me about
1382		queue groups and possible queue manipulations.
1383
1384+-------+
1385| HACKS |
1386+-------+
1387
1388Some things just can't be called features.  To make this clear,
1389they go in the hack subdirectory and are referenced using the HACK
1390macro.  These will tend to be site-dependent.  The release
1391includes the Berkeley-dependent "cssubdomain" hack (that makes
1392sendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU;
1393this is intended as a short-term aid while moving hosts into
1394subdomains.
1395
1396
1397+--------------------+
1398| SITE CONFIGURATION |
1399+--------------------+
1400
1401    *****************************************************
1402    * This section is really obsolete, and is preserved	*
1403    * only for back compatibility.  You should plan on	*
1404    * using mailertables for new installations.  In	*
1405    * particular, it doesn't work for the newer forms	*
1406    * of UUCP mailers, such as uucp-uudom.		*
1407    *****************************************************
1408
1409Complex sites will need more local configuration information, such as
1410lists of UUCP hosts they speak with directly.  This can get a bit more
1411tricky.  For an example of a "complex" site, see cf/ucbvax.mc.
1412
1413The SITECONFIG macro allows you to indirectly reference site-dependent
1414configuration information stored in the siteconfig subdirectory.  For
1415example, the line
1416
1417	SITECONFIG(`uucp.ucbvax', `ucbvax', `U')
1418
1419reads the file uucp.ucbvax for local connection information.  The
1420second parameter is the local name (in this case just "ucbvax" since
1421it is locally connected, and hence a UUCP hostname).  The third
1422parameter is the name of both a macro to store the local name (in
1423this case, {U}) and the name of the class (e.g., {U}) in which to store
1424the host information read from the file.  Another SITECONFIG line reads
1425
1426	SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W')
1427
1428This says that the file uucp.ucbarpa contains the list of UUCP sites
1429connected to ucbarpa.Berkeley.EDU.  Class {W} will be used to
1430store this list, and $W is defined to be ucbarpa.Berkeley.EDU, that
1431is, the name of the relay to which the hosts listed in uucp.ucbarpa
1432are connected.  [The machine ucbarpa is gone now, but this
1433out-of-date configuration file has been left around to demonstrate
1434how you might do this.]
1435
1436Note that the case of SITECONFIG with a third parameter of ``U'' is
1437special; the second parameter is assumed to be the UUCP name of the
1438local site, rather than the name of a remote site, and the UUCP name
1439is entered into class {w} (the list of local hostnames) as $U.UUCP.
1440
1441The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing
1442more than a sequence of SITE macros describing connectivity.  For
1443example:
1444
1445	SITE(`cnmat')
1446	SITE(`sgi olympus')
1447
1448The second example demonstrates that you can use two names on the
1449same line; these are usually aliases for the same host (or are at
1450least in the same company).
1451
1452
1453+--------------------+
1454| USING UUCP MAILERS |
1455+--------------------+
1456
1457It's hard to get UUCP mailers right because of the extremely ad hoc
1458nature of UUCP addressing.  These config files are really designed
1459for domain-based addressing, even for UUCP sites.
1460
1461There are four UUCP mailers available.  The choice of which one to
1462use is partly a matter of local preferences and what is running at
1463the other end of your UUCP connection.  Unlike good protocols that
1464define what will go over the wire, UUCP uses the policy that you
1465should do what is right for the other end; if they change, you have
1466to change.  This makes it hard to do the right thing, and discourages
1467people from updating their software.  In general, if you can avoid
1468UUCP, please do.
1469
1470The major choice is whether to go for a domainized scheme or a
1471non-domainized scheme.  This depends entirely on what the other
1472end will recognize.  If at all possible, you should encourage the
1473other end to go to a domain-based system -- non-domainized addresses
1474don't work entirely properly.
1475
1476The four mailers are:
1477
1478    uucp-old (obsolete name: "uucp")
1479	This is the oldest, the worst (but the closest to UUCP) way of
1480	sending messages accros UUCP connections.  It does bangify
1481	everything and prepends $U (your UUCP name) to the sender's
1482	address (which can already be a bang path itself).  It can
1483	only send to one address at a time, so it spends a lot of
1484	time copying duplicates of messages.  Avoid this if at all
1485	possible.
1486
1487    uucp-new (obsolete name: "suucp")
1488	The same as above, except that it assumes that in one rmail
1489	command you can specify several recipients.  It still has a
1490	lot of other problems.
1491
1492    uucp-dom
1493	This UUCP mailer keeps everything as domain addresses.
1494	Basically, it uses the SMTP mailer rewriting rules.  This mailer
1495	is only included if MAILER(`smtp') is specified before
1496	MAILER(`uucp').
1497
1498	Unfortunately, a lot of UUCP mailer transport agents require
1499	bangified addresses in the envelope, although you can use
1500	domain-based addresses in the message header.  (The envelope
1501	shows up as the From_ line on UNIX mail.)  So....
1502
1503    uucp-uudom
1504	This is a cross between uucp-new (for the envelope addresses)
1505	and uucp-dom (for the header addresses).  It bangifies the
1506	envelope sender (From_ line in messages) without adding the
1507	local hostname, unless there is no host name on the address
1508	at all (e.g., "wolf") or the host component is a UUCP host name
1509	instead of a domain name ("somehost!wolf" instead of
1510	"some.dom.ain!wolf").  This is also included only if MAILER(`smtp')
1511	is also specified earlier.
1512
1513Examples:
1514
1515On host grasp.insa-lyon.fr (UUCP host name "grasp"), the following
1516summarizes the sender rewriting for various mailers.
1517
1518Mailer		sender		rewriting in the envelope
1519------		------		-------------------------
1520uucp-{old,new}	wolf		grasp!wolf
1521uucp-dom	wolf		wolf@grasp.insa-lyon.fr
1522uucp-uudom	wolf		grasp.insa-lyon.fr!wolf
1523
1524uucp-{old,new}	wolf@fr.net	grasp!fr.net!wolf
1525uucp-dom	wolf@fr.net	wolf@fr.net
1526uucp-uudom	wolf@fr.net	fr.net!wolf
1527
1528uucp-{old,new}	somehost!wolf	grasp!somehost!wolf
1529uucp-dom	somehost!wolf	somehost!wolf@grasp.insa-lyon.fr
1530uucp-uudom	somehost!wolf	grasp.insa-lyon.fr!somehost!wolf
1531
1532If you are using one of the domainized UUCP mailers, you really want
1533to convert all UUCP addresses to domain format -- otherwise, it will
1534do it for you (and probably not the way you expected).  For example,
1535if you have the address foo!bar!baz (and you are not sending to foo),
1536the heuristics will add the @uucp.relay.name or @local.host.name to
1537this address.  However, if you map foo to foo.host.name first, it
1538will not add the local hostname.  You can do this using the uucpdomain
1539feature.
1540
1541
1542+-------------------+
1543| TWEAKING RULESETS |
1544+-------------------+
1545
1546For more complex configurations, you can define special rules.
1547The macro LOCAL_RULE_3 introduces rules that are used in canonicalizing
1548the names.  Any modifications made here are reflected in the header.
1549
1550A common use is to convert old UUCP addresses to SMTP addresses using
1551the UUCPSMTP macro.  For example:
1552
1553	LOCAL_RULE_3
1554	UUCPSMTP(`decvax',	`decvax.dec.com')
1555	UUCPSMTP(`research',	`research.att.com')
1556
1557will cause addresses of the form "decvax!user" and "research!user"
1558to be converted to "user@decvax.dec.com" and "user@research.att.com"
1559respectively.
1560
1561This could also be used to look up hosts in a database map:
1562
1563	LOCAL_RULE_3
1564	R$* < @ $+ > $*		$: $1 < @ $(hostmap $2 $) > $3
1565
1566This map would be defined in the LOCAL_CONFIG portion, as shown below.
1567
1568Similarly, LOCAL_RULE_0 can be used to introduce new parsing rules.
1569For example, new rules are needed to parse hostnames that you accept
1570via MX records.  For example, you might have:
1571
1572	LOCAL_RULE_0
1573	R$+ <@ host.dom.ain.>	$#uucp $@ cnmat $: $1 < @ host.dom.ain.>
1574
1575You would use this if you had installed an MX record for cnmat.Berkeley.EDU
1576pointing at this host; this rule catches the message and forwards it on
1577using UUCP.
1578
1579You can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2.
1580These rulesets are normally empty.
1581
1582A similar macro is LOCAL_CONFIG.  This introduces lines added after the
1583boilerplate option setting but before rulesets.  Do not declare rulesets in
1584the LOCAL_CONFIG section.  It can be used to declare local database maps or
1585whatever.  For example:
1586
1587	LOCAL_CONFIG
1588	Khostmap hash /etc/mail/hostmap
1589	Kyplocal nis -m hosts.byname
1590
1591
1592+---------------------------+
1593| MASQUERADING AND RELAYING |
1594+---------------------------+
1595
1596You can have your host masquerade as another using
1597
1598	MASQUERADE_AS(`host.domain')
1599
1600This causes mail being sent to be labeled as coming from the
1601indicated host.domain, rather than $j.  One normally masquerades as
1602one of one's own subdomains (for example, it's unlikely that
1603Berkeley would choose to masquerade as an MIT site).  This
1604behaviour is modified by a plethora of FEATUREs; in particular, see
1605masquerade_envelope, allmasquerade, limited_masquerade, and
1606masquerade_entire_domain.
1607
1608The masquerade name is not normally canonified, so it is important
1609that it be your One True Name, that is, fully qualified and not a
1610CNAME.  However, if you use a CNAME, the receiving side may canonify
1611it for you, so don't think you can cheat CNAME mapping this way.
1612
1613Normally the only addresses that are masqueraded are those that come
1614from this host (that is, are either unqualified or in class {w}, the list
1615of local domain names).  You can augment this list, which is realized
1616by class {M} using
1617
1618	MASQUERADE_DOMAIN(`otherhost.domain')
1619
1620The effect of this is that although mail to user@otherhost.domain
1621will not be delivered locally, any mail including any user@otherhost.domain
1622will, when relayed, be rewritten to have the MASQUERADE_AS address.
1623This can be a space-separated list of names.
1624
1625If these names are in a file, you can use
1626
1627	MASQUERADE_DOMAIN_FILE(`filename')
1628
1629to read the list of names from the indicated file (i.e., to add
1630elements to class {M}).
1631
1632To exempt hosts or subdomains from being masqueraded, you can use
1633
1634	MASQUERADE_EXCEPTION(`host.domain')
1635
1636This can come handy if you want to masquerade a whole domain
1637except for one (or a few) host(s).  If these names are in a file,
1638you can use
1639
1640	MASQUERADE_EXCEPTION_FILE(`filename')
1641
1642Normally only header addresses are masqueraded.  If you want to
1643masquerade the envelope as well, use
1644
1645	FEATURE(`masquerade_envelope')
1646
1647There are always users that need to be "exposed" -- that is, their
1648internal site name should be displayed instead of the masquerade name.
1649Root is an example (which has been "exposed" by default prior to 8.10).
1650You can add users to this list using
1651
1652	EXPOSED_USER(`usernames')
1653
1654This adds users to class {E}; you could also use
1655
1656	EXPOSED_USER_FILE(`filename')
1657
1658You can also arrange to relay all unqualified names (that is, names
1659without @host) to a relay host.  For example, if you have a central
1660email server, you might relay to that host so that users don't have
1661to have .forward files or aliases.  You can do this using
1662
1663	define(`LOCAL_RELAY', `mailer:hostname')
1664
1665The ``mailer:'' can be omitted, in which case the mailer defaults to
1666"relay".  There are some user names that you don't want relayed, perhaps
1667because of local aliases.  A common example is root, which may be
1668locally aliased.  You can add entries to this list using
1669
1670	LOCAL_USER(`usernames')
1671
1672This adds users to class {L}; you could also use
1673
1674	LOCAL_USER_FILE(`filename')
1675
1676If you want all incoming mail sent to a centralized hub, as for a
1677shared /var/spool/mail scheme, use
1678
1679	define(`MAIL_HUB', `mailer:hostname')
1680
1681Again, ``mailer:'' defaults to "relay".  If you define both LOCAL_RELAY
1682and MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will
1683be sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB.
1684Note: there is a (long standing) bug which keeps this combination from
1685working for addresses of the form user+detail.
1686Names in class {L} will be delivered locally, so you MUST have aliases or
1687.forward files for them.
1688
1689For example, if you are on machine mastodon.CS.Berkeley.EDU and you have
1690FEATURE(`stickyhost'), the following combinations of settings will have the
1691indicated effects:
1692
1693email sent to....	eric			  eric@mastodon.CS.Berkeley.EDU
1694
1695LOCAL_RELAY set to	mail.CS.Berkeley.EDU	  (delivered locally)
1696mail.CS.Berkeley.EDU	  (no local aliasing)	    (aliasing done)
1697
1698MAIL_HUB set to		mammoth.CS.Berkeley.EDU	  mammoth.CS.Berkeley.EDU
1699mammoth.CS.Berkeley.EDU	  (aliasing done)	    (aliasing done)
1700
1701Both LOCAL_RELAY and	mail.CS.Berkeley.EDU	  mammoth.CS.Berkeley.EDU
1702MAIL_HUB set as above	  (no local aliasing)	    (aliasing done)
1703
1704If you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and
1705MAIL_HUB act identically, with MAIL_HUB taking precedence.
1706
1707If you want all outgoing mail to go to a central relay site, define
1708SMART_HOST as well.  Briefly:
1709
1710	LOCAL_RELAY applies to unqualified names (e.g., "eric").
1711	MAIL_HUB applies to names qualified with the name of the
1712		local host (e.g., "eric@mastodon.CS.Berkeley.EDU").
1713	SMART_HOST applies to names qualified with other hosts or
1714		bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU"
1715		or "eric@[127.0.0.1]").
1716
1717However, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY,
1718DECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you
1719really want absolutely everything to go to a single central site you will
1720need to unset all the other relays -- or better yet, find or build a
1721minimal config file that does this.
1722
1723For duplicate suppression to work properly, the host name is best
1724specified with a terminal dot:
1725
1726	define(`MAIL_HUB', `host.domain.')
1727	      note the trailing dot ---^
1728
1729
1730+-------------------------------------------+
1731| USING LDAP FOR ALIASES, MAPS, AND CLASSES |
1732+-------------------------------------------+
1733
1734LDAP can be used for aliases, maps, and classes by either specifying your
1735own LDAP map specification or using the built-in default LDAP map
1736specification.  The built-in default specifications all provide lookups
1737which match against either the machine's fully qualified hostname (${j}) or
1738a "cluster".  The cluster allows you to share LDAP entries among a large
1739number of machines without having to enter each of the machine names into
1740each LDAP entry.  To set the LDAP cluster name to use for a particular
1741machine or set of machines, set the confLDAP_CLUSTER m4 variable to a
1742unique name.  For example:
1743
1744	define(`confLDAP_CLUSTER', `Servers')
1745
1746Here, the word `Servers' will be the cluster name.  As an example, assume
1747that smtp.sendmail.org, etrn.sendmail.org, and mx.sendmail.org all belong
1748to the Servers cluster.
1749
1750Some of the LDAP LDIF examples below show use of the Servers cluster.
1751Every entry must have either a sendmailMTAHost or sendmailMTACluster
1752attribute or it will be ignored.  Be careful as mixing clusters and
1753individual host records can have surprising results (see the CAUTION
1754sections below).
1755
1756See the file cf/sendmail.schema for the actual LDAP schemas.  Note that
1757this schema (and therefore the lookups and examples below) is experimental
1758at this point as it has had little public review.  Therefore, it may change
1759in future versions.  Feedback via sendmail@sendmail.org is encouraged.
1760
1761-------
1762Aliases
1763-------
1764
1765The ALIAS_FILE (O AliasFile) option can be set to use LDAP for alias
1766lookups.  To use the default schema, simply use:
1767
1768	define(`ALIAS_FILE', `ldap:')
1769
1770By doing so, you will use the default schema which expands to a map
1771declared as follows:
1772
1773	ldap -k (&(objectClass=sendmailMTAAliasObject)
1774		  (sendmailMTAAliasGrouping=aliases)
1775		  (|(sendmailMTACluster=${sendmailMTACluster})
1776		    (sendmailMTAHost=$j))
1777		  (sendmailMTAKey=%0))
1778	     -v sendmailMTAAliasValue
1779
1780NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually
1781used when the binary expands the `ldap:' token as the AliasFile option is
1782not actually macro-expanded when read from the sendmail.cf file.
1783
1784Example LDAP LDIF entries might be:
1785
1786	dn: sendmailMTAKey=sendmail-list, dc=sendmail, dc=org
1787	objectClass: sendmailMTA
1788	objectClass: sendmailMTAAlias
1789	objectClass: sendmailMTAAliasObject
1790	sendmailMTAAliasGrouping: aliases
1791	sendmailMTAHost: etrn.sendmail.org
1792	sendmailMTAKey: sendmail-list
1793	sendmailMTAAliasValue: ca@example.org
1794	sendmailMTAAliasValue: eric
1795	sendmailMTAAliasValue: gshapiro@example.com
1796
1797	dn: sendmailMTAKey=owner-sendmail-list, dc=sendmail, dc=org
1798	objectClass: sendmailMTA
1799	objectClass: sendmailMTAAlias
1800	objectClass: sendmailMTAAliasObject
1801	sendmailMTAAliasGrouping: aliases
1802	sendmailMTAHost: etrn.sendmail.org
1803	sendmailMTAKey: owner-sendmail-list
1804	sendmailMTAAliasValue: eric
1805
1806	dn: sendmailMTAKey=postmaster, dc=sendmail, dc=org
1807	objectClass: sendmailMTA
1808	objectClass: sendmailMTAAlias
1809	objectClass: sendmailMTAAliasObject
1810	sendmailMTAAliasGrouping: aliases
1811	sendmailMTACluster: Servers
1812	sendmailMTAKey: postmaster
1813	sendmailMTAAliasValue: eric
1814
1815Here, the aliases sendmail-list and owner-sendmail-list will be available
1816only on etrn.sendmail.org but the postmaster alias will be available on
1817every machine in the Servers cluster (including etrn.sendmail.org).
1818
1819CAUTION: aliases are additive so that entries like these:
1820
1821	dn: sendmailMTAKey=bob, dc=sendmail, dc=org
1822	objectClass: sendmailMTA
1823	objectClass: sendmailMTAAlias
1824	objectClass: sendmailMTAAliasObject
1825	sendmailMTAAliasGrouping: aliases
1826	sendmailMTACluster: Servers
1827	sendmailMTAKey: bob
1828	sendmailMTAAliasValue: eric
1829
1830	dn: sendmailMTAKey=bobetrn, dc=sendmail, dc=org
1831	objectClass: sendmailMTA
1832	objectClass: sendmailMTAAlias
1833	objectClass: sendmailMTAAliasObject
1834	sendmailMTAAliasGrouping: aliases
1835	sendmailMTAHost: etrn.sendmail.org
1836	sendmailMTAKey: bob
1837	sendmailMTAAliasValue: gshapiro
1838
1839would mean that on all of the hosts in the cluster, mail to bob would go to
1840eric EXCEPT on etrn.sendmail.org in which case it would go to BOTH eric and
1841gshapiro.
1842
1843If you prefer not to use the default LDAP schema for your aliases, you can
1844specify the map parameters when setting ALIAS_FILE.  For example:
1845
1846	define(`ALIAS_FILE', `ldap:-k (&(objectClass=mailGroup)(mail=%0)) -v mgrpRFC822MailMember')
1847
1848----
1849Maps
1850----
1851
1852FEATURE()'s which take an optional map definition argument (e.g., access,
1853mailertable, virtusertable, etc.) can instead take the special keyword
1854`LDAP', e.g.:
1855
1856	FEATURE(`access_db', `LDAP')
1857	FEATURE(`virtusertable', `LDAP')
1858
1859When this keyword is given, that map will use LDAP lookups consisting of
1860the objectClass sendmailMTAClassObject, the attribute sendmailMTAMapName
1861with the map name, a search attribute of sendmailMTAKey, and the value
1862attribute sendmailMTAMapValue.
1863
1864The values for sendmailMTAMapName are:
1865
1866	FEATURE()		sendmailMTAMapName
1867	---------		------------------
1868	access_db		access
1869	authinfo		authinfo
1870	bitdomain		bitdomain
1871	domaintable		domain
1872	genericstable		generics
1873	mailertable		mailer
1874	uucpdomain		uucpdomain
1875	virtusertable		virtuser
1876
1877For example, FEATURE(`mailertable', `LDAP') would use the map definition:
1878
1879	Kmailertable ldap -k (&(objectClass=sendmailMTAMapObject)
1880			       (sendmailMTAMapName=mailer)
1881			       (|(sendmailMTACluster=${sendmailMTACluster})
1882				 (sendmailMTAHost=$j))
1883			       (sendmailMTAKey=%0))
1884			  -1 -v sendmailMTAMapValue
1885
1886An example LDAP LDIF entry using this map might be:
1887
1888	dn: sendmailMTAMapName=mailer, dc=sendmail, dc=org
1889	objectClass: sendmailMTA
1890	objectClass: sendmailMTAMap
1891	sendmailMTACluster: Servers
1892	sendmailMTAMapName: mailer
1893
1894	dn: sendmailMTAKey=example.com, sendmailMTAMapName=mailer, dc=sendmail, dc=org
1895	objectClass: sendmailMTA
1896	objectClass: sendmailMTAMap
1897	objectClass: sendmailMTAMapObject
1898	sendmailMTAMapName: mailer
1899	sendmailMTACluster: Servers
1900	sendmailMTAKey: example.com
1901	sendmailMTAMapValue: relay:[smtp.example.com]
1902
1903CAUTION: If your LDAP database contains the record above and *ALSO* a host
1904specific record such as:
1905
1906	dn: sendmailMTAKey=example.com@etrn, sendmailMTAMapName=mailer, dc=sendmail, dc=org
1907	objectClass: sendmailMTA
1908	objectClass: sendmailMTAMap
1909	objectClass: sendmailMTAMapObject
1910	sendmailMTAMapName: mailer
1911	sendmailMTAHost: etrn.sendmail.org
1912	sendmailMTAKey: example.com
1913	sendmailMTAMapValue: relay:[mx.example.com]
1914
1915then these entries will give unexpected results.  When the lookup is done
1916on etrn.sendmail.org, the effect is that there is *NO* match at all as maps
1917require a single match.  Since the host etrn.sendmail.org is also in the
1918Servers cluster, LDAP would return two answers for the example.com map key
1919in which case sendmail would treat this as no match at all.
1920
1921If you prefer not to use the default LDAP schema for your maps, you can
1922specify the map parameters when using the FEATURE().  For example:
1923
1924	FEATURE(`access_db', `ldap:-1 -k (&(objectClass=mapDatabase)(key=%0)) -v value')
1925
1926-------
1927Classes
1928-------
1929
1930Normally, classes can be filled via files or programs.  As of 8.12, they
1931can also be filled via map lookups using a new syntax:
1932
1933	F{ClassName}mapkey@mapclass:mapspec
1934
1935mapkey is optional and if not provided the map key will be empty.  This can
1936be used with LDAP to read classes from LDAP.  Note that the lookup is only
1937done when sendmail is initially started.  Use the special value `@LDAP' to
1938use the default LDAP schema.  For example:
1939
1940	RELAY_DOMAIN_FILE(`@LDAP')
1941
1942would put all of the attribute sendmailMTAClassValue values of LDAP records
1943with objectClass sendmailMTAClass and an attribute sendmailMTAClassName of
1944'R' into class $={R}.  In other words, it is equivalent to the LDAP map
1945specification:
1946
1947	F{R}@ldap:-k (&(objectClass=sendmailMTAClass)
1948		       (sendmailMTAClassName=R)
1949		       (|(sendmailMTACluster=${sendmailMTACluster})
1950			 (sendmailMTAHost=$j)))
1951		  -v sendmailMTAClassValue
1952
1953NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually
1954used when the binary expands the `@LDAP' token as class declarations are
1955not actually macro-expanded when read from the sendmail.cf file.
1956
1957This can be used with class related commands such as RELAY_DOMAIN_FILE(),
1958MASQUERADE_DOMAIN_FILE(), etc:
1959
1960	Command				sendmailMTAClassName
1961	-------				--------------------
1962	CANONIFY_DOMAIN_FILE()		Canonify
1963	EXPOSED_USER_FILE()		E
1964	GENERICS_DOMAIN_FILE()		G
1965	LDAPROUTE_DOMAIN_FILE()		LDAPRoute
1966	LDAPROUTE_EQUIVALENT_FILE()	LDAPRouteEquiv
1967	LOCAL_USER_FILE()		L
1968	MASQUERADE_DOMAIN_FILE()	M
1969	MASQUERADE_EXCEPTION_FILE()	N
1970	RELAY_DOMAIN_FILE()		R
1971	VIRTUSER_DOMAIN_FILE()		VirtHost
1972
1973You can also add your own as any 'F'ile class of the form:
1974
1975	F{ClassName}@LDAP
1976	  ^^^^^^^^^
1977will use "ClassName" for the sendmailMTAClassName.
1978
1979An example LDAP LDIF entry would look like:
1980
1981	dn: sendmailMTAClassName=R, dc=sendmail, dc=org
1982	objectClass: sendmailMTA
1983	objectClass: sendmailMTAClass
1984	sendmailMTACluster: Servers
1985	sendmailMTAClassName: R
1986	sendmailMTAClassValue: sendmail.org
1987	sendmailMTAClassValue: example.com
1988	sendmailMTAClassValue: 10.56.23
1989
1990CAUTION: If your LDAP database contains the record above and *ALSO* a host
1991specific record such as:
1992
1993	dn: sendmailMTAClassName=R@etrn.sendmail.org, dc=sendmail, dc=org
1994	objectClass: sendmailMTA
1995	objectClass: sendmailMTAClass
1996	sendmailMTAHost: etrn.sendmail.org
1997	sendmailMTAClassName: R
1998	sendmailMTAClassValue: example.com
1999
2000the result will be similar to the aliases caution above.  When the lookup
2001is done on etrn.sendmail.org, $={R} would contain all of the entries (from
2002both the cluster match and the host match).  In other words, the effective
2003is additive.
2004
2005If you prefer not to use the default LDAP schema for your classes, you can
2006specify the map parameters when using the class command.  For example:
2007
2008	VIRTUSER_DOMAIN_FILE(`@ldap:-k (&(objectClass=virtHosts)(host=*)) -v host')
2009
2010Remember, macros can not be used in a class declaration as the binary does
2011not expand them.
2012
2013
2014+--------------+
2015| LDAP ROUTING |
2016+--------------+
2017
2018FEATURE(`ldap_routing') can be used to implement the IETF Internet Draft
2019LDAP Schema for Intranet Mail Routing
2020(draft-lachman-laser-ldap-mail-routing-01).  This feature enables
2021LDAP-based rerouting of a particular address to either a different host
2022or a different address.  The LDAP lookup is first attempted on the full
2023address (e.g., user@example.com) and then on the domain portion
2024(e.g., @example.com).  Be sure to setup your domain for LDAP routing using
2025LDAPROUTE_DOMAIN(), e.g.:
2026
2027	LDAPROUTE_DOMAIN(`example.com')
2028
2029Additionally, you can specify equivalent domains for LDAP routing using
2030LDAPROUTE_EQUIVALENT() and LDAPROUTE_EQUIVALENT_FILE().  'Equivalent'
2031hostnames are mapped to $M (the masqueraded hostname for the server) before
2032the LDAP query.  For example, if the mail is addressed to
2033user@host1.example.com, normally the LDAP lookup would only be done for
2034'user@host1.example.com' and '@host1.example.com'.   However, if
2035LDAPROUTE_EQUIVALENT(`host1.example.com') is used, the lookups would also be
2036done on 'user@example.com' and '@example.com' after attempting the
2037host1.example.com lookups.
2038
2039By default, the feature will use the schemas as specified in the draft
2040and will not reject addresses not found by the LDAP lookup.  However,
2041this behavior can be changed by giving additional arguments to the FEATURE()
2042command:
2043
2044 FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, <detail>)
2045
2046where <mailHost> is a map definition describing how to lookup an alternative
2047mail host for a particular address; <mailRoutingAddress> is a map definition
2048describing how to lookup an alternative address for a particular address;
2049the <bounce> argument, if present and not the word "passthru", dictates
2050that mail should be bounced if neither a mailHost nor mailRoutingAddress
2051is found; and <detail> indicates what actions to take if the address
2052contains +detail information -- `strip' tries the lookup with the +detail
2053and if no matches are found, strips the +detail and tries the lookup again;
2054`preserve', does the same as `strip' but if a mailRoutingAddress match is
2055found, the +detail information is copied to the new address.
2056
2057The default <mailHost> map definition is:
2058
2059	ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient)
2060				 (mailLocalAddress=%0))
2061
2062The default <mailRoutingAddress> map definition is:
2063
2064	ldap -1 -T<TMPF> -v mailRoutingAddress
2065			 -k (&(objectClass=inetLocalMailRecipient)
2066			      (mailLocalAddress=%0))
2067
2068Note that neither includes the LDAP server hostname (-h server) or base DN
2069(-b o=org,c=COUNTRY), both necessary for LDAP queries.  It is presumed that
2070your .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with
2071these settings.  If this is not the case, the map definitions should be
2072changed as described above.  The "-T<TMPF>" is required in any user
2073specified map definition to catch temporary errors.
2074
2075The following possibilities exist as a result of an LDAP lookup on an
2076address:
2077
2078	mailHost is	mailRoutingAddress is	Results in
2079	-----------	---------------------	----------
2080	set to a	set			mail delivered to
2081	"local" host				mailRoutingAddress
2082
2083	set to a	not set			delivered to
2084	"local" host				original address
2085
2086	set to a	set			mailRoutingAddress
2087	remote host				relayed to mailHost
2088
2089	set to a	not set			original address
2090	remote host				relayed to mailHost
2091
2092	not set		set			mail delivered to
2093						mailRoutingAddress
2094
2095	not set		not set			delivered to
2096						original address *OR*
2097						bounced as unknown user
2098
2099The term "local" host above means the host specified is in class {w}.  If
2100the result would mean sending the mail to a different host, that host is
2101looked up in the mailertable before delivery.
2102
2103Note that the last case depends on whether the third argument is given
2104to the FEATURE() command.  The default is to deliver the message to the
2105original address.
2106
2107The LDAP entries should be set up with an objectClass of
2108inetLocalMailRecipient and the address be listed in a mailLocalAddress
2109attribute.  If present, there must be only one mailHost attribute and it
2110must contain a fully qualified host name as its value.  Similarly, if
2111present, there must be only one mailRoutingAddress attribute and it must
2112contain an RFC 822 compliant address.  Some example LDAP records (in LDIF
2113format):
2114
2115	dn: uid=tom, o=example.com, c=US
2116	objectClass: inetLocalMailRecipient
2117	mailLocalAddress: tom@example.com
2118	mailRoutingAddress: thomas@mailhost.example.com
2119
2120This would deliver mail for tom@example.com to thomas@mailhost.example.com.
2121
2122	dn: uid=dick, o=example.com, c=US
2123	objectClass: inetLocalMailRecipient
2124	mailLocalAddress: dick@example.com
2125	mailHost: eng.example.com
2126
2127This would relay mail for dick@example.com to the same address but redirect
2128the mail to MX records listed for the host eng.example.com (unless the
2129mailertable overrides).
2130
2131	dn: uid=harry, o=example.com, c=US
2132	objectClass: inetLocalMailRecipient
2133	mailLocalAddress: harry@example.com
2134	mailHost: mktmail.example.com
2135	mailRoutingAddress: harry@mkt.example.com
2136
2137This would relay mail for harry@example.com to the MX records listed for
2138the host mktmail.example.com using the new address harry@mkt.example.com
2139when talking to that host.
2140
2141	dn: uid=virtual.example.com, o=example.com, c=US
2142	objectClass: inetLocalMailRecipient
2143	mailLocalAddress: @virtual.example.com
2144	mailHost: server.example.com
2145	mailRoutingAddress: virtual@example.com
2146
2147This would send all mail destined for any username @virtual.example.com to
2148the machine server.example.com's MX servers and deliver to the address
2149virtual@example.com on that relay machine.
2150
2151
2152+---------------------------------+
2153| ANTI-SPAM CONFIGURATION CONTROL |
2154+---------------------------------+
2155
2156The primary anti-spam features available in sendmail are:
2157
2158* Relaying is denied by default.
2159* Better checking on sender information.
2160* Access database.
2161* Header checks.
2162
2163Relaying (transmission of messages from a site outside your host (class
2164{w}) to another site except yours) is denied by default.  Note that this
2165changed in sendmail 8.9; previous versions allowed relaying by default.
2166If you really want to revert to the old behaviour, you will need to use
2167FEATURE(`promiscuous_relay').  You can allow certain domains to relay
2168through your server by adding their domain name or IP address to class
2169{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database
2170(described below).  Note that IPv6 addresses must be prefaced with "IPv6:".
2171The file consists (like any other file based class) of entries listed on
2172separate lines, e.g.,
2173
2174	sendmail.org
2175	128.32
2176	IPv6:2002:c0a8:02c7
2177	IPv6:2002:c0a8:51d2::23f4
2178	host.mydomain.com
2179	[UNIX:localhost]
2180
2181Notice: the last entry allows relaying for connections via a UNIX
2182socket to the MTA/MSP.  This might be necessary if your configuration
2183doesn't allow relaying by other means in that case, e.g., by having
2184localhost.$m in class {R} (make sure $m is not just a top level
2185domain).
2186
2187If you use
2188
2189	FEATURE(`relay_entire_domain')
2190
2191then any host in any of your local domains (that is, class {m})
2192will be relayed (that is, you will accept mail either to or from any
2193host in your domain).
2194
2195You can also allow relaying based on the MX records of the host
2196portion of an incoming recipient address by using
2197
2198	FEATURE(`relay_based_on_MX')
2199
2200For example, if your server receives a recipient of user@domain.com
2201and domain.com lists your server in its MX records, the mail will be
2202accepted for relay to domain.com.  This feature may cause problems
2203if MX lookups for the recipient domain are slow or time out.  In that
2204case, mail will be temporarily rejected.  It is usually better to
2205maintain a list of hosts/domains for which the server acts as relay.
2206Note also that this feature will stop spammers from using your host
2207to relay spam but it will not stop outsiders from using your server
2208as a relay for their site (that is, they set up an MX record pointing
2209to your mail server, and you will relay mail addressed to them
2210without any prior arrangement).  Along the same lines,
2211
2212	FEATURE(`relay_local_from')
2213
2214will allow relaying if the sender specifies a return path (i.e.
2215MAIL FROM: <user@domain>) domain which is a local domain.  This is a
2216dangerous feature as it will allow spammers to spam using your mail
2217server by simply specifying a return address of user@your.domain.com.
2218It should not be used unless absolutely necessary.
2219A slightly better solution is
2220
2221	FEATURE(`relay_mail_from')
2222
2223which allows relaying if the mail sender is listed as RELAY in the
2224access map.  If an optional argument `domain' (this is the literal
2225word `domain', not a placeholder) is given, the domain portion of
2226the mail sender is also checked to allowing relaying.  This option
2227only works together with the tag From: for the LHS of the access
2228map entries (see below: Finer control...).  This feature allows
2229spammers to abuse your mail server by specifying a return address
2230that you enabled in your access file.  This may be harder to figure
2231out for spammers, but it should not be used unless necessary.
2232Instead use SMTP AUTH or STARTTLS to allow relaying for roaming
2233users.
2234
2235
2236If source routing is used in the recipient address (e.g.,
2237RCPT TO: <user%site.com@othersite.com>), sendmail will check
2238user@site.com for relaying if othersite.com is an allowed relay host
2239in either class {R}, class {m} if FEATURE(`relay_entire_domain') is used,
2240or the access database if FEATURE(`access_db') is used.  To prevent
2241the address from being stripped down, use:
2242
2243	FEATURE(`loose_relay_check')
2244
2245If you think you need to use this feature, you probably do not.  This
2246should only be used for sites which have no control over the addresses
2247that they provide a gateway for.  Use this FEATURE with caution as it
2248can allow spammers to relay through your server if not setup properly.
2249
2250NOTICE: It is possible to relay mail through a system which the anti-relay
2251rules do not prevent: the case of a system that does use FEATURE(`nouucp',
2252`nospecial') (system A) and relays local messages to a mail hub (e.g., via
2253LOCAL_RELAY or LUSER_RELAY) (system B).  If system B doesn't use
2254FEATURE(`nouucp') at all, addresses of the form
2255<example.net!user@local.host> would be relayed to <user@example.net>.
2256System A doesn't recognize `!' as an address separator and therefore
2257forwards it to the mail hub which in turns relays it because it came from
2258a trusted local host.  So if a mailserver allows UUCP (bang-format)
2259addresses, all systems from which it allows relaying should do the same
2260or reject those addresses.
2261
2262As of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has
2263an unresolvable domain (i.e., one that DNS, your local name service,
2264or special case rules in ruleset 3 cannot locate).  This also applies
2265to addresses that use domain literals, e.g., <user@[1.2.3.4]>, if the
2266IP address can't be mapped to a host name.  If you want to continue
2267to accept such domains, e.g., because you are inside a firewall that
2268has only a limited view of the Internet host name space (note that you
2269will not be able to return mail to them unless you have some "smart
2270host" forwarder), use
2271
2272	FEATURE(`accept_unresolvable_domains')
2273
2274Alternatively, you can allow specific addresses by adding them to
2275the access map, e.g.,
2276
2277	From:unresolvable.domain	OK
2278	From:[1.2.3.4]			OK
2279	From:[1.2.4]			OK
2280
2281Notice: domains which are temporarily unresolvable are (temporarily)
2282rejected with a 451 reply code.  If those domains should be accepted
2283(which is discouraged) then you can use
2284
2285	LOCAL_CONFIG
2286	C{ResOk}TEMP
2287
2288sendmail will also refuse mail if the MAIL FROM: parameter is not
2289fully qualified (i.e., contains a domain as well as a user).  If you
2290want to continue to accept such senders, use
2291
2292	FEATURE(`accept_unqualified_senders')
2293
2294Setting the DaemonPortOptions modifier 'u' overrides the default behavior,
2295i.e., unqualified addresses are accepted even without this FEATURE.  If
2296this FEATURE is not used, the DaemonPortOptions modifier 'f' can be used
2297to enforce fully qualified domain names.
2298
2299An ``access'' database can be created to accept or reject mail from
2300selected domains.  For example, you may choose to reject all mail
2301originating from known spammers.  To enable such a database, use
2302
2303	FEATURE(`access_db')
2304
2305Notice: the access database is applied to the envelope addresses
2306and the connection information, not to the header.
2307
2308The FEATURE macro can accept as second parameter the key file
2309definition for the database; for example
2310
2311	FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access_map')
2312
2313Notice: If a second argument is specified it must contain the option
2314`-T<TMPF>' as shown above.  The optional third and fourth parameters
2315may be `skip' or `lookupdotdomain'.  The former enables SKIP as
2316value part (see below), the latter is another way to enable the
2317feature of the same name (see above).
2318
2319Remember, since /etc/mail/access is a database, after creating the text
2320file as described below, you must use makemap to create the database
2321map.  For example:
2322
2323	makemap hash /etc/mail/access < /etc/mail/access
2324
2325The table itself uses e-mail addresses, domain names, and network
2326numbers as keys.  Note that IPv6 addresses must be prefaced with "IPv6:".
2327For example,
2328
2329	spammer@aol.com			REJECT
2330	cyberspammer.com		REJECT
2331	TLD				REJECT
2332	192.168.212			REJECT
2333	IPv6:2002:c0a8:02c7		RELAY
2334	IPv6:2002:c0a8:51d2::23f4	REJECT
2335
2336would refuse mail from spammer@aol.com, any user from cyberspammer.com
2337(or any host within the cyberspammer.com domain), any host in the entire
2338top level domain TLD, 192.168.212.* network, and the IPv6 address
23392002:c0a8:51d2::23f4.  It would allow relay for the IPv6 network
23402002:c0a8:02c7::/48.
2341
2342The value part of the map can contain:
2343
2344	OK		Accept mail even if other rules in the running
2345			ruleset would reject it, for example, if the domain
2346			name is unresolvable.  "Accept" does not mean
2347			"relay", but at most acceptance for local
2348			recipients.  That is, OK allows less than RELAY.
2349	RELAY		Accept mail addressed to the indicated domain or
2350			received from the indicated domain for relaying
2351			through your SMTP server.  RELAY also serves as
2352			an implicit OK for the other checks.
2353	REJECT		Reject the sender or recipient with a general
2354			purpose message.
2355	DISCARD		Discard the message completely using the
2356			$#discard mailer.  If it is used in check_compat,
2357			it affects only the designated recipient, not
2358			the whole message as it does in all other cases.
2359			This should only be used if really necessary.
2360	SKIP		This can only be used for host/domain names
2361			and IP addresses/nets.  It will abort the current
2362			search for this entry without accepting or rejecting
2363			it but causing the default action.
2364	### any text	where ### is an RFC 821 compliant error code and
2365			"any text" is a message to return for the command.
2366			The string should be quoted to avoid surprises,
2367			e.g., sendmail may remove spaces otherwise.
2368			This type is deprecated, use one the two
2369			ERROR:  entries below instead.
2370	ERROR:### any text
2371			as above, but useful to mark error messages as such.
2372	ERROR:D.S.N:### any text
2373			where D.S.N is an RFC 1893 compliant error code
2374			and the rest as above.
2375
2376For example:
2377
2378	cyberspammer.com	ERROR:"550 We don't accept mail from spammers"
2379	okay.cyberspammer.com	OK
2380	sendmail.org		RELAY
2381	128.32			RELAY
2382	IPv6:1:2:3:4:5:6:7	RELAY
2383	[127.0.0.3]		OK
2384	[IPv6:1:2:3:4:5:6:7:8]	OK
2385
2386would accept mail from okay.cyberspammer.com, but would reject mail from
2387all other hosts at cyberspammer.com with the indicated message.  It would
2388allow relaying mail from and to any hosts in the sendmail.org domain, and
2389allow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:*
2390network.  The latter two entries are for checks against ${client_name} if
2391the IP address doesn't resolve to a hostname (or is considered as "may be
2392forged").  That is, using square brackets means these are host names,
2393not network numbers.
2394
2395Warning: if you change the RFC 821 compliant error code from the default
2396value of 550, then you should probably also change the RFC 1893 compliant
2397error code to match it.  For example, if you use
2398
2399	user@example.com	ERROR:450 mailbox full
2400
2401the error returned would be "450 5.0.0 mailbox full" which is wrong.
2402Use "ERROR:4.2.2:450 mailbox full" instead.
2403
2404Note, UUCP users may need to add hostname.UUCP to the access database
2405or class {R}.
2406
2407If you also use:
2408
2409	FEATURE(`relay_hosts_only')
2410
2411then the above example will allow relaying for sendmail.org, but not
2412hosts within the sendmail.org domain.  Note that this will also require
2413hosts listed in class {R} to be fully qualified host names.
2414
2415You can also use the access database to block sender addresses based on
2416the username portion of the address.  For example:
2417
2418	FREE.STEALTH.MAILER@	ERROR:550 Spam not accepted
2419
2420Note that you must include the @ after the username to signify that
2421this database entry is for checking only the username portion of the
2422sender address.
2423
2424If you use:
2425
2426	FEATURE(`blacklist_recipients')
2427
2428then you can add entries to the map for local users, hosts in your
2429domains, or addresses in your domain which should not receive mail:
2430
2431	badlocaluser@		ERROR:550 Mailbox disabled for this username
2432	host.mydomain.com	ERROR:550 That host does not accept mail
2433	user@otherhost.mydomain.com	ERROR:550 Mailbox disabled for this recipient
2434
2435This would prevent a recipient of badlocaluser@mydomain.com, any
2436user at host.mydomain.com, and the single address
2437user@otherhost.mydomain.com from receiving mail.  Please note: a
2438local username must be now tagged with an @ (this is consistent
2439with the check of the sender address, and hence it is possible to
2440distinguish between hostnames and usernames).  Enabling this feature
2441will keep you from sending mails to all addresses that have an
2442error message or REJECT as value part in the access map.  Taking
2443the example from above:
2444
2445	spammer@aol.com		REJECT
2446	cyberspammer.com	REJECT
2447
2448Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com.
2449
2450There are several DNS based blacklists, the first of which was
2451the RBL (``Realtime Blackhole List'') run by the MAPS project,
2452see http://mail-abuse.org/.  These are databases of spammers
2453maintained in DNS.  To use such a database, specify
2454
2455	FEATURE(`dnsbl')
2456
2457This will cause sendmail to reject mail from any site in the original
2458Realtime Blackhole List database.  This default DNS blacklist,
2459blackholes.mail-abuse.org, is a service offered by the Mail Abuse
2460Prevention System (MAPS).  As of July 31, 2001, MAPS is a subscription
2461service, so using that network address won't work if you haven't
2462subscribed.  Contact MAPS to subscribe (http://mail-abuse.org/).
2463
2464You can specify an alternative RBL server to check by specifying an
2465argument to the FEATURE.  The default error message is
2466
2467	Rejected: IP-ADDRESS listed at SERVER
2468
2469where IP-ADDRESS and SERVER are replaced by the appropriate
2470information.  A second argument can be used to specify a different
2471text.  By default, temporary lookup failures are ignored and hence
2472cause the connection not to be rejected by the DNS based rejection
2473list.  This behavior can be changed by specifying a third argument,
2474which must be either `t' or a full error message.  For example:
2475
2476	FEATURE(`dnsbl', `dnsbl.example.com', `',
2477	`"451 Temporary lookup failure for " $&{client_addr} " in dnsbl.example.com"')
2478
2479If `t' is used, the error message is:
2480
2481	451 Temporary lookup failure of IP-ADDRESS at SERVER
2482
2483where IP-ADDRESS and SERVER are replaced by the appropriate
2484information.
2485
2486This FEATURE can be included several times to query different
2487DNS based rejection lists, e.g., the dial-up user list (see
2488http://mail-abuse.org/dul/).
2489
2490Notice: to avoid checking your own local domains against those
2491blacklists, use the access_db feature and add:
2492
2493	Connect:10.1		OK
2494	Connect:127.0.0.1	RELAY
2495
2496to the access map, where 10.1 is your local network.  You may
2497want to use "RELAY" instead of "OK" to allow also relaying
2498instead of just disabling the DNS lookups in the backlists.
2499
2500
2501The features described above make use of the check_relay, check_mail,
2502and check_rcpt rulesets.  Note that check_relay checks the SMTP
2503client hostname and IP address when the connection is made to your
2504server.  It does not check if a mail message is being relayed to
2505another server.  That check is done in check_rcpt.  If you wish to
2506include your own checks, you can put your checks in the rulesets
2507Local_check_relay, Local_check_mail, and Local_check_rcpt.  For
2508example if you wanted to block senders with all numeric usernames
2509(i.e. 2312343@bigisp.com), you would use Local_check_mail and the
2510regex map:
2511
2512	LOCAL_CONFIG
2513	Kallnumbers regex -a@MATCH ^[0-9]+$
2514
2515	LOCAL_RULESETS
2516	SLocal_check_mail
2517	# check address against various regex checks
2518	R$*				$: $>Parse0 $>3 $1
2519	R$+ < @ bigisp.com. > $*	$: $(allnumbers $1 $)
2520	R@MATCH				$#error $: 553 Header Error
2521
2522These rules are called with the original arguments of the corresponding
2523check_* ruleset.  If the local ruleset returns $#OK, no further checking
2524is done by the features described above and the mail is accepted.  If the
2525local ruleset resolves to a mailer (such as $#error or $#discard), the
2526appropriate action is taken.  Otherwise, the results of the local
2527rewriting are ignored.
2528
2529Finer control by using tags for the LHS of the access map
2530---------------------------------------------------------
2531
2532Read this section only if the options listed so far are not sufficient
2533for your purposes.  There is now the option to tag entries in the
2534access map according to their type.  Three tags are available:
2535
2536	Connect:	connection information (${client_addr}, ${client_name})
2537	From:		envelope sender
2538	To:		envelope recipient
2539
2540If the required item is looked up in a map, it will be tried first
2541with the corresponding tag in front, then (as fallback to enable
2542backward compatibility) without any tag, unless the specific feature
2543requires a tag.  For example,
2544
2545	From:spammer@some.dom	REJECT
2546	To:friend.domain	RELAY
2547	Connect:friend.domain	OK
2548	Connect:from.domain	RELAY
2549	From:good@another.dom	OK
2550	From:another.dom	REJECT
2551
2552This would deny mails from spammer@some.dom but you could still
2553send mail to that address even if FEATURE(`blacklist_recipients')
2554is enabled.  Your system will allow relaying to friend.domain, but
2555not from it (unless enabled by other means).  Connections from that
2556domain will be allowed even if it ends up in one of the DNS based
2557rejection lists.  Relaying is enabled from from.domain but not to
2558it (since relaying is based on the connection information for
2559outgoing relaying, the tag Connect: must be used; for incoming
2560relaying, which is based on the recipient address, To: must be
2561used).  The last two entries allow mails from good@another.dom but
2562reject mail from all other addresses with another.dom as domain
2563part.
2564
2565Delay all checks
2566----------------
2567
2568By using FEATURE(`delay_checks') the rulesets check_mail and check_relay
2569will not be called when a client connects or issues a MAIL command,
2570respectively.  Instead, those rulesets will be called by the check_rcpt
2571ruleset; they will be skipped if a sender has been authenticated using
2572a "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH().
2573If check_mail returns an error then the RCPT TO command will be rejected
2574with that error.  If it returns some other result starting with $# then
2575check_relay will be skipped.  If the sender address (or a part of it) is
2576listed in the access map and it has a RHS of OK or RELAY, then check_relay
2577will be skipped.  This has an interesting side effect: if your domain is
2578my.domain and you have
2579
2580	my.domain	RELAY
2581
2582in the access map, then all e-mail with a sender address of
2583<user@my.domain> gets through, even if check_relay would reject it
2584(e.g., based on the hostname or IP address).  This allows spammers
2585to get around DNS based blacklist by faking the sender address.  To
2586avoid this problem you have to use tagged entries:
2587
2588	To:my.domain		RELAY
2589	Connect:my.domain	RELAY
2590
2591if you need those entries at all (class {R} may take care of them).
2592
2593FEATURE(`delay_checks') can take an optional argument:
2594
2595	FEATURE(`delay_checks', `friend')
2596		 enables spamfriend test
2597	FEATURE(`delay_checks', `hater')
2598		 enables spamhater test
2599
2600If such an argument is given, the recipient will be looked up in the
2601access map (using the tag Spam:).  If the argument is `friend', then
2602the default behavior is to apply the other rulesets and make a SPAM
2603friend the exception.  The rulesets check_mail and check_relay will be
2604skipped only if the recipient address is found and has RHS FRIEND.  If
2605the argument is `hater', then the default behavior is to skip the rulesets
2606check_mail and check_relay and make a SPAM hater the exception.  The
2607other two rulesets will be applied only if the recipient address is
2608found and has RHS HATER.
2609
2610This allows for simple exceptions from the tests, e.g., by activating
2611the friend option and having
2612
2613	Spam:abuse@	FRIEND
2614
2615in the access map, mail to abuse@localdomain will get through (where
2616"localdomain" is any domain in class {w}).  It is also possible to
2617specify a full address or an address with +detail:
2618
2619	Spam:abuse@my.domain	FRIEND
2620	Spam:me+abuse@		FRIEND
2621	Spam:spam.domain	FRIEND
2622
2623Note: The required tag has been changed in 8.12 from To: to Spam:.
2624This change is incompatible to previous versions.  However, you can
2625(for now) simply add the new entries to the access map, the old
2626ones will be ignored.  As soon as you removed the old entries from
2627the access map, specify a third parameter (`n') to this feature and
2628the backward compatibility rules will not be in the generated .cf
2629file.
2630
2631Header Checks
2632-------------
2633
2634You can also reject mail on the basis of the contents of headers.
2635This is done by adding a ruleset call to the 'H' header definition command
2636in sendmail.cf.  For example, this can be used to check the validity of
2637a Message-ID: header:
2638
2639	LOCAL_CONFIG
2640	HMessage-Id: $>CheckMessageId
2641
2642	LOCAL_RULESETS
2643	SCheckMessageId
2644	R< $+ @ $+ >		$@ OK
2645	R$*			$#error $: 553 Header Error
2646
2647The alternative format:
2648
2649	HSubject: $>+CheckSubject
2650
2651that is, $>+ instead of $>, gives the full Subject: header including
2652comments to the ruleset (comments in parentheses () are stripped
2653by default).
2654
2655A default ruleset for headers which don't have a specific ruleset
2656defined for them can be given by:
2657
2658	H*: $>CheckHdr
2659
2660Notice:
26611. All rules act on tokens as explained in doc/op/op.{me,ps,txt}.
2662That may cause problems with simple header checks due to the
2663tokenization.  It might be simpler to use a regex map and apply it
2664to $&{currHeader}.
26652. There are no default rulesets coming with this distribution of
2666sendmail.  You can either write your own or you can search the
2667WWW for examples, e.g.,  http://www.digitalanswers.org/check_local/
2668
2669After all of the headers are read, the check_eoh ruleset will be called for
2670any final header-related checks.  The ruleset is called with the number of
2671headers and the size of all of the headers in bytes separated by $|.  One
2672example usage is to reject messages which do not have a Message-Id:
2673header.  However, the Message-Id: header is *NOT* a required header and is
2674not a guaranteed spam indicator.  This ruleset is an example and should
2675probably not be used in production.
2676
2677	LOCAL_CONFIG
2678	Kstorage macro
2679	HMessage-Id: $>CheckMessageId
2680
2681	LOCAL_RULESETS
2682	SCheckMessageId
2683	# Record the presence of the header
2684	R$*			$: $(storage {MessageIdCheck} $@ OK $) $1
2685	R< $+ @ $+ >		$@ OK
2686	R$*			$#error $: 553 Header Error
2687
2688	Scheck_eoh
2689	# Check the macro
2690	R$*			$: < $&{MessageIdCheck} >
2691	# Clear the macro for the next message
2692	R$*			$: $(storage {MessageIdCheck} $) $1
2693	# Has a Message-Id: header
2694	R< $+ >			$@ OK
2695	# Allow missing Message-Id: from local mail
2696	R$*			$: < $&{client_name} >
2697	R< >			$@ OK
2698	R< $=w >		$@ OK
2699	# Otherwise, reject the mail
2700	R$*			$#error $: 553 Header Error
2701
2702+----------+
2703| STARTTLS |
2704+----------+
2705
2706In this text, cert will be used as an abreviation for X.509 certificate,
2707DN (CN) is the distinguished (common) name of a cert, and CA is a
2708certification authority, which signs (issues) certs.
2709
2710For STARTTLS to be offered by sendmail you need to set at least
2711this variables (the file names and paths are just examples):
2712
2713	define(`confCACERT_PATH', `/etc/mail/certs/')
2714	define(`confCACERT', `/etc/mail/certs/CA.cert.pem')
2715	define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem')
2716	define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem')
2717
2718On systems which do not have the compile flag HASURANDOM set (see
2719sendmail/README) you also must set confRAND_FILE.
2720
2721See doc/op/op.{me,ps,txt} for more information about these options,
2722especially the sections ``Certificates for STARTTLS'' and ``PRNG for
2723STARTTLS''.
2724
2725Macros related to STARTTLS are:
2726
2727${cert_issuer} holds the DN of the CA (the cert issuer).
2728${cert_subject} holds the DN of the cert (called the cert subject).
2729${cn_issuer} holds the CN of the CA (the cert issuer).
2730${cn_subject} holds the CN of the cert (called the cert subject).
2731${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1,
2732	TLSv1/SSLv3, SSLv3, SSLv2.
2733${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA,
2734	EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA.
2735${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm
2736	used for the connection.
2737${verify} holds the result of the verification of the presented cert.
2738	Possible values are:
2739	OK	 verification succeeded.
2740	NO	 no cert presented.
2741	NOT	 no cert requested.
2742	FAIL	 cert presented but could not be verified,
2743		 e.g., the cert of the signing CA is missing.
2744	NONE	 STARTTLS has not been performed.
2745	TEMP	 temporary error occurred.
2746	PROTOCOL protocol error occurred (SMTP level).
2747	SOFTWARE STARTTLS handshake failed.
2748${server_name} the name of the server of the current outgoing SMTP
2749	connection.
2750${server_addr} the address of the server of the current outgoing SMTP
2751	connection.
2752
2753Relaying
2754--------
2755
2756
2757SMTP STARTTLS can allow relaying for remote SMTP clients which have
2758successfully authenticated themselves.  This is done in the ruleset
2759RelayAuth.  If the verification of the cert failed (${verify} != OK),
2760relaying is subject to the usual rules.  Otherwise the DN of the issuer is
2761looked up in the access map using the tag CERTISSUER.  If the resulting
2762value is RELAY, relaying is allowed.  If it is SUBJECT, the DN of the cert
2763subject is looked up next in the access map using the tag CERTSUBJECT.  If
2764the value is RELAY, relaying is allowed.
2765
2766${cert_issuer} and ${cert_subject} can be optionally modified by regular
2767expressions defined in the m4 variables _CERT_REGEX_ISSUER_ and
2768_CERT_REGEX_SUBJECT_, respectively.  To avoid problems with those macros in
2769rulesets and map lookups, they are modified as follows: each non-printable
2770character and the characters '<', '>', '(', ')', '"', '+', ' ' are replaced
2771by their HEX value with a leading '+'.  For example:
2772
2773/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email=
2774darth+cert@endmail.org
2775
2776is encoded as:
2777
2778/C=US/ST=California/O=endmail.org/OU=private/CN=
2779Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
2780
2781(line breaks have been inserted for readability).
2782
2783The  macros  which are subject to this encoding are ${cert_subject},
2784${cert_issuer},  ${cn_subject},  and ${cn_issuer}.
2785
2786Examples:
2787
2788To allow relaying for everyone who can present a cert signed by
2789
2790/C=US/ST=California/O=endmail.org/OU=private/CN=
2791Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
2792
2793simply use:
2794
2795CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN=
2796Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org	RELAY
2797
2798To allow relaying only for a subset of machines that have a cert signed by
2799
2800/C=US/ST=California/O=endmail.org/OU=private/CN=
2801Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
2802
2803use:
2804
2805CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN=
2806Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org	SUBJECT
2807CertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN=
2808DeathStar/Email=deathstar@endmail.org		RELAY
2809
2810Note: line breaks have been inserted after "CN=" for readability,
2811each tagged entry must be one (long) line in the access map.
2812
2813Of course it is also possible to write a simple ruleset that allows
2814relaying for everyone who can present a cert that can be verified, e.g.,
2815
2816LOCAL_RULESETS
2817SLocal_check_rcpt
2818R$*	$: $&{verify}
2819ROK	$# OK
2820
2821Allowing Connections
2822--------------------
2823
2824The rulesets tls_server, tls_client, and tls_rcpt are used to decide whether
2825an SMTP connection is accepted (or should continue).
2826
2827tls_server is called when sendmail acts as client after a STARTTLS command
2828(should) have been issued.  The parameter is the value of ${verify}.
2829
2830tls_client is called when sendmail acts as server, after a STARTTLS command
2831has been issued, and from check_mail.  The parameter is the value of
2832${verify} and STARTTLS or MAIL, respectively.
2833
2834Both rulesets behave the same.  If no access map is in use, the connection
2835will be accepted unless ${verify} is SOFTWARE, in which case the connection
2836is always aborted.  For tls_server/tls_client, ${client_name}/${server_name}
2837is looked up in the access map using the tag TLS_Srv/TLS_Clt, which is done
2838with the ruleset LookUpDomain.  If no entry is found, ${client_addr}
2839(${server_addr}) is looked up in the access map (same tag, ruleset
2840LookUpAddr).  If this doesn't result in an entry either, just the tag is
2841looked up in the access map (included the trailing colon).  Notice:
2842requiring that e-mail is sent to a server only encrypted, e.g., via
2843
2844TLS_Srv:secure.domain	ENCR:112
2845
2846doesn't necessarily mean that e-mail sent to that domain is encrypted.
2847If the domain has multiple MX servers, e.g.,
2848
2849secure.domain.	IN MX 10	mail.secure.domain.
2850secure.domain.	IN MX 50	mail.other.domain.
2851
2852then mail to user@secure.domain may go unencrypted to mail.other.domain.
2853tls_rcpt can be used to address this problem.
2854
2855tls_rcpt is called before a RCPT TO: command is sent.  The parameter is the
2856current recipient.  This ruleset is only defined if FEATURE(`access_db')
2857is selected.  A recipient address user@domain is looked up in the access
2858map in four formats: TLS_Rcpt:user@domain, TLS_Rcpt:user@, TLS_Rcpt:domain,
2859and TLS_Rcpt:; the first match is taken.
2860
2861The result of the lookups is then used to call the ruleset TLS_connection,
2862which checks the requirement specified by the RHS in the access map against
2863the actual parameters of the current TLS connection, esp. ${verify} and
2864${cipher_bits}.  Legal RHSs in the access map are:
2865
2866VERIFY		verification must have succeeded
2867VERIFY:bits	verification must have succeeded and ${cipher_bits} must
2868		be greater than or equal bits.
2869ENCR:bits	${cipher_bits} must be greater than or equal bits.
2870
2871The RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary
2872or permanent error.  The default is a temporary error code (403 4.7.0)
2873unless the macro TLS_PERM_ERR is set during generation of the .cf file.
2874
2875If a certain level of encryption is required, then it might also be
2876possible that this level is provided by the security layer from a SASL
2877algorithm, e.g., DIGEST-MD5.
2878
2879Furthermore, there can be a list of extensions added.  Such a list
2880starts with '+' and the items are separated by '++'.  Allowed
2881extensions are:
2882
2883CN:name		name must match ${cn_subject}
2884CN		${server_name} must match ${cn_subject}
2885CS:name		name must match ${cert_subject}
2886CI:name		name must match ${cert_issuer}
2887
2888Example: e-mail sent to secure.example.com should only use an encrypted
2889connection.  E-mail received from hosts within the laptop.example.com domain
2890should only be accepted if they have been authenticated.  The host which
2891receives e-mail for darth@endmail.org must present a cert that uses the
2892CN smtp.endmail.org.
2893
2894TLS_Srv:secure.example.com      ENCR:112
2895TLS_Clt:laptop.example.com      PERM+VERIFY:112
2896TLS_Rcpt:darth@endmail.org	ENCR:112+CN:smtp.endmail.org
2897
2898
2899Disabling STARTTLS And Setting SMTP Server Features
2900---------------------------------------------------
2901
2902By default STARTTLS is used whenever possible.  However, there are
2903some broken MTAs that don't properly implement STARTTLS.  To be able
2904to send to (or receive from) those MTAs, the ruleset try_tls
2905(srv_features) can be used that work together with the access map.
2906Entries for the access map must be tagged with Try_TLS (Srv_Features)
2907and refer to the hostname or IP address of the connecting system.
2908A default case can be specified by using just the tag.  For example,
2909the following entries in the access map:
2910
2911	Try_TLS:broken.server	NO
2912	Srv_Features:my.domain	v
2913	Srv_Features:		V
2914
2915will turn off STARTTLS when sending to broken.server (or any host
2916in that domain), and request a client certificate during the TLS
2917handshake only for hosts in my.domain.  The valid entries on the RHS
2918for Srv_Features are listed in the Sendmail Installation and
2919Operations Guide.
2920
2921
2922Received: Header
2923----------------
2924
2925The Received: header reveals whether STARTTLS has been used.  It contains an
2926extra line:
2927
2928(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})
2929
2930
2931+---------------------+
2932| SMTP AUTHENTICATION |
2933+---------------------+
2934
2935The macros ${auth_authen}, ${auth_author}, and ${auth_type} can be
2936used in anti-relay rulesets to allow relaying for those users that
2937authenticated themselves.  A very simple example is:
2938
2939SLocal_check_rcpt
2940R$*		$: $&{auth_type}
2941R$+		$# OK
2942
2943which checks whether a user has successfully authenticated using
2944any available mechanism.  Depending on the setup of the CYRUS SASL
2945library, more sophisticated rulesets might be required, e.g.,
2946
2947SLocal_check_rcpt
2948R$*		$: $&{auth_type} $| $&{auth_authen}
2949RDIGEST-MD5 $| $+@$=w	$# OK
2950
2951to allow relaying for users that authenticated using DIGEST-MD5
2952and have an identity in the local domains.
2953
2954The ruleset trust_auth is used to determine whether a given AUTH=
2955parameter (that is passed to this ruleset) should be trusted.  This
2956ruleset may make use of the other ${auth_*} macros.  Only if the
2957ruleset resolves to the error mailer, the AUTH= parameter is not
2958trusted.  A user supplied ruleset Local_trust_auth can be written
2959to modify the default behavior, which only trust the AUTH=
2960parameter if it is identical to the authenticated user.
2961
2962Per default, relaying is allowed for any user who authenticated
2963via a "trusted" mechanism, i.e., one that is defined via
2964TRUST_AUTH_MECH(`list of mechanisms')
2965For example:
2966TRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5')
2967
2968If the selected mechanism provides a security layer the number of
2969bits used for the key of the symmetric cipher is stored in the
2970macro ${auth_ssf}.
2971
2972If sendmail acts as client, it needs some information how to
2973authenticate against another MTA.  This information can be provided
2974by the ruleset authinfo or by the option DefaultAuthInfo.  The
2975authinfo ruleset looks up {server_name} using the tag AuthInfo: in
2976the access map.  If no entry is found, {server_addr} is looked up
2977in the same way and finally just the tag AuthInfo: to provide
2978default values.
2979
2980Notice: the default configuration file causes the option DefaultAuthInfo
2981to fail since the ruleset authinfo is in the .cf file. If you really
2982want to use DefaultAuthInfo (it is deprecated) then you have to
2983remove the ruleset.
2984
2985The RHS for an AuthInfo: entry in the access map should consists of a
2986list of tokens, each of which has the form: "TDstring" (including
2987the quotes).  T is a tag which describes the item, D is a delimiter,
2988either ':' for simple text or '=' for a base64 encoded string.
2989Valid values for the tag are:
2990
2991	U	user (authorization) id
2992	I	authentication id
2993	P	password
2994	R	realm
2995	M	list of mechanisms delimited by spaces
2996
2997Example entries are:
2998
2999AuthInfo:other.dom "U:user" "I:user" "P:secret" "R:other.dom" "M:DIGEST-MD5"
3000AuthInfo:more.dom "U:user" "P=c2VjcmV0"
3001
3002User or authentication id must exist as well as the password.  All
3003other entries have default values.  If one of user or authentication
3004id is missing, the existing value is used for the missing item.
3005If "R:" is not specified, realm defaults to $j.  The list of mechanisms
3006defaults to those specified by AuthMechanisms.
3007
3008Since this map contains sensitive information, either the access
3009map must be unreadable by everyone but root (or the trusted user)
3010or FEATURE(`authinfo') must be used which provides a separate map.
3011Notice: It is not checked whether the map is actually
3012group/world-unreadable, this is left to the user.
3013
3014+--------------------------------+
3015| ADDING NEW MAILERS OR RULESETS |
3016+--------------------------------+
3017
3018Sometimes you may need to add entirely new mailers or rulesets.  They
3019should be introduced with the constructs MAILER_DEFINITIONS and
3020LOCAL_RULESETS respectively.  For example:
3021
3022	MAILER_DEFINITIONS
3023	Mmymailer, ...
3024	...
3025
3026	LOCAL_RULESETS
3027	Smyruleset
3028	...
3029
3030Local additions for the rulesets srv_features, try_tls, tls_rcpt,
3031tls_client, and tls_server can be made using LOCAL_SRV_FEATURES,
3032LOCAL_TRY_TLS, LOCAL_TLS_RCPT, LOCAL_TLS_CLIENT, and LOCAL_TLS_SERVER,
3033respectively.  For example, to add a local ruleset that decides
3034whether to try STARTTLS in a sendmail client, use:
3035
3036	LOCAL_TRY_TLS
3037	R...
3038
3039Note: you don't need to add a name for the ruleset, it is implicitly
3040defined by using the appropriate macro.
3041
3042
3043+-------------------------+
3044| ADDING NEW MAIL FILTERS |
3045+-------------------------+
3046
3047Sendmail supports mail filters to filter incoming SMTP messages according
3048to the "Sendmail Mail Filter API" documentation.  These filters can be
3049configured in your mc file using the two commands:
3050
3051	MAIL_FILTER(`name', `equates')
3052	INPUT_MAIL_FILTER(`name', `equates')
3053
3054The first command, MAIL_FILTER(), simply defines a filter with the given
3055name and equates.  For example:
3056
3057	MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
3058
3059This creates the equivalent sendmail.cf entry:
3060
3061	Xarchive, S=local:/var/run/archivesock, F=R
3062
3063The INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER
3064but also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name
3065of the filter such that the filter will actually be called by sendmail.
3066
3067For example, the two commands:
3068
3069	INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
3070	INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T')
3071
3072are equivalent to the three commands:
3073
3074	MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
3075	MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T')
3076	define(`confINPUT_MAIL_FILTERS', `archive, spamcheck')
3077
3078In general, INPUT_MAIL_FILTER() should be used unless you need to define
3079more filters than you want to use for `confINPUT_MAIL_FILTERS'.
3080
3081Note that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER()
3082commands will clear the list created by the prior INPUT_MAIL_FILTER()
3083commands.
3084
3085
3086+-------------------------+
3087| QUEUE GROUP DEFINITIONS |
3088+-------------------------+
3089
3090In addition to the queue directory (which is the default queue group
3091called "mqueue"), sendmail can deal with multiple queue groups, which
3092are collections of queue directories with the same behaviour.  Queue
3093groups can be defined using the command:
3094
3095	QUEUE_GROUP(`name', `equates')
3096
3097For details about queue groups, please see doc/op/op.{me,ps,txt}.
3098
3099+-------------------------------+
3100| NON-SMTP BASED CONFIGURATIONS |
3101+-------------------------------+
3102
3103These configuration files are designed primarily for use by
3104SMTP-based sites.  They may not be well tuned for UUCP-only or
3105UUCP-primarily nodes (the latter is defined as a small local net
3106connected to the rest of the world via UUCP).  However, there is
3107one hook to handle some special cases.
3108
3109You can define a ``smart host'' that understands a richer address syntax
3110using:
3111
3112	define(`SMART_HOST', `mailer:hostname')
3113
3114In this case, the ``mailer:'' defaults to "relay".  Any messages that
3115can't be handled using the usual UUCP rules are passed to this host.
3116
3117If you are on a local SMTP-based net that connects to the outside
3118world via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules.
3119For example:
3120
3121	define(`SMART_HOST', `uucp-new:uunet')
3122	LOCAL_NET_CONFIG
3123	R$* < @ $* .$m. > $*	$#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
3124
3125This will cause all names that end in your domain name ($m) to be sent
3126via SMTP; anything else will be sent via uucp-new (smart UUCP) to uunet.
3127If you have FEATURE(`nocanonify'), you may need to omit the dots after
3128the $m.  If you are running a local DNS inside your domain which is
3129not otherwise connected to the outside world, you probably want to
3130use:
3131
3132	define(`SMART_HOST', `smtp:fire.wall.com')
3133	LOCAL_NET_CONFIG
3134	R$* < @ $* . > $*	$#smtp $@ $2. $: $1 < @ $2. > $3
3135
3136That is, send directly only to things you found in your DNS lookup;
3137anything else goes through SMART_HOST.
3138
3139You may need to turn off the anti-spam rules in order to accept
3140UUCP mail with FEATURE(`promiscuous_relay') and
3141FEATURE(`accept_unresolvable_domains').
3142
3143
3144+-----------+
3145| WHO AM I? |
3146+-----------+
3147
3148Normally, the $j macro is automatically defined to be your fully
3149qualified domain name (FQDN).  Sendmail does this by getting your
3150host name using gethostname and then calling gethostbyname on the
3151result.  For example, in some environments gethostname returns
3152only the root of the host name (such as "foo"); gethostbyname is
3153supposed to return the FQDN ("foo.bar.com").  In some (fairly rare)
3154cases, gethostbyname may fail to return the FQDN.  In this case
3155you MUST define confDOMAIN_NAME to be your fully qualified domain
3156name.  This is usually done using:
3157
3158	Dmbar.com
3159	define(`confDOMAIN_NAME', `$w.$m')dnl
3160
3161
3162+-----------------------------------+
3163| ACCEPTING MAIL FOR MULTIPLE NAMES |
3164+-----------------------------------+
3165
3166If your host is known by several different names, you need to augment
3167class {w}.  This is a list of names by which your host is known, and
3168anything sent to an address using a host name in this list will be
3169treated as local mail.  You can do this in two ways:  either create the
3170file /etc/mail/local-host-names containing a list of your aliases (one per
3171line), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add
3172``LOCAL_DOMAIN(`alias.host.name')''.  Be sure you use the fully-qualified
3173name of the host, rather than a short name.
3174
3175If you want to have different address in different domains, take
3176a look at the virtusertable feature, which is also explained at
3177http://www.sendmail.org/virtual-hosting.html
3178
3179
3180+--------------------+
3181| USING MAILERTABLES |
3182+--------------------+
3183
3184To use FEATURE(`mailertable'), you will have to create an external
3185database containing the routing information for various domains.
3186For example, a mailertable file in text format might be:
3187
3188	.my.domain		xnet:%1.my.domain
3189	uuhost1.my.domain	uucp-new:uuhost1
3190	.bitnet			smtp:relay.bit.net
3191
3192This should normally be stored in /etc/mail/mailertable.  The actual
3193database version of the mailertable is built using:
3194
3195	makemap hash /etc/mail/mailertable < /etc/mail/mailertable
3196
3197The semantics are simple.  Any LHS entry that does not begin with
3198a dot matches the full host name indicated.  LHS entries beginning
3199with a dot match anything ending with that domain name (including
3200the leading dot) -- that is, they can be thought of as having a
3201leading ".+" regular expression pattern for a non-empty sequence of
3202characters.  Matching is done in order of most-to-least qualified
3203-- for example, even though ".my.domain" is listed first in the
3204above example, an entry of "uuhost1.my.domain" will match the second
3205entry since it is more explicit.  Note: e-mail to "user@my.domain"
3206does not match any entry in the above table.  You need to have
3207something like:
3208
3209	my.domain		esmtp:host.my.domain
3210
3211The RHS should always be a "mailer:host" pair.  The mailer is the
3212configuration name of a mailer (that is, an M line in the
3213sendmail.cf file).  The "host" will be the hostname passed to
3214that mailer.  In domain-based matches (that is, those with leading
3215dots) the "%1" may be used to interpolate the wildcarded part of
3216the host name.  For example, the first line above sends everything
3217addressed to "anything.my.domain" to that same host name, but using
3218the (presumably experimental) xnet mailer.
3219
3220In some cases you may want to temporarily turn off MX records,
3221particularly on gateways.  For example, you may want to MX
3222everything in a domain to one machine that then forwards it
3223directly.  To do this, you might use the DNS configuration:
3224
3225	*.domain.	IN	MX	0	relay.machine
3226
3227and on relay.machine use the mailertable:
3228
3229	.domain		smtp:[gateway.domain]
3230
3231The [square brackets] turn off MX records for this host only.
3232If you didn't do this, the mailertable would use the MX record
3233again, which would give you an MX loop.
3234
3235
3236+--------------------------------+
3237| USING USERDB TO MAP FULL NAMES |
3238+--------------------------------+
3239
3240The user database was not originally intended for mapping full names
3241to login names (e.g., Eric.Allman => eric), but some people are using
3242it that way.  (it is recommended that you set up aliases for this
3243purpose instead -- since you can specify multiple alias files, this
3244is fairly easy.)  The intent was to locate the default maildrop at
3245a site, but allow you to override this by sending to a specific host.
3246
3247If you decide to set up the user database in this fashion, it is
3248imperative that you not use FEATURE(`stickyhost') -- otherwise,
3249e-mail sent to Full.Name@local.host.name will be rejected.
3250
3251To build the internal form of the user database, use:
3252
3253	makemap btree /etc/mail/userdb < /etc/mail/userdb.txt
3254
3255As a general rule, it is an extremely bad idea to using full names
3256as e-mail addresses, since they are not in any sense unique.  For
3257example, the UNIX software-development community has at least two
3258well-known Peter Deutsches, and at one time Bell Labs had two
3259Stephen R. Bournes with offices along the same hallway.  Which one
3260will be forced to suffer the indignity of being Stephen_R_Bourne_2?
3261The less famous of the two, or the one that was hired later?
3262
3263Finger should handle full names (and be fuzzy).  Mail should use
3264handles, and not be fuzzy.
3265
3266
3267+--------------------------------+
3268| MISCELLANEOUS SPECIAL FEATURES |
3269+--------------------------------+
3270
3271Plussed users
3272	Sometimes it is convenient to merge configuration on a
3273	centralized mail machine, for example, to forward all
3274	root mail to a mail server.  In this case it might be
3275	useful to be able to treat the root addresses as a class
3276	of addresses with subtle differences.  You can do this
3277	using plussed users.  For example, a client might include
3278	the alias:
3279
3280		root:  root+client1@server
3281
3282	On the server, this will match an alias for "root+client1".
3283	If that is not found, the alias "root+*" will be tried,
3284	then "root".
3285
3286
3287+----------------+
3288| SECURITY NOTES |
3289+----------------+
3290
3291A lot of sendmail security comes down to you.  Sendmail 8 is much
3292more careful about checking for security problems than previous
3293versions, but there are some things that you still need to watch
3294for.  In particular:
3295
3296* Make sure the aliases file is not writable except by trusted
3297  system personnel.  This includes both the text and database
3298  version.
3299
3300* Make sure that other files that sendmail reads, such as the
3301  mailertable, are only writable by trusted system personnel.
3302
3303* The queue directory should not be world writable PARTICULARLY
3304  if your system allows "file giveaways" (that is, if a non-root
3305  user can chown any file they own to any other user).
3306
3307* If your system allows file giveaways, DO NOT create a publically
3308  writable directory for forward files.  This will allow anyone
3309  to steal anyone else's e-mail.  Instead, create a script that
3310  copies the .forward file from users' home directories once a
3311  night (if you want the non-NFS-mounted forward directory).
3312
3313* If your system allows file giveaways, you'll find that
3314  sendmail is much less trusting of :include: files -- in
3315  particular, you'll have to have /SENDMAIL/ANY/SHELL/ in
3316  /etc/shells before they will be trusted (that is, before
3317  files and programs listed in them will be honored).
3318
3319In general, file giveaways are a mistake -- if you can turn them
3320off, do so.
3321
3322
3323+--------------------------------+
3324| TWEAKING CONFIGURATION OPTIONS |
3325+--------------------------------+
3326
3327There are a large number of configuration options that don't normally
3328need to be changed.  However, if you feel you need to tweak them, you
3329can define the following M4 variables.  This list is shown in four
3330columns:  the name you define, the default value for that definition,
3331the option or macro that is affected (either Ox for an option or Dx
3332for a macro), and a brief description.  Greater detail of the semantics
3333can be found in the Installation and Operations Guide.
3334
3335Some options are likely to be deprecated in future versions -- that is,
3336the option is only included to provide back-compatibility.  These are
3337marked with "*".
3338
3339Remember that these options are M4 variables, and hence may need to
3340be quoted.  In particular, arguments with commas will usually have to
3341be ``double quoted, like this phrase'' to avoid having the comma
3342confuse things.  This is common for alias file definitions and for
3343the read timeout.
3344
3345M4 Variable Name	Configuration	Description & [Default]
3346================	=============	=======================
3347confMAILER_NAME		$n macro	[MAILER-DAEMON] The sender name used
3348					for internally generated outgoing
3349					messages.
3350confDOMAIN_NAME		$j macro	If defined, sets $j.  This should
3351					only be done if your system cannot
3352					determine your local domain name,
3353					and then it should be set to
3354					$w.Foo.COM, where Foo.COM is your
3355					domain name.
3356confCF_VERSION		$Z macro	If defined, this is appended to the
3357					configuration version name.
3358confLDAP_CLUSTER	${sendmailMTACluster} macro
3359					If defined, this is the LDAP
3360					cluster to use for LDAP searches
3361					as described above in ``USING LDAP
3362					FOR ALIASES, MAPS, AND CLASSES''.
3363confFROM_HEADER		From:		[$?x$x <$g>$|$g$.] The format of an
3364					internally generated From: address.
3365confRECEIVED_HEADER	Received:
3366		[$?sfrom $s $.$?_($?s$|from $.$_)
3367			$.$?{auth_type}(authenticated)
3368			$.by $j ($v/$Z)$?r with $r$. id $i$?u
3369			for $u; $|;
3370			$.$b]
3371					The format of the Received: header
3372					in messages passed through this host.
3373					It is unwise to try to change this.
3374confCW_FILE		Fw class	[/etc/mail/local-host-names] Name
3375					of file used to get the local
3376					additions to class {w} (local host
3377					names).
3378confCT_FILE		Ft class	[/etc/mail/trusted-users] Name of
3379					file used to get the local additions
3380					to class {t} (trusted users).
3381confCR_FILE		FR class	[/etc/mail/relay-domains] Name of
3382					file used to get the local additions
3383					to class {R} (hosts allowed to relay).
3384confTRUSTED_USERS	Ct class	[no default] Names of users to add to
3385					the list of trusted users.  This list
3386					always includes root, uucp, and daemon.
3387					See also FEATURE(`use_ct_file').
3388confTRUSTED_USER	TrustedUser	[no default] Trusted user for file
3389					ownership and starting the daemon.
3390					Not to be confused with
3391					confTRUSTED_USERS (see above).
3392confSMTP_MAILER		-		[esmtp] The mailer name used when
3393					SMTP connectivity is required.
3394					One of "smtp", "smtp8",
3395					"esmtp", or "dsmtp".
3396confUUCP_MAILER		-		[uucp-old] The mailer to be used by
3397					default for bang-format recipient
3398					addresses.  See also discussion of
3399					class {U}, class {Y}, and class {Z}
3400					in the MAILER(`uucp') section.
3401confLOCAL_MAILER	-		[local] The mailer name used when
3402					local connectivity is required.
3403					Almost always "local".
3404confRELAY_MAILER	-		[relay] The default mailer name used
3405					for relaying any mail (e.g., to a
3406					BITNET_RELAY, a SMART_HOST, or
3407					whatever).  This can reasonably be
3408					"uucp-new" if you are on a
3409					UUCP-connected site.
3410confSEVEN_BIT_INPUT	SevenBitInput	[False] Force input to seven bits?
3411confEIGHT_BIT_HANDLING	EightBitMode	[pass8] 8-bit data handling
3412confALIAS_WAIT		AliasWait	[10m] Time to wait for alias file
3413					rebuild until you get bored and
3414					decide that the apparently pending
3415					rebuild failed.
3416confMIN_FREE_BLOCKS	MinFreeBlocks	[100] Minimum number of free blocks on
3417					queue filesystem to accept SMTP mail.
3418					(Prior to 8.7 this was minfree/maxsize,
3419					where minfree was the number of free
3420					blocks and maxsize was the maximum
3421					message size.  Use confMAX_MESSAGE_SIZE
3422					for the second value now.)
3423confMAX_MESSAGE_SIZE	MaxMessageSize	[infinite] The maximum size of messages
3424					that will be accepted (in bytes).
3425confBLANK_SUB		BlankSub	[.] Blank (space) substitution
3426					character.
3427confCON_EXPENSIVE	HoldExpensive	[False] Avoid connecting immediately
3428					to mailers marked expensive.
3429confCHECKPOINT_INTERVAL	CheckpointInterval
3430					[10] Checkpoint queue files every N
3431					recipients.
3432confDELIVERY_MODE	DeliveryMode	[background] Default delivery mode.
3433confERROR_MODE		ErrorMode	[print] Error message mode.
3434confERROR_MESSAGE	ErrorHeader	[undefined] Error message header/file.
3435confSAVE_FROM_LINES	SaveFromLine	Save extra leading From_ lines.
3436confTEMP_FILE_MODE	TempFileMode	[0600] Temporary file mode.
3437confMATCH_GECOS		MatchGECOS	[False] Match GECOS field.
3438confMAX_HOP		MaxHopCount	[25] Maximum hop count.
3439confIGNORE_DOTS*	IgnoreDots	[False; always False in -bs or -bd
3440					mode] Ignore dot as terminator for
3441					incoming messages?
3442confBIND_OPTS		ResolverOptions	[undefined] Default options for DNS
3443					resolver.
3444confMIME_FORMAT_ERRORS*	SendMimeErrors	[True] Send error messages as MIME-
3445					encapsulated messages per RFC 1344.
3446confFORWARD_PATH	ForwardPath	[$z/.forward.$w:$z/.forward]
3447					The colon-separated list of places to
3448					search for .forward files.  N.B.: see
3449					the Security Notes section.
3450confMCI_CACHE_SIZE	ConnectionCacheSize
3451					[2] Size of open connection cache.
3452confMCI_CACHE_TIMEOUT	ConnectionCacheTimeout
3453					[5m] Open connection cache timeout.
3454confHOST_STATUS_DIRECTORY HostStatusDirectory
3455					[undefined] If set, host status is kept
3456					on disk between sendmail runs in the
3457					named directory tree.  This need not be
3458					a full pathname, in which case it is
3459					interpreted relative to the queue
3460					directory.
3461confSINGLE_THREAD_DELIVERY  SingleThreadDelivery
3462					[False] If this option and the
3463					HostStatusDirectory option are both
3464					set, single thread deliveries to other
3465					hosts.  That is, don't allow any two
3466					sendmails on this host to connect
3467					simultaneously to any other single
3468					host.  This can slow down delivery in
3469					some cases, in particular since a
3470					cached but otherwise idle connection
3471					to a host will prevent other sendmails
3472					from connecting to the other host.
3473confUSE_ERRORS_TO*	UseErrorsTo	[False] Use the Errors-To: header to
3474					deliver error messages.  This should
3475					not be necessary because of general
3476					acceptance of the envelope/header
3477					distinction.
3478confLOG_LEVEL		LogLevel	[9] Log level.
3479confME_TOO		MeToo		[True] Include sender in group
3480					expansions.  This option is
3481					deprecated and will be removed from
3482					a future version.
3483confCHECK_ALIASES	CheckAliases	[False] Check RHS of aliases when
3484					running newaliases.  Since this does
3485					DNS lookups on every address, it can
3486					slow down the alias rebuild process
3487					considerably on large alias files.
3488confOLD_STYLE_HEADERS*	OldStyleHeaders	[True] Assume that headers without
3489					special chars are old style.
3490confPRIVACY_FLAGS	PrivacyOptions	[authwarnings] Privacy flags.
3491confCOPY_ERRORS_TO	PostmasterCopy	[undefined] Address for additional
3492					copies of all error messages.
3493confQUEUE_FACTOR	QueueFactor	[600000] Slope of queue-only function.
3494confQUEUE_FILE_MODE	QueueFileMode	[undefined] Default permissions for
3495					queue files (octal).  If not set,
3496					sendmail uses 0600 unless its real
3497					and effective uid are different in
3498					which case it uses 0644.
3499confDONT_PRUNE_ROUTES	DontPruneRoutes	[False] Don't prune down route-addr
3500					syntax addresses to the minimum
3501					possible.
3502confSAFE_QUEUE*		SuperSafe	[True] Commit all messages to disk
3503					before forking.
3504confTO_INITIAL		Timeout.initial	[5m] The timeout waiting for a response
3505					on the initial connect.
3506confTO_CONNECT		Timeout.connect	[0] The timeout waiting for an initial
3507					connect() to complete.  This can only
3508					shorten connection timeouts; the kernel
3509					silently enforces an absolute maximum
3510					(which varies depending on the system).
3511confTO_ICONNECT		Timeout.iconnect
3512					[undefined] Like Timeout.connect, but
3513					applies only to the very first attempt
3514					to connect to a host in a message.
3515					This allows a single very fast pass
3516					followed by more careful delivery
3517					attempts in the future.
3518confTO_ACONNECT		Timeout.aconnect
3519					[0] The overall timeout waiting for
3520					all connection for a single delivery
3521					attempt to succeed.  If 0, no overall
3522					limit is applied.
3523confTO_HELO		Timeout.helo	[5m] The timeout waiting for a response
3524					to a HELO or EHLO command.
3525confTO_MAIL		Timeout.mail	[10m] The timeout waiting for a
3526					response to the MAIL command.
3527confTO_RCPT		Timeout.rcpt	[1h] The timeout waiting for a response
3528					to the RCPT command.
3529confTO_DATAINIT		Timeout.datainit
3530					[5m] The timeout waiting for a 354
3531					response from the DATA command.
3532confTO_DATABLOCK	Timeout.datablock
3533					[1h] The timeout waiting for a block
3534					during DATA phase.
3535confTO_DATAFINAL	Timeout.datafinal
3536					[1h] The timeout waiting for a response
3537					to the final "." that terminates a
3538					message.
3539confTO_RSET		Timeout.rset	[5m] The timeout waiting for a response
3540					to the RSET command.
3541confTO_QUIT		Timeout.quit	[2m] The timeout waiting for a response
3542					to the QUIT command.
3543confTO_MISC		Timeout.misc	[2m] The timeout waiting for a response
3544					to other SMTP commands.
3545confTO_COMMAND		Timeout.command	[1h] In server SMTP, the timeout
3546					waiting	for a command to be issued.
3547confTO_IDENT		Timeout.ident	[5s] The timeout waiting for a
3548					response to an IDENT query.
3549confTO_FILEOPEN		Timeout.fileopen
3550					[60s] The timeout waiting for a file
3551					(e.g., :include: file) to be opened.
3552confTO_LHLO		Timeout.lhlo	[2m] The timeout waiting for a response
3553					to an LMTP LHLO command.
3554confTO_AUTH		Timeout.auth	[10m] The timeout waiting for a
3555					response in an AUTH dialogue.
3556confTO_STARTTLS		Timeout.starttls
3557					[1h] The timeout waiting for a
3558					response to an SMTP STARTTLS command.
3559confTO_CONTROL		Timeout.control
3560					[2m] The timeout for a complete
3561					control socket transaction to complete.
3562confTO_QUEUERETURN	Timeout.queuereturn
3563					[5d] The timeout before a message is
3564					returned as undeliverable.
3565confTO_QUEUERETURN_NORMAL
3566			Timeout.queuereturn.normal
3567					[undefined] As above, for normal
3568					priority messages.
3569confTO_QUEUERETURN_URGENT
3570			Timeout.queuereturn.urgent
3571					[undefined] As above, for urgent
3572					priority messages.
3573confTO_QUEUERETURN_NONURGENT
3574			Timeout.queuereturn.non-urgent
3575					[undefined] As above, for non-urgent
3576					(low) priority messages.
3577confTO_QUEUEWARN	Timeout.queuewarn
3578					[4h] The timeout before a warning
3579					message is sent to the sender telling
3580					them that the message has been
3581					deferred.
3582confTO_QUEUEWARN_NORMAL	Timeout.queuewarn.normal
3583					[undefined] As above, for normal
3584					priority messages.
3585confTO_QUEUEWARN_URGENT	Timeout.queuewarn.urgent
3586					[undefined] As above, for urgent
3587					priority messages.
3588confTO_QUEUEWARN_NONURGENT
3589			Timeout.queuewarn.non-urgent
3590					[undefined] As above, for non-urgent
3591					(low) priority messages.
3592confTO_HOSTSTATUS	Timeout.hoststatus
3593					[30m] How long information about host
3594					statuses will be maintained before it
3595					is considered stale and the host should
3596					be retried.  This applies both within
3597					a single queue run and to persistent
3598					information (see below).
3599confTO_RESOLVER_RETRANS	Timeout.resolver.retrans
3600					[varies] Sets the resolver's
3601					retransmission time interval (in
3602					seconds).  Sets both
3603					Timeout.resolver.retrans.first and
3604					Timeout.resolver.retrans.normal.
3605confTO_RESOLVER_RETRANS_FIRST  Timeout.resolver.retrans.first
3606					[varies] Sets the resolver's
3607					retransmission time interval (in
3608					seconds) for the first attempt to
3609					deliver a message.
3610confTO_RESOLVER_RETRANS_NORMAL  Timeout.resolver.retrans.normal
3611					[varies] Sets the resolver's
3612					retransmission time interval (in
3613					seconds) for all resolver lookups
3614					except the first delivery attempt.
3615confTO_RESOLVER_RETRY	Timeout.resolver.retry
3616					[varies] Sets the number of times
3617					to retransmit a resolver query.
3618					Sets both
3619					Timeout.resolver.retry.first and
3620					Timeout.resolver.retry.normal.
3621confTO_RESOLVER_RETRY_FIRST  Timeout.resolver.retry.first
3622					[varies] Sets the number of times
3623					to retransmit a resolver query for
3624					the first attempt to deliver a
3625					message.
3626confTO_RESOLVER_RETRY_NORMAL  Timeout.resolver.retry.normal
3627					[varies] Sets the number of times
3628					to retransmit a resolver query for
3629					all resolver lookups except the
3630					first delivery attempt.
3631confTIME_ZONE		TimeZoneSpec	[USE_SYSTEM] Time zone info -- can be
3632					USE_SYSTEM to use the system's idea,
3633					USE_TZ to use the user's TZ envariable,
3634					or something else to force that value.
3635confDEF_USER_ID		DefaultUser	[1:1] Default user id.
3636confUSERDB_SPEC		UserDatabaseSpec
3637					[undefined] User database
3638					specification.
3639confFALLBACK_MX		FallbackMXhost	[undefined] Fallback MX host.
3640confTRY_NULL_MX_LIST	TryNullMXList	[False] If this host is the best MX
3641					for a host and other arrangements
3642					haven't been made, try connecting
3643					to the host directly; normally this
3644					would be a config error.
3645confQUEUE_LA		QueueLA		[varies] Load average at which
3646					queue-only function kicks in.
3647					Default values is (8 * numproc)
3648					where numproc is the number of
3649					processors online (if that can be
3650					determined).
3651confREFUSE_LA		RefuseLA	[varies] Load average at which
3652					incoming SMTP connections are
3653					refused.  Default values is (12 *
3654					numproc) where numproc is the
3655					number of processors online (if
3656					that can be determined).
3657confDELAY_LA		DelayLA		[0] Load average at which sendmail
3658					will sleep for one second on most
3659					SMTP commands and before accepting
3660					connections.  0 means no limit.
3661confMAX_ALIAS_RECURSION	MaxAliasRecursion
3662					[10] Maximum depth of alias recursion.
3663confMAX_DAEMON_CHILDREN	MaxDaemonChildren
3664					[undefined] The maximum number of
3665					children the daemon will permit.  After
3666					this number, connections will be
3667					rejected.  If not set or <= 0, there is
3668					no limit.
3669confMAX_HEADERS_LENGTH	MaxHeadersLength
3670					[32768] Maximum length of the sum
3671					of all headers.
3672confMAX_MIME_HEADER_LENGTH  MaxMimeHeaderLength
3673					[undefined] Maximum length of
3674					certain MIME header field values.
3675confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
3676					[undefined] The maximum number of
3677					connections permitted per second per
3678					daemon.  After this many connections
3679					are accepted, further connections
3680					will be delayed.  If not set or <= 0,
3681					there is no limit.
3682confWORK_RECIPIENT_FACTOR
3683			RecipientFactor	[30000] Cost of each recipient.
3684confSEPARATE_PROC	ForkEachJob	[False] Run all deliveries in a
3685					separate process.
3686confWORK_CLASS_FACTOR	ClassFactor	[1800] Priority multiplier for class.
3687confWORK_TIME_FACTOR	RetryFactor	[90000] Cost of each delivery attempt.
3688confQUEUE_SORT_ORDER	QueueSortOrder	[Priority] Queue sort algorithm:
3689					Priority, Host, Filename, Random,
3690					Modification, or Time.
3691confMIN_QUEUE_AGE	MinQueueAge	[0] The minimum amount of time a job
3692					must sit in the queue between queue
3693					runs.  This allows you to set the
3694					queue run interval low for better
3695					responsiveness without trying all
3696					jobs in each run.
3697confDEF_CHAR_SET	DefaultCharSet	[unknown-8bit] When converting
3698					unlabeled 8 bit input to MIME, the
3699					character set to use by default.
3700confSERVICE_SWITCH_FILE	ServiceSwitchFile
3701					[/etc/mail/service.switch] The file
3702					to use for the service switch on
3703					systems that do not have a
3704					system-defined switch.
3705confHOSTS_FILE		HostsFile	[/etc/hosts] The file to use when doing
3706					"file" type access of hosts names.
3707confDIAL_DELAY		DialDelay	[0s] If a connection fails, wait this
3708					long and try again.  Zero means "don't
3709					retry".  This is to allow "dial on
3710					demand" connections to have enough time
3711					to complete a connection.
3712confNO_RCPT_ACTION	NoRecipientAction
3713					[none] What to do if there are no legal
3714					recipient fields (To:, Cc: or Bcc:)
3715					in the message.  Legal values can
3716					be "none" to just leave the
3717					nonconforming message as is, "add-to"
3718					to add a To: header with all the
3719					known recipients (which may expose
3720					blind recipients), "add-apparently-to"
3721					to do the same but use Apparently-To:
3722					instead of To: (strongly discouraged
3723					in accordance with IETF standards),
3724					"add-bcc" to add an empty Bcc:
3725					header, or "add-to-undisclosed" to
3726					add the header
3727					``To: undisclosed-recipients:;''.
3728confSAFE_FILE_ENV	SafeFileEnvironment
3729					[undefined] If set, sendmail will do a
3730					chroot() into this directory before
3731					writing files.
3732confCOLON_OK_IN_ADDR	ColonOkInAddr	[True unless Configuration Level > 6]
3733					If set, colons are treated as a regular
3734					character in addresses.  If not set,
3735					they are treated as the introducer to
3736					the RFC 822 "group" syntax.  Colons are
3737					handled properly in route-addrs.  This
3738					option defaults on for V5 and lower
3739					configuration files.
3740confMAX_QUEUE_RUN_SIZE	MaxQueueRunSize	[0] If set, limit the maximum size of
3741					any given queue run to this number of
3742					entries.  Essentially, this will stop
3743					reading each queue directory after this
3744					number of entries are reached; it does
3745					_not_ pick the highest priority jobs,
3746					so this should be as large as your
3747					system can tolerate.  If not set, there
3748					is no limit.
3749confMAX_QUEUE_CHILDREN	MaxQueueChildren
3750					[undefined] Limits the maximum number
3751					of concurrent queue runners active.
3752					This is to keep system resources used
3753					within a reasonable limit.  Relates to
3754					Queue Groups and ForkAllJobs.
3755confMAX_RUNNERS_PER_QUEUE	MaxRunnersPerQueue
3756					[1] Only active when MaxQueueChildren
3757					defined.  Controls the maximum number
3758					of queue runners (aka queue children)
3759					active at the same time in a work
3760					group.  See also MaxQueueChildren.
3761confDONT_EXPAND_CNAMES	DontExpandCnames
3762					[False] If set, $[ ... $] lookups that
3763					do DNS based lookups do not expand
3764					CNAME records.  This currently violates
3765					the published standards, but the IETF
3766					seems to be moving toward legalizing
3767					this.  For example, if "FTP.Foo.ORG"
3768					is a CNAME for "Cruft.Foo.ORG", then
3769					with this option set a lookup of
3770					"FTP" will return "FTP.Foo.ORG"; if
3771					clear it returns "Cruft.FOO.ORG".  N.B.
3772					you may not see any effect until your
3773					downstream neighbors stop doing CNAME
3774					lookups as well.
3775confFROM_LINE		UnixFromLine	[From $g $d] The From_ line used
3776					when sending to files or programs.
3777confSINGLE_LINE_FROM_HEADER  SingleLineFromHeader
3778					[False] From: lines that have
3779					embedded newlines are unwrapped
3780					onto one line.
3781confALLOW_BOGUS_HELO	AllowBogusHELO	[False] Allow HELO SMTP command that
3782					does not include a host name.
3783confMUST_QUOTE_CHARS	MustQuoteChars	[.'] Characters to be quoted in a full
3784					name phrase (@,;:\()[] are automatic).
3785confOPERATORS		OperatorChars	[.:%@!^/[]+] Address operator
3786					characters.
3787confSMTP_LOGIN_MSG	SmtpGreetingMessage
3788					[$j Sendmail $v/$Z; $b]
3789					The initial (spontaneous) SMTP
3790					greeting message.  The word "ESMTP"
3791					will be inserted between the first and
3792					second words to convince other
3793					sendmails to try to speak ESMTP.
3794confDONT_INIT_GROUPS	DontInitGroups	[False] If set, the initgroups(3)
3795					routine will never be invoked.  You
3796					might want to do this if you are
3797					running NIS and you have a large group
3798					map, since this call does a sequential
3799					scan of the map; in a large site this
3800					can cause your ypserv to run
3801					essentially full time.  If you set
3802					this, agents run on behalf of users
3803					will only have their primary
3804					(/etc/passwd) group permissions.
3805confUNSAFE_GROUP_WRITES	UnsafeGroupWrites
3806					[False] If set, group-writable
3807					:include: and .forward files are
3808					considered "unsafe", that is, programs
3809					and files cannot be directly referenced
3810					from such files.  World-writable files
3811					are always considered unsafe.
3812confCONNECT_ONLY_TO	ConnectOnlyTo	[undefined] override connection
3813					address (for testing).
3814confCONTROL_SOCKET_NAME	ControlSocketName
3815					[undefined] Control socket for daemon
3816					management.
3817confDOUBLE_BOUNCE_ADDRESS  DoubleBounceAddress
3818					[postmaster] If an error occurs when
3819					sending an error message, send that
3820					"double bounce" error message to this
3821					address.  If it expands to an empty
3822					string, double bounces are dropped.
3823confDEAD_LETTER_DROP	DeadLetterDrop	[undefined] Filename to save bounce
3824					messages which could not be returned
3825					to the user or sent to postmaster.
3826					If not set, the queue file will
3827					be renamed.
3828confRRT_IMPLIES_DSN	RrtImpliesDsn	[False] Return-Receipt-To: header
3829					implies DSN request.
3830confRUN_AS_USER		RunAsUser	[undefined] If set, become this user
3831					when reading and delivering mail.
3832					Causes all file reads (e.g., .forward
3833					and :include: files) to be done as
3834					this user.  Also, all programs will
3835					be run as this user, and all output
3836					files will be written as this user.
3837					Intended for use only on firewalls
3838					where users do not have accounts.
3839confMAX_RCPTS_PER_MESSAGE  MaxRecipientsPerMessage
3840					[infinite] If set, allow no more than
3841					the specified number of recipients in
3842					an SMTP envelope.  Further recipients
3843					receive a 452 error code (i.e., they
3844					are deferred for the next delivery
3845					attempt).
3846confBAD_RCPT_THROTTLE	BadRcptThrottle	[infinite] If set and more than the
3847					specified number of recipients in an
3848					envelope are rejected, sleep for one
3849					second after each rejected RCPT
3850					command.
3851confDONT_PROBE_INTERFACES  DontProbeInterfaces
3852					[False] If set, sendmail will _not_
3853					insert the names and addresses of any
3854					local interfaces into class {w}
3855					(list of known "equivalent" addresses).
3856					If you set this, you must also include
3857					some support for these addresses (e.g.,
3858					in a mailertable entry) -- otherwise,
3859					mail to addresses in this list will
3860					bounce with a configuration error.
3861					If set to "loopback" (without
3862					quotes), sendmail will skip
3863					loopback interfaces (e.g., "lo0").
3864confPID_FILE		PidFile		[system dependent] Location of pid
3865					file.
3866confPROCESS_TITLE_PREFIX  ProcessTitlePrefix
3867					[undefined] Prefix string for the
3868					process title shown on 'ps' listings.
3869confDONT_BLAME_SENDMAIL	DontBlameSendmail
3870					[safe] Override sendmail's file
3871					safety checks.  This will definitely
3872					compromise system security and should
3873					not be used unless absolutely
3874					necessary.
3875confREJECT_MSG		-		[550 Access denied] The message
3876					given if the access database contains
3877					REJECT in the value portion.
3878confRELAY_MSG		-		[550 Relaying denied] The message
3879					given if an unauthorized relaying
3880					attempt is rejected.
3881confDF_BUFFER_SIZE	DataFileBufferSize
3882					[4096] The maximum size of a
3883					memory-buffered data (df) file
3884					before a disk-based file is used.
3885confXF_BUFFER_SIZE	XScriptFileBufferSize
3886					[4096] The maximum size of a
3887					memory-buffered transcript (xf)
3888					file before a disk-based file is
3889					used.
3890confAUTH_MECHANISMS	AuthMechanisms	[GSSAPI KERBEROS_V4 DIGEST-MD5
3891					CRAM-MD5] List of authentication
3892					mechanisms for AUTH (separated by
3893					spaces).  The advertised list of
3894					authentication mechanisms will be the
3895					intersection of this list and the list
3896					of available mechanisms as determined
3897					by the CYRUS SASL library.
3898confDEF_AUTH_INFO	DefaultAuthInfo	[undefined] Name of file that contains
3899					authentication information for
3900					outgoing connections.  This file must
3901					contain the user id, the authorization
3902					id, the password (plain text), the
3903					realm to use, and the list of
3904					mechanisms to try, each on a separate
3905					line and must be readable by root (or
3906					the trusted user) only.  If no realm
3907					is specified, $j is used.  If no
3908					mechanisms are given in the file,
3909					AuthMechanisms is used.  Notice: this
3910					option is deprecated and will be
3911					removed in future versions; it doesn't
3912					work for the MSP since it can't read
3913					the file.  Use the authinfo ruleset
3914					instead.  See also the section SMTP
3915					AUTHENTICATION.
3916confAUTH_OPTIONS	AuthOptions	[undefined] If this option is 'A'
3917					then the AUTH= parameter for the
3918					MAIL FROM command is only issued
3919					when authentication succeeded.
3920					Other values (which should be listed
3921					one after the other without any
3922					intervening characters except for
3923					space or comma) are a, c, d, f, p,
3924					and y.  See doc/op/op.me for
3925					details.
3926confAUTH_MAX_BITS	AuthMaxBits	[INT_MAX] Limit the maximum encryption
3927					strength for the security layer in
3928					SMTP AUTH (SASL).  Default is
3929					essentially unlimited.
3930confTLS_SRV_OPTIONS	TLSSrvOptions	If this option is 'V' no client
3931					verification is performed, i.e.,
3932					the server doesn't ask for a
3933					certificate.
3934confLDAP_DEFAULT_SPEC	LDAPDefaultSpec	[undefined] Default map
3935					specification for LDAP maps.  The
3936					value should only contain LDAP
3937					specific settings such as "-h host
3938					-p port -d bindDN", etc.  The
3939					settings will be used for all LDAP
3940					maps unless they are specified in
3941					the individual map specification
3942					('K' command).
3943confCACERT_PATH		CACertPath	[undefined] Path to directory
3944					with certs of CAs.
3945confCACERT		CACertFile	[undefined] File containing one CA
3946					cert.
3947confSERVER_CERT		ServerCertFile	[undefined] File containing the
3948					cert of the server, i.e., this cert
3949					is used when sendmail acts as
3950					server.
3951confSERVER_KEY		ServerKeyFile	[undefined] File containing the
3952					private key belonging to the server
3953					cert.
3954confCLIENT_CERT		ClientCertFile	[undefined] File containing the
3955					cert of the client, i.e., this cert
3956					is used when sendmail acts as
3957					client.
3958confCLIENT_KEY		ClientKeyFile	[undefined] File containing the
3959					private key belonging to the client
3960					cert.
3961confDH_PARAMETERS	DHParameters	[undefined] File containing the
3962					DH parameters.
3963confRAND_FILE		RandFile	[undefined] File containing random
3964					data (use prefix file:) or the
3965					name of the UNIX socket if EGD is
3966					used (use prefix egd:).  STARTTLS
3967					requires this option if the compile
3968					flag HASURANDOM is not set (see
3969					sendmail/README).
3970confNICE_QUEUE_RUN	NiceQueueRun	[undefined]  If set, the priority of
3971					queue runners is set the given value
3972					(nice(3)).
3973confDIRECT_SUBMISSION_MODIFIERS	DirectSubmissionModifiers
3974					[undefined] Defines {daemon_flags}
3975					for direct submissions.
3976confUSE_MSP		UseMSP		[false] Use as mail submission
3977					program, see sendmail/SECURITY.
3978confDELIVER_BY_MIN	DeliverByMin	[0] Minimum time for Deliver By
3979					SMTP Service Extension (RFC 2852).
3980confSHARED_MEMORY_KEY	SharedMemoryKey [0] Key for shared memory.
3981confFAST_SPLIT		FastSplit	[1] If set to a value greater than
3982					zero, the initial MX lookups on
3983					addresses is suppressed when they
3984					are sorted which may result in
3985					faster envelope splitting.  If the
3986					mail is submitted directly from the
3987					command line, then the value also
3988					limits the number of processes to
3989					deliver the envelopes.
3990confMAILBOX_DATABASE	MailboxDatabase	[pw] Type of lookup to find
3991					information about local mailboxes.
3992confDEQUOTE_OPTS	-		[empty] Additional options for the
3993					dequote map.
3994confINPUT_MAIL_FILTERS	InputMailFilters
3995					A comma separated list of filters
3996					which determines which filters and
3997					the invocation sequence are
3998					contacted for incoming SMTP
3999					messages.  If none are set, no
4000					filters will be contacted.
4001confMILTER_LOG_LEVEL	Milter.LogLevel	[9] Log level for input mail filter
4002					actions, defaults to LogLevel.
4003confMILTER_MACROS_CONNECT	Milter.macros.connect
4004					[j, _, {daemon_name}, {if_name},
4005					{if_addr}] Macros to transmit to
4006					milters when a session connection
4007					starts.
4008confMILTER_MACROS_HELO	Milter.macros.helo
4009					[{tls_version}, {cipher},
4010					{cipher_bits}, {cert_subject},
4011					{cert_issuer}] Macros to transmit to
4012					milters after HELO/EHLO command.
4013confMILTER_MACROS_ENVFROM	Milter.macros.envfrom
4014					[i, {auth_type}, {auth_authen},
4015					{auth_ssf}, {auth_author},
4016					{mail_mailer}, {mail_host},
4017					{mail_addr}] Macros to transmit to
4018					milters after MAIL FROM command.
4019confMILTER_MACROS_ENVRCPT	Milter.macros.envrcpt
4020					[{rcpt_mailer}, {rcpt_host},
4021					{rcpt_addr}] Macros to transmit to
4022					milters after RCPT TO command.
4023
4024
4025See also the description of OSTYPE for some parameters that can be
4026tweaked (generally pathnames to mailers).
4027
4028ClientPortOptions and DaemonPortOptions are special cases since multiple
4029clients/daemons can be defined.  This can be done via
4030
4031	CLIENT_OPTIONS(`field1=value1,field2=value2,...')
4032	DAEMON_OPTIONS(`field1=value1,field2=value2,...')
4033
4034Note that multiple CLIENT_OPTIONS() commands (and therefore multiple
4035ClientPortOptions settings) are allowed in order to give settings for each
4036protocol family (e.g., one for Family=inet and one for Family=inet6).  A
4037restriction placed on one family only affects outgoing connections on that
4038particular family.
4039
4040If DAEMON_OPTIONS is not used, then the default is
4041
4042	DAEMON_OPTIONS(`Port=smtp, Name=MTA')
4043	DAEMON_OPTIONS(`Port=587, Name=MSA, M=E')
4044
4045If you use one DAEMON_OPTIONS macro, it will alter the parameters
4046of the first of these.  The second will still be defaulted; it
4047represents a "Message Submission Agent" (MSA) as defined by RFC
40482476 (see below).  To turn off the default definition for the MSA,
4049use FEATURE(`no_default_msa') (see also FEATURES).  If you use
4050additional DAEMON_OPTIONS macros, they will add additional daemons.
4051
4052Example 1:  To change the port for the SMTP listener, while
4053still using the MSA default, use
4054	DAEMON_OPTIONS(`Port=925, Name=MTA')
4055
4056Example 2:  To change the port for the MSA daemon, while still
4057using the default SMTP port, use
4058	FEATURE(`no_default_msa')
4059	DAEMON_OPTIONS(`Name=MTA')
4060	DAEMON_OPTIONS(`Port=987, Name=MSA, M=E')
4061
4062Note that if the first of those DAEMON_OPTIONS lines were omitted, then
4063there would be no listener on the standard SMTP port.
4064
4065Example 3: To listen on both IPv4 and IPv6 interfaces, use
4066
4067	DAEMON_OPTIONS(`Name=MTA-v4, Family=inet')
4068	DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6')
4069
4070A "Message Submission Agent" still uses all of the same rulesets for
4071processing the message (and therefore still allows message rejection via
4072the check_* rulesets).  In accordance with the RFC, the MSA will ensure
4073that all domains in envelope addresses are fully qualified if the message
4074is relayed to another MTA.  It will also enforce the normal address syntax
4075rules and log error messages.  Additionally, by using the M=a modifier you
4076can require authentication before messages are accepted by the MSA.
4077Notice: Do NOT use the 'a' modifier on a public accessible MTA!  Finally,
4078the M=E modifier shown above disables ETRN as required by RFC 2476.
4079
4080Mail filters can be defined using the INPUT_MAIL_FILTER() and MAIL_FILTER()
4081commands:
4082
4083	INPUT_MAIL_FILTER(`sample', `S=local:/var/run/f1.sock')
4084	MAIL_FILTER(`myfilter', `S=inet:3333@localhost')
4085
4086The INPUT_MAIL_FILTER() command causes the filter(s) to be called in the
4087same order they were specified by also setting confINPUT_MAIL_FILTERS.  A
4088filter can be defined without adding it to the input filter list by using
4089MAIL_FILTER() instead of INPUT_MAIL_FILTER() in your .mc file.
4090Alternatively, you can reset the list of filters and their order by setting
4091confINPUT_MAIL_FILTERS option after all INPUT_MAIL_FILTER() commands in
4092your .mc file.
4093
4094
4095+----------------------------+
4096| MESSAGE SUBMISSION PROGRAM |
4097+----------------------------+
4098
4099The purpose of the message submission program (MSP) is explained
4100in sendmail/SECURITY.  This section contains a list of caveats and
4101a few hints how for those who want to tweak the default configuration
4102for it (which is installed as submit.cf).
4103
4104Notice: do not add options/features to submit.mc unless you are
4105absolutely sure you need them.  Options you may want to change
4106include:
4107
4108- confTRUSTED_USERS, FEATURE(`use_ct_file'), and confCT_FILE for
4109  avoiding X-Authentication warnings.
4110- confTIME_ZONE to change it from the default `USE_TZ'.
4111- confDELIVERY_MODE is set to interactive in msp.m4 instead
4112  of the default background mode.
4113- FEATURE(stickyhost) and LOCAL_RELAY to send unqualified addresses
4114  to the LOCAL_RELAY instead of the default relay.
4115- confRAND_FILE if you use STARTTLS and sendmail is not compiled with
4116  the flag HASURANDOM.
4117
4118The MSP performs hostname canonicalization by default.  As also
4119explained in sendmail/SECURITY, mail may end up for various DNS
4120related reasons in the MSP queue. This problem can be minimized by
4121using
4122
4123	FEATURE(`nocanonify', `canonify_hosts')
4124	define(`confDIRECT_SUBMISSION_MODIFIERS', `C')
4125
4126See the discussion about nocanonify for possible side effects.
4127
4128Some things are not intended to work with the MSP.  These include
4129features that influence the delivery process (e.g., mailertable,
4130aliases), or those that are only important for a SMTP server (e.g.,
4131virtusertable, DaemonPortOptions, multiple queues).  Moreover,
4132relaxing certain restrictions (RestrictQueueRun, permissions on
4133queue directory) or adding features (e.g., enabling prog/file mailer)
4134can cause security problems.
4135
4136Other things don't work well with the MSP and require tweaking or
4137workarounds.  For example, to allow for client authentication it
4138is not just sufficient to provide a client certificate and the
4139corresponding key, but it is also necessary to make the key group
4140(smmsp) readable and tell sendmail not to complain about that, i.e.,
4141
4142	define(`confDONT_BLAME_SENDMAIL', `GroupReadableKeyFile')
4143
4144If the MSP should actually use AUTH then the necessary data
4145should be placed in a map as explained in SMTP AUTHENTICATION:
4146
4147FEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/msp-authinfo')
4148
4149/etc/mail/msp-authinfo should contain an entry like:
4150
4151	AuthInfo:127.0.0.1	"U:smmsp" "P:secret" "M:DIGEST-MD5"
4152
4153The file and the map created by makemap should be owned by smmsp,
4154its group should be smmsp, and it should have mode 640.  The database
4155used by the MTA for AUTH must have a corresponding entry.
4156Additionally the MTA must trust this authentication data so the AUTH=
4157part will be relayed on to the next hop.  This can be achieved by
4158adding the following to your sendmail.mc file:
4159
4160	LOCAL_RULESETS
4161	SLocal_trust_auth
4162	R$*	$: $&{auth_authen}
4163	Rsmmsp	$# OK
4164
4165feature/msp.m4 defines almost all settings for the MSP.  Most of
4166those should not be changed at all.  Some of the features and options
4167can be overridden if really necessary.  It is a bit tricky to do
4168this, because it depends on the actual way the option is defined
4169in feature/msp.m4.  If it is directly defined (i.e., define()) then
4170the modified value must be defined after
4171
4172	FEATURE(`msp')
4173
4174If it is conditionally defined (i.e., ifdef()) then the desired
4175value must be defined before the FEATURE line in the .mc file.
4176To see how the options are defined read feature/msp.m4.
4177
4178
4179+--------------------------+
4180| FORMAT OF FILES AND MAPS |
4181+--------------------------+
4182
4183Files that define classes, i.e., F{classname}, consist of lines
4184each of which contains a single element of the class.  For example,
4185/etc/mail/local-host-names may have the following content:
4186
4187my.domain
4188another.domain
4189
4190Maps must be created using makemap(8) , e.g.,
4191
4192	makemap hash MAP < MAP
4193
4194In general, a text file from which a map is created contains lines
4195of the form
4196
4197key	value
4198
4199where 'key' and 'value' are also called LHS and RHS, respectively.
4200By default, the delimiter between LHS and RHS is a non-empty sequence
4201of white space characters.
4202
4203
4204+------------------+
4205| DIRECTORY LAYOUT |
4206+------------------+
4207
4208Within this directory are several subdirectories, to wit:
4209
4210m4		General support routines.  These are typically
4211		very important and should not be changed without
4212		very careful consideration.
4213
4214cf		The configuration files themselves.  They have
4215		".mc" suffixes, and must be run through m4 to
4216		become complete.  The resulting output should
4217		have a ".cf" suffix.
4218
4219ostype		Definitions describing a particular operating
4220		system type.  These should always be referenced
4221		using the OSTYPE macro in the .mc file.  Examples
4222		include "bsd4.3", "bsd4.4", "sunos3.5", and
4223		"sunos4.1".
4224
4225domain		Definitions describing a particular domain, referenced
4226		using the DOMAIN macro in the .mc file.  These are
4227		site dependent; for example, "CS.Berkeley.EDU.m4"
4228		describes hosts in the CS.Berkeley.EDU subdomain.
4229
4230mailer		Descriptions of mailers.  These are referenced using
4231		the MAILER macro in the .mc file.
4232
4233sh		Shell files used when building the .cf file from the
4234		.mc file in the cf subdirectory.
4235
4236feature		These hold special orthogonal features that you might
4237		want to include.  They should be referenced using
4238		the FEATURE macro.
4239
4240hack		Local hacks.  These can be referenced using the HACK
4241		macro.  They shouldn't be of more than voyeuristic
4242		interest outside the .Berkeley.EDU domain, but who knows?
4243
4244siteconfig	Site configuration -- e.g., tables of locally connected
4245		UUCP sites.
4246
4247
4248+------------------------+
4249| ADMINISTRATIVE DETAILS |
4250+------------------------+
4251
4252The following sections detail usage of certain internal parts of the
4253sendmail.cf file.  Read them carefully if you are trying to modify
4254the current model.  If you find the above descriptions adequate, these
4255should be {boring, confusing, tedious, ridiculous} (pick one or more).
4256
4257RULESETS (* means built in to sendmail)
4258
4259   0 *	Parsing
4260   1 *	Sender rewriting
4261   2 *	Recipient rewriting
4262   3 *	Canonicalization
4263   4 *	Post cleanup
4264   5 *	Local address rewrite (after aliasing)
4265  1x	mailer rules (sender qualification)
4266  2x	mailer rules (recipient qualification)
4267  3x	mailer rules (sender header qualification)
4268  4x	mailer rules (recipient header qualification)
4269  5x	mailer subroutines (general)
4270  6x	mailer subroutines (general)
4271  7x	mailer subroutines (general)
4272  8x	reserved
4273  90	Mailertable host stripping
4274  96	Bottom half of Ruleset 3 (ruleset 6 in old sendmail)
4275  97	Hook for recursive ruleset 0 call (ruleset 7 in old sendmail)
4276  98	Local part of ruleset 0 (ruleset 8 in old sendmail)
4277
4278
4279MAILERS
4280
4281   0	local, prog	local and program mailers
4282   1	[e]smtp, relay	SMTP channel
4283   2	uucp-*		UNIX-to-UNIX Copy Program
4284   3	netnews		Network News delivery
4285   4	fax		Sam Leffler's HylaFAX software
4286   5	mail11		DECnet mailer
4287
4288
4289MACROS
4290
4291   A
4292   B	Bitnet Relay
4293   C	DECnet Relay
4294   D	The local domain -- usually not needed
4295   E	reserved for X.400 Relay
4296   F	FAX Relay
4297   G
4298   H	mail Hub (for mail clusters)
4299   I
4300   J
4301   K
4302   L	Luser Relay
4303   M	Masquerade (who you claim to be)
4304   N
4305   O
4306   P
4307   Q
4308   R	Relay (for unqualified names)
4309   S	Smart Host
4310   T
4311   U	my UUCP name (if you have a UUCP connection)
4312   V	UUCP Relay (class {V} hosts)
4313   W	UUCP Relay (class {W} hosts)
4314   X	UUCP Relay (class {X} hosts)
4315   Y	UUCP Relay (all other hosts)
4316   Z	Version number
4317
4318
4319CLASSES
4320
4321   A
4322   B	domains that are candidates for bestmx lookup
4323   C
4324   D
4325   E	addresses that should not seem to come from $M
4326   F	hosts this system forward for
4327   G	domains that should be looked up in genericstable
4328   H
4329   I
4330   J
4331   K
4332   L	addresses that should not be forwarded to $R
4333   M	domains that should be mapped to $M
4334   N	host/domains that should not be mapped to $M
4335   O	operators that indicate network operations (cannot be in local names)
4336   P	top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc.
4337   Q
4338   R	domains this system is willing to relay (pass anti-spam filters)
4339   S
4340   T
4341   U	locally connected UUCP hosts
4342   V	UUCP hosts connected to relay $V
4343   W	UUCP hosts connected to relay $W
4344   X	UUCP hosts connected to relay $X
4345   Y	locally connected smart UUCP hosts
4346   Z	locally connected domain-ized UUCP hosts
4347   .	the class containing only a dot
4348   [	the class containing only a left bracket
4349
4350
4351M4 DIVERSIONS
4352
4353   1	Local host detection and resolution
4354   2	Local Ruleset 3 additions
4355   3	Local Ruleset 0 additions
4356   4	UUCP Ruleset 0 additions
4357   5	locally interpreted names (overrides $R)
4358   6	local configuration (at top of file)
4359   7	mailer definitions
4360   8	DNS based blacklists
4361   9	special local rulesets (1 and 2)
4362
4363$Revision: 8.623.2.18 $, Last updated $Date: 2002/12/29 04:16:51 $
4364