summaryrefslogtreecommitdiff
path: root/contrib/sendmail/cf/README
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/sendmail/cf/README')
-rw-r--r--contrib/sendmail/cf/README4377
1 files changed, 0 insertions, 4377 deletions
diff --git a/contrib/sendmail/cf/README b/contrib/sendmail/cf/README
deleted file mode 100644
index 1a59f9df54a1e..0000000000000
--- a/contrib/sendmail/cf/README
+++ /dev/null
@@ -1,4377 +0,0 @@
-
- SENDMAIL CONFIGURATION FILES
-
-This document describes the sendmail configuration files. It
-explains how to create a sendmail.cf file for use with sendmail.
-It also describes how to set options for sendmail which are explained
-in the Sendmail Installation and Operation guide (doc/op/op.me).
-
-To get started, you may want to look at tcpproto.mc (for TCP-only
-sites) and clientproto.mc (for clusters of clients using a single
-mail host), or the generic-*.mc files as operating system-specific
-examples.
-
-Table of Content:
-
-INTRODUCTION AND EXAMPLE
-A BRIEF INTRODUCTION TO M4
-FILE LOCATIONS
-OSTYPE
-DOMAINS
-MAILERS
-FEATURES
-HACKS
-SITE CONFIGURATION
-USING UUCP MAILERS
-TWEAKING RULESETS
-MASQUERADING AND RELAYING
-USING LDAP FOR ALIASES, MAPS, AND CLASSES
-LDAP ROUTING
-ANTI-SPAM CONFIGURATION CONTROL
-STARTTLS
-SMTP AUTHENTICATION
-ADDING NEW MAILERS OR RULESETS
-ADDING NEW MAIL FILTERS
-QUEUE GROUP DEFINITIONS
-NON-SMTP BASED CONFIGURATIONS
-WHO AM I?
-ACCEPTING MAIL FOR MULTIPLE NAMES
-USING MAILERTABLES
-USING USERDB TO MAP FULL NAMES
-MISCELLANEOUS SPECIAL FEATURES
-SECURITY NOTES
-TWEAKING CONFIGURATION OPTIONS
-MESSAGE SUBMISSION PROGRAM
-FORMAT OF FILES AND MAPS
-DIRECTORY LAYOUT
-ADMINISTRATIVE DETAILS
-
-
-+--------------------------+
-| INTRODUCTION AND EXAMPLE |
-+--------------------------+
-
-Configuration files are contained in the subdirectory "cf", with a
-suffix ".mc". They must be run through "m4" to produce a ".cf" file.
-You must pre-load "cf.m4":
-
- m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf
-
-Alternatively, you can simply:
-
- cd ${CFDIR}/cf
- ./Build config.cf
-
-where ${CFDIR} is the root of the cf directory and config.mc is the
-name of your configuration file. If you are running a version of M4
-that understands the __file__ builtin (versions of GNU m4 >= 0.75 do
-this, but the versions distributed with 4.4BSD and derivatives do not)
-or the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory.
-For "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST
-use -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash! For example:
-
- m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf
-
-Let's examine a typical .mc file:
-
- divert(-1)
- #
- # Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers.
- # All rights reserved.
- # Copyright (c) 1983 Eric P. Allman. All rights reserved.
- # Copyright (c) 1988, 1993
- # The Regents of the University of California. All rights reserved.
- #
- # By using this file, you agree to the terms and conditions set
- # forth in the LICENSE file which can be found at the top level of
- # the sendmail distribution.
- #
-
- #
- # This is a Berkeley-specific configuration file for HP-UX 9.x.
- # It applies only to the Computer Science Division at Berkeley,
- # and should not be used elsewhere. It is provided on the sendmail
- # distribution as a sample only. To create your own configuration
- # file, create an appropriate domain file in ../domain, change the
- # `DOMAIN' macro below to reference that file, and copy the result
- # to a name of your own choosing.
- #
- divert(0)
-
-The divert(-1) will delete the crud in the resulting output file.
-The copyright notice can be replaced by whatever your lawyers require;
-our lawyers require the one that is included in these files. A copyleft
-is a copyright by another name. The divert(0) restores regular output.
-
- VERSIONID(`<SCCS or RCS version id>')
-
-VERSIONID is a macro that stuffs the version information into the
-resulting file. You could use SCCS, RCS, CVS, something else, or
-omit it completely. This is not the same as the version id included
-in SMTP greeting messages -- this is defined in m4/version.m4.
-
- OSTYPE(`hpux9')dnl
-
-You must specify an OSTYPE to properly configure things such as the
-pathname of the help and status files, the flags needed for the local
-mailer, and other important things. If you omit it, you will get an
-error when you try to build the configuration. Look at the ostype
-directory for the list of known operating system types.
-
- DOMAIN(`CS.Berkeley.EDU')dnl
-
-This example is specific to the Computer Science Division at Berkeley.
-You can use "DOMAIN(`generic')" to get a sufficiently bland definition
-that may well work for you, or you can create a customized domain
-definition appropriate for your environment.
-
- MAILER(`local')
- MAILER(`smtp')
-
-These describe the mailers used at the default CS site. The local
-mailer is always included automatically. Beware: MAILER declarations
-should always be at the end of the configuration file. The general
-rules are that the order should be:
-
- VERSIONID
- OSTYPE
- DOMAIN
- FEATURE
- local macro definitions
- MAILER
- LOCAL_CONFIG
- LOCAL_RULE_*
- LOCAL_RULESETS
-
-There are a few exceptions to this rule. Local macro definitions which
-influence a FEATURE() should be done before that feature. For example,
-a define(`PROCMAIL_MAILER_PATH', ...) should be done before
-FEATURE(`local_procmail').
-
-*******************************************************************
-*** BE SURE YOU CUSTOMIZE THESE FILES! They have some ***
-*** Berkeley-specific assumptions built in, such as the name ***
-*** of their UUCP-relay. You'll want to create your own ***
-*** domain description, and use that in place of ***
-*** domain/Berkeley.EDU.m4. ***
-*******************************************************************
-
-
-+----------------------------+
-| A BRIEF INTRODUCTION TO M4 |
-+----------------------------+
-
-Sendmail uses the M4 macro processor to ``compile'' the configuration
-files. The most important thing to know is that M4 is stream-based,
-that is, it doesn't understand about lines. For this reason, in some
-places you may see the word ``dnl'', which stands for ``delete
-through newline''; essentially, it deletes all characters starting
-at the ``dnl'' up to and including the next newline character. In
-most cases sendmail uses this only to avoid lots of unnecessary
-blank lines in the output.
-
-Other important directives are define(A, B) which defines the macro
-``A'' to have value ``B''. Macros are expanded as they are read, so
-one normally quotes both values to prevent expansion. For example,
-
- define(`SMART_HOST', `smart.foo.com')
-
-One word of warning: M4 macros are expanded even in lines that appear
-to be comments. For example, if you have
-
- # See FEATURE(`foo') above
-
-it will not do what you expect, because the FEATURE(`foo') will be
-expanded. This also applies to
-
- # And then define the $X macro to be the return address
-
-because ``define'' is an M4 keyword. If you want to use them, surround
-them with directed quotes, `like this'.
-
-Since m4 uses single quotes (opening "`" and closing "'") to quote
-arguments, those quotes can't be used in arguments. For example,
-it is not possible to define a rejection message containing a single
-quote. Usually there are simple workarounds by changing those
-messages; in the worst case it might be ok to change the value
-directly in the generated .cf file, which however is not advised.
-
-
-Notice:
--------
-
-This package requires a post-V7 version of m4; if you are running the
-4.2bsd, SysV.2, or 7th Edition version. SunOS's /usr/5bin/m4 or
-BSD-Net/2's m4 both work. GNU m4 version 1.1 or later also works.
-Unfortunately, the M4 on BSDI 1.0 doesn't work -- you'll have to use a
-Net/2 or GNU version. GNU m4 is available from
-ftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the latest version).
-EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x is fine). Use GNU
-m4 on this platform.
-
-
-+----------------+
-| FILE LOCATIONS |
-+----------------+
-
-sendmail 8.9 has introduced a new configuration directory for sendmail
-related files, /etc/mail. The new files available for sendmail 8.9 --
-the class {R} /etc/mail/relay-domains and the access database
-/etc/mail/access -- take advantage of this new directory. Beginning with
-8.10, all files will use this directory by default (some options may be
-set by OSTYPE() files). This new directory should help to restore
-uniformity to sendmail's file locations.
-
-Below is a table of some of the common changes:
-
-Old filename New filename
------------- ------------
-/etc/bitdomain /etc/mail/bitdomain
-/etc/domaintable /etc/mail/domaintable
-/etc/genericstable /etc/mail/genericstable
-/etc/uudomain /etc/mail/uudomain
-/etc/virtusertable /etc/mail/virtusertable
-/etc/userdb /etc/mail/userdb
-
-/etc/aliases /etc/mail/aliases
-/etc/sendmail/aliases /etc/mail/aliases
-/etc/ucbmail/aliases /etc/mail/aliases
-/usr/adm/sendmail/aliases /etc/mail/aliases
-/usr/lib/aliases /etc/mail/aliases
-/usr/lib/mail/aliases /etc/mail/aliases
-/usr/ucblib/aliases /etc/mail/aliases
-
-/etc/sendmail.cw /etc/mail/local-host-names
-/etc/mail/sendmail.cw /etc/mail/local-host-names
-/etc/sendmail/sendmail.cw /etc/mail/local-host-names
-
-/etc/sendmail.ct /etc/mail/trusted-users
-
-/etc/sendmail.oE /etc/mail/error-header
-
-/etc/sendmail.hf /etc/mail/helpfile
-/etc/mail/sendmail.hf /etc/mail/helpfile
-/usr/ucblib/sendmail.hf /etc/mail/helpfile
-/etc/ucbmail/sendmail.hf /etc/mail/helpfile
-/usr/lib/sendmail.hf /etc/mail/helpfile
-/usr/share/lib/sendmail.hf /etc/mail/helpfile
-/usr/share/misc/sendmail.hf /etc/mail/helpfile
-/share/misc/sendmail.hf /etc/mail/helpfile
-
-/etc/service.switch /etc/mail/service.switch
-
-/etc/sendmail.st /etc/mail/statistics
-/etc/mail/sendmail.st /etc/mail/statistics
-/etc/mailer/sendmail.st /etc/mail/statistics
-/etc/sendmail/sendmail.st /etc/mail/statistics
-/usr/lib/sendmail.st /etc/mail/statistics
-/usr/ucblib/sendmail.st /etc/mail/statistics
-
-Note that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR
-to create the pathnames. The default value of this variable is
-`/etc/mail/'. If you set this macro to a different value, you MUST include
-a trailing slash.
-
-Notice: all filenames used in a .mc (or .cf) file should be absolute
-(starting at the root, i.e., with '/'). Relative filenames most
-likely cause surprises during operations (unless otherwise noted).
-
-
-+--------+
-| OSTYPE |
-+--------+
-
-You MUST define an operating system environment, or the configuration
-file build will puke. There are several environments available; look
-at the "ostype" directory for the current list. This macro changes
-things like the location of the alias file and queue directory. Some
-of these files are identical to one another.
-
-It is IMPERATIVE that the OSTYPE occur before any MAILER definitions.
-In general, the OSTYPE macro should go immediately after any version
-information, and MAILER definitions should always go last.
-
-Operating system definitions are usually easy to write. They may define
-the following variables (everything defaults, so an ostype file may be
-empty). Unfortunately, the list of configuration-supported systems is
-not as broad as the list of source-supported systems, since many of
-the source contributors do not include corresponding ostype files.
-
-ALIAS_FILE [/etc/mail/aliases] The location of the text version
- of the alias file(s). It can be a comma-separated
- list of names (but be sure you quote values with
- commas in them -- for example, use
- define(`ALIAS_FILE', `a,b')
- to get "a" and "b" both listed as alias files;
- otherwise the define() primitive only sees "a").
-HELP_FILE [/etc/mail/helpfile] The name of the file
- containing information printed in response to
- the SMTP HELP command.
-QUEUE_DIR [/var/spool/mqueue] The directory containing
- queue files. To use multiple queues, supply
- a value ending with an asterisk. For
- example, /var/spool/mqueue/qd* will use all of the
- directories or symbolic links to directories
- beginning with 'qd' in /var/spool/mqueue as queue
- directories. The names 'qf', 'df', and 'xf' are
- reserved as specific subdirectories for the
- corresponding queue file types as explained in
- doc/op/op.me. See also QUEUE GROUP DEFINITIONS.
-MSP_QUEUE_DIR [/var/spool/clientmqueue] The directory containing
- queue files for the MSP (Mail Submission Program,
- see sendmail/SECURITY).
-STATUS_FILE [/etc/mail/statistics] The file containing status
- information.
-LOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail.
-LOCAL_MAILER_FLAGS [Prmn9] The flags used by the local mailer. The
- flags lsDFMAw5:/|@q are always included.
-LOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local
- mail.
-LOCAL_MAILER_MAX [undefined] If defined, the maximum size of local
- mail that you are willing to accept.
-LOCAL_MAILER_MAXMSGS [undefined] If defined, the maximum number of
- messages to deliver in a single connection. Only
- useful for LMTP local mailers.
-LOCAL_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
- that ARRIVE from an address that resolves to the
- local mailer and which are converted to MIME will be
- labeled with this character set.
-LOCAL_MAILER_EOL [undefined] If defined, the string to use as the
- end of line for the local mailer.
-LOCAL_MAILER_DSN_DIAGNOSTIC_CODE
- [X-Unix] The DSN Diagnostic-Code value for the
- local mailer. This should be changed with care.
-LOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email.
-LOCAL_SHELL_FLAGS [eu9] The flags used by the shell mailer. The
- flags lsDFM are always included.
-LOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog"
- mail.
-LOCAL_SHELL_DIR [$z:/] The directory search path in which the
- shell should run.
-LOCAL_MAILER_QGRP [undefined] The queue group for the local mailer.
-USENET_MAILER_PATH [/usr/lib/news/inews] The name of the program
- used to submit news.
-USENET_MAILER_FLAGS [rsDFMmn] The mailer flags for the usenet mailer.
-USENET_MAILER_ARGS [-m -h -n] The command line arguments for the
- usenet mailer. NOTE: Some versions of inews
- (such as those shipped with newer versions of INN)
- use different flags. Double check the defaults
- against the inews man page.
-USENET_MAILER_MAX [undefined] The maximum size of messages that will
- be accepted by the usenet mailer.
-USENET_MAILER_QGRP [undefined] The queue group for the usenet mailer.
-SMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default
- flags are `mDFMuX' for all SMTP-based mailers; the
- "esmtp" mailer adds `a'; "smtp8" adds `8'; and
- "dsmtp" adds `%'.
-RELAY_MAILER_FLAGS [undefined] Flags added to the relay mailer. Default
- flags are `mDFMuX' for all SMTP-based mailers; the
- relay mailer adds `a8'. If this is not defined,
- then SMTP_MAILER_FLAGS is used.
-SMTP_MAILER_MAX [undefined] The maximum size of messages that will
- be transported using the smtp, smtp8, esmtp, or dsmtp
- mailers.
-SMTP_MAILER_MAXMSGS [undefined] If defined, the maximum number of
- messages to deliver in a single connection for the
- smtp, smtp8, esmtp, or dsmtp mailers.
-SMTP_MAILER_MAXRCPTS [undefined] If defined, the maximum number of
- recipients to deliver in a single connection for the
- smtp, smtp8, esmtp, or dsmtp mailers.
-SMTP_MAILER_ARGS [TCP $h] The arguments passed to the smtp mailer.
- About the only reason you would want to change this
- would be to change the default port.
-ESMTP_MAILER_ARGS [TCP $h] The arguments passed to the esmtp mailer.
-SMTP8_MAILER_ARGS [TCP $h] The arguments passed to the smtp8 mailer.
-DSMTP_MAILER_ARGS [TCP $h] The arguments passed to the dsmtp mailer.
-RELAY_MAILER_ARGS [TCP $h] The arguments passed to the relay mailer.
-SMTP_MAILER_QGRP [undefined] The queue group for the smtp mailer.
-ESMTP_MAILER_QGRP [undefined] The queue group for the esmtp mailer.
-SMTP8_MAILER_QGRP [undefined] The queue group for the smtp8 mailer.
-DSMTP_MAILER_QGRP [undefined] The queue group for the dsmtp mailer.
-RELAY_MAILER_QGRP [undefined] The queue group for the relay mailer.
-RELAY_MAILER_MAXMSGS [undefined] If defined, the maximum number of
- messages to deliver in a single connection for the
- relay mailer.
-SMTP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
- that ARRIVE from an address that resolves to one of
- the SMTP mailers and which are converted to MIME will
- be labeled with this character set.
-UUCP_MAILER_PATH [/usr/bin/uux] The program used to send UUCP mail.
-UUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default
- flags are `DFMhuU' (and `m' for uucp-new mailer,
- minus `U' for uucp-dom mailer).
-UUCP_MAILER_ARGS [uux - -r -z -a$g -gC $h!rmail ($u)] The arguments
- passed to the UUCP mailer.
-UUCP_MAILER_MAX [100000] The maximum size message accepted for
- transmission by the UUCP mailers.
-UUCP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
- that ARRIVE from an address that resolves to one of
- the UUCP mailers and which are converted to MIME will
- be labeled with this character set.
-UUCP_MAILER_QGRP [undefined] The queue group for the UUCP mailers.
-FAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to
- submit FAX messages.
-FAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX
- mailer.
-FAX_MAILER_MAX [100000] The maximum size message accepted for
- transmission by FAX.
-POP_MAILER_PATH [/usr/lib/mh/spop] The pathname of the POP mailer.
-POP_MAILER_FLAGS [Penu] Flags added to POP mailer. Flags lsDFMq
- are always added.
-POP_MAILER_ARGS [pop $u] The arguments passed to the POP mailer.
-POP_MAILER_QGRP [undefined] The queue group for the pop mailer.
-PROCMAIL_MAILER_PATH [/usr/local/bin/procmail] The path to the procmail
- program. This is also used by
- FEATURE(`local_procmail').
-PROCMAIL_MAILER_FLAGS [SPhnu9] Flags added to Procmail mailer. Flags
- DFM are always set. This is NOT used by
- FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS
- instead.
-PROCMAIL_MAILER_ARGS [procmail -Y -m $h $f $u] The arguments passed to
- the Procmail mailer. This is NOT used by
- FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS
- instead.
-PROCMAIL_MAILER_MAX [undefined] If set, the maximum size message that
- will be accepted by the procmail mailer.
-PROCMAIL_MAILER_QGRP [undefined] The queue group for the procmail mailer.
-MAIL11_MAILER_PATH [/usr/etc/mail11] The path to the mail11 mailer.
-MAIL11_MAILER_FLAGS [nsFx] Flags for the mail11 mailer.
-MAIL11_MAILER_ARGS [mail11 $g $x $h $u] Arguments passed to the mail11
- mailer.
-MAIL11_MAILER_QGRP [undefined] The queue group for the mail11 mailer.
-PH_MAILER_PATH [/usr/local/etc/phquery] The path to the phquery
- program.
-PH_MAILER_FLAGS [ehmu] Flags for the phquery mailer. Flags nrDFM
- are always set.
-PH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer.
-PH_MAILER_QGRP [undefined] The queue group for the ph mailer.
-CYRUS_MAILER_FLAGS [Ah5@/:|] The flags used by the cyrus mailer. The
- flags lsDFMnPq are always included.
-CYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The program used to deliver
- cyrus mail.
-CYRUS_MAILER_ARGS [deliver -e -m $h -- $u] The arguments passed
- to deliver cyrus mail.
-CYRUS_MAILER_MAX [undefined] If set, the maximum size message that
- will be accepted by the cyrus mailer.
-CYRUS_MAILER_USER [cyrus:mail] The user and group to become when
- running the cyrus mailer.
-CYRUS_MAILER_QGRP [undefined] The queue group for the cyrus mailer.
-CYRUS_BB_MAILER_FLAGS [u] The flags used by the cyrusbb mailer.
- The flags lsDFMnP are always included.
-CYRUS_BB_MAILER_ARGS [deliver -e -m $u] The arguments passed
- to deliver cyrusbb mail.
-CYRUSV2_MAILER_FLAGS [A@/:|m] The flags used by the cyrusv2 mailer. The
- flags lsDFMnqXz are always included.
-CYRUSV2_MAILER_MAXMSGS [undefined] If defined, the maximum number of
- messages to deliver in a single connection for the
- cyrusv2 mailer.
-CYRUSV2_MAILER_MAXRCPTS [undefined] If defined, the maximum number of
- recipients to deliver in a single connection for the
- cyrusv2 mailer.
-CYRUSV2_MAILER_ARGS [FILE /var/imap/socket/lmtp] The arguments passed
- to the cyrusv2 mailer. This can be used to
- change the name of the Unix domain socket, or
- to switch to delivery via TCP (e.g., `TCP $h lmtp')
-CYRUSV2_MAILER_QGRP [undefined] The queue group for the cyrusv2 mailer.
-CYRUSV2_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data
- that ARRIVE from an address that resolves to one the
- Cyrus mailer and which are converted to MIME will
- be labeled with this character set.
-confEBINDIR [/usr/libexec] The directory for executables.
- Currently used for FEATURE(`local_lmtp') and
- FEATURE(`smrsh').
-QPAGE_MAILER_FLAGS [mDFMs] The flags used by the qpage mailer.
-QPAGE_MAILER_PATH [/usr/local/bin/qpage] The program used to deliver
- qpage mail.
-QPAGE_MAILER_ARGS [qpage -l0 -m -P$u] The arguments passed
- to deliver qpage mail.
-QPAGE_MAILER_MAX [4096] If set, the maximum size message that
- will be accepted by the qpage mailer.
-QPAGE_MAILER_QGRP [undefined] The queue group for the qpage mailer.
-LOCAL_PROG_QGRP [undefined] The queue group for the prog mailer.
-
-Note: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS:
-MODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of
-the macro Name_MAILER_FLAGS and change can be: flags that should
-be used directly (thus overriding the default value), or if it
-starts with `+' (`-') then those flags are added to (removed from)
-the default value. Example:
-
- MODIFY_MAILER_FLAGS(`LOCAL', `+e')
-
-will add the flag `e' to LOCAL_MAILER_FLAGS. Notice: there are
-several smtp mailers all of which are manipulated individually.
-See the section MAILERS for the available mailer names.
-WARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS
-unconditionally, i.e., without respecting any definitions in an
-OSTYPE setting.
-
-
-+---------+
-| DOMAINS |
-+---------+
-
-You will probably want to collect domain-dependent defines into one
-file, referenced by the DOMAIN macro. For example, the Berkeley
-domain file includes definitions for several internal distinguished
-hosts:
-
-UUCP_RELAY The host that will accept UUCP-addressed email.
- If not defined, all UUCP sites must be directly
- connected.
-BITNET_RELAY The host that will accept BITNET-addressed email.
- If not defined, the .BITNET pseudo-domain won't work.
-DECNET_RELAY The host that will accept DECNET-addressed email.
- If not defined, the .DECNET pseudo-domain and addresses
- of the form node::user will not work.
-FAX_RELAY The host that will accept mail to the .FAX pseudo-domain.
- The "fax" mailer overrides this value.
-LOCAL_RELAY The site that will handle unqualified names -- that
- is, names without an @domain extension.
- Normally MAIL_HUB is preferred for this function.
- LOCAL_RELAY is mostly useful in conjunction with
- FEATURE(`stickyhost') -- see the discussion of
- stickyhost below. If not set, they are assumed to
- belong on this machine. This allows you to have a
- central site to store a company- or department-wide
- alias database. This only works at small sites,
- and only with some user agents.
-LUSER_RELAY The site that will handle lusers -- that is, apparently
- local names that aren't local accounts or aliases. To
- specify a local user instead of a site, set this to
- ``local:username''.
-
-Any of these can be either ``mailer:hostname'' (in which case the
-mailer is the internal mailer name, such as ``uucp-new'' and the hostname
-is the name of the host as appropriate for that mailer) or just a
-``hostname'', in which case a default mailer type (usually ``relay'',
-a variant on SMTP) is used. WARNING: if you have a wildcard MX
-record matching your domain, you probably want to define these to
-have a trailing dot so that you won't get the mail diverted back
-to yourself.
-
-The domain file can also be used to define a domain name, if needed
-(using "DD<domain>") and set certain site-wide features. If all hosts
-at your site masquerade behind one email name, you could also use
-MASQUERADE_AS here.
-
-You do not have to define a domain -- in particular, if you are a
-single machine sitting off somewhere, it is probably more work than
-it's worth. This is just a mechanism for combining "domain dependent
-knowledge" into one place.
-
-
-+---------+
-| MAILERS |
-+---------+
-
-There are fewer mailers supported in this version than the previous
-version, owing mostly to a simpler world. As a general rule, put the
-MAILER definitions last in your .mc file.
-
-local The local and prog mailers. You will almost always
- need these; the only exception is if you relay ALL
- your mail to another site. This mailer is included
- automatically.
-
-smtp The Simple Mail Transport Protocol mailer. This does
- not hide hosts behind a gateway or another other
- such hack; it assumes a world where everyone is
- running the name server. This file actually defines
- five mailers: "smtp" for regular (old-style) SMTP to
- other servers, "esmtp" for extended SMTP to other
- servers, "smtp8" to do SMTP to other servers without
- converting 8-bit data to MIME (essentially, this is
- your statement that you know the other end is 8-bit
- clean even if it doesn't say so), "dsmtp" to do on
- demand delivery, and "relay" for transmission to the
- RELAY_HOST, LUSER_RELAY, or MAIL_HUB.
-
-uucp The UNIX-to-UNIX Copy Program mailer. Actually, this
- defines two mailers, "uucp-old" (a.k.a. "uucp") and
- "uucp-new" (a.k.a. "suucp"). The latter is for when you
- know that the UUCP mailer at the other end can handle
- multiple recipients in one transfer. If the smtp mailer
- is included in your configuration, two other mailers
- ("uucp-dom" and "uucp-uudom") are also defined [warning: you
- MUST specify MAILER(`smtp') before MAILER(`uucp')]. When you
- include the uucp mailer, sendmail looks for all names in
- class {U} and sends them to the uucp-old mailer; all
- names in class {Y} are sent to uucp-new; and all
- names in class {Z} are sent to uucp-uudom. Note that
- this is a function of what version of rmail runs on
- the receiving end, and hence may be out of your control.
- See the section below describing UUCP mailers in more
- detail.
-
-usenet Usenet (network news) delivery. If this is specified,
- an extra rule is added to ruleset 0 that forwards all
- local email for users named ``group.usenet'' to the
- ``inews'' program. Note that this works for all groups,
- and may be considered a security problem.
-
-fax Facsimile transmission. This is experimental and based
- on Sam Leffler's HylaFAX software. For more information,
- see http://www.hylafax.org/.
-
-pop Post Office Protocol.
-
-procmail An interface to procmail (does not come with sendmail).
- This is designed to be used in mailertables. For example,
- a common question is "how do I forward all mail for a given
- domain to a single person?". If you have this mailer
- defined, you could set up a mailertable reading:
-
- host.com procmail:/etc/procmailrcs/host.com
-
- with the file /etc/procmailrcs/host.com reading:
-
- :0 # forward mail for host.com
- ! -oi -f $1 person@other.host
-
- This would arrange for (anything)@host.com to be sent
- to person@other.host. In a procmail script, $1 is the
- name of the sender and $2 is the name of the recipient.
- If you use this with FEATURE(`local_procmail'), the FEATURE
- should be listed first.
-
- Of course there are other ways to solve this particular
- problem, e.g., a catch-all entry in a virtusertable.
-
-mail11 The DECnet mail11 mailer, useful only if you have the mail11
- program from gatekeeper.dec.com:/pub/DEC/gwtools (and
- DECnet, of course). This is for Phase IV DECnet support;
- if you have Phase V at your site you may have additional
- problems.
-
-phquery The phquery program. This is somewhat counterintuitively
- referenced as the "ph" mailer internally. It can be used
- to do CCSO name server lookups. The phquery program, which
- this mailer uses, is distributed with the ph client.
-
-cyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to
- a local cyrus user. this mailer can make use of the
- "user+detail@local.host" syntax (see
- FEATURE(`preserve_local_plus_detail')); it will deliver the
- mail to the user's "detail" mailbox if the mailbox's ACL
- permits. The cyrusbb mailer delivers to a system-wide
- cyrus mailbox if the mailbox's ACL permits. The cyrus
- mailer must be defined after the local mailer.
-
-cyrusv2 The mailer for Cyrus v2.x. The cyrusv2 mailer delivers to
- local cyrus users via LMTP. This mailer can make use of the
- "user+detail@local.host" syntax (see
- FEATURE(`preserve_local_plus_detail')); it will deliver the
- mail to the user's "detail" mailbox if the mailbox's ACL
- permits. The cyrusv2 mailer must be defined after the
- local mailer.
-
-qpage A mailer for QuickPage, a pager interface. See
- http://www.qpage.org/ for further information.
-
-The local mailer accepts addresses of the form "user+detail", where
-the "+detail" is not used for mailbox matching but is available
-to certain local mail programs (in particular, see
-FEATURE(`local_procmail')). For example, "eric", "eric+sendmail", and
-"eric+sww" all indicate the same user, but additional arguments <null>,
-"sendmail", and "sww" may be provided for use in sorting mail.
-
-
-+----------+
-| FEATURES |
-+----------+
-
-Special features can be requested using the "FEATURE" macro. For
-example, the .mc line:
-
- FEATURE(`use_cw_file')
-
-tells sendmail that you want to have it read an /etc/mail/local-host-names
-file to get values for class {w}. A FEATURE may contain up to 9
-optional parameters -- for example:
-
- FEATURE(`mailertable', `dbm /usr/lib/mailertable')
-
-The default database map type for the table features can be set with
-
- define(`DATABASE_MAP_TYPE', `dbm')
-
-which would set it to use ndbm databases. The default is the Berkeley DB
-hash database format. Note that you must still declare a database map type
-if you specify an argument to a FEATURE. DATABASE_MAP_TYPE is only used
-if no argument is given for the FEATURE. It must be specified before any
-feature that uses a map.
-
-Also, features which can take a map definition as an argument can also take
-the special keyword `LDAP'. If that keyword is used, the map will use the
-LDAP definition described in the ``USING LDAP FOR ALIASES, MAPS, AND
-CLASSES'' section below.
-
-Available features are:
-
-use_cw_file Read the file /etc/mail/local-host-names file to get
- alternate names for this host. This might be used if you
- were on a host that MXed for a dynamic set of other hosts.
- If the set is static, just including the line "Cw<name1>
- <name2> ..." (where the names are fully qualified domain
- names) is probably superior. The actual filename can be
- overridden by redefining confCW_FILE.
-
-use_ct_file Read the file /etc/mail/trusted-users file to get the
- names of users that will be ``trusted'', that is, able to
- set their envelope from address using -f without generating
- a warning message. The actual filename can be overridden
- by redefining confCT_FILE.
-
-redirect Reject all mail addressed to "address.REDIRECT" with
- a ``551 User has moved; please try <address>'' message.
- If this is set, you can alias people who have left
- to their new address with ".REDIRECT" appended.
-
-nouucp Don't route UUCP addresses. This feature takes one
- parameter:
- `reject': reject addresses which have "!" in the local
- part unless it originates from a system
- that is allowed to relay.
- `nospecial': don't do anything special with "!".
- Warnings: 1. See the notice in the anti-spam section.
- 2. don't remove "!" from OperatorChars if `reject' is
- given as parameter.
-
-nocanonify Don't pass addresses to $[ ... $] for canonification
- by default, i.e., host/domain names are considered canonical,
- except for unqualified names, which must not be used in this
- mode (violation of the standard). It can be changed by
- setting the DaemonPortOptions modifiers (M=). That is,
- FEATURE(`nocanonify') will be overridden by setting the
- 'c' flag. Conversely, if FEATURE(`nocanonify') is not used,
- it can be emulated by setting the 'C' flag
- (DaemonPortOptions=Modifiers=C). This would generally only
- be used by sites that only act as mail gateways or which have
- user agents that do full canonification themselves. You may
- also want to use
- "define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off
- the usual resolver options that do a similar thing.
-
- An exception list for FEATURE(`nocanonify') can be
- specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE,
- i.e., a list of domains which are nevertheless passed to
- $[ ... $] for canonification. This is useful to turn on
- canonification for local domains, e.g., use
- CANONIFY_DOMAIN(`my.domain my') to canonify addresses
- which end in "my.domain" or "my".
- Another way to require canonification in the local
- domain is CANONIFY_DOMAIN(`$=m').
-
- A trailing dot is added to addresses with more than
- one component in it such that other features which
- expect a trailing dot (e.g., virtusertable) will
- still work.
-
- If `canonify_hosts' is specified as parameter, i.e.,
- FEATURE(`nocanonify', `canonify_hosts'), then
- addresses which have only a hostname, e.g.,
- <user@host>, will be canonified (and hopefully fully
- qualified), too.
-
-stickyhost This feature is sometimes used with LOCAL_RELAY,
- although it can be used for a different effect with
- MAIL_HUB.
-
- When used without MAIL_HUB, email sent to
- "user@local.host" are marked as "sticky" -- that
- is, the local addresses aren't matched against UDB,
- don't go through ruleset 5, and are not forwarded to
- the LOCAL_RELAY (if defined).
-
- With MAIL_HUB, mail addressed to "user@local.host"
- is forwarded to the mail hub, with the envelope
- address still remaining "user@local.host".
- Without stickyhost, the envelope would be changed
- to "user@mail_hub", in order to protect against
- mailing loops.
-
-mailertable Include a "mailer table" which can be used to override
- routing for particular domains (which are not in class {w},
- i.e. local host names). The argument of the FEATURE may be
- the key definition. If none is specified, the definition
- used is:
-
- hash /etc/mail/mailertable
-
- Keys in this database are fully qualified domain names
- or partial domains preceded by a dot -- for example,
- "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU". As a
- special case of the latter, "." matches any domain not
- covered by other keys. Values must be of the form:
- mailer:domain
- where "mailer" is the internal mailer name, and "domain"
- is where to send the message. These maps are not
- reflected into the message header. As a special case,
- the forms:
- local:user
- will forward to the indicated user using the local mailer,
- local:
- will forward to the original user in the e-mail address
- using the local mailer, and
- error:code message
- error:D.S.N:code message
- will give an error message with the indicated SMTP reply
- code and message, where D.S.N is an RFC 1893 compliant
- error code.
-
-domaintable Include a "domain table" which can be used to provide
- domain name mapping. Use of this should really be
- limited to your own domains. It may be useful if you
- change names (e.g., your company changes names from
- oldname.com to newname.com). The argument of the
- FEATURE may be the key definition. If none is specified,
- the definition used is:
-
- hash /etc/mail/domaintable
-
- The key in this table is the domain name; the value is
- the new (fully qualified) domain. Anything in the
- domaintable is reflected into headers; that is, this
- is done in ruleset 3.
-
-bitdomain Look up bitnet hosts in a table to try to turn them into
- internet addresses. The table can be built using the
- bitdomain program contributed by John Gardiner Myers.
- The argument of the FEATURE may be the key definition; if
- none is specified, the definition used is:
-
- hash /etc/mail/bitdomain
-
- Keys are the bitnet hostname; values are the corresponding
- internet hostname.
-
-uucpdomain Similar feature for UUCP hosts. The default map definition
- is:
-
- hash /etc/mail/uudomain
-
- At the moment there is no automagic tool to build this
- database.
-
-always_add_domain
- Include the local host domain even on locally delivered
- mail. Normally it is not added on unqualified names.
- However, if you use a shared message store but do not use
- the same user name space everywhere, you may need the host
- name on local names. An optional argument specifies
- another domain to be added than the local.
-
-allmasquerade If masquerading is enabled (using MASQUERADE_AS), this
- feature will cause recipient addresses to also masquerade
- as being from the masquerade host. Normally they get
- the local hostname. Although this may be right for
- ordinary users, it can break local aliases. For example,
- if you send to "localalias", the originating sendmail will
- find that alias and send to all members, but send the
- message with "To: localalias@masqueradehost". Since that
- alias likely does not exist, replies will fail. Use this
- feature ONLY if you can guarantee that the ENTIRE
- namespace on your masquerade host supersets all the
- local entries.
-
-limited_masquerade
- Normally, any hosts listed in class {w} are masqueraded. If
- this feature is given, only the hosts listed in class {M} (see
- below: MASQUERADE_DOMAIN) are masqueraded. This is useful
- if you have several domains with disjoint namespaces hosted
- on the same machine.
-
-masquerade_entire_domain
- If masquerading is enabled (using MASQUERADE_AS) and
- MASQUERADE_DOMAIN (see below) is set, this feature will
- cause addresses to be rewritten such that the masquerading
- domains are actually entire domains to be hidden. All
- hosts within the masquerading domains will be rewritten
- to the masquerade name (used in MASQUERADE_AS). For example,
- if you have:
-
- MASQUERADE_AS(`masq.com')
- MASQUERADE_DOMAIN(`foo.org')
- MASQUERADE_DOMAIN(`bar.com')
-
- then *foo.org and *bar.com are converted to masq.com. Without
- this feature, only foo.org and bar.com are masqueraded.
-
- NOTE: only domains within your jurisdiction and
- current hierarchy should be masqueraded using this.
-
-local_no_masquerade
- This feature prevents the local mailer from masquerading even
- if MASQUERADE_AS is used. MASQUERADE_AS will only have effect
- on addresses of mail going outside the local domain.
-
-masquerade_envelope
- If masquerading is enabled (using MASQUERADE_AS) or the
- genericstable is in use, this feature will cause envelope
- addresses to also masquerade as being from the masquerade
- host. Normally only the header addresses are masqueraded.
-
-genericstable This feature will cause unqualified addresses (i.e., without
- a domain) and addresses with a domain listed in class {G}
- to be looked up in a map and turned into another ("generic")
- form, which can change both the domain name and the user name.
- Notice: if you use an MSP (as it is default starting with
- 8.12), the MTA will only receive qualified addresses from the
- MSP (as required by the RFCs). Hence you need to add your
- domain to class {G}. This feature is similar to the userdb
- functionality. The same types of addresses as for
- masquerading are looked up, i.e., only header sender
- addresses unless the allmasquerade and/or masquerade_envelope
- features are given. Qualified addresses must have the domain
- part in class {G}; entries can be added to this class by the
- macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE (analogously
- to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE, see below).
-
- The argument of FEATURE(`genericstable') may be the map
- definition; the default map definition is:
-
- hash /etc/mail/genericstable
-
- The key for this table is either the full address, the domain
- (with a leading @; the localpart is passed as first argument)
- or the unqualified username (tried in the order mentioned);
- the value is the new user address. If the new user address
- does not include a domain, it will be qualified in the standard
- manner, i.e., using $j or the masquerade name. Note that the
- address being looked up must be fully qualified. For local
- mail, it is necessary to use FEATURE(`always_add_domain')
- for the addresses to be qualified.
- The "+detail" of an address is passed as %1, so entries like
-
- old+*@foo.org new+%1@example.com
- gen+*@foo.org %1@example.com
-
- and other forms are possible.
-
-generics_entire_domain
- If the genericstable is enabled and GENERICS_DOMAIN or
- GENERICS_DOMAIN_FILE is used, this feature will cause
- addresses to be searched in the map if their domain
- parts are subdomains of elements in class {G}.
-
-virtusertable A domain-specific form of aliasing, allowing multiple
- virtual domains to be hosted on one machine. For example,
- if the virtuser table contained:
-
- info@foo.com foo-info
- info@bar.com bar-info
- joe@bar.com error:nouser 550 No such user here
- jax@bar.com error:5.7.0:550 Address invalid
- @baz.org jane@example.net
-
- then mail addressed to info@foo.com will be sent to the
- address foo-info, mail addressed to info@bar.com will be
- delivered to bar-info, and mail addressed to anyone at baz.org
- will be sent to jane@example.net, mail to joe@bar.com will
- be rejected with the specified error message, and mail to
- jax@bar.com will also have a RFC 1893 compliant error code
- 5.7.0.
-
- The username from the original address is passed
- as %1 allowing:
-
- @foo.org %1@example.com
-
- meaning someone@foo.org will be sent to someone@example.com.
- Additionally, if the local part consists of "user+detail"
- then "detail" is passed as %2 and "+detail" is passed as %3
- when a match against user+* is attempted, so entries like
-
- old+*@foo.org new+%2@example.com
- gen+*@foo.org %2@example.com
- +*@foo.org %1%3@example.com
- X++@foo.org Z%3@example.com
- @bar.org %1%3
-
- and other forms are possible. Note: to preserve "+detail"
- for a default case (@domain) %1%3 must be used as RHS.
- There are two wildcards after "+": "+" matches only a non-empty
- detail, "*" matches also empty details, e.g., user+@foo.org
- matches +*@foo.org but not ++@foo.org. This can be used
- to ensure that the parameters %2 and %3 are not empty.
-
- All the host names on the left hand side (foo.com, bar.com,
- and baz.org) must be in class {w} or class {VirtHost}. The
- latter can be defined by the macros VIRTUSER_DOMAIN or
- VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
- MASQUERADE_DOMAIN_FILE, see below). If VIRTUSER_DOMAIN or
- VIRTUSER_DOMAIN_FILE is used, then the entries of class
- {VirtHost} are added to class {R}, i.e., relaying is allowed
- to (and from) those domains. The default map definition is:
-
- hash /etc/mail/virtusertable
-
- A new definition can be specified as the second argument of
- the FEATURE macro, such as
-
- FEATURE(`virtusertable', `dbm /etc/mail/virtusers')
-
-virtuser_entire_domain
- If the virtusertable is enabled and VIRTUSER_DOMAIN or
- VIRTUSER_DOMAIN_FILE is used, this feature will cause
- addresses to be searched in the map if their domain
- parts are subdomains of elements in class {VirtHost}.
-
-ldap_routing Implement LDAP-based e-mail recipient routing according to
- the Internet Draft draft-lachman-laser-ldap-mail-routing-01.
- This provides a method to re-route addresses with a
- domain portion in class {LDAPRoute} to either a
- different mail host or a different address. Hosts can
- be added to this class using LDAPROUTE_DOMAIN and
- LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
- MASQUERADE_DOMAIN_FILE, see below).
-
- See the LDAP ROUTING section below for more information.
-
-nodns If you aren't running DNS at your site (for example,
- you are UUCP-only connected). It's hard to consider
- this a "feature", but hey, it had to go somewhere.
- Actually, as of 8.7 this is a no-op -- remove "dns" from
- the hosts service switch entry instead.
-
-nullclient This is a special case -- it creates a configuration file
- containing nothing but support for forwarding all mail to a
- central hub via a local SMTP-based network. The argument
- is the name of that hub.
-
- The only other feature that should be used in conjunction
- with this one is FEATURE(`nocanonify'). No mailers
- should be defined. No aliasing or forwarding is done.
-
-local_lmtp Use an LMTP capable local mailer. The argument to this
- feature is the pathname of an LMTP capable mailer. By
- default, mail.local is used. This is expected to be the
- mail.local which came with the 8.9 distribution which is
- LMTP capable. The path to mail.local is set by the
- confEBINDIR m4 variable -- making the default
- LOCAL_MAILER_PATH /usr/libexec/mail.local.
- WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
- i.e., without respecting any definitions in an OSTYPE setting.
-
-local_procmail Use procmail or another delivery agent as the local mailer.
- The argument to this feature is the pathname of the
- delivery agent, which defaults to PROCMAIL_MAILER_PATH.
- Note that this does NOT use PROCMAIL_MAILER_FLAGS or
- PROCMAIL_MAILER_ARGS for the local mailer; tweak
- LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or
- specify the appropriate parameters. When procmail is used,
- the local mailer can make use of the
- "user+indicator@local.host" syntax; normally the +indicator
- is just tossed, but by default it is passed as the -a
- argument to procmail.
-
- This feature can take up to three arguments:
-
- 1. Path to the mailer program
- [default: /usr/local/bin/procmail]
- 2. Argument vector including name of the program
- [default: procmail -Y -a $h -d $u]
- 3. Flags for the mailer [default: SPfhn9]
-
- Empty arguments cause the defaults to be taken.
- Note that if you are on a system with a broken
- setreuid() call, you may need to add -f $f to the procmail
- argument vector to pass the proper sender to procmail.
-
- For example, this allows it to use the maildrop
- (http://www.flounder.net/~mrsam/maildrop/) mailer instead
- by specifying:
-
- FEATURE(`local_procmail', `/usr/local/bin/maildrop',
- `maildrop -d $u')
-
- or scanmails using:
-
- FEATURE(`local_procmail', `/usr/local/bin/scanmails')
-
- WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
- i.e., without respecting any definitions in an OSTYPE setting.
-
-bestmx_is_local Accept mail as though locally addressed for any host that
- lists us as the best possible MX record. This generates
- additional DNS traffic, but should be OK for low to
- medium traffic hosts. The argument may be a set of
- domains, which will limit the feature to only apply to
- these domains -- this will reduce unnecessary DNS
- traffic. THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH
- WILDCARD MX RECORDS!!! If you have a wildcard MX record
- that matches your domain, you cannot use this feature.
-
-smrsh Use the SendMail Restricted SHell (smrsh) provided
- with the distribution instead of /bin/sh for mailing
- to programs. This improves the ability of the local
- system administrator to control what gets run via
- e-mail. If an argument is provided it is used as the
- pathname to smrsh; otherwise, the path defined by
- confEBINDIR is used for the smrsh binary -- by default,
- /usr/libexec/smrsh is assumed.
-
-promiscuous_relay
- By default, the sendmail configuration files do not permit
- mail relaying (that is, accepting mail from outside your
- local host (class {w}) and sending it to another host than
- your local host). This option sets your site to allow
- mail relaying from any site to any site. In almost all
- cases, it is better to control relaying more carefully
- with the access map, class {R}, or authentication. Domains
- can be added to class {R} by the macros RELAY_DOMAIN or
- RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
- MASQUERADE_DOMAIN_FILE, see below).
-
-relay_entire_domain
- This option allows any host in your domain as defined by
- class {m} to use your server for relaying. Notice: make
- sure that your domain is not just a top level domain,
- e.g., com. This can happen if you give your host a name
- like example.com instead of host.example.com.
-
-relay_hosts_only
- By default, names that are listed as RELAY in the access
- db and class {R} are treated as domain names, not host names.
- For example, if you specify ``foo.com'', then mail to or
- from foo.com, abc.foo.com, or a.very.deep.domain.foo.com
- will all be accepted for relaying. This feature changes
- the behaviour to lookup individual host names only.
-
-relay_based_on_MX
- Turns on the ability to allow relaying based on the MX
- records of the host portion of an incoming recipient; that
- is, if an MX record for host foo.com points to your site,
- you will accept and relay mail addressed to foo.com. See
- description below for more information before using this
- feature. Also, see the KNOWNBUGS entry regarding bestmx
- map lookups.
-
- FEATURE(`relay_based_on_MX') does not necessarily allow
- routing of these messages which you expect to be allowed,
- if route address syntax (or %-hack syntax) is used. If
- this is a problem, add entries to the access-table or use
- FEATURE(`loose_relay_check').
-
-relay_mail_from
- Allows relaying if the mail sender is listed as RELAY in
- the access map. If an optional argument `domain' (this
- is the literal word `domain', not a placeholder) is given,
- relaying can be allowed just based on the domain portion
- of the sender address. This feature should only be used if
- absolutely necessary as the sender address can be easily
- forged. Use of this feature requires the "From:" tag to
- be used for the key in the access map; see the discussion
- of tags and FEATURE(`relay_mail_from') in the section on
- anti-spam configuration control.
-
-relay_local_from
- Allows relaying if the domain portion of the mail sender
- is a local host. This should only be used if absolutely
- necessary as it opens a window for spammers. Specifically,
- they can send mail to your mail server that claims to be
- from your domain (either directly or via a routed address),
- and you will go ahead and relay it out to arbitrary hosts
- on the Internet.
-
-accept_unqualified_senders
- Normally, MAIL FROM: commands in the SMTP session will be
- refused if the connection is a network connection and the
- sender address does not include a domain name. If your
- setup sends local mail unqualified (i.e., MAIL FROM: <joe>),
- you will need to use this feature to accept unqualified
- sender addresses. Setting the DaemonPortOptions modifier
- 'u' overrides the default behavior, i.e., unqualified
- addresses are accepted even without this FEATURE.
- If this FEATURE is not used, the DaemonPortOptions modifier
- 'f' can be used to enforce fully qualified addresses.
-
-accept_unresolvable_domains
- Normally, MAIL FROM: commands in the SMTP session will be
- refused if the host part of the argument to MAIL FROM:
- cannot be located in the host name service (e.g., an A or
- MX record in DNS). If you are inside a firewall that has
- only a limited view of the Internet host name space, this
- could cause problems. In this case you probably want to
- use this feature to accept all domains on input, even if
- they are unresolvable.
-
-access_db Turns on the access database feature. The access db gives
- you the ability to allow or refuse to accept mail from
- specified domains for administrative reasons. Moreover,
- it can control the behavior of sendmail in various situations.
- By default, the access database specification is:
-
- hash -T<TMPF> /etc/mail/access
-
- See the anti-spam configuration control section for further
- important information about this feature. Notice:
- "-T<TMPF>" is meant literal, do not replace it by anything.
-
-blacklist_recipients
- Turns on the ability to block incoming mail for certain
- recipient usernames, hostnames, or addresses. For
- example, you can block incoming mail to user nobody,
- host foo.mydomain.com, or guest@bar.mydomain.com.
- These specifications are put in the access db as
- described in the anti-spam configuration control section
- later in this document.
-
-delay_checks The rulesets check_mail and check_relay will not be called
- when a client connects or issues a MAIL command, respectively.
- Instead, those rulesets will be called by the check_rcpt
- ruleset; they will be skipped under certain circumstances.
- See "Delay all checks" in the anti-spam configuration control
- section. Note: this feature is incompatible to the versions
- in 8.10 and 8.11.
-
-dnsbl Turns on rejection of hosts found in an DNS based rejection
- list. If an argument is provided it is used as the domain
- in which blocked hosts are listed; otherwise it defaults to
- blackholes.mail-abuse.org. An explanation for an DNS based
- rejection list can be found at http://mail-abuse.org/rbl/.
- A second argument can be used to change the default error
- message. Without that second argument, the error message
- will be
- Rejected: IP-ADDRESS listed at SERVER
- where IP-ADDRESS and SERVER are replaced by the appropriate
- information. By default, temporary lookup failures are
- ignored. This behavior can be changed by specifying a
- third argument, which must be either `t' or a full error
- message. See the anti-spam configuration control section for
- an example. The dnsbl feature can be included several times
- to query different DNS based rejection lists. See also
- enhdnsbl for an enhanced version.
-
- Set the DNSBL_MAP mc option to change the default map
- definition from `host'. Set the DNSBL_MAP_OPT mc option
- to add additional options to the map specification used.
-
- Some DNS based rejection lists cause failures if asked
- for AAAA records. If your sendmail version is compiled
- with IPv6 support (NETINET6) and you experience this
- problem, add
-
- define(`DNSBL_MAP', `dns -R A')
-
- before the first use of this feature. Alternatively you
- can use enhdnsbl instead (see below). Moreover, this
- statement can be used to reduce the number of DNS retries,
- e.g.,
-
- define(`DNSBL_MAP', `dns -R A -r2')
-
- See below (EDNSBL_TO) for an explanation.
-
- NOTE: The default DNS blacklist, blackholes.mail-abuse.org,
- is a service offered by the Mail Abuse Prevention System
- (MAPS). As of July 31, 2001, MAPS is a subscription
- service, so using that network address won't work if you
- haven't subscribed. Contact MAPS to subscribe
- (http://mail-abuse.org/).
-
-enhdnsbl Enhanced version of dnsbl (see above). Further arguments
- (up to 5) can be used to specify specific return values
- from lookups. Temporary lookup failures are ignored unless
- a third argument is given, which must be either `t' or a full
- error message. By default, any successful lookup will
- generate an error. Otherwise the result of the lookup is
- compared with the supplied argument(s), and only if a match
- occurs an error is generated. For example,
-
- FEATURE(`enhdnsbl', `dnsbl.example.com', `', `t', `127.0.0.2.')
-
- will reject the e-mail if the lookup returns the value
- ``127.0.0.2.'', or generate a 451 response if the lookup
- temporarily failed. The arguments can contain metasymbols
- as they are allowed in the LHS of rules. As the example
- shows, the default values are also used if an empty argument,
- i.e., `', is specified. This feature requires that sendmail
- has been compiled with the flag DNSMAP (see sendmail/README).
-
- Set the EDNSBL_TO mc option to change the DNS retry count
- from the default value of 5, this can be very useful when
- a DNS server is not responding, which in turn may cause
- clients to time out (an entry stating
-
- did not issue MAIL/EXPN/VRFY/ETRN
-
- will be logged).
-
-lookupdotdomain Look up also .domain in the access map. This allows to
- match only subdomains. It does not work well with
- FEATURE(`relay_hosts_only'), because most lookups for
- subdomains are suppressed by the latter feature.
-
-loose_relay_check
- Normally, if % addressing is used for a recipient, e.g.
- user%site@othersite, and othersite is in class {R}, the
- check_rcpt ruleset will strip @othersite and recheck
- user@site for relaying. This feature changes that
- behavior. It should not be needed for most installations.
-
-authinfo Provide a separate map for client side authentication
- information. See SMTP AUTHENTICATION for details.
- By default, the authinfo database specification is:
-
- hash /etc/mail/authinfo
-
-preserve_luser_host
- Preserve the name of the recipient host if LUSER_RELAY is
- used. Without this option, the domain part of the
- recipient address will be replaced by the host specified as
- LUSER_RELAY. This feature only works if the hostname is
- passed to the mailer (see mailer triple in op.me). Note
- that in the default configuration the local mailer does not
- receive the hostname, i.e., the mailer triple has an empty
- hostname.
-
-preserve_local_plus_detail
- Preserve the +detail portion of the address when passing
- address to local delivery agent. Disables alias and
- .forward +detail stripping (e.g., given user+detail, only
- that address will be looked up in the alias file; user+* and
- user will not be looked up). Only use if the local
- delivery agent in use supports +detail addressing.
-
-compat_check Enable ruleset check_compat to look up pairs of addresses
- with the Compat: tag -- Compat:sender<@>recipient -- in the
- access map. Valid values for the RHS include
- DISCARD silently discard recipient
- TEMP: return a temporary error
- ERROR: return a permanent error
- In the last two cases, a 4xy/5xy SMTP reply code should
- follow the colon.
-
-no_default_msa Don't generate the default MSA daemon, i.e.,
- DAEMON_OPTIONS(`Port=587,Name=MSA,M=E')
- To define a MSA daemon with other parameters, use this
- FEATURE and introduce new settings via DAEMON_OPTIONS().
-
-msp Defines config file for Message Submission Program.
- See sendmail/SECURITY for details and cf/cf/submit.mc how
- to use it. An optional argument can be used to override
- the default of `[localhost]' to use as host to send all
- e-mails to. Note that MX records will be used if the
- specified hostname is not in square brackets (e.g.,
- [hostname]). If `MSA' is specified as second argument then
- port 587 is used to contact the server. Example:
-
- FEATURE(`msp', `', `MSA')
-
- Some more hints about possible changes can be found below
- in the section MESSAGE SUBMISSION PROGRAM.
-
- Note: Due to many problems, submit.mc uses
-
- FEATURE(`msp', `[127.0.0.1]')
-
- by default. If you have a machine with IPv6 only,
- change it to
-
- FEATURE(`msp', `[IPv6:::1]')
-
- If you want to continue using '[localhost]', (the behavior
- up to 8.12.6), use
-
- FEATURE(`msp')
-
-queuegroup A simple example how to select a queue group based
- on the full e-mail address or the domain of the
- recipient. Selection is done via entries in the
- access map using the tag QGRP:, for example:
-
- QGRP:example.com main
- QGRP:friend@some.org others
- QGRP:my.domain local
-
- where "main", "others", and "local" are names of
- queue groups. If an argument is specified, it is used
- as default queue group.
-
- Note: please read the warning in doc/op/op.me about
- queue groups and possible queue manipulations.
-
-+-------+
-| HACKS |
-+-------+
-
-Some things just can't be called features. To make this clear,
-they go in the hack subdirectory and are referenced using the HACK
-macro. These will tend to be site-dependent. The release
-includes the Berkeley-dependent "cssubdomain" hack (that makes
-sendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU;
-this is intended as a short-term aid while moving hosts into
-subdomains.
-
-
-+--------------------+
-| SITE CONFIGURATION |
-+--------------------+
-
- *****************************************************
- * This section is really obsolete, and is preserved *
- * only for back compatibility. You should plan on *
- * using mailertables for new installations. In *
- * particular, it doesn't work for the newer forms *
- * of UUCP mailers, such as uucp-uudom. *
- *****************************************************
-
-Complex sites will need more local configuration information, such as
-lists of UUCP hosts they speak with directly. This can get a bit more
-tricky. For an example of a "complex" site, see cf/ucbvax.mc.
-
-The SITECONFIG macro allows you to indirectly reference site-dependent
-configuration information stored in the siteconfig subdirectory. For
-example, the line
-
- SITECONFIG(`uucp.ucbvax', `ucbvax', `U')
-
-reads the file uucp.ucbvax for local connection information. The
-second parameter is the local name (in this case just "ucbvax" since
-it is locally connected, and hence a UUCP hostname). The third
-parameter is the name of both a macro to store the local name (in
-this case, {U}) and the name of the class (e.g., {U}) in which to store
-the host information read from the file. Another SITECONFIG line reads
-
- SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W')
-
-This says that the file uucp.ucbarpa contains the list of UUCP sites
-connected to ucbarpa.Berkeley.EDU. Class {W} will be used to
-store this list, and $W is defined to be ucbarpa.Berkeley.EDU, that
-is, the name of the relay to which the hosts listed in uucp.ucbarpa
-are connected. [The machine ucbarpa is gone now, but this
-out-of-date configuration file has been left around to demonstrate
-how you might do this.]
-
-Note that the case of SITECONFIG with a third parameter of ``U'' is
-special; the second parameter is assumed to be the UUCP name of the
-local site, rather than the name of a remote site, and the UUCP name
-is entered into class {w} (the list of local hostnames) as $U.UUCP.
-
-The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing
-more than a sequence of SITE macros describing connectivity. For
-example:
-
- SITE(`cnmat')
- SITE(`sgi olympus')
-
-The second example demonstrates that you can use two names on the
-same line; these are usually aliases for the same host (or are at
-least in the same company).
-
-
-+--------------------+
-| USING UUCP MAILERS |
-+--------------------+
-
-It's hard to get UUCP mailers right because of the extremely ad hoc
-nature of UUCP addressing. These config files are really designed
-for domain-based addressing, even for UUCP sites.
-
-There are four UUCP mailers available. The choice of which one to
-use is partly a matter of local preferences and what is running at
-the other end of your UUCP connection. Unlike good protocols that
-define what will go over the wire, UUCP uses the policy that you
-should do what is right for the other end; if they change, you have
-to change. This makes it hard to do the right thing, and discourages
-people from updating their software. In general, if you can avoid
-UUCP, please do.
-
-The major choice is whether to go for a domainized scheme or a
-non-domainized scheme. This depends entirely on what the other
-end will recognize. If at all possible, you should encourage the
-other end to go to a domain-based system -- non-domainized addresses
-don't work entirely properly.
-
-The four mailers are:
-
- uucp-old (obsolete name: "uucp")
- This is the oldest, the worst (but the closest to UUCP) way of
- sending messages accros UUCP connections. It does bangify
- everything and prepends $U (your UUCP name) to the sender's
- address (which can already be a bang path itself). It can
- only send to one address at a time, so it spends a lot of
- time copying duplicates of messages. Avoid this if at all
- possible.
-
- uucp-new (obsolete name: "suucp")
- The same as above, except that it assumes that in one rmail
- command you can specify several recipients. It still has a
- lot of other problems.
-
- uucp-dom
- This UUCP mailer keeps everything as domain addresses.
- Basically, it uses the SMTP mailer rewriting rules. This mailer
- is only included if MAILER(`smtp') is specified before
- MAILER(`uucp').
-
- Unfortunately, a lot of UUCP mailer transport agents require
- bangified addresses in the envelope, although you can use
- domain-based addresses in the message header. (The envelope
- shows up as the From_ line on UNIX mail.) So....
-
- uucp-uudom
- This is a cross between uucp-new (for the envelope addresses)
- and uucp-dom (for the header addresses). It bangifies the
- envelope sender (From_ line in messages) without adding the
- local hostname, unless there is no host name on the address
- at all (e.g., "wolf") or the host component is a UUCP host name
- instead of a domain name ("somehost!wolf" instead of
- "some.dom.ain!wolf"). This is also included only if MAILER(`smtp')
- is also specified earlier.
-
-Examples:
-
-On host grasp.insa-lyon.fr (UUCP host name "grasp"), the following
-summarizes the sender rewriting for various mailers.
-
-Mailer sender rewriting in the envelope
------- ------ -------------------------
-uucp-{old,new} wolf grasp!wolf
-uucp-dom wolf wolf@grasp.insa-lyon.fr
-uucp-uudom wolf grasp.insa-lyon.fr!wolf
-
-uucp-{old,new} wolf@fr.net grasp!fr.net!wolf
-uucp-dom wolf@fr.net wolf@fr.net
-uucp-uudom wolf@fr.net fr.net!wolf
-
-uucp-{old,new} somehost!wolf grasp!somehost!wolf
-uucp-dom somehost!wolf somehost!wolf@grasp.insa-lyon.fr
-uucp-uudom somehost!wolf grasp.insa-lyon.fr!somehost!wolf
-
-If you are using one of the domainized UUCP mailers, you really want
-to convert all UUCP addresses to domain format -- otherwise, it will
-do it for you (and probably not the way you expected). For example,
-if you have the address foo!bar!baz (and you are not sending to foo),
-the heuristics will add the @uucp.relay.name or @local.host.name to
-this address. However, if you map foo to foo.host.name first, it
-will not add the local hostname. You can do this using the uucpdomain
-feature.
-
-
-+-------------------+
-| TWEAKING RULESETS |
-+-------------------+
-
-For more complex configurations, you can define special rules.
-The macro LOCAL_RULE_3 introduces rules that are used in canonicalizing
-the names. Any modifications made here are reflected in the header.
-
-A common use is to convert old UUCP addresses to SMTP addresses using
-the UUCPSMTP macro. For example:
-
- LOCAL_RULE_3
- UUCPSMTP(`decvax', `decvax.dec.com')
- UUCPSMTP(`research', `research.att.com')
-
-will cause addresses of the form "decvax!user" and "research!user"
-to be converted to "user@decvax.dec.com" and "user@research.att.com"
-respectively.
-
-This could also be used to look up hosts in a database map:
-
- LOCAL_RULE_3
- R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3
-
-This map would be defined in the LOCAL_CONFIG portion, as shown below.
-
-Similarly, LOCAL_RULE_0 can be used to introduce new parsing rules.
-For example, new rules are needed to parse hostnames that you accept
-via MX records. For example, you might have:
-
- LOCAL_RULE_0
- R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.>
-
-You would use this if you had installed an MX record for cnmat.Berkeley.EDU
-pointing at this host; this rule catches the message and forwards it on
-using UUCP.
-
-You can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2.
-These rulesets are normally empty.
-
-A similar macro is LOCAL_CONFIG. This introduces lines added after the
-boilerplate option setting but before rulesets. Do not declare rulesets in
-the LOCAL_CONFIG section. It can be used to declare local database maps or
-whatever. For example:
-
- LOCAL_CONFIG
- Khostmap hash /etc/mail/hostmap
- Kyplocal nis -m hosts.byname
-
-
-+---------------------------+
-| MASQUERADING AND RELAYING |
-+---------------------------+
-
-You can have your host masquerade as another using
-
- MASQUERADE_AS(`host.domain')
-
-This causes mail being sent to be labeled as coming from the
-indicated host.domain, rather than $j. One normally masquerades as
-one of one's own subdomains (for example, it's unlikely that
-Berkeley would choose to masquerade as an MIT site). This
-behaviour is modified by a plethora of FEATUREs; in particular, see
-masquerade_envelope, allmasquerade, limited_masquerade, and
-masquerade_entire_domain.
-
-The masquerade name is not normally canonified, so it is important
-that it be your One True Name, that is, fully qualified and not a
-CNAME. However, if you use a CNAME, the receiving side may canonify
-it for you, so don't think you can cheat CNAME mapping this way.
-
-Normally the only addresses that are masqueraded are those that come
-from this host (that is, are either unqualified or in class {w}, the list
-of local domain names). You can augment this list, which is realized
-by class {M} using
-
- MASQUERADE_DOMAIN(`otherhost.domain')
-
-The effect of this is that although mail to user@otherhost.domain
-will not be delivered locally, any mail including any user@otherhost.domain
-will, when relayed, be rewritten to have the MASQUERADE_AS address.
-This can be a space-separated list of names.
-
-If these names are in a file, you can use
-
- MASQUERADE_DOMAIN_FILE(`filename')
-
-to read the list of names from the indicated file (i.e., to add
-elements to class {M}).
-
-To exempt hosts or subdomains from being masqueraded, you can use
-
- MASQUERADE_EXCEPTION(`host.domain')
-
-This can come handy if you want to masquerade a whole domain
-except for one (or a few) host(s). If these names are in a file,
-you can use
-
- MASQUERADE_EXCEPTION_FILE(`filename')
-
-Normally only header addresses are masqueraded. If you want to
-masquerade the envelope as well, use
-
- FEATURE(`masquerade_envelope')
-
-There are always users that need to be "exposed" -- that is, their
-internal site name should be displayed instead of the masquerade name.
-Root is an example (which has been "exposed" by default prior to 8.10).
-You can add users to this list using
-
- EXPOSED_USER(`usernames')
-
-This adds users to class {E}; you could also use
-
- EXPOSED_USER_FILE(`filename')
-
-You can also arrange to relay all unqualified names (that is, names
-without @host) to a relay host. For example, if you have a central
-email server, you might relay to that host so that users don't have
-to have .forward files or aliases. You can do this using
-
- define(`LOCAL_RELAY', `mailer:hostname')
-
-The ``mailer:'' can be omitted, in which case the mailer defaults to
-"relay". There are some user names that you don't want relayed, perhaps
-because of local aliases. A common example is root, which may be
-locally aliased. You can add entries to this list using
-
- LOCAL_USER(`usernames')
-
-This adds users to class {L}; you could also use
-
- LOCAL_USER_FILE(`filename')
-
-If you want all incoming mail sent to a centralized hub, as for a
-shared /var/spool/mail scheme, use
-
- define(`MAIL_HUB', `mailer:hostname')
-
-Again, ``mailer:'' defaults to "relay". If you define both LOCAL_RELAY
-and MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will
-be sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB.
-Note: there is a (long standing) bug which keeps this combination from
-working for addresses of the form user+detail.
-Names in class {L} will be delivered locally, so you MUST have aliases or
-.forward files for them.
-
-For example, if you are on machine mastodon.CS.Berkeley.EDU and you have
-FEATURE(`stickyhost'), the following combinations of settings will have the
-indicated effects:
-
-email sent to.... eric eric@mastodon.CS.Berkeley.EDU
-
-LOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally)
-mail.CS.Berkeley.EDU (no local aliasing) (aliasing done)
-
-MAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
-mammoth.CS.Berkeley.EDU (aliasing done) (aliasing done)
-
-Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU
-MAIL_HUB set as above (no local aliasing) (aliasing done)
-
-If you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and
-MAIL_HUB act identically, with MAIL_HUB taking precedence.
-
-If you want all outgoing mail to go to a central relay site, define
-SMART_HOST as well. Briefly:
-
- LOCAL_RELAY applies to unqualified names (e.g., "eric").
- MAIL_HUB applies to names qualified with the name of the
- local host (e.g., "eric@mastodon.CS.Berkeley.EDU").
- SMART_HOST applies to names qualified with other hosts or
- bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU"
- or "eric@[127.0.0.1]").
-
-However, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY,
-DECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you
-really want absolutely everything to go to a single central site you will
-need to unset all the other relays -- or better yet, find or build a
-minimal config file that does this.
-
-For duplicate suppression to work properly, the host name is best
-specified with a terminal dot:
-
- define(`MAIL_HUB', `host.domain.')
- note the trailing dot ---^
-
-
-+-------------------------------------------+
-| USING LDAP FOR ALIASES, MAPS, AND CLASSES |
-+-------------------------------------------+
-
-LDAP can be used for aliases, maps, and classes by either specifying your
-own LDAP map specification or using the built-in default LDAP map
-specification. The built-in default specifications all provide lookups
-which match against either the machine's fully qualified hostname (${j}) or
-a "cluster". The cluster allows you to share LDAP entries among a large
-number of machines without having to enter each of the machine names into
-each LDAP entry. To set the LDAP cluster name to use for a particular
-machine or set of machines, set the confLDAP_CLUSTER m4 variable to a
-unique name. For example:
-
- define(`confLDAP_CLUSTER', `Servers')
-
-Here, the word `Servers' will be the cluster name. As an example, assume
-that smtp.sendmail.org, etrn.sendmail.org, and mx.sendmail.org all belong
-to the Servers cluster.
-
-Some of the LDAP LDIF examples below show use of the Servers cluster.
-Every entry must have either a sendmailMTAHost or sendmailMTACluster
-attribute or it will be ignored. Be careful as mixing clusters and
-individual host records can have surprising results (see the CAUTION
-sections below).
-
-See the file cf/sendmail.schema for the actual LDAP schemas. Note that
-this schema (and therefore the lookups and examples below) is experimental
-at this point as it has had little public review. Therefore, it may change
-in future versions. Feedback via sendmail@sendmail.org is encouraged.
-
--------
-Aliases
--------
-
-The ALIAS_FILE (O AliasFile) option can be set to use LDAP for alias
-lookups. To use the default schema, simply use:
-
- define(`ALIAS_FILE', `ldap:')
-
-By doing so, you will use the default schema which expands to a map
-declared as follows:
-
- ldap -k (&(objectClass=sendmailMTAAliasObject)
- (sendmailMTAAliasGrouping=aliases)
- (|(sendmailMTACluster=${sendmailMTACluster})
- (sendmailMTAHost=$j))
- (sendmailMTAKey=%0))
- -v sendmailMTAAliasValue
-
-NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually
-used when the binary expands the `ldap:' token as the AliasFile option is
-not actually macro-expanded when read from the sendmail.cf file.
-
-Example LDAP LDIF entries might be:
-
- dn: sendmailMTAKey=sendmail-list, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAAlias
- objectClass: sendmailMTAAliasObject
- sendmailMTAAliasGrouping: aliases
- sendmailMTAHost: etrn.sendmail.org
- sendmailMTAKey: sendmail-list
- sendmailMTAAliasValue: ca@example.org
- sendmailMTAAliasValue: eric
- sendmailMTAAliasValue: gshapiro@example.com
-
- dn: sendmailMTAKey=owner-sendmail-list, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAAlias
- objectClass: sendmailMTAAliasObject
- sendmailMTAAliasGrouping: aliases
- sendmailMTAHost: etrn.sendmail.org
- sendmailMTAKey: owner-sendmail-list
- sendmailMTAAliasValue: eric
-
- dn: sendmailMTAKey=postmaster, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAAlias
- objectClass: sendmailMTAAliasObject
- sendmailMTAAliasGrouping: aliases
- sendmailMTACluster: Servers
- sendmailMTAKey: postmaster
- sendmailMTAAliasValue: eric
-
-Here, the aliases sendmail-list and owner-sendmail-list will be available
-only on etrn.sendmail.org but the postmaster alias will be available on
-every machine in the Servers cluster (including etrn.sendmail.org).
-
-CAUTION: aliases are additive so that entries like these:
-
- dn: sendmailMTAKey=bob, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAAlias
- objectClass: sendmailMTAAliasObject
- sendmailMTAAliasGrouping: aliases
- sendmailMTACluster: Servers
- sendmailMTAKey: bob
- sendmailMTAAliasValue: eric
-
- dn: sendmailMTAKey=bobetrn, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAAlias
- objectClass: sendmailMTAAliasObject
- sendmailMTAAliasGrouping: aliases
- sendmailMTAHost: etrn.sendmail.org
- sendmailMTAKey: bob
- sendmailMTAAliasValue: gshapiro
-
-would mean that on all of the hosts in the cluster, mail to bob would go to
-eric EXCEPT on etrn.sendmail.org in which case it would go to BOTH eric and
-gshapiro.
-
-If you prefer not to use the default LDAP schema for your aliases, you can
-specify the map parameters when setting ALIAS_FILE. For example:
-
- define(`ALIAS_FILE', `ldap:-k (&(objectClass=mailGroup)(mail=%0)) -v mgrpRFC822MailMember')
-
-----
-Maps
-----
-
-FEATURE()'s which take an optional map definition argument (e.g., access,
-mailertable, virtusertable, etc.) can instead take the special keyword
-`LDAP', e.g.:
-
- FEATURE(`access_db', `LDAP')
- FEATURE(`virtusertable', `LDAP')
-
-When this keyword is given, that map will use LDAP lookups consisting of
-the objectClass sendmailMTAClassObject, the attribute sendmailMTAMapName
-with the map name, a search attribute of sendmailMTAKey, and the value
-attribute sendmailMTAMapValue.
-
-The values for sendmailMTAMapName are:
-
- FEATURE() sendmailMTAMapName
- --------- ------------------
- access_db access
- authinfo authinfo
- bitdomain bitdomain
- domaintable domain
- genericstable generics
- mailertable mailer
- uucpdomain uucpdomain
- virtusertable virtuser
-
-For example, FEATURE(`mailertable', `LDAP') would use the map definition:
-
- Kmailertable ldap -k (&(objectClass=sendmailMTAMapObject)
- (sendmailMTAMapName=mailer)
- (|(sendmailMTACluster=${sendmailMTACluster})
- (sendmailMTAHost=$j))
- (sendmailMTAKey=%0))
- -1 -v sendmailMTAMapValue
-
-An example LDAP LDIF entry using this map might be:
-
- dn: sendmailMTAMapName=mailer, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAMap
- sendmailMTACluster: Servers
- sendmailMTAMapName: mailer
-
- dn: sendmailMTAKey=example.com, sendmailMTAMapName=mailer, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAMap
- objectClass: sendmailMTAMapObject
- sendmailMTAMapName: mailer
- sendmailMTACluster: Servers
- sendmailMTAKey: example.com
- sendmailMTAMapValue: relay:[smtp.example.com]
-
-CAUTION: If your LDAP database contains the record above and *ALSO* a host
-specific record such as:
-
- dn: sendmailMTAKey=example.com@etrn, sendmailMTAMapName=mailer, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAMap
- objectClass: sendmailMTAMapObject
- sendmailMTAMapName: mailer
- sendmailMTAHost: etrn.sendmail.org
- sendmailMTAKey: example.com
- sendmailMTAMapValue: relay:[mx.example.com]
-
-then these entries will give unexpected results. When the lookup is done
-on etrn.sendmail.org, the effect is that there is *NO* match at all as maps
-require a single match. Since the host etrn.sendmail.org is also in the
-Servers cluster, LDAP would return two answers for the example.com map key
-in which case sendmail would treat this as no match at all.
-
-If you prefer not to use the default LDAP schema for your maps, you can
-specify the map parameters when using the FEATURE(). For example:
-
- FEATURE(`access_db', `ldap:-1 -k (&(objectClass=mapDatabase)(key=%0)) -v value')
-
--------
-Classes
--------
-
-Normally, classes can be filled via files or programs. As of 8.12, they
-can also be filled via map lookups using a new syntax:
-
- F{ClassName}mapkey@mapclass:mapspec
-
-mapkey is optional and if not provided the map key will be empty. This can
-be used with LDAP to read classes from LDAP. Note that the lookup is only
-done when sendmail is initially started. Use the special value `@LDAP' to
-use the default LDAP schema. For example:
-
- RELAY_DOMAIN_FILE(`@LDAP')
-
-would put all of the attribute sendmailMTAClassValue values of LDAP records
-with objectClass sendmailMTAClass and an attribute sendmailMTAClassName of
-'R' into class $={R}. In other words, it is equivalent to the LDAP map
-specification:
-
- F{R}@ldap:-k (&(objectClass=sendmailMTAClass)
- (sendmailMTAClassName=R)
- (|(sendmailMTACluster=${sendmailMTACluster})
- (sendmailMTAHost=$j)))
- -v sendmailMTAClassValue
-
-NOTE: The macros shown above ${sendmailMTACluster} and $j are not actually
-used when the binary expands the `@LDAP' token as class declarations are
-not actually macro-expanded when read from the sendmail.cf file.
-
-This can be used with class related commands such as RELAY_DOMAIN_FILE(),
-MASQUERADE_DOMAIN_FILE(), etc:
-
- Command sendmailMTAClassName
- ------- --------------------
- CANONIFY_DOMAIN_FILE() Canonify
- EXPOSED_USER_FILE() E
- GENERICS_DOMAIN_FILE() G
- LDAPROUTE_DOMAIN_FILE() LDAPRoute
- LDAPROUTE_EQUIVALENT_FILE() LDAPRouteEquiv
- LOCAL_USER_FILE() L
- MASQUERADE_DOMAIN_FILE() M
- MASQUERADE_EXCEPTION_FILE() N
- RELAY_DOMAIN_FILE() R
- VIRTUSER_DOMAIN_FILE() VirtHost
-
-You can also add your own as any 'F'ile class of the form:
-
- F{ClassName}@LDAP
- ^^^^^^^^^
-will use "ClassName" for the sendmailMTAClassName.
-
-An example LDAP LDIF entry would look like:
-
- dn: sendmailMTAClassName=R, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAClass
- sendmailMTACluster: Servers
- sendmailMTAClassName: R
- sendmailMTAClassValue: sendmail.org
- sendmailMTAClassValue: example.com
- sendmailMTAClassValue: 10.56.23
-
-CAUTION: If your LDAP database contains the record above and *ALSO* a host
-specific record such as:
-
- dn: sendmailMTAClassName=R@etrn.sendmail.org, dc=sendmail, dc=org
- objectClass: sendmailMTA
- objectClass: sendmailMTAClass
- sendmailMTAHost: etrn.sendmail.org
- sendmailMTAClassName: R
- sendmailMTAClassValue: example.com
-
-the result will be similar to the aliases caution above. When the lookup
-is done on etrn.sendmail.org, $={R} would contain all of the entries (from
-both the cluster match and the host match). In other words, the effective
-is additive.
-
-If you prefer not to use the default LDAP schema for your classes, you can
-specify the map parameters when using the class command. For example:
-
- VIRTUSER_DOMAIN_FILE(`@ldap:-k (&(objectClass=virtHosts)(host=*)) -v host')
-
-Remember, macros can not be used in a class declaration as the binary does
-not expand them.
-
-
-+--------------+
-| LDAP ROUTING |
-+--------------+
-
-FEATURE(`ldap_routing') can be used to implement the IETF Internet Draft
-LDAP Schema for Intranet Mail Routing
-(draft-lachman-laser-ldap-mail-routing-01). This feature enables
-LDAP-based rerouting of a particular address to either a different host
-or a different address. The LDAP lookup is first attempted on the full
-address (e.g., user@example.com) and then on the domain portion
-(e.g., @example.com). Be sure to setup your domain for LDAP routing using
-LDAPROUTE_DOMAIN(), e.g.:
-
- LDAPROUTE_DOMAIN(`example.com')
-
-Additionally, you can specify equivalent domains for LDAP routing using
-LDAPROUTE_EQUIVALENT() and LDAPROUTE_EQUIVALENT_FILE(). 'Equivalent'
-hostnames are mapped to $M (the masqueraded hostname for the server) before
-the LDAP query. For example, if the mail is addressed to
-user@host1.example.com, normally the LDAP lookup would only be done for
-'user@host1.example.com' and '@host1.example.com'. However, if
-LDAPROUTE_EQUIVALENT(`host1.example.com') is used, the lookups would also be
-done on 'user@example.com' and '@example.com' after attempting the
-host1.example.com lookups.
-
-By default, the feature will use the schemas as specified in the draft
-and will not reject addresses not found by the LDAP lookup. However,
-this behavior can be changed by giving additional arguments to the FEATURE()
-command:
-
- FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, <detail>)
-
-where <mailHost> is a map definition describing how to lookup an alternative
-mail host for a particular address; <mailRoutingAddress> is a map definition
-describing how to lookup an alternative address for a particular address;
-the <bounce> argument, if present and not the word "passthru", dictates
-that mail should be bounced if neither a mailHost nor mailRoutingAddress
-is found; and <detail> indicates what actions to take if the address
-contains +detail information -- `strip' tries the lookup with the +detail
-and if no matches are found, strips the +detail and tries the lookup again;
-`preserve', does the same as `strip' but if a mailRoutingAddress match is
-found, the +detail information is copied to the new address.
-
-The default <mailHost> map definition is:
-
- ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient)
- (mailLocalAddress=%0))
-
-The default <mailRoutingAddress> map definition is:
-
- ldap -1 -T<TMPF> -v mailRoutingAddress
- -k (&(objectClass=inetLocalMailRecipient)
- (mailLocalAddress=%0))
-
-Note that neither includes the LDAP server hostname (-h server) or base DN
-(-b o=org,c=COUNTRY), both necessary for LDAP queries. It is presumed that
-your .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with
-these settings. If this is not the case, the map definitions should be
-changed as described above. The "-T<TMPF>" is required in any user
-specified map definition to catch temporary errors.
-
-The following possibilities exist as a result of an LDAP lookup on an
-address:
-
- mailHost is mailRoutingAddress is Results in
- ----------- --------------------- ----------
- set to a set mail delivered to
- "local" host mailRoutingAddress
-
- set to a not set delivered to
- "local" host original address
-
- set to a set mailRoutingAddress
- remote host relayed to mailHost
-
- set to a not set original address
- remote host relayed to mailHost
-
- not set set mail delivered to
- mailRoutingAddress
-
- not set not set delivered to
- original address *OR*
- bounced as unknown user
-
-The term "local" host above means the host specified is in class {w}. If
-the result would mean sending the mail to a different host, that host is
-looked up in the mailertable before delivery.
-
-Note that the last case depends on whether the third argument is given
-to the FEATURE() command. The default is to deliver the message to the
-original address.
-
-The LDAP entries should be set up with an objectClass of
-inetLocalMailRecipient and the address be listed in a mailLocalAddress
-attribute. If present, there must be only one mailHost attribute and it
-must contain a fully qualified host name as its value. Similarly, if
-present, there must be only one mailRoutingAddress attribute and it must
-contain an RFC 822 compliant address. Some example LDAP records (in LDIF
-format):
-
- dn: uid=tom, o=example.com, c=US
- objectClass: inetLocalMailRecipient
- mailLocalAddress: tom@example.com
- mailRoutingAddress: thomas@mailhost.example.com
-
-This would deliver mail for tom@example.com to thomas@mailhost.example.com.
-
- dn: uid=dick, o=example.com, c=US
- objectClass: inetLocalMailRecipient
- mailLocalAddress: dick@example.com
- mailHost: eng.example.com
-
-This would relay mail for dick@example.com to the same address but redirect
-the mail to MX records listed for the host eng.example.com (unless the
-mailertable overrides).
-
- dn: uid=harry, o=example.com, c=US
- objectClass: inetLocalMailRecipient
- mailLocalAddress: harry@example.com
- mailHost: mktmail.example.com
- mailRoutingAddress: harry@mkt.example.com
-
-This would relay mail for harry@example.com to the MX records listed for
-the host mktmail.example.com using the new address harry@mkt.example.com
-when talking to that host.
-
- dn: uid=virtual.example.com, o=example.com, c=US
- objectClass: inetLocalMailRecipient
- mailLocalAddress: @virtual.example.com
- mailHost: server.example.com
- mailRoutingAddress: virtual@example.com
-
-This would send all mail destined for any username @virtual.example.com to
-the machine server.example.com's MX servers and deliver to the address
-virtual@example.com on that relay machine.
-
-
-+---------------------------------+
-| ANTI-SPAM CONFIGURATION CONTROL |
-+---------------------------------+
-
-The primary anti-spam features available in sendmail are:
-
-* Relaying is denied by default.
-* Better checking on sender information.
-* Access database.
-* Header checks.
-
-Relaying (transmission of messages from a site outside your host (class
-{w}) to another site except yours) is denied by default. Note that this
-changed in sendmail 8.9; previous versions allowed relaying by default.
-If you really want to revert to the old behaviour, you will need to use
-FEATURE(`promiscuous_relay'). You can allow certain domains to relay
-through your server by adding their domain name or IP address to class
-{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database
-(described below). Note that IPv6 addresses must be prefaced with "IPv6:".
-The file consists (like any other file based class) of entries listed on
-separate lines, e.g.,
-
- sendmail.org
- 128.32
- IPv6:2002:c0a8:02c7
- IPv6:2002:c0a8:51d2::23f4
- host.mydomain.com
- [UNIX:localhost]
-
-Notice: the last entry allows relaying for connections via a UNIX
-socket to the MTA/MSP. This might be necessary if your configuration
-doesn't allow relaying by other means in that case, e.g., by having
-localhost.$m in class {R} (make sure $m is not just a top level
-domain).
-
-If you use
-
- FEATURE(`relay_entire_domain')
-
-then any host in any of your local domains (that is, class {m})
-will be relayed (that is, you will accept mail either to or from any
-host in your domain).
-
-You can also allow relaying based on the MX records of the host
-portion of an incoming recipient address by using
-
- FEATURE(`relay_based_on_MX')
-
-For example, if your server receives a recipient of user@domain.com
-and domain.com lists your server in its MX records, the mail will be
-accepted for relay to domain.com. This feature may cause problems
-if MX lookups for the recipient domain are slow or time out. In that
-case, mail will be temporarily rejected. It is usually better to
-maintain a list of hosts/domains for which the server acts as relay.
-Note also that this feature will stop spammers from using your host
-to relay spam but it will not stop outsiders from using your server
-as a relay for their site (that is, they set up an MX record pointing
-to your mail server, and you will relay mail addressed to them
-without any prior arrangement). Along the same lines,
-
- FEATURE(`relay_local_from')
-
-will allow relaying if the sender specifies a return path (i.e.
-MAIL FROM: <user@domain>) domain which is a local domain. This is a
-dangerous feature as it will allow spammers to spam using your mail
-server by simply specifying a return address of user@your.domain.com.
-It should not be used unless absolutely necessary.
-A slightly better solution is
-
- FEATURE(`relay_mail_from')
-
-which allows relaying if the mail sender is listed as RELAY in the
-access map. If an optional argument `domain' (this is the literal
-word `domain', not a placeholder) is given, the domain portion of
-the mail sender is also checked to allowing relaying. This option
-only works together with the tag From: for the LHS of the access
-map entries (see below: Finer control...). This feature allows
-spammers to abuse your mail server by specifying a return address
-that you enabled in your access file. This may be harder to figure
-out for spammers, but it should not be used unless necessary.
-Instead use SMTP AUTH or STARTTLS to allow relaying for roaming
-users.
-
-
-If source routing is used in the recipient address (e.g.,
-RCPT TO: <user%site.com@othersite.com>), sendmail will check
-user@site.com for relaying if othersite.com is an allowed relay host
-in either class {R}, class {m} if FEATURE(`relay_entire_domain') is used,
-or the access database if FEATURE(`access_db') is used. To prevent
-the address from being stripped down, use:
-
- FEATURE(`loose_relay_check')
-
-If you think you need to use this feature, you probably do not. This
-should only be used for sites which have no control over the addresses
-that they provide a gateway for. Use this FEATURE with caution as it
-can allow spammers to relay through your server if not setup properly.
-
-NOTICE: It is possible to relay mail through a system which the anti-relay
-rules do not prevent: the case of a system that does use FEATURE(`nouucp',
-`nospecial') (system A) and relays local messages to a mail hub (e.g., via
-LOCAL_RELAY or LUSER_RELAY) (system B). If system B doesn't use
-FEATURE(`nouucp') at all, addresses of the form
-<example.net!user@local.host> would be relayed to <user@example.net>.
-System A doesn't recognize `!' as an address separator and therefore
-forwards it to the mail hub which in turns relays it because it came from
-a trusted local host. So if a mailserver allows UUCP (bang-format)
-addresses, all systems from which it allows relaying should do the same
-or reject those addresses.
-
-As of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has
-an unresolvable domain (i.e., one that DNS, your local name service,
-or special case rules in ruleset 3 cannot locate). This also applies
-to addresses that use domain literals, e.g., <user@[1.2.3.4]>, if the
-IP address can't be mapped to a host name. If you want to continue
-to accept such domains, e.g., because you are inside a firewall that
-has only a limited view of the Internet host name space (note that you
-will not be able to return mail to them unless you have some "smart
-host" forwarder), use
-
- FEATURE(`accept_unresolvable_domains')
-
-Alternatively, you can allow specific addresses by adding them to
-the access map, e.g.,
-
- From:unresolvable.domain OK
- From:[1.2.3.4] OK
- From:[1.2.4] OK
-
-Notice: domains which are temporarily unresolvable are (temporarily)
-rejected with a 451 reply code. If those domains should be accepted
-(which is discouraged) then you can use
-
- LOCAL_CONFIG
- C{ResOk}TEMP
-
-sendmail will also refuse mail if the MAIL FROM: parameter is not
-fully qualified (i.e., contains a domain as well as a user). If you
-want to continue to accept such senders, use
-
- FEATURE(`accept_unqualified_senders')
-
-Setting the DaemonPortOptions modifier 'u' overrides the default behavior,
-i.e., unqualified addresses are accepted even without this FEATURE. If
-this FEATURE is not used, the DaemonPortOptions modifier 'f' can be used
-to enforce fully qualified domain names.
-
-An ``access'' database can be created to accept or reject mail from
-selected domains. For example, you may choose to reject all mail
-originating from known spammers. To enable such a database, use
-
- FEATURE(`access_db')
-
-Notice: the access database is applied to the envelope addresses
-and the connection information, not to the header.
-
-The FEATURE macro can accept as second parameter the key file
-definition for the database; for example
-
- FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access_map')
-
-Notice: If a second argument is specified it must contain the option
-`-T<TMPF>' as shown above. The optional third and fourth parameters
-may be `skip' or `lookupdotdomain'. The former enables SKIP as
-value part (see below), the latter is another way to enable the
-feature of the same name (see above).
-
-Remember, since /etc/mail/access is a database, after creating the text
-file as described below, you must use makemap to create the database
-map. For example:
-
- makemap hash /etc/mail/access < /etc/mail/access
-
-The table itself uses e-mail addresses, domain names, and network
-numbers as keys. Note that IPv6 addresses must be prefaced with "IPv6:".
-For example,
-
- spammer@aol.com REJECT
- cyberspammer.com REJECT
- TLD REJECT
- 192.168.212 REJECT
- IPv6:2002:c0a8:02c7 RELAY
- IPv6:2002:c0a8:51d2::23f4 REJECT
-
-would refuse mail from spammer@aol.com, any user from cyberspammer.com
-(or any host within the cyberspammer.com domain), any host in the entire
-top level domain TLD, 192.168.212.* network, and the IPv6 address
-2002:c0a8:51d2::23f4. It would allow relay for the IPv6 network
-2002:c0a8:02c7::/48.
-
-The value part of the map can contain:
-
- OK Accept mail even if other rules in the running
- ruleset would reject it, for example, if the domain
- name is unresolvable. "Accept" does not mean
- "relay", but at most acceptance for local
- recipients. That is, OK allows less than RELAY.
- RELAY Accept mail addressed to the indicated domain or
- received from the indicated domain for relaying
- through your SMTP server. RELAY also serves as
- an implicit OK for the other checks.
- REJECT Reject the sender or recipient with a general
- purpose message.
- DISCARD Discard the message completely using the
- $#discard mailer. If it is used in check_compat,
- it affects only the designated recipient, not
- the whole message as it does in all other cases.
- This should only be used if really necessary.
- SKIP This can only be used for host/domain names
- and IP addresses/nets. It will abort the current
- search for this entry without accepting or rejecting
- it but causing the default action.
- ### any text where ### is an RFC 821 compliant error code and
- "any text" is a message to return for the command.
- The string should be quoted to avoid surprises,
- e.g., sendmail may remove spaces otherwise.
- This type is deprecated, use one the two
- ERROR: entries below instead.
- ERROR:### any text
- as above, but useful to mark error messages as such.
- ERROR:D.S.N:### any text
- where D.S.N is an RFC 1893 compliant error code
- and the rest as above.
-
-For example:
-
- cyberspammer.com ERROR:"550 We don't accept mail from spammers"
- okay.cyberspammer.com OK
- sendmail.org RELAY
- 128.32 RELAY
- IPv6:1:2:3:4:5:6:7 RELAY
- [127.0.0.3] OK
- [IPv6:1:2:3:4:5:6:7:8] OK
-
-would accept mail from okay.cyberspammer.com, but would reject mail from
-all other hosts at cyberspammer.com with the indicated message. It would
-allow relaying mail from and to any hosts in the sendmail.org domain, and
-allow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:*
-network. The latter two entries are for checks against ${client_name} if
-the IP address doesn't resolve to a hostname (or is considered as "may be
-forged"). That is, using square brackets means these are host names,
-not network numbers.
-
-Warning: if you change the RFC 821 compliant error code from the default
-value of 550, then you should probably also change the RFC 1893 compliant
-error code to match it. For example, if you use
-
- user@example.com ERROR:450 mailbox full
-
-the error returned would be "450 5.0.0 mailbox full" which is wrong.
-Use "ERROR:4.2.2:450 mailbox full" instead.
-
-Note, UUCP users may need to add hostname.UUCP to the access database
-or class {R}.
-
-If you also use:
-
- FEATURE(`relay_hosts_only')
-
-then the above example will allow relaying for sendmail.org, but not
-hosts within the sendmail.org domain. Note that this will also require
-hosts listed in class {R} to be fully qualified host names.
-
-You can also use the access database to block sender addresses based on
-the username portion of the address. For example:
-
- FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted
-
-Note that you must include the @ after the username to signify that
-this database entry is for checking only the username portion of the
-sender address.
-
-If you use:
-
- FEATURE(`blacklist_recipients')
-
-then you can add entries to the map for local users, hosts in your
-domains, or addresses in your domain which should not receive mail:
-
- badlocaluser@ ERROR:550 Mailbox disabled for this username
- host.mydomain.com ERROR:550 That host does not accept mail
- user@otherhost.mydomain.com ERROR:550 Mailbox disabled for this recipient
-
-This would prevent a recipient of badlocaluser@mydomain.com, any
-user at host.mydomain.com, and the single address
-user@otherhost.mydomain.com from receiving mail. Please note: a
-local username must be now tagged with an @ (this is consistent
-with the check of the sender address, and hence it is possible to
-distinguish between hostnames and usernames). Enabling this feature
-will keep you from sending mails to all addresses that have an
-error message or REJECT as value part in the access map. Taking
-the example from above:
-
- spammer@aol.com REJECT
- cyberspammer.com REJECT
-
-Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com.
-
-There are several DNS based blacklists, the first of which was
-the RBL (``Realtime Blackhole List'') run by the MAPS project,
-see http://mail-abuse.org/. These are databases of spammers
-maintained in DNS. To use such a database, specify
-
- FEATURE(`dnsbl')
-
-This will cause sendmail to reject mail from any site in the original
-Realtime Blackhole List database. This default DNS blacklist,
-blackholes.mail-abuse.org, is a service offered by the Mail Abuse
-Prevention System (MAPS). As of July 31, 2001, MAPS is a subscription
-service, so using that network address won't work if you haven't
-subscribed. Contact MAPS to subscribe (http://mail-abuse.org/).
-
-You can specify an alternative RBL server to check by specifying an
-argument to the FEATURE. The default error message is
-
- Rejected: IP-ADDRESS listed at SERVER
-
-where IP-ADDRESS and SERVER are replaced by the appropriate
-information. A second argument can be used to specify a different
-text. By default, temporary lookup failures are ignored and hence
-cause the connection not to be rejected by the DNS based rejection
-list. This behavior can be changed by specifying a third argument,
-which must be either `t' or a full error message. For example:
-
- FEATURE(`dnsbl', `dnsbl.example.com', `',
- `"451 Temporary lookup failure for " $&{client_addr} " in dnsbl.example.com"')
-
-If `t' is used, the error message is:
-
- 451 Temporary lookup failure of IP-ADDRESS at SERVER
-
-where IP-ADDRESS and SERVER are replaced by the appropriate
-information.
-
-This FEATURE can be included several times to query different
-DNS based rejection lists, e.g., the dial-up user list (see
-http://mail-abuse.org/dul/).
-
-Notice: to avoid checking your own local domains against those
-blacklists, use the access_db feature and add:
-
- Connect:10.1 OK
- Connect:127.0.0.1 RELAY
-
-to the access map, where 10.1 is your local network. You may
-want to use "RELAY" instead of "OK" to allow also relaying
-instead of just disabling the DNS lookups in the backlists.
-
-
-The features described above make use of the check_relay, check_mail,
-and check_rcpt rulesets. Note that check_relay checks the SMTP
-client hostname and IP address when the connection is made to your
-server. It does not check if a mail message is being relayed to
-another server. That check is done in check_rcpt. If you wish to
-include your own checks, you can put your checks in the rulesets
-Local_check_relay, Local_check_mail, and Local_check_rcpt. For
-example if you wanted to block senders with all numeric usernames
-(i.e. 2312343@bigisp.com), you would use Local_check_mail and the
-regex map:
-
- LOCAL_CONFIG
- Kallnumbers regex -a@MATCH ^[0-9]+$
-
- LOCAL_RULESETS
- SLocal_check_mail
- # check address against various regex checks
- R$* $: $>Parse0 $>3 $1
- R$+ < @ bigisp.com. > $* $: $(allnumbers $1 $)
- R@MATCH $#error $: 553 Header Error
-
-These rules are called with the original arguments of the corresponding
-check_* ruleset. If the local ruleset returns $#OK, no further checking
-is done by the features described above and the mail is accepted. If the
-local ruleset resolves to a mailer (such as $#error or $#discard), the
-appropriate action is taken. Otherwise, the results of the local
-rewriting are ignored.
-
-Finer control by using tags for the LHS of the access map
----------------------------------------------------------
-
-Read this section only if the options listed so far are not sufficient
-for your purposes. There is now the option to tag entries in the
-access map according to their type. Three tags are available:
-
- Connect: connection information (${client_addr}, ${client_name})
- From: envelope sender
- To: envelope recipient
-
-If the required item is looked up in a map, it will be tried first
-with the corresponding tag in front, then (as fallback to enable
-backward compatibility) without any tag, unless the specific feature
-requires a tag. For example,
-
- From:spammer@some.dom REJECT
- To:friend.domain RELAY
- Connect:friend.domain OK
- Connect:from.domain RELAY
- From:good@another.dom OK
- From:another.dom REJECT
-
-This would deny mails from spammer@some.dom but you could still
-send mail to that address even if FEATURE(`blacklist_recipients')
-is enabled. Your system will allow relaying to friend.domain, but
-not from it (unless enabled by other means). Connections from that
-domain will be allowed even if it ends up in one of the DNS based
-rejection lists. Relaying is enabled from from.domain but not to
-it (since relaying is based on the connection information for
-outgoing relaying, the tag Connect: must be used; for incoming
-relaying, which is based on the recipient address, To: must be
-used). The last two entries allow mails from good@another.dom but
-reject mail from all other addresses with another.dom as domain
-part.
-
-Delay all checks
-----------------
-
-By using FEATURE(`delay_checks') the rulesets check_mail and check_relay
-will not be called when a client connects or issues a MAIL command,
-respectively. Instead, those rulesets will be called by the check_rcpt
-ruleset; they will be skipped if a sender has been authenticated using
-a "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH().
-If check_mail returns an error then the RCPT TO command will be rejected
-with that error. If it returns some other result starting with $# then
-check_relay will be skipped. If the sender address (or a part of it) is
-listed in the access map and it has a RHS of OK or RELAY, then check_relay
-will be skipped. This has an interesting side effect: if your domain is
-my.domain and you have
-
- my.domain RELAY
-
-in the access map, then all e-mail with a sender address of
-<user@my.domain> gets through, even if check_relay would reject it
-(e.g., based on the hostname or IP address). This allows spammers
-to get around DNS based blacklist by faking the sender address. To
-avoid this problem you have to use tagged entries:
-
- To:my.domain RELAY
- Connect:my.domain RELAY
-
-if you need those entries at all (class {R} may take care of them).
-
-FEATURE(`delay_checks') can take an optional argument:
-
- FEATURE(`delay_checks', `friend')
- enables spamfriend test
- FEATURE(`delay_checks', `hater')
- enables spamhater test
-
-If such an argument is given, the recipient will be looked up in the
-access map (using the tag Spam:). If the argument is `friend', then
-the default behavior is to apply the other rulesets and make a SPAM
-friend the exception. The rulesets check_mail and check_relay will be
-skipped only if the recipient address is found and has RHS FRIEND. If
-the argument is `hater', then the default behavior is to skip the rulesets
-check_mail and check_relay and make a SPAM hater the exception. The
-other two rulesets will be applied only if the recipient address is
-found and has RHS HATER.
-
-This allows for simple exceptions from the tests, e.g., by activating
-the friend option and having
-
- Spam:abuse@ FRIEND
-
-in the access map, mail to abuse@localdomain will get through (where
-"localdomain" is any domain in class {w}). It is also possible to
-specify a full address or an address with +detail:
-
- Spam:abuse@my.domain FRIEND
- Spam:me+abuse@ FRIEND
- Spam:spam.domain FRIEND
-
-Note: The required tag has been changed in 8.12 from To: to Spam:.
-This change is incompatible to previous versions. However, you can
-(for now) simply add the new entries to the access map, the old
-ones will be ignored. As soon as you removed the old entries from
-the access map, specify a third parameter (`n') to this feature and
-the backward compatibility rules will not be in the generated .cf
-file.
-
-Header Checks
--------------
-
-You can also reject mail on the basis of the contents of headers.
-This is done by adding a ruleset call to the 'H' header definition command
-in sendmail.cf. For example, this can be used to check the validity of
-a Message-ID: header:
-
- LOCAL_CONFIG
- HMessage-Id: $>CheckMessageId
-
- LOCAL_RULESETS
- SCheckMessageId
- R< $+ @ $+ > $@ OK
- R$* $#error $: 553 Header Error
-
-The alternative format:
-
- HSubject: $>+CheckSubject
-
-that is, $>+ instead of $>, gives the full Subject: header including
-comments to the ruleset (comments in parentheses () are stripped
-by default).
-
-A default ruleset for headers which don't have a specific ruleset
-defined for them can be given by:
-
- H*: $>CheckHdr
-
-Notice:
-1. All rules act on tokens as explained in doc/op/op.{me,ps,txt}.
-That may cause problems with simple header checks due to the
-tokenization. It might be simpler to use a regex map and apply it
-to $&{currHeader}.
-2. There are no default rulesets coming with this distribution of
-sendmail. You can either write your own or you can search the
-WWW for examples, e.g., http://www.digitalanswers.org/check_local/
-
-After all of the headers are read, the check_eoh ruleset will be called for
-any final header-related checks. The ruleset is called with the number of
-headers and the size of all of the headers in bytes separated by $|. One
-example usage is to reject messages which do not have a Message-Id:
-header. However, the Message-Id: header is *NOT* a required header and is
-not a guaranteed spam indicator. This ruleset is an example and should
-probably not be used in production.
-
- LOCAL_CONFIG
- Kstorage macro
- HMessage-Id: $>CheckMessageId
-
- LOCAL_RULESETS
- SCheckMessageId
- # Record the presence of the header
- R$* $: $(storage {MessageIdCheck} $@ OK $) $1
- R< $+ @ $+ > $@ OK
- R$* $#error $: 553 Header Error
-
- Scheck_eoh
- # Check the macro
- R$* $: < $&{MessageIdCheck} >
- # Clear the macro for the next message
- R$* $: $(storage {MessageIdCheck} $) $1
- # Has a Message-Id: header
- R< $+ > $@ OK
- # Allow missing Message-Id: from local mail
- R$* $: < $&{client_name} >
- R< > $@ OK
- R< $=w > $@ OK
- # Otherwise, reject the mail
- R$* $#error $: 553 Header Error
-
-+----------+
-| STARTTLS |
-+----------+
-
-In this text, cert will be used as an abreviation for X.509 certificate,
-DN (CN) is the distinguished (common) name of a cert, and CA is a
-certification authority, which signs (issues) certs.
-
-For STARTTLS to be offered by sendmail you need to set at least
-this variables (the file names and paths are just examples):
-
- define(`confCACERT_PATH', `/etc/mail/certs/')
- define(`confCACERT', `/etc/mail/certs/CA.cert.pem')
- define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem')
- define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem')
-
-On systems which do not have the compile flag HASURANDOM set (see
-sendmail/README) you also must set confRAND_FILE.
-
-See doc/op/op.{me,ps,txt} for more information about these options,
-especially the sections ``Certificates for STARTTLS'' and ``PRNG for
-STARTTLS''.
-
-Macros related to STARTTLS are:
-
-${cert_issuer} holds the DN of the CA (the cert issuer).
-${cert_subject} holds the DN of the cert (called the cert subject).
-${cn_issuer} holds the CN of the CA (the cert issuer).
-${cn_subject} holds the CN of the cert (called the cert subject).
-${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1,
- TLSv1/SSLv3, SSLv3, SSLv2.
-${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA,
- EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA.
-${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm
- used for the connection.
-${verify} holds the result of the verification of the presented cert.
- Possible values are:
- OK verification succeeded.
- NO no cert presented.
- NOT no cert requested.
- FAIL cert presented but could not be verified,
- e.g., the cert of the signing CA is missing.
- NONE STARTTLS has not been performed.
- TEMP temporary error occurred.
- PROTOCOL protocol error occurred (SMTP level).
- SOFTWARE STARTTLS handshake failed.
-${server_name} the name of the server of the current outgoing SMTP
- connection.
-${server_addr} the address of the server of the current outgoing SMTP
- connection.
-
-Relaying
---------
-
-
-SMTP STARTTLS can allow relaying for remote SMTP clients which have
-successfully authenticated themselves. This is done in the ruleset
-RelayAuth. If the verification of the cert failed (${verify} != OK),
-relaying is subject to the usual rules. Otherwise the DN of the issuer is
-looked up in the access map using the tag CERTISSUER. If the resulting
-value is RELAY, relaying is allowed. If it is SUBJECT, the DN of the cert
-subject is looked up next in the access map using the tag CERTSUBJECT. If
-the value is RELAY, relaying is allowed.
-
-${cert_issuer} and ${cert_subject} can be optionally modified by regular
-expressions defined in the m4 variables _CERT_REGEX_ISSUER_ and
-_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in
-rulesets and map lookups, they are modified as follows: each non-printable
-character and the characters '<', '>', '(', ')', '"', '+', ' ' are replaced
-by their HEX value with a leading '+'. For example:
-
-/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email=
-darth+cert@endmail.org
-
-is encoded as:
-
-/C=US/ST=California/O=endmail.org/OU=private/CN=
-Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
-
-(line breaks have been inserted for readability).
-
-The macros which are subject to this encoding are ${cert_subject},
-${cert_issuer}, ${cn_subject}, and ${cn_issuer}.
-
-Examples:
-
-To allow relaying for everyone who can present a cert signed by
-
-/C=US/ST=California/O=endmail.org/OU=private/CN=
-Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
-
-simply use:
-
-CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN=
-Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org RELAY
-
-To allow relaying only for a subset of machines that have a cert signed by
-
-/C=US/ST=California/O=endmail.org/OU=private/CN=
-Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
-
-use:
-
-CertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN=
-Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org SUBJECT
-CertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN=
-DeathStar/Email=deathstar@endmail.org RELAY
-
-Note: line breaks have been inserted after "CN=" for readability,
-each tagged entry must be one (long) line in the access map.
-
-Of course it is also possible to write a simple ruleset that allows
-relaying for everyone who can present a cert that can be verified, e.g.,
-
-LOCAL_RULESETS
-SLocal_check_rcpt
-R$* $: $&{verify}
-ROK $# OK
-
-Allowing Connections
---------------------
-
-The rulesets tls_server, tls_client, and tls_rcpt are used to decide whether
-an SMTP connection is accepted (or should continue).
-
-tls_server is called when sendmail acts as client after a STARTTLS command
-(should) have been issued. The parameter is the value of ${verify}.
-
-tls_client is called when sendmail acts as server, after a STARTTLS command
-has been issued, and from check_mail. The parameter is the value of
-${verify} and STARTTLS or MAIL, respectively.
-
-Both rulesets behave the same. If no access map is in use, the connection
-will be accepted unless ${verify} is SOFTWARE, in which case the connection
-is always aborted. For tls_server/tls_client, ${client_name}/${server_name}
-is looked up in the access map using the tag TLS_Srv/TLS_Clt, which is done
-with the ruleset LookUpDomain. If no entry is found, ${client_addr}
-(${server_addr}) is looked up in the access map (same tag, ruleset
-LookUpAddr). If this doesn't result in an entry either, just the tag is
-looked up in the access map (included the trailing colon). Notice:
-requiring that e-mail is sent to a server only encrypted, e.g., via
-
-TLS_Srv:secure.domain ENCR:112
-
-doesn't necessarily mean that e-mail sent to that domain is encrypted.
-If the domain has multiple MX servers, e.g.,
-
-secure.domain. IN MX 10 mail.secure.domain.
-secure.domain. IN MX 50 mail.other.domain.
-
-then mail to user@secure.domain may go unencrypted to mail.other.domain.
-tls_rcpt can be used to address this problem.
-
-tls_rcpt is called before a RCPT TO: command is sent. The parameter is the
-current recipient. This ruleset is only defined if FEATURE(`access_db')
-is selected. A recipient address user@domain is looked up in the access
-map in four formats: TLS_Rcpt:user@domain, TLS_Rcpt:user@, TLS_Rcpt:domain,
-and TLS_Rcpt:; the first match is taken.
-
-The result of the lookups is then used to call the ruleset TLS_connection,
-which checks the requirement specified by the RHS in the access map against
-the actual parameters of the current TLS connection, esp. ${verify} and
-${cipher_bits}. Legal RHSs in the access map are:
-
-VERIFY verification must have succeeded
-VERIFY:bits verification must have succeeded and ${cipher_bits} must
- be greater than or equal bits.
-ENCR:bits ${cipher_bits} must be greater than or equal bits.
-
-The RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary
-or permanent error. The default is a temporary error code (403 4.7.0)
-unless the macro TLS_PERM_ERR is set during generation of the .cf file.
-
-If a certain level of encryption is required, then it might also be
-possible that this level is provided by the security layer from a SASL
-algorithm, e.g., DIGEST-MD5.
-
-Furthermore, there can be a list of extensions added. Such a list
-starts with '+' and the items are separated by '++'. Allowed
-extensions are:
-
-CN:name name must match ${cn_subject}
-CN ${server_name} must match ${cn_subject}
-CS:name name must match ${cert_subject}
-CI:name name must match ${cert_issuer}
-
-Example: e-mail sent to secure.example.com should only use an encrypted
-connection. E-mail received from hosts within the laptop.example.com domain
-should only be accepted if they have been authenticated. The host which
-receives e-mail for darth@endmail.org must present a cert that uses the
-CN smtp.endmail.org.
-
-TLS_Srv:secure.example.com ENCR:112
-TLS_Clt:laptop.example.com PERM+VERIFY:112
-TLS_Rcpt:darth@endmail.org ENCR:112+CN:smtp.endmail.org
-
-
-Disabling STARTTLS And Setting SMTP Server Features
----------------------------------------------------
-
-By default STARTTLS is used whenever possible. However, there are
-some broken MTAs that don't properly implement STARTTLS. To be able
-to send to (or receive from) those MTAs, the ruleset try_tls
-(srv_features) can be used that work together with the access map.
-Entries for the access map must be tagged with Try_TLS (Srv_Features)
-and refer to the hostname or IP address of the connecting system.
-A default case can be specified by using just the tag. For example,
-the following entries in the access map:
-
- Try_TLS:broken.server NO
- Srv_Features:my.domain v
- Srv_Features: V
-
-will turn off STARTTLS when sending to broken.server (or any host
-in that domain), and request a client certificate during the TLS
-handshake only for hosts in my.domain. The valid entries on the RHS
-for Srv_Features are listed in the Sendmail Installation and
-Operations Guide.
-
-
-Received: Header
-----------------
-
-The Received: header reveals whether STARTTLS has been used. It contains an
-extra line:
-
-(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})
-
-
-+---------------------+
-| SMTP AUTHENTICATION |
-+---------------------+
-
-The macros ${auth_authen}, ${auth_author}, and ${auth_type} can be
-used in anti-relay rulesets to allow relaying for those users that
-authenticated themselves. A very simple example is:
-
-SLocal_check_rcpt
-R$* $: $&{auth_type}
-R$+ $# OK
-
-which checks whether a user has successfully authenticated using
-any available mechanism. Depending on the setup of the CYRUS SASL
-library, more sophisticated rulesets might be required, e.g.,
-
-SLocal_check_rcpt
-R$* $: $&{auth_type} $| $&{auth_authen}
-RDIGEST-MD5 $| $+@$=w $# OK
-
-to allow relaying for users that authenticated using DIGEST-MD5
-and have an identity in the local domains.
-
-The ruleset trust_auth is used to determine whether a given AUTH=
-parameter (that is passed to this ruleset) should be trusted. This
-ruleset may make use of the other ${auth_*} macros. Only if the
-ruleset resolves to the error mailer, the AUTH= parameter is not
-trusted. A user supplied ruleset Local_trust_auth can be written
-to modify the default behavior, which only trust the AUTH=
-parameter if it is identical to the authenticated user.
-
-Per default, relaying is allowed for any user who authenticated
-via a "trusted" mechanism, i.e., one that is defined via
-TRUST_AUTH_MECH(`list of mechanisms')
-For example:
-TRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5')
-
-If the selected mechanism provides a security layer the number of
-bits used for the key of the symmetric cipher is stored in the
-macro ${auth_ssf}.
-
-If sendmail acts as client, it needs some information how to
-authenticate against another MTA. This information can be provided
-by the ruleset authinfo or by the option DefaultAuthInfo. The
-authinfo ruleset looks up {server_name} using the tag AuthInfo: in
-the access map. If no entry is found, {server_addr} is looked up
-in the same way and finally just the tag AuthInfo: to provide
-default values. Note: searches for domain parts or IP nets are
-only performed if the access map is used; if the authinfo feature
-is used then only up to three lookups are performed (two exact
-matches, one default).
-
-Notice: the default configuration file causes the option DefaultAuthInfo
-to fail since the ruleset authinfo is in the .cf file. If you really
-want to use DefaultAuthInfo (it is deprecated) then you have to
-remove the ruleset.
-
-The RHS for an AuthInfo: entry in the access map should consists of a
-list of tokens, each of which has the form: "TDstring" (including
-the quotes). T is a tag which describes the item, D is a delimiter,
-either ':' for simple text or '=' for a base64 encoded string.
-Valid values for the tag are:
-
- U user (authorization) id
- I authentication id
- P password
- R realm
- M list of mechanisms delimited by spaces
-
-Example entries are:
-
-AuthInfo:other.dom "U:user" "I:user" "P:secret" "R:other.dom" "M:DIGEST-MD5"
-AuthInfo:host.more.dom "U:user" "P=c2VjcmV0"
-
-User id or authentication id must exist as well as the password. All
-other entries have default values. If one of user or authentication
-id is missing, the existing value is used for the missing item.
-If "R:" is not specified, realm defaults to $j. The list of mechanisms
-defaults to those specified by AuthMechanisms.
-
-Since this map contains sensitive information, either the access
-map must be unreadable by everyone but root (or the trusted user)
-or FEATURE(`authinfo') must be used which provides a separate map.
-Notice: It is not checked whether the map is actually
-group/world-unreadable, this is left to the user.
-
-+--------------------------------+
-| ADDING NEW MAILERS OR RULESETS |
-+--------------------------------+
-
-Sometimes you may need to add entirely new mailers or rulesets. They
-should be introduced with the constructs MAILER_DEFINITIONS and
-LOCAL_RULESETS respectively. For example:
-
- MAILER_DEFINITIONS
- Mmymailer, ...
- ...
-
- LOCAL_RULESETS
- Smyruleset
- ...
-
-Local additions for the rulesets srv_features, try_tls, tls_rcpt,
-tls_client, and tls_server can be made using LOCAL_SRV_FEATURES,
-LOCAL_TRY_TLS, LOCAL_TLS_RCPT, LOCAL_TLS_CLIENT, and LOCAL_TLS_SERVER,
-respectively. For example, to add a local ruleset that decides
-whether to try STARTTLS in a sendmail client, use:
-
- LOCAL_TRY_TLS
- R...
-
-Note: you don't need to add a name for the ruleset, it is implicitly
-defined by using the appropriate macro.
-
-
-+-------------------------+
-| ADDING NEW MAIL FILTERS |
-+-------------------------+
-
-Sendmail supports mail filters to filter incoming SMTP messages according
-to the "Sendmail Mail Filter API" documentation. These filters can be
-configured in your mc file using the two commands:
-
- MAIL_FILTER(`name', `equates')
- INPUT_MAIL_FILTER(`name', `equates')
-
-The first command, MAIL_FILTER(), simply defines a filter with the given
-name and equates. For example:
-
- MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
-
-This creates the equivalent sendmail.cf entry:
-
- Xarchive, S=local:/var/run/archivesock, F=R
-
-The INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER
-but also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name
-of the filter such that the filter will actually be called by sendmail.
-
-For example, the two commands:
-
- INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
- INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T')
-
-are equivalent to the three commands:
-
- MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R')
- MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T')
- define(`confINPUT_MAIL_FILTERS', `archive, spamcheck')
-
-In general, INPUT_MAIL_FILTER() should be used unless you need to define
-more filters than you want to use for `confINPUT_MAIL_FILTERS'.
-
-Note that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER()
-commands will clear the list created by the prior INPUT_MAIL_FILTER()
-commands.
-
-
-+-------------------------+
-| QUEUE GROUP DEFINITIONS |
-+-------------------------+
-
-In addition to the queue directory (which is the default queue group
-called "mqueue"), sendmail can deal with multiple queue groups, which
-are collections of queue directories with the same behaviour. Queue
-groups can be defined using the command:
-
- QUEUE_GROUP(`name', `equates')
-
-For details about queue groups, please see doc/op/op.{me,ps,txt}.
-
-+-------------------------------+
-| NON-SMTP BASED CONFIGURATIONS |
-+-------------------------------+
-
-These configuration files are designed primarily for use by
-SMTP-based sites. They may not be well tuned for UUCP-only or
-UUCP-primarily nodes (the latter is defined as a small local net
-connected to the rest of the world via UUCP). However, there is
-one hook to handle some special cases.
-
-You can define a ``smart host'' that understands a richer address syntax
-using:
-
- define(`SMART_HOST', `mailer:hostname')
-
-In this case, the ``mailer:'' defaults to "relay". Any messages that
-can't be handled using the usual UUCP rules are passed to this host.
-
-If you are on a local SMTP-based net that connects to the outside
-world via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules.
-For example:
-
- define(`SMART_HOST', `uucp-new:uunet')
- LOCAL_NET_CONFIG
- R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3
-
-This will cause all names that end in your domain name ($m) to be sent
-via SMTP; anything else will be sent via uucp-new (smart UUCP) to uunet.
-If you have FEATURE(`nocanonify'), you may need to omit the dots after
-the $m. If you are running a local DNS inside your domain which is
-not otherwise connected to the outside world, you probably want to
-use:
-
- define(`SMART_HOST', `smtp:fire.wall.com')
- LOCAL_NET_CONFIG
- R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3
-
-That is, send directly only to things you found in your DNS lookup;
-anything else goes through SMART_HOST.
-
-You may need to turn off the anti-spam rules in order to accept
-UUCP mail with FEATURE(`promiscuous_relay') and
-FEATURE(`accept_unresolvable_domains').
-
-
-+-----------+
-| WHO AM I? |
-+-----------+
-
-Normally, the $j macro is automatically defined to be your fully
-qualified domain name (FQDN). Sendmail does this by getting your
-host name using gethostname and then calling gethostbyname on the
-result. For example, in some environments gethostname returns
-only the root of the host name (such as "foo"); gethostbyname is
-supposed to return the FQDN ("foo.bar.com"). In some (fairly rare)
-cases, gethostbyname may fail to return the FQDN. In this case
-you MUST define confDOMAIN_NAME to be your fully qualified domain
-name. This is usually done using:
-
- Dmbar.com
- define(`confDOMAIN_NAME', `$w.$m')dnl
-
-
-+-----------------------------------+
-| ACCEPTING MAIL FOR MULTIPLE NAMES |
-+-----------------------------------+
-
-If your host is known by several different names, you need to augment
-class {w}. This is a list of names by which your host is known, and
-anything sent to an address using a host name in this list will be
-treated as local mail. You can do this in two ways: either create the
-file /etc/mail/local-host-names containing a list of your aliases (one per
-line), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add
-``LOCAL_DOMAIN(`alias.host.name')''. Be sure you use the fully-qualified
-name of the host, rather than a short name.
-
-If you want to have different address in different domains, take
-a look at the virtusertable feature, which is also explained at
-http://www.sendmail.org/virtual-hosting.html
-
-
-+--------------------+
-| USING MAILERTABLES |
-+--------------------+
-
-To use FEATURE(`mailertable'), you will have to create an external
-database containing the routing information for various domains.
-For example, a mailertable file in text format might be:
-
- .my.domain xnet:%1.my.domain
- uuhost1.my.domain uucp-new:uuhost1
- .bitnet smtp:relay.bit.net
-
-This should normally be stored in /etc/mail/mailertable. The actual
-database version of the mailertable is built using:
-
- makemap hash /etc/mail/mailertable < /etc/mail/mailertable
-
-The semantics are simple. Any LHS entry that does not begin with
-a dot matches the full host name indicated. LHS entries beginning
-with a dot match anything ending with that domain name (including
-the leading dot) -- that is, they can be thought of as having a
-leading ".+" regular expression pattern for a non-empty sequence of
-characters. Matching is done in order of most-to-least qualified
--- for example, even though ".my.domain" is listed first in the
-above example, an entry of "uuhost1.my.domain" will match the second
-entry since it is more explicit. Note: e-mail to "user@my.domain"
-does not match any entry in the above table. You need to have
-something like:
-
- my.domain esmtp:host.my.domain
-
-The RHS should always be a "mailer:host" pair. The mailer is the
-configuration name of a mailer (that is, an M line in the
-sendmail.cf file). The "host" will be the hostname passed to
-that mailer. In domain-based matches (that is, those with leading
-dots) the "%1" may be used to interpolate the wildcarded part of
-the host name. For example, the first line above sends everything
-addressed to "anything.my.domain" to that same host name, but using
-the (presumably experimental) xnet mailer.
-
-In some cases you may want to temporarily turn off MX records,
-particularly on gateways. For example, you may want to MX
-everything in a domain to one machine that then forwards it
-directly. To do this, you might use the DNS configuration:
-
- *.domain. IN MX 0 relay.machine
-
-and on relay.machine use the mailertable:
-
- .domain smtp:[gateway.domain]
-
-The [square brackets] turn off MX records for this host only.
-If you didn't do this, the mailertable would use the MX record
-again, which would give you an MX loop.
-
-
-+--------------------------------+
-| USING USERDB TO MAP FULL NAMES |
-+--------------------------------+
-
-The user database was not originally intended for mapping full names
-to login names (e.g., Eric.Allman => eric), but some people are using
-it that way. (it is recommended that you set up aliases for this
-purpose instead -- since you can specify multiple alias files, this
-is fairly easy.) The intent was to locate the default maildrop at
-a site, but allow you to override this by sending to a specific host.
-
-If you decide to set up the user database in this fashion, it is
-imperative that you not use FEATURE(`stickyhost') -- otherwise,
-e-mail sent to Full.Name@local.host.name will be rejected.
-
-To build the internal form of the user database, use:
-
- makemap btree /etc/mail/userdb < /etc/mail/userdb.txt
-
-As a general rule, it is an extremely bad idea to using full names
-as e-mail addresses, since they are not in any sense unique. For
-example, the UNIX software-development community has at least two
-well-known Peter Deutsches, and at one time Bell Labs had two
-Stephen R. Bournes with offices along the same hallway. Which one
-will be forced to suffer the indignity of being Stephen_R_Bourne_2?
-The less famous of the two, or the one that was hired later?
-
-Finger should handle full names (and be fuzzy). Mail should use
-handles, and not be fuzzy.
-
-
-+--------------------------------+
-| MISCELLANEOUS SPECIAL FEATURES |
-+--------------------------------+
-
-Plussed users
- Sometimes it is convenient to merge configuration on a
- centralized mail machine, for example, to forward all
- root mail to a mail server. In this case it might be
- useful to be able to treat the root addresses as a class
- of addresses with subtle differences. You can do this
- using plussed users. For example, a client might include
- the alias:
-
- root: root+client1@server
-
- On the server, this will match an alias for "root+client1".
- If that is not found, the alias "root+*" will be tried,
- then "root".
-
-
-+----------------+
-| SECURITY NOTES |
-+----------------+
-
-A lot of sendmail security comes down to you. Sendmail 8 is much
-more careful about checking for security problems than previous
-versions, but there are some things that you still need to watch
-for. In particular:
-
-* Make sure the aliases file is not writable except by trusted
- system personnel. This includes both the text and database
- version.
-
-* Make sure that other files that sendmail reads, such as the
- mailertable, are only writable by trusted system personnel.
-
-* The queue directory should not be world writable PARTICULARLY
- if your system allows "file giveaways" (that is, if a non-root
- user can chown any file they own to any other user).
-
-* If your system allows file giveaways, DO NOT create a publically
- writable directory for forward files. This will allow anyone
- to steal anyone else's e-mail. Instead, create a script that
- copies the .forward file from users' home directories once a
- night (if you want the non-NFS-mounted forward directory).
-
-* If your system allows file giveaways, you'll find that
- sendmail is much less trusting of :include: files -- in
- particular, you'll have to have /SENDMAIL/ANY/SHELL/ in
- /etc/shells before they will be trusted (that is, before
- files and programs listed in them will be honored).
-
-In general, file giveaways are a mistake -- if you can turn them
-off, do so.
-
-
-+--------------------------------+
-| TWEAKING CONFIGURATION OPTIONS |
-+--------------------------------+
-
-There are a large number of configuration options that don't normally
-need to be changed. However, if you feel you need to tweak them, you
-can define the following M4 variables. This list is shown in four
-columns: the name you define, the default value for that definition,
-the option or macro that is affected (either Ox for an option or Dx
-for a macro), and a brief description. Greater detail of the semantics
-can be found in the Installation and Operations Guide.
-
-Some options are likely to be deprecated in future versions -- that is,
-the option is only included to provide back-compatibility. These are
-marked with "*".
-
-Remember that these options are M4 variables, and hence may need to
-be quoted. In particular, arguments with commas will usually have to
-be ``double quoted, like this phrase'' to avoid having the comma
-confuse things. This is common for alias file definitions and for
-the read timeout.
-
-M4 Variable Name Configuration Description & [Default]
-================ ============= =======================
-confMAILER_NAME $n macro [MAILER-DAEMON] The sender name used
- for internally generated outgoing
- messages.
-confDOMAIN_NAME $j macro If defined, sets $j. This should
- only be done if your system cannot
- determine your local domain name,
- and then it should be set to
- $w.Foo.COM, where Foo.COM is your
- domain name.
-confCF_VERSION $Z macro If defined, this is appended to the
- configuration version name.
-confLDAP_CLUSTER ${sendmailMTACluster} macro
- If defined, this is the LDAP
- cluster to use for LDAP searches
- as described above in ``USING LDAP
- FOR ALIASES, MAPS, AND CLASSES''.
-confFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an
- internally generated From: address.
-confRECEIVED_HEADER Received:
- [$?sfrom $s $.$?_($?s$|from $.$_)
- $.$?{auth_type}(authenticated)
- $.by $j ($v/$Z)$?r with $r$. id $i$?u
- for $u; $|;
- $.$b]
- The format of the Received: header
- in messages passed through this host.
- It is unwise to try to change this.
-confCW_FILE Fw class [/etc/mail/local-host-names] Name
- of file used to get the local
- additions to class {w} (local host
- names).
-confCT_FILE Ft class [/etc/mail/trusted-users] Name of
- file used to get the local additions
- to class {t} (trusted users).
-confCR_FILE FR class [/etc/mail/relay-domains] Name of
- file used to get the local additions
- to class {R} (hosts allowed to relay).
-confTRUSTED_USERS Ct class [no default] Names of users to add to
- the list of trusted users. This list
- always includes root, uucp, and daemon.
- See also FEATURE(`use_ct_file').
-confTRUSTED_USER TrustedUser [no default] Trusted user for file
- ownership and starting the daemon.
- Not to be confused with
- confTRUSTED_USERS (see above).
-confSMTP_MAILER - [esmtp] The mailer name used when
- SMTP connectivity is required.
- One of "smtp", "smtp8",
- "esmtp", or "dsmtp".
-confUUCP_MAILER - [uucp-old] The mailer to be used by
- default for bang-format recipient
- addresses. See also discussion of
- class {U}, class {Y}, and class {Z}
- in the MAILER(`uucp') section.
-confLOCAL_MAILER - [local] The mailer name used when
- local connectivity is required.
- Almost always "local".
-confRELAY_MAILER - [relay] The default mailer name used
- for relaying any mail (e.g., to a
- BITNET_RELAY, a SMART_HOST, or
- whatever). This can reasonably be
- "uucp-new" if you are on a
- UUCP-connected site.
-confSEVEN_BIT_INPUT SevenBitInput [False] Force input to seven bits?
-confEIGHT_BIT_HANDLING EightBitMode [pass8] 8-bit data handling
-confALIAS_WAIT AliasWait [10m] Time to wait for alias file
- rebuild until you get bored and
- decide that the apparently pending
- rebuild failed.
-confMIN_FREE_BLOCKS MinFreeBlocks [100] Minimum number of free blocks on
- queue filesystem to accept SMTP mail.
- (Prior to 8.7 this was minfree/maxsize,
- where minfree was the number of free
- blocks and maxsize was the maximum
- message size. Use confMAX_MESSAGE_SIZE
- for the second value now.)
-confMAX_MESSAGE_SIZE MaxMessageSize [infinite] The maximum size of messages
- that will be accepted (in bytes).
-confBLANK_SUB BlankSub [.] Blank (space) substitution
- character.
-confCON_EXPENSIVE HoldExpensive [False] Avoid connecting immediately
- to mailers marked expensive.
-confCHECKPOINT_INTERVAL CheckpointInterval
- [10] Checkpoint queue files every N
- recipients.
-confDELIVERY_MODE DeliveryMode [background] Default delivery mode.
-confERROR_MODE ErrorMode [print] Error message mode.
-confERROR_MESSAGE ErrorHeader [undefined] Error message header/file.
-confSAVE_FROM_LINES SaveFromLine Save extra leading From_ lines.
-confTEMP_FILE_MODE TempFileMode [0600] Temporary file mode.
-confMATCH_GECOS MatchGECOS [False] Match GECOS field.
-confMAX_HOP MaxHopCount [25] Maximum hop count.
-confIGNORE_DOTS* IgnoreDots [False; always False in -bs or -bd
- mode] Ignore dot as terminator for
- incoming messages?
-confBIND_OPTS ResolverOptions [undefined] Default options for DNS
- resolver.
-confMIME_FORMAT_ERRORS* SendMimeErrors [True] Send error messages as MIME-
- encapsulated messages per RFC 1344.
-confFORWARD_PATH ForwardPath [$z/.forward.$w:$z/.forward]
- The colon-separated list of places to
- search for .forward files. N.B.: see
- the Security Notes section.
-confMCI_CACHE_SIZE ConnectionCacheSize
- [2] Size of open connection cache.
-confMCI_CACHE_TIMEOUT ConnectionCacheTimeout
- [5m] Open connection cache timeout.
-confHOST_STATUS_DIRECTORY HostStatusDirectory
- [undefined] If set, host status is kept
- on disk between sendmail runs in the
- named directory tree. This need not be
- a full pathname, in which case it is
- interpreted relative to the queue
- directory.
-confSINGLE_THREAD_DELIVERY SingleThreadDelivery
- [False] If this option and the
- HostStatusDirectory option are both
- set, single thread deliveries to other
- hosts. That is, don't allow any two
- sendmails on this host to connect
- simultaneously to any other single
- host. This can slow down delivery in
- some cases, in particular since a
- cached but otherwise idle connection
- to a host will prevent other sendmails
- from connecting to the other host.
-confUSE_ERRORS_TO* UseErrorsTo [False] Use the Errors-To: header to
- deliver error messages. This should
- not be necessary because of general
- acceptance of the envelope/header
- distinction.
-confLOG_LEVEL LogLevel [9] Log level.
-confME_TOO MeToo [True] Include sender in group
- expansions. This option is
- deprecated and will be removed from
- a future version.
-confCHECK_ALIASES CheckAliases [False] Check RHS of aliases when
- running newaliases. Since this does
- DNS lookups on every address, it can
- slow down the alias rebuild process
- considerably on large alias files.
-confOLD_STYLE_HEADERS* OldStyleHeaders [True] Assume that headers without
- special chars are old style.
-confPRIVACY_FLAGS PrivacyOptions [authwarnings] Privacy flags.
-confCOPY_ERRORS_TO PostmasterCopy [undefined] Address for additional
- copies of all error messages.
-confQUEUE_FACTOR QueueFactor [600000] Slope of queue-only function.
-confQUEUE_FILE_MODE QueueFileMode [undefined] Default permissions for
- queue files (octal). If not set,
- sendmail uses 0600 unless its real
- and effective uid are different in
- which case it uses 0644.
-confDONT_PRUNE_ROUTES DontPruneRoutes [False] Don't prune down route-addr
- syntax addresses to the minimum
- possible.
-confSAFE_QUEUE* SuperSafe [True] Commit all messages to disk
- before forking.
-confTO_INITIAL Timeout.initial [5m] The timeout waiting for a response
- on the initial connect.
-confTO_CONNECT Timeout.connect [0] The timeout waiting for an initial
- connect() to complete. This can only
- shorten connection timeouts; the kernel
- silently enforces an absolute maximum
- (which varies depending on the system).
-confTO_ICONNECT Timeout.iconnect
- [undefined] Like Timeout.connect, but
- applies only to the very first attempt
- to connect to a host in a message.
- This allows a single very fast pass
- followed by more careful delivery
- attempts in the future.
-confTO_ACONNECT Timeout.aconnect
- [0] The overall timeout waiting for
- all connection for a single delivery
- attempt to succeed. If 0, no overall
- limit is applied.
-confTO_HELO Timeout.helo [5m] The timeout waiting for a response
- to a HELO or EHLO command.
-confTO_MAIL Timeout.mail [10m] The timeout waiting for a
- response to the MAIL command.
-confTO_RCPT Timeout.rcpt [1h] The timeout waiting for a response
- to the RCPT command.
-confTO_DATAINIT Timeout.datainit
- [5m] The timeout waiting for a 354
- response from the DATA command.
-confTO_DATABLOCK Timeout.datablock
- [1h] The timeout waiting for a block
- during DATA phase.
-confTO_DATAFINAL Timeout.datafinal
- [1h] The timeout waiting for a response
- to the final "." that terminates a
- message.
-confTO_RSET Timeout.rset [5m] The timeout waiting for a response
- to the RSET command.
-confTO_QUIT Timeout.quit [2m] The timeout waiting for a response
- to the QUIT command.
-confTO_MISC Timeout.misc [2m] The timeout waiting for a response
- to other SMTP commands.
-confTO_COMMAND Timeout.command [1h] In server SMTP, the timeout
- waiting for a command to be issued.
-confTO_IDENT Timeout.ident [5s] The timeout waiting for a
- response to an IDENT query.
-confTO_FILEOPEN Timeout.fileopen
- [60s] The timeout waiting for a file
- (e.g., :include: file) to be opened.
-confTO_LHLO Timeout.lhlo [2m] The timeout waiting for a response
- to an LMTP LHLO command.
-confTO_AUTH Timeout.auth [10m] The timeout waiting for a
- response in an AUTH dialogue.
-confTO_STARTTLS Timeout.starttls
- [1h] The timeout waiting for a
- response to an SMTP STARTTLS command.
-confTO_CONTROL Timeout.control
- [2m] The timeout for a complete
- control socket transaction to complete.
-confTO_QUEUERETURN Timeout.queuereturn
- [5d] The timeout before a message is
- returned as undeliverable.
-confTO_QUEUERETURN_NORMAL
- Timeout.queuereturn.normal
- [undefined] As above, for normal
- priority messages.
-confTO_QUEUERETURN_URGENT
- Timeout.queuereturn.urgent
- [undefined] As above, for urgent
- priority messages.
-confTO_QUEUERETURN_NONURGENT
- Timeout.queuereturn.non-urgent
- [undefined] As above, for non-urgent
- (low) priority messages.
-confTO_QUEUEWARN Timeout.queuewarn
- [4h] The timeout before a warning
- message is sent to the sender telling
- them that the message has been
- deferred.
-confTO_QUEUEWARN_NORMAL Timeout.queuewarn.normal
- [undefined] As above, for normal
- priority messages.
-confTO_QUEUEWARN_URGENT Timeout.queuewarn.urgent
- [undefined] As above, for urgent
- priority messages.
-confTO_QUEUEWARN_NONURGENT
- Timeout.queuewarn.non-urgent
- [undefined] As above, for non-urgent
- (low) priority messages.
-confTO_HOSTSTATUS Timeout.hoststatus
- [30m] How long information about host
- statuses will be maintained before it
- is considered stale and the host should
- be retried. This applies both within
- a single queue run and to persistent
- information (see below).
-confTO_RESOLVER_RETRANS Timeout.resolver.retrans
- [varies] Sets the resolver's
- retransmission time interval (in
- seconds). Sets both
- Timeout.resolver.retrans.first and
- Timeout.resolver.retrans.normal.
-confTO_RESOLVER_RETRANS_FIRST Timeout.resolver.retrans.first
- [varies] Sets the resolver's
- retransmission time interval (in
- seconds) for the first attempt to
- deliver a message.
-confTO_RESOLVER_RETRANS_NORMAL Timeout.resolver.retrans.normal
- [varies] Sets the resolver's
- retransmission time interval (in
- seconds) for all resolver lookups
- except the first delivery attempt.
-confTO_RESOLVER_RETRY Timeout.resolver.retry
- [varies] Sets the number of times
- to retransmit a resolver query.
- Sets both
- Timeout.resolver.retry.first and
- Timeout.resolver.retry.normal.
-confTO_RESOLVER_RETRY_FIRST Timeout.resolver.retry.first
- [varies] Sets the number of times
- to retransmit a resolver query for
- the first attempt to deliver a
- message.
-confTO_RESOLVER_RETRY_NORMAL Timeout.resolver.retry.normal
- [varies] Sets the number of times
- to retransmit a resolver query for
- all resolver lookups except the
- first delivery attempt.
-confTIME_ZONE TimeZoneSpec [USE_SYSTEM] Time zone info -- can be
- USE_SYSTEM to use the system's idea,
- USE_TZ to use the user's TZ envariable,
- or something else to force that value.
-confDEF_USER_ID DefaultUser [1:1] Default user id.
-confUSERDB_SPEC UserDatabaseSpec
- [undefined] User database
- specification.
-confFALLBACK_MX FallbackMXhost [undefined] Fallback MX host.
-confTRY_NULL_MX_LIST TryNullMXList [False] If this host is the best MX
- for a host and other arrangements
- haven't been made, try connecting
- to the host directly; normally this
- would be a config error.
-confQUEUE_LA QueueLA [varies] Load average at which
- queue-only function kicks in.
- Default values is (8 * numproc)
- where numproc is the number of
- processors online (if that can be
- determined).
-confREFUSE_LA RefuseLA [varies] Load average at which
- incoming SMTP connections are
- refused. Default values is (12 *
- numproc) where numproc is the
- number of processors online (if
- that can be determined).
-confDELAY_LA DelayLA [0] Load average at which sendmail
- will sleep for one second on most
- SMTP commands and before accepting
- connections. 0 means no limit.
-confMAX_ALIAS_RECURSION MaxAliasRecursion
- [10] Maximum depth of alias recursion.
-confMAX_DAEMON_CHILDREN MaxDaemonChildren
- [undefined] The maximum number of
- children the daemon will permit. After
- this number, connections will be
- rejected. If not set or <= 0, there is
- no limit.
-confMAX_HEADERS_LENGTH MaxHeadersLength
- [32768] Maximum length of the sum
- of all headers.
-confMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength
- [undefined] Maximum length of
- certain MIME header field values.
- If not set, sendmail uses 2048/1024.
-confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
- [undefined] The maximum number of
- connections permitted per second per
- daemon. After this many connections
- are accepted, further connections
- will be delayed. If not set or <= 0,
- there is no limit.
-confWORK_RECIPIENT_FACTOR
- RecipientFactor [30000] Cost of each recipient.
-confSEPARATE_PROC ForkEachJob [False] Run all deliveries in a
- separate process.
-confWORK_CLASS_FACTOR ClassFactor [1800] Priority multiplier for class.
-confWORK_TIME_FACTOR RetryFactor [90000] Cost of each delivery attempt.
-confQUEUE_SORT_ORDER QueueSortOrder [Priority] Queue sort algorithm:
- Priority, Host, Filename, Random,
- Modification, or Time.
-confMIN_QUEUE_AGE MinQueueAge [0] The minimum amount of time a job
- must sit in the queue between queue
- runs. This allows you to set the
- queue run interval low for better
- responsiveness without trying all
- jobs in each run.
-confDEF_CHAR_SET DefaultCharSet [unknown-8bit] When converting
- unlabeled 8 bit input to MIME, the
- character set to use by default.
-confSERVICE_SWITCH_FILE ServiceSwitchFile
- [/etc/mail/service.switch] The file
- to use for the service switch on
- systems that do not have a
- system-defined switch.
-confHOSTS_FILE HostsFile [/etc/hosts] The file to use when doing
- "file" type access of hosts names.
-confDIAL_DELAY DialDelay [0s] If a connection fails, wait this
- long and try again. Zero means "don't
- retry". This is to allow "dial on
- demand" connections to have enough time
- to complete a connection.
-confNO_RCPT_ACTION NoRecipientAction
- [none] What to do if there are no legal
- recipient fields (To:, Cc: or Bcc:)
- in the message. Legal values can
- be "none" to just leave the
- nonconforming message as is, "add-to"
- to add a To: header with all the
- known recipients (which may expose
- blind recipients), "add-apparently-to"
- to do the same but use Apparently-To:
- instead of To: (strongly discouraged
- in accordance with IETF standards),
- "add-bcc" to add an empty Bcc:
- header, or "add-to-undisclosed" to
- add the header
- ``To: undisclosed-recipients:;''.
-confSAFE_FILE_ENV SafeFileEnvironment
- [undefined] If set, sendmail will do a
- chroot() into this directory before
- writing files.
-confCOLON_OK_IN_ADDR ColonOkInAddr [True unless Configuration Level > 6]
- If set, colons are treated as a regular
- character in addresses. If not set,
- they are treated as the introducer to
- the RFC 822 "group" syntax. Colons are
- handled properly in route-addrs. This
- option defaults on for V5 and lower
- configuration files.
-confMAX_QUEUE_RUN_SIZE MaxQueueRunSize [0] If set, limit the maximum size of
- any given queue run to this number of
- entries. Essentially, this will stop
- reading each queue directory after this
- number of entries are reached; it does
- _not_ pick the highest priority jobs,
- so this should be as large as your
- system can tolerate. If not set, there
- is no limit.
-confMAX_QUEUE_CHILDREN MaxQueueChildren
- [undefined] Limits the maximum number
- of concurrent queue runners active.
- This is to keep system resources used
- within a reasonable limit. Relates to
- Queue Groups and ForkAllJobs.
-confMAX_RUNNERS_PER_QUEUE MaxRunnersPerQueue
- [1] Only active when MaxQueueChildren
- defined. Controls the maximum number
- of queue runners (aka queue children)
- active at the same time in a work
- group. See also MaxQueueChildren.
-confDONT_EXPAND_CNAMES DontExpandCnames
- [False] If set, $[ ... $] lookups that
- do DNS based lookups do not expand
- CNAME records. This currently violates
- the published standards, but the IETF
- seems to be moving toward legalizing
- this. For example, if "FTP.Foo.ORG"
- is a CNAME for "Cruft.Foo.ORG", then
- with this option set a lookup of
- "FTP" will return "FTP.Foo.ORG"; if
- clear it returns "Cruft.FOO.ORG". N.B.
- you may not see any effect until your
- downstream neighbors stop doing CNAME
- lookups as well.
-confFROM_LINE UnixFromLine [From $g $d] The From_ line used
- when sending to files or programs.
-confSINGLE_LINE_FROM_HEADER SingleLineFromHeader
- [False] From: lines that have
- embedded newlines are unwrapped
- onto one line.
-confALLOW_BOGUS_HELO AllowBogusHELO [False] Allow HELO SMTP command that
- does not include a host name.
-confMUST_QUOTE_CHARS MustQuoteChars [.'] Characters to be quoted in a full
- name phrase (@,;:\()[] are automatic).
-confOPERATORS OperatorChars [.:%@!^/[]+] Address operator
- characters.
-confSMTP_LOGIN_MSG SmtpGreetingMessage
- [$j Sendmail $v/$Z; $b]
- The initial (spontaneous) SMTP
- greeting message. The word "ESMTP"
- will be inserted between the first and
- second words to convince other
- sendmails to try to speak ESMTP.
-confDONT_INIT_GROUPS DontInitGroups [False] If set, the initgroups(3)
- routine will never be invoked. You
- might want to do this if you are
- running NIS and you have a large group
- map, since this call does a sequential
- scan of the map; in a large site this
- can cause your ypserv to run
- essentially full time. If you set
- this, agents run on behalf of users
- will only have their primary
- (/etc/passwd) group permissions.
-confUNSAFE_GROUP_WRITES UnsafeGroupWrites
- [False] If set, group-writable
- :include: and .forward files are
- considered "unsafe", that is, programs
- and files cannot be directly referenced
- from such files. World-writable files
- are always considered unsafe.
-confCONNECT_ONLY_TO ConnectOnlyTo [undefined] override connection
- address (for testing).
-confCONTROL_SOCKET_NAME ControlSocketName
- [undefined] Control socket for daemon
- management.
-confDOUBLE_BOUNCE_ADDRESS DoubleBounceAddress
- [postmaster] If an error occurs when
- sending an error message, send that
- "double bounce" error message to this
- address. If it expands to an empty
- string, double bounces are dropped.
-confDEAD_LETTER_DROP DeadLetterDrop [undefined] Filename to save bounce
- messages which could not be returned
- to the user or sent to postmaster.
- If not set, the queue file will
- be renamed.
-confRRT_IMPLIES_DSN RrtImpliesDsn [False] Return-Receipt-To: header
- implies DSN request.
-confRUN_AS_USER RunAsUser [undefined] If set, become this user
- when reading and delivering mail.
- Causes all file reads (e.g., .forward
- and :include: files) to be done as
- this user. Also, all programs will
- be run as this user, and all output
- files will be written as this user.
-confMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage
- [infinite] If set, allow no more than
- the specified number of recipients in
- an SMTP envelope. Further recipients
- receive a 452 error code (i.e., they
- are deferred for the next delivery
- attempt).
-confBAD_RCPT_THROTTLE BadRcptThrottle [infinite] If set and more than the
- specified number of recipients in an
- envelope are rejected, sleep for one
- second after each rejected RCPT
- command.
-confDONT_PROBE_INTERFACES DontProbeInterfaces
- [False] If set, sendmail will _not_
- insert the names and addresses of any
- local interfaces into class {w}
- (list of known "equivalent" addresses).
- If you set this, you must also include
- some support for these addresses (e.g.,
- in a mailertable entry) -- otherwise,
- mail to addresses in this list will
- bounce with a configuration error.
- If set to "loopback" (without
- quotes), sendmail will skip
- loopback interfaces (e.g., "lo0").
-confPID_FILE PidFile [system dependent] Location of pid
- file.
-confPROCESS_TITLE_PREFIX ProcessTitlePrefix
- [undefined] Prefix string for the
- process title shown on 'ps' listings.
-confDONT_BLAME_SENDMAIL DontBlameSendmail
- [safe] Override sendmail's file
- safety checks. This will definitely
- compromise system security and should
- not be used unless absolutely
- necessary.
-confREJECT_MSG - [550 Access denied] The message
- given if the access database contains
- REJECT in the value portion.
-confRELAY_MSG - [550 Relaying denied] The message
- given if an unauthorized relaying
- attempt is rejected.
-confDF_BUFFER_SIZE DataFileBufferSize
- [4096] The maximum size of a
- memory-buffered data (df) file
- before a disk-based file is used.
-confXF_BUFFER_SIZE XScriptFileBufferSize
- [4096] The maximum size of a
- memory-buffered transcript (xf)
- file before a disk-based file is
- used.
-confAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5
- CRAM-MD5] List of authentication
- mechanisms for AUTH (separated by
- spaces). The advertised list of
- authentication mechanisms will be the
- intersection of this list and the list
- of available mechanisms as determined
- by the CYRUS SASL library.
-confDEF_AUTH_INFO DefaultAuthInfo [undefined] Name of file that contains
- authentication information for
- outgoing connections. This file must
- contain the user id, the authorization
- id, the password (plain text), the
- realm to use, and the list of
- mechanisms to try, each on a separate
- line and must be readable by root (or
- the trusted user) only. If no realm
- is specified, $j is used. If no
- mechanisms are given in the file,
- AuthMechanisms is used. Notice: this
- option is deprecated and will be
- removed in future versions; it doesn't
- work for the MSP since it can't read
- the file. Use the authinfo ruleset
- instead. See also the section SMTP
- AUTHENTICATION.
-confAUTH_OPTIONS AuthOptions [undefined] If this option is 'A'
- then the AUTH= parameter for the
- MAIL FROM command is only issued
- when authentication succeeded.
- Other values (which should be listed
- one after the other without any
- intervening characters except for
- space or comma) are a, c, d, f, p,
- and y. See doc/op/op.me for
- details.
-confAUTH_MAX_BITS AuthMaxBits [INT_MAX] Limit the maximum encryption
- strength for the security layer in
- SMTP AUTH (SASL). Default is
- essentially unlimited.
-confTLS_SRV_OPTIONS TLSSrvOptions If this option is 'V' no client
- verification is performed, i.e.,
- the server doesn't ask for a
- certificate.
-confLDAP_DEFAULT_SPEC LDAPDefaultSpec [undefined] Default map
- specification for LDAP maps. The
- value should only contain LDAP
- specific settings such as "-h host
- -p port -d bindDN", etc. The
- settings will be used for all LDAP
- maps unless they are specified in
- the individual map specification
- ('K' command).
-confCACERT_PATH CACertPath [undefined] Path to directory
- with certs of CAs.
-confCACERT CACertFile [undefined] File containing one CA
- cert.
-confSERVER_CERT ServerCertFile [undefined] File containing the
- cert of the server, i.e., this cert
- is used when sendmail acts as
- server.
-confSERVER_KEY ServerKeyFile [undefined] File containing the
- private key belonging to the server
- cert.
-confCLIENT_CERT ClientCertFile [undefined] File containing the
- cert of the client, i.e., this cert
- is used when sendmail acts as
- client.
-confCLIENT_KEY ClientKeyFile [undefined] File containing the
- private key belonging to the client
- cert.
-confDH_PARAMETERS DHParameters [undefined] File containing the
- DH parameters.
-confRAND_FILE RandFile [undefined] File containing random
- data (use prefix file:) or the
- name of the UNIX socket if EGD is
- used (use prefix egd:). STARTTLS
- requires this option if the compile
- flag HASURANDOM is not set (see
- sendmail/README).
-confNICE_QUEUE_RUN NiceQueueRun [undefined] If set, the priority of
- queue runners is set the given value
- (nice(3)).
-confDIRECT_SUBMISSION_MODIFIERS DirectSubmissionModifiers
- [undefined] Defines {daemon_flags}
- for direct submissions.
-confUSE_MSP UseMSP [false] Use as mail submission
- program, see sendmail/SECURITY.
-confDELIVER_BY_MIN DeliverByMin [0] Minimum time for Deliver By
- SMTP Service Extension (RFC 2852).
-confSHARED_MEMORY_KEY SharedMemoryKey [0] Key for shared memory.
-confFAST_SPLIT FastSplit [1] If set to a value greater than
- zero, the initial MX lookups on
- addresses is suppressed when they
- are sorted which may result in
- faster envelope splitting. If the
- mail is submitted directly from the
- command line, then the value also
- limits the number of processes to
- deliver the envelopes.
-confMAILBOX_DATABASE MailboxDatabase [pw] Type of lookup to find
- information about local mailboxes.
-confDEQUOTE_OPTS - [empty] Additional options for the
- dequote map.
-confINPUT_MAIL_FILTERS InputMailFilters
- A comma separated list of filters
- which determines which filters and
- the invocation sequence are
- contacted for incoming SMTP
- messages. If none are set, no
- filters will be contacted.
-confMILTER_LOG_LEVEL Milter.LogLevel [9] Log level for input mail filter
- actions, defaults to LogLevel.
-confMILTER_MACROS_CONNECT Milter.macros.connect
- [j, _, {daemon_name}, {if_name},
- {if_addr}] Macros to transmit to
- milters when a session connection
- starts.
-confMILTER_MACROS_HELO Milter.macros.helo
- [{tls_version}, {cipher},
- {cipher_bits}, {cert_subject},
- {cert_issuer}] Macros to transmit to
- milters after HELO/EHLO command.
-confMILTER_MACROS_ENVFROM Milter.macros.envfrom
- [i, {auth_type}, {auth_authen},
- {auth_ssf}, {auth_author},
- {mail_mailer}, {mail_host},
- {mail_addr}] Macros to transmit to
- milters after MAIL FROM command.
-confMILTER_MACROS_ENVRCPT Milter.macros.envrcpt
- [{rcpt_mailer}, {rcpt_host},
- {rcpt_addr}] Macros to transmit to
- milters after RCPT TO command.
-
-
-See also the description of OSTYPE for some parameters that can be
-tweaked (generally pathnames to mailers).
-
-ClientPortOptions and DaemonPortOptions are special cases since multiple
-clients/daemons can be defined. This can be done via
-
- CLIENT_OPTIONS(`field1=value1,field2=value2,...')
- DAEMON_OPTIONS(`field1=value1,field2=value2,...')
-
-Note that multiple CLIENT_OPTIONS() commands (and therefore multiple
-ClientPortOptions settings) are allowed in order to give settings for each
-protocol family (e.g., one for Family=inet and one for Family=inet6). A
-restriction placed on one family only affects outgoing connections on that
-particular family.
-
-If DAEMON_OPTIONS is not used, then the default is
-
- DAEMON_OPTIONS(`Port=smtp, Name=MTA')
- DAEMON_OPTIONS(`Port=587, Name=MSA, M=E')
-
-If you use one DAEMON_OPTIONS macro, it will alter the parameters
-of the first of these. The second will still be defaulted; it
-represents a "Message Submission Agent" (MSA) as defined by RFC
-2476 (see below). To turn off the default definition for the MSA,
-use FEATURE(`no_default_msa') (see also FEATURES). If you use
-additional DAEMON_OPTIONS macros, they will add additional daemons.
-
-Example 1: To change the port for the SMTP listener, while
-still using the MSA default, use
- DAEMON_OPTIONS(`Port=925, Name=MTA')
-
-Example 2: To change the port for the MSA daemon, while still
-using the default SMTP port, use
- FEATURE(`no_default_msa')
- DAEMON_OPTIONS(`Name=MTA')
- DAEMON_OPTIONS(`Port=987, Name=MSA, M=E')
-
-Note that if the first of those DAEMON_OPTIONS lines were omitted, then
-there would be no listener on the standard SMTP port.
-
-Example 3: To listen on both IPv4 and IPv6 interfaces, use
-
- DAEMON_OPTIONS(`Name=MTA-v4, Family=inet')
- DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6')
-
-A "Message Submission Agent" still uses all of the same rulesets for
-processing the message (and therefore still allows message rejection via
-the check_* rulesets). In accordance with the RFC, the MSA will ensure
-that all domains in envelope addresses are fully qualified if the message
-is relayed to another MTA. It will also enforce the normal address syntax
-rules and log error messages. Additionally, by using the M=a modifier you
-can require authentication before messages are accepted by the MSA.
-Notice: Do NOT use the 'a' modifier on a public accessible MTA! Finally,
-the M=E modifier shown above disables ETRN as required by RFC 2476.
-
-Mail filters can be defined using the INPUT_MAIL_FILTER() and MAIL_FILTER()
-commands:
-
- INPUT_MAIL_FILTER(`sample', `S=local:/var/run/f1.sock')
- MAIL_FILTER(`myfilter', `S=inet:3333@localhost')
-
-The INPUT_MAIL_FILTER() command causes the filter(s) to be called in the
-same order they were specified by also setting confINPUT_MAIL_FILTERS. A
-filter can be defined without adding it to the input filter list by using
-MAIL_FILTER() instead of INPUT_MAIL_FILTER() in your .mc file.
-Alternatively, you can reset the list of filters and their order by setting
-confINPUT_MAIL_FILTERS option after all INPUT_MAIL_FILTER() commands in
-your .mc file.
-
-
-+----------------------------+
-| MESSAGE SUBMISSION PROGRAM |
-+----------------------------+
-
-The purpose of the message submission program (MSP) is explained
-in sendmail/SECURITY. This section contains a list of caveats and
-a few hints how for those who want to tweak the default configuration
-for it (which is installed as submit.cf).
-
-Notice: do not add options/features to submit.mc unless you are
-absolutely sure you need them. Options you may want to change
-include:
-
-- confTRUSTED_USERS, FEATURE(`use_ct_file'), and confCT_FILE for
- avoiding X-Authentication warnings.
-- confTIME_ZONE to change it from the default `USE_TZ'.
-- confDELIVERY_MODE is set to interactive in msp.m4 instead
- of the default background mode.
-- FEATURE(stickyhost) and LOCAL_RELAY to send unqualified addresses
- to the LOCAL_RELAY instead of the default relay.
-- confRAND_FILE if you use STARTTLS and sendmail is not compiled with
- the flag HASURANDOM.
-
-The MSP performs hostname canonicalization by default. As also
-explained in sendmail/SECURITY, mail may end up for various DNS
-related reasons in the MSP queue. This problem can be minimized by
-using
-
- FEATURE(`nocanonify', `canonify_hosts')
- define(`confDIRECT_SUBMISSION_MODIFIERS', `C')
-
-See the discussion about nocanonify for possible side effects.
-
-Some things are not intended to work with the MSP. These include
-features that influence the delivery process (e.g., mailertable,
-aliases), or those that are only important for a SMTP server (e.g.,
-virtusertable, DaemonPortOptions, multiple queues). Moreover,
-relaxing certain restrictions (RestrictQueueRun, permissions on
-queue directory) or adding features (e.g., enabling prog/file mailer)
-can cause security problems.
-
-Other things don't work well with the MSP and require tweaking or
-workarounds. For example, to allow for client authentication it
-is not just sufficient to provide a client certificate and the
-corresponding key, but it is also necessary to make the key group
-(smmsp) readable and tell sendmail not to complain about that, i.e.,
-
- define(`confDONT_BLAME_SENDMAIL', `GroupReadableKeyFile')
-
-If the MSP should actually use AUTH then the necessary data
-should be placed in a map as explained in SMTP AUTHENTICATION:
-
-FEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/msp-authinfo')
-
-/etc/mail/msp-authinfo should contain an entry like:
-
- AuthInfo:127.0.0.1 "U:smmsp" "P:secret" "M:DIGEST-MD5"
-
-The file and the map created by makemap should be owned by smmsp,
-its group should be smmsp, and it should have mode 640. The database
-used by the MTA for AUTH must have a corresponding entry.
-Additionally the MTA must trust this authentication data so the AUTH=
-part will be relayed on to the next hop. This can be achieved by
-adding the following to your sendmail.mc file:
-
- LOCAL_RULESETS
- SLocal_trust_auth
- R$* $: $&{auth_authen}
- Rsmmsp $# OK
-
-feature/msp.m4 defines almost all settings for the MSP. Most of
-those should not be changed at all. Some of the features and options
-can be overridden if really necessary. It is a bit tricky to do
-this, because it depends on the actual way the option is defined
-in feature/msp.m4. If it is directly defined (i.e., define()) then
-the modified value must be defined after
-
- FEATURE(`msp')
-
-If it is conditionally defined (i.e., ifdef()) then the desired
-value must be defined before the FEATURE line in the .mc file.
-To see how the options are defined read feature/msp.m4.
-
-
-+--------------------------+
-| FORMAT OF FILES AND MAPS |
-+--------------------------+
-
-Files that define classes, i.e., F{classname}, consist of lines
-each of which contains a single element of the class. For example,
-/etc/mail/local-host-names may have the following content:
-
-my.domain
-another.domain
-
-Maps must be created using makemap(8) , e.g.,
-
- makemap hash MAP < MAP
-
-In general, a text file from which a map is created contains lines
-of the form
-
-key value
-
-where 'key' and 'value' are also called LHS and RHS, respectively.
-By default, the delimiter between LHS and RHS is a non-empty sequence
-of white space characters.
-
-
-+------------------+
-| DIRECTORY LAYOUT |
-+------------------+
-
-Within this directory are several subdirectories, to wit:
-
-m4 General support routines. These are typically
- very important and should not be changed without
- very careful consideration.
-
-cf The configuration files themselves. They have
- ".mc" suffixes, and must be run through m4 to
- become complete. The resulting output should
- have a ".cf" suffix.
-
-ostype Definitions describing a particular operating
- system type. These should always be referenced
- using the OSTYPE macro in the .mc file. Examples
- include "bsd4.3", "bsd4.4", "sunos3.5", and
- "sunos4.1".
-
-domain Definitions describing a particular domain, referenced
- using the DOMAIN macro in the .mc file. These are
- site dependent; for example, "CS.Berkeley.EDU.m4"
- describes hosts in the CS.Berkeley.EDU subdomain.
-
-mailer Descriptions of mailers. These are referenced using
- the MAILER macro in the .mc file.
-
-sh Shell files used when building the .cf file from the
- .mc file in the cf subdirectory.
-
-feature These hold special orthogonal features that you might
- want to include. They should be referenced using
- the FEATURE macro.
-
-hack Local hacks. These can be referenced using the HACK
- macro. They shouldn't be of more than voyeuristic
- interest outside the .Berkeley.EDU domain, but who knows?
-
-siteconfig Site configuration -- e.g., tables of locally connected
- UUCP sites.
-
-
-+------------------------+
-| ADMINISTRATIVE DETAILS |
-+------------------------+
-
-The following sections detail usage of certain internal parts of the
-sendmail.cf file. Read them carefully if you are trying to modify
-the current model. If you find the above descriptions adequate, these
-should be {boring, confusing, tedious, ridiculous} (pick one or more).
-
-RULESETS (* means built in to sendmail)
-
- 0 * Parsing
- 1 * Sender rewriting
- 2 * Recipient rewriting
- 3 * Canonicalization
- 4 * Post cleanup
- 5 * Local address rewrite (after aliasing)
- 1x mailer rules (sender qualification)
- 2x mailer rules (recipient qualification)
- 3x mailer rules (sender header qualification)
- 4x mailer rules (recipient header qualification)
- 5x mailer subroutines (general)
- 6x mailer subroutines (general)
- 7x mailer subroutines (general)
- 8x reserved
- 90 Mailertable host stripping
- 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail)
- 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail)
- 98 Local part of ruleset 0 (ruleset 8 in old sendmail)
-
-
-MAILERS
-
- 0 local, prog local and program mailers
- 1 [e]smtp, relay SMTP channel
- 2 uucp-* UNIX-to-UNIX Copy Program
- 3 netnews Network News delivery
- 4 fax Sam Leffler's HylaFAX software
- 5 mail11 DECnet mailer
-
-
-MACROS
-
- A
- B Bitnet Relay
- C DECnet Relay
- D The local domain -- usually not needed
- E reserved for X.400 Relay
- F FAX Relay
- G
- H mail Hub (for mail clusters)
- I
- J
- K
- L Luser Relay
- M Masquerade (who you claim to be)
- N
- O
- P
- Q
- R Relay (for unqualified names)
- S Smart Host
- T
- U my UUCP name (if you have a UUCP connection)
- V UUCP Relay (class {V} hosts)
- W UUCP Relay (class {W} hosts)
- X UUCP Relay (class {X} hosts)
- Y UUCP Relay (all other hosts)
- Z Version number
-
-
-CLASSES
-
- A
- B domains that are candidates for bestmx lookup
- C
- D
- E addresses that should not seem to come from $M
- F hosts this system forward for
- G domains that should be looked up in genericstable
- H
- I
- J
- K
- L addresses that should not be forwarded to $R
- M domains that should be mapped to $M
- N host/domains that should not be mapped to $M
- O operators that indicate network operations (cannot be in local names)
- P top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc.
- Q
- R domains this system is willing to relay (pass anti-spam filters)
- S
- T
- U locally connected UUCP hosts
- V UUCP hosts connected to relay $V
- W UUCP hosts connected to relay $W
- X UUCP hosts connected to relay $X
- Y locally connected smart UUCP hosts
- Z locally connected domain-ized UUCP hosts
- . the class containing only a dot
- [ the class containing only a left bracket
-
-
-M4 DIVERSIONS
-
- 1 Local host detection and resolution
- 2 Local Ruleset 3 additions
- 3 Local Ruleset 0 additions
- 4 UUCP Ruleset 0 additions
- 5 locally interpreted names (overrides $R)
- 6 local configuration (at top of file)
- 7 mailer definitions
- 8 DNS based blacklists
- 9 special local rulesets (1 and 2)
-
-$Revision: 8.623.2.23 $, Last updated $Date: 2003/03/28 17:28:26 $