aboutsummaryrefslogtreecommitdiff
path: root/contrib/sendmail/cf
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2008-08-28 02:25:51 +0000
committerPeter Wemm <peter@FreeBSD.org>2008-08-28 02:25:51 +0000
commiteeb6d312f5927d5030b40751a119c518099ccf4d (patch)
treedaf40952cf309641cc6c7d987989fd2abce2d758 /contrib/sendmail/cf
parentffb836234b94e17739bac88bfd7f51f5ae49e3bc (diff)
downloadsrc-eeb6d312f5927d5030b40751a119c518099ccf4d.tar.gz
src-eeb6d312f5927d5030b40751a119c518099ccf4d.zip
Stage 1 of sendmail dist tree flattening. contrib/sendmail/contrib
prevents doing this in one pass.
Notes
Notes: svn path=/vendor/sendmail/dist/; revision=182324
Diffstat (limited to 'contrib/sendmail/cf')
-rw-r--r--contrib/sendmail/cf/README4702
-rw-r--r--contrib/sendmail/cf/cf/Makefile209
-rw-r--r--contrib/sendmail/cf/cf/README34
-rw-r--r--contrib/sendmail/cf/cf/chez.cs.mc34
-rw-r--r--contrib/sendmail/cf/cf/clientproto.mc29
-rw-r--r--contrib/sendmail/cf/cf/cs-hpux10.mc31
-rw-r--r--contrib/sendmail/cf/cf/cs-hpux9.mc31
-rw-r--r--contrib/sendmail/cf/cf/cs-osf1.mc30
-rw-r--r--contrib/sendmail/cf/cf/cs-solaris2.mc30
-rw-r--r--contrib/sendmail/cf/cf/cs-sunos4.1.mc30
-rw-r--r--contrib/sendmail/cf/cf/cs-ultrix4.mc30
-rw-r--r--contrib/sendmail/cf/cf/cyrusproto.mc40
-rw-r--r--contrib/sendmail/cf/cf/generic-bsd4.4.mc28
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux10.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux9.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-linux.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-mpeix.mc25
-rw-r--r--contrib/sendmail/cf/cf/generic-nextstep3.3.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-osf1.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-solaris.mc29
-rw-r--r--contrib/sendmail/cf/cf/generic-sunos4.1.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-ultrix4.mc27
-rw-r--r--contrib/sendmail/cf/cf/huginn.cs.mc43
-rw-r--r--contrib/sendmail/cf/cf/knecht.mc275
-rw-r--r--contrib/sendmail/cf/cf/mail.cs.mc44
-rw-r--r--contrib/sendmail/cf/cf/mail.eecs.mc44
-rw-r--r--contrib/sendmail/cf/cf/mailspool.cs.mc37
-rw-r--r--contrib/sendmail/cf/cf/python.cs.mc42
-rw-r--r--contrib/sendmail/cf/cf/s2k-osf1.mc30
-rw-r--r--contrib/sendmail/cf/cf/s2k-ultrix4.mc30
-rw-r--r--contrib/sendmail/cf/cf/submit.cf1465
-rw-r--r--contrib/sendmail/cf/cf/submit.mc26
-rw-r--r--contrib/sendmail/cf/cf/tcpproto.mc33
-rw-r--r--contrib/sendmail/cf/cf/ucbarpa.mc30
-rw-r--r--contrib/sendmail/cf/cf/ucbvax.mc91
-rw-r--r--contrib/sendmail/cf/cf/uucpproto.mc34
-rw-r--r--contrib/sendmail/cf/cf/vangogh.cs.mc33
-rw-r--r--contrib/sendmail/cf/domain/Berkeley.EDU.m424
-rw-r--r--contrib/sendmail/cf/domain/CS.Berkeley.EDU.m419
-rw-r--r--contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m417
-rw-r--r--contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m417
-rw-r--r--contrib/sendmail/cf/domain/berkeley-only.m419
-rw-r--r--contrib/sendmail/cf/domain/generic.m428
-rw-r--r--contrib/sendmail/cf/feature/accept_unqualified_senders.m416
-rw-r--r--contrib/sendmail/cf/feature/accept_unresolvable_domains.m416
-rw-r--r--contrib/sendmail/cf/feature/access_db.m449
-rw-r--r--contrib/sendmail/cf/feature/allmasquerade.m425
-rw-r--r--contrib/sendmail/cf/feature/always_add_domain.m422
-rw-r--r--contrib/sendmail/cf/feature/authinfo.m422
-rw-r--r--contrib/sendmail/cf/feature/badmx.m422
-rw-r--r--contrib/sendmail/cf/feature/bestmx_is_local.m451
-rw-r--r--contrib/sendmail/cf/feature/bitdomain.m425
-rw-r--r--contrib/sendmail/cf/feature/blacklist_recipients.m419
-rw-r--r--contrib/sendmail/cf/feature/block_bad_helo.m418
-rw-r--r--contrib/sendmail/cf/feature/compat_check.m433
-rw-r--r--contrib/sendmail/cf/feature/conncontrol.m436
-rw-r--r--contrib/sendmail/cf/feature/delay_checks.m425
-rw-r--r--contrib/sendmail/cf/feature/dnsbl.m439
-rw-r--r--contrib/sendmail/cf/feature/domaintable.m425
-rw-r--r--contrib/sendmail/cf/feature/enhdnsbl.m453
-rw-r--r--contrib/sendmail/cf/feature/generics_entire_domain.m416
-rw-r--r--contrib/sendmail/cf/feature/genericstable.m425
-rw-r--r--contrib/sendmail/cf/feature/greet_pause.m444
-rw-r--r--contrib/sendmail/cf/feature/ldap_routing.m446
-rw-r--r--contrib/sendmail/cf/feature/limited_masquerade.m419
-rw-r--r--contrib/sendmail/cf/feature/local_lmtp.m428
-rw-r--r--contrib/sendmail/cf/feature/local_no_masquerade.m418
-rw-r--r--contrib/sendmail/cf/feature/local_procmail.m436
-rw-r--r--contrib/sendmail/cf/feature/lookupdotdomain.m422
-rw-r--r--contrib/sendmail/cf/feature/loose_relay_check.m416
-rw-r--r--contrib/sendmail/cf/feature/mailertable.m425
-rw-r--r--contrib/sendmail/cf/feature/masquerade_entire_domain.m419
-rw-r--r--contrib/sendmail/cf/feature/masquerade_envelope.m419
-rw-r--r--contrib/sendmail/cf/feature/msp.m478
-rw-r--r--contrib/sendmail/cf/feature/mtamark.m433
-rw-r--r--contrib/sendmail/cf/feature/no_default_msa.m416
-rw-r--r--contrib/sendmail/cf/feature/nocanonify.m424
-rw-r--r--contrib/sendmail/cf/feature/notsticky.m421
-rw-r--r--contrib/sendmail/cf/feature/nouucp.m427
-rw-r--r--contrib/sendmail/cf/feature/nullclient.m438
-rw-r--r--contrib/sendmail/cf/feature/preserve_local_plus_detail.m416
-rw-r--r--contrib/sendmail/cf/feature/preserve_luser_host.m420
-rw-r--r--contrib/sendmail/cf/feature/promiscuous_relay.m419
-rw-r--r--contrib/sendmail/cf/feature/queuegroup.m427
-rw-r--r--contrib/sendmail/cf/feature/ratecontrol.m436
-rw-r--r--contrib/sendmail/cf/feature/redirect.m426
-rw-r--r--contrib/sendmail/cf/feature/relay_based_on_MX.m421
-rw-r--r--contrib/sendmail/cf/feature/relay_entire_domain.m416
-rw-r--r--contrib/sendmail/cf/feature/relay_hosts_only.m416
-rw-r--r--contrib/sendmail/cf/feature/relay_local_from.m420
-rw-r--r--contrib/sendmail/cf/feature/relay_mail_from.m423
-rw-r--r--contrib/sendmail/cf/feature/require_rdns.m416
-rw-r--r--contrib/sendmail/cf/feature/smrsh.m426
-rw-r--r--contrib/sendmail/cf/feature/stickyhost.m419
-rw-r--r--contrib/sendmail/cf/feature/use_client_ptr.m421
-rw-r--r--contrib/sendmail/cf/feature/use_ct_file.m424
-rw-r--r--contrib/sendmail/cf/feature/use_cw_file.m425
-rw-r--r--contrib/sendmail/cf/feature/uucpdomain.m425
-rw-r--r--contrib/sendmail/cf/feature/virtuser_entire_domain.m416
-rw-r--r--contrib/sendmail/cf/feature/virtusertable.m425
-rw-r--r--contrib/sendmail/cf/hack/cssubdomain.m423
-rw-r--r--contrib/sendmail/cf/m4/cf.m429
-rw-r--r--contrib/sendmail/cf/m4/cfhead.m4309
-rw-r--r--contrib/sendmail/cf/m4/proto.m43011
-rw-r--r--contrib/sendmail/cf/m4/version.m418
-rw-r--r--contrib/sendmail/cf/mailer/cyrus.m460
-rw-r--r--contrib/sendmail/cf/mailer/cyrusv2.m429
-rw-r--r--contrib/sendmail/cf/mailer/fax.m438
-rw-r--r--contrib/sendmail/cf/mailer/local.m493
-rw-r--r--contrib/sendmail/cf/mailer/mail11.m461
-rw-r--r--contrib/sendmail/cf/mailer/phquery.m432
-rw-r--r--contrib/sendmail/cf/mailer/pop.m434
-rw-r--r--contrib/sendmail/cf/mailer/procmail.m434
-rw-r--r--contrib/sendmail/cf/mailer/qpage.m431
-rw-r--r--contrib/sendmail/cf/mailer/smtp.m4124
-rw-r--r--contrib/sendmail/cf/mailer/usenet.m428
-rw-r--r--contrib/sendmail/cf/mailer/uucp.m4157
-rw-r--r--contrib/sendmail/cf/ostype/a-ux.m421
-rw-r--r--contrib/sendmail/cf/ostype/aix3.m421
-rw-r--r--contrib/sendmail/cf/ostype/aix4.m421
-rw-r--r--contrib/sendmail/cf/ostype/aix5.m418
-rw-r--r--contrib/sendmail/cf/ostype/altos.m427
-rw-r--r--contrib/sendmail/cf/ostype/amdahl-uts.m420
-rw-r--r--contrib/sendmail/cf/ostype/bsd4.3.m418
-rw-r--r--contrib/sendmail/cf/ostype/bsd4.4.m420
-rw-r--r--contrib/sendmail/cf/ostype/bsdi.m417
-rw-r--r--contrib/sendmail/cf/ostype/bsdi1.0.m418
-rw-r--r--contrib/sendmail/cf/ostype/bsdi2.0.m418
-rw-r--r--contrib/sendmail/cf/ostype/darwin.m419
-rw-r--r--contrib/sendmail/cf/ostype/dgux.m421
-rw-r--r--contrib/sendmail/cf/ostype/domainos.m420
-rw-r--r--contrib/sendmail/cf/ostype/dragonfly.m420
-rw-r--r--contrib/sendmail/cf/ostype/dynix3.2.m418
-rw-r--r--contrib/sendmail/cf/ostype/freebsd4.m419
-rw-r--r--contrib/sendmail/cf/ostype/freebsd5.m420
-rw-r--r--contrib/sendmail/cf/ostype/freebsd6.m420
-rw-r--r--contrib/sendmail/cf/ostype/gnu.m421
-rw-r--r--contrib/sendmail/cf/ostype/hpux10.m427
-rw-r--r--contrib/sendmail/cf/ostype/hpux11.m423
-rw-r--r--contrib/sendmail/cf/ostype/hpux9.m427
-rw-r--r--contrib/sendmail/cf/ostype/irix4.m419
-rw-r--r--contrib/sendmail/cf/ostype/irix5.m439
-rw-r--r--contrib/sendmail/cf/ostype/irix6.m439
-rw-r--r--contrib/sendmail/cf/ostype/isc4.1.m425
-rw-r--r--contrib/sendmail/cf/ostype/linux.m420
-rw-r--r--contrib/sendmail/cf/ostype/maxion.m428
-rw-r--r--contrib/sendmail/cf/ostype/mklinux.m424
-rw-r--r--contrib/sendmail/cf/ostype/mpeix.m422
-rw-r--r--contrib/sendmail/cf/ostype/nextstep.m420
-rw-r--r--contrib/sendmail/cf/ostype/openbsd.m417
-rw-r--r--contrib/sendmail/cf/ostype/osf1.m419
-rw-r--r--contrib/sendmail/cf/ostype/powerux.m423
-rw-r--r--contrib/sendmail/cf/ostype/ptx2.m423
-rw-r--r--contrib/sendmail/cf/ostype/qnx.m421
-rw-r--r--contrib/sendmail/cf/ostype/riscos4.5.m420
-rw-r--r--contrib/sendmail/cf/ostype/sco-uw-2.1.m424
-rw-r--r--contrib/sendmail/cf/ostype/sco3.2.m423
-rw-r--r--contrib/sendmail/cf/ostype/sinix.m420
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.m427
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.ml.m427
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.pre5.m426
-rw-r--r--contrib/sendmail/cf/ostype/solaris8.m425
-rw-r--r--contrib/sendmail/cf/ostype/sunos3.5.m418
-rw-r--r--contrib/sendmail/cf/ostype/sunos4.1.m418
-rw-r--r--contrib/sendmail/cf/ostype/svr4.m421
-rw-r--r--contrib/sendmail/cf/ostype/ultrix4.m418
-rw-r--r--contrib/sendmail/cf/ostype/unicos.m422
-rw-r--r--contrib/sendmail/cf/ostype/unicosmk.m422
-rw-r--r--contrib/sendmail/cf/ostype/unicosmp.m427
-rw-r--r--contrib/sendmail/cf/ostype/unixware7.m420
-rw-r--r--contrib/sendmail/cf/ostype/unknown.m420
-rw-r--r--contrib/sendmail/cf/ostype/uxpds.m425
-rw-r--r--contrib/sendmail/cf/sendmail.schema270
-rw-r--r--contrib/sendmail/cf/sh/makeinfo.sh58
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.cogsci.m46
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.old.arpa.m44
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.ucbarpa.m41
-rw-r--r--contrib/sendmail/cf/siteconfig/uucp.ucbvax.m473
178 files changed, 0 insertions, 15124 deletions
diff --git a/contrib/sendmail/cf/README b/contrib/sendmail/cf/README
deleted file mode 100644
index 81689ad8009a..000000000000
--- a/contrib/sendmail/cf/README
+++ /dev/null
@@ -1,4702 +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
-CONNECTION 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-2005 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 only be followed by LOCAL_* sections. 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.
-SMTP_MAILER_LL [990] The maximum line length for SMTP mailers
- (except the relay mailer).
-RELAY_MAILER_LL [2040] The maximum line length for the relay mailer.
-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 (note: that means Name is entirely in
-upper case) 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 contains:
-
- 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.
-
-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.
- If a different LMTP capable mailer is used, its pathname
- can be specified as second parameter and the arguments
- passed to it (A=) as third parameter, e.g.,
-
- FEATURE(`local_lmtp', `/usr/local/bin/lmtp', `lmtp')
-
- 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.
-
-use_client_ptr If this feature is enabled then check_relay will override
- its first argument with $&{client_ptr}. This is useful for
- rejections based on the unverified hostname of client,
- which turns on the same behavior as in earlier sendmail
- versions when delay_checks was not in use. See doc/op/op.*
- about check_relay, {client_name}, and {client_ptr}.
-
-dnsbl Turns on rejection, discarding, or quarantining of hosts
- found in a DNS based list. The first argument is used as
- the domain in which blocked hosts are listed. A second
- argument can be used to change the default error message,
- or select one of the operations `discard' and `quarantine'.
- 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.
-
-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).
-
-ratecontrol Enable simple ruleset to do connection rate control
- checking. This requires entries in access_db of the form
-
- ClientRate:IP.ADD.RE.SS LIMIT
-
- The RHS specifies the maximum number of connections
- (an integer number) over the time interval defined
- by ConnectionRateWindowSize, where 0 means unlimited.
-
- Take the following example:
-
- ClientRate:10.1.2.3 4
- ClientRate:127.0.0.1 0
- ClientRate: 10
-
- 10.1.2.3 can only make up to 4 connections, the
- general limit it 10, and 127.0.0.1 can make an unlimited
- number of connections per ConnectionRateWindowSize.
-
- See also CONNECTION CONTROL.
-
-conncontrol Enable a simple check of the number of incoming SMTP
- connections. This requires entries in access_db of the
- form
-
- ClientConn:IP.ADD.RE.SS LIMIT
-
- The RHS specifies the maximum number of open connections
- (an integer number).
-
- Take the following example:
-
- ClientConn:10.1.2.3 4
- ClientConn:127.0.0.1 0
- ClientConn: 10
-
- 10.1.2.3 can only have up to 4 open connections, the
- general limit it 10, and 127.0.0.1 does not have any
- explicit limit.
-
- See also CONNECTION CONTROL.
-
-mtamark Experimental support for "Marking Mail Transfer Agents in
- Reverse DNS with TXT RRs" (MTAMark), see
- draft-stumpf-dns-mtamark-01. Optional arguments are:
-
- 1. Error message, default:
-
- 550 Rejected: $&{client_addr} not listed as MTA
-
- 2. Temporary lookup failures are ignored unless a second
- argument is given, which must be either `t' or a full
- error message.
-
- 3. Lookup prefix, default: _perm._smtp._srv. This should
- not be changed unless the draft changes it.
-
- Example:
-
- FEATURE(`mtamark', `', `t')
-
-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.
-
-greet_pause Adds the greet_pause ruleset which enables open proxy
- and SMTP slamming protection. The feature can take an
- argument specifying the milliseconds to wait:
-
- FEATURE(`greet_pause', `5000') dnl 5 seconds
-
- If FEATURE(`access_db') is enabled, an access database
- lookup with the GreetPause tag is done using client
- hostname, domain, IP address, or subnet to determine the
- pause time:
-
- GreetPause:my.domain 0
- GreetPause:example.com 5000
- GreetPause:10.1.2 2000
- GreetPause:127.0.0.1 0
-
- When using FEATURE(`access_db'), the optional
- FEATURE(`greet_pause') argument becomes the default if
- nothing is found in the access database. A ruleset called
- Local_greet_pause can be used for local modifications, e.g.,
-
- LOCAL_RULESETS
- SLocal_greet_pause
- R$* $: $&{daemon_flags}
- R$* a $* $# 0
-
-block_bad_helo Reject messages from SMTP clients which provide a HELO/EHLO
- argument which is either unqualified, or is one of our own
- names (i.e., the server name instead of the client name).
- This check is performed at RCPT stage and disabled for the
- following cases:
- - authenticated sessions,
- - connections from IP addresses in class $={R}.
- Currently access_db lookups can not be used to
- (selectively) disable this test, moreover,
- FEATURE(`delay_checks')
- is required.
-
-require_rdns Reject mail from connecting SMTP clients without proper
- rDNS (reverse DNS), functional gethostbyaddr() resolution.
- Note: this feature will cause false positives, i.e., there
- are legitimate MTAs that do not have proper DNS entries.
- Rejecting mails from those MTAs is a local policy decision.
-
- The basic policy is to reject message with a 5xx error if
- the IP address fails to resolve. However, if this is a
- temporary failure, a 4xx temporary failure is returned.
- If the look-up succeeds, but returns an apparently forged
- value, this is treated as a temporary failure with a 4xx
- error code.
-
- EXCEPTIONS:
-
- Exceptions based on access entries are discussed below.
- Any IP address matched using $=R (the "relay-domains" file)
- is excepted from the rules. Since we have explicitly
- allowed relaying for this host, based on IP address, we
- ignore the rDNS failure.
-
- The philosophical assumption here is that most users do
- not control their rDNS. They should be able to send mail
- through their ISP, whether or not they have valid rDNS.
- The class $=R, roughly speaking, contains those IP addresses
- and address ranges for which we are the ISP, or are acting
- as if the ISP.
-
- If `delay_checks' is in effect (recommended), then any
- sender who has authenticated is also excepted from the
- restrictions. This happens because the rules produced by
- this FEATURE() will not be applied to authenticated senders
- (assuming `delay_checks').
-
- ACCESS MAP ENTRIES:
-
- Entries such as
- Connect:1.2.3.4 OK
- Connect:1.2 RELAY
- will whitelist IP address 1.2.3.4, so that the rDNS
- blocking does apply to that IP address
-
- Entries such as
- Connect:1.2.3.4 REJECT
- will have the effect of forcing a temporary failure for
- that address to be treated as a permanent failure.
-
-badmx Reject envelope sender addresses (MAIL) whose domain part
- resolves to a "bad" MX record. By default these are
- MX records which resolve to A records that match the
- regular expression:
-
- ^(127\.|10\.|0\.0\.0\.0)
-
- This default regular expression can be overridden by
- specifying an argument, e.g.,
-
- FEATURE(`badmx', `^127\.0\.0\.1')
-
- Note: this feature requires that the sendmail binary
- has been compiled with the options MAP_REGEX and
- DNSMAP.
-
-+-------+
-| 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).
-
-The macro LOCAL_UUCP can be used to add rules into the generated
-cf file at the place where MAILER(`uucp') inserts its rules. This
-should only be used if really necessary.
-
-+--------------------+
-| 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 across 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-YYYY@support.sendmail.org is
-encouraged (replace YYYY with the current year, e.g., 2005).
-
--------
-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,sendmailMTAAliasSearch:FILTER:sendmailMTAAliasObject,sendmailMTAAliasURL:URL:sendmailMTAAliasObject
-
-
-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,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject
-
-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,sendmailMTAClassSearch:FILTER:sendmailMTAClass,sendmailMTAClassURL:URL:sendmailMTAClass
-
-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>, <nodomain>, <tempfail>)
-
-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, if set to "sendertoo", the sender will be rejected if not
-found in LDAP; 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 <nodomain>
-argument, if present, will prevent the @domain lookup if the full
-address is not found in LDAP; the <tempfail> argument, if set to
-"tempfail", instructs the rules to give an SMTP 4XX temporary
-error if the LDAP server gives the MTA a temporary failure, or if set to
-"queue" (the default), the MTA will locally queue the mail.
-
-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. 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 parameters may be
-
- `skip' enables SKIP as value part (see below).
- `lookupdotdomain' another way to enable the feature of the
- same name (see above).
- `relaytofulladdress' enable entries of the form
- To:user@example.com RELAY
- to allow relaying to just a specific
- e-mail address instead of an entire domain.
-
-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,
-
- From:spammer@aol.com REJECT
- From:cyberspammer.com REJECT
- Connect:cyberspammer.com REJECT
- Connect:TLD REJECT
- Connect:192.168.212 REJECT
- Connect:IPv6:2002:c0a8:02c7 RELAY
- Connect: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.
-
-Entries in the access map should be tagged according to their type.
-Three tags are available:
-
- Connect: connection information (${client_addr}, ${client_name})
- From: envelope sender
- To: envelope recipient
-
-Notice: untagged entries are deprecated.
-
-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.
-
-
-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 address if `relaytofulladdress' is set) 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 entire string should be quoted to avoid
- surprises:
-
- "### any text"
-
- Otherwise sendmail formats the text as email
- addresses, e.g., it may remove spaces.
- This type is deprecated, use one of the two
- ERROR: entries below instead.
- ERROR:### any text
- as above, but useful to mark error messages as such.
- If quotes need to be used to avoid modifications
- (see above), they should be placed like this:
-
- ERROR:"### any text"
-
- ERROR:D.S.N:### any text
- where D.S.N is an RFC 1893 compliant error code
- and the rest as above. If quotes need to be used
- to avoid modifications, they should be placed
- like this:
-
- ERROR:D.S.N:"### any text"
-
- QUARANTINE:any text
- Quarantine the message using the given text as the
- quarantining reason.
-
-For example:
-
- From:cyberspammer.com ERROR:"550 We don't accept mail from spammers"
- From:okay.cyberspammer.com OK
- Connect:sendmail.org RELAY
- To:sendmail.org RELAY
- Connect:128.32 RELAY
- Connect:128.32.2 SKIP
- Connect:IPv6:1:2:3:4:5:6:7 RELAY
- Connect:suspicious.example.com QUARANTINE:Mail from suspicious host
- Connect:[127.0.0.3] OK
- Connect:[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 IPv6 1:2:3:4:5:6:7:* network
-and from the 128.32.*.* network except for the 128.32.2.* network,
-which shows how SKIP is useful to exempt subnets/subdomains. The
-last 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
-
- To: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:
-
- From: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:
-
- To:badlocaluser@ ERROR:550 Mailbox disabled for badlocaluser
- To:host.my.TLD ERROR:550 That host does not accept mail
- To:user@other.my.TLD ERROR:550 Mailbox disabled for this recipient
-
-This would prevent a recipient of badlocaluser in any of the local
-domains (class {w}), any user at host.my.TLD, and the single address
-user@other.my.TLD 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.
-That's why tagged entries should be used.
-
-There are several DNS based blacklists which can be found by
-querying a search engine. These are databases of spammers
-maintained in DNS. To use such a database, specify
-
- FEATURE(`dnsbl', `dnsbl.example.com')
-
-This will cause sendmail to reject mail from any site listed in the
-DNS based blacklist. You must select a DNS based blacklist domain
-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 or action. For example,
-
- FEATURE(`dnsbl', `dnsbl.example.com', `quarantine')
-
-would quarantine the message if the client IP address is listed
-at `dnsbl.example.com'.
-
-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.
-
-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 blacklists.
-
-
-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. Other results starting with $# are
-interpreted by sendmail and may lead to unspecified behavior. Note: do
-NOT create a mailer with the name OK. Return values that do not start
-with $# are ignored, i.e., normal processing continues.
-
-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 any e-mail with a sender address of
-<user@my.domain> will not be rejected by check_relay even though
-it would match 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 write your own, can search the WWW for examples,
-or take a look at cf/cf/knecht.mc.
-3. When using a default ruleset for headers, the name of the header
-currently being checked can be found in the $&{hdr_name} macro.
-
-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
-
-
-+--------------------+
-| CONNECTION CONTROL |
-+--------------------+
-
-The features ratecontrol and conncontrol allow to establish connection
-limits per client IP address or net. These features can limit the
-rate of connections (connections per time unit) or the number of
-incoming SMTP connections, respectively. If enabled, appropriate
-rulesets are called at the end of check_relay, i.e., after DNS
-blacklists and generic access_db operations. The features require
-FEATURE(`access_db') to be listed earlier in the mc file.
-
-Note: FEATURE(`delay_checks') delays those connection control checks
-after a recipient address has been received, hence making these
-connection control features less useful. To run the checks as early
-as possible, specify the parameter `nodelay', e.g.,
-
- FEATURE(`ratecontrol', `nodelay')
-
-In that case, FEATURE(`delay_checks') has no effect on connection
-control (and it must be specified earlier in the mc file).
-
-An optional second argument `terminate' specifies whether the
-rulesets should return the error code 421 which will cause
-sendmail to terminate the session with that error if it is
-returned from check_relay, i.e., not delayed as explained in
-the previous paragraph. Example:
-
- FEATURE(`ratecontrol', `nodelay', `terminate')
-
-
-+----------+
-| STARTTLS |
-+----------+
-
-In this text, cert will be used as an abbreviation 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
-these 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. 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.
-
-To make things a bit more flexible (or complicated), the values for
-${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
-
-Notes:
-- line breaks have been inserted after "CN=" for readability,
- each tagged entry must be one (long) line in the access map.
-- if OpenSSL 0.9.7 or newer is used then the "Email=" part of a DN
- is replaced by "emailAddress=".
-
-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}.
-
-Providing SMTP AUTH Data when sendmail acts as Client
------------------------------------------------------
-
-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).
-
-Note: If your daemon does client authentication when sending, and
-if it uses either PLAIN or LOGIN authentication, then you *must*
-prevent ordinary users from seeing verbose output. Do NOT install
-sendmail set-user-ID. Use PrivacyOptions to turn off verbose output
-("goaway" works for this).
-
-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. Note that the use of
-wildcard MX records is almost always a bad idea. Please avoid
-using them if possible.
-
-
-+--------------------------------+
-| 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. Note that some of these
-variables require formats that are defined in RFC 2821 or RFC 2822.
-Before changing them you need to make sure you do not violate those
-(and other relevant) RFCs.
-
-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 [Default] & Description
-================ ============= =======================
-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.
-confMESSAGEID_HEADER Message-Id: [<$t.$i@$j>] The format of an
- internally generated Message-Id:
- header.
-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_QUEUERETURN_DSN
- Timeout.queuereturn.dsn
- [undefined] As above, for delivery
- status notification 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_QUEUEWARN_DSN
- Timeout.queuewarn.dsn
- [undefined] As above, for delivery
- status notification 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.
-confFALLBACK_SMARTHOST FallbackSmartHost
- [undefined] Fallback smart 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).
-confREJECT_LOG_INTERVAL RejectLogInterval [3h] Log interval when
- refusing connections for this long.
-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.
-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.
-confCONNECTION_RATE_WINDOW_SIZE ConnectionRateWindowSize
- [60s] Define the length of the
- interval for which the number of
- incoming connections is maintained.
-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 ForkEachJob.
-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
- [True] 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.
- Notice: this option is deprecated and
- will be removed in future versions;
- Set GroupWritableForwardFileSafe
- and GroupWritableIncludeFileSafe in
- DontBlameSendmail if required.
-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.
-confSOFT_BOUNCE SoftBounce [False] If set, issue temporary errors
- (4xy) instead of permanent errors
- (5xy). This can be useful during
- testing of a new configuration to
- avoid erroneous bouncing of mails.
-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 the specified
- number of recipients in a single SMTP
- transaction have been rejected, sleep
- for one second after each subsequent
- RCPT command in that transaction.
-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.
-confAUTH_REALM AuthRealm [undefined] The authentication realm
- that is passed to the Cyrus SASL
- library. If no realm is specified,
- $j is used.
-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.
- See doc/op/op.me for more options
- and 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.
-confCRL CRLFile [undefined] File containing certificate
- revocation status, useful for X.509v3
- authentication. Note that CRL requires
- at least OpenSSL version 0.9.7.
-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 [undefined] Use as mail submission
- program, see sendmail/SECURITY.
-confDELIVER_BY_MIN DeliverByMin [0] Minimum time for Deliver By
- SMTP Service Extension (RFC 2852).
-confREQUIRES_DIR_FSYNC RequiresDirfsync [true] RequiresDirfsync can
- be used to turn off the compile time
- flag REQUIRES_DIR_FSYNC at runtime.
- See sendmail/README for details.
-confSHARED_MEMORY_KEY SharedMemoryKey [0] Key for shared memory.
-confSHARED_MEMORY_KEY_FILE
- SharedMemoryKeyFile
- [undefined] File where the
- automatically selected key for
- shared memory is stored.
-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.
-confMAX_NOOP_COMMANDS MaxNOOPCommands [20] Maximum number of "useless"
- commands before the SMTP server
- will slow down responding.
-confHELO_NAME HeloName If defined, use as name for EHLO/HELO
- command (instead of $j).
-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.
-confMILTER_MACROS_EOM Milter.macros.eom
- [{msg_id}] Macros to transmit to
- milters after the terminating
- DATA '.' is received.
-confMILTER_MACROS_EOH Milter.macros.eoh
- Macros to transmit to milters
- after the end of headers.
-confMILTER_MACROS_DATA Milter.macros.data
- Macros to transmit to milters
- after DATA command is received.
-
-
-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
-
-Note: the authentication data can leak to local users who invoke
-the MSP with debug options or even with -v. For that reason either
-an authentication mechanism that does not show the password in the
-AUTH dialogue (e.g., DIGEST-MD5) or a different authentication
-method like STARTTLS should be used.
-
-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.722 $, Last updated $Date: 2007/04/03 21:26:58 $
diff --git a/contrib/sendmail/cf/cf/Makefile b/contrib/sendmail/cf/cf/Makefile
deleted file mode 100644
index 2b0f4b307a32..000000000000
--- a/contrib/sendmail/cf/cf/Makefile
+++ /dev/null
@@ -1,209 +0,0 @@
-#
-# Makefile for configuration files.
-#
-# $Id: Makefile,v 8.60 2005/06/14 02:16:34 gshapiro Exp $
-#
-
-#
-# Create configuration files using "m4 ../m4/cf.m4 file.mc > file.cf";
-# this may be easier than tweaking the Makefile. You do need to
-# have a fairly modern M4 available (GNU m4 works). On SunOS, use
-# /usr/5bin/m4.
-#
-
-# name of source for sendmail.cf (without extension)
-CF= sendmail
-# name of source for submit.cf (without extension)
-SUBMIT= submit
-# directory for .cf files
-MAILDIR=/etc/mail
-M4= m4
-CFDIR= ..
-SED= sed
-ECHO= echo
-CHMOD= chmod
-ROMODE= 444
-RM= rm -f
-# use our own install program; should be really confINSTALL
-INSTALL=../../devtools/bin/install.sh
-# CF file ownership/permissions
-CFOWN=root
-CFGRP=bin
-CFMODE=0444
-
-
-.SUFFIXES: .mc .cf
-
-.mc.cf:
- $(RM) $@
- $(M4) ${CFDIR}/m4/cf.m4 $*.mc > $@ || ( $(RM) $@ && exit 1 )
- $(ECHO) "### $*.mc ###" >>$@
- $(SED) -e 's/^/# /' $*.mc >>$@
- $(CHMOD) $(ROMODE) $@
-
-GENERIC=generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \
- generic-linux.cf generic-mpeix.cf generic-nextstep3.3.cf \
- generic-osf1.cf generic-solaris.cf \
- generic-sunos4.1.cf generic-ultrix4.cf
-BERKELEY=cs-hpux9.cf cs-hpux10.cf cs-osf1.cf cs-solaris.cf \
- cs-sunos4.1.cf cs-ultrix4.cf \
- s2k-osf1.cf s2k-ultrix4.cf \
- chez.cs.cf huginn.cs.cf mail.cs.cf mail.eecs.cf mailspool.cs.cf \
- python.cs.cf ucbarpa.cf ucbvax.cf vangogh.cs.cf
-OTHER= knecht.cf
-ALL= submit.cf $(GENERIC) $(OTHER)
-
-all: $(ALL)
-
-berkeley: $(BERKELEY)
-generic: $(GENERIC)
-other: $(OTHER)
-
-clean cleandir:
- $(RM) $(ALL) core
-
-install:
- @echo "Before installing the .cf files please make sure you have read the"
- @echo "instructions in the file ../../INSTALL. You should have prepared the"
- @echo "files \"submit.mc\" (supplied) and \"sendmail.mc\". Then you can use"
- @echo ""
- @echo " make install-cf"
- @echo ""
- @echo "If you use a different name than \"sendmail\" for your main .mc file"
-
- @echo "then you should use"
- @echo ""
- @echo " make install-cf CF=config"
- @echo ""
- @echo "where \"config\" is the name of your main .mc file."
-
-install-cf: install-sendmail-cf install-submit-cf
-
-install-sendmail-cf: $(CF).cf
- $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(CF).cf ${DESTDIR}$(MAILDIR)/sendmail.cf
-
-install-submit-cf: $(SUBMIT).cf
- $(INSTALL) -c -o $(CFOWN) -g $(CFGRP) -m $(CFMODE) $(SUBMIT).cf ${DESTDIR}$(MAILDIR)/submit.cf
-
-depend:
-
-# this is overkill, but....
-M4FILES=\
- ${CFDIR}/domain/Berkeley.EDU.m4 \
- ${CFDIR}/domain/CS.Berkeley.EDU.m4 \
- ${CFDIR}/domain/EECS.Berkeley.EDU.m4 \
- ${CFDIR}/domain/S2K.Berkeley.EDU.m4 \
- ${CFDIR}/domain/berkeley-only.m4 \
- ${CFDIR}/domain/generic.m4 \
- ${CFDIR}/feature/accept_unqualified_senders.m4 \
- ${CFDIR}/feature/accept_unresolvable_domains.m4 \
- ${CFDIR}/feature/access_db.m4 \
- ${CFDIR}/feature/allmasquerade.m4 \
- ${CFDIR}/feature/always_add_domain.m4 \
- ${CFDIR}/feature/bestmx_is_local.m4 \
- ${CFDIR}/feature/bitdomain.m4 \
- ${CFDIR}/feature/blacklist_recipients.m4 \
- ${CFDIR}/feature/conncontrol.m4 \
- ${CFDIR}/feature/dnsbl.m4 \
- ${CFDIR}/feature/domaintable.m4 \
- ${CFDIR}/feature/generics_entire_domain.m4 \
- ${CFDIR}/feature/genericstable.m4 \
- ${CFDIR}/feature/ldap_routing.m4 \
- ${CFDIR}/feature/limited_masquerade.m4 \
- ${CFDIR}/feature/local_lmtp.m4 \
- ${CFDIR}/feature/local_procmail.m4 \
- ${CFDIR}/feature/loose_relay_check.m4 \
- ${CFDIR}/feature/mailertable.m4 \
- ${CFDIR}/feature/masquerade_entire_domain.m4 \
- ${CFDIR}/feature/masquerade_envelope.m4 \
- ${CFDIR}/feature/no_default_msa.m4 \
- ${CFDIR}/feature/nocanonify.m4 \
- ${CFDIR}/feature/notsticky.m4 \
- ${CFDIR}/feature/nouucp.m4 \
- ${CFDIR}/feature/nullclient.m4 \
- ${CFDIR}/feature/promiscuous_relay.m4 \
- ${CFDIR}/feature/redirect.m4 \
- ${CFDIR}/feature/ratecontrol.m4 \
- ${CFDIR}/feature/relay_based_on_MX.m4 \
- ${CFDIR}/feature/relay_entire_domain.m4 \
- ${CFDIR}/feature/relay_hosts_only.m4 \
- ${CFDIR}/feature/relay_local_from.m4 \
- ${CFDIR}/feature/relay_mail_from.m4 \
- ${CFDIR}/feature/smrsh.m4 \
- ${CFDIR}/feature/stickyhost.m4 \
- ${CFDIR}/feature/use_ct_file.m4 \
- ${CFDIR}/feature/use_cw_file.m4 \
- ${CFDIR}/feature/uucpdomain.m4 \
- ${CFDIR}/feature/virtuser_entire_domain.m4 \
- ${CFDIR}/feature/virtusertable.m4 \
- ${CFDIR}/hack/cssubdomain.m4 \
- ${CFDIR}/m4/cf.m4 \
- ${CFDIR}/m4/cfhead.m4 \
- ${CFDIR}/m4/proto.m4 \
- ${CFDIR}/m4/version.m4 \
- ${CFDIR}/mailer/cyrus.m4 \
- ${CFDIR}/mailer/fax.m4 \
- ${CFDIR}/mailer/local.m4 \
- ${CFDIR}/mailer/mail11.m4 \
- ${CFDIR}/mailer/phquery.m4 \
- ${CFDIR}/mailer/pop.m4 \
- ${CFDIR}/mailer/procmail.m4 \
- ${CFDIR}/mailer/qpage.m4 \
- ${CFDIR}/mailer/smtp.m4 \
- ${CFDIR}/mailer/usenet.m4 \
- ${CFDIR}/mailer/uucp.m4 \
- ${CFDIR}/ostype/aix3.m4 \
- ${CFDIR}/ostype/aix4.m4 \
- ${CFDIR}/ostype/altos.m4 \
- ${CFDIR}/ostype/amdahl-uts.m4 \
- ${CFDIR}/ostype/a-ux.m4 \
- ${CFDIR}/ostype/bsd4.3.m4 \
- ${CFDIR}/ostype/bsd4.4.m4 \
- ${CFDIR}/ostype/bsdi.m4 \
- ${CFDIR}/ostype/bsdi1.0.m4 \
- ${CFDIR}/ostype/bsdi2.0.m4 \
- ${CFDIR}/ostype/dgux.m4 \
- ${CFDIR}/ostype/domainos.m4 \
- ${CFDIR}/ostype/dragonfly.m4 \
- ${CFDIR}/ostype/dynix3.2.m4 \
- ${CFDIR}/ostype/freebsd4.m4 \
- ${CFDIR}/ostype/freebsd5.m4 \
- ${CFDIR}/ostype/freebsd6.m4 \
- ${CFDIR}/ostype/gnu.m4 \
- ${CFDIR}/ostype/hpux10.m4 \
- ${CFDIR}/ostype/hpux11.m4 \
- ${CFDIR}/ostype/hpux9.m4 \
- ${CFDIR}/ostype/irix4.m4 \
- ${CFDIR}/ostype/irix5.m4 \
- ${CFDIR}/ostype/irix6.m4 \
- ${CFDIR}/ostype/isc4.1.m4 \
- ${CFDIR}/ostype/linux.m4 \
- ${CFDIR}/ostype/maxion.m4 \
- ${CFDIR}/ostype/mklinux.m4 \
- ${CFDIR}/ostype/mpeix.m4 \
- ${CFDIR}/ostype/nextstep.m4 \
- ${CFDIR}/ostype/openbsd.m4 \
- ${CFDIR}/ostype/osf1.m4 \
- ${CFDIR}/ostype/powerux.m4 \
- ${CFDIR}/ostype/ptx2.m4 \
- ${CFDIR}/ostype/qnx.m4 \
- ${CFDIR}/ostype/riscos4.5.m4 \
- ${CFDIR}/ostype/sco-uw-2.1.m4 \
- ${CFDIR}/ostype/sco3.2.m4 \
- ${CFDIR}/ostype/sinix.m4 \
- ${CFDIR}/ostype/solaris2.m4 \
- ${CFDIR}/ostype/solaris2.ml.m4 \
- ${CFDIR}/ostype/solaris2.pre5.m4 \
- ${CFDIR}/ostype/solaris8.m4 \
- ${CFDIR}/ostype/sunos3.5.m4 \
- ${CFDIR}/ostype/sunos4.1.m4 \
- ${CFDIR}/ostype/svr4.m4 \
- ${CFDIR}/ostype/ultrix4.m4 \
- ${CFDIR}/ostype/unixware7.m4 \
- ${CFDIR}/ostype/unknown.m4 \
- ${CFDIR}/ostype/uxpds.m4
-
-$(ALL): $(M4FILES)
-$(BERKELEY): $(M4FILES)
-$(GENERIC): $(M4FILES)
-$(OTHER): $(M4FILES)
diff --git a/contrib/sendmail/cf/cf/README b/contrib/sendmail/cf/cf/README
deleted file mode 100644
index d0ac86559d6c..000000000000
--- a/contrib/sendmail/cf/cf/README
+++ /dev/null
@@ -1,34 +0,0 @@
-
- SENDMAIL CONFIGURATION FILES INSTALLATION
-
-This document describes how to install the sendmail configuration files.
-Please see ../README about the sendmail configuration files themselves.
-
-By default you need two .mc files: sendmail.mc and submit.mc. The
-latter is an OS independent configuration file for the mail submission
-program (MSP). See ../README for details about both files.
-
-Installation of these two files can be done via:
-
- make install-cf
-
-If you use a different name than "sendmail" for your main .mc file"
-then you should use
-
- make install-cf CF=config
-
-where "config" is the name of your main .mc file.
-
-The default installation directory is /etc/mail and can be changed
-by specifying
-
- MAILDIR=/other/dir
-
-The name of the source file for "submit.cf" can be overridden by
-
- SUBMIT=msp
-
-For more details see Makefile.
-
-
-$Revision: 1.2 $, Last updated $Date: 2002/02/22 00:33:54 $
diff --git a/contrib/sendmail/cf/cf/chez.cs.mc b/contrib/sendmail/cf/cf/chez.cs.mc
deleted file mode 100644
index bb335a49096d..000000000000
--- a/contrib/sendmail/cf/cf/chez.cs.mc
+++ /dev/null
@@ -1,34 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for a home machine that wants to masquerade as an
-# on-campus machine. Additionally, all addresses without a hostname
-# will be forwarded to that machine.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: chez.cs.mc,v 8.14 1999/02/07 07:25:59 gshapiro Exp $')
-OSTYPE(bsd4.4)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
-MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl
-FEATURE(use_cw_file)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/clientproto.mc b/contrib/sendmail/cf/cf/clientproto.mc
deleted file mode 100644
index ecdbddf2a482..000000000000
--- a/contrib/sendmail/cf/cf/clientproto.mc
+++ /dev/null
@@ -1,29 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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 the prototype for a "null client" -- that is, a client that
-# does nothing except forward all mail to a mail hub. IT IS NOT
-# USABLE AS IS!!!
-#
-# To use this, you MUST use the nullclient feature with the name of
-# the mail hub as its argument. You MUST also define an `OSTYPE' to
-# define the location of the queue directories and the like.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: clientproto.mc,v 8.16 2000/03/21 21:05:26 ca Exp $')
-
-OSTYPE(unknown)
-FEATURE(nullclient, mailhost.$m)
diff --git a/contrib/sendmail/cf/cf/cs-hpux10.mc b/contrib/sendmail/cf/cf/cs-hpux10.mc
deleted file mode 100644
index f384b5f7a0c9..000000000000
--- a/contrib/sendmail/cf/cf/cs-hpux10.mc
+++ /dev/null
@@ -1,31 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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)dnl
-VERSIONID(`$Id: cs-hpux10.mc,v 8.13 1999/02/07 07:26:00 gshapiro Exp $')
-OSTYPE(hpux10)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-hpux9.mc b/contrib/sendmail/cf/cf/cs-hpux9.mc
deleted file mode 100644
index 664377e5eaf3..000000000000
--- a/contrib/sendmail/cf/cf/cs-hpux9.mc
+++ /dev/null
@@ -1,31 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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)dnl
-VERSIONID(`$Id: cs-hpux9.mc,v 8.14 1999/02/07 07:26:00 gshapiro Exp $')
-OSTYPE(hpux9)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`MAIL_HUB', mailspool.CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-osf1.mc b/contrib/sendmail/cf/cf/cs-osf1.mc
deleted file mode 100644
index 09d6e49160b3..000000000000
--- a/contrib/sendmail/cf/cf/cs-osf1.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 OSF/1.
-# 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)dnl
-VERSIONID(`$Id: cs-osf1.mc,v 8.13 1999/02/07 07:26:00 gshapiro Exp $')
-OSTYPE(osf1)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-solaris2.mc b/contrib/sendmail/cf/cf/cs-solaris2.mc
deleted file mode 100644
index c802b50f8923..000000000000
--- a/contrib/sendmail/cf/cf/cs-solaris2.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 Solaris 2.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)dnl
-VERSIONID(`$Id: cs-solaris2.mc,v 8.12 1999/02/07 07:26:00 gshapiro Exp $')
-OSTYPE(solaris2)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-sunos4.1.mc b/contrib/sendmail/cf/cf/cs-sunos4.1.mc
deleted file mode 100644
index 6263e118e042..000000000000
--- a/contrib/sendmail/cf/cf/cs-sunos4.1.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 SunOS 4.1.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)dnl
-VERSIONID(`$Id: cs-sunos4.1.mc,v 8.13 1999/02/07 07:26:01 gshapiro Exp $')
-OSTYPE(sunos4.1)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cs-ultrix4.mc b/contrib/sendmail/cf/cf/cs-ultrix4.mc
deleted file mode 100644
index 7669823bf33d..000000000000
--- a/contrib/sendmail/cf/cf/cs-ultrix4.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 Ultrix 4.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)dnl
-VERSIONID(`$Id: cs-ultrix4.mc,v 8.13 1999/02/07 07:26:02 gshapiro Exp $')
-OSTYPE(ultrix4)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/cyrusproto.mc b/contrib/sendmail/cf/cf/cyrusproto.mc
deleted file mode 100644
index 8fa00ceee8fc..000000000000
--- a/contrib/sendmail/cf/cf/cyrusproto.mc
+++ /dev/null
@@ -1,40 +0,0 @@
-divert(-1)
-#
-# (C) Copyright 1995 by Carnegie Mellon University
-#
-# All Rights Reserved
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of CMU not be
-# used in advertising or publicity pertaining to distribution of the
-# software without specific, written prior permission.
-#
-# CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-# CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-# SOFTWARE.
-#
-# Contributed to Berkeley by John Gardiner Myers <jgm+@CMU.EDU>.
-#
-# This sample mc file is for a site that uses the Cyrus IMAP server
-# exclusively for local mail.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: cyrusproto.mc,v 8.7 1999/09/07 14:57:10 ca Exp $')
-define(`confBIND_OPTS',`-DNSRCH -DEFNAMES')
-define(`confLOCAL_MAILER', `cyrus')
-FEATURE(`nocanonify')
-FEATURE(`always_add_domain')
-MAILER(`local')
-MAILER(`smtp')
-MAILER(`cyrus')
-
-LOCAL_RULE_0
-Rbb + $+ < @ $=w . > $#cyrusbb $: $1
diff --git a/contrib/sendmail/cf/cf/generic-bsd4.4.mc b/contrib/sendmail/cf/cf/generic-bsd4.4.mc
deleted file mode 100644
index 18ea8b3b8766..000000000000
--- a/contrib/sendmail/cf/cf/generic-bsd4.4.mc
+++ /dev/null
@@ -1,28 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for 4.4 BSD-based systems,
-# including 4.4-Lite, BSDi, NetBSD, and FreeBSD.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')
-OSTYPE(bsd4.4)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-hpux10.mc b/contrib/sendmail/cf/cf/generic-hpux10.mc
deleted file mode 100644
index deed5f14bcff..000000000000
--- a/contrib/sendmail/cf/cf/generic-hpux10.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001 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 generic configuration file for HP-UX 10.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-hpux10.mc,v 8.13 2001/05/29 17:29:52 ca Exp $')
-OSTYPE(hpux10)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-hpux9.mc b/contrib/sendmail/cf/cf/generic-hpux9.mc
deleted file mode 100644
index 739207c71449..000000000000
--- a/contrib/sendmail/cf/cf/generic-hpux9.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for HP-UX 9.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-hpux9.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
-OSTYPE(hpux9)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-linux.mc b/contrib/sendmail/cf/cf/generic-linux.mc
deleted file mode 100644
index f86e2630823a..000000000000
--- a/contrib/sendmail/cf/cf/generic-linux.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for Linux.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $')
-OSTYPE(linux)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-mpeix.mc b/contrib/sendmail/cf/cf/generic-mpeix.mc
deleted file mode 100644
index fa5c57456afa..000000000000
--- a/contrib/sendmail/cf/cf/generic-mpeix.mc
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
-# 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 generic configuration file for HP MPE/iX.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-mpeix.mc,v 8.1 2001/12/13 23:56:37 gshapiro Exp $')
-OSTYPE(mpeix)dnl
-DOMAIN(generic)dnl
-define(`confFORWARD_PATH', `$z/.forward')dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-nextstep3.3.mc b/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
deleted file mode 100644
index 14b46d387df0..000000000000
--- a/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for NEXTSTEP 3.3 systems.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-nextstep3.3.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')
-OSTYPE(nextstep)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-osf1.mc b/contrib/sendmail/cf/cf/generic-osf1.mc
deleted file mode 100644
index 9cd4e77b6a24..000000000000
--- a/contrib/sendmail/cf/cf/generic-osf1.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for OSF/1.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-osf1.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
-OSTYPE(osf1)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-solaris.mc b/contrib/sendmail/cf/cf/generic-solaris.mc
deleted file mode 100644
index 5f82340e9121..000000000000
--- a/contrib/sendmail/cf/cf/generic-solaris.mc
+++ /dev/null
@@ -1,29 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001 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 generic configuration file for SunOS 5.x (a.k.a. Solaris 2.x
-# and Solaris 7 through the present version).
-#
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $')
-OSTYPE(solaris2)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-sunos4.1.mc b/contrib/sendmail/cf/cf/generic-sunos4.1.mc
deleted file mode 100644
index a27d099e0442..000000000000
--- a/contrib/sendmail/cf/cf/generic-sunos4.1.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for SunOS 4.1.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-sunos4.1.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $')
-OSTYPE(sunos4.1)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/generic-ultrix4.mc b/contrib/sendmail/cf/cf/generic-ultrix4.mc
deleted file mode 100644
index 913edb58603f..000000000000
--- a/contrib/sendmail/cf/cf/generic-ultrix4.mc
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 generic configuration file for Ultrix 4.x.
-# It has support for local and SMTP mail only. If you want to
-# customize it, copy it to a name appropriate for your environment
-# and do the modifications there.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: generic-ultrix4.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $')
-OSTYPE(ultrix4)dnl
-DOMAIN(generic)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/huginn.cs.mc b/contrib/sendmail/cf/cf/huginn.cs.mc
deleted file mode 100644
index 117a236af0f9..000000000000
--- a/contrib/sendmail/cf/cf/huginn.cs.mc
+++ /dev/null
@@ -1,43 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for the backup CS Division mail server.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: huginn.cs.mc,v 8.15 1999/02/07 07:26:03 gshapiro Exp $')
-OSTYPE(hpux9)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MASQUERADE_AS(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
-CF CS
-FF/etc/sendmail.cw
-
-LOCAL_RULE_0
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/contrib/sendmail/cf/cf/knecht.mc b/contrib/sendmail/cf/cf/knecht.mc
deleted file mode 100644
index 29d29113d58e..000000000000
--- a/contrib/sendmail/cf/cf/knecht.mc
+++ /dev/null
@@ -1,275 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2001, 2004, 2005 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 specific to Eric's home machine.
-#
-# Run daemon with -bd -q5m
-#
-
-divert(0)
-VERSIONID(`$Id: knecht.mc,v 8.62 2006/09/27 19:48:59 eric Exp $')
-OSTYPE(bsd4.4)
-DOMAIN(generic)
-
-define(`ALIAS_FILE', ``/etc/mail/aliases, /etc/mail/lists/sendmail.org/aliases, /var/listmanager/aliases'')
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')
-define(`confDEF_USER_ID', `mailnull')
-define(`confHOST_STATUS_DIRECTORY', `.hoststat')
-define(`confTO_ICONNECT', `10s')
-define(`confTO_QUEUEWARN', `8h')
-define(`confMIN_QUEUE_AGE', `27m')
-define(`confTRUSTED_USER', `smtrust')
-define(`confTRUSTED_USERS', ``www listmgr'')
-define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'')
-
-define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')
-define(`confCACERT_PATH', `CERT_DIR')
-define(`confCACERT', `CERT_DIR/CAcert.pem')
-define(`confSERVER_CERT', `CERT_DIR/MYcert.pem')
-define(`confSERVER_KEY', `CERT_DIR/MYkey.pem')
-define(`confCLIENT_CERT', `CERT_DIR/MYcert.pem')
-define(`confCLIENT_KEY', `CERT_DIR/MYkey.pem')
-
-define(`CYRUS_MAILER_PATH', `/usr/local/cyrus/bin/deliver')
-define(`CYRUS_MAILER_FLAGS', `fAh5@/:|')
-
-FEATURE(`access_db')
-FEATURE(`blacklist_recipients')
-FEATURE(`local_lmtp')
-FEATURE(`virtusertable')
-FEATURE(`mailertable')
-
-FEATURE(`nocanonify', `canonify_hosts')
-CANONIFY_DOMAIN(`sendmail.org')
-CANONIFY_DOMAIN_FILE(`/etc/mail/canonify-domains')
-
-dnl # at most 10 queue runners
-define(`confMAX_QUEUE_CHILDREN', `20')
-
-define(`confMAX_RUNNERS_PER_QUEUE', `5')
-
-dnl # run at most 10 concurrent processes for initial submission
-define(`confFAST_SPLIT', `10')
-
-dnl # 10 runners, split into at most 15 recipients per envelope
-QUEUE_GROUP(`mqueue', `P=/var/spool/mqueue, R=5, r=15, F=f')
-
-dnl # enable spam assassin
-INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter.sock, F=, T=C:15m;S:4m;R:4m;E:10m')
-
-dnl # enable DomainKeys and DKIM
-INPUT_MAIL_FILTER(`dkim-filter', `S=unix:/var/run/smtrust/dkim.sock, F=T, T=R:2m')
-dnl INPUT_MAIL_FILTER(`dk-filter', `S=unix:/var/run/smtrust/dk.sock, F=T, T=R:2m')
-
-define(`confMILTER_MACROS_CONNECT', `j, {daemon_name}')
-define(`confMILTER_MACROS_ENVFROM', `i, {auth_type}')
-
-dnl # enable some DNSBLs
-dnl FEATURE(`dnsbl', `dnsbl.sorbs.net', `"550 Mail from " $`'&{client_addr} " refused - see http://www.dnsbl.sorbs.net/"')
-FEATURE(`dnsbl', `sbl-xbl.spamhaus.org', `"550 Mail from " $`'&{client_addr} " refused - see http://www.spamhaus.org/sbl/"')
-FEATURE(`dnsbl', `list.dsbl.org', `"550 Mail from " $`'&{client_addr} " refused - see http://dsbl.org/"')
-FEATURE(`dnsbl', `bl.spamcop.net', `"450 Mail from " $`'&{client_addr} " refused - see http://spamcop.net/bl.shtml"')
-
-
-MAILER(`local')
-MAILER(`smtp')
-MAILER(`cyrus')
-
-LOCAL_RULE_0
-Rcyrus.$+ + $+ < @ $=w . > $#cyrus $@ $2 $: $1
-Rcyrus.$+ < @ $=w . > $#cyrus $: $1
-
-LOCAL_CONFIG
-#
-# Regular expression to reject:
-# * numeric-only localparts from aol.com and msn.com
-# * localparts starting with a digit from juno.com
-#
-Kcheckaddress regex -a@MATCH
- ^([0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com)\.?>
-
-######################################################################
-#
-# Names that won't be allowed in a To: line (local-part and domains)
-#
-C{RejectToLocalparts} friend you
-C{RejectToDomains} public.com
-
-LOCAL_RULESETS
-HTo: $>CheckTo
-
-SCheckTo
-R$={RejectToLocalparts}@$* $#error $: "553 Header error"
-R$*@$={RejectToDomains} $#error $: "553 Header error"
-
-######################################################################
-HMessage-Id: $>CheckMessageId
-
-SCheckMessageId
-# Record the presence of the header
-R$* $: $(storage {MessageIdCheck} $@ OK $) $1
-
-# validate syntax
-R< $+ @ $+ > $@ OK
-R$* $#error $: "554 Header error"
-
-
-######################################################################
-HReceived: $>CheckReceived
-
-SCheckReceived
-# Record the presence of any Received header
-R$* $: $(storage {ReceivedCheck} $@ OK $) $1
-
-# check syntax
-R$* ......................................................... $*
- $#error $: "554 Header error"
-
-######################################################################
-#
-# Reject advertising subjects
-#
-
-Kadvsubj regex -b -a@MATCH ?
-HSubject: $>+CheckSubject
-SCheckSubject
-R$* $: $(advsubj $&{currHeader} $: OK $)
-ROK $@ OK
-R$* $#error $@ 5.7.0 $: 550 5.7.0 spam rejected.
-
-######################################################################
-#
-# Reject certain senders
-# Regex match to catch things in quotes
-#
-HFrom: $>+CheckFrom
-KCheckFrom regex -a@MATCH
- [^a-z]?(Net-Pa)[^a-z]
-
-SCheckFrom
-R$* $: $( CheckFrom $1 $)
-R@MATCH $#error $: "553 Header error"
-
-LOCAL_RULESETS
-SLocal_check_mail
-# check address against various regex checks
-R$* $: $>Parse0 $>3 $1
-R$+ $: $(checkaddress $1 $)
-R@MATCH $#error $: "553 Header error"
-
-#
-# Following code from Anthony Howe <achowe@snert.com>. The check
-# for the Outlook Express marker may hit some legal messages, but
-# the Content-Disposition is clearly illegal.
-#
-
-#########################################################################
-#
-# w32.sircam.worm@mm
-#
-# There are serveral patterns that appear common ONLY to SirCam worm and
-# not to Outlook Express, which claims to have sent the worm. There are
-# four headers that always appear together and in this order:
-#
-# X-MIMEOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
-# X-Mailer: Microsoft Outlook Express 5.50.4133.2400
-# Content-Type: multipart/mixed; boundary="----27AA9124_Outlook_Express_message_boundary"
-# Content-Disposition: Multipart message
-#
-# Empirical study of the worm message headers vs. true Outlook Express
-# (5.50.4133.2400 & 5.50.4522.1200) messages with multipart/mixed attachments
-# shows Outlook Express does:
-#
-# a) NOT supply a Content-Disposition header for multipart/mixed messages.
-# b) NOT specify the header X-MimeOLE header name in all-caps
-# c) NOT specify boundary tag with the expression "_Outlook_Express_message_boundary"
-#
-# The solution below catches any one of this three issues. This is not an ideal
-# solution, but a temporary measure. A correct solution would be to check for
-# the presence of ALL three header attributes. Also the solution is incomplete
-# since Outlook Express 5.0 and 4.0 were not compared.
-#
-# NOTE regex keys are first dequoted and spaces removed before matching.
-# This caused me no end of grief.
-#
-#########################################################################
-
-LOCAL_RULESETS
-
-KSirCamWormMarker regex -f -aSUSPECT multipart/mixed;boundary=----.+_Outlook_Express_message_boundary
-HContent-Type: $>CheckContentType
-
-######################################################################
-SCheckContentType
-R$+ $: $(SirCamWormMarker $1 $)
-RSUSPECT $#error $: "553 Possible virus, see http://www.symantec.com/avcenter/venc/data/w32.sircam.worm@mm.html"
-
-HContent-Disposition: $>CheckContentDisposition
-
-######################################################################
-SCheckContentDisposition
-R$- $@ OK
-R$- ; $+ $@ OK
-R$* $#error $: "553 Illegal Content-Disposition"
-
-
-#
-# Sobig.F
-#
-
-LOCAL_CONFIG
-Kstorage macro
-
-LOCAL_RULESETS
-######################################################################
-### check for the existance of the X-MailScanner Header
-HX-MailScanner: $>+CheckXMSc
-D{SobigFPat}Found to be clean
-D{SobigFMsg}This message may contain the Sobig.F virus.
-
-SCheckXMSc
-### if it exists, and the defined value is set, record the presence
-R${SobigFPat} $* $: $(storage {SobigFCheck} $@ SobigF $) $1
-R$* $@ OK
-
-######################################################################
-Scheck_eoh
-# Check if a Message-Id was found
-R$* $: < $&{MessageIdCheck} >
-
-# If Message-Id was found clear the X-MailScanner store and return with OK
-R< $+ > $@ OK $>ClearStorage
-
-# Are we the first Hop?
-R$* $: < $&{ReceivedCheck} >
-R< $+ > $@ OK $>ClearStorage
-
-# no Message-Id->check X-Mailscanner presence, too
-R$* $: < $&{SobigFCheck} >
-
-# clear store
-R$* $: $>ClearStorage $1
-# no msgid, first hop and Header found? -> reject the message
-R < SobigF > $#error $: 553 ${SobigFMsg}
-
-# No Header! Fine, take the message
-R$* $@ OK
-
-######################################################################
-SClearStorage
-R$* $: $(storage {SobigFCheck} $) $1
-R$* $: $(storage {ReceivedCheck} $) $1
-R$* $: $(storage {MessageIdCheck} $) $1
-R$* $@ $1
diff --git a/contrib/sendmail/cf/cf/mail.cs.mc b/contrib/sendmail/cf/cf/mail.cs.mc
deleted file mode 100644
index 6bd778258c1d..000000000000
--- a/contrib/sendmail/cf/cf/mail.cs.mc
+++ /dev/null
@@ -1,44 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for the primary CS Division mail server.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: mail.cs.mc,v 8.18 1999/02/07 07:26:04 gshapiro Exp $')
-OSTYPE(ultrix4)dnl
-DOMAIN(Berkeley.EDU)dnl
-MASQUERADE_AS(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-define(`confUSERDB_SPEC', ``/usr/local/lib/users.cs.db,/usr/local/lib/users.eecs.db'')dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
-CF CS
-FF/etc/sendmail.cw
-
-LOCAL_RULE_0
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/contrib/sendmail/cf/cf/mail.eecs.mc b/contrib/sendmail/cf/cf/mail.eecs.mc
deleted file mode 100644
index bf7d4081ccf2..000000000000
--- a/contrib/sendmail/cf/cf/mail.eecs.mc
+++ /dev/null
@@ -1,44 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in Electrical Engineering and Computer Sciences at Berkeley,
-# and should not be used elsewhere. It is provided on the sendmail
-# distribution as a sample only.
-#
-# This file is for the primary EECS mail server.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: mail.eecs.mc,v 8.18 1999/02/07 07:26:04 gshapiro Exp $')
-OSTYPE(ultrix4)dnl
-DOMAIN(EECS.Berkeley.EDU)dnl
-MASQUERADE_AS(EECS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-define(`confUSERDB_SPEC', `/usr/local/lib/users.eecs.db,/usr/local/lib/users.cs.db,/usr/local/lib/users.coe.db')dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# hosts for which we accept and forward mail (must be in .Berkeley.EDU)
-CF EECS
-FF/etc/sendmail.cw
-
-LOCAL_RULE_0
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
diff --git a/contrib/sendmail/cf/cf/mailspool.cs.mc b/contrib/sendmail/cf/cf/mailspool.cs.mc
deleted file mode 100644
index 0414e4c3fa89..000000000000
--- a/contrib/sendmail/cf/cf/mailspool.cs.mc
+++ /dev/null
@@ -1,37 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for our mail spool machine. For a while we were using
-# "root.machinename" instead of "root+machinename", so this is included
-# for back compatibility.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: mailspool.cs.mc,v 8.12 1999/02/07 07:26:04 gshapiro Exp $')
-OSTYPE(sunos4.1)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-LOCAL_CONFIG
-CDroot sys-custodian
-
-LOCAL_RULE_3
-R$=D . $+ $1 + $2
diff --git a/contrib/sendmail/cf/cf/python.cs.mc b/contrib/sendmail/cf/cf/python.cs.mc
deleted file mode 100644
index c3b3e0da0eb0..000000000000
--- a/contrib/sendmail/cf/cf/python.cs.mc
+++ /dev/null
@@ -1,42 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for a home machine that wants to masquerade as an
-# on-campus machine. Additionally, all addresses without a hostname
-# will be forwarded to that machine.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: python.cs.mc,v 8.12 1999/02/07 07:26:04 gshapiro Exp $')
-OSTYPE(bsd4.4)dnl
-DOMAIN(CS.Berkeley.EDU)dnl
-define(`LOCAL_RELAY', vangogh.CS.Berkeley.EDU)dnl
-MASQUERADE_AS(vangogh.CS.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-
-# accept mail sent to the domain head
-DDBostic.COM
-
-LOCAL_RULE_0
-# accept mail sent to the domain head
-R< @ $D . > : $* $@ $>7 $1 @here:... -> ...
-R$* $=O $* < @ $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-R$* < @ $D . > $#local $: $1 user@here -> user
diff --git a/contrib/sendmail/cf/cf/s2k-osf1.mc b/contrib/sendmail/cf/cf/s2k-osf1.mc
deleted file mode 100644
index 6ec08feae87f..000000000000
--- a/contrib/sendmail/cf/cf/s2k-osf1.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 OSF/1.
-# It applies only to the Sequoia 2000 Project 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)dnl
-VERSIONID(`$Id: s2k-osf1.mc,v 8.13 1999/02/07 07:26:04 gshapiro Exp $')
-OSTYPE(osf1)dnl
-DOMAIN(S2K.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/s2k-ultrix4.mc b/contrib/sendmail/cf/cf/s2k-ultrix4.mc
deleted file mode 100644
index 4bf493979584..000000000000
--- a/contrib/sendmail/cf/cf/s2k-ultrix4.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 Ultrix 4.x.
-# It applies only to the Sequoia 2000 Project 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)dnl
-VERSIONID(`$Id: s2k-ultrix4.mc,v 8.13 1999/02/07 07:26:04 gshapiro Exp $')
-OSTYPE(ultrix4)dnl
-DOMAIN(S2K.Berkeley.EDU)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
diff --git a/contrib/sendmail/cf/cf/submit.cf b/contrib/sendmail/cf/cf/submit.cf
deleted file mode 100644
index 22a574cdcb90..000000000000
--- a/contrib/sendmail/cf/cf/submit.cf
+++ /dev/null
@@ -1,1465 +0,0 @@
-#
-# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1983, 1995 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.
-#
-#
-
-######################################################################
-######################################################################
-#####
-##### SENDMAIL CONFIGURATION FILE
-#####
-##### built by ca@nother.smi.sendmail.com on Wed Oct 31 09:24:27 PDT 2007
-##### in /extra/home/ca/sm-8.14.2/OpenSource/sendmail-8.14.2/cf/cf
-##### using ../ as configuration include directory
-#####
-######################################################################
-#####
-##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
-#####
-######################################################################
-######################################################################
-
-##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
-##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
-##### $Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $ #####
-##### $Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $ #####
-
-##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ #####
-
-
-##### $Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $ #####
-
-# level 10 config file format
-V10/Berkeley
-
-# override file safeties - setting this option compromises system security,
-# addressing the actual file configuration problem is preferred
-# need to set this before any file actions are encountered in the cf file
-#O DontBlameSendmail=safe
-
-# default LDAP map specification
-# need to set this now before any LDAP maps are defined
-#O LDAPDefaultSpec=-h localhost
-
-##################
-# local info #
-##################
-
-# my LDAP cluster
-# need to set this before any LDAP lookups are done (including classes)
-#D{sendmailMTACluster}$m
-
-Cwlocalhost
-
-# my official domain name
-# ... define this only if sendmail cannot automatically determine your domain
-#Dj$w.Foo.COM
-
-# host/domain names ending with a token in class P are canonical
-CP.
-
-# "Smart" relay host (may be null)
-DS
-
-
-# operators that cannot be in local usernames (i.e., network indicators)
-CO @ % !
-
-# a class with just dot (for identifying canonical names)
-C..
-
-# a class with just a left bracket (for identifying domain literals)
-C[[
-
-
-# Resolve map (to check if a host exists in check_mail)
-Kresolve host -a<OKR> -T<TEMP>
-C{ResOk}OKR
-
-
-# Hosts for which relaying is permitted ($=R)
-FR-o /etc/mail/relay-domains
-
-# arithmetic map
-Karith arith
-
-
-
-
-
-# dequoting map
-Kdequote dequote
-
-# class E: names that should be exposed as from this host, even if we masquerade
-# class L: names that should be delivered locally, even if we have a relay
-# class M: domains that should be converted to $M
-# class N: domains that should not be converted to $M
-#CL root
-
-
-
-# my name for error messages
-DnMAILER-DAEMON
-
-
-D{MTAHost}[127.0.0.1]
-
-
-# Configuration version number
-DZ8.14.2/Submit
-
-
-###############
-# Options #
-###############
-
-# strip message body to 7 bits on input?
-O SevenBitInput=False
-
-# 8-bit data handling
-#O EightBitMode=pass8
-
-# wait for alias file rebuild (default units: minutes)
-O AliasWait=10
-
-# location of alias file
-#O AliasFile=/etc/mail/aliases
-
-# minimum number of free blocks on filesystem
-O MinFreeBlocks=100
-
-# maximum message size
-#O MaxMessageSize=0
-
-# substitution for space (blank) characters
-O BlankSub=.
-
-# avoid connecting to "expensive" mailers on initial submission?
-O HoldExpensive=False
-
-# checkpoint queue runs after every N successful deliveries
-#O CheckpointInterval=10
-
-# default delivery mode
-O DeliveryMode=i
-
-# error message header/file
-#O ErrorHeader=/etc/mail/error-header
-
-# error mode
-#O ErrorMode=print
-
-# save Unix-style "From_" lines at top of header?
-#O SaveFromLine=False
-
-# queue file mode (qf files)
-O QueueFileMode=0660
-
-# temporary file mode
-O TempFileMode=0600
-
-# match recipients against GECOS field?
-#O MatchGECOS=False
-
-# maximum hop count
-#O MaxHopCount=25
-
-# location of help file
-O HelpFile=/etc/mail/helpfile
-
-# ignore dots as terminators in incoming messages?
-#O IgnoreDots=False
-
-# name resolver options
-#O ResolverOptions=+AAONLY
-
-# deliver MIME-encapsulated error messages?
-O SendMimeErrors=True
-
-# Forward file search path
-O ForwardPath
-
-# open connection cache size
-O ConnectionCacheSize=2
-
-# open connection cache timeout
-O ConnectionCacheTimeout=5m
-
-# persistent host status directory
-#O HostStatusDirectory=.hoststat
-
-# single thread deliveries (requires HostStatusDirectory)?
-#O SingleThreadDelivery=False
-
-# use Errors-To: header?
-O UseErrorsTo=False
-
-# log level
-O LogLevel=9
-
-# send to me too, even in an alias expansion?
-#O MeToo=True
-
-# verify RHS in newaliases?
-O CheckAliases=False
-
-# default messages to old style headers if no special punctuation?
-O OldStyleHeaders=True
-
-# SMTP daemon options
-
-O DaemonPortOptions=Name=NoMTA, Addr=127.0.0.1, M=E
-
-# SMTP client options
-#O ClientPortOptions=Family=inet, Address=0.0.0.0
-
-# Modifiers to define {daemon_flags} for direct submissions
-#O DirectSubmissionModifiers
-
-# Use as mail submission program? See sendmail/SECURITY
-O UseMSP=True
-
-# privacy flags
-O PrivacyOptions=goaway,noetrn,restrictqrun
-
-# who (if anyone) should get extra copies of error messages
-#O PostmasterCopy=Postmaster
-
-# slope of queue-only function
-#O QueueFactor=600000
-
-# limit on number of concurrent queue runners
-#O MaxQueueChildren
-
-# maximum number of queue-runners per queue-grouping with multiple queues
-#O MaxRunnersPerQueue=1
-
-# priority of queue runners (nice(3))
-#O NiceQueueRun
-
-# shall we sort the queue by hostname first?
-#O QueueSortOrder=priority
-
-# minimum time in queue before retry
-#O MinQueueAge=30m
-
-# how many jobs can you process in the queue?
-#O MaxQueueRunSize=0
-
-# perform initial split of envelope without checking MX records
-#O FastSplit=1
-
-# queue directory
-O QueueDirectory=/var/spool/clientmqueue
-
-# key for shared memory; 0 to turn off, -1 to auto-select
-#O SharedMemoryKey=0
-
-# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
-#O SharedMemoryKeyFile
-
-# timeouts (many of these)
-#O Timeout.initial=5m
-#O Timeout.connect=5m
-#O Timeout.aconnect=0s
-#O Timeout.iconnect=5m
-#O Timeout.helo=5m
-#O Timeout.mail=10m
-#O Timeout.rcpt=1h
-#O Timeout.datainit=5m
-#O Timeout.datablock=1h
-#O Timeout.datafinal=1h
-#O Timeout.rset=5m
-#O Timeout.quit=2m
-#O Timeout.misc=2m
-#O Timeout.command=1h
-#O Timeout.ident=5s
-#O Timeout.fileopen=60s
-#O Timeout.control=2m
-O Timeout.queuereturn=5d
-#O Timeout.queuereturn.normal=5d
-#O Timeout.queuereturn.urgent=2d
-#O Timeout.queuereturn.non-urgent=7d
-#O Timeout.queuereturn.dsn=5d
-O Timeout.queuewarn=4h
-#O Timeout.queuewarn.normal=4h
-#O Timeout.queuewarn.urgent=1h
-#O Timeout.queuewarn.non-urgent=12h
-#O Timeout.queuewarn.dsn=4h
-#O Timeout.hoststatus=30m
-#O Timeout.resolver.retrans=5s
-#O Timeout.resolver.retrans.first=5s
-#O Timeout.resolver.retrans.normal=5s
-#O Timeout.resolver.retry=4
-#O Timeout.resolver.retry.first=4
-#O Timeout.resolver.retry.normal=4
-#O Timeout.lhlo=2m
-#O Timeout.auth=10m
-#O Timeout.starttls=1h
-
-# time for DeliverBy; extension disabled if less than 0
-#O DeliverByMin=0
-
-# should we not prune routes in route-addr syntax addresses?
-#O DontPruneRoutes=False
-
-# queue up everything before forking?
-O SuperSafe=True
-
-# status file
-O StatusFile=/var/spool/clientmqueue/sm-client.st
-
-# time zone handling:
-# if undefined, use system default
-# if defined but null, use TZ envariable passed in
-# if defined and non-null, use that info
-O TimeZoneSpec=
-
-# default UID (can be username or userid:groupid)
-#O DefaultUser=mailnull
-
-# list of locations of user database file (null means no lookup)
-#O UserDatabaseSpec=/etc/mail/userdb
-
-# fallback MX host
-#O FallbackMXhost=fall.back.host.net
-
-# fallback smart host
-#O FallbackSmartHost=fall.back.host.net
-
-# if we are the best MX host for a site, try it directly instead of config err
-#O TryNullMXList=False
-
-# load average at which we just queue messages
-#O QueueLA=8
-
-# load average at which we refuse connections
-#O RefuseLA=12
-
-# log interval when refusing connections for this long
-#O RejectLogInterval=3h
-
-# load average at which we delay connections; 0 means no limit
-#O DelayLA=0
-
-# maximum number of children we allow at one time
-#O MaxDaemonChildren=0
-
-# maximum number of new connections per second
-#O ConnectionRateThrottle=0
-
-# Width of the window
-#O ConnectionRateWindowSize=60s
-
-# work recipient factor
-#O RecipientFactor=30000
-
-# deliver each queued job in a separate process?
-#O ForkEachJob=False
-
-# work class factor
-#O ClassFactor=1800
-
-# work time factor
-#O RetryFactor=90000
-
-# default character set
-#O DefaultCharSet=unknown-8bit
-
-# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
-#O ServiceSwitchFile=/etc/mail/service.switch
-
-# hosts file (normally /etc/hosts)
-#O HostsFile=/etc/hosts
-
-# dialup line delay on connection failure
-#O DialDelay=0s
-
-# action to take if there are no recipients in the message
-#O NoRecipientAction=none
-
-# chrooted environment for writing to files
-#O SafeFileEnvironment
-
-# are colons OK in addresses?
-#O ColonOkInAddr=True
-
-# shall I avoid expanding CNAMEs (violates protocols)?
-#O DontExpandCnames=False
-
-# SMTP initial login message (old $e macro)
-O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
-
-# UNIX initial From header format (old $l macro)
-O UnixFromLine=From $g $d
-
-# From: lines that have embedded newlines are unwrapped onto one line
-#O SingleLineFromHeader=False
-
-# Allow HELO SMTP command that does not include a host name
-#O AllowBogusHELO=False
-
-# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
-#O MustQuoteChars=.
-
-# delimiter (operator) characters (old $o macro)
-O OperatorChars=.:%@!^/[]+
-
-# shall I avoid calling initgroups(3) because of high NIS costs?
-O DontInitGroups=True
-
-# are group-writable :include: and .forward files (un)trustworthy?
-# True (the default) means they are not trustworthy.
-#O UnsafeGroupWrites=True
-
-
-# where do errors that occur when sending errors get sent?
-#O DoubleBounceAddress=postmaster
-
-# issue temporary errors (4xy) instead of permanent errors (5xy)?
-#O SoftBounce=False
-
-# where to save bounces if all else fails
-#O DeadLetterDrop=/var/tmp/dead.letter
-
-# what user id do we assume for the majority of the processing?
-O RunAsUser=smmsp
-
-# maximum number of recipients per SMTP envelope
-#O MaxRecipientsPerMessage=0
-
-# limit the rate recipients per SMTP envelope are accepted
-# once the threshold number of recipients have been rejected
-#O BadRcptThrottle=0
-
-# shall we get local names from our installed interfaces?
-O DontProbeInterfaces=True
-
-# Return-Receipt-To: header implies DSN request
-#O RrtImpliesDsn=False
-
-# override connection address (for testing)
-#O ConnectOnlyTo=0.0.0.0
-
-# Trusted user for file ownership and starting the daemon
-O TrustedUser=smmsp
-
-# Control socket for daemon management
-#O ControlSocketName=/var/spool/mqueue/.control
-
-# Maximum MIME header length to protect MUAs
-#O MaxMimeHeaderLength=0/0
-
-# Maximum length of the sum of all headers
-#O MaxHeadersLength=32768
-
-# Maximum depth of alias recursion
-#O MaxAliasRecursion=10
-
-# location of pid file
-O PidFile=/var/spool/clientmqueue/sm-client.pid
-
-# Prefix string for the process title shown on 'ps' listings
-#O ProcessTitlePrefix=prefix
-
-# Data file (df) memory-buffer file maximum size
-#O DataFileBufferSize=4096
-
-# Transcript file (xf) memory-buffer file maximum size
-#O XscriptFileBufferSize=4096
-
-# lookup type to find information about local mailboxes
-#O MailboxDatabase=pw
-
-# override compile time flag REQUIRES_DIR_FSYNC
-#O RequiresDirfsync=true
-
-# list of authentication mechanisms
-#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
-
-# Authentication realm
-#O AuthRealm
-
-# default authentication information for outgoing connections
-#O DefaultAuthInfo=/etc/mail/default-auth-info
-
-# SMTP AUTH flags
-#O AuthOptions
-
-# SMTP AUTH maximum encryption strength
-#O AuthMaxBits
-
-# SMTP STARTTLS server options
-#O TLSSrvOptions
-
-# Input mail filters
-#O InputMailFilters
-
-
-# CA directory
-#O CACertPath
-# CA file
-#O CACertFile
-# Server Cert
-#O ServerCertFile
-# Server private key
-#O ServerKeyFile
-# Client Cert
-#O ClientCertFile
-# Client private key
-#O ClientKeyFile
-# File containing certificate revocation lists
-#O CRLFile
-# DHParameters (only required if DSA/DH is used)
-#O DHParameters
-# Random data source (required for systems without /dev/urandom under OpenSSL)
-#O RandFile
-
-# Maximum number of "useless" commands before slowing down
-#O MaxNOOPCommands=20
-
-# Name to use for EHLO (defaults to $j)
-#O HeloName
-
-############################
-# QUEUE GROUP DEFINITIONS #
-############################
-
-
-###########################
-# Message precedences #
-###########################
-
-Pfirst-class=0
-Pspecial-delivery=100
-Plist=-30
-Pbulk=-60
-Pjunk=-100
-
-#####################
-# Trusted users #
-#####################
-
-# this is equivalent to setting class "t"
-#Ft/etc/mail/trusted-users
-Troot
-Tdaemon
-Tuucp
-
-#########################
-# Format of headers #
-#########################
-
-H?P?Return-Path: <$g>
-HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
- $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
- $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
- (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
- for $u; $|;
- $.$b
-H?D?Resent-Date: $a
-H?D?Date: $a
-H?F?Resent-From: $?x$x <$g>$|$g$.
-H?F?From: $?x$x <$g>$|$g$.
-H?x?Full-Name: $x
-# HPosted-Date: $a
-# H?l?Received-Date: $b
-H?M?Resent-Message-Id: <$t.$i@$j>
-H?M?Message-Id: <$t.$i@$j>
-
-#
-######################################################################
-######################################################################
-#####
-##### REWRITING RULES
-#####
-######################################################################
-######################################################################
-
-############################################
-### Ruleset 3 -- Name Canonicalization ###
-############################################
-Scanonify=3
-
-# handle null input (translate to <@> special case)
-R$@ $@ <@>
-
-# strip group: syntax (not inside angle brackets!) and trailing semicolon
-R$* $: $1 <@> mark addresses
-R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
-R@ $* <@> $: @ $1 unmark @host:...
-R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
-R$* :: $* <@> $: $1 :: $2 unmark node::addr
-R:include: $* <@> $: :include: $1 unmark :include:...
-R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
-R$* : $* <@> $: $2 strip colon if marked
-R$* <@> $: $1 unmark
-R$* ; $1 strip trailing semi
-R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
-R$* < $* ; > $1 < $2 > bogus bracketed semi
-
-# null input now results from list:; syntax
-R$@ $@ :; <@>
-
-# strip angle brackets -- note RFC733 heuristic to get innermost item
-R$* $: < $1 > housekeeping <>
-R$+ < $* > < $2 > strip excess on left
-R< $* > $+ < $1 > strip excess on right
-R<> $@ < @ > MAIL FROM:<> case
-R< $+ > $: $1 remove housekeeping <>
-
-# strip route address <@a,@b,@c:user@d> -> <user@d>
-R@ $+ , $+ $2
-R@ [ $* ] : $+ $2
-R@ $+ : $+ $2
-
-# find focus for list syntax
-R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
-R $+ : $* ; $@ $1 : $2; list syntax
-
-# find focus for @ syntax addresses
-R$+ @ $+ $: $1 < @ $2 > focus on domain
-R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
-R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
-
-
-# convert old-style addresses to a domain-based address
-R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
-R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
-R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
-
-# convert node::user addresses into a domain-based address
-R$- :: $+ $@ $>Canonify2 $2 < @ $1 .DECNET > resolve DECnet names
-R$- . $- :: $+ $@ $>Canonify2 $3 < @ $1.$2 .DECNET > numeric DECnet addr
-
-# if we have % signs, take the rightmost one
-R$* % $* $1 @ $2 First make them all @s.
-R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
-R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
-
-# else we must be a local name
-R$* $@ $>Canonify2 $1
-
-
-################################################
-### Ruleset 96 -- bottom half of ruleset 3 ###
-################################################
-
-SCanonify2=96
-
-# handle special cases for local names
-R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
-R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
-R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
-
-# check for IPv4/IPv6 domain literal
-R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
-R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
-R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-
-
-
-
-
-# if really UUCP, handle it immediately
-
-# try UUCP traffic as a local address
-R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
-
-# hostnames ending in class P are always canonical
-R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
-R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
-R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
-R$* CC $* $| $* $: $3
-# pass to name server to make hostname canonical
-R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
-R$* $| $* $: $2
-
-# local host aliases and pseudo-domains are always canonical
-R$* < @ $=w > $* $: $1 < @ $2 . > $3
-R$* < @ $=M > $* $: $1 < @ $2 . > $3
-R$* < @ $* . . > $* $1 < @ $2 . > $3
-
-
-##################################################
-### Ruleset 4 -- Final Output Post-rewriting ###
-##################################################
-Sfinal=4
-
-R$+ :; <@> $@ $1 : handle <list:;>
-R$* <@> $@ handle <> and list:;
-
-# strip trailing dot off possibly canonical name
-R$* < @ $+ . > $* $1 < @ $2 > $3
-
-# eliminate internal code
-R$* < @ *LOCAL* > $* $1 < @ $j > $2
-
-# externalize local domain info
-R$* < $+ > $* $1 $2 $3 defocus
-R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
-R@ $* $@ @ $1 ... and exit
-
-# UUCP must always be presented in old form
-R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
-
-# put DECnet back in :: form
-R$+ @ $+ . DECNET $2 :: $1 u@h.DECNET => h::u
-# delete duplicate local names
-R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
-
-
-
-##############################################################
-### Ruleset 97 -- recanonicalize and call ruleset zero ###
-### (used for recursive calls) ###
-##############################################################
-
-SRecurse=97
-R$* $: $>canonify $1
-R$* $@ $>parse $1
-
-
-######################################
-### Ruleset 0 -- Parse Address ###
-######################################
-
-Sparse=0
-
-R$* $: $>Parse0 $1 initial parsing
-R<@> $#local $: <@> special case error msgs
-R$* $: $>ParseLocal $1 handle local hacks
-R$* $: $>Parse1 $1 final parsing
-
-#
-# Parse0 -- do initial syntax checking and eliminate local addresses.
-# This should either return with the (possibly modified) input
-# or return with a #error mailer. It should not return with a
-# #mailer other than the #error mailer.
-#
-
-SParse0
-R<@> $@ <@> special case error msgs
-R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
-R@ <@ $* > < @ $1 > catch "@@host" bogosity
-R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
-R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
-R$* $: <> $1
-R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
-R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
-R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
-R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
-R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
-R<> $* $1
-R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
-R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
-R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
-R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
-R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
-
-
-# now delete the local info -- note $=O to find characters that cause forwarding
-R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
-R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
-R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
-R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
-R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
-R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
-R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
-R$* $=O $* < @ *LOCAL* >
- $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
-R$* < @ *LOCAL* > $: $1
-
-#
-# Parse1 -- the bottom half of ruleset 0.
-#
-
-SParse1
-
-# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
-R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
-R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
-R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
-
-
-# short circuit local delivery so forwarded email works
-
-
-R$=L < @ $=w . > $#local $: @ $1 special local names
-R$+ < @ $=w . > $#local $: $1 regular local name
-
-
-# resolve remotely connected UUCP links (if any)
-
-# resolve fake top level domains by forwarding to other hosts
-
-
-
-# pass names that still have a host to a smarthost (if defined)
-R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
-
-# deal with other remote names
-R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
-
-# handle locally delivered names
-R$=L $#local $: @ $1 special local names
-R$+ $#local $: $1 regular local names
-
-###########################################################################
-### Ruleset 5 -- special rewriting after aliases have been expanded ###
-###########################################################################
-
-SLocal_localaddr
-Slocaladdr=5
-R$+ $: $1 $| $>"Local_localaddr" $1
-R$+ $| $#ok $@ $1 no change
-R$+ $| $#$* $#$2
-R$+ $| $* $: $1
-
-
-
-
-# deal with plussed users so aliases work nicely
-R$+ + * $#local $@ $&h $: $1
-R$+ + $* $#local $@ + $2 $: $1 + *
-
-# prepend an empty "forward host" on the front
-R$+ $: <> $1
-
-
-
-R< > $+ $: < > < $1 <> $&h > nope, restore +detail
-
-R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
-R< > < $+ <> $* > $: < > < $1 > else discard
-R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
-R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
-R< > < $+ > $@ $1 no +detail
-R$+ $: $1 <> $&h add +detail back in
-
-R$+ <> + $* $: $1 + $2 check whether +detail
-R$+ <> $* $: $1 else discard
-R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
-R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
-
-R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
-
-R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
-
-
-###################################################################
-### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
-###################################################################
-
-SMailerToTriple=95
-R< > $* $@ $1 strip off null relay
-R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
-R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
-R< error : $+ > $* $#error $: $1
-R< local : $* > $* $>CanonLocal < $1 > $2
-R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
-R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
-R< $=w > $* $@ $2 delete local host
-R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
-
-###################################################################
-### Ruleset CanonLocal -- canonify local: syntax ###
-###################################################################
-
-SCanonLocal
-# strip local host from routed addresses
-R< $* > < @ $+ > : $+ $@ $>Recurse $3
-R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
-
-# strip trailing dot from any host name that may appear
-R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
-
-# handle local: syntax -- use old user, either with or without host
-R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
-R< > $+ $#local $@ $1 $: $1
-
-# handle local:user@host syntax -- ignore host part
-R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
-
-# handle local:user syntax
-R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
-R< $+ > $* $#local $@ $2 $: $1
-
-###################################################################
-### Ruleset 93 -- convert header names to masqueraded form ###
-###################################################################
-
-SMasqHdr=93
-
-
-# do not masquerade anything in class N
-R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
-
-R$* < @ *LOCAL* > $@ $1 < @ $j . >
-
-###################################################################
-### Ruleset 94 -- convert envelope names to masqueraded form ###
-###################################################################
-
-SMasqEnv=94
-R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
-
-###################################################################
-### Ruleset 98 -- local part of ruleset zero (can be null) ###
-###################################################################
-
-SParseLocal=98
-
-
-
-
-######################################################################
-### CanonAddr -- Convert an address into a standard form for
-### relay checking. Route address syntax is
-### crudely converted into a %-hack address.
-###
-### Parameters:
-### $1 -- full recipient address
-###
-### Returns:
-### parsed address, not in source route form
-######################################################################
-
-SCanonAddr
-R$* $: $>Parse0 $>canonify $1 make domain canonical
-
-
-######################################################################
-### ParseRecipient -- Strip off hosts in $=R as well as possibly
-### $* $=m or the access database.
-### Check user portion for host separators.
-###
-### Parameters:
-### $1 -- full recipient address
-###
-### Returns:
-### parsed, non-local-relaying address
-######################################################################
-
-SParseRecipient
-R$* $: <?> $>CanonAddr $1
-R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
-R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
-
-# if no $=O character, no host in the user portion, we are done
-R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
-R<?> $* $@ $1
-
-
-R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
-
-
-
-R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
-R<$+> $* $@ $2
-
-
-######################################################################
-### check_relay -- check hostname/address on SMTP startup
-######################################################################
-
-
-
-SLocal_check_relay
-Scheck_relay
-R$* $: $1 $| $>"Local_check_relay" $1
-R$* $| $* $| $#$* $#$3
-R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
-
-SBasic_check_relay
-# check for deferred delivery mode
-R$* $: < $&{deliveryMode} > $1
-R< d > $* $@ deferred
-R< $* > $* $: $2
-
-
-
-
-######################################################################
-### check_mail -- check SMTP `MAIL FROM:' command argument
-######################################################################
-
-SLocal_check_mail
-Scheck_mail
-R$* $: $1 $| $>"Local_check_mail" $1
-R$* $| $#$* $#$2
-R$* $| $* $@ $>"Basic_check_mail" $1
-
-SBasic_check_mail
-# check for deferred delivery mode
-R$* $: < $&{deliveryMode} > $1
-R< d > $* $@ deferred
-R< $* > $* $: $2
-
-# authenticated?
-R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
-R$* $| $#$+ $#$2
-R$* $| $* $: $1
-
-R<> $@ <OK> we MUST accept <> (RFC 1123)
-R$+ $: <?> $1
-R<?><$+> $: <@> <$1>
-R<?>$+ $: <@> <$1>
-R$* $: $&{daemon_flags} $| $1
-R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
-R$* u $* $| <@> < $* > $: <?> < $3 >
-R$* $| $* $: $2
-# handle case of @localhost on address
-R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
-R<@> < $* @ [127.0.0.1] >
- $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
-R<@> < $* @ localhost.$m >
- $: < ? $&{client_name} > < $1 @ localhost.$m >
-R<@> < $* @ localhost.UUCP >
- $: < ? $&{client_name} > < $1 @ localhost.UUCP >
-R<@> $* $: $1 no localhost as domain
-R<? $=w> $* $: $2 local client: ok
-R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
-R<?> $* $: $1
-R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
-R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
-# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
-R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
-R<?> $* < @ $j > $: <OKR> $1 < @ $j >
-R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
-R<? $* <$->> $* < @ $+ >
- $: <$2> $3 < @ $4 >
-
-
-# handle case of no @domain on address
-R<?> $* $: $&{daemon_flags} $| <?> $1
-R$* u $* $| <?> $* $: <OKR> $3
-R$* $| $* $: $2
-R<?> $* $: < ? $&{client_addr} > $1
-R<?> $* $@ <OKR> ...local unqualed ok
-R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
- ...remote is not
-# check results
-R<?> $* $: @ $1 mark address: nothing known about it
-R<$={ResOk}> $* $: @ $2 domain ok
-R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
-R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
-
-
-
-######################################################################
-### check_rcpt -- check SMTP `RCPT TO:' command argument
-######################################################################
-
-SLocal_check_rcpt
-Scheck_rcpt
-R$* $: $1 $| $>"Local_check_rcpt" $1
-R$* $| $#$* $#$2
-R$* $| $* $@ $>"Basic_check_rcpt" $1
-
-SBasic_check_rcpt
-# empty address?
-R<> $#error $@ nouser $: "553 User address required"
-R$@ $#error $@ nouser $: "553 User address required"
-# check for deferred delivery mode
-R$* $: < $&{deliveryMode} > $1
-R< d > $* $@ deferred
-R< $* > $* $: $2
-
-
-######################################################################
-R$* $: $1 $| @ $>"Rcpt_ok" $1
-R$* $| @ $#TEMP $+ $: $1 $| T $2
-R$* $| @ $#$* $#$2
-R$* $| @ RELAY $@ RELAY
-R$* $| @ $* $: O $| $>"Relay_ok" $1
-R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
-R$* $| $#TEMP $+ $#error $2
-R$* $| $#$* $#$2
-R$* $| RELAY $@ RELAY
-R T $+ $| $* $#error $1
-# anything else is bogus
-R$* $#error $@ 5.7.1 $: "550 Relaying denied"
-
-
-######################################################################
-### Rcpt_ok: is the recipient ok?
-######################################################################
-SRcpt_ok
-R$* $: $>ParseRecipient $1 strip relayable hosts
-
-
-
-
-# authenticated via TLS?
-R$* $: $1 $| $>RelayTLS client authenticated?
-R$* $| $# $+ $# $2 error/ok?
-R$* $| $* $: $1 no
-
-R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
-R$* $| $# $* $# $2
-R$* $| NO $: $1
-R$* $| $* $: $1 $| $&{auth_type}
-R$* $| $: $1
-R$* $| $={TrustAuthMech} $# RELAY
-R$* $| $* $: $1
-# anything terminating locally is ok
-R$+ < @ $=w > $@ RELAY
-R$+ < @ $* $=R > $@ RELAY
-
-
-
-
-# check for local user (i.e. unqualified address)
-R$* $: <?> $1
-R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
-# local user is ok
-R<?> $+ $@ RELAY
-R<$+> $* $: $2
-
-######################################################################
-### Relay_ok: is the relay/sender ok?
-######################################################################
-SRelay_ok
-# anything originating locally is ok
-# check IP address
-R$* $: $&{client_addr}
-R$@ $@ RELAY originated locally
-R0 $@ RELAY originated locally
-R127.0.0.1 $@ RELAY originated locally
-RIPv6:::1 $@ RELAY originated locally
-R$=R $* $@ RELAY relayable IP address
-R$* $: [ $1 ] put brackets around it...
-R$=w $@ RELAY ... and see if it is local
-
-
-# check client name: first: did it resolve?
-R$* $: < $&{client_resolve} >
-R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
-R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
-R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
-R$* $: <@> $&{client_name}
-# pass to name server to make hostname canonical
-R<@> $* $=P $:<?> $1 $2
-R<@> $+ $:<?> $[ $1 $]
-R$* . $1 strip trailing dots
-R<?> $=w $@ RELAY
-R<?> $* $=R $@ RELAY
-
-
-
-
-
-######################################################################
-### trust_auth: is user trusted to authenticate as someone else?
-###
-### Parameters:
-### $1: AUTH= parameter from MAIL command
-######################################################################
-
-SLocal_trust_auth
-Strust_auth
-R$* $: $&{auth_type} $| $1
-# required by RFC 2554 section 4.
-R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
-R$* $| $&{auth_authen} $@ identical
-R$* $| <$&{auth_authen}> $@ identical
-R$* $| $* $: $1 $| $>"Local_trust_auth" $2
-R$* $| $#$* $#$2
-R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
-
-######################################################################
-### Relay_Auth: allow relaying based on authentication?
-###
-### Parameters:
-### $1: ${auth_type}
-######################################################################
-SLocal_Relay_Auth
-
-######################################################################
-### srv_features: which features to offer to a client?
-### (done in server)
-######################################################################
-Ssrv_features
-
-
-######################################################################
-### try_tls: try to use STARTTLS?
-### (done in client)
-######################################################################
-Stry_tls
-
-
-######################################################################
-### tls_rcpt: is connection with server "good" enough?
-### (done in client, per recipient)
-###
-### Parameters:
-### $1: recipient
-######################################################################
-Stls_rcpt
-
-
-######################################################################
-### tls_client: is connection with client "good" enough?
-### (done in server)
-###
-### Parameters:
-### ${verify} $| (MAIL|STARTTLS)
-######################################################################
-Stls_client
-R$* $| $* $@ $>"TLS_connection" $1
-
-######################################################################
-### tls_server: is connection with server "good" enough?
-### (done in client)
-###
-### Parameter:
-### ${verify}
-######################################################################
-Stls_server
-R$* $@ $>"TLS_connection" $1
-
-######################################################################
-### TLS_connection: is TLS connection "good" enough?
-###
-### Parameters:
-### ${verify}
-### Requirement: RHS from access map, may be ? for none.
-######################################################################
-STLS_connection
-RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
-
-
-######################################################################
-### RelayTLS: allow relaying based on TLS authentication
-###
-### Parameters:
-### none
-######################################################################
-SRelayTLS
-# authenticated?
-
-######################################################################
-### authinfo: lookup authinfo in the access map
-###
-### Parameters:
-### $1: {server_name}
-### $2: {server_addr}
-######################################################################
-Sauthinfo
-
-
-
-
-
-
-
-
-SLocal_localaddr
-R$+ $: $>ParseRecipient $1
-R$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3
-# DECnet
-R$+ :: $+ $#relay $@ ${MTAHost} $: $1 :: $2
-R$* $#relay $@ ${MTAHost} $: $1 < @ $j >
-#
-######################################################################
-######################################################################
-#####
-##### MAIL FILTER DEFINITIONS
-#####
-######################################################################
-######################################################################
-
-#
-######################################################################
-######################################################################
-#####
-##### MAILER DEFINITIONS
-#####
-######################################################################
-######################################################################
-
-
-##################################################
-### Local and Program Mailer specification ###
-##################################################
-
-##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
-
-#
-# Envelope sender rewriting
-#
-SEnvFromL
-R<@> $n errors to mailer-daemon
-R@ <@ $*> $n temporarily bypass Sun bogosity
-R$+ $: $>AddDomain $1 add local domain if needed
-R$* $: $>MasqEnv $1 do masquerading
-
-#
-# Envelope recipient rewriting
-#
-SEnvToL
-R$+ < @ $* > $: $1 strip host part
-R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
-R<e s> $+ + $* $: $1 remove +detail for sender
-R< $* > $+ $: $2 else remove mark
-
-#
-# Header sender rewriting
-#
-SHdrFromL
-R<@> $n errors to mailer-daemon
-R@ <@ $*> $n temporarily bypass Sun bogosity
-R$+ $: $>AddDomain $1 add local domain if needed
-R$* $: $>MasqHdr $1 do masquerading
-
-#
-# Header recipient rewriting
-#
-SHdrToL
-R$+ $: $>AddDomain $1 add local domain if needed
-R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
-
-#
-# Common code to add local domain name (only if always-add-domain)
-#
-SAddDomain
-
-Mlocal, P=[IPC], F=lmDFMuXkw5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
- T=DNS/RFC822/SMTP,
- A=TCP $h
-Mprog, P=[IPC], F=lmDFMuXk5, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
- T=X-Unix/X-Unix/X-Unix,
- A=TCP $h
-
-#####################################
-### SMTP Mailer specification ###
-#####################################
-
-##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
-
-#
-# common sender and masquerading recipient rewriting
-#
-SMasqSMTP
-R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-R$+ $@ $1 < @ *LOCAL* > add local qualification
-
-#
-# convert pseudo-domain addresses to real domain addresses
-#
-SPseudoToReal
-
-# pass <route-addr>s through
-R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
-
-# output fake domains as user%fake@relay
-
-# do UUCP heuristics; note that these are shared with UUCP mailers
-R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
-R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
-
-# leave these in .UUCP form to avoid further tampering
-R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
-R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
-R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
-R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
-R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
-R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
-
-
-#
-# envelope sender rewriting
-#
-SEnvFromSMTP
-R$+ $: $>PseudoToReal $1 sender/recipient common
-R$* :; <@> $@ list:; special case
-R$* $: $>MasqSMTP $1 qualify unqual'ed names
-R$+ $: $>MasqEnv $1 do masquerading
-
-
-#
-# envelope recipient rewriting --
-# also header recipient if not masquerading recipients
-#
-SEnvToSMTP
-R$+ $: $>PseudoToReal $1 sender/recipient common
-R$+ $: $>MasqSMTP $1 qualify unqual'ed names
-R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
-
-#
-# header sender and masquerading header recipient rewriting
-#
-SHdrFromSMTP
-R$+ $: $>PseudoToReal $1 sender/recipient common
-R:; <@> $@ list:; special case
-
-# do special header rewriting
-R$* <@> $* $@ $1 <@> $2 pass null host through
-R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
-R$* $: $>MasqSMTP $1 qualify unqual'ed names
-R$+ $: $>MasqHdr $1 do masquerading
-
-
-#
-# relay mailer header masquerading recipient rewriting
-#
-SMasqRelay
-R$+ $: $>MasqSMTP $1
-R$+ $: $>MasqHdr $1
-
-Msmtp, P=[IPC], F=mDFMuXk5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
- T=DNS/RFC822/SMTP,
- A=TCP $h
-Mesmtp, P=[IPC], F=mDFMuXak5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
- T=DNS/RFC822/SMTP,
- A=TCP $h
-Msmtp8, P=[IPC], F=mDFMuX8k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
- T=DNS/RFC822/SMTP,
- A=TCP $h
-Mdsmtp, P=[IPC], F=mDFMuXa%k5, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
- T=DNS/RFC822/SMTP,
- A=TCP $h
-Mrelay, P=[IPC], F=mDFMuXa8k, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
- T=DNS/RFC822/SMTP,
- A=TCP $h
-
-### submit.mc ###
-# divert(-1)
-# #
-# # Copyright (c) 2001-2003 Sendmail, Inc. and its suppliers.
-# # 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 the prototype file for a set-group-ID sm-msp sendmail that
-# # acts as a initial mail submission program.
-# #
-#
-# divert(0)dnl
-# VERSIONID(`$Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $')
-# define(`confCF_VERSION', `Submit')dnl
-# define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
-# define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet
-# define(`confTIME_ZONE', `USE_TZ')dnl
-# define(`confDONT_INIT_GROUPS', `True')dnl
-# dnl
-# dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
-# FEATURE(`msp', `[127.0.0.1]')dnl
diff --git a/contrib/sendmail/cf/cf/submit.mc b/contrib/sendmail/cf/cf/submit.mc
deleted file mode 100644
index d0db47805a0f..000000000000
--- a/contrib/sendmail/cf/cf/submit.mc
+++ /dev/null
@@ -1,26 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001-2003 Sendmail, Inc. and its suppliers.
-# 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 the prototype file for a set-group-ID sm-msp sendmail that
-# acts as a initial mail submission program.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: submit.mc,v 8.14 2006/04/05 05:54:41 ca Exp $')
-define(`confCF_VERSION', `Submit')dnl
-define(`__OSTYPE__',`')dnl dirty hack to keep proto.m4 from complaining
-define(`_USE_DECNET_SYNTAX_', `1')dnl support DECnet
-define(`confTIME_ZONE', `USE_TZ')dnl
-define(`confDONT_INIT_GROUPS', `True')dnl
-dnl
-dnl If you use IPv6 only, change [127.0.0.1] to [IPv6:::1]
-FEATURE(`msp', `[127.0.0.1]')dnl
diff --git a/contrib/sendmail/cf/cf/tcpproto.mc b/contrib/sendmail/cf/cf/tcpproto.mc
deleted file mode 100644
index 969cb71f2ec6..000000000000
--- a/contrib/sendmail/cf/cf/tcpproto.mc
+++ /dev/null
@@ -1,33 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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 the prototype file for a configuration that supports nothing
-# but basic SMTP connections via TCP.
-#
-# You MUST change the `OSTYPE' macro to specify the operating system
-# on which this will run; this will set the location of various
-# support files for your operating system environment. You MAY
-# create a domain file in ../domain and reference it by adding a
-# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
-# first copy this to another file name so that new sendmail releases
-# will not trash your changes.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: tcpproto.mc,v 8.14 2000/08/03 15:26:50 ca Exp $')
-OSTYPE(`unknown')
-FEATURE(`nouucp', `reject')
-MAILER(`local')
-MAILER(`smtp')
diff --git a/contrib/sendmail/cf/cf/ucbarpa.mc b/contrib/sendmail/cf/cf/ucbarpa.mc
deleted file mode 100644
index 26b2ce095d77..000000000000
--- a/contrib/sendmail/cf/cf/ucbarpa.mc
+++ /dev/null
@@ -1,30 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 machine has been decommissioned at Berkeley, and hence should
-# not be considered to be tested. This file is provided as an example
-# only, of how you might set up a joint SMTP/UUCP configuration. At
-# this point I recommend using `FEATURE(mailertable)' instead of
-# `SITECONFIG'. See also ucbvax.mc.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: ucbarpa.mc,v 8.12 1999/02/07 07:26:05 gshapiro Exp $')
-DOMAIN(CS.Berkeley.EDU)dnl
-OSTYPE(bsd4.4)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-MAILER(uucp)dnl
-SITECONFIG(uucp.ucbarpa, ucbarpa, U)
diff --git a/contrib/sendmail/cf/cf/ucbvax.mc b/contrib/sendmail/cf/cf/ucbvax.mc
deleted file mode 100644
index 235d9aa25bca..000000000000
--- a/contrib/sendmail/cf/cf/ucbvax.mc
+++ /dev/null
@@ -1,91 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 machine has been decommissioned at Berkeley, and hence should
-# not be considered to be tested. This file is provided as an example
-# only, of how you might set up a fairly complex configuration.
-# Ucbvax was our main relay (both SMTP and UUCP) for many years.
-# At this point I recommend using `FEATURE(mailertable)' instead of
-# `SITECONFIG' for routing of UUCP within your domain.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: ucbvax.mc,v 8.14 1999/02/07 07:26:05 gshapiro Exp $')
-OSTYPE(bsd4.3)
-DOMAIN(CS.Berkeley.EDU)
-MASQUERADE_AS(CS.Berkeley.EDU)
-MAILER(local)
-MAILER(smtp)
-MAILER(uucp)
-undefine(`UUCP_RELAY')dnl
-
-LOCAL_CONFIG
-DDBerkeley.EDU
-
-# names for which we act as a local forwarding agent
-CF CS
-FF/etc/sendmail.cw
-
-# local UUCP connections, and our local uucp name
-SITECONFIG(uucp.ucbvax, ucbvax, U)
-
-# remote UUCP connections, and the machine they are on
-SITECONFIG(uucp.ucbarpa, ucbarpa.Berkeley.EDU, W)
-
-SITECONFIG(uucp.cogsci, cogsci.Berkeley.EDU, X)
-
-LOCAL_RULE_3
-# map old UUCP names into Internet names
-UUCPSMTP(bellcore, bellcore.com)
-UUCPSMTP(decvax, decvax.dec.com)
-UUCPSMTP(decwrl, decwrl.dec.com)
-UUCPSMTP(hplabs, hplabs.hp.com)
-UUCPSMTP(lbl-csam, lbl-csam.arpa)
-UUCPSMTP(pur-ee, ecn.purdue.edu)
-UUCPSMTP(purdue, purdue.edu)
-UUCPSMTP(research, research.att.com)
-UUCPSMTP(sdcarl, sdcarl.ucsd.edu)
-UUCPSMTP(sdcsvax, sdcsvax.ucsd.edu)
-UUCPSMTP(ssyx, ssyx.ucsc.edu)
-UUCPSMTP(sun, sun.com)
-UUCPSMTP(ucdavis, ucdavis.ucdavis.edu)
-UUCPSMTP(ucivax, ics.uci.edu)
-UUCPSMTP(ucla-cs, cs.ucla.edu)
-UUCPSMTP(ucla-se, seas.ucla.edu)
-UUCPSMTP(ucsbcsl, ucsbcsl.ucsb.edu)
-UUCPSMTP(ucscc, c.ucsc.edu)
-UUCPSMTP(ucsd, ucsd.edu)
-UUCPSMTP(ucsfcgl, cgl.ucsf.edu)
-UUCPSMTP(unmvax, unmvax.cs.unm.edu)
-UUCPSMTP(uwvax, spool.cs.wisc.edu)
-
-LOCAL_RULE_0
-
-# make sure we handle the local domain as absolute
-R$* < @ $* $D > $* $: $1 < @ $2 $D . > $3
-
-# handle names we forward for as though they were local, so we will use UDB
-R< @ $=F . $D . > : $* $@ $>7 $2 @here:... -> ...
-R< @ $D . > : $* $@ $>7 $1 @here:... -> ...
-R$* $=O $* < @ $=F . $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-R$* $=O $* < @ $D . > $@ $>7 $1 $2 $3 ...@here -> ...
-
-R$* < @ $=F . $D . > $#local $: $1 use UDB
-
-# handle local UUCP connections in the Berkeley.EDU domain
-R$+<@cnmat.$D . > $#uucp$@cnmat$:$1
-R$+<@cnmat.CS.$D . > $#uucp$@cnmat$:$1
-R$+<@craig.$D . > $#uucp$@craig$:$1
-R$+<@craig.CS.$D . > $#uucp$@craig$:$1
diff --git a/contrib/sendmail/cf/cf/uucpproto.mc b/contrib/sendmail/cf/cf/uucpproto.mc
deleted file mode 100644
index 134c8f41b9ed..000000000000
--- a/contrib/sendmail/cf/cf/uucpproto.mc
+++ /dev/null
@@ -1,34 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 the prototype for a configuration that only supports UUCP
-# and does not have DNS support at all.
-#
-# You MUST change the `OSTYPE' macro to specify the operating system
-# on which this will run; this will set the location of various
-# support files for your operating system environment. You MAY
-# create a domain file in ../domain and reference it by adding a
-# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
-# first copy this to another file name so that new sendmail releases
-# will not trash your changes.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: uucpproto.mc,v 8.15 1999/02/07 07:26:05 gshapiro Exp $')
-OSTYPE(unknown)
-FEATURE(promiscuous_relay)dnl
-FEATURE(accept_unresolvable_domains)dnl
-MAILER(local)dnl
-MAILER(uucp)dnl
diff --git a/contrib/sendmail/cf/cf/vangogh.cs.mc b/contrib/sendmail/cf/cf/vangogh.cs.mc
deleted file mode 100644
index 3fb48e131e74..000000000000
--- a/contrib/sendmail/cf/cf/vangogh.cs.mc
+++ /dev/null
@@ -1,33 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 a specific
-# machine in the Computer Science Division at Berkeley, and should
-# not be used elsewhere. It is provided on the sendmail distribution
-# as a sample only.
-#
-# This file is for the BSD development machine; it has some parameters
-# set up (to stress sendmail) and accepts mail for some other machines.
-#
-
-divert(0)dnl
-VERSIONID(`$Id: vangogh.cs.mc,v 8.13 1999/02/07 07:26:05 gshapiro Exp $')
-DOMAIN(CS.Berkeley.EDU)dnl
-OSTYPE(bsd4.4)dnl
-MAILER(local)dnl
-MAILER(smtp)dnl
-define(`MCI_CACHE_SIZE', 5)
-Cw okeeffe.CS.Berkeley.EDU
-Cw python.CS.Berkeley.EDU
diff --git a/contrib/sendmail/cf/domain/Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/Berkeley.EDU.m4
deleted file mode 100644
index d0fee24763ef..000000000000
--- a/contrib/sendmail/cf/domain/Berkeley.EDU.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: Berkeley.EDU.m4,v 8.17 1999/02/07 07:26:06 gshapiro Exp $')
-DOMAIN(berkeley-only)dnl
-define(`BITNET_RELAY', `bitnet-relay.Berkeley.EDU')dnl
-define(`UUCP_RELAY', `uucp-relay.Berkeley.EDU')dnl
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')dnl
-define(`confCW_FILE', `-o /etc/sendmail.cw')dnl
-define(`confDONT_INIT_GROUPS', True)dnl
-FEATURE(redirect)dnl
-FEATURE(use_cw_file)dnl
-FEATURE(stickyhost)dnl
diff --git a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
deleted file mode 100644
index 181ced1451cb..000000000000
--- a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: CS.Berkeley.EDU.m4,v 8.10 1999/02/07 07:26:06 gshapiro Exp $')
-DOMAIN(Berkeley.EDU)dnl
-HACK(cssubdomain)dnl
-define(`confUSERDB_SPEC',
- `/usr/sww/share/lib/users.cs.db,/usr/sww/share/lib/users.eecs.db')dnl
diff --git a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
deleted file mode 100644
index 41a21ade2e1b..000000000000
--- a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: EECS.Berkeley.EDU.m4,v 8.10 1999/02/07 07:26:06 gshapiro Exp $')
-DOMAIN(Berkeley.EDU)dnl
-MASQUERADE_AS(EECS.Berkeley.EDU)dnl
diff --git a/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4
deleted file mode 100644
index 9a019ce8b4d8..000000000000
--- a/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: S2K.Berkeley.EDU.m4,v 8.10 1999/02/07 07:26:06 gshapiro Exp $')
-DOMAIN(CS.Berkeley.EDU)dnl
-MASQUERADE_AS(postgres.Berkeley.EDU)dnl
diff --git a/contrib/sendmail/cf/domain/berkeley-only.m4 b/contrib/sendmail/cf/domain/berkeley-only.m4
deleted file mode 100644
index b9a73b9b0422..000000000000
--- a/contrib/sendmail/cf/domain/berkeley-only.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: unspecified-domain.m4,v 8.10 1999/02/07 07:26:07 gshapiro Exp $')
-errprint(`*** ERROR: You are trying to use the Berkeley sample configuration')
-errprint(` files outside of the Computer Science Division at Berkeley.')
-errprint(` The configuration (.mc) files must be customized to reference')
-errprint(` domain files appropriate for your environment.')
diff --git a/contrib/sendmail/cf/domain/generic.m4 b/contrib/sendmail/cf/domain/generic.m4
deleted file mode 100644
index caa5a8845fa8..000000000000
--- a/contrib/sendmail/cf/domain/generic.m4
+++ /dev/null
@@ -1,28 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-#
-# The following is a generic domain file. You should be able to
-# use it anywhere. If you want to customize it, copy it to a file
-# named with your domain and make the edits; then, copy the appropriate
-# .mc files and change `DOMAIN(generic)' to reference your updated domain
-# files.
-#
-divert(0)
-VERSIONID(`$Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $')
-define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl
-define(`confMAX_HEADERS_LENGTH', `32768')dnl
-FEATURE(`redirect')dnl
-FEATURE(`use_cw_file')dnl
-EXPOSED_USER(`root')
diff --git a/contrib/sendmail/cf/feature/accept_unqualified_senders.m4 b/contrib/sendmail/cf/feature/accept_unqualified_senders.m4
deleted file mode 100644
index 4c39884935bf..000000000000
--- a/contrib/sendmail/cf/feature/accept_unqualified_senders.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: accept_unqualified_senders.m4,v 8.6 1999/02/07 07:26:07 gshapiro Exp $')
-divert(-1)
-
-define(`_ACCEPT_UNQUALIFIED_SENDERS_', 1)
diff --git a/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4 b/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4
deleted file mode 100644
index a54507c75498..000000000000
--- a/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: accept_unresolvable_domains.m4,v 8.10 1999/02/07 07:26:07 gshapiro Exp $')
-divert(-1)
-
-define(`_ACCEPT_UNRESOLVABLE_DOMAINS_', 1)
diff --git a/contrib/sendmail/cf/feature/access_db.m4 b/contrib/sendmail/cf/feature/access_db.m4
deleted file mode 100644
index 8aa90c82e055..000000000000
--- a/contrib/sendmail/cf/feature/access_db.m4
+++ /dev/null
@@ -1,49 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2002, 2004, 2006 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: access_db.m4,v 8.27 2006/07/06 21:10:10 ca Exp $')
-divert(-1)
-
-define(`_ACCESS_TABLE_', `')
-define(`_TAG_DELIM_', `:')dnl should be in OperatorChars
-ifelse(lower(_ARG2_),`skip',`define(`_ACCESS_SKIP_', `1')')
-ifelse(lower(_ARG2_),`lookupdotdomain',`define(`_LOOKUPDOTDOMAIN_', `1')')
-ifelse(lower(_ARG2_),`relaytofulladdress',`define(`_RELAY_FULL_ADDR_', `1')')
-ifelse(lower(_ARG3_),`skip',`define(`_ACCESS_SKIP_', `1')')
-ifelse(lower(_ARG3_),`lookupdotdomain',`define(`_LOOKUPDOTDOMAIN_', `1')')
-ifelse(lower(_ARG3_),`relaytofulladdress',`define(`_RELAY_FULL_ADDR_', `1')')
-ifelse(lower(_ARG4_),`skip',`define(`_ACCESS_SKIP_', `1')')
-ifelse(lower(_ARG4_),`lookupdotdomain',`define(`_LOOKUPDOTDOMAIN_', `1')')
-ifelse(lower(_ARG4_),`relaytofulladdress',`define(`_RELAY_FULL_ADDR_', `1')')
-define(`_ATMPF_', `<TMPF>')dnl
-dnl check whether arg contains -T`'_ATMPF_
-dnl unless it is a sequence map
-ifelse(defn(`_ARG_'), `', `',
- defn(`_ARG_'), `LDAP', `',
- `ifelse(index(_ARG_, `sequence '), `0', `',
- `ifelse(index(_ARG_, _ATMPF_), `-1',
- `errprint(`*** WARNING: missing -T'_ATMPF_` in argument of FEATURE(`access_db',' defn(`_ARG_')`)
-')
- define(`_ABP_', index(_ARG_, ` '))
- define(`_NARG_', `substr(_ARG_, 0, _ABP_) -T'_ATMPF_` substr(_ARG_, _ABP_)')
- ')
- ')
- ')
-ifdef(`_GREET_PAUSE_',
- `errprint(`*** WARNING: FEATURE(`greet_pause') before FEATURE(`access_db')
- greet_pause will not use access_db!')')
-
-LOCAL_CONFIG
-# Access list database (for spam stomping)
-Kaccess ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE -T`'_ATMPF_ MAIL_SETTINGS_DIR`access',
- defn(`_ARG_'), `LDAP', `ldap -T`'_ATMPF_ -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=access)(sendmailMTAKey=%0))',
- defn(`_NARG_'), `', `_ARG_', `_NARG_')
diff --git a/contrib/sendmail/cf/feature/allmasquerade.m4 b/contrib/sendmail/cf/feature/allmasquerade.m4
deleted file mode 100644
index aa264f961d27..000000000000
--- a/contrib/sendmail/cf/feature/allmasquerade.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: allmasquerade.m4,v 8.13 2000/09/12 22:00:53 ca Exp $')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** MAILER(`local') must appear after FEATURE(`allmasquerade')')
-')dnl
-ifdef(`_MAILER_uucp_',
- `errprint(`*** MAILER(`uucp') must appear after FEATURE(`allmasquerade')')
-')dnl
-define(`_ALL_MASQUERADE_', 1)
diff --git a/contrib/sendmail/cf/feature/always_add_domain.m4 b/contrib/sendmail/cf/feature/always_add_domain.m4
deleted file mode 100644
index a29956a635b4..000000000000
--- a/contrib/sendmail/cf/feature/always_add_domain.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: always_add_domain.m4,v 8.11 2000/09/12 22:00:53 ca Exp $')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** MAILER(`local') must appear after FEATURE(`always_add_domain')')
-')dnl
-define(`_ALWAYS_ADD_DOMAIN_', ifelse(len(X`'_ARG_),`1',`',_ARG_))
diff --git a/contrib/sendmail/cf/feature/authinfo.m4 b/contrib/sendmail/cf/feature/authinfo.m4
deleted file mode 100644
index 99dd6e9e2361..000000000000
--- a/contrib/sendmail/cf/feature/authinfo.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: authinfo.m4,v 1.9 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_AUTHINFO_TABLE_', `')
-
-LOCAL_CONFIG
-# authinfo list database: contains info for authentication as client
-Kauthinfo ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`authinfo',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=authinfo)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/feature/badmx.m4 b/contrib/sendmail/cf/feature/badmx.m4
deleted file mode 100644
index dc0dc8827a7a..000000000000
--- a/contrib/sendmail/cf/feature/badmx.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2006 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: badmx.m4,v 1.1 2006/12/16 00:56:32 ca Exp $')
-divert(-1)
-
-define(`_BADMX_CHK_', 1)
-
-LOCAL_CONFIG
-Kmxlist bestmx -z: -T<TEMP>
-Kbadmx regex -a<BADMX> ^(([0-9]{1,3}\.){3}[0-9]){0,1}\.$
-KdnsA dns -R A -a. -T<TEMP>
-KBadMXIP regex -a<BADMXIP> ifelse(defn(`_ARG_'), `', `^(127\.|10\.|0\.0\.0\.0)', `_ARG_')
diff --git a/contrib/sendmail/cf/feature/bestmx_is_local.m4 b/contrib/sendmail/cf/feature/bestmx_is_local.m4
deleted file mode 100644
index 911d2b542192..000000000000
--- a/contrib/sendmail/cf/feature/bestmx_is_local.m4
+++ /dev/null
@@ -1,51 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bestmx_is_local.m4,v 8.26 2000/09/17 17:30:00 gshapiro Exp $')
-divert(-1)
-
-define(`_BESTMX_IS_LOCAL_', _ARG_)
-
-LOCAL_CONFIG
-# turn on bestMX lookup table
-Kbestmx bestmx
-ifelse(defn(`_ARG_'), `', `dnl',`
-# limit bestmx to these domains
-CB`'_ARG_')
-
-LOCAL_NET_CONFIG
-
-# If we are the best MX for a site, then we want to accept
-# its mail as local. We assume we've already weeded out mail to
-# UUCP sites which are connected to us, which should also have
-# listed us as their best MX.
-#
-# Warning: this may generate a lot of extra DNS traffic -- a
-# lower cost method is to list all the expected best MX hosts
-# in $=w. This should be fine (and easier to administer) for
-# low to medium traffic hosts. If you use the limited bestmx
-# by passing in a set of possible domains it will improve things.
-
-ifelse(defn(`_ARG_'), `', `dnl
-# unlimited bestmx
-R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3',
-`dnl
-# limit bestmx to $=B
-R$* < @ $* $=B . > $* $: $1 < @ $2 $3 . @@ $(bestmx $2 $3 . $) > $4')
-R$* $=O $* < @ $* @@ $=w . > $* $@ $>Recurse $1 $2 $3
-R< @ $* @@ $=w . > : $* $@ $>Recurse $3
-dnl we cannot use _LOCAL_ here since it is defined too late
-R$* < @ $* @@ $=w . > $* $@ $>CanonLocal < $1 >
-R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4
diff --git a/contrib/sendmail/cf/feature/bitdomain.m4 b/contrib/sendmail/cf/feature/bitdomain.m4
deleted file mode 100644
index 2ff3fa6eecd0..000000000000
--- a/contrib/sendmail/cf/feature/bitdomain.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001-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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bitdomain.m4,v 8.30 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_BITDOMAIN_TABLE_', `')
-
-LOCAL_CONFIG
-# BITNET mapping table
-Kbitdomain ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`bitdomain',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=bitdomain)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/feature/blacklist_recipients.m4 b/contrib/sendmail/cf/feature/blacklist_recipients.m4
deleted file mode 100644
index d6218d119401..000000000000
--- a/contrib/sendmail/cf/feature/blacklist_recipients.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: blacklist_recipients.m4,v 8.13 1999/04/02 02:25:13 gshapiro Exp $')
-divert(-1)
-
-ifdef(`_ACCESS_TABLE_',
- `define(`_BLACKLIST_RCPT_', 1)',
- `errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db)
-')')
diff --git a/contrib/sendmail/cf/feature/block_bad_helo.m4 b/contrib/sendmail/cf/feature/block_bad_helo.m4
deleted file mode 100644
index 6f6d79265ebe..000000000000
--- a/contrib/sendmail/cf/feature/block_bad_helo.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2006 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)dnl
-VERSIONID(`$Id: block_bad_helo.m4,v 1.1 2006/06/15 22:49:30 ca Exp $')
-divert(-1)
-
-define(`_BLOCK_BAD_HELO_', `')dnl
-RELAY_DOMAIN(`127.0.0.1')dnl
-LOCAL_DOMAIN(`[127.0.0.1]')dnl
diff --git a/contrib/sendmail/cf/feature/compat_check.m4 b/contrib/sendmail/cf/feature/compat_check.m4
deleted file mode 100644
index a6125edf2516..000000000000
--- a/contrib/sendmail/cf/feature/compat_check.m4
+++ /dev/null
@@ -1,33 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000-2002 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: compat_check.m4,v 1.4 2002/02/26 22:15:31 gshapiro Exp $')
-divert(-1)
-ifdef(`_ACCESS_TABLE_', `',
-`errprint(`FEATURE(`compat_check') requires FEATURE(`access_db')
-')')
-
-LOCAL_RULESETS
-Scheck_compat
-# look up the pair of addresses
-# (we use <@> as the separator. Note this in the map too!)
-R< $+ > $| $+ $: $1 $| $2
-R$+ $| < $+ > $: $1 $| $2
-R$+ $| $+ $: <$(access Compat:$1<@>$2 $:OK $)>
-R$* $| $* $@ ok
-# act on the result,
-# it must be one of the following... anything else will be allowed..
-dnl for consistency with the other two even though discard does not take a
-dnl reply code
-R< DISCARD:$* > $#discard $: $1 " - discarded by check_compat"
-R< DISCARD $* > $#discard $: $1 " - discarded by check_compat"
-R< TEMP:$* > $#error $@ TEMPFAIL $: $1 " error from check_compat. Try again later"
-R< ERROR:$* > $#error $@ UNAVAILABLE $: $1 " error from check_compat"
diff --git a/contrib/sendmail/cf/feature/conncontrol.m4 b/contrib/sendmail/cf/feature/conncontrol.m4
deleted file mode 100644
index 87c23b0fd548..000000000000
--- a/contrib/sendmail/cf/feature/conncontrol.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2003, 2004 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: conncontrol.m4,v 1.4 2004/02/19 21:31:47 ca Exp $')
-
-divert(-1)
-ifdef(`_ACCESS_TABLE_', `
- define(`_CONN_CONTROL_', `1')
- ifelse(defn(`_ARG_'), `', `',
- strcasecmp(defn(`_ARG_'), `nodelay'), `1',
- `ifdef(`_DELAY_CHECKS_',
- `
- define(`_CONN_CONTROL_IMMEDIATE_', `1')
- define(`_CONTROL_IMMEDIATE_', `1')
- ',
- `errprint(`*** ERROR: FEATURE(`conncontrol', `nodelay') requires FEATURE(`delay_checks')')'
- )',
- `errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`conncontrol')')')
- define(`_FFR_SRCHLIST_A', `1')
- ifelse(len(X`'_ARG2_), `1', `',
- _ARG2_, `terminate', `define(`_CONN_CONTROL_REPLY', `421')',
- `errprint(`*** ERROR: FEATURE(`conncontrol'): unknown argument '"_ARG2_"
-)'
- )
- ', `errprint(`*** ERROR: FEATURE(`conncontrol') requires FEATURE(`access_db')
-')')
-ifdef(`_CONN_CONTROL_REPLY',,`define(`_CONN_CONTROL_REPLY', `452')')
diff --git a/contrib/sendmail/cf/feature/delay_checks.m4 b/contrib/sendmail/cf/feature/delay_checks.m4
deleted file mode 100644
index 151df956668f..000000000000
--- a/contrib/sendmail/cf/feature/delay_checks.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999-2000 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: delay_checks.m4,v 8.8 2000/12/05 18:50:45 ca Exp $')
-divert(-1)
-
-define(`_DELAY_CHECKS_', 1)
-ifelse(defn(`_ARG_'), `', `',
- lower(substr(_ARG_,0,1)), `f', `define(`_SPAM_FRIEND_', 1) define(`_SPAM_FH_', 1)',
- lower(substr(_ARG_,0,1)), `h', `define(`_SPAM_HATER_', 1) define(`_SPAM_FH_', 1)',
- `errprint(`*** ERROR: illegal argument _ARG_ for FEATURE(delay_checks)
-')
- ')
-
-dnl be backward compatible by default
-ifelse(len(X`'_ARG2_), `1', `define(`_DELAY_COMPAT_8_10_', 1)', `')
diff --git a/contrib/sendmail/cf/feature/dnsbl.m4 b/contrib/sendmail/cf/feature/dnsbl.m4
deleted file mode 100644
index be0e2be9ef93..000000000000
--- a/contrib/sendmail/cf/feature/dnsbl.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2002, 2005-2007 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-ifdef(`DNSBL_MAP', `', `define(`DNSBL_MAP', `dns -R A')')
-divert(0)
-ifdef(`_DNSBL_R_',`dnl',`dnl
-VERSIONID(`$Id: dnsbl.m4,v 8.33 2007/01/05 18:49:29 ca Exp $')
-define(`_DNSBL_R_',`')
-ifelse(defn(`_ARG_'), `',
- `errprint(`*** ERROR: missing argument for FEATURE(`dnsbl')')')
-LOCAL_CONFIG
-# map for DNS based blacklist lookups
-Kdnsbl DNSBL_MAP -T<TMP>ifdef(`DNSBL_MAP_OPT',` DNSBL_MAP_OPT')')
-divert(-1)
-define(`_DNSBL_SRV_', `_ARG_')dnl
-define(`_DNSBL_MSG_', `ifelse(len(X`'_ARG2_),`1',`"550 Rejected: " $`'&{client_addr} " listed at '_DNSBL_SRV_`"',`_ARG2_')')dnl
-define(`_DNSBL_MSG_TMP_', `ifelse(_ARG3_,`t',`"451 Temporary lookup failure of " $`'&{client_addr} " at '_DNSBL_SRV_`"',`_ARG3_')')dnl
-divert(8)
-# DNS based IP address spam list _DNSBL_SRV_
-R$* $: $&{client_addr}
-R$-.$-.$-.$- $: <?> $(dnsbl $4.$3.$2.$1._DNSBL_SRV_. $: OK $)
-R<?>OK $: OKSOFAR
-ifelse(len(X`'_ARG3_),`1',
-`R<?>$+<TMP> $: TMPOK',
-`R<?>$+<TMP> $#error $@ 4.4.3 $: _DNSBL_MSG_TMP_')
-ifelse(`X'_ARG2_,`Xquarantine',
-`R<?>$+ $#error $@ quarantine $: _DNSBL_SRV_',
-`X'_ARG2_,`Xdiscard',
-`R<?>$+ $#discard $: _DNSBL_SRV_',
-`R<?>$+ $#error $@ 5.7.1 $: _DNSBL_MSG_')
-divert(-1)
diff --git a/contrib/sendmail/cf/feature/domaintable.m4 b/contrib/sendmail/cf/feature/domaintable.m4
deleted file mode 100644
index fadf816ca0ff..000000000000
--- a/contrib/sendmail/cf/feature/domaintable.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001-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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: domaintable.m4,v 8.24 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_DOMAIN_TABLE_', `')
-
-LOCAL_CONFIG
-# Domain table (adding domains)
-Kdomaintable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`domaintable',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=domain)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/feature/enhdnsbl.m4 b/contrib/sendmail/cf/feature/enhdnsbl.m4
deleted file mode 100644
index bb467ef3eeb3..000000000000
--- a/contrib/sendmail/cf/feature/enhdnsbl.m4
+++ /dev/null
@@ -1,53 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000-2002, 2005-2007 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-ifelse(defn(`_ARG_'), `',
- `errprint(`*** ERROR: missing argument for FEATURE(`enhdnsbl')')')
-divert(0)
-ifdef(`_EDNSBL_R_',`dnl',`dnl
-VERSIONID(`$Id: enhdnsbl.m4,v 1.12 2007/01/08 18:22:05 ca Exp $')
-LOCAL_CONFIG
-define(`_EDNSBL_R_',`')dnl
-# map for enhanced DNS based blacklist lookups
-Kednsbl dns -R A -a. -T<TMP> -r`'ifdef(`EDNSBL_TO',`EDNSBL_TO',`5')
-')
-divert(-1)
-define(`_EDNSBL_SRV_', `_ARG_')dnl
-define(`_EDNSBL_MSG_',
- `ifelse(len(X`'_ARG2_),`1',`"550 Rejected: " $`'&{client_addr} " listed at '_EDNSBL_SRV_`"',
- X`'_ARG2_,`Xquarantine',`_EDNSBL_SRV_',
- `_ARG2_')')dnl
-define(`_EDNSBL_MSG_TMP_', `ifelse(_ARG3_,`t',`"451 Temporary lookup failure of " $`'&{client_addr} " at '_EDNSBL_SRV_`"',`_ARG3_')')dnl
-define(`_EDNSBL_MATCH_', `ifelse(len(X`'_ARG4_),`1',`$`'+',_ARG4_)')dnl
-define(`_EDNSBL_ACTION_',
- `ifelse(X`'_ARG2_,`Xquarantine',`$`'#error $`'@ quarantine',
- X`'_ARG2_,`Xdiscard',`$`'#discard',
- `$`'#error $`'@ 5.7.1')')dnl
-divert(8)
-# DNS based IP address spam list _EDNSBL_SRV_
-R$* $: $&{client_addr}
-R$-.$-.$-.$- $: <?> $(ednsbl $4.$3.$2.$1._EDNSBL_SRV_. $: OK $)
-R<?>OK $: OKSOFAR
-ifelse(len(X`'_ARG3_),`1',
-`R<?>$+<TMP> $: TMPOK',
-`R<?>$+<TMP> $#error $@ 4.4.3 $: _EDNSBL_MSG_TMP_')
-R<?>_EDNSBL_MATCH_ _EDNSBL_ACTION_ $: _EDNSBL_MSG_
-ifelse(len(X`'_ARG5_),`1',`dnl',
-`R<?>_ARG5_ _EDNSBL_ACTION_ $: _EDNSBL_MSG_')
-ifelse(len(X`'_ARG6_),`1',`dnl',
-`R<?>_ARG6_ _EDNSBL_ACTION_ $: _EDNSBL_MSG_')
-ifelse(len(X`'_ARG7_),`1',`dnl',
-`R<?>_ARG7_ _EDNSBL_ACTION_ $: _EDNSBL_MSG_')
-ifelse(len(X`'_ARG8_),`1',`dnl',
-`R<?>_ARG8_ _EDNSBL_ACTION_ $: _EDNSBL_MSG_')
-ifelse(len(X`'_ARG9_),`1',`dnl',
-`R<?>_ARG9_ _EDNSBL_ACTION_ $: _EDNSBL_MSG_')
-divert(-1)
diff --git a/contrib/sendmail/cf/feature/generics_entire_domain.m4 b/contrib/sendmail/cf/feature/generics_entire_domain.m4
deleted file mode 100644
index fab586af110c..000000000000
--- a/contrib/sendmail/cf/feature/generics_entire_domain.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: generics_entire_domain.m4,v 8.1 1999/03/16 00:43:05 ca Exp $')
-divert(-1)
-
-define(`_GENERICS_ENTIRE_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/genericstable.m4 b/contrib/sendmail/cf/feature/genericstable.m4
deleted file mode 100644
index dfdfeac86272..000000000000
--- a/contrib/sendmail/cf/feature/genericstable.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001-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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: genericstable.m4,v 8.23 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_GENERICS_TABLE_', `')
-
-LOCAL_CONFIG
-# Generics table (mapping outgoing addresses)
-Kgenerics ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`genericstable',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=generics)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/feature/greet_pause.m4 b/contrib/sendmail/cf/feature/greet_pause.m4
deleted file mode 100644
index 1dddb58e5054..000000000000
--- a/contrib/sendmail/cf/feature/greet_pause.m4
+++ /dev/null
@@ -1,44 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2004 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: greet_pause.m4,v 1.4 2004/07/06 20:49:51 ca Exp $')
-divert(-1)
-
-ifelse(len(X`'_ARG_),`1',`ifdef(`_ACCESS_TABLE_', `',
- `errprint(`*** ERROR: FEATURE(`greet_pause') requires FEATURE(`access_db')
-')')')
-
-define(`_GREET_PAUSE_', `')
-
-LOCAL_RULESETS
-######################################################################
-### greet_pause: lookup pause time before 220 greeting
-###
-### Parameters:
-### $1: {client_name}
-### $2: {client_addr}
-######################################################################
-SLocal_greet_pause
-Sgreet_pause
-R$* $: <$1><?> $| $>"Local_greet_pause" $1
-R<$*><?> $| $#$* $#$2
-R<$*><?> $| $* $: $1
-ifdef(`_ACCESS_TABLE_', `dnl
-R$+ $| $+ $: $>D < $1 > <?> <! GreetPause> < $2 >
-R $| $+ $: $>A < $1 > <?> <! GreetPause> <> empty client_name
-R<?> <$+> $: $>A < $1 > <?> <! GreetPause> <> no: another lookup
-ifelse(len(X`'_ARG_),`1',
-`R<?> <$*> $@',
-`R<?> <$*> $# _ARG_')
-R<$* <TMPF>> <$*> $@
-R<$+> <$*> $# $1',`dnl
-R$* $# _ARG_')
diff --git a/contrib/sendmail/cf/feature/ldap_routing.m4 b/contrib/sendmail/cf/feature/ldap_routing.m4
deleted file mode 100644
index a474f17fbe4a..000000000000
--- a/contrib/sendmail/cf/feature/ldap_routing.m4
+++ /dev/null
@@ -1,46 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999-2002, 2004, 2007 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: ldap_routing.m4,v 8.15 2007/05/01 17:38:25 ca Exp $')
-divert(-1)
-
-# Check first two arguments. If they aren't set, may need to warn in proto.m4
-ifelse(len(X`'_ARG1_), `1', `define(`_LDAP_ROUTING_WARN_', `yes')')
-ifelse(len(X`'_ARG2_), `1', `define(`_LDAP_ROUTING_WARN_', `yes')')
-ifelse(len(X`'_ARG5_), `1', `', `define(`_LDAP_ROUTE_NODOMAIN_', `yes')')
-
-# Check for third argument to indicate how to deal with non-existant
-# LDAP records
-ifelse(len(X`'_ARG3_), `1', `define(`_LDAP_ROUTING_', `_PASS_THROUGH_')',
- _ARG3_, `passthru', `define(`_LDAP_ROUTING_', `_PASS_THROUGH_')',
- _ARG3_, `sendertoo', `define(`_LDAP_ROUTING_', `_MUST_EXIST_')define(`_LDAP_SENDER_MUST_EXIST_')',
- `define(`_LDAP_ROUTING_', `_MUST_EXIST_')')
-
-# Check for fourth argument to indicate how to deal with +detail info
-ifelse(len(X`'_ARG4_), `1', `',
- _ARG4_, `strip', `define(`_LDAP_ROUTE_DETAIL_', `_STRIP_')',
- _ARG4_, `preserve', `define(`_LDAP_ROUTE_DETAIL_', `_PRESERVE_')')
-
-# Check for sixth argument to indicate how to deal with tempfails
-ifelse(len(X`'_ARG6_), `1', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')',
- _ARG6_, `tempfail', `define(`_LDAP_ROUTE_MAPTEMP_', `_TEMPFAIL_')',
- _ARG6_, `queue', `define(`_LDAP_ROUTE_MAPTEMP_', `_QUEUE_')')
-
-LOCAL_CONFIG
-# LDAP routing maps
-Kldapmh ifelse(len(X`'_ARG1_), `1',
- `ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))',
- `_ARG1_')
-
-Kldapmra ifelse(len(X`'_ARG2_), `1',
- `ldap -1 -T<TMPF> -v mailRoutingAddress -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))',
- `_ARG2_')
diff --git a/contrib/sendmail/cf/feature/limited_masquerade.m4 b/contrib/sendmail/cf/feature/limited_masquerade.m4
deleted file mode 100644
index f86ebd4567c9..000000000000
--- a/contrib/sendmail/cf/feature/limited_masquerade.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: limited_masquerade.m4,v 8.9 1999/02/07 07:26:09 gshapiro Exp $')
-divert(-1)
-
-define(`_LIMITED_MASQUERADE_', 1)
diff --git a/contrib/sendmail/cf/feature/local_lmtp.m4 b/contrib/sendmail/cf/feature/local_lmtp.m4
deleted file mode 100644
index 6f3888add2bc..000000000000
--- a/contrib/sendmail/cf/feature/local_lmtp.m4
+++ /dev/null
@@ -1,28 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000, 2002 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: local_lmtp.m4,v 8.17 2002/11/17 04:41:04 ca Exp $')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** FEATURE(local_lmtp) must occur before MAILER(local)
-')')dnl
-
-define(`LOCAL_MAILER_PATH',
- ifelse(defn(`_ARG_'), `',
- ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/mail.local',
- _ARG_))
-define(`LOCAL_MAILER_FLAGS', `PSXmnz9')
-define(`LOCAL_MAILER_ARGS',
- ifelse(len(X`'_ARG2_), `1', `mail.local -l', _ARG2_))
-define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `SMTP')
-define(`_LOCAL_LMTP_', `1')
diff --git a/contrib/sendmail/cf/feature/local_no_masquerade.m4 b/contrib/sendmail/cf/feature/local_no_masquerade.m4
deleted file mode 100644
index de2300f2f0e5..000000000000
--- a/contrib/sendmail/cf/feature/local_no_masquerade.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000 Sendmail, Inc. and its suppliers.
-# 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.
-#
-
-divert(0)
-VERSIONID(`$Id: local_no_masquerade.m4,v 1.2 2000/08/03 15:54:59 ca Exp $')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** MAILER(`local') must appear after FEATURE(`local_no_masquerade')')
-')dnl
-define(`_LOCAL_NO_MASQUERADE_', `1')
diff --git a/contrib/sendmail/cf/feature/local_procmail.m4 b/contrib/sendmail/cf/feature/local_procmail.m4
deleted file mode 100644
index 694c3d9ef9b8..000000000000
--- a/contrib/sendmail/cf/feature/local_procmail.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2002 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1994 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** FEATURE(local_procmail) must occur before MAILER(local)
-')')dnl
-
-define(`LOCAL_MAILER_PATH',
- ifelse(defn(`_ARG_'), `',
- ifdef(`PROCMAIL_MAILER_PATH',
- PROCMAIL_MAILER_PATH,
- `/usr/local/bin/procmail'),
- _ARG_))
-define(`LOCAL_MAILER_ARGS',
- ifelse(len(X`'_ARG2_), `1', `procmail -Y -a $h -d $u', _ARG2_))
-define(`LOCAL_MAILER_FLAGS',
- ifelse(len(X`'_ARG3_), `1', `SPfhn9', _ARG3_))
-dnl local_procmail conflicts with local_lmtp but the latter might be
-dnl defined in an OS/ file (solaris8). Let's just undefine it.
-undefine(`_LOCAL_LMTP_')
-undefine(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE')
diff --git a/contrib/sendmail/cf/feature/lookupdotdomain.m4 b/contrib/sendmail/cf/feature/lookupdotdomain.m4
deleted file mode 100644
index f8c2a31f3022..000000000000
--- a/contrib/sendmail/cf/feature/lookupdotdomain.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: lookupdotdomain.m4,v 1.1 2000/04/13 22:32:49 ca Exp $')
-divert(-1)
-
-ifdef(`_ACCESS_TABLE_',
- `define(`_LOOKUPDOTDOMAIN_')',
- `errprint(`*** ERROR: FEATURE(`lookupdotdomain') requires FEATURE(`access_db')
-')')
-ifdef(`_RELAY_HOSTS_ONLY_',
- `errprint(`*** WARNING: FEATURE(`lookupdotdomain') does not work well with FEATURE(`relay_hosts_only')
-')')
diff --git a/contrib/sendmail/cf/feature/loose_relay_check.m4 b/contrib/sendmail/cf/feature/loose_relay_check.m4
deleted file mode 100644
index abd1b9c9ff68..000000000000
--- a/contrib/sendmail/cf/feature/loose_relay_check.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: loose_relay_check.m4,v 8.6 1999/02/07 07:26:10 gshapiro Exp $')
-divert(-1)
-
-define(`_LOOSE_RELAY_CHECK_', 1)
diff --git a/contrib/sendmail/cf/feature/mailertable.m4 b/contrib/sendmail/cf/feature/mailertable.m4
deleted file mode 100644
index e3e1d0344b8b..000000000000
--- a/contrib/sendmail/cf/feature/mailertable.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001-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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: mailertable.m4,v 8.25 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_MAILER_TABLE_', `')
-
-LOCAL_CONFIG
-# Mailer table (overriding domains)
-Kmailertable ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`mailertable',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=mailer)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 b/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
deleted file mode 100644
index e2bcc650616e..000000000000
--- a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: masquerade_entire_domain.m4,v 8.9 1999/02/07 07:26:10 gshapiro Exp $')
-divert(-1)
-
-define(`_MASQUERADE_ENTIRE_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/masquerade_envelope.m4 b/contrib/sendmail/cf/feature/masquerade_envelope.m4
deleted file mode 100644
index 74d3aa056096..000000000000
--- a/contrib/sendmail/cf/feature/masquerade_envelope.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: masquerade_envelope.m4,v 8.9 1999/02/07 07:26:10 gshapiro Exp $')
-divert(-1)
-
-define(`_MASQUERADE_ENVELOPE_', 1)
diff --git a/contrib/sendmail/cf/feature/msp.m4 b/contrib/sendmail/cf/feature/msp.m4
deleted file mode 100644
index 6ecf3342555a..000000000000
--- a/contrib/sendmail/cf/feature/msp.m4
+++ /dev/null
@@ -1,78 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000-2002, 2004 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)dnl
-VERSIONID(`$Id: msp.m4,v 1.33 2004/02/09 22:32:38 ca Exp $')
-divert(-1)
-undefine(`ALIAS_FILE')
-define(`confDELIVERY_MODE', `i')
-define(`confUSE_MSP', `True')
-define(`confFORWARD_PATH', `')
-define(`confPRIVACY_FLAGS', `goaway,noetrn,restrictqrun')
-define(`confDONT_PROBE_INTERFACES', `True')
-dnl ---------------------------------------------
-dnl run as this user (even if called by root)
-ifdef(`confRUN_AS_USER',,`define(`confRUN_AS_USER', `smmsp')')
-ifdef(`confTRUSTED_USER',,`define(`confTRUSTED_USER',
-`ifelse(index(confRUN_AS_USER,`:'), -1, `confRUN_AS_USER',
-`substr(confRUN_AS_USER,0,index(confRUN_AS_USER,`:'))')')')
-dnl ---------------------------------------------
-dnl This queue directory must have the same group
-dnl as sendmail and it must be group-writable.
-dnl notice: do not test for QUEUE_DIR, it is set in some ostype/*.m4 files
-ifdef(`MSP_QUEUE_DIR',
-`define(`QUEUE_DIR', `MSP_QUEUE_DIR')',
-`define(`QUEUE_DIR', `/var/spool/clientmqueue')')
-define(`_MTA_HOST_', ifelse(defn(`_ARG_'), `', `[localhost]', `_ARG_'))
-define(`_MSP_FQHN_',`dnl used to qualify addresses
-ifdef(`MASQUERADE_NAME', ifdef(`_MASQUERADE_ENVELOPE_', `$M', `$j'), `$j')')
-ifelse(_ARG2_, `MSA', `define(`RELAY_MAILER_ARGS', `TCP $h 587')')
-dnl ---------------------------------------------
-ifdef(`confPID_FILE', `dnl',
-`define(`confPID_FILE', QUEUE_DIR`/sm-client.pid')')
-define(`confQUEUE_FILE_MODE', `0660')dnl
-ifdef(`STATUS_FILE',
-`define(`_F_',
-`define(`_b_', index(STATUS_FILE, `sendmail.st'))ifelse(_b_, `-1', `STATUS_FILE', `substr(STATUS_FILE, 0, _b_)sm-client.st')')
-define(`STATUS_FILE', _F_)
-undefine(`_b_') undefine(`_F_')',
-`define(`STATUS_FILE', QUEUE_DIR`/sm-client.st')')
-FEATURE(`no_default_msa')dnl
-ifelse(defn(`_DPO_'), `',
-`DAEMON_OPTIONS(`Name=NoMTA, Addr=127.0.0.1, M=E')dnl')
-define(`_DEF_LOCAL_MAILER_FLAGS', `')dnl
-define(`_DEF_LOCAL_SHELL_FLAGS', `')dnl
-define(`LOCAL_MAILER_PATH', `[IPC]')dnl
-define(`LOCAL_MAILER_FLAGS', `lmDFMuXkw5')dnl
-define(`LOCAL_MAILER_ARGS', `TCP $h')dnl
-define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `SMTP')dnl
-define(`LOCAL_SHELL_PATH', `[IPC]')dnl
-define(`LOCAL_SHELL_FLAGS', `lmDFMuXk5')dnl
-define(`LOCAL_SHELL_ARGS', `TCP $h')dnl
-MODIFY_MAILER_FLAGS(`SMTP', `+k5')dnl
-MODIFY_MAILER_FLAGS(`ESMTP', `+k5')dnl
-MODIFY_MAILER_FLAGS(`DSMTP', `+k5')dnl
-MODIFY_MAILER_FLAGS(`SMTP8', `+k5')dnl
-MODIFY_MAILER_FLAGS(`RELAY', `+k')dnl
-MAILER(`local')dnl
-MAILER(`smtp')dnl
-
-LOCAL_CONFIG
-D{MTAHost}_MTA_HOST_
-
-LOCAL_RULESETS
-SLocal_localaddr
-R$+ $: $>ParseRecipient $1
-R$* < @ $+ > $* $#relay $@ ${MTAHost} $: $1 < @ $2 > $3
-ifdef(`_USE_DECNET_SYNTAX_',
-`# DECnet
-R$+ :: $+ $#relay $@ ${MTAHost} $: $1 :: $2', `dnl')
-R$* $#relay $@ ${MTAHost} $: $1 < @ _MSP_FQHN_ >
diff --git a/contrib/sendmail/cf/feature/mtamark.m4 b/contrib/sendmail/cf/feature/mtamark.m4
deleted file mode 100644
index c306c44e3ed7..000000000000
--- a/contrib/sendmail/cf/feature/mtamark.m4
+++ /dev/null
@@ -1,33 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2004, 2005 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-ifdef(`_MTAMARK_R',`dnl',`dnl
-VERSIONID(`$Id: mtamark.m4,v 1.2 2005/07/25 20:56:53 ca Exp $')
-LOCAL_CONFIG
-define(`_MTAMARK_R',`')dnl
-# map for MTA mark
-Kmtamark dns -R TXT -a. -T<TMP> -r`'ifdef(`MTAMARK_TO',`MTAMARK_TO',`5')
-')
-divert(-1)
-define(`_MTAMARK_RR_', `ifelse(len(X`'_ARG3_),`1',`_perm._smtp._srv',`_ARG3_')')dnl
-define(`_MTAMARK_MSG_', `ifelse(len(X`'_ARG_),`1',`"550 Rejected: " $`'&{client_addr} " not listed as MTA"',`_ARG_')')dnl
-define(`_MTAMARK_MSG_TMP_', `ifelse(_ARG2_,`t',`"451 Temporary lookup failure of " _MTAMARK_RR_.$`'&{client_addr}',`_ARG2_')')dnl
-divert(8)
-# DNS based IP MTA list
-R$* $: $&{client_addr}
-R$-.$-.$-.$- $: <?> $(mtamark _MTAMARK_RR_.$4.$3.$2.$1.in-addr.arpa. $: OK $)
-R<?>1. $: OKSOFAR
-R<?>0. $#error $@ 5.7.1 $: _MTAMARK_MSG_
-ifelse(len(X`'_ARG2_),`1',
-`R<?>$+<TMP> $: TMPOK',
-`R<?>$+<TMP> $#error $@ 4.4.3 $: _MTAMARK_MSG_TMP_')
-divert(-1)
diff --git a/contrib/sendmail/cf/feature/no_default_msa.m4 b/contrib/sendmail/cf/feature/no_default_msa.m4
deleted file mode 100644
index 5a053399fc35..000000000000
--- a/contrib/sendmail/cf/feature/no_default_msa.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999-2000 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $')
-divert(-1)
-
-define(`_NO_MSA_', `1')
diff --git a/contrib/sendmail/cf/feature/nocanonify.m4 b/contrib/sendmail/cf/feature/nocanonify.m4
deleted file mode 100644
index 05baa7a47b45..000000000000
--- a/contrib/sendmail/cf/feature/nocanonify.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: nocanonify.m4,v 8.12 1999/08/28 00:42:01 ca Exp $')
-divert(-1)
-
-define(`_NO_CANONIFY_', 1)
-ifelse(defn(`_ARG_'), `', `',
- strcasecmp(defn(`_ARG_'), `canonify_hosts'), `1',
- `define(`_CANONIFY_HOSTS_', 1)',
- `errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`nocanonify')
-')')
diff --git a/contrib/sendmail/cf/feature/notsticky.m4 b/contrib/sendmail/cf/feature/notsticky.m4
deleted file mode 100644
index 1cecca5f13e3..000000000000
--- a/contrib/sendmail/cf/feature/notsticky.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: notsticky.m4,v 8.11 1999/02/07 07:26:11 gshapiro Exp $')
-#
-# This is now the default. Use ``FEATURE(stickyhost)'' if you want
-# the old default behaviour.
-#
-divert(-1)
diff --git a/contrib/sendmail/cf/feature/nouucp.m4 b/contrib/sendmail/cf/feature/nouucp.m4
deleted file mode 100644
index a03104964dd2..000000000000
--- a/contrib/sendmail/cf/feature/nouucp.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: nouucp.m4,v 8.13 1999/11/24 18:37:07 ca Exp $')
-divert(-1)
-
-ifelse(defn(`_ARG_'), `',
- `errprint(`*** ERROR: missing argument for FEATURE(nouucp):
- use `reject' or `nospecial'. See cf/README.
-')define(`_NO_UUCP_', `e')',
- substr(_ARG_,0,1), `r', `define(`_NO_UUCP_', `r')',
- substr(_ARG_,0,1), `n', `define(`_NO_UUCP_', `n')',
- `errprint(`*** ERROR: illegal argument _ARG_ for FEATURE(nouucp)
-')
- ')
diff --git a/contrib/sendmail/cf/feature/nullclient.m4 b/contrib/sendmail/cf/feature/nullclient.m4
deleted file mode 100644
index 8f35ca1c167f..000000000000
--- a/contrib/sendmail/cf/feature/nullclient.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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.
-#
-#
-ifelse(defn(`_ARG_'), `', `errprint(`Feature "nullclient" requires argument')',
- `define(`_NULL_CLIENT_', _ARG_)')
-
-#
-# This is used only for relaying mail from a client to a hub when
-# that client does absolutely nothing else -- i.e., it is a "null
-# mailer". In this sense, it acts like the "R" option in Sun
-# sendmail.
-#
-
-divert(0)
-VERSIONID(`$Id: nullclient.m4,v 8.24 2000/09/17 17:30:00 gshapiro Exp $')
-divert(-1)
-
-undefine(`ALIAS_FILE')
-define(`MAIL_HUB', _NULL_CLIENT_)
-define(`SMART_HOST', _NULL_CLIENT_)
-define(`confFORWARD_PATH', `')
-ifdef(`confFROM_HEADER',, `define(`confFROM_HEADER', `<$g>')')
-define(`_DEF_LOCAL_MAILER_FLAGS', `lsDFM5q')
-MASQUERADE_AS(_NULL_CLIENT_)
-FEATURE(`allmasquerade')
-FEATURE(`masquerade_envelope')
-MAILER(`local')
-MAILER(`smtp')
diff --git a/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4 b/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4
deleted file mode 100644
index bb603a607ba4..000000000000
--- a/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: preserve_local_plus_detail.m4,v 8.1 2000/04/10 05:48:05 gshapiro Exp $')
-divert(-1)
-
-define(`_PRESERVE_LOCAL_PLUS_DETAIL_', `1')
diff --git a/contrib/sendmail/cf/feature/preserve_luser_host.m4 b/contrib/sendmail/cf/feature/preserve_luser_host.m4
deleted file mode 100644
index 837da99febcb..000000000000
--- a/contrib/sendmail/cf/feature/preserve_luser_host.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000, 2002 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: preserve_luser_host.m4,v 1.3 2002/04/14 13:22:58 ca Exp $')
-divert(-1)
-
-ifdef(`LUSER_RELAY', `',
-`errprint(`*** LUSER_RELAY should be defined before FEATURE(`preserve_luser_host')
- ')')
-define(`_PRESERVE_LUSER_HOST_', `1')
-define(`_NEED_MACRO_MAP_', `1')
diff --git a/contrib/sendmail/cf/feature/promiscuous_relay.m4 b/contrib/sendmail/cf/feature/promiscuous_relay.m4
deleted file mode 100644
index 17cb7d1d8b0f..000000000000
--- a/contrib/sendmail/cf/feature/promiscuous_relay.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-1999, 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: promiscuous_relay.m4,v 8.12 2001/02/06 17:14:35 ca Exp $')
-divert(-1)
-
-define(`_PROMISCUOUS_RELAY_', 1)
-errprint(`*** WARNING: FEATURE(`promiscuous_relay') configures your system as open
- relay. Do NOT use it on a server that is connected to the Internet!
-')
diff --git a/contrib/sendmail/cf/feature/queuegroup.m4 b/contrib/sendmail/cf/feature/queuegroup.m4
deleted file mode 100644
index 06715a0f3f8f..000000000000
--- a/contrib/sendmail/cf/feature/queuegroup.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: queuegroup.m4,v 1.4 2001/03/28 00:39:39 ca Exp $')
-divert(-1)
-
-ifdef(`_ACCESS_TABLE_', `',
- `errprint(`*** ERROR: FEATURE(`queuegroup') requires FEATURE(`access_db')
-')')
-
-LOCAL_RULESETS
-Squeuegroup
-R< $+ > $1
-R $+ @ $+ $: $>SearchList <! qgrp> $| <F:$1@$2> <D:$2> <>
-ifelse(len(X`'_ARG_),`1',
-`R<?> $@',
-`R<?> $# _ARG_')
-R<$+> $# $1
diff --git a/contrib/sendmail/cf/feature/ratecontrol.m4 b/contrib/sendmail/cf/feature/ratecontrol.m4
deleted file mode 100644
index e3389c0c1b41..000000000000
--- a/contrib/sendmail/cf/feature/ratecontrol.m4
+++ /dev/null
@@ -1,36 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2003, 2004 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: ratecontrol.m4,v 1.5 2004/02/19 21:31:47 ca Exp $')
-
-divert(-1)
-ifdef(`_ACCESS_TABLE_', `
- define(`_RATE_CONTROL_', `1')
- ifelse(defn(`_ARG_'), `', `',
- strcasecmp(defn(`_ARG_'), `nodelay'), `1',
- `ifdef(`_DELAY_CHECKS_',
- `
- define(`_RATE_CONTROL_IMMEDIATE_', `1')
- define(`_CONTROL_IMMEDIATE_', `1')
- ',
- `errprint(`*** ERROR: FEATURE(`ratecontrol', `nodelay') requires FEATURE(`delay_checks')')'
- )',
- `errprint(`*** ERROR: unknown parameter '"defn(`_ARG_')"` for FEATURE(`ratecontrol')')')
- define(`_FFR_SRCHLIST_A', `1')
- ifelse(len(X`'_ARG2_), `1', `',
- _ARG2_, `terminate', `define(`_RATE_CONTROL_REPLY', `421')',
- `errprint(`*** ERROR: FEATURE(`ratecontrol'): unknown argument '"_ARG2_"
-)'
- )
- ', `errprint(`*** ERROR: FEATURE(`ratecontrol') requires FEATURE(`access_db')
-')')
-ifdef(`_RATE_CONTROL_REPLY',,`define(`_RATE_CONTROL_REPLY', `452')')
diff --git a/contrib/sendmail/cf/feature/redirect.m4 b/contrib/sendmail/cf/feature/redirect.m4
deleted file mode 100644
index e167865efefa..000000000000
--- a/contrib/sendmail/cf/feature/redirect.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $')
-divert(-1)
-
-LOCAL_RULE_0
-# addresses sent to foo@host.REDIRECT will give a 551 error code
-R$* < @ $+ .REDIRECT. > $: $1 < @ $2 . REDIRECT . > < ${opMode} >
-R$* < @ $+ .REDIRECT. > <i> $: $1 < @ $2 . REDIRECT. >
-R$* < @ $+ .REDIRECT. > < $- > $#error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2>
-
-LOCAL_CONFIG
-CPREDIRECT
diff --git a/contrib/sendmail/cf/feature/relay_based_on_MX.m4 b/contrib/sendmail/cf/feature/relay_based_on_MX.m4
deleted file mode 100644
index 872680a480f5..000000000000
--- a/contrib/sendmail/cf/feature/relay_based_on_MX.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: relay_based_on_MX.m4,v 8.11 1999/04/02 02:25:13 gshapiro Exp $')
-divert(-1)
-
-define(`_RELAY_MX_SERVED_', 1)
-
-LOCAL_CONFIG
-# MX map (to allow relaying to hosts that we MX for)
-Kmxserved bestmx -z: -T<TEMP>
-
diff --git a/contrib/sendmail/cf/feature/relay_entire_domain.m4 b/contrib/sendmail/cf/feature/relay_entire_domain.m4
deleted file mode 100644
index a720b167f279..000000000000
--- a/contrib/sendmail/cf/feature/relay_entire_domain.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: relay_entire_domain.m4,v 8.10 1999/02/07 07:26:12 gshapiro Exp $')
-divert(-1)
-
-define(`_RELAY_ENTIRE_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/relay_hosts_only.m4 b/contrib/sendmail/cf/feature/relay_hosts_only.m4
deleted file mode 100644
index 867d4eda6408..000000000000
--- a/contrib/sendmail/cf/feature/relay_hosts_only.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: relay_hosts_only.m4,v 8.10 1999/02/07 07:26:12 gshapiro Exp $')
-divert(-1)
-
-define(`_RELAY_HOSTS_ONLY_', 1)
diff --git a/contrib/sendmail/cf/feature/relay_local_from.m4 b/contrib/sendmail/cf/feature/relay_local_from.m4
deleted file mode 100644
index 9858eb8e3b90..000000000000
--- a/contrib/sendmail/cf/feature/relay_local_from.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-1999, 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: relay_local_from.m4,v 8.6 2001/02/06 15:55:21 ca Exp $')
-divert(-1)
-
-define(`_RELAY_LOCAL_FROM_', 1)
-errprint(`*** WARNING: FEATURE(`relay_local_from') may cause your system to act as open
- relay. Use SMTP AUTH or STARTTLS instead. If you cannot use those,
- try FEATURE(`relay_mail_from').
-')
diff --git a/contrib/sendmail/cf/feature/relay_mail_from.m4 b/contrib/sendmail/cf/feature/relay_mail_from.m4
deleted file mode 100644
index 44bcbd670ec5..000000000000
--- a/contrib/sendmail/cf/feature/relay_mail_from.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999, 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: relay_mail_from.m4,v 8.3 2001/02/06 16:07:12 ca Exp $')
-divert(-1)
-
-ifdef(`_ACCESS_TABLE_',
- `define(`_RELAY_DB_FROM_', 1)
- ifelse(_ARG_,`domain',`define(`_RELAY_DB_FROM_DOMAIN_', 1)')',
- `errprint(`*** ERROR: FEATURE(`relay_mail_from') requires FEATURE(`access_db')
-')')
-errprint(`*** WARNING: FEATURE(`relay_mail_from') may cause your system to act as open
- relay. Use SMTP AUTH or STARTTLS instead.
-')
diff --git a/contrib/sendmail/cf/feature/require_rdns.m4 b/contrib/sendmail/cf/feature/require_rdns.m4
deleted file mode 100644
index 4c70d3a68c72..000000000000
--- a/contrib/sendmail/cf/feature/require_rdns.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2006 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)dnl
-VERSIONID(`$Id: require_rdns.m4,v 1.1 2006/06/15 22:49:30 ca Exp $')
-divert(-1)
-
-define(`_REQUIRE_RDNS_', `')
diff --git a/contrib/sendmail/cf/feature/smrsh.m4 b/contrib/sendmail/cf/feature/smrsh.m4
deleted file mode 100644
index 2159ff8580a0..000000000000
--- a/contrib/sendmail/cf/feature/smrsh.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: smrsh.m4,v 8.14 1999/11/18 05:06:23 ca Exp $')
-divert(-1)
-
-ifdef(`_MAILER_local_',
- `errprint(`*** FEATURE(smrsh) must occur before MAILER(local)
-')')dnl
-define(`LOCAL_SHELL_PATH',
- ifelse(defn(`_ARG_'), `',
- ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/smrsh',
- _ARG_))
-_DEFIFNOT(`LOCAL_SHELL_ARGS', `smrsh -c $u')
diff --git a/contrib/sendmail/cf/feature/stickyhost.m4 b/contrib/sendmail/cf/feature/stickyhost.m4
deleted file mode 100644
index 1e95be44bcc2..000000000000
--- a/contrib/sendmail/cf/feature/stickyhost.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: stickyhost.m4,v 8.9 1999/02/07 07:26:13 gshapiro Exp $')
-divert(-1)
-
-define(`_STICKY_LOCAL_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/use_client_ptr.m4 b/contrib/sendmail/cf/feature/use_client_ptr.m4
deleted file mode 100644
index 918dff13c651..000000000000
--- a/contrib/sendmail/cf/feature/use_client_ptr.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2004 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: use_client_ptr.m4,v 1.1 2004/04/20 22:27:14 ca Exp $')
-divert(-1)
-
-# if defined, check_relay will use {client_ptr} instead of whatever
-# is passed in as its first argument.
-
-define(`_USE_CLIENT_PTR_', `1')
-
-divert(0)
diff --git a/contrib/sendmail/cf/feature/use_ct_file.m4 b/contrib/sendmail/cf/feature/use_ct_file.m4
deleted file mode 100644
index 9e372ec567ca..000000000000
--- a/contrib/sendmail/cf/feature/use_ct_file.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: use_ct_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $')
-divert(-1)
-
-# if defined, the sendmail.cf will read the /etc/mail/trusted-users file to
-# find the names of trusted users. There should only be a few of these.
-
-define(`_USE_CT_FILE_', `')
-
-divert(0)
diff --git a/contrib/sendmail/cf/feature/use_cw_file.m4 b/contrib/sendmail/cf/feature/use_cw_file.m4
deleted file mode 100644
index 7058cab1417d..000000000000
--- a/contrib/sendmail/cf/feature/use_cw_file.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $')
-divert(-1)
-
-# if defined, the sendmail.cf will read the /etc/mail/local-host-names file
-# to find alternate names for this host. Typically only used when several
-# hosts have been squashed into one another at high speed.
-
-define(`USE_CW_FILE', `')
-
-divert(0)
diff --git a/contrib/sendmail/cf/feature/uucpdomain.m4 b/contrib/sendmail/cf/feature/uucpdomain.m4
deleted file mode 100644
index c6fbc5cc3a64..000000000000
--- a/contrib/sendmail/cf/feature/uucpdomain.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001-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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: uucpdomain.m4,v 8.29 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_UUDOMAIN_TABLE_', `')
-
-LOCAL_CONFIG
-# UUCP domain table
-Kuudomain ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`uudomain',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=uucpdomain)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/feature/virtuser_entire_domain.m4 b/contrib/sendmail/cf/feature/virtuser_entire_domain.m4
deleted file mode 100644
index 5a1d9f0e9fab..000000000000
--- a/contrib/sendmail/cf/feature/virtuser_entire_domain.m4
+++ /dev/null
@@ -1,16 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: virtuser_entire_domain.m4,v 8.2 1999/03/16 00:43:05 ca Exp $')
-divert(-1)
-
-define(`_VIRTUSER_ENTIRE_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/virtusertable.m4 b/contrib/sendmail/cf/feature/virtusertable.m4
deleted file mode 100644
index 1717b663b20e..000000000000
--- a/contrib/sendmail/cf/feature/virtusertable.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001-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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: virtusertable.m4,v 8.23 2002/06/27 23:23:57 gshapiro Exp $')
-divert(-1)
-
-define(`_VIRTUSER_TABLE_', `')
-
-LOCAL_CONFIG
-# Virtual user table (maps incoming users)
-Kvirtuser ifelse(defn(`_ARG_'), `', DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`virtusertable',
- defn(`_ARG_'), `LDAP', `ldap -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject -k (&(objectClass=sendmailMTAMapObject)(|(sendmailMTACluster=${sendmailMTACluster})(sendmailMTAHost=$j))(sendmailMTAMapName=virtuser)(sendmailMTAKey=%0))',
- `_ARG_')
diff --git a/contrib/sendmail/cf/hack/cssubdomain.m4 b/contrib/sendmail/cf/hack/cssubdomain.m4
deleted file mode 100644
index 9b0e76a2eb43..000000000000
--- a/contrib/sendmail/cf/hack/cssubdomain.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-divert(0)
-VERSIONID(`$Id: cssubdomain.m4,v 8.9 1999/02/07 07:26:14 gshapiro Exp $')
-
-divert(2)
-# find possible (old & new) versions of our name via short circuit hack
-# (this code should exist ONLY during the transition from .Berkeley.EDU
-# names to .CS.Berkeley.EDU names -- probably not more than a few months)
-R$* < @ $=w .CS.Berkeley.EDU > $* $: $1 < @ $j > $3
-R$* < @ $=w .Berkeley.EDU> $* $: $1 < @ $j > $3
-divert(0)
diff --git a/contrib/sendmail/cf/m4/cf.m4 b/contrib/sendmail/cf/m4/cf.m4
deleted file mode 100644
index 4f5712b1df88..000000000000
--- a/contrib/sendmail/cf/m4/cf.m4
+++ /dev/null
@@ -1,29 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1983, 1995 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 file is included so that multiple includes of cf.m4 will work
-#
-
-# figure out where the CF files live
-ifdef(`_CF_DIR_', `',
- `ifelse(__file__, `__file__',
- `define(`_CF_DIR_', `../')',
- `define(`_CF_DIR_',
- substr(__file__, 0, eval(len(__file__) - 8)))')')
-
-divert(0)dnl
-ifdef(`OSTYPE', `dnl',
-`include(_CF_DIR_`'m4/cfhead.m4)dnl
-VERSIONID(`$Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $')')
diff --git a/contrib/sendmail/cf/m4/cfhead.m4 b/contrib/sendmail/cf/m4/cfhead.m4
deleted file mode 100644
index 9ccaa244887c..000000000000
--- a/contrib/sendmail/cf/m4/cfhead.m4
+++ /dev/null
@@ -1,309 +0,0 @@
-#
-# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1983, 1995 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.
-#
-#
-
-######################################################################
-######################################################################
-#####
-##### SENDMAIL CONFIGURATION FILE
-#####
-ifdef(`__win32__', `dnl', `dnl
-ifdef(`TEMPFILE', `dnl', `define(`TEMPFILE', maketemp(/tmp/cfXXXXXX))dnl
-syscmd(sh _CF_DIR_`'sh/makeinfo.sh _CF_DIR_ > TEMPFILE)dnl
-include(TEMPFILE)dnl
-syscmd(rm -f TEMPFILE)dnl')')
-#####
-######################################################################
-#####
-##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
-#####
-######################################################################
-######################################################################
-
-divert(-1)
-
-changecom()
-undefine(`format')
-undefine(`hpux')
-ifdef(`pushdef', `',
- `errprint(`You need a newer version of M4, at least as new as
-System V or GNU')
- include(NoSuchFile)')
-define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
-define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
-define(`OSTYPE',
- `PUSHDIVERT(-1)
- ifdef(`__OSTYPE__', `errprint(`duplicate OSTYPE'($1)
-)')
- define(`__OSTYPE__', $1)
- define(`_ARG_', $2)
- include(_CF_DIR_`'ostype/$1.m4)POPDIVERT`'')
-## helpful functions
-define(`lower', `translit(`$1', `ABCDEFGHIJKLMNOPQRSTUVWXYZ', `abcdefghijklmnopqrstuvwx')')
-define(`strcasecmp', `ifelse(lower($1), lower($2), `1', `0')')
-## access to further arguments in FEATURE/HACK
-define(`_ACC_ARG_1_',`$1')
-define(`_ACC_ARG_2_',`$2')
-define(`_ACC_ARG_3_',`$3')
-define(`_ACC_ARG_4_',`$4')
-define(`_ACC_ARG_5_',`$5')
-define(`_ACC_ARG_6_',`$6')
-define(`_ACC_ARG_7_',`$7')
-define(`_ACC_ARG_8_',`$8')
-define(`_ACC_ARG_9_',`$9')
-define(`_ARG1_',`_ACC_ARG_1_(_ARGS_)')
-define(`_ARG2_',`_ACC_ARG_2_(_ARGS_)')
-define(`_ARG3_',`_ACC_ARG_3_(_ARGS_)')
-define(`_ARG4_',`_ACC_ARG_4_(_ARGS_)')
-define(`_ARG5_',`_ACC_ARG_5_(_ARGS_)')
-define(`_ARG6_',`_ACC_ARG_6_(_ARGS_)')
-define(`_ARG7_',`_ACC_ARG_7_(_ARGS_)')
-define(`_ARG8_',`_ACC_ARG_8_(_ARGS_)')
-define(`_ARG9_',`_ACC_ARG_9_(_ARGS_)')
-dnl define if not yet defined: if `$1' is not defined it will be `$2'
-define(`_DEFIFNOT',`ifdef(`$1',`',`define(`$1',`$2')')')
-dnl ----------------------------------------
-dnl add a char $2 to a string $1 if it is not there
-define(`_ADDCHAR_',`define(`_I_',`eval(index(`$1',`$2') >= 0)')`'ifelse(_I_,`1',`$1',`$1$2')')
-dnl ----
-dnl delete a char $2 from a string $1 if it is there
-define(`_DELCHAR_',`define(`_IDX_',`index(`$1',`$2')')`'define(`_I_',`eval(_IDX_ >= 0)')`'ifelse(_I_,`1',`substr(`$1',0,_IDX_)`'substr(`$1',eval(_IDX_+1))',`$1')')
-dnl ----
-dnl apply a macro to a whole string by recursion (one char at a time)
-dnl $1: macro
-dnl $2: first argument to macro
-dnl $3: list that is split up into characters
-define(`_AP_',`ifelse(`$3',`',`$2',`_AP_(`$1',$1(`$2',substr(`$3',0,1)),substr(`$3',1))')')
-dnl ----
-dnl MODIFY_MAILER_FLAGS: append tail of $2 to $1_MF_A/D_
-dnl A if head($2) = +
-dnl D if head($2) = -
-dnl $1_MF_ is set otherwise; set _A/D_ to `'
-define(`MODIFY_MAILER_FLAGS',`define(`_hd_',`substr(`$2',0,1)')define(`_tl_',`substr(`$2',1)')`'ifelse(_hd_,`+',`ifdef($1`'_MF_A_, `define($1`'_MF_A_,$1_MF_A_`'_tl_)', `define($1`'_MF_A_, _tl_)')',_hd_,`-',`ifdef($1`'_MF_D_, `define($1`'_MF_D_,$1_MF_D_`'_tl_)', `define($1`'_MF_D_,_tl_)')',`define($1`'_MF_,`$2')define($1`'_MF_A_,`')define($1`'_MF_D_,`')')')
-dnl ----
-dnl actually modify flags:
-dnl $1: flags (strings) to modify
-dnl $2: name of flags (just first part) to modify
-dnl WARNING: the order might be important: if someone adds and delete the
-dnl same characters, he does not deserve any better, does he?
-dnl this could be coded more efficiently... (do not apply the macro if _MF_A/D_ is undefined)
-define(`_MODMF_',`ifdef($2`'_MF_,`$2_MF_',`_AP_(`_ADDCHAR_',_AP_(`_DELCHAR_',$1,ifdef($2`'_MF_D_,`$2_MF_D_',`')),ifdef($2`'_MF_A_,`$2_MF_A_',`'))')')
-dnl usage:
-dnl MODIFY_MAILER_FLAGS(`LOCAL',`+FlaGs')dnl
-dnl in MAILER.m4: _MODMF_(LMF,`LOCAL')
-dnl ----------------------------------------
-define(`MAILER',
-`define(`_M_N_', `ifelse(`$2', `', `$1', `$2')')dnl
-ifdef(`_MAILER_DEFINED_', `', `define(`_MAILER_DEFINED_', `1')')dnl
-ifdef(_MAILER_`'_M_N_`'_,
-`errprint(`*** ERROR: MAILER('_M_N_`) already included
-')',
-`define(_MAILER_`'_M_N_`'_, `')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')PUSHDIVERT(7)include(_CF_DIR_`'mailer/$1.m4)POPDIVERT`'')')
-define(`DOMAIN', `PUSHDIVERT(-1)define(`_ARG_', `$2')include(_CF_DIR_`'domain/$1.m4)POPDIVERT`'')
-define(`FEATURE', `PUSHDIVERT(-1)ifdef(`_MAILER_DEFINED_',`errprint(`*** ERROR: FEATURE() should be before MAILER()
-')')define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'feature/$1.m4)POPDIVERT`'')
-define(`HACK', `PUSHDIVERT(-1)define(`_ARG_', `$2')define(`_ARGS_', `shift($@)')include(_CF_DIR_`'hack/$1.m4)POPDIVERT`'')
-define(`_DPO_',`')
-define(`DAEMON_OPTIONS', `define(`_DPO_', defn(`_DPO_')
-O DaemonPortOptions=`$1')')
-define(`_CPO_',`')
-define(`CLIENT_OPTIONS', `define(`_CPO_', defn(`_CPO_')
-O ClientPortOptions=`$1')')
-define(`_MAIL_FILTERS_', `')
-define(`_MAIL_FILTERS_DEF', `')
-define(`MAIL_FILTER', `define(`_MAIL_FILTERS_', defn(`_MAIL_FILTERS_')
-X`'$1`, '`$2')
-define(`_MAIL_FILTERS_DEF', defn(`_MAIL_FILTERS_DEF')`X')')
-define(`INPUT_MAIL_FILTER', `MAIL_FILTER(`$1', `$2')
-ifelse(defn(`confINPUT_MAIL_FILTERS')X, `X',
-`define(`confINPUT_MAIL_FILTERS', $1)',
-`define(`confINPUT_MAIL_FILTERS', defn(`confINPUT_MAIL_FILTERS')`, '`$1')')')
-define(`_QUEUE_GROUP_', `')
-define(`QUEUE_GROUP', `define(`_QUEUE_GROUP_', defn(`_QUEUE_GROUP_')
-Q`'$1`, '`$2')')
-define(`CF_LEVEL', `10')dnl
-define(`VERSIONID', ``##### $1 #####'')
-define(`LOCAL_RULE_0', `divert(3)')
-dnl for UUCP...
-define(`LOCAL_UUCP', `divert(4)')
-define(`LOCAL_RULE_1',
-`divert(9)dnl
-#######################################
-### Ruleset 1 -- Sender Rewriting ###
-#######################################
-
-Ssender=1
-')
-define(`LOCAL_RULE_2',
-`divert(9)dnl
-##########################################
-### Ruleset 2 -- Recipient Rewriting ###
-##########################################
-
-Srecipient=2
-')
-define(`LOCAL_RULESETS',
-`divert(9)
-
-')
-define(`LOCAL_SRV_FEATURES',
-`define(`_LOCAL_SRV_FEATURES_')
-ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_SRV_FEATURES
-')')
-divert(9)
-SLocal_srv_features')
-define(`LOCAL_TRY_TLS',
-`define(`_LOCAL_TRY_TLS_')
-ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TRY_TLS
-')')
-divert(9)
-SLocal_try_tls')
-define(`LOCAL_TLS_RCPT',
-`define(`_LOCAL_TLS_RCPT_')
-ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_RCPT
-')')
-divert(9)
-SLocal_tls_rcpt')
-define(`LOCAL_TLS_CLIENT',
-`define(`_LOCAL_TLS_CLIENT_')
-ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_CLIENT
-')')
-divert(9)
-SLocal_tls_client')
-define(`LOCAL_TLS_SERVER',
-`define(`_LOCAL_TLS_SERVER_')
-ifdef(`_MAILER_DEFINED_',,`errprint(`*** WARNING: MAILER() should be before LOCAL_TLS_SERVER
-')')
-divert(9)
-SLocal_tls_server')
-define(`LOCAL_RULE_3', `divert(2)')
-define(`LOCAL_CONFIG', `divert(6)')
-define(`MAILER_DEFINITIONS', `divert(7)')
-define(`LOCAL_NET_CONFIG', `define(`_LOCAL_RULES_', 1)divert(1)')
-define(`UUCPSMTP', `R DOL(*) < @ $1 .UUCP > DOL(*) DOL(1) < @ $2 > DOL(2)')
-define(`CONCAT', `$1$2$3$4$5$6$7')
-define(`DOL', ``$'$1')
-define(`SITECONFIG',
-`CONCAT(D, $3, $2)
-define(`_CLASS_$3_', `')dnl
-ifelse($3, U, C{w}$2 $2.UUCP, `dnl')
-define(`SITE', `ifelse(CONCAT($'2`, $3), SU,
- CONCAT(CY, $'1`),
- CONCAT(C, $3, $'1`))')
-sinclude(_CF_DIR_`'siteconfig/$1.m4)')
-define(`EXPOSED_USER', `PUSHDIVERT(5)C{E}$1
-POPDIVERT`'dnl`'')
-define(`EXPOSED_USER_FILE', `PUSHDIVERT(5)F{E}$1
-POPDIVERT`'dnl`'')
-define(`LOCAL_USER', `PUSHDIVERT(5)C{L}$1
-POPDIVERT`'dnl`'')
-define(`LOCAL_USER_FILE', `PUSHDIVERT(5)F{L}$1
-POPDIVERT`'dnl`'')
-define(`MASQUERADE_AS', `define(`MASQUERADE_NAME', $1)')
-define(`MASQUERADE_DOMAIN', `PUSHDIVERT(5)C{M}$1
-POPDIVERT`'dnl`'')
-define(`MASQUERADE_EXCEPTION', `PUSHDIVERT(5)C{N}$1
-POPDIVERT`'dnl`'')
-define(`MASQUERADE_DOMAIN_FILE', `PUSHDIVERT(5)F{M}$1
-POPDIVERT`'dnl`'')
-define(`MASQUERADE_EXCEPTION_FILE', `PUSHDIVERT(5)F{N}$1
-POPDIVERT`'dnl`'')
-define(`LOCAL_DOMAIN', `PUSHDIVERT(5)C{w}$1
-POPDIVERT`'dnl`'')
-define(`CANONIFY_DOMAIN', `PUSHDIVERT(5)C{Canonify}$1
-POPDIVERT`'dnl`'')
-define(`CANONIFY_DOMAIN_FILE', `PUSHDIVERT(5)F{Canonify}$1
-POPDIVERT`'dnl`'')
-define(`GENERICS_DOMAIN', `PUSHDIVERT(5)C{G}$1
-POPDIVERT`'dnl`'')
-define(`GENERICS_DOMAIN_FILE', `PUSHDIVERT(5)F{G}$1
-POPDIVERT`'dnl`'')
-define(`LDAPROUTE_DOMAIN', `PUSHDIVERT(5)C{LDAPRoute}$1
-POPDIVERT`'dnl`'')
-define(`LDAPROUTE_DOMAIN_FILE', `PUSHDIVERT(5)F{LDAPRoute}$1
-POPDIVERT`'dnl`'')
-define(`LDAPROUTE_EQUIVALENT', `PUSHDIVERT(5)C{LDAPRouteEquiv}$1
-POPDIVERT`'dnl`'')
-define(`LDAPROUTE_EQUIVALENT_FILE', `PUSHDIVERT(5)F{LDAPRouteEquiv}$1
-POPDIVERT`'dnl`'')
-define(`VIRTUSER_DOMAIN', `PUSHDIVERT(5)C{VirtHost}$1
-define(`_VIRTHOSTS_')
-POPDIVERT`'dnl`'')
-define(`VIRTUSER_DOMAIN_FILE', `PUSHDIVERT(5)F{VirtHost}$1
-define(`_VIRTHOSTS_')
-POPDIVERT`'dnl`'')
-define(`RELAY_DOMAIN', `PUSHDIVERT(5)C{R}$1
-POPDIVERT`'dnl`'')
-define(`RELAY_DOMAIN_FILE', `PUSHDIVERT(5)F{R}$1
-POPDIVERT`'dnl`'')
-define(`TRUST_AUTH_MECH', `_DEFIFNOT(`_USE_AUTH_',`1')PUSHDIVERT(5)C{TrustAuthMech}$1
-POPDIVERT`'dnl`'')
-define(`_OPTINS', `ifdef(`$1', `$2$1$3')')
-
-
-m4wrap(`include(_CF_DIR_`m4/proto.m4')')
-
-# default location for files
-ifdef(`MAIL_SETTINGS_DIR', , `define(`MAIL_SETTINGS_DIR', `/etc/mail/')')
-
-# set our default hashed database type
-define(`DATABASE_MAP_TYPE', `hash')
-
-# set up default values for options
-define(`ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
-define(`confMAILER_NAME', ``MAILER-DAEMON'')
-define(`confFROM_LINE', `From $g $d')
-define(`confOPERATORS', `.:%@!^/[]+')
-define(`confSMTP_LOGIN_MSG', `$j Sendmail $v/$Z; $b')
-define(`_REC_AUTH_', `$.$?{auth_type}(authenticated')
-define(`_REC_FULL_AUTH_', `$.$?{auth_type}(user=${auth_authen} $?{auth_author}author=${auth_author} $.mech=${auth_type}')
-define(`_REC_HDR_', `$?sfrom $s $.$?_($?s$|from $.$_)')
-define(`_REC_END_', `for $u; $|;
- $.$b')
-define(`_REC_TLS_', `(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u')
-define(`_REC_BY_', `$.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}')
-define(`confRECEIVED_HEADER', `_REC_HDR_
- _REC_AUTH_$?{auth_ssf} bits=${auth_ssf}$.)
- _REC_BY_
- _REC_TLS_
- _REC_END_')
-define(`confSEVEN_BIT_INPUT', `False')
-define(`confALIAS_WAIT', `10')
-define(`confMIN_FREE_BLOCKS', `100')
-define(`confBLANK_SUB', `.')
-define(`confCON_EXPENSIVE', `False')
-define(`confDELIVERY_MODE', `background')
-define(`confTEMP_FILE_MODE', `0600')
-define(`confMCI_CACHE_SIZE', `2')
-define(`confMCI_CACHE_TIMEOUT', `5m')
-define(`confUSE_ERRORS_TO', `False')
-define(`confLOG_LEVEL', `9')
-define(`confCHECK_ALIASES', `False')
-define(`confOLD_STYLE_HEADERS', `True')
-define(`confPRIVACY_FLAGS', `authwarnings')
-define(`confSAFE_QUEUE', `True')
-define(`confTO_QUEUERETURN', `5d')
-define(`confTO_QUEUEWARN', `4h')
-define(`confTIME_ZONE', `USE_SYSTEM')
-define(`confCW_FILE', `MAIL_SETTINGS_DIR`'local-host-names')
-define(`confMIME_FORMAT_ERRORS', `True')
-define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward')
-define(`confCR_FILE', `-o MAIL_SETTINGS_DIR`'relay-domains')
-define(`confMILTER_MACROS_CONNECT', ``j, _, {daemon_name}, {if_name}, {if_addr}'')
-define(`confMILTER_MACROS_HELO', ``{tls_version}, {cipher}, {cipher_bits}, {cert_subject}, {cert_issuer}'')
-define(`confMILTER_MACROS_ENVFROM', ``i, {auth_type}, {auth_authen}, {auth_ssf}, {auth_author}, {mail_mailer}, {mail_host}, {mail_addr}'')
-define(`confMILTER_MACROS_ENVRCPT', ``{rcpt_mailer}, {rcpt_host}, {rcpt_addr}'')
-define(`confMILTER_MACROS_EOM', `{msg_id}')
-
-
-divert(0)dnl
-VERSIONID(`$Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $')
diff --git a/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
deleted file mode 100644
index 6ef2f1cd0137..000000000000
--- a/contrib/sendmail/cf/m4/proto.m4
+++ /dev/null
@@ -1,3011 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1983, 1995 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.
-#
-#
-divert(0)
-
-VERSIONID(`$Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $')
-
-# level CF_LEVEL config file format
-V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
-divert(-1)
-
-dnl if MAILER(`local') not defined: do it ourself; be nice
-dnl maybe we should issue a warning?
-ifdef(`_MAILER_local_',`', `MAILER(local)')
-
-# do some sanity checking
-ifdef(`__OSTYPE__',,
- `errprint(`*** ERROR: No system type defined (use OSTYPE macro)
-')')
-
-# pick our default mailers
-ifdef(`confSMTP_MAILER',, `define(`confSMTP_MAILER', `esmtp')')
-ifdef(`confLOCAL_MAILER',, `define(`confLOCAL_MAILER', `local')')
-ifdef(`confRELAY_MAILER',,
- `define(`confRELAY_MAILER',
- `ifdef(`_MAILER_smtp_', `relay',
- `ifdef(`_MAILER_uucp', `uucp-new', `unknown')')')')
-ifdef(`confUUCP_MAILER',, `define(`confUUCP_MAILER', `uucp-old')')
-define(`_SMTP_', `confSMTP_MAILER')dnl for readability only
-define(`_LOCAL_', `confLOCAL_MAILER')dnl for readability only
-define(`_RELAY_', `confRELAY_MAILER')dnl for readability only
-define(`_UUCP_', `confUUCP_MAILER')dnl for readability only
-
-# back compatibility with old config files
-ifdef(`confDEF_GROUP_ID',
-`errprint(`*** confDEF_GROUP_ID is obsolete.
- Use confDEF_USER_ID with a colon in the value instead.
-')')
-ifdef(`confREAD_TIMEOUT',
-`errprint(`*** confREAD_TIMEOUT is obsolete.
- Use individual confTO_<timeout> parameters instead.
-')')
-ifdef(`confMESSAGE_TIMEOUT',
- `define(`_ARG_', index(confMESSAGE_TIMEOUT, /))
- ifelse(_ARG_, -1,
- `define(`confTO_QUEUERETURN', confMESSAGE_TIMEOUT)',
- `define(`confTO_QUEUERETURN',
- substr(confMESSAGE_TIMEOUT, 0, _ARG_))
- define(`confTO_QUEUEWARN',
- substr(confMESSAGE_TIMEOUT, eval(_ARG_+1)))')')
-ifdef(`confMIN_FREE_BLOCKS', `ifelse(index(confMIN_FREE_BLOCKS, /), -1,,
-`errprint(`*** compound confMIN_FREE_BLOCKS is obsolete.
- Use confMAX_MESSAGE_SIZE for the second part of the value.
-')')')
-
-
-# Sanity check on ldap_routing feature
-# If the user doesn't specify a new map, they better have given as a
-# default LDAP specification which has the LDAP base (and most likely the host)
-ifdef(`confLDAP_DEFAULT_SPEC',, `ifdef(`_LDAP_ROUTING_WARN_', `errprint(`
-WARNING: Using default FEATURE(ldap_routing) map definition(s)
-without setting confLDAP_DEFAULT_SPEC option.
-')')')dnl
-
-# clean option definitions below....
-define(`_OPTION', `ifdef(`$2', `O $1`'ifelse(defn(`$2'), `',, `=$2')', `#O $1`'ifelse(`$3', `',,`=$3')')')dnl
-
-dnl required to "rename" the check_* rulesets...
-define(`_U_',ifdef(`_DELAY_CHECKS_',`',`_'))
-dnl default relaying denied message
-ifdef(`confRELAY_MSG', `', `define(`confRELAY_MSG',
-ifdef(`_USE_AUTH_', `"550 Relaying denied. Proper authentication required."', `"550 Relaying denied"'))')
-ifdef(`confRCPTREJ_MSG', `', `define(`confRCPTREJ_MSG', `"550 Mailbox disabled for this recipient"')')
-define(`_CODE553', `553')
-divert(0)dnl
-
-# override file safeties - setting this option compromises system security,
-# addressing the actual file configuration problem is preferred
-# need to set this before any file actions are encountered in the cf file
-_OPTION(DontBlameSendmail, `confDONT_BLAME_SENDMAIL', `safe')
-
-# default LDAP map specification
-# need to set this now before any LDAP maps are defined
-_OPTION(LDAPDefaultSpec, `confLDAP_DEFAULT_SPEC', `-h localhost')
-
-##################
-# local info #
-##################
-
-# my LDAP cluster
-# need to set this before any LDAP lookups are done (including classes)
-ifdef(`confLDAP_CLUSTER', `D{sendmailMTACluster}`'confLDAP_CLUSTER', `#D{sendmailMTACluster}$m')
-
-Cwlocalhost
-ifdef(`USE_CW_FILE',
-`# file containing names of hosts for which we receive email
-Fw`'confCW_FILE',
- `dnl')
-
-# my official domain name
-# ... `define' this only if sendmail cannot automatically determine your domain
-ifdef(`confDOMAIN_NAME', `Dj`'confDOMAIN_NAME', `#Dj$w.Foo.COM')
-
-# host/domain names ending with a token in class P are canonical
-CP.
-
-ifdef(`UUCP_RELAY',
-`# UUCP relay host
-DY`'UUCP_RELAY
-CPUUCP
-
-')dnl
-ifdef(`BITNET_RELAY',
-`# BITNET relay host
-DB`'BITNET_RELAY
-CPBITNET
-
-')dnl
-ifdef(`DECNET_RELAY',
-`define(`_USE_DECNET_SYNTAX_', 1)dnl
-# DECnet relay host
-DC`'DECNET_RELAY
-CPDECNET
-
-')dnl
-ifdef(`FAX_RELAY',
-`# FAX relay host
-DF`'FAX_RELAY
-CPFAX
-
-')dnl
-# "Smart" relay host (may be null)
-DS`'ifdef(`SMART_HOST', `SMART_HOST')
-
-ifdef(`LUSER_RELAY', `dnl
-# place to which unknown users should be forwarded
-Kuser user -m -a<>
-DL`'LUSER_RELAY',
-`dnl')
-
-# operators that cannot be in local usernames (i.e., network indicators)
-CO @ % ifdef(`_NO_UUCP_', `', `!')
-
-# a class with just dot (for identifying canonical names)
-C..
-
-# a class with just a left bracket (for identifying domain literals)
-C[[
-
-ifdef(`_ACCESS_TABLE_', `dnl
-# access_db acceptance class
-C{Accept}OK RELAY
-ifdef(`_DELAY_COMPAT_8_10_',`dnl
-ifdef(`_BLACKLIST_RCPT_',`dnl
-# possible access_db RHS for spam friends/haters
-C{SpamTag}SPAMFRIEND SPAMHATER')')',
-`dnl')
-
-dnl mark for "domain is ok" (resolved or accepted anyway)
-define(`_RES_OK_', `OKR')dnl
-ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',`dnl',`dnl
-# Resolve map (to check if a host exists in check_mail)
-Kresolve host -a<_RES_OK_> -T<TEMP>')
-C{ResOk}_RES_OK_
-
-ifdef(`_NEED_MACRO_MAP_', `dnl
-ifdef(`_MACRO_MAP_', `', `# macro storage map
-define(`_MACRO_MAP_', `1')dnl
-Kmacro macro')', `dnl')
-
-ifdef(`confCR_FILE', `dnl
-# Hosts for which relaying is permitted ($=R)
-FR`'confCR_FILE',
-`dnl')
-
-define(`TLS_SRV_TAG', `"TLS_Srv"')dnl
-define(`TLS_CLT_TAG', `"TLS_Clt"')dnl
-define(`TLS_RCPT_TAG', `"TLS_Rcpt"')dnl
-define(`TLS_TRY_TAG', `"Try_TLS"')dnl
-define(`SRV_FEAT_TAG', `"Srv_Features"')dnl
-dnl this may be useful in other contexts too
-ifdef(`_ARITH_MAP_', `', `# arithmetic map
-define(`_ARITH_MAP_', `1')dnl
-Karith arith')
-ifdef(`_ACCESS_TABLE_', `dnl
-ifdef(`_MACRO_MAP_', `', `# macro storage map
-define(`_MACRO_MAP_', `1')dnl
-Kmacro macro')
-# possible values for TLS_connection in access map
-C{Tls}VERIFY ENCR', `dnl')
-ifdef(`_CERT_REGEX_ISSUER_', `dnl
-# extract relevant part from cert issuer
-KCERTIssuer regex _CERT_REGEX_ISSUER_', `dnl')
-ifdef(`_CERT_REGEX_SUBJECT_', `dnl
-# extract relevant part from cert subject
-KCERTSubject regex _CERT_REGEX_SUBJECT_', `dnl')
-
-ifdef(`LOCAL_RELAY', `dnl
-# who I send unqualified names to if `FEATURE(stickyhost)' is used
-# (null means deliver locally)
-DR`'LOCAL_RELAY')
-
-ifdef(`MAIL_HUB', `dnl
-# who gets all local email traffic
-# ($R has precedence for unqualified names if `FEATURE(stickyhost)' is used)
-DH`'MAIL_HUB')
-
-# dequoting map
-Kdequote dequote`'ifdef(`confDEQUOTE_OPTS', ` confDEQUOTE_OPTS', `')
-
-divert(0)dnl # end of nullclient diversion
-# class E: names that should be exposed as from this host, even if we masquerade
-# class L: names that should be delivered locally, even if we have a relay
-# class M: domains that should be converted to $M
-# class N: domains that should not be converted to $M
-#CL root
-undivert(5)dnl
-ifdef(`_VIRTHOSTS_', `CR$={VirtHost}', `dnl')
-
-ifdef(`MASQUERADE_NAME', `dnl
-# who I masquerade as (null for no masquerading) (see also $=M)
-DM`'MASQUERADE_NAME')
-
-# my name for error messages
-ifdef(`confMAILER_NAME', `Dn`'confMAILER_NAME', `#DnMAILER-DAEMON')
-
-undivert(6)dnl LOCAL_CONFIG
-include(_CF_DIR_`m4/version.m4')
-
-###############
-# Options #
-###############
-ifdef(`confAUTO_REBUILD',
-`errprint(WARNING: `confAUTO_REBUILD' is no longer valid.
- There was a potential for a denial of service attack if this is set.
-)')dnl
-
-# strip message body to 7 bits on input?
-_OPTION(SevenBitInput, `confSEVEN_BIT_INPUT', `False')
-
-# 8-bit data handling
-_OPTION(EightBitMode, `confEIGHT_BIT_HANDLING', `pass8')
-
-# wait for alias file rebuild (default units: minutes)
-_OPTION(AliasWait, `confALIAS_WAIT', `5m')
-
-# location of alias file
-_OPTION(AliasFile, `ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
-
-# minimum number of free blocks on filesystem
-_OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', `100')
-
-# maximum message size
-_OPTION(MaxMessageSize, `confMAX_MESSAGE_SIZE', `0')
-
-# substitution for space (blank) characters
-_OPTION(BlankSub, `confBLANK_SUB', `_')
-
-# avoid connecting to "expensive" mailers on initial submission?
-_OPTION(HoldExpensive, `confCON_EXPENSIVE', `False')
-
-# checkpoint queue runs after every N successful deliveries
-_OPTION(CheckpointInterval, `confCHECKPOINT_INTERVAL', `10')
-
-# default delivery mode
-_OPTION(DeliveryMode, `confDELIVERY_MODE', `background')
-
-# error message header/file
-_OPTION(ErrorHeader, `confERROR_MESSAGE', `MAIL_SETTINGS_DIR`'error-header')
-
-# error mode
-_OPTION(ErrorMode, `confERROR_MODE', `print')
-
-# save Unix-style "From_" lines at top of header?
-_OPTION(SaveFromLine, `confSAVE_FROM_LINES', `False')
-
-# queue file mode (qf files)
-_OPTION(QueueFileMode, `confQUEUE_FILE_MODE', `0600')
-
-# temporary file mode
-_OPTION(TempFileMode, `confTEMP_FILE_MODE', `0600')
-
-# match recipients against GECOS field?
-_OPTION(MatchGECOS, `confMATCH_GECOS', `False')
-
-# maximum hop count
-_OPTION(MaxHopCount, `confMAX_HOP', `25')
-
-# location of help file
-O HelpFile=ifdef(`HELP_FILE', HELP_FILE, `MAIL_SETTINGS_DIR`'helpfile')
-
-# ignore dots as terminators in incoming messages?
-_OPTION(IgnoreDots, `confIGNORE_DOTS', `False')
-
-# name resolver options
-_OPTION(ResolverOptions, `confBIND_OPTS', `+AAONLY')
-
-# deliver MIME-encapsulated error messages?
-_OPTION(SendMimeErrors, `confMIME_FORMAT_ERRORS', `True')
-
-# Forward file search path
-_OPTION(ForwardPath, `confFORWARD_PATH', `/var/forward/$u:$z/.forward.$w:$z/.forward')
-
-# open connection cache size
-_OPTION(ConnectionCacheSize, `confMCI_CACHE_SIZE', `2')
-
-# open connection cache timeout
-_OPTION(ConnectionCacheTimeout, `confMCI_CACHE_TIMEOUT', `5m')
-
-# persistent host status directory
-_OPTION(HostStatusDirectory, `confHOST_STATUS_DIRECTORY', `.hoststat')
-
-# single thread deliveries (requires HostStatusDirectory)?
-_OPTION(SingleThreadDelivery, `confSINGLE_THREAD_DELIVERY', `False')
-
-# use Errors-To: header?
-_OPTION(UseErrorsTo, `confUSE_ERRORS_TO', `False')
-
-# log level
-_OPTION(LogLevel, `confLOG_LEVEL', `10')
-
-# send to me too, even in an alias expansion?
-_OPTION(MeToo, `confME_TOO', `True')
-
-# verify RHS in newaliases?
-_OPTION(CheckAliases, `confCHECK_ALIASES', `False')
-
-# default messages to old style headers if no special punctuation?
-_OPTION(OldStyleHeaders, `confOLD_STYLE_HEADERS', `False')
-
-# SMTP daemon options
-ifelse(defn(`confDAEMON_OPTIONS'), `', `dnl',
-`errprint(WARNING: `confDAEMON_OPTIONS' is no longer valid.
- Use `DAEMON_OPTIONS()'; see cf/README.
-)'dnl
-`DAEMON_OPTIONS(`confDAEMON_OPTIONS')')
-ifelse(defn(`_DPO_'), `',
-`ifdef(`_NETINET6_', `O DaemonPortOptions=Name=MTA-v4, Family=inet
-O DaemonPortOptions=Name=MTA-v6, Family=inet6',`O DaemonPortOptions=Name=MTA')', `_DPO_')
-ifdef(`_NO_MSA_', `dnl', `O DaemonPortOptions=Port=587, Name=MSA, M=E')
-
-# SMTP client options
-ifelse(defn(`confCLIENT_OPTIONS'), `', `dnl',
-`errprint(WARNING: `confCLIENT_OPTIONS' is no longer valid. See cf/README for more information.
-)'dnl
-`CLIENT_OPTIONS(`confCLIENT_OPTIONS')')
-ifelse(defn(`_CPO_'), `',
-`#O ClientPortOptions=Family=inet, Address=0.0.0.0', `_CPO_')
-
-# Modifiers to `define' {daemon_flags} for direct submissions
-_OPTION(DirectSubmissionModifiers, `confDIRECT_SUBMISSION_MODIFIERS', `')
-
-# Use as mail submission program? See sendmail/SECURITY
-_OPTION(UseMSP, `confUSE_MSP', `')
-
-# privacy flags
-_OPTION(PrivacyOptions, `confPRIVACY_FLAGS', `authwarnings')
-
-# who (if anyone) should get extra copies of error messages
-_OPTION(PostmasterCopy, `confCOPY_ERRORS_TO', `Postmaster')
-
-# slope of queue-only function
-_OPTION(QueueFactor, `confQUEUE_FACTOR', `600000')
-
-# limit on number of concurrent queue runners
-_OPTION(MaxQueueChildren, `confMAX_QUEUE_CHILDREN', `')
-
-# maximum number of queue-runners per queue-grouping with multiple queues
-_OPTION(MaxRunnersPerQueue, `confMAX_RUNNERS_PER_QUEUE', `1')
-
-# priority of queue runners (nice(3))
-_OPTION(NiceQueueRun, `confNICE_QUEUE_RUN', `')
-
-# shall we sort the queue by hostname first?
-_OPTION(QueueSortOrder, `confQUEUE_SORT_ORDER', `priority')
-
-# minimum time in queue before retry
-_OPTION(MinQueueAge, `confMIN_QUEUE_AGE', `30m')
-
-# how many jobs can you process in the queue?
-_OPTION(MaxQueueRunSize, `confMAX_QUEUE_RUN_SIZE', `0')
-
-# perform initial split of envelope without checking MX records
-_OPTION(FastSplit, `confFAST_SPLIT', `1')
-
-# queue directory
-O QueueDirectory=ifdef(`QUEUE_DIR', QUEUE_DIR, `/var/spool/mqueue')
-
-# key for shared memory; 0 to turn off, -1 to auto-select
-_OPTION(SharedMemoryKey, `confSHARED_MEMORY_KEY', `0')
-
-# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
-_OPTION(SharedMemoryKeyFile, `confSHARED_MEMORY_KEY_FILE', `')
-
-# timeouts (many of these)
-_OPTION(Timeout.initial, `confTO_INITIAL', `5m')
-_OPTION(Timeout.connect, `confTO_CONNECT', `5m')
-_OPTION(Timeout.aconnect, `confTO_ACONNECT', `0s')
-_OPTION(Timeout.iconnect, `confTO_ICONNECT', `5m')
-_OPTION(Timeout.helo, `confTO_HELO', `5m')
-_OPTION(Timeout.mail, `confTO_MAIL', `10m')
-_OPTION(Timeout.rcpt, `confTO_RCPT', `1h')
-_OPTION(Timeout.datainit, `confTO_DATAINIT', `5m')
-_OPTION(Timeout.datablock, `confTO_DATABLOCK', `1h')
-_OPTION(Timeout.datafinal, `confTO_DATAFINAL', `1h')
-_OPTION(Timeout.rset, `confTO_RSET', `5m')
-_OPTION(Timeout.quit, `confTO_QUIT', `2m')
-_OPTION(Timeout.misc, `confTO_MISC', `2m')
-_OPTION(Timeout.command, `confTO_COMMAND', `1h')
-_OPTION(Timeout.ident, `confTO_IDENT', `5s')
-_OPTION(Timeout.fileopen, `confTO_FILEOPEN', `60s')
-_OPTION(Timeout.control, `confTO_CONTROL', `2m')
-_OPTION(Timeout.queuereturn, `confTO_QUEUERETURN', `5d')
-_OPTION(Timeout.queuereturn.normal, `confTO_QUEUERETURN_NORMAL', `5d')
-_OPTION(Timeout.queuereturn.urgent, `confTO_QUEUERETURN_URGENT', `2d')
-_OPTION(Timeout.queuereturn.non-urgent, `confTO_QUEUERETURN_NONURGENT', `7d')
-_OPTION(Timeout.queuereturn.dsn, `confTO_QUEUERETURN_DSN', `5d')
-_OPTION(Timeout.queuewarn, `confTO_QUEUEWARN', `4h')
-_OPTION(Timeout.queuewarn.normal, `confTO_QUEUEWARN_NORMAL', `4h')
-_OPTION(Timeout.queuewarn.urgent, `confTO_QUEUEWARN_URGENT', `1h')
-_OPTION(Timeout.queuewarn.non-urgent, `confTO_QUEUEWARN_NONURGENT', `12h')
-_OPTION(Timeout.queuewarn.dsn, `confTO_QUEUEWARN_DSN', `4h')
-_OPTION(Timeout.hoststatus, `confTO_HOSTSTATUS', `30m')
-_OPTION(Timeout.resolver.retrans, `confTO_RESOLVER_RETRANS', `5s')
-_OPTION(Timeout.resolver.retrans.first, `confTO_RESOLVER_RETRANS_FIRST', `5s')
-_OPTION(Timeout.resolver.retrans.normal, `confTO_RESOLVER_RETRANS_NORMAL', `5s')
-_OPTION(Timeout.resolver.retry, `confTO_RESOLVER_RETRY', `4')
-_OPTION(Timeout.resolver.retry.first, `confTO_RESOLVER_RETRY_FIRST', `4')
-_OPTION(Timeout.resolver.retry.normal, `confTO_RESOLVER_RETRY_NORMAL', `4')
-_OPTION(Timeout.lhlo, `confTO_LHLO', `2m')
-_OPTION(Timeout.auth, `confTO_AUTH', `10m')
-_OPTION(Timeout.starttls, `confTO_STARTTLS', `1h')
-
-# time for DeliverBy; extension disabled if less than 0
-_OPTION(DeliverByMin, `confDELIVER_BY_MIN', `0')
-
-# should we not prune routes in route-addr syntax addresses?
-_OPTION(DontPruneRoutes, `confDONT_PRUNE_ROUTES', `False')
-
-# queue up everything before forking?
-_OPTION(SuperSafe, `confSAFE_QUEUE', `True')
-
-# status file
-_OPTION(StatusFile, `STATUS_FILE')
-
-# time zone handling:
-# if undefined, use system default
-# if defined but null, use TZ envariable passed in
-# if defined and non-null, use that info
-ifelse(confTIME_ZONE, `USE_SYSTEM', `#O TimeZoneSpec=',
- confTIME_ZONE, `USE_TZ', `O TimeZoneSpec=',
- `O TimeZoneSpec=confTIME_ZONE')
-
-# default UID (can be username or userid:groupid)
-_OPTION(DefaultUser, `confDEF_USER_ID', `mailnull')
-
-# list of locations of user database file (null means no lookup)
-_OPTION(UserDatabaseSpec, `confUSERDB_SPEC', `MAIL_SETTINGS_DIR`'userdb')
-
-# fallback MX host
-_OPTION(FallbackMXhost, `confFALLBACK_MX', `fall.back.host.net')
-
-# fallback smart host
-_OPTION(FallbackSmartHost, `confFALLBACK_SMARTHOST', `fall.back.host.net')
-
-# if we are the best MX host for a site, try it directly instead of config err
-_OPTION(TryNullMXList, `confTRY_NULL_MX_LIST', `False')
-
-# load average at which we just queue messages
-_OPTION(QueueLA, `confQUEUE_LA', `8')
-
-# load average at which we refuse connections
-_OPTION(RefuseLA, `confREFUSE_LA', `12')
-
-# log interval when refusing connections for this long
-_OPTION(RejectLogInterval, `confREJECT_LOG_INTERVAL', `3h')
-
-# load average at which we delay connections; 0 means no limit
-_OPTION(DelayLA, `confDELAY_LA', `0')
-
-# maximum number of children we allow at one time
-_OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', `0')
-
-# maximum number of new connections per second
-_OPTION(ConnectionRateThrottle, `confCONNECTION_RATE_THROTTLE', `0')
-
-# Width of the window
-_OPTION(ConnectionRateWindowSize, `confCONNECTION_RATE_WINDOW_SIZE', `60s')
-
-# work recipient factor
-_OPTION(RecipientFactor, `confWORK_RECIPIENT_FACTOR', `30000')
-
-# deliver each queued job in a separate process?
-_OPTION(ForkEachJob, `confSEPARATE_PROC', `False')
-
-# work class factor
-_OPTION(ClassFactor, `confWORK_CLASS_FACTOR', `1800')
-
-# work time factor
-_OPTION(RetryFactor, `confWORK_TIME_FACTOR', `90000')
-
-# default character set
-_OPTION(DefaultCharSet, `confDEF_CHAR_SET', `unknown-8bit')
-
-# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
-_OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', `MAIL_SETTINGS_DIR`'service.switch')
-
-# hosts file (normally /etc/hosts)
-_OPTION(HostsFile, `confHOSTS_FILE', `/etc/hosts')
-
-# dialup line delay on connection failure
-_OPTION(DialDelay, `confDIAL_DELAY', `0s')
-
-# action to take if there are no recipients in the message
-_OPTION(NoRecipientAction, `confNO_RCPT_ACTION', `none')
-
-# chrooted environment for writing to files
-_OPTION(SafeFileEnvironment, `confSAFE_FILE_ENV', `')
-
-# are colons OK in addresses?
-_OPTION(ColonOkInAddr, `confCOLON_OK_IN_ADDR', `True')
-
-# shall I avoid expanding CNAMEs (violates protocols)?
-_OPTION(DontExpandCnames, `confDONT_EXPAND_CNAMES', `False')
-
-# SMTP initial login message (old $e macro)
-_OPTION(SmtpGreetingMessage, `confSMTP_LOGIN_MSG', `$j Sendmail $v ready at $b')
-
-# UNIX initial From header format (old $l macro)
-_OPTION(UnixFromLine, `confFROM_LINE', `From $g $d')
-
-# From: lines that have embedded newlines are unwrapped onto one line
-_OPTION(SingleLineFromHeader, `confSINGLE_LINE_FROM_HEADER', `False')
-
-# Allow HELO SMTP command that does not `include' a host name
-_OPTION(AllowBogusHELO, `confALLOW_BOGUS_HELO', `False')
-
-# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
-_OPTION(MustQuoteChars, `confMUST_QUOTE_CHARS', `.')
-
-# delimiter (operator) characters (old $o macro)
-_OPTION(OperatorChars, `confOPERATORS', `.:@[]')
-
-# shall I avoid calling initgroups(3) because of high NIS costs?
-_OPTION(DontInitGroups, `confDONT_INIT_GROUPS', `False')
-
-# are group-writable `:include:' and .forward files (un)trustworthy?
-# True (the default) means they are not trustworthy.
-_OPTION(UnsafeGroupWrites, `confUNSAFE_GROUP_WRITES', `True')
-ifdef(`confUNSAFE_GROUP_WRITES',
-`errprint(`WARNING: confUNSAFE_GROUP_WRITES is deprecated; use confDONT_BLAME_SENDMAIL.
-')')
-
-# where do errors that occur when sending errors get sent?
-_OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS', `postmaster')
-
-# issue temporary errors (4xy) instead of permanent errors (5xy)?
-_OPTION(SoftBounce, `confSOFT_BOUNCE', `False')
-
-# where to save bounces if all else fails
-_OPTION(DeadLetterDrop, `confDEAD_LETTER_DROP', `/var/tmp/dead.letter')
-
-# what user id do we assume for the majority of the processing?
-_OPTION(RunAsUser, `confRUN_AS_USER', `sendmail')
-
-# maximum number of recipients per SMTP envelope
-_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', `0')
-
-# limit the rate recipients per SMTP envelope are accepted
-# once the threshold number of recipients have been rejected
-_OPTION(BadRcptThrottle, `confBAD_RCPT_THROTTLE', `0')
-
-# shall we get local names from our installed interfaces?
-_OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES', `False')
-
-# Return-Receipt-To: header implies DSN request
-_OPTION(RrtImpliesDsn, `confRRT_IMPLIES_DSN', `False')
-
-# override connection address (for testing)
-_OPTION(ConnectOnlyTo, `confCONNECT_ONLY_TO', `0.0.0.0')
-
-# Trusted user for file ownership and starting the daemon
-_OPTION(TrustedUser, `confTRUSTED_USER', `root')
-
-# Control socket for daemon management
-_OPTION(ControlSocketName, `confCONTROL_SOCKET_NAME', `/var/spool/mqueue/.control')
-
-# Maximum MIME header length to protect MUAs
-_OPTION(MaxMimeHeaderLength, `confMAX_MIME_HEADER_LENGTH', `0/0')
-
-# Maximum length of the sum of all headers
-_OPTION(MaxHeadersLength, `confMAX_HEADERS_LENGTH', `32768')
-
-# Maximum depth of alias recursion
-_OPTION(MaxAliasRecursion, `confMAX_ALIAS_RECURSION', `10')
-
-# location of pid file
-_OPTION(PidFile, `confPID_FILE', `/var/run/sendmail.pid')
-
-# Prefix string for the process title shown on 'ps' listings
-_OPTION(ProcessTitlePrefix, `confPROCESS_TITLE_PREFIX', `prefix')
-
-# Data file (df) memory-buffer file maximum size
-_OPTION(DataFileBufferSize, `confDF_BUFFER_SIZE', `4096')
-
-# Transcript file (xf) memory-buffer file maximum size
-_OPTION(XscriptFileBufferSize, `confXF_BUFFER_SIZE', `4096')
-
-# lookup type to find information about local mailboxes
-_OPTION(MailboxDatabase, `confMAILBOX_DATABASE', `pw')
-
-# override compile time flag REQUIRES_DIR_FSYNC
-_OPTION(RequiresDirfsync, `confREQUIRES_DIR_FSYNC', `true')
-
-# list of authentication mechanisms
-_OPTION(AuthMechanisms, `confAUTH_MECHANISMS', `EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5')
-
-# Authentication realm
-_OPTION(AuthRealm, `confAUTH_REALM', `')
-
-# default authentication information for outgoing connections
-_OPTION(DefaultAuthInfo, `confDEF_AUTH_INFO', `MAIL_SETTINGS_DIR`'default-auth-info')
-
-# SMTP AUTH flags
-_OPTION(AuthOptions, `confAUTH_OPTIONS', `')
-
-# SMTP AUTH maximum encryption strength
-_OPTION(AuthMaxBits, `confAUTH_MAX_BITS', `')
-
-# SMTP STARTTLS server options
-_OPTION(TLSSrvOptions, `confTLS_SRV_OPTIONS', `')
-
-# Input mail filters
-_OPTION(InputMailFilters, `confINPUT_MAIL_FILTERS', `')
-
-ifelse(len(X`'_MAIL_FILTERS_DEF), `1', `dnl', `dnl
-# Milter options
-_OPTION(Milter.LogLevel, `confMILTER_LOG_LEVEL', `')
-_OPTION(Milter.macros.connect, `confMILTER_MACROS_CONNECT', `')
-_OPTION(Milter.macros.helo, `confMILTER_MACROS_HELO', `')
-_OPTION(Milter.macros.envfrom, `confMILTER_MACROS_ENVFROM', `')
-_OPTION(Milter.macros.envrcpt, `confMILTER_MACROS_ENVRCPT', `')
-_OPTION(Milter.macros.eom, `confMILTER_MACROS_EOM', `')
-_OPTION(Milter.macros.eoh, `confMILTER_MACROS_EOH', `')
-_OPTION(Milter.macros.data, `confMILTER_MACROS_DATA', `')')
-
-# CA directory
-_OPTION(CACertPath, `confCACERT_PATH', `')
-# CA file
-_OPTION(CACertFile, `confCACERT', `')
-# Server Cert
-_OPTION(ServerCertFile, `confSERVER_CERT', `')
-# Server private key
-_OPTION(ServerKeyFile, `confSERVER_KEY', `')
-# Client Cert
-_OPTION(ClientCertFile, `confCLIENT_CERT', `')
-# Client private key
-_OPTION(ClientKeyFile, `confCLIENT_KEY', `')
-# File containing certificate revocation lists
-_OPTION(CRLFile, `confCRL', `')
-# DHParameters (only required if DSA/DH is used)
-_OPTION(DHParameters, `confDH_PARAMETERS', `')
-# Random data source (required for systems without /dev/urandom under OpenSSL)
-_OPTION(RandFile, `confRAND_FILE', `')
-
-# Maximum number of "useless" commands before slowing down
-_OPTION(MaxNOOPCommands, `confMAX_NOOP_COMMANDS', `20')
-
-# Name to use for EHLO (defaults to $j)
-_OPTION(HeloName, `confHELO_NAME')
-
-############################
-`# QUEUE GROUP DEFINITIONS #'
-############################
-_QUEUE_GROUP_
-
-###########################
-# Message precedences #
-###########################
-
-Pfirst-class=0
-Pspecial-delivery=100
-Plist=-30
-Pbulk=-60
-Pjunk=-100
-
-#####################
-# Trusted users #
-#####################
-
-# this is equivalent to setting class "t"
-ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, `MAIL_SETTINGS_DIR`'trusted-users')
-Troot
-Tdaemon
-ifdef(`_NO_UUCP_', `dnl', `Tuucp')
-ifdef(`confTRUSTED_USERS', `T`'confTRUSTED_USERS', `dnl')
-
-#########################
-# Format of headers #
-#########################
-
-ifdef(`confFROM_HEADER',, `define(`confFROM_HEADER', `$?x$x <$g>$|$g$.')')dnl
-ifdef(`confMESSAGEID_HEADER',, `define(`confMESSAGEID_HEADER', `<$t.$i@$j>')')dnl
-H?P?Return-Path: <$g>
-HReceived: confRECEIVED_HEADER
-H?D?Resent-Date: $a
-H?D?Date: $a
-H?F?Resent-From: confFROM_HEADER
-H?F?From: confFROM_HEADER
-H?x?Full-Name: $x
-# HPosted-Date: $a
-# H?l?Received-Date: $b
-H?M?Resent-Message-Id: confMESSAGEID_HEADER
-H?M?Message-Id: confMESSAGEID_HEADER
-
-#
-######################################################################
-######################################################################
-#####
-##### REWRITING RULES
-#####
-######################################################################
-######################################################################
-
-############################################
-### Ruleset 3 -- Name Canonicalization ###
-############################################
-Scanonify=3
-
-# handle null input (translate to <@> special case)
-R$@ $@ <@>
-
-# strip group: syntax (not inside angle brackets!) and trailing semicolon
-R$* $: $1 <@> mark addresses
-R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
-R@ $* <@> $: @ $1 unmark @host:...
-R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
-R$* :: $* <@> $: $1 :: $2 unmark node::addr
-R:`include': $* <@> $: :`include': $1 unmark :`include':...
-R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
-R$* : $* <@> $: $2 strip colon if marked
-R$* <@> $: $1 unmark
-R$* ; $1 strip trailing semi
-R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
-R$* < $* ; > $1 < $2 > bogus bracketed semi
-
-# null input now results from list:; syntax
-R$@ $@ :; <@>
-
-# strip angle brackets -- note RFC733 heuristic to get innermost item
-R$* $: < $1 > housekeeping <>
-R$+ < $* > < $2 > strip excess on left
-R< $* > $+ < $1 > strip excess on right
-R<> $@ < @ > MAIL FROM:<> case
-R< $+ > $: $1 remove housekeeping <>
-
-ifdef(`_USE_DEPRECATED_ROUTE_ADDR_',`dnl
-# make sure <@a,@b,@c:user@d> syntax is easy to parse -- undone later
-R@ $+ , $+ @ $1 : $2 change all "," to ":"
-
-# localize and dispose of route-based addresses
-dnl XXX: IPv6 colon conflict
-ifdef(`NO_NETINET6', `dnl',
-`R@ [$+] : $+ $@ $>Canonify2 < @ [$1] > : $2 handle <route-addr>')
-R@ $+ : $+ $@ $>Canonify2 < @$1 > : $2 handle <route-addr>
-dnl',`dnl
-# strip route address <@a,@b,@c:user@d> -> <user@d>
-R@ $+ , $+ $2
-ifdef(`NO_NETINET6', `dnl',
-`R@ [ $* ] : $+ $2')
-R@ $+ : $+ $2
-dnl')
-
-# find focus for list syntax
-R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
-R $+ : $* ; $@ $1 : $2; list syntax
-
-# find focus for @ syntax addresses
-R$+ @ $+ $: $1 < @ $2 > focus on domain
-R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
-R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
-
-dnl This is flagged as an error in S0; no need to silently fix it here.
-dnl # do some sanity checking
-dnl R$* < @ $~[ $* : $* > $* $1 < @ $2 $3 > $4 nix colons in addrs
-
-ifdef(`_NO_UUCP_', `dnl',
-`# convert old-style addresses to a domain-based address
-R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
-R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
-R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
-')
-ifdef(`_USE_DECNET_SYNTAX_',
-`# convert node::user addresses into a domain-based address
-R$- :: $+ $@ $>Canonify2 $2 < @ $1 .DECNET > resolve DECnet names
-R$- . $- :: $+ $@ $>Canonify2 $3 < @ $1.$2 .DECNET > numeric DECnet addr
-',
- `dnl')
-# if we have % signs, take the rightmost one
-R$* % $* $1 @ $2 First make them all @s.
-R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
-R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
-
-# else we must be a local name
-R$* $@ $>Canonify2 $1
-
-
-################################################
-### Ruleset 96 -- bottom half of ruleset 3 ###
-################################################
-
-SCanonify2=96
-
-# handle special cases for local names
-R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
-R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
-ifdef(`_NO_UUCP_', `dnl',
-`R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain')
-
-# check for IPv4/IPv6 domain literal
-R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
-R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
-R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-
-ifdef(`_DOMAIN_TABLE_', `dnl
-# look up domains in the domain table
-R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3', `dnl')
-
-undivert(2)dnl LOCAL_RULE_3
-
-ifdef(`_BITDOMAIN_TABLE_', `dnl
-# handle BITNET mapping
-R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3', `dnl')
-
-ifdef(`_UUDOMAIN_TABLE_', `dnl
-# handle UUCP mapping
-R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3', `dnl')
-
-ifdef(`_NO_UUCP_', `dnl',
-`ifdef(`UUCP_RELAY',
-`# pass UUCP addresses straight through
-R$* < @ $+ . UUCP > $* $@ $1 < @ $2 . UUCP . > $3',
-`# if really UUCP, handle it immediately
-ifdef(`_CLASS_U_',
-`R$* < @ $=U . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl')
-ifdef(`_CLASS_V_',
-`R$* < @ $=V . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl')
-ifdef(`_CLASS_W_',
-`R$* < @ $=W . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl')
-ifdef(`_CLASS_X_',
-`R$* < @ $=X . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl')
-ifdef(`_CLASS_Y_',
-`R$* < @ $=Y . UUCP > $* $@ $1 < @ $2 . UUCP . > $3', `dnl')
-
-ifdef(`_NO_CANONIFY_', `dnl', `dnl
-# try UUCP traffic as a local address
-R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
-R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3')
-')')
-# hostnames ending in class P are always canonical
-R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
-dnl apply the next rule only for hostnames not in class P
-dnl this even works for phrases in class P since . is in class P
-dnl which daemon flags are set?
-R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
-dnl the other rules in this section only apply if the hostname
-dnl does not end in class P hence no further checks are done here
-dnl if this ever changes make sure the lookups are "protected" again!
-ifdef(`_NO_CANONIFY_', `dnl
-dnl do not canonify unless:
-dnl domain ends in class {Canonify} (this does not work if the intersection
-dnl with class P is non-empty)
-dnl or {daemon_flags} has c set
-# pass to name server to make hostname canonical if in class {Canonify}
-R$* $| $* < @ $* $={Canonify} > $* $: $2 < @ $[ $3 $4 $] > $5
-# pass to name server to make hostname canonical if requested
-R$* c $* $| $* < @ $* > $* $: $3 < @ $[ $4 $] > $5
-dnl trailing dot? -> do not apply _CANONIFY_HOSTS_
-R$* $| $* < @ $+ . > $* $: $2 < @ $3 . > $4
-# add a trailing dot to qualified hostnames so other rules will work
-R$* $| $* < @ $+.$+ > $* $: $2 < @ $3.$4 . > $5
-ifdef(`_CANONIFY_HOSTS_', `dnl
-dnl this should only apply to unqualified hostnames
-dnl but if a valid character inside an unqualified hostname is an OperatorChar
-dnl then $- does not work.
-# lookup unqualified hostnames
-R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4', `dnl')', `dnl
-dnl _NO_CANONIFY_ is not set: canonify unless:
-dnl {daemon_flags} contains CC (do not canonify)
-dnl but add a trailing dot to qualified hostnames so other rules will work
-dnl should we do this for every hostname: even unqualified?
-R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
-R$* CC $* $| $* $: $3
-ifdef(`_FFR_NOCANONIFY_HEADERS', `dnl
-# do not canonify header addresses
-R$* $| $* < @ $* $~P > $* $: $&{addr_type} $| $2 < @ $3 $4 > $5
-R$* h $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
-R$* h $* $| $* $: $3', `dnl')
-# pass to name server to make hostname canonical
-R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4')
-dnl remove {daemon_flags} for other cases
-R$* $| $* $: $2
-
-# local host aliases and pseudo-domains are always canonical
-R$* < @ $=w > $* $: $1 < @ $2 . > $3
-ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
-`R$* < @ $* $=M > $* $: $1 < @ $2 $3 . > $4',
-`R$* < @ $=M > $* $: $1 < @ $2 . > $3')
-ifdef(`_VIRTUSER_TABLE_', `dnl
-dnl virtual hosts are also canonical
-ifdef(`_VIRTUSER_ENTIRE_DOMAIN_',
-`R$* < @ $* $={VirtHost} > $* $: $1 < @ $2 $3 . > $4',
-`R$* < @ $={VirtHost} > $* $: $1 < @ $2 . > $3')',
-`dnl')
-ifdef(`_GENERICS_TABLE_', `dnl
-dnl hosts for genericstable are also canonical
-ifdef(`_GENERICS_ENTIRE_DOMAIN_',
-`R$* < @ $* $=G > $* $: $1 < @ $2 $3 . > $4',
-`R$* < @ $=G > $* $: $1 < @ $2 . > $3')',
-`dnl')
-dnl remove superfluous dots (maybe repeatedly) which may have been added
-dnl by one of the rules before
-R$* < @ $* . . > $* $1 < @ $2 . > $3
-
-
-##################################################
-### Ruleset 4 -- Final Output Post-rewriting ###
-##################################################
-Sfinal=4
-
-R$+ :; <@> $@ $1 : handle <list:;>
-R$* <@> $@ handle <> and list:;
-
-# strip trailing dot off possibly canonical name
-R$* < @ $+ . > $* $1 < @ $2 > $3
-
-# eliminate internal code
-R$* < @ *LOCAL* > $* $1 < @ $j > $2
-
-# externalize local domain info
-R$* < $+ > $* $1 $2 $3 defocus
-R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
-R@ $* $@ @ $1 ... and exit
-
-ifdef(`_NO_UUCP_', `dnl',
-`# UUCP must always be presented in old form
-R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u')
-
-ifdef(`_USE_DECNET_SYNTAX_',
-`# put DECnet back in :: form
-R$+ @ $+ . DECNET $2 :: $1 u@h.DECNET => h::u',
- `dnl')
-# delete duplicate local names
-R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
-
-
-
-##############################################################
-### Ruleset 97 -- recanonicalize and call ruleset zero ###
-### (used for recursive calls) ###
-##############################################################
-
-SRecurse=97
-R$* $: $>canonify $1
-R$* $@ $>parse $1
-
-
-######################################
-### Ruleset 0 -- Parse Address ###
-######################################
-
-Sparse=0
-
-R$* $: $>Parse0 $1 initial parsing
-R<@> $#_LOCAL_ $: <@> special case error msgs
-R$* $: $>ParseLocal $1 handle local hacks
-R$* $: $>Parse1 $1 final parsing
-
-#
-# Parse0 -- do initial syntax checking and eliminate local addresses.
-# This should either return with the (possibly modified) input
-# or return with a #error mailer. It should not return with a
-# #mailer other than the #error mailer.
-#
-
-SParse0
-R<@> $@ <@> special case error msgs
-R$* : $* ; <@> $#error $@ 5.1.3 $: "_CODE553 List:; syntax illegal for recipient addresses"
-R@ <@ $* > < @ $1 > catch "@@host" bogosity
-R<@ $+> $#error $@ 5.1.3 $: "_CODE553 User address required"
-R$+ <@> $#error $@ 5.1.3 $: "_CODE553 Hostname required"
-R$* $: <> $1
-dnl allow tricks like [host1]:[host2]
-R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
-R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
-dnl but no a@[b]c
-R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "_CODE553 Invalid address"
-R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
-R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "_CODE553 Colon illegal in host name part"
-R<> $* $1
-R$* < @ . $* > $* $#error $@ 5.1.2 $: "_CODE553 Invalid host name"
-R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "_CODE553 Invalid host name"
-dnl no a@b@
-R$* < @ $* @ > $* $#error $@ 5.1.2 $: "_CODE553 Invalid route address"
-dnl no a@b@c
-R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "_CODE553 Invalid route address"
-dnl comma only allowed before @; this check is not complete
-R$* , $~O $* $#error $@ 5.1.3 $: "_CODE553 Invalid route address"
-
-ifdef(`_STRICT_RFC821_', `# more RFC 821 checks
-R$* . < @ $* > $* $#error $@ 5.1.2 $: "_CODE553 Local part must not end with a dot"
-R. $* < @ $* > $* $#error $@ 5.1.2 $: "_CODE553 Local part must not begin with a dot"
-dnl', `dnl')
-
-# now delete the local info -- note $=O to find characters that cause forwarding
-R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
-R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
-R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
-R< @ $+ > $#error $@ 5.1.3 $: "_CODE553 User address required"
-R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
-R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
-R< @ *LOCAL* > $#error $@ 5.1.3 $: "_CODE553 User address required"
-R$* $=O $* < @ *LOCAL* >
- $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
-R$* < @ *LOCAL* > $: $1
-
-#
-# Parse1 -- the bottom half of ruleset 0.
-#
-
-SParse1
-ifdef(`_LDAP_ROUTING_', `dnl
-# handle LDAP routing for hosts in $={LDAPRoute}
-R$+ < @ $={LDAPRoute} . > $: $>LDAPExpand <$1 < @ $2 . >> <$1 @ $2> <>
-R$+ < @ $={LDAPRouteEquiv} . > $: $>LDAPExpand <$1 < @ $2 . >> <$1 @ $M> <>',
-`dnl')
-
-ifdef(`_MAILER_smtp_',
-`# handle numeric address spec
-dnl there is no check whether this is really an IP number
-R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
-R$* < @ [ $+ ] : > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
-R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
-R$* < @ [ $+ ] : $+ > $* $#_SMTP_ $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer',
- `dnl')
-
-ifdef(`_VIRTUSER_TABLE_', `dnl
-# handle virtual users
-ifdef(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_',`dnl
-dnl this is not a documented option
-dnl it stops looping in virtusertable mapping if input and output
-dnl are identical, i.e., if address A is mapped to A.
-dnl it does not deal with multi-level recursion
-# handle full domains in RHS of virtusertable
-R$+ < @ $+ > $: $(macro {RecipientAddress} $) $1 < @ $2 >
-R$+ < @ $+ > $: <?> $1 < @ $2 > $| $>final $1 < @ $2 >
-R<?> $+ $| $+ $: $1 $(macro {RecipientAddress} $@ $2 $)
-R<?> $+ $| $* $: $1',
-`dnl')
-R$+ $: <!> $1 Mark for lookup
-dnl input: <!> local<@domain>
-ifdef(`_VIRTUSER_ENTIRE_DOMAIN_',
-`R<!> $+ < @ $* $={VirtHost} . > $: < $(virtuser $1 @ $2 $3 $@ $1 $: @ $) > $1 < @ $2 $3 . >',
-`R<!> $+ < @ $={VirtHost} . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >')
-dnl input: <result-of-lookup | @> local<@domain> | <!> local<@domain>
-R<!> $+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-dnl if <@> local<@domain>: no match but try lookup
-dnl user+detail: try user++@domain if detail not empty
-R<@> $+ + $+ < @ $* . >
- $: < $(virtuser $1 + + @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . >
-dnl user+detail: try user+*@domain
-R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . >
-dnl user+detail: try user@domain
-R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . >
-dnl try default entry: @domain
-dnl ++@domain
-R<@> $+ + $+ < @ $+ . > $: < $(virtuser + + @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . >
-dnl +*@domain
-R<@> $+ + $* < @ $+ . > $: < $(virtuser + * @ $3 $@ $1 $@ $2 $@ +$2 $: @ $) > $1 + $2 < @ $3 . >
-dnl @domain if +detail exists
-dnl if no match, change marker to prevent a second @domain lookup
-R<@> $+ + $* < @ $+ . > $: < $(virtuser @ $3 $@ $1 $@ $2 $@ +$2 $: ! $) > $1 + $2 < @ $3 . >
-dnl without +detail
-R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
-dnl no match
-R<@> $+ $: $1
-dnl remove mark
-R<!> $+ $: $1
-R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
-R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2
-ifdef(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_',`dnl
-# check virtuser input address against output address, if same, skip recursion
-R< $+ > $+ < @ $+ > $: < $1 > $2 < @ $3 > $| $1
-# it is the same: stop now
-R< $+ > $+ < @ $+ > $| $&{RecipientAddress} $: $>ParseLocal $>Parse0 $>canonify $1
-R< $+ > $+ < @ $+ > $| $* $: < $1 > $2 < @ $3 >
-dnl', `dnl')
-dnl this is not a documented option
-dnl it performs no looping at all for virtusertable
-ifdef(`_NO_VIRTUSER_RECURSION_',
-`R< $+ > $+ < @ $+ > $: $>ParseLocal $>Parse0 $>canonify $1',
-`R< $+ > $+ < @ $+ > $: $>Recurse $1')
-dnl', `dnl')
-
-# short circuit local delivery so forwarded email works
-ifdef(`_MAILER_usenet_', `dnl
-R$+ . USENET < @ $=w . > $#usenet $@ usenet $: $1 handle usenet specially', `dnl')
-
-
-ifdef(`_STICKY_LOCAL_DOMAIN_',
-`R$+ < @ $=w . > $: < $H > $1 < @ $2 . > first try hub
-R< $+ > $+ < $+ > $>MailerToTriple < $1 > $2 < $3 > yep ....
-dnl $H empty (but @$=w.)
-R< > $+ + $* < $+ > $#_LOCAL_ $: $1 + $2 plussed name?
-R< > $+ < $+ > $#_LOCAL_ $: @ $1 nope, local address',
-`R$=L < @ $=w . > $#_LOCAL_ $: @ $1 special local names
-R$+ < @ $=w . > $#_LOCAL_ $: $1 regular local name')
-
-ifdef(`_MAILER_TABLE_', `dnl
-# not local -- try mailer table lookup
-R$* <@ $+ > $* $: < $2 > $1 < @ $2 > $3 extract host name
-R< $+ . > $* $: < $1 > $2 strip trailing dot
-R< $+ > $* $: < $(mailertable $1 $) > $2 lookup
-dnl it is $~[ instead of $- to avoid matches on IPv6 addresses
-R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 check -- resolved?
-R< $+ > $* $: $>Mailertable <$1> $2 try domain',
-`dnl')
-undivert(4)dnl UUCP rules from `MAILER(uucp)'
-
-ifdef(`_NO_UUCP_', `dnl',
-`# resolve remotely connected UUCP links (if any)
-ifdef(`_CLASS_V_',
-`R$* < @ $=V . UUCP . > $* $: $>MailerToTriple < $V > $1 <@$2.UUCP.> $3',
- `dnl')
-ifdef(`_CLASS_W_',
-`R$* < @ $=W . UUCP . > $* $: $>MailerToTriple < $W > $1 <@$2.UUCP.> $3',
- `dnl')
-ifdef(`_CLASS_X_',
-`R$* < @ $=X . UUCP . > $* $: $>MailerToTriple < $X > $1 <@$2.UUCP.> $3',
- `dnl')')
-
-# resolve fake top level domains by forwarding to other hosts
-ifdef(`BITNET_RELAY',
-`R$*<@$+.BITNET.>$* $: $>MailerToTriple < $B > $1 <@$2.BITNET.> $3 user@host.BITNET',
- `dnl')
-ifdef(`DECNET_RELAY',
-`R$*<@$+.DECNET.>$* $: $>MailerToTriple < $C > $1 <@$2.DECNET.> $3 user@host.DECNET',
- `dnl')
-ifdef(`_MAILER_pop_',
-`R$+ < @ POP. > $#pop $: $1 user@POP',
- `dnl')
-ifdef(`_MAILER_fax_',
-`R$+ < @ $+ .FAX. > $#fax $@ $2 $: $1 user@host.FAX',
-`ifdef(`FAX_RELAY',
-`R$*<@$+.FAX.>$* $: $>MailerToTriple < $F > $1 <@$2.FAX.> $3 user@host.FAX',
- `dnl')')
-
-ifdef(`UUCP_RELAY',
-`# forward non-local UUCP traffic to our UUCP relay
-R$*<@$*.UUCP.>$* $: $>MailerToTriple < $Y > $1 <@$2.UUCP.> $3 uucp mail',
-`ifdef(`_MAILER_uucp_',
-`# forward other UUCP traffic straight to UUCP
-R$* < @ $+ .UUCP. > $* $#_UUCP_ $@ $2 $: $1 < @ $2 .UUCP. > $3 user@host.UUCP',
- `dnl')')
-ifdef(`_MAILER_usenet_', `
-# addresses sent to net.group.USENET will get forwarded to a newsgroup
-R$+ . USENET $#usenet $@ usenet $: $1',
- `dnl')
-
-ifdef(`_LOCAL_RULES_',
-`# figure out what should stay in our local mail system
-undivert(1)', `dnl')
-
-# pass names that still have a host to a smarthost (if defined)
-R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
-
-# deal with other remote names
-ifdef(`_MAILER_smtp_',
-`R$* < @$* > $* $#_SMTP_ $@ $2 $: $1 < @ $2 > $3 user@host.domain',
-`R$* < @$* > $* $#error $@ 5.1.2 $: "_CODE553 Unrecognized host name " $2')
-
-# handle locally delivered names
-R$=L $#_LOCAL_ $: @ $1 special local names
-R$+ $#_LOCAL_ $: $1 regular local names
-
-###########################################################################
-### Ruleset 5 -- special rewriting after aliases have been expanded ###
-###########################################################################
-
-SLocal_localaddr
-Slocaladdr=5
-R$+ $: $1 $| $>"Local_localaddr" $1
-R$+ $| $#ok $@ $1 no change
-R$+ $| $#$* $#$2
-R$+ $| $* $: $1
-
-ifdef(`_PRESERVE_LUSER_HOST_', `dnl
-# Preserve rcpt_host in {Host}
-R$+ $: $1 $| $&h $| $&{Host} check h and {Host}
-R$+ $| $| $: $(macro {Host} $@ $) $1 no h or {Host}
-R$+ $| $| $+ $: $1 h not set, {Host} set
-R$+ $| +$* $| $* $: $1 h is +detail, {Host} set
-R$+ $| $* @ $+ $| $* $: $(macro {Host} $@ @$3 $) $1 set {Host} to host in h
-R$+ $| $+ $| $* $: $(macro {Host} $@ @$2 $) $1 set {Host} to h
-')dnl
-
-ifdef(`_FFR_5_', `dnl
-# Preserve host in a macro
-R$+ $: $(macro {LocalAddrHost} $) $1
-R$+ @ $+ $: $(macro {LocalAddrHost} $@ @ $2 $) $1')
-
-ifdef(`_PRESERVE_LOCAL_PLUS_DETAIL_', `', `dnl
-# deal with plussed users so aliases work nicely
-R$+ + * $#_LOCAL_ $@ $&h $: $1`'ifdef(`_FFR_5_', ` $&{LocalAddrHost}')
-R$+ + $* $#_LOCAL_ $@ + $2 $: $1 + *`'ifdef(`_FFR_5_', ` $&{LocalAddrHost}')
-')
-# prepend an empty "forward host" on the front
-R$+ $: <> $1
-
-ifdef(`LUSER_RELAY', `dnl
-# send unrecognized local users to a relay host
-ifdef(`_PRESERVE_LOCAL_PLUS_DETAIL_', `dnl
-R< > $+ + $* $: < ? $L > <+ $2> $(user $1 $) look up user+
-R< > $+ $: < ? $L > < > $(user $1 $) look up user
-R< ? $* > < $* > $+ <> $: < > $3 $2 found; strip $L
-R< ? $* > < $* > $+ $: < $1 > $3 $2 not found', `
-R< > $+ $: < $L > $(user $1 $) look up user
-R< $* > $+ <> $: < > $2 found; strip $L')
-ifdef(`_PRESERVE_LUSER_HOST_', `dnl
-R< $+ > $+ $: < $1 > $2 $&{Host}')
-dnl')
-
-ifdef(`MAIL_HUB', `dnl
-R< > $+ $: < $H > $1 try hub', `dnl')
-ifdef(`LOCAL_RELAY', `dnl
-R< > $+ $: < $R > $1 try relay', `dnl')
-ifdef(`_PRESERVE_LOCAL_PLUS_DETAIL_', `dnl
-R< > $+ $@ $1', `dnl
-R< > $+ $: < > < $1 <> $&h > nope, restore +detail
-ifdef(`_PRESERVE_LUSER_HOST_', `dnl
-R< > < $+ @ $+ <> + $* > $: < > < $1 + $3 @ $2 > check whether +detail')
-R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
-R< > < $+ <> $* > $: < > < $1 > else discard
-R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
-R< > < $+ > + $* $#_LOCAL_ $@ $2 $: @ $1`'ifdef(`_FFR_5_', ` $&{LocalAddrHost}') strip the extra +
-R< > < $+ > $@ $1 no +detail
-R$+ $: $1 <> $&h add +detail back in
-ifdef(`_PRESERVE_LUSER_HOST_', `dnl
-R$+ @ $+ <> + $* $: $1 + $3 @ $2 check whether +detail')
-R$+ <> + $* $: $1 + $2 check whether +detail
-R$+ <> $* $: $1 else discard')
-R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
-R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
-ifdef(`_PRESERVE_LUSER_HOST_', `dnl
-dnl it is $~[ instead of $- to avoid matches on IPv6 addresses
-R< $~[ : $+ > $+ @ $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $4 >')
-R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
-ifdef(`_PRESERVE_LUSER_HOST_', `dnl
-R< $+ > $+ @ $+ $@ $>MailerToTriple < $1 > $2 < @ $3 >')
-R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
-
-ifdef(`_MAILER_TABLE_', `dnl
-ifdef(`_LDAP_ROUTING_', `dnl
-###################################################################
-### Ruleset LDAPMailertable -- mailertable lookup for LDAP ###
-dnl input: <Domain> FullAddress
-###################################################################
-
-SLDAPMailertable
-R< $+ > $* $: < $(mailertable $1 $) > $2 lookup
-R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 check resolved?
-R< $+ > $* $: < $1 > $>Mailertable <$1> $2 try domain
-R< $+ > $#$* $#$2 found
-R< $+ > $* $#_RELAY_ $@ $1 $: $2 not found, direct relay',
-`dnl')
-
-###################################################################
-### Ruleset 90 -- try domain part of mailertable entry ###
-dnl input: LeftPartOfDomain <RightPartOfDomain> FullAddress
-###################################################################
-
-SMailertable=90
-dnl shift and check
-dnl %2 is not documented in cf/README
-R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4
-dnl it is $~[ instead of $- to avoid matches on IPv6 addresses
-R$* <$~[ : $* > $* $>MailerToTriple < $2 : $3 > $4 check -- resolved?
-R$* < . $+ > $* $@ $>Mailertable $1 . <$2> $3 no -- strip & try again
-dnl is $2 always empty?
-R$* < $* > $* $: < $(mailertable . $@ $1$2 $) > $3 try "."
-R< $~[ : $* > $* $>MailerToTriple < $1 : $2 > $3 "." found?
-dnl return full address
-R< $* > $* $@ $2 no mailertable match',
-`dnl')
-
-###################################################################
-### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
-dnl input: in general: <[mailer:]host> lp<@domain>rest
-dnl <> address -> address
-dnl <error:d.s.n:text> -> error
-dnl <error:keyword:text> -> error
-dnl <error:text> -> error
-dnl <mailer:user@host> lp<@domain>rest -> mailer host user
-dnl <mailer:host> address -> mailer host address
-dnl <localdomain> address -> address
-dnl <host> address -> relay host address
-###################################################################
-
-SMailerToTriple=95
-R< > $* $@ $1 strip off null relay
-R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
-R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
-R< error : $+ > $* $#error $: $1
-R< local : $* > $* $>CanonLocal < $1 > $2
-dnl it is $~[ instead of $- to avoid matches on IPv6 addresses
-R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
-R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
-R< $=w > $* $@ $2 delete local host
-R< $+ > $* $#_RELAY_ $@ $1 $: $2 use unqualified mailer
-
-###################################################################
-### Ruleset CanonLocal -- canonify local: syntax ###
-dnl input: <user> address
-dnl <x> <@host> : rest -> Recurse rest
-dnl <x> p1 $=O p2 <@host> -> Recurse p1 $=O p2
-dnl <> user <@host> rest -> local user@host user
-dnl <> user -> local user user
-dnl <user@host> lp <@domain> rest -> <user> lp <@host> [cont]
-dnl <user> lp <@host> rest -> local lp@host user
-dnl <user> lp -> local lp user
-###################################################################
-
-SCanonLocal
-# strip local host from routed addresses
-R< $* > < @ $+ > : $+ $@ $>Recurse $3
-R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
-
-# strip trailing dot from any host name that may appear
-R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
-
-# handle local: syntax -- use old user, either with or without host
-R< > $* < @ $* > $* $#_LOCAL_ $@ $1@$2 $: $1
-R< > $+ $#_LOCAL_ $@ $1 $: $1
-
-# handle local:user@host syntax -- ignore host part
-R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
-
-# handle local:user syntax
-R< $+ > $* <@ $* > $* $#_LOCAL_ $@ $2@$3 $: $1
-R< $+ > $* $#_LOCAL_ $@ $2 $: $1
-
-###################################################################
-### Ruleset 93 -- convert header names to masqueraded form ###
-###################################################################
-
-SMasqHdr=93
-
-ifdef(`_GENERICS_TABLE_', `dnl
-# handle generics database
-ifdef(`_GENERICS_ENTIRE_DOMAIN_',
-dnl if generics should be applied add a @ as mark
-`R$+ < @ $* $=G . > $: < $1@$2$3 > $1 < @ $2$3 . > @ mark',
-`R$+ < @ $=G . > $: < $1@$2 > $1 < @ $2 . > @ mark')
-R$+ < @ *LOCAL* > $: < $1@$j > $1 < @ *LOCAL* > @ mark
-dnl workspace: either user<@domain> or <user@domain> user <@domain> @
-dnl ignore the first case for now
-dnl if it has the mark lookup full address
-dnl broken: %1 is full address not just detail
-R< $+ > $+ < $* > @ $: < $(generics $1 $: @ $1 $) > $2 < $3 >
-dnl workspace: ... or <match|@user@domain> user <@domain>
-dnl no match, try user+detail@domain
-R<@$+ + $* @ $+> $+ < @ $+ >
- $: < $(generics $1+*@$3 $@ $2 $:@$1 + $2@$3 $) > $4 < @ $5 >
-R<@$+ + $* @ $+> $+ < @ $+ >
- $: < $(generics $1@$3 $: $) > $4 < @ $5 >
-dnl no match, remove mark
-R<@$+ > $+ < @ $+ > $: < > $2 < @ $3 >
-dnl no match, try @domain for exceptions
-R< > $+ < @ $+ . > $: < $(generics @$2 $@ $1 $: $) > $1 < @ $2 . >
-dnl workspace: ... or <match> user <@domain>
-dnl no match, try local part
-R< > $+ < @ $+ > $: < $(generics $1 $: $) > $1 < @ $2 >
-R< > $+ + $* < @ $+ > $: < $(generics $1+* $@ $2 $: $) > $1 + $2 < @ $3 >
-R< > $+ + $* < @ $+ > $: < $(generics $1 $: $) > $1 + $2 < @ $3 >
-R< $* @ $* > $* < $* > $@ $>canonify $1 @ $2 found qualified
-R< $+ > $* < $* > $: $>canonify $1 @ *LOCAL* found unqualified
-R< > $* $: $1 not found',
-`dnl')
-
-# do not masquerade anything in class N
-R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
-
-ifdef(`MASQUERADE_NAME', `dnl
-# special case the users that should be exposed
-R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
-ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
-`R$=E < @ $* $=M . > $@ $1 < @ $2 $3 . >',
-`R$=E < @ $=M . > $@ $1 < @ $2 . >')
-ifdef(`_LIMITED_MASQUERADE_', `dnl',
-`R$=E < @ $=w . > $@ $1 < @ $2 . >')
-
-# handle domain-specific masquerading
-ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
-`R$* < @ $* $=M . > $* $: $1 < @ $2 $3 . @ $M > $4 convert masqueraded doms',
-`R$* < @ $=M . > $* $: $1 < @ $2 . @ $M > $3 convert masqueraded doms')
-ifdef(`_LIMITED_MASQUERADE_', `dnl',
-`R$* < @ $=w . > $* $: $1 < @ $2 . @ $M > $3')
-R$* < @ *LOCAL* > $* $: $1 < @ $j . @ $M > $2
-R$* < @ $+ @ > $* $: $1 < @ $2 > $3 $M is null
-R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
-dnl', `dnl no masquerading
-dnl just fix *LOCAL* leftovers
-R$* < @ *LOCAL* > $@ $1 < @ $j . >')
-
-###################################################################
-### Ruleset 94 -- convert envelope names to masqueraded form ###
-###################################################################
-
-SMasqEnv=94
-ifdef(`_MASQUERADE_ENVELOPE_',
-`R$+ $@ $>MasqHdr $1',
-`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2')
-
-###################################################################
-### Ruleset 98 -- local part of ruleset zero (can be null) ###
-###################################################################
-
-SParseLocal=98
-undivert(3)dnl LOCAL_RULE_0
-
-ifdef(`_LDAP_ROUTING_', `dnl
-######################################################################
-### LDAPExpand: Expand address using LDAP routing
-###
-### Parameters:
-### <$1> -- parsed address (user < @ domain . >) (pass through)
-### <$2> -- RFC822 address (user @ domain) (used for lookup)
-### <$3> -- +detail information
-###
-### Returns:
-### Mailer triplet ($#mailer $@ host $: address)
-### Parsed address (user < @ domain . >)
-######################################################################
-
-# SMTP operation modes
-C{SMTPOpModes} s d D
-
-SLDAPExpand
-# do the LDAP lookups
-R<$+><$+><$*> $: <$(ldapmra $2 $: $)> <$(ldapmh $2 $: $)> <$1> <$2> <$3>
-
-# look for temporary failures and...
-R<$* <TMPF>> <$*> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3
-R<$*> <$* <TMPF>> <$+> <$+> <$*> $: $&{opMode} $| TMPF <$&{addr_type}> $| $3
-ifelse(_LDAP_ROUTE_MAPTEMP_, `_TEMPFAIL_', `dnl
-# ... temp fail RCPT SMTP commands
-R$={SMTPOpModes} $| TMPF <e r> $| $+ $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."')
-# ... return original address for MTA to queue up
-R$* $| TMPF <$*> $| $+ $@ $3
-
-# if mailRoutingAddress and local or non-existant mailHost,
-# return the new mailRoutingAddress
-ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl
-R<$+@$+> <$=w> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1 $6 @ $2
-R<$+@$+> <> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1 $5 @ $2')
-R<$+> <$=w> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1
-R<$+> <> <$+> <$+> <$*> $@ $>Parse0 $>canonify $1
-
-
-# if mailRoutingAddress and non-local mailHost,
-# relay to mailHost with new mailRoutingAddress
-ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl
-ifdef(`_MAILER_TABLE_', `dnl
-# check mailertable for host, relay from there
-R<$+@$+> <$+> <$+> <$+> <$*> $>LDAPMailertable <$3> $>canonify $1 $6 @ $2',
-`R<$+@$+> <$+> <$+> <$+> <$*> $#_RELAY_ $@ $3 $: $>canonify $1 $6 @ $2')')
-ifdef(`_MAILER_TABLE_', `dnl
-# check mailertable for host, relay from there
-R<$+> <$+> <$+> <$+> <$*> $>LDAPMailertable <$2> $>canonify $1',
-`R<$+> <$+> <$+> <$+> <$*> $#_RELAY_ $@ $2 $: $>canonify $1')
-
-# if no mailRoutingAddress and local mailHost,
-# return original address
-R<> <$=w> <$+> <$+> <$*> $@ $2
-
-
-# if no mailRoutingAddress and non-local mailHost,
-# relay to mailHost with original address
-ifdef(`_MAILER_TABLE_', `dnl
-# check mailertable for host, relay from there
-R<> <$+> <$+> <$+> <$*> $>LDAPMailertable <$1> $2',
-`R<> <$+> <$+> <$+> <$*> $#_RELAY_ $@ $1 $: $2')
-
-ifdef(`_LDAP_ROUTE_DETAIL_',
-`# if no mailRoutingAddress and no mailHost,
-# try without +detail
-R<> <> <$+> <$+ + $* @ $+> <> $@ $>LDAPExpand <$1> <$2 @ $4> <+$3>')dnl
-
-ifdef(`_LDAP_ROUTE_NODOMAIN_', `dnl', `
-# if still no mailRoutingAddress and no mailHost,
-# try @domain
-ifelse(_LDAP_ROUTE_DETAIL_, `_PRESERVE_', `dnl
-R<> <> <$+> <$+ + $* @ $+> <> $@ $>LDAPExpand <$1> <@ $4> <+$3>')
-R<> <> <$+> <$+ @ $+> <$*> $@ $>LDAPExpand <$1> <@ $3> <$4>')
-
-# if no mailRoutingAddress and no mailHost and this was a domain attempt,
-ifelse(_LDAP_ROUTING_, `_MUST_EXIST_', `dnl
-# user does not exist
-R<> <> <$+> <@ $+> <$*> $: <?> < $&{addr_type} > < $1 >
-# only give error for envelope recipient
-R<?> <e r> <$+> $#error $@ nouser $: "550 User unknown"
-ifdef(`_LDAP_SENDER_MUST_EXIST_', `dnl
-# and the sender too
-R<?> <e s> <$+> $#error $@ nouser $: "550 User unknown"')
-R<?> <$*> <$+> $@ $2',
-`dnl
-# return the original address
-R<> <> <$+> <@ $+> <$*> $@ $1')',
-`dnl')
-
-ifelse(substr(confDELIVERY_MODE,0,1), `d', `errprint(`WARNING: Antispam rules not available in deferred delivery mode.
-')')
-ifdef(`_ACCESS_TABLE_', `dnl', `divert(-1)')
-######################################################################
-### D: LookUpDomain -- search for domain in access database
-###
-### Parameters:
-### <$1> -- key (domain name)
-### <$2> -- default (what to return if not found in db)
-dnl must not be empty
-### <$3> -- mark (must be <(!|+) single-token>)
-### ! does lookup only with tag
-### + does lookup with and without tag
-### <$4> -- passthru (additional data passed unchanged through)
-dnl returns: <default> <passthru>
-dnl <result> <passthru>
-######################################################################
-
-SD
-dnl workspace <key> <default> <passthru> <mark>
-dnl lookup with tag (in front, no delimiter here)
-dnl 2 3 4 5
-R<$*> <$+> <$- $-> <$*> $: < $(access $4`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3 $4> <$5>
-dnl workspace <result-of-lookup|?> <key> <default> <passthru> <mark>
-dnl lookup without tag?
-dnl 1 2 3 4
-R<?> <$+> <$+> <+ $-> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <+ $3> <$4>
-ifdef(`_LOOKUPDOTDOMAIN_', `dnl omit first component: lookup .rest
-dnl XXX apply this also to IP addresses?
-dnl currently it works the wrong way round for [1.2.3.4]
-dnl 1 2 3 4 5 6
-R<?> <$+.$+> <$+> <$- $-> <$*> $: < $(access $5`'_TAG_DELIM_`'.$2 $: ? $) > <$1.$2> <$3> <$4 $5> <$6>
-dnl 1 2 3 4 5
-R<?> <$+.$+> <$+> <+ $-> <$*> $: < $(access .$2 $: ? $) > <$1.$2> <$3> <+ $4> <$5>', `dnl')
-ifdef(`_ACCESS_SKIP_', `dnl
-dnl found SKIP: return <default> and <passthru>
-dnl 1 2 3 4 5
-R<SKIP> <$+> <$+> <$- $-> <$*> $@ <$2> <$5>', `dnl')
-dnl not found: IPv4 net (no check is done whether it is an IP number!)
-dnl 1 2 3 4 5 6
-R<?> <[$+.$-]> <$+> <$- $-> <$*> $@ $>D <[$1]> <$3> <$4 $5> <$6>
-ifdef(`NO_NETINET6', `dnl',
-`dnl not found: IPv6 net
-dnl (could be merged with previous rule if we have a class containing .:)
-dnl 1 2 3 4 5 6
-R<?> <[$+::$-]> <$+> <$- $-> <$*> $: $>D <[$1]> <$3> <$4 $5> <$6>
-R<?> <[$+:$-]> <$+> <$- $-> <$*> $: $>D <[$1]> <$3> <$4 $5> <$6>')
-dnl not found, but subdomain: try again
-dnl 1 2 3 4 5 6
-R<?> <$+.$+> <$+> <$- $-> <$*> $@ $>D <$2> <$3> <$4 $5> <$6>
-ifdef(`_FFR_LOOKUPTAG_', `dnl lookup Tag:
-dnl 1 2 3 4
-R<?> <$+> <$+> <! $-> <$*> $: < $(access $3`'_TAG_DELIM_ $: ? $) > <$1> <$2> <! $3> <$4>', `dnl')
-dnl not found, no subdomain: return <default> and <passthru>
-dnl 1 2 3 4 5
-R<?> <$+> <$+> <$- $-> <$*> $@ <$2> <$5>
-ifdef(`_ATMPF_', `dnl tempfail?
-dnl 2 3 4 5 6
-R<$* _ATMPF_> <$+> <$+> <$- $-> <$*> $@ <_ATMPF_> <$6>', `dnl')
-dnl return <result of lookup> and <passthru>
-dnl 2 3 4 5 6
-R<$*> <$+> <$+> <$- $-> <$*> $@ <$1> <$6>
-
-######################################################################
-### A: LookUpAddress -- search for host address in access database
-###
-### Parameters:
-### <$1> -- key (dot quadded host address)
-### <$2> -- default (what to return if not found in db)
-dnl must not be empty
-### <$3> -- mark (must be <(!|+) single-token>)
-### ! does lookup only with tag
-### + does lookup with and without tag
-### <$4> -- passthru (additional data passed through)
-dnl returns: <default> <passthru>
-dnl <result> <passthru>
-######################################################################
-
-SA
-dnl lookup with tag
-dnl 2 3 4 5
-R<$+> <$+> <$- $-> <$*> $: < $(access $4`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3 $4> <$5>
-dnl lookup without tag
-dnl 1 2 3 4
-R<?> <$+> <$+> <+ $-> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <+ $3> <$4>
-dnl workspace <result-of-lookup|?> <key> <default> <mark> <passthru>
-ifdef(`_ACCESS_SKIP_', `dnl
-dnl found SKIP: return <default> and <passthru>
-dnl 1 2 3 4 5
-R<SKIP> <$+> <$+> <$- $-> <$*> $@ <$2> <$5>', `dnl')
-ifdef(`NO_NETINET6', `dnl',
-`dnl no match; IPv6: remove last part
-dnl 1 2 3 4 5 6
-R<?> <$+::$-> <$+> <$- $-> <$*> $@ $>A <$1> <$3> <$4 $5> <$6>
-R<?> <$+:$-> <$+> <$- $-> <$*> $@ $>A <$1> <$3> <$4 $5> <$6>')
-dnl no match; IPv4: remove last part
-dnl 1 2 3 4 5 6
-R<?> <$+.$-> <$+> <$- $-> <$*> $@ $>A <$1> <$3> <$4 $5> <$6>
-dnl no match: return default
-dnl 1 2 3 4 5
-R<?> <$+> <$+> <$- $-> <$*> $@ <$2> <$5>
-ifdef(`_ATMPF_', `dnl tempfail?
-dnl 2 3 4 5 6
-R<$* _ATMPF_> <$+> <$+> <$- $-> <$*> $@ <_ATMPF_> <$6>', `dnl')
-dnl match: return result
-dnl 2 3 4 5 6
-R<$*> <$+> <$+> <$- $-> <$*> $@ <$1> <$6>
-dnl endif _ACCESS_TABLE_
-divert(0)
-######################################################################
-### CanonAddr -- Convert an address into a standard form for
-### relay checking. Route address syntax is
-### crudely converted into a %-hack address.
-###
-### Parameters:
-### $1 -- full recipient address
-###
-### Returns:
-### parsed address, not in source route form
-dnl user%host%host<@domain>
-dnl host!user<@domain>
-######################################################################
-
-SCanonAddr
-R$* $: $>Parse0 $>canonify $1 make domain canonical
-ifdef(`_USE_DEPRECATED_ROUTE_ADDR_',`dnl
-R< @ $+ > : $* @ $* < @ $1 > : $2 % $3 change @ to % in src route
-R$* < @ $+ > : $* : $* $3 $1 < @ $2 > : $4 change to % hack.
-R$* < @ $+ > : $* $3 $1 < @ $2 >
-dnl')
-
-######################################################################
-### ParseRecipient -- Strip off hosts in $=R as well as possibly
-### $* $=m or the access database.
-### Check user portion for host separators.
-###
-### Parameters:
-### $1 -- full recipient address
-###
-### Returns:
-### parsed, non-local-relaying address
-######################################################################
-
-SParseRecipient
-dnl mark and canonify address
-R$* $: <?> $>CanonAddr $1
-dnl workspace: <?> localpart<@domain[.]>
-R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
-dnl workspace: <?> localpart<@domain>
-R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
-
-# if no $=O character, no host in the user portion, we are done
-R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
-dnl no $=O in localpart: return
-R<?> $* $@ $1
-
-dnl workspace: <NO> localpart<@domain>, where localpart contains $=O
-dnl mark everything which has an "authorized" domain with <RELAY>
-ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
-# if we relay, check username portion for user%host so host can be checked also
-R<NO> $* < @ $* $=m > $: <RELAY> $1 < @ $2 $3 >', `dnl')
-dnl workspace: <(NO|RELAY)> localpart<@domain>, where localpart contains $=O
-dnl if mark is <NO> then change it to <RELAY> if domain is "authorized"
-
-dnl what if access map returns something else than RELAY?
-dnl we are only interested in RELAY entries...
-dnl other To: entries: blacklist recipient; generic entries?
-dnl if it is an error we probably do not want to relay anyway
-ifdef(`_RELAY_HOSTS_ONLY_',
-`R<NO> $* < @ $=R > $: <RELAY> $1 < @ $2 >
-ifdef(`_ACCESS_TABLE_', `dnl
-R<NO> $* < @ $+ > $: <$(access To:$2 $: NO $)> $1 < @ $2 >
-R<NO> $* < @ $+ > $: <$(access $2 $: NO $)> $1 < @ $2 >',`dnl')',
-`R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
-ifdef(`_ACCESS_TABLE_', `dnl
-R<NO> $* < @ $+ > $: $>D <$2> <NO> <+ To> <$1 < @ $2 >>
-R<$+> <$+> $: <$1> $2',`dnl')')
-
-
-ifdef(`_RELAY_MX_SERVED_', `dnl
-dnl do "we" ($=w) act as backup MX server for the destination domain?
-R<NO> $* < @ $+ > $: <MX> < : $(mxserved $2 $) : > < $1 < @$2 > >
-R<MX> < : $* <TEMP> : > $* $#TEMP $@ 4.4.0 $: "450 Can not check MX records for recipient host " $1
-dnl yes: mark it as <RELAY>
-R<MX> < $* : $=w. : $* > < $+ > $: <RELAY> $4
-dnl no: put old <NO> mark back
-R<MX> < : $* : > < $+ > $: <NO> $2', `dnl')
-
-dnl do we relay to this recipient domain?
-R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
-dnl something else
-R<$+> $* $@ $2
-
-
-######################################################################
-### check_relay -- check hostname/address on SMTP startup
-######################################################################
-
-ifdef(`_CONTROL_IMMEDIATE_',`dnl
-Scheck_relay
-ifdef(`_RATE_CONTROL_IMMEDIATE_',`dnl
-dnl workspace: ignored...
-R$* $: $>"RateControl" dummy', `dnl')
-ifdef(`_CONN_CONTROL_IMMEDIATE_',`dnl
-dnl workspace: ignored...
-R$* $: $>"ConnControl" dummy', `dnl')
-dnl')
-
-SLocal_check_relay
-Scheck`'_U_`'relay
-ifdef(`_USE_CLIENT_PTR_',`dnl
-R$* $| $* $: $&{client_ptr} $| $2', `dnl')
-R$* $: $1 $| $>"Local_check_relay" $1
-R$* $| $* $| $#$* $#$3
-R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
-
-SBasic_check_relay
-# check for deferred delivery mode
-R$* $: < $&{deliveryMode} > $1
-R< d > $* $@ deferred
-R< $* > $* $: $2
-
-ifdef(`_ACCESS_TABLE_', `dnl
-dnl workspace: {client_name} $| {client_addr}
-R$+ $| $+ $: $>D < $1 > <?> <+ Connect> < $2 >
-dnl workspace: <result-of-lookup> <{client_addr}>
-dnl OR $| $+ if client_name is empty
-R $| $+ $: $>A < $1 > <?> <+ Connect> <> empty client_name
-dnl workspace: <result-of-lookup> <{client_addr}>
-R<?> <$+> $: $>A < $1 > <?> <+ Connect> <> no: another lookup
-dnl workspace: <result-of-lookup> (<>|<{client_addr}>)
-R<?> <$*> $: OK found nothing
-dnl workspace: <result-of-lookup> (<>|<{client_addr}>) | OK
-R<$={Accept}> <$*> $@ $1 return value of lookup
-R<REJECT> <$*> $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: "550 Access denied"')
-R<DISCARD> <$*> $#discard $: discard
-R<QUARANTINE:$+> <$*> $#error $@ quarantine $: $1
-dnl error tag
-R<ERROR:$-.$-.$-:$+> <$*> $#error $@ $1.$2.$3 $: $4
-R<ERROR:$+> <$*> $#error $: $1
-ifdef(`_ATMPF_', `R<$* _ATMPF_> <$*> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-dnl generic error from access map
-R<$+> <$*> $#error $: $1', `dnl')
-
-ifdef(`_RBL_',`dnl
-# DNS based IP address spam list
-dnl workspace: ignored...
-R$* $: $&{client_addr}
-R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $)
-R<?>OK $: OKSOFAR
-R<?>$+ $#error $@ 5.7.1 $: "550 Rejected: " $&{client_addr} " listed at _RBL_"',
-`dnl')
-ifdef(`_RATE_CONTROL_',`dnl
-ifdef(`_RATE_CONTROL_IMMEDIATE_',`', `dnl
-dnl workspace: ignored...
-R$* $: $>"RateControl" dummy')', `dnl')
-ifdef(`_CONN_CONTROL_',`dnl
-ifdef(`_CONN_CONTROL_IMMEDIATE_',`',`dnl
-dnl workspace: ignored...
-R$* $: $>"ConnControl" dummy')', `dnl')
-undivert(8)
-ifdef(`_REQUIRE_RDNS_', `dnl
-R$* $: $&{client_addr} $| $&{client_resolve}
-R$=R $* $@ RELAY We relay for these
-R$* $| OK $@ OK Resolves.
-R$* $| FAIL $#error $@ 5.7.1 $: 550 Fix reverse DNS for $1
-R$* $| TEMP $#error $@ 4.1.8 $: 451 Client IP address $1 does not resolve
-R$* $| FORGED $#error $@ 4.1.8 $: 451 Possibly forged hostname for $1
-', `dnl')
-
-######################################################################
-### check_mail -- check SMTP ``MAIL FROM:'' command argument
-######################################################################
-
-SLocal_check_mail
-Scheck`'_U_`'mail
-R$* $: $1 $| $>"Local_check_mail" $1
-R$* $| $#$* $#$2
-R$* $| $* $@ $>"Basic_check_mail" $1
-
-SBasic_check_mail
-# check for deferred delivery mode
-R$* $: < $&{deliveryMode} > $1
-R< d > $* $@ deferred
-R< $* > $* $: $2
-
-# authenticated?
-dnl done first: we can require authentication for every mail transaction
-dnl workspace: address as given by MAIL FROM: (sender)
-R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
-R$* $| $#$+ $#$2
-dnl undo damage: remove result of tls_client call
-R$* $| $* $: $1
-
-dnl workspace: address as given by MAIL FROM:
-R<> $@ <OK> we MUST accept <> (RFC 1123)
-ifdef(`_ACCEPT_UNQUALIFIED_SENDERS_',`dnl',`dnl
-dnl do some additional checks
-dnl no user@host
-dnl no user@localhost (if nonlocal sender)
-dnl this is a pretty simple canonification, it will not catch every case
-dnl just make sure the address has <> around it (which is required by
-dnl the RFC anyway, maybe we should complain if they are missing...)
-dnl dirty trick: if it is user@host, just add a dot: user@host. this will
-dnl not be modified by host lookups.
-R$+ $: <?> $1
-R<?><$+> $: <@> <$1>
-R<?>$+ $: <@> <$1>
-dnl workspace: <@> <address>
-dnl prepend daemon_flags
-R$* $: $&{daemon_flags} $| $1
-dnl workspace: ${daemon_flags} $| <@> <address>
-dnl do not allow these at all or only from local systems?
-R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
-dnl accept unqualified sender: change mark to avoid test
-R$* u $* $| <@> < $* > $: <?> < $3 >
-dnl workspace: ${daemon_flags} $| <@> <address>
-dnl or: <? ${client_name} > <address>
-dnl or: <?> <address>
-dnl remove daemon_flags
-R$* $| $* $: $2
-# handle case of @localhost on address
-R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
-R<@> < $* @ [127.0.0.1] >
- $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
-R<@> < $* @ localhost.$m >
- $: < ? $&{client_name} > < $1 @ localhost.$m >
-ifdef(`_NO_UUCP_', `dnl',
-`R<@> < $* @ localhost.UUCP >
- $: < ? $&{client_name} > < $1 @ localhost.UUCP >')
-dnl workspace: < ? $&{client_name} > <user@localhost|host>
-dnl or: <@> <address>
-dnl or: <?> <address> (thanks to u in ${daemon_flags})
-R<@> $* $: $1 no localhost as domain
-dnl workspace: < ? $&{client_name} > <user@localhost|host>
-dnl or: <address>
-dnl or: <?> <address> (thanks to u in ${daemon_flags})
-R<? $=w> $* $: $2 local client: ok
-R<? $+> <$+> $#error $@ 5.5.4 $: "_CODE553 Real domain name required for sender address"
-dnl remove <?> (happens only if ${client_name} == "" or u in ${daemon_flags})
-R<?> $* $: $1')
-dnl workspace: address (or <address>)
-R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
-dnl workspace: <?> CanonicalAddress (i.e. address in canonical form localpart<@host>)
-dnl there is nothing behind the <@host> so no trailing $* needed
-R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
-# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
-R<?> $* < @ $* $=P > $: <_RES_OK_> $1 < @ $2 $3 >
-dnl workspace <mark> CanonicalAddress where mark is ? or OK
-dnl A sender address with my local host name ($j) is safe
-R<?> $* < @ $j > $: <_RES_OK_> $1 < @ $j >
-ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',
-`R<?> $* < @ $+ > $: <_RES_OK_> $1 < @ $2 > ... unresolvable OK',
-`R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
-R<? $* <$->> $* < @ $+ >
- $: <$2> $3 < @ $4 >')
-dnl workspace <mark> CanonicalAddress where mark is ?, _RES_OK_, PERM, TEMP
-dnl mark is ? iff the address is user (wo @domain)
-
-ifdef(`_ACCESS_TABLE_', `dnl
-# check sender address: user@address, user@, address
-dnl should we remove +ext from user?
-dnl workspace: <mark> CanonicalAddress where mark is: ?, _RES_OK_, PERM, TEMP
-R<$+> $+ < @ $* > $: @<$1> <$2 < @ $3 >> $| <F:$2@$3> <U:$2@> <D:$3>
-R<$+> $+ $: @<$1> <$2> $| <U:$2@>
-dnl workspace: @<mark> <CanonicalAddress> $| <@type:address> ....
-dnl $| is used as delimiter, otherwise false matches may occur: <user<@domain>>
-dnl will only return user<@domain when "reversing" the args
-R@ <$+> <$*> $| <$+> $: <@> <$1> <$2> $| $>SearchList <+ From> $| <$3> <>
-dnl workspace: <@><mark> <CanonicalAddress> $| <result>
-R<@> <$+> <$*> $| <$*> $: <$3> <$1> <$2> reverse result
-dnl workspace: <result> <mark> <CanonicalAddress>
-# retransform for further use
-dnl required form:
-dnl <ResultOfLookup|mark> CanonicalAddress
-R<?> <$+> <$*> $: <$1> $2 no match
-R<$+> <$+> <$*> $: <$1> $3 relevant result, keep it', `dnl')
-dnl workspace <ResultOfLookup|mark> CanonicalAddress
-dnl mark is ? iff the address is user (wo @domain)
-
-ifdef(`_ACCEPT_UNQUALIFIED_SENDERS_',`dnl',`dnl
-# handle case of no @domain on address
-dnl prepend daemon_flags
-R<?> $* $: $&{daemon_flags} $| <?> $1
-dnl accept unqualified sender: change mark to avoid test
-R$* u $* $| <?> $* $: <_RES_OK_> $3
-dnl remove daemon_flags
-R$* $| $* $: $2
-R<?> $* $: < ? $&{client_addr} > $1
-R<?> $* $@ <_RES_OK_> ...local unqualed ok
-R<? $+> $* $#error $@ 5.5.4 $: "_CODE553 Domain name required for sender address " $&f
- ...remote is not')
-# check results
-R<?> $* $: @ $1 mark address: nothing known about it
-R<$={ResOk}> $* $: @ $2 domain ok
-R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
-R<PERM> $* $#error $@ 5.1.8 $: "_CODE553 Domain of sender address " $&f " does not exist"
-ifdef(`_ACCESS_TABLE_', `dnl
-R<$={Accept}> $* $# $1 accept from access map
-R<DISCARD> $* $#discard $: discard
-R<QUARANTINE:$+> $* $#error $@ quarantine $: $1
-R<REJECT> $* $#error ifdef(`confREJECT_MSG', `$: confREJECT_MSG', `$@ 5.7.1 $: "550 Access denied"')
-dnl error tag
-R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4
-R<ERROR:$+> $* $#error $: $1
-ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-dnl generic error from access map
-R<$+> $* $#error $: $1 error from access db',
-`dnl')
-dnl workspace: @ CanonicalAddress (i.e. address in canonical form localpart<@host>)
-
-ifdef(`_BADMX_CHK_', `dnl
-R@ $*<@$+>$* $: $1<@$2>$3 $| $>BadMX $2
-R$* $| $#$* $#$2
-
-SBadMX
-# Look up MX records and ferret away a copy of the original address.
-# input: domain part of address to check
-R$+ $:<MX><$1><:$(mxlist $1$):><:>
-# workspace: <MX><domain><: mxlist-result $><:>
-R<MX><$+><:$*<TEMP>:><$*> $#error $@ 4.1.2 $: "450 MX lookup failure for "$1
-# workspace: <MX> <original destination> <unchecked mxlist> <checked mxlist>
-# Recursively run badmx check on each mx.
-R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><: $4 $(badmx $2 $):>
-# See if any of them fail.
-R<MX><$*><$*><$*<BADMX>:$*> $#error $@ 5.1.2 $:"550 Illegal MX record for recipient host "$1
-# Reverse the mxlists so we can use the same argument order again.
-R<MX><$*><$*><$*> $:<MX><$1><$3><$2>
-R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(dnsA $2 $) :>
-
-# Reverse the lists so we can use the same argument order again.
-R<MX><$*><$*><$*> $:<MX><$1><$3><$2>
-R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(BadMXIP $2 $) :>
-
-R<MX><$*><$*><$*<BADMXIP>:$*> $#error $@ 5.1.2 $:"550 Invalid MX record for recipient host "$1',
-`dnl')
-
-
-######################################################################
-### check_rcpt -- check SMTP ``RCPT TO:'' command argument
-######################################################################
-
-SLocal_check_rcpt
-Scheck`'_U_`'rcpt
-R$* $: $1 $| $>"Local_check_rcpt" $1
-R$* $| $#$* $#$2
-R$* $| $* $@ $>"Basic_check_rcpt" $1
-
-SBasic_check_rcpt
-# empty address?
-R<> $#error $@ nouser $: "553 User address required"
-R$@ $#error $@ nouser $: "553 User address required"
-# check for deferred delivery mode
-R$* $: < $&{deliveryMode} > $1
-R< d > $* $@ deferred
-R< $* > $* $: $2
-
-ifdef(`_REQUIRE_QUAL_RCPT_', `dnl
-dnl this code checks for user@host where host is not a FQHN.
-dnl it is not activated.
-dnl notice: code to check for a recipient without a domain name is
-dnl available down below; look for the same macro.
-dnl this check is done here because the name might be qualified by the
-dnl canonicalization.
-# require fully qualified domain part?
-dnl very simple canonification: make sure the address is in < >
-R$+ $: <?> $1
-R<?> <$+> $: <@> <$1>
-R<?> $+ $: <@> <$1>
-R<@> < postmaster > $: postmaster
-R<@> < $* @ $+ . $+ > $: < $1 @ $2 . $3 >
-dnl prepend daemon_flags
-R<@> $* $: $&{daemon_flags} $| <@> $1
-dnl workspace: ${daemon_flags} $| <@> <address>
-dnl _r_equire qual.rcpt: ok
-R$* r $* $| <@> < $+ @ $+ > $: < $3 @ $4 >
-dnl do not allow these at all or only from local systems?
-R$* r $* $| <@> < $* > $: < ? $&{client_name} > < $3 >
-R<?> < $* > $: <$1>
-R<? $=w> < $* > $: <$1>
-R<? $+> <$+> $#error $@ 5.5.4 $: "553 Fully qualified domain name required"
-dnl remove daemon_flags for other cases
-R$* $| <@> $* $: $2', `dnl')
-
-dnl ##################################################################
-dnl call subroutines for recipient and relay
-dnl possible returns from subroutines:
-dnl $#TEMP temporary failure
-dnl $#error permanent failure (or temporary if from access map)
-dnl $#other stop processing
-dnl RELAY RELAYing allowed
-dnl other otherwise
-######################################################################
-R$* $: $1 $| @ $>"Rcpt_ok" $1
-dnl temporary failure? remove mark @ and remember
-R$* $| @ $#TEMP $+ $: $1 $| T $2
-dnl error or ok (stop)
-R$* $| @ $#$* $#$2
-ifdef(`_PROMISCUOUS_RELAY_', `divert(-1)', `dnl')
-R$* $| @ RELAY $@ RELAY
-dnl something else: call check sender (relay)
-R$* $| @ $* $: O $| $>"Relay_ok" $1
-dnl temporary failure: call check sender (relay)
-R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
-dnl temporary failure? return that
-R$* $| $#TEMP $+ $#error $2
-dnl error or ok (stop)
-R$* $| $#$* $#$2
-R$* $| RELAY $@ RELAY
-dnl something else: return previous temp failure
-R T $+ $| $* $#error $1
-# anything else is bogus
-R$* $#error $@ 5.7.1 $: confRELAY_MSG
-divert(0)
-
-######################################################################
-### Rcpt_ok: is the recipient ok?
-dnl input: recipient address (RCPT TO)
-dnl output: see explanation at call
-######################################################################
-SRcpt_ok
-ifdef(`_LOOSE_RELAY_CHECK_',`dnl
-R$* $: $>CanonAddr $1
-R$* < @ $* . > $1 < @ $2 > strip trailing dots',
-`R$* $: $>ParseRecipient $1 strip relayable hosts')
-
-ifdef(`_BESTMX_IS_LOCAL_',`dnl
-ifelse(_BESTMX_IS_LOCAL_, `', `dnl
-# unlimited bestmx
-R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3',
-`dnl
-# limit bestmx to $=B
-R$* < @ $* $=B > $* $: $1 < @ $2 $3 @@ $(bestmx $2 $3 $) > $4')
-R$* $=O $* < @ $* @@ $=w . > $* $@ $>"Rcpt_ok" $1 $2 $3
-R$* < @ $* @@ $=w . > $* $: $1 < @ $3 > $4
-R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4')
-
-ifdef(`_BLACKLIST_RCPT_',`dnl
-ifdef(`_ACCESS_TABLE_', `dnl
-# blacklist local users or any host from receiving mail
-R$* $: <?> $1
-dnl user is now tagged with @ to be consistent with check_mail
-dnl and to distinguish users from hosts (com would be host, com@ would be user)
-R<?> $+ < @ $=w > $: <> <$1 < @ $2 >> $| <F:$1@$2> <U:$1@> <D:$2>
-R<?> $+ < @ $* > $: <> <$1 < @ $2 >> $| <F:$1@$2> <D:$2>
-R<?> $+ $: <> <$1> $| <U:$1@>
-dnl $| is used as delimiter, otherwise false matches may occur: <user<@domain>>
-dnl will only return user<@domain when "reversing" the args
-R<> <$*> $| <$+> $: <@> <$1> $| $>SearchList <+ To> $| <$2> <>
-R<@> <$*> $| <$*> $: <$2> <$1> reverse result
-R<?> <$*> $: @ $1 mark address as no match
-dnl we may have to filter here because otherwise some RHSs
-dnl would be interpreted as generic error messages...
-dnl error messages should be "tagged" by prefixing them with error: !
-dnl that would make a lot of things easier.
-R<$={Accept}> <$*> $: @ $2 mark address as no match
-ifdef(`_ACCESS_SKIP_', `dnl
-R<SKIP> <$*> $: @ $1 mark address as no match', `dnl')
-ifdef(`_DELAY_COMPAT_8_10_',`dnl
-dnl compatility with 8.11/8.10:
-dnl we have to filter these because otherwise they would be interpreted
-dnl as generic error message...
-dnl error messages should be "tagged" by prefixing them with error: !
-dnl that would make a lot of things easier.
-dnl maybe we should stop checks already here (if SPAM_xyx)?
-R<$={SpamTag}> <$*> $: @ $2 mark address as no match')
-R<REJECT> $* $#error $@ 5.2.1 $: confRCPTREJ_MSG
-R<DISCARD> $* $#discard $: discard
-R<QUARANTINE:$+> $* $#error $@ quarantine $: $1
-dnl error tag
-R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4
-R<ERROR:$+> $* $#error $: $1
-ifdef(`_ATMPF_', `R<_ATMPF_> $* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-dnl generic error from access map
-R<$+> $* $#error $: $1 error from access db
-R@ $* $1 remove mark', `dnl')', `dnl')
-
-ifdef(`_PROMISCUOUS_RELAY_', `divert(-1)', `dnl')
-# authenticated via TLS?
-R$* $: $1 $| $>RelayTLS client authenticated?
-R$* $| $# $+ $# $2 error/ok?
-R$* $| $* $: $1 no
-
-R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
-dnl workspace: localpart<@domain> $| result of Local_Relay_Auth
-R$* $| $# $* $# $2
-dnl if Local_Relay_Auth returns NO then do not check $={TrustAuthMech}
-R$* $| NO $: $1
-R$* $| $* $: $1 $| $&{auth_type}
-dnl workspace: localpart<@domain> [ $| ${auth_type} ]
-dnl empty ${auth_type}?
-R$* $| $: $1
-dnl mechanism ${auth_type} accepted?
-dnl use $# to override further tests (delay_checks): see check_rcpt below
-R$* $| $={TrustAuthMech} $# RELAY
-dnl remove ${auth_type}
-R$* $| $* $: $1
-dnl workspace: localpart<@domain> | localpart
-ifelse(defn(`_NO_UUCP_'), `r',
-`R$* ! $* < @ $* > $: <REMOTE> $2 < @ BANG_PATH >
-R$* ! $* $: <REMOTE> $2 < @ BANG_PATH >', `dnl')
-# anything terminating locally is ok
-ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
-R$+ < @ $* $=m > $@ RELAY', `dnl')
-R$+ < @ $=w > $@ RELAY
-ifdef(`_RELAY_HOSTS_ONLY_',
-`R$+ < @ $=R > $@ RELAY
-ifdef(`_ACCESS_TABLE_', `dnl
-R$+ < @ $+ > $: <$(access To:$2 $: ? $)> <$1 < @ $2 >>
-dnl workspace: <Result-of-lookup | ?> <localpart<@domain>>
-R<?> <$+ < @ $+ >> $: <$(access $2 $: ? $)> <$1 < @ $2 >>',`dnl')',
-`R$+ < @ $* $=R > $@ RELAY
-ifdef(`_ACCESS_TABLE_', `dnl
-ifdef(`_RELAY_FULL_ADDR_', `dnl
-R$+ < @ $+ > $: $1 < @ $2 > $| $>SearchList <+ To> $| <F:$1@$2> <D:$2> <F:$1@> <>
-R$+ < @ $+ > $| <$*> $: <$3> <$1 <@ $2>>
-R$+ < @ $+ > $| $* $: <$3> <$1 <@ $2>>',
-`R$+ < @ $+ > $: $>D <$2> <?> <+ To> <$1 < @ $2 >>')')')
-ifdef(`_ACCESS_TABLE_', `dnl
-dnl workspace: <Result-of-lookup | ?> <localpart<@domain>>
-R<RELAY> $* $@ RELAY
-ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-R<$*> <$*> $: $2',`dnl')
-
-
-ifdef(`_RELAY_MX_SERVED_', `dnl
-# allow relaying for hosts which we MX serve
-R$+ < @ $+ > $: < : $(mxserved $2 $) : > $1 < @ $2 >
-dnl this must not necessarily happen if the client is checked first...
-R< : $* <TEMP> : > $* $#TEMP $@ 4.4.0 $: "450 Can not check MX records for recipient host " $1
-R<$* : $=w . : $*> $* $@ RELAY
-R< : $* : > $* $: $2',
-`dnl')
-
-# check for local user (i.e. unqualified address)
-R$* $: <?> $1
-R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
-# local user is ok
-dnl is it really? the standard requires user@domain, not just user
-dnl but we should accept it anyway (maybe making it an option:
-dnl RequireFQDN ?)
-dnl postmaster must be accepted without domain (DRUMS)
-ifdef(`_REQUIRE_QUAL_RCPT_', `dnl
-R<?> postmaster $@ OK
-# require qualified recipient?
-dnl prepend daemon_flags
-R<?> $+ $: $&{daemon_flags} $| <?> $1
-dnl workspace: ${daemon_flags} $| <?> localpart
-dnl do not allow these at all or only from local systems?
-dnl r flag? add client_name
-R$* r $* $| <?> $+ $: < ? $&{client_name} > <?> $3
-dnl no r flag: relay to local user (only local part)
-# no qualified recipient required
-R$* $| <?> $+ $@ RELAY
-dnl client_name is empty
-R<?> <?> $+ $@ RELAY
-dnl client_name is local
-R<? $=w> <?> $+ $@ RELAY
-dnl client_name is not local
-R<? $+> $+ $#error $@ 5.5.4 $: "553 Domain name required"', `dnl
-dnl no qualified recipient required
-R<?> $+ $@ RELAY')
-dnl it is a remote user: remove mark and then check client
-R<$+> $* $: $2
-dnl currently the recipient address is not used below
-
-######################################################################
-### Relay_ok: is the relay/sender ok?
-dnl input: ignored
-dnl output: see explanation at call
-######################################################################
-SRelay_ok
-# anything originating locally is ok
-# check IP address
-R$* $: $&{client_addr}
-R$@ $@ RELAY originated locally
-R0 $@ RELAY originated locally
-R127.0.0.1 $@ RELAY originated locally
-RIPv6:::1 $@ RELAY originated locally
-R$=R $* $@ RELAY relayable IP address
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: $>A <$1> <?> <+ Connect> <$1>
-R<RELAY> $* $@ RELAY relayable IP address
-ifdef(`_FFR_REJECT_IP_IN_CHECK_RCPT_',`dnl
-dnl this will cause rejections in cases like:
-dnl Connect:My.Host.Domain RELAY
-dnl Connect:My.Net REJECT
-dnl since in check_relay client_name is checked before client_addr
-R<REJECT> $* $@ REJECT rejected IP address')
-ifdef(`_ATMPF_', `R<_ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-R<$*> <$*> $: $2', `dnl')
-R$* $: [ $1 ] put brackets around it...
-R$=w $@ RELAY ... and see if it is local
-
-ifdef(`_RELAY_DB_FROM_', `define(`_RELAY_MAIL_FROM_', `1')')dnl
-ifdef(`_RELAY_LOCAL_FROM_', `define(`_RELAY_MAIL_FROM_', `1')')dnl
-ifdef(`_RELAY_MAIL_FROM_', `dnl
-dnl input: {client_addr} or something "broken"
-dnl just throw the input away; we do not need it.
-# check whether FROM is allowed to use system as relay
-R$* $: <?> $>CanonAddr $&f
-R<?> $+ < @ $+ . > <?> $1 < @ $2 > remove trailing dot
-ifdef(`_RELAY_LOCAL_FROM_', `dnl
-# check whether local FROM is ok
-R<?> $+ < @ $=w > $@ RELAY FROM local', `dnl')
-ifdef(`_RELAY_DB_FROM_', `dnl
-R<?> $+ < @ $+ > $: <@> $>SearchList <! From> $| <F:$1@$2> ifdef(`_RELAY_DB_FROM_DOMAIN_', ifdef(`_RELAY_HOSTS_ONLY_', `<E:$2>', `<D:$2>')) <>
-R<@> <RELAY> $@ RELAY RELAY FROM sender ok
-ifdef(`_ATMPF_', `R<@> <_ATMPF_> $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-', `dnl
-ifdef(`_RELAY_DB_FROM_DOMAIN_',
-`errprint(`*** ERROR: _RELAY_DB_FROM_DOMAIN_ requires _RELAY_DB_FROM_
-')',
-`dnl')
-dnl')', `dnl')
-dnl notice: the rulesets above do not leave a unique workspace behind.
-dnl it does not matter in this case because the following rule ignores
-dnl the input. otherwise these rules must "clean up" the workspace.
-
-# check client name: first: did it resolve?
-dnl input: ignored
-R$* $: < $&{client_resolve} >
-R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
-R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
-R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
-dnl ${client_resolve} should be OK, so go ahead
-R$* $: <@> $&{client_name}
-dnl should not be necessary since it has been done for client_addr already
-dnl this rule actually may cause a problem if {client_name} resolves to ""
-dnl however, this should not happen since the forward lookup should fail
-dnl and {client_resolve} should be TEMP or FAIL.
-dnl nevertheless, removing the rule doesn't hurt.
-dnl R<@> $@ RELAY
-dnl workspace: <@> ${client_name} (not empty)
-# pass to name server to make hostname canonical
-R<@> $* $=P $:<?> $1 $2
-R<@> $+ $:<?> $[ $1 $]
-dnl workspace: <?> ${client_name} (canonified)
-R$* . $1 strip trailing dots
-ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
-R<?> $* $=m $@ RELAY', `dnl')
-R<?> $=w $@ RELAY
-ifdef(`_RELAY_HOSTS_ONLY_',
-`R<?> $=R $@ RELAY
-ifdef(`_ACCESS_TABLE_', `dnl
-R<?> $* $: <$(access Connect:$1 $: ? $)> <$1>
-R<?> <$*> $: <$(access $1 $: ? $)> <$1>',`dnl')',
-`R<?> $* $=R $@ RELAY
-ifdef(`_ACCESS_TABLE_', `dnl
-R<?> $* $: $>D <$1> <?> <+ Connect> <$1>',`dnl')')
-ifdef(`_ACCESS_TABLE_', `dnl
-R<RELAY> $* $@ RELAY
-ifdef(`_ATMPF_', `R<$* _ATMPF_> $* $#TEMP $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-R<$*> <$*> $: $2',`dnl')
-dnl end of _PROMISCUOUS_RELAY_
-divert(0)
-ifdef(`_DELAY_CHECKS_',`dnl
-# turn a canonical address in the form user<@domain>
-# qualify unqual. addresses with $j
-dnl it might have been only user (without <@domain>)
-SFullAddr
-R$* <@ $+ . > $1 <@ $2 >
-R$* <@ $* > $@ $1 <@ $2 >
-R$+ $@ $1 <@ $j >
-
-SDelay_TLS_Clt
-# authenticated?
-dnl code repeated here from Basic_check_mail
-dnl only called from check_rcpt in delay mode if checkrcpt returns $#
-R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
-R$* $| $#$+ $#$2
-dnl return result from checkrcpt
-R$* $| $* $# $1
-R$* $# $1
-
-SDelay_TLS_Clt2
-# authenticated?
-dnl code repeated here from Basic_check_mail
-dnl only called from check_rcpt in delay mode if stopping due to Friend/Hater
-R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
-R$* $| $#$+ $#$2
-dnl return result from friend/hater check
-R$* $| $* $@ $1
-R$* $@ $1
-
-# call all necessary rulesets
-Scheck_rcpt
-dnl this test should be in the Basic_check_rcpt ruleset
-dnl which is the correct DSN code?
-# R$@ $#error $@ 5.1.3 $: "553 Recipient address required"
-
-R$+ $: $1 $| $>checkrcpt $1
-dnl now we can simply stop checks by returning "$# xyz" instead of just "ok"
-dnl on error (or discard) stop now
-R$+ $| $#error $* $#error $2
-R$+ $| $#discard $* $#discard $2
-dnl otherwise call tls_client; see above
-R$+ $| $#$* $@ $>"Delay_TLS_Clt" $2
-R$+ $| $* $: <?> $>FullAddr $>CanonAddr $1
-ifdef(`_SPAM_FH_',
-`dnl lookup user@ and user@address
-ifdef(`_ACCESS_TABLE_', `',
-`errprint(`*** ERROR: FEATURE(`delay_checks', `argument') requires FEATURE(`access_db')
-')')dnl
-dnl one of the next two rules is supposed to match
-dnl this code has been copied from BLACKLIST... etc
-dnl and simplified by omitting some < >.
-R<?> $+ < @ $=w > $: <> $1 < @ $2 > $| <F: $1@$2 > <D: $2 > <U: $1@>
-R<?> $+ < @ $* > $: <> $1 < @ $2 > $| <F: $1@$2 > <D: $2 >
-dnl R<?> $@ something_is_very_wrong_here
-# lookup the addresses only with Spam tag
-R<> $* $| <$+> $: <@> $1 $| $>SearchList <! Spam> $| <$2> <>
-R<@> $* $| $* $: $2 $1 reverse result
-dnl', `dnl')
-ifdef(`_SPAM_FRIEND_',
-`# is the recipient a spam friend?
-ifdef(`_SPAM_HATER_',
- `errprint(`*** ERROR: define either Hater or Friend -- not both.
-')', `dnl')
-R<FRIEND> $+ $@ $>"Delay_TLS_Clt2" SPAMFRIEND
-R<$*> $+ $: $2',
-`dnl')
-ifdef(`_SPAM_HATER_',
-`# is the recipient no spam hater?
-R<HATER> $+ $: $1 spam hater: continue checks
-R<$*> $+ $@ $>"Delay_TLS_Clt2" NOSPAMHATER everyone else: stop
-dnl',`dnl')
-
-dnl run further checks: check_mail
-dnl should we "clean up" $&f?
-ifdef(`_FFR_MAIL_MACRO',
-`R$* $: $1 $| $>checkmail $&{mail_from}',
-`R$* $: $1 $| $>checkmail <$&f>')
-dnl recipient (canonical format) $| result of checkmail
-R$* $| $#$* $#$2
-dnl run further checks: check_relay
-R$* $| $* $: $1 $| $>checkrelay $&{client_name} $| $&{client_addr}
-R$* $| $#$* $#$2
-R$* $| $* $: $1
-', `dnl')
-
-ifdef(`_BLOCK_BAD_HELO_', `dnl
-R$* $: $1 $| <$&{auth_authen}> Get auth info
-dnl Bypass the test for users who have authenticated.
-R$* $| <$+> $: $1 skip if auth
-R$* $| <$*> $: $1 $| <$&{client_addr}> [$&s] Get connection info
-dnl Bypass for local clients -- IP address starts with $=R
-R$* $| <$=R $*> [$*] $: $1 skip if local client
-dnl Bypass a "sendmail -bs" session, which use 0 for client ip address
-R$* $| <0> [$*] $: $1 skip if sendmail -bs
-dnl Reject our IP - assumes "[ip]" is in class $=w
-R$* $| <$*> $=w $#error $@ 5.7.1 $:"550 bogus HELO name used: " $&s
-dnl Reject our hostname
-R$* $| <$*> [$=w] $#error $@ 5.7.1 $:"550 bogus HELO name used: " $&s
-dnl Pass anything else with a "." in the domain parameter
-R$* $| <$*> [$+.$+] $: $1 qualified domain ok
-dnl Reject if there was no "." or only an initial or final "."
-R$* $| <$*> [$*] $#error $@ 5.7.1 $:"550 bogus HELO name used: " $&s
-dnl Clean up the workspace
-R$* $| $* $: $1
-', `dnl')
-
-ifdef(`_ACCESS_TABLE_', `dnl', `divert(-1)')
-######################################################################
-### F: LookUpFull -- search for an entry in access database
-###
-### lookup of full key (which should be an address) and
-### variations if +detail exists: +* and without +detail
-###
-### Parameters:
-### <$1> -- key
-### <$2> -- default (what to return if not found in db)
-dnl must not be empty
-### <$3> -- mark (must be <(!|+) single-token>)
-### ! does lookup only with tag
-### + does lookup with and without tag
-### <$4> -- passthru (additional data passed unchanged through)
-dnl returns: <default> <passthru>
-dnl <result> <passthru>
-######################################################################
-
-SF
-dnl workspace: <key> <def> <o tag> <thru>
-dnl full lookup
-dnl 2 3 4 5
-R<$+> <$*> <$- $-> <$*> $: <$(access $4`'_TAG_DELIM_`'$1 $: ? $)> <$1> <$2> <$3 $4> <$5>
-dnl no match, try without tag
-dnl 1 2 3 4
-R<?> <$+> <$*> <+ $-> <$*> $: <$(access $1 $: ? $)> <$1> <$2> <+ $3> <$4>
-dnl no match, +detail: try +*
-dnl 1 2 3 4 5 6 7
-R<?> <$+ + $* @ $+> <$*> <$- $-> <$*>
- $: <$(access $6`'_TAG_DELIM_`'$1+*@$3 $: ? $)> <$1+$2@$3> <$4> <$5 $6> <$7>
-dnl no match, +detail: try +* without tag
-dnl 1 2 3 4 5 6
-R<?> <$+ + $* @ $+> <$*> <+ $-> <$*>
- $: <$(access $1+*@$3 $: ? $)> <$1+$2@$3> <$4> <+ $5> <$6>
-dnl no match, +detail: try without +detail
-dnl 1 2 3 4 5 6 7
-R<?> <$+ + $* @ $+> <$*> <$- $-> <$*>
- $: <$(access $6`'_TAG_DELIM_`'$1@$3 $: ? $)> <$1+$2@$3> <$4> <$5 $6> <$7>
-dnl no match, +detail: try without +detail and without tag
-dnl 1 2 3 4 5 6
-R<?> <$+ + $* @ $+> <$*> <+ $-> <$*>
- $: <$(access $1@$3 $: ? $)> <$1+$2@$3> <$4> <+ $5> <$6>
-dnl no match, return <default> <passthru>
-dnl 1 2 3 4 5
-R<?> <$+> <$*> <$- $-> <$*> $@ <$2> <$5>
-ifdef(`_ATMPF_', `dnl tempfail?
-dnl 2 3 4 5
-R<$+ _ATMPF_> <$*> <$- $-> <$*> $@ <_ATMPF_> <$5>', `dnl')
-dnl match, return <match> <passthru>
-dnl 2 3 4 5
-R<$+> <$*> <$- $-> <$*> $@ <$1> <$5>
-
-######################################################################
-### E: LookUpExact -- search for an entry in access database
-###
-### Parameters:
-### <$1> -- key
-### <$2> -- default (what to return if not found in db)
-dnl must not be empty
-### <$3> -- mark (must be <(!|+) single-token>)
-### ! does lookup only with tag
-### + does lookup with and without tag
-### <$4> -- passthru (additional data passed unchanged through)
-dnl returns: <default> <passthru>
-dnl <result> <passthru>
-######################################################################
-
-SE
-dnl 2 3 4 5
-R<$*> <$*> <$- $-> <$*> $: <$(access $4`'_TAG_DELIM_`'$1 $: ? $)> <$1> <$2> <$3 $4> <$5>
-dnl no match, try without tag
-dnl 1 2 3 4
-R<?> <$+> <$*> <+ $-> <$*> $: <$(access $1 $: ? $)> <$1> <$2> <+ $3> <$4>
-dnl no match, return default passthru
-dnl 1 2 3 4 5
-R<?> <$+> <$*> <$- $-> <$*> $@ <$2> <$5>
-ifdef(`_ATMPF_', `dnl tempfail?
-dnl 2 3 4 5
-R<$+ _ATMPF_> <$*> <$- $-> <$*> $@ <_ATMPF_> <$5>', `dnl')
-dnl match, return <match> <passthru>
-dnl 2 3 4 5
-R<$+> <$*> <$- $-> <$*> $@ <$1> <$5>
-
-######################################################################
-### U: LookUpUser -- search for an entry in access database
-###
-### lookup of key (which should be a local part) and
-### variations if +detail exists: +* and without +detail
-###
-### Parameters:
-### <$1> -- key (user@)
-### <$2> -- default (what to return if not found in db)
-dnl must not be empty
-### <$3> -- mark (must be <(!|+) single-token>)
-### ! does lookup only with tag
-### + does lookup with and without tag
-### <$4> -- passthru (additional data passed unchanged through)
-dnl returns: <default> <passthru>
-dnl <result> <passthru>
-######################################################################
-
-SU
-dnl user lookups are always with trailing @
-dnl 2 3 4 5
-R<$+> <$*> <$- $-> <$*> $: <$(access $4`'_TAG_DELIM_`'$1 $: ? $)> <$1> <$2> <$3 $4> <$5>
-dnl no match, try without tag
-dnl 1 2 3 4
-R<?> <$+> <$*> <+ $-> <$*> $: <$(access $1 $: ? $)> <$1> <$2> <+ $3> <$4>
-dnl do not remove the @ from the lookup:
-dnl it is part of the +detail@ which is omitted for the lookup
-dnl no match, +detail: try +*
-dnl 1 2 3 4 5 6
-R<?> <$+ + $* @> <$*> <$- $-> <$*>
- $: <$(access $5`'_TAG_DELIM_`'$1+*@ $: ? $)> <$1+$2@> <$3> <$4 $5> <$6>
-dnl no match, +detail: try +* without tag
-dnl 1 2 3 4 5
-R<?> <$+ + $* @> <$*> <+ $-> <$*>
- $: <$(access $1+*@ $: ? $)> <$1+$2@> <$3> <+ $4> <$5>
-dnl no match, +detail: try without +detail
-dnl 1 2 3 4 5 6
-R<?> <$+ + $* @> <$*> <$- $-> <$*>
- $: <$(access $5`'_TAG_DELIM_`'$1@ $: ? $)> <$1+$2@> <$3> <$4 $5> <$6>
-dnl no match, +detail: try without +detail and without tag
-dnl 1 2 3 4 5
-R<?> <$+ + $* @> <$*> <+ $-> <$*>
- $: <$(access $1@ $: ? $)> <$1+$2@> <$3> <+ $4> <$5>
-dnl no match, return <default> <passthru>
-dnl 1 2 3 4 5
-R<?> <$+> <$*> <$- $-> <$*> $@ <$2> <$5>
-ifdef(`_ATMPF_', `dnl tempfail?
-dnl 2 3 4 5
-R<$+ _ATMPF_> <$*> <$- $-> <$*> $@ <_ATMPF_> <$5>', `dnl')
-dnl match, return <match> <passthru>
-dnl 2 3 4 5
-R<$+> <$*> <$- $-> <$*> $@ <$1> <$5>
-
-######################################################################
-### SearchList: search a list of items in the access map
-### Parameters:
-### <exact tag> $| <mark:address> <mark:address> ... <>
-dnl maybe we should have a @ (again) in front of the mark to
-dnl avoid errorneous matches (with error messages?)
-dnl if we can make sure that tag is always a single token
-dnl then we can omit the delimiter $|, otherwise we need it
-dnl to avoid errorneous matchs (first rule: D: if there
-dnl is that mark somewhere in the list, it will be taken).
-dnl moreover, we can do some tricks to enforce lookup with
-dnl the tag only, e.g.:
-### where "exact" is either "+" or "!":
-### <+ TAG> lookup with and w/o tag
-### <! TAG> lookup with tag
-dnl Warning: + and ! should be in OperatorChars (otherwise there must be
-dnl a blank between them and the tag.
-### possible values for "mark" are:
-### D: recursive host lookup (LookUpDomain)
-dnl A: recursive address lookup (LookUpAddress) [not yet required]
-### E: exact lookup, no modifications
-### F: full lookup, try user+ext@domain and user@domain
-### U: user lookup, try user+ext and user (input must have trailing @)
-### return: <RHS of lookup> or <?> (not found)
-######################################################################
-
-# class with valid marks for SearchList
-dnl if A is activated: add it
-C{Src}E F D U ifdef(`_FFR_SRCHLIST_A', `A')
-SSearchList
-# just call the ruleset with the name of the tag... nice trick...
-dnl 2 3 4
-R<$+> $| <$={Src}:$*> <$*> $: <$1> $| <$4> $| $>$2 <$3> <?> <$1> <>
-dnl workspace: <o tag> $| <rest> $| <result of lookup> <>
-dnl no match and nothing left: return
-R<$+> $| <> $| <?> <> $@ <?>
-dnl no match but something left: continue
-R<$+> $| <$+> $| <?> <> $@ $>SearchList <$1> $| <$2>
-dnl match: return
-R<$+> $| <$*> $| <$+> <> $@ <$3>
-dnl return result from recursive invocation
-R<$+> $| <$+> $@ <$2>
-dnl endif _ACCESS_TABLE_
-divert(0)
-
-######################################################################
-### trust_auth: is user trusted to authenticate as someone else?
-###
-### Parameters:
-### $1: AUTH= parameter from MAIL command
-######################################################################
-
-dnl empty ruleset definition so it can be called
-SLocal_trust_auth
-Strust_auth
-R$* $: $&{auth_type} $| $1
-# required by RFC 2554 section 4.
-R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
-dnl seems to be useful...
-R$* $| $&{auth_authen} $@ identical
-R$* $| <$&{auth_authen}> $@ identical
-dnl call user supplied code
-R$* $| $* $: $1 $| $>"Local_trust_auth" $2
-R$* $| $#$* $#$2
-dnl default: error
-R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
-
-######################################################################
-### Relay_Auth: allow relaying based on authentication?
-###
-### Parameters:
-### $1: ${auth_type}
-######################################################################
-SLocal_Relay_Auth
-
-######################################################################
-### srv_features: which features to offer to a client?
-### (done in server)
-######################################################################
-Ssrv_features
-ifdef(`_LOCAL_SRV_FEATURES_', `dnl
-R$* $: $1 $| $>"Local_srv_features" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: $>D <$&{client_name}> <?> <! SRV_FEAT_TAG> <>
-R<?>$* $: $>A <$&{client_addr}> <?> <! SRV_FEAT_TAG> <>
-R<?>$* $: <$(access SRV_FEAT_TAG`'_TAG_DELIM_ $: ? $)>
-R<?>$* $@ OK
-ifdef(`_ATMPF_', `dnl tempfail?
-R<$* _ATMPF_>$* $#temp', `dnl')
-R<$+>$* $# $1')
-
-######################################################################
-### try_tls: try to use STARTTLS?
-### (done in client)
-######################################################################
-Stry_tls
-ifdef(`_LOCAL_TRY_TLS_', `dnl
-R$* $: $1 $| $>"Local_try_tls" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: $>D <$&{server_name}> <?> <! TLS_TRY_TAG> <>
-R<?>$* $: $>A <$&{server_addr}> <?> <! TLS_TRY_TAG> <>
-R<?>$* $: <$(access TLS_TRY_TAG`'_TAG_DELIM_ $: ? $)>
-R<?>$* $@ OK
-ifdef(`_ATMPF_', `dnl tempfail?
-R<$* _ATMPF_>$* $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-R<NO>$* $#error $@ 5.7.1 $: "550 do not try TLS with " $&{server_name} " ["$&{server_addr}"]"')
-
-######################################################################
-### tls_rcpt: is connection with server "good" enough?
-### (done in client, per recipient)
-dnl called from deliver() before RCPT command
-###
-### Parameters:
-### $1: recipient
-######################################################################
-Stls_rcpt
-ifdef(`_LOCAL_TLS_RCPT_', `dnl
-R$* $: $1 $| $>"Local_tls_rcpt" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
-ifdef(`_ACCESS_TABLE_', `dnl
-dnl store name of other side
-R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1
-dnl canonify recipient address
-R$+ $: <?> $>CanonAddr $1
-dnl strip trailing dots
-R<?> $+ < @ $+ . > <?> $1 <@ $2 >
-dnl full address?
-R<?> $+ < @ $+ > $: $1 <@ $2 > $| <F:$1@$2> <U:$1@> <D:$2> <E:>
-dnl only localpart?
-R<?> $+ $: $1 $| <U:$1@> <E:>
-dnl look it up
-dnl also look up a default value via E:
-R$* $| $+ $: $1 $| $>SearchList <! TLS_RCPT_TAG> $| $2 <>
-dnl found nothing: stop here
-R$* $| <?> $@ OK
-ifdef(`_ATMPF_', `dnl tempfail?
-R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-dnl use the generic routine (for now)
-R$* $| <$+> $@ $>"TLS_connection" $&{verify} $| <$2>')
-
-######################################################################
-### tls_client: is connection with client "good" enough?
-### (done in server)
-###
-### Parameters:
-### ${verify} $| (MAIL|STARTTLS)
-######################################################################
-dnl MAIL: called from check_mail
-dnl STARTTLS: called from smtp() after STARTTLS has been accepted
-Stls_client
-ifdef(`_LOCAL_TLS_CLIENT_', `dnl
-R$* $: $1 $| $>"Local_tls_client" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
-ifdef(`_ACCESS_TABLE_', `dnl
-dnl store name of other side
-R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1
-dnl ignore second arg for now
-dnl maybe use it to distinguish permanent/temporary error?
-dnl if MAIL: permanent (STARTTLS has not been offered)
-dnl if STARTTLS: temporary (offered but maybe failed)
-R$* $| $* $: $1 $| $>D <$&{client_name}> <?> <! TLS_CLT_TAG> <>
-R$* $| <?>$* $: $1 $| $>A <$&{client_addr}> <?> <! TLS_CLT_TAG> <>
-dnl do a default lookup: just TLS_CLT_TAG
-R$* $| <?>$* $: $1 $| <$(access TLS_CLT_TAG`'_TAG_DELIM_ $: ? $)>
-ifdef(`_ATMPF_', `dnl tempfail?
-R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-R$* $@ $>"TLS_connection" $1', `dnl
-R$* $| $* $@ $>"TLS_connection" $1')
-
-######################################################################
-### tls_server: is connection with server "good" enough?
-### (done in client)
-###
-### Parameter:
-### ${verify}
-######################################################################
-dnl i.e. has the server been authenticated and is encryption active?
-dnl called from deliver() after STARTTLS command
-Stls_server
-ifdef(`_LOCAL_TLS_SERVER_', `dnl
-R$* $: $1 $| $>"Local_tls_server" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
-ifdef(`_ACCESS_TABLE_', `dnl
-dnl store name of other side
-R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1
-R$* $: $1 $| $>D <$&{server_name}> <?> <! TLS_SRV_TAG> <>
-R$* $| <?>$* $: $1 $| $>A <$&{server_addr}> <?> <! TLS_SRV_TAG> <>
-dnl do a default lookup: just TLS_SRV_TAG
-R$* $| <?>$* $: $1 $| <$(access TLS_SRV_TAG`'_TAG_DELIM_ $: ? $)>
-ifdef(`_ATMPF_', `dnl tempfail?
-R$* $| <$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-R$* $@ $>"TLS_connection" $1', `dnl
-R$* $@ $>"TLS_connection" $1')
-
-######################################################################
-### TLS_connection: is TLS connection "good" enough?
-###
-### Parameters:
-ifdef(`_ACCESS_TABLE_', `dnl
-### ${verify} $| <Requirement> [<>]', `dnl
-### ${verify}')
-### Requirement: RHS from access map, may be ? for none.
-dnl syntax for Requirement:
-dnl [(PERM|TEMP)+] (VERIFY[:bits]|ENCR:bits) [+extensions]
-dnl extensions: could be a list of further requirements
-dnl for now: CN:string {cn_subject} == string
-######################################################################
-STLS_connection
-ifdef(`_ACCESS_TABLE_', `dnl', `dnl use default error
-dnl deal with TLS handshake failures: abort
-RSOFTWARE $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') TLS handshake."
-divert(-1)')
-dnl common ruleset for tls_{client|server}
-dnl input: ${verify} $| <ResultOfLookup> [<>]
-dnl remove optional <>
-R$* $| <$*>$* $: $1 $| <$2>
-dnl workspace: ${verify} $| <ResultOfLookup>
-# create the appropriate error codes
-dnl permanent or temporary error?
-R$* $| <PERM + $={Tls} $*> $: $1 $| <503:5.7.0> <$2 $3>
-R$* $| <TEMP + $={Tls} $*> $: $1 $| <403:4.7.0> <$2 $3>
-dnl default case depends on TLS_PERM_ERR
-R$* $| <$={Tls} $*> $: $1 $| <ifdef(`TLS_PERM_ERR', `503:5.7.0', `403:4.7.0')> <$2 $3>
-dnl workspace: ${verify} $| [<SMTP:ESC>] <ResultOfLookup>
-# deal with TLS handshake failures: abort
-RSOFTWARE $| <$-:$+> $* $#error $@ $2 $: $1 " TLS handshake failed."
-dnl no <reply:dns> i.e. not requirements in the access map
-dnl use default error
-RSOFTWARE $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') TLS handshake failed."
-# deal with TLS protocol errors: abort
-RPROTOCOL $| <$-:$+> $* $#error $@ $2 $: $1 " STARTTLS failed."
-dnl no <reply:dns> i.e. not requirements in the access map
-dnl use default error
-RPROTOCOL $| $* $#error $@ ifdef(`TLS_PERM_ERR', `5.7.0', `4.7.0') $: "ifdef(`TLS_PERM_ERR', `503', `403') STARTTLS failed."
-R$* $| <$*> <VERIFY> $: <$2> <VERIFY> <> $1
-dnl separate optional requirements
-R$* $| <$*> <VERIFY + $+> $: <$2> <VERIFY> <$3> $1
-R$* $| <$*> <$={Tls}:$->$* $: <$2> <$3:$4> <> $1
-dnl separate optional requirements
-R$* $| <$*> <$={Tls}:$- + $+>$* $: <$2> <$3:$4> <$5> $1
-dnl some other value in access map: accept
-dnl this also allows to override the default case (if used)
-R$* $| $* $@ OK
-# authentication required: give appropriate error
-# other side did authenticate (via STARTTLS)
-dnl workspace: <SMTP:ESC> <{VERIFY,ENCR}[:BITS]> <[extensions]> ${verify}
-dnl only verification required and it succeeded
-R<$*><VERIFY> <> OK $@ OK
-dnl verification required and it succeeded but extensions are given
-dnl change it to <SMTP:ESC> <REQ:0> <extensions>
-R<$*><VERIFY> <$+> OK $: <$1> <REQ:0> <$2>
-dnl verification required + some level of encryption
-R<$*><VERIFY:$-> <$*> OK $: <$1> <REQ:$2> <$3>
-dnl just some level of encryption required
-R<$*><ENCR:$-> <$*> $* $: <$1> <REQ:$2> <$3>
-dnl workspace:
-dnl 1. <SMTP:ESC> <VERIFY [:bits]> <[extensions]> {verify} (!= OK)
-dnl 2. <SMTP:ESC> <REQ:bits> <[extensions]>
-dnl verification required but ${verify} is not set (case 1.)
-R<$-:$+><VERIFY $*> <$*> $#error $@ $2 $: $1 " authentication required"
-R<$-:$+><VERIFY $*> <$*> FAIL $#error $@ $2 $: $1 " authentication failed"
-R<$-:$+><VERIFY $*> <$*> NO $#error $@ $2 $: $1 " not authenticated"
-R<$-:$+><VERIFY $*> <$*> NOT $#error $@ $2 $: $1 " no authentication requested"
-R<$-:$+><VERIFY $*> <$*> NONE $#error $@ $2 $: $1 " other side does not support STARTTLS"
-dnl some other value for ${verify}
-R<$-:$+><VERIFY $*> <$*> $+ $#error $@ $2 $: $1 " authentication failure " $4
-dnl some level of encryption required: get the maximum level (case 2.)
-R<$*><REQ:$-> <$*> $: <$1> <REQ:$2> <$3> $>max $&{cipher_bits} : $&{auth_ssf}
-dnl compare required bits with actual bits
-R<$*><REQ:$-> <$*> $- $: <$1> <$2:$4> <$3> $(arith l $@ $4 $@ $2 $)
-R<$-:$+><$-:$-> <$*> TRUE $#error $@ $2 $: $1 " encryption too weak " $4 " less than " $3
-dnl strength requirements fulfilled
-dnl TLS Additional Requirements Separator
-dnl this should be something which does not appear in the extensions itself
-dnl @ could be part of a CN, DN, etc...
-dnl use < > ? those are encoded in CN, DN, ...
-define(`_TLS_ARS_', `++')dnl
-dnl workspace:
-dnl <SMTP:ESC> <REQ:bits> <extensions> result-of-compare
-R<$-:$+><$-:$-> <$*> $* $: <$1:$2 _TLS_ARS_ $5>
-dnl workspace: <SMTP:ESC _TLS_ARS_ extensions>
-dnl continue: check extensions
-R<$-:$+ _TLS_ARS_ > $@ OK
-dnl split extensions into own list
-R<$-:$+ _TLS_ARS_ $+ > $: <$1:$2> <$3>
-R<$-:$+> < $+ _TLS_ARS_ $+ > <$1:$2> <$3> <$4>
-R<$-:$+> $+ $@ $>"TLS_req" $3 $| <$1:$2>
-
-######################################################################
-### TLS_req: check additional TLS requirements
-###
-### Parameters: [<list> <of> <req>] $| <$-:$+>
-### $-: SMTP reply code
-### $+: Enhanced Status Code
-dnl further requirements for this ruleset:
-dnl name of "other side" is stored is {TLS_name} (client/server_name)
-dnl
-dnl currently only CN[:common_name] is implemented
-dnl right now this is only a logical AND
-dnl i.e. all requirements must be true
-dnl how about an OR? CN must be X or CN must be Y or ..
-dnl use a macro to compute this as a trivial sequential
-dnl operations (no precedences etc)?
-######################################################################
-STLS_req
-dnl no additional requirements: ok
-R $| $+ $@ OK
-dnl require CN: but no CN specified: use name of other side
-R<CN> $* $| <$+> $: <CN:$&{TLS_Name}> $1 $| <$2>
-dnl match, check rest
-R<CN:$&{cn_subject}> $* $| <$+> $@ $>"TLS_req" $1 $| <$2>
-dnl CN does not match
-dnl 1 2 3 4
-R<CN:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " CN " $&{cn_subject} " does not match " $1
-dnl cert subject
-R<CS:$&{cert_subject}> $* $| <$+> $@ $>"TLS_req" $1 $| <$2>
-dnl CS does not match
-dnl 1 2 3 4
-R<CS:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " Cert Subject " $&{cert_subject} " does not match " $1
-dnl match, check rest
-R<CI:$&{cert_issuer}> $* $| <$+> $@ $>"TLS_req" $1 $| <$2>
-dnl CI does not match
-dnl 1 2 3 4
-R<CI:$+> $* $| <$-:$+> $#error $@ $4 $: $3 " Cert Issuer " $&{cert_issuer} " does not match " $1
-dnl return from recursive call
-ROK $@ OK
-
-######################################################################
-### max: return the maximum of two values separated by :
-###
-### Parameters: [$-]:[$-]
-######################################################################
-Smax
-R: $: 0
-R:$- $: $1
-R$-: $: $1
-R$-:$- $: $(arith l $@ $1 $@ $2 $) : $1 : $2
-RTRUE:$-:$- $: $2
-R$-:$-:$- $: $2
-dnl endif _ACCESS_TABLE_
-divert(0)
-
-######################################################################
-### RelayTLS: allow relaying based on TLS authentication
-###
-### Parameters:
-### none
-######################################################################
-SRelayTLS
-# authenticated?
-dnl we do not allow relaying for anyone who can present a cert
-dnl signed by a "trusted" CA. For example, even if we put verisigns
-dnl CA in CertPath so we can authenticate users, we do not allow
-dnl them to abuse our server (they might be easier to get hold of,
-dnl but anyway).
-dnl so here is the trick: if the verification succeeded
-dnl we look up the cert issuer in the access map
-dnl (maybe after extracting a part with a regular expression)
-dnl if this returns RELAY we relay without further questions
-dnl if it returns SUBJECT we perform a similar check on the
-dnl cert subject.
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: <?> $&{verify}
-R<?> OK $: OK authenticated: continue
-R<?> $* $@ NO not authenticated
-ifdef(`_CERT_REGEX_ISSUER_', `dnl
-R$* $: $(CERTIssuer $&{cert_issuer} $)',
-`R$* $: $&{cert_issuer}')
-R$+ $: $(access CERTISSUER`'_TAG_DELIM_`'$1 $)
-dnl use $# to stop further checks (delay_check)
-RRELAY $# RELAY
-ifdef(`_CERT_REGEX_SUBJECT_', `dnl
-RSUBJECT $: <@> $(CERTSubject $&{cert_subject} $)',
-`RSUBJECT $: <@> $&{cert_subject}')
-R<@> $+ $: <@> $(access CERTSUBJECT`'_TAG_DELIM_`'$1 $)
-R<@> RELAY $# RELAY
-R$* $: NO', `dnl')
-
-######################################################################
-### authinfo: lookup authinfo in the access map
-###
-### Parameters:
-### $1: {server_name}
-### $2: {server_addr}
-dnl both are currently ignored
-dnl if it should be done via another map, we either need to restrict
-dnl functionality (it calls D and A) or copy those rulesets (or add another
-dnl parameter which I want to avoid, it's quite complex already)
-######################################################################
-dnl omit this ruleset if neither is defined?
-dnl it causes DefaultAuthInfo to be ignored
-dnl (which may be considered a good thing).
-Sauthinfo
-ifdef(`_AUTHINFO_TABLE_', `dnl
-R$* $: <$(authinfo AuthInfo:$&{server_name} $: ? $)>
-R<?> $: <$(authinfo AuthInfo:$&{server_addr} $: ? $)>
-R<?> $: <$(authinfo AuthInfo: $: ? $)>
-R<?> $@ no no authinfo available
-R<$*> $# $1
-dnl', `dnl
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: $1 $| $>D <$&{server_name}> <?> <! AuthInfo> <>
-R$* $| <?>$* $: $1 $| $>A <$&{server_addr}> <?> <! AuthInfo> <>
-R$* $| <?>$* $: $1 $| <$(access AuthInfo`'_TAG_DELIM_ $: ? $)> <>
-R$* $| <?>$* $@ no no authinfo available
-R$* $| <$*> <> $# $2
-dnl', `dnl')')
-
-ifdef(`_RATE_CONTROL_',`dnl
-######################################################################
-### RateControl:
-### Parameters: ignored
-### return: $#error or OK
-######################################################################
-SRateControl
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: <A:$&{client_addr}> <E:>
-dnl also look up a default value via E:
-R$+ $: $>SearchList <! ClientRate> $| $1 <>
-dnl found nothing: stop here
-R<?> $@ OK
-ifdef(`_ATMPF_', `dnl tempfail?
-R<$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-dnl use the generic routine (for now)
-R<0> $@ OK no limit
-R<$+> $: <$1> $| $(arith l $@ $1 $@ $&{client_rate} $)
-dnl log this? Connection rate $&{client_rate} exceeds limit $1.
-R<$+> $| TRUE $#error $@ 4.3.2 $: _RATE_CONTROL_REPLY Connection rate limit exceeded.
-')')
-
-ifdef(`_CONN_CONTROL_',`dnl
-######################################################################
-### ConnControl:
-### Parameters: ignored
-### return: $#error or OK
-######################################################################
-SConnControl
-ifdef(`_ACCESS_TABLE_', `dnl
-R$* $: <A:$&{client_addr}> <E:>
-dnl also look up a default value via E:
-R$+ $: $>SearchList <! ClientConn> $| $1 <>
-dnl found nothing: stop here
-R<?> $@ OK
-ifdef(`_ATMPF_', `dnl tempfail?
-R<$* _ATMPF_> $#error $@ 4.3.0 $: "451 Temporary system failure. Please try again later."', `dnl')
-dnl use the generic routine (for now)
-R<0> $@ OK no limit
-R<$+> $: <$1> $| $(arith l $@ $1 $@ $&{client_connections} $)
-dnl log this: Open connections $&{client_connections} exceeds limit $1.
-R<$+> $| TRUE $#error $@ 4.3.2 $: _CONN_CONTROL_REPLY Too many open connections.
-')')
-
-undivert(9)dnl LOCAL_RULESETS
-#
-######################################################################
-######################################################################
-#####
-`##### MAIL FILTER DEFINITIONS'
-#####
-######################################################################
-######################################################################
-_MAIL_FILTERS_
-#
-######################################################################
-######################################################################
-#####
-`##### MAILER DEFINITIONS'
-#####
-######################################################################
-######################################################################
-undivert(7)dnl MAILER_DEFINITIONS
-
diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
deleted file mode 100644
index 9b34f1a4a9c6..000000000000
--- a/contrib/sendmail/cf/m4/version.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2007 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.
-#
-#
-VERSIONID(`$Id: version.m4,v 8.186 2007/10/31 16:04:13 ca Exp $')
-#
-divert(0)
-# Configuration version number
-DZ8.14.2`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/contrib/sendmail/cf/mailer/cyrus.m4 b/contrib/sendmail/cf/mailer/cyrus.m4
deleted file mode 100644
index cca7f8e6885b..000000000000
--- a/contrib/sendmail/cf/mailer/cyrus.m4
+++ /dev/null
@@ -1,60 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
-# 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 code incorporates code from Carnegie Mellon University, whose
-# copyright notice and conditions of redistribution are as follows:
-#
-#***************************************************************************
-# (C) Copyright 1995 by Carnegie Mellon University
-#
-# All Rights Reserved
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of CMU not be
-# used in advertising or publicity pertaining to distribution of the
-# software without specific, written prior permission.
-#
-# CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
-# CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
-# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-# SOFTWARE.
-#
-# Contributed to Berkeley by John Gardiner Myers <jgm+@CMU.EDU>.
-#
-
-_DEFIFNOT(`CYRUS_MAILER_FLAGS', `Ah5@/:|')
-ifdef(`CYRUS_MAILER_PATH',, `define(`CYRUS_MAILER_PATH', /usr/cyrus/bin/deliver)')
-ifdef(`CYRUS_MAILER_ARGS',, `define(`CYRUS_MAILER_ARGS', `deliver -e -m $h -- $u')')
-ifdef(`CYRUS_MAILER_USER',, `define(`CYRUS_MAILER_USER', `cyrus:mail')')
-_DEFIFNOT(`CYRUS_BB_MAILER_FLAGS', `u')
-ifdef(`CYRUS_BB_MAILER_ARGS',, `define(`CYRUS_BB_MAILER_ARGS', `deliver -e -m $u')')
-define(`_CYRUS_QGRP', `ifelse(defn(`CYRUS_MAILER_QGRP'),`',`', ` Q=CYRUS_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-##################################################
-### Cyrus Mailer specification ###
-##################################################
-
-VERSIONID(`$Id: cyrus.m4,v 8.23 2001/11/12 23:11:34 ca Exp $ (Carnegie Mellon)')
-
-Mcyrus, P=CYRUS_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), `CYRUS'), S=EnvFromL, R=EnvToL/HdrToL,
- ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER, T=DNS/RFC822/X-Unix,_CYRUS_QGRP
- A=CYRUS_MAILER_ARGS
-
-Mcyrusbb, P=CYRUS_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMnP', CYRUS_BB_MAILER_FLAGS), `CYRUS'), S=EnvFromL, R=EnvToL/HdrToL,
- ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER, T=DNS/RFC822/X-Unix,_CYRUS_QGRP
- A=CYRUS_BB_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/cyrusv2.m4 b/contrib/sendmail/cf/mailer/cyrusv2.m4
deleted file mode 100644
index 2a40a23d4e07..000000000000
--- a/contrib/sendmail/cf/mailer/cyrusv2.m4
+++ /dev/null
@@ -1,29 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 2002 Sendmail, Inc. and its suppliers.
-# 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.
-#
-# Contributed by Kenneth Murchison.
-#
-
-_DEFIFNOT(`_DEF_CYRUSV2_MAILER_FLAGS', `lsDFMnqXz')
-_DEFIFNOT(`CYRUSV2_MAILER_FLAGS', `A@/:|m')
-ifdef(`CYRUSV2_MAILER_ARGS',, `define(`CYRUSV2_MAILER_ARGS', `FILE /var/imap/socket/lmtp')')
-define(`_CYRUSV2_QGRP', `ifelse(defn(`CYRUSV2_MAILER_QGRP'),`',`', ` Q=CYRUSV2_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-#########################################
-### Cyrus V2 Mailer specification ###
-#########################################
-
-VERSIONID(`$Id: cyrusv2.m4,v 1.1 2002/06/01 21:14:57 ca Exp $')
-
-Mcyrusv2, P=[IPC], F=_MODMF_(CONCAT(_DEF_CYRUSV2_MAILER_FLAGS, CYRUSV2_MAILER_FLAGS), `CYRUSV2'),
- S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL, E=\r\n,
- _OPTINS(`CYRUSV2_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`CYRUSV2_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`CYRUSV2_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_CYRUSV2_QGRP
- A=CYRUSV2_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/fax.m4 b/contrib/sendmail/cf/mailer/fax.m4
deleted file mode 100644
index 4e2116e65362..000000000000
--- a/contrib/sendmail/cf/mailer/fax.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998, 1999, 2001 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 assumes you already have Sam Leffler's HylaFAX software.
-#
-# Tested with HylaFAX 4.0pl1
-#
-
-ifdef(`FAX_MAILER_ARGS',,
- `define(`FAX_MAILER_ARGS', faxmail -d $u@$h $f)')
-ifdef(`FAX_MAILER_PATH',,
- `define(`FAX_MAILER_PATH', /usr/local/bin/faxmail)')
-ifdef(`FAX_MAILER_MAX',,
- `define(`FAX_MAILER_MAX', 100000)')
-define(`_FAX_QGRP', `ifelse(defn(`FAX_MAILER_QGRP'),`',`', ` Q=FAX_MAILER_QGRP,')')dnl
-POPDIVERT
-####################################
-### FAX Mailer specification ###
-####################################
-
-VERSIONID(`$Id: fax.m4,v 8.16 2001/11/12 23:11:34 ca Exp $')
-
-Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24,
- M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,_FAX_QGRP
- A=FAX_MAILER_ARGS
-
-LOCAL_CONFIG
-CPFAX
diff --git a/contrib/sendmail/cf/mailer/local.m4 b/contrib/sendmail/cf/mailer/local.m4
deleted file mode 100644
index e2f971140d75..000000000000
--- a/contrib/sendmail/cf/mailer/local.m4
+++ /dev/null
@@ -1,93 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2000, 2004 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.
-#
-#
-_DEFIFNOT(`_DEF_LOCAL_MAILER_FLAGS', `lsDFMAw5:/|@q')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Prmn9')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/mail)')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d $u')')
-ifdef(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE',, `define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `X-Unix')')
-_DEFIFNOT(`_DEF_LOCAL_SHELL_FLAGS', `lsDFMoq')
-_DEFIFNOT(`LOCAL_SHELL_FLAGS', `eu9')
-ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /bin/sh)')
-ifdef(`LOCAL_SHELL_ARGS',, `define(`LOCAL_SHELL_ARGS', `sh -c $u')')
-ifdef(`LOCAL_SHELL_DIR',, `define(`LOCAL_SHELL_DIR', `$z:/')')
-define(`LOCAL_RWR', `ifdef(`_LOCAL_LMTP_',
-`S=EnvFromSMTP/HdrFromL, R=EnvToL/HdrToL',
-`S=EnvFromL/HdrFromL, R=EnvToL/HdrToL')')
-define(`_LOCAL_QGRP', `ifelse(defn(`LOCAL_MAILER_QGRP'),`',`', ` Q=LOCAL_MAILER_QGRP,')')dnl
-define(`_PROG_QGRP', `ifelse(defn(`LOCAL_PROG_QGRP'),`',`', ` Q=LOCAL_PROG_QGRP,')')dnl
-POPDIVERT
-
-##################################################
-### Local and Program Mailer specification ###
-##################################################
-
-VERSIONID(`$Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $')
-
-#
-# Envelope sender rewriting
-#
-SEnvFromL
-R<@> $n errors to mailer-daemon
-R@ <@ $*> $n temporarily bypass Sun bogosity
-R$+ $: $>AddDomain $1 add local domain if needed
-ifdef(`_LOCAL_NO_MASQUERADE_', `dnl', `dnl
-R$* $: $>MasqEnv $1 do masquerading')
-
-#
-# Envelope recipient rewriting
-#
-SEnvToL
-R$+ < @ $* > $: $1 strip host part
-ifdef(`confUSERDB_SPEC', `dnl', `dnl
-R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
-R<e s> $+ + $* $: $1 remove +detail for sender
-R< $* > $+ $: $2 else remove mark')
-
-#
-# Header sender rewriting
-#
-SHdrFromL
-R<@> $n errors to mailer-daemon
-R@ <@ $*> $n temporarily bypass Sun bogosity
-R$+ $: $>AddDomain $1 add local domain if needed
-ifdef(`_LOCAL_NO_MASQUERADE_', `dnl', `dnl
-R$* $: $>MasqHdr $1 do masquerading')
-
-#
-# Header recipient rewriting
-#
-SHdrToL
-R$+ $: $>AddDomain $1 add local domain if needed
-ifdef(`_ALL_MASQUERADE_', `dnl
-ifdef(`_LOCAL_NO_MASQUERADE_', `dnl', `dnl
-R$* $: $>MasqHdr $1 do all-masquerading')',
-`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2')
-
-#
-# Common code to add local domain name (only if always-add-domain)
-#
-SAddDomain
-ifdef(`_ALWAYS_ADD_DOMAIN_', `dnl
-R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-ifelse(len(X`'_ALWAYS_ADD_DOMAIN_),`1',`
-R$+ $@ $1 < @ *LOCAL* > add local qualification',
-`R$+ $@ $1 < @ _ALWAYS_ADD_DOMAIN_ > add qualification')',
-`dnl')
-
-Mlocal, P=LOCAL_MAILER_PATH, F=_MODMF_(CONCAT(_DEF_LOCAL_MAILER_FLAGS, LOCAL_MAILER_FLAGS), `LOCAL'), LOCAL_RWR,_OPTINS(`LOCAL_MAILER_EOL', ` E=', `, ')
- _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`LOCAL_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/LOCAL_MAILER_DSN_DIAGNOSTIC_CODE,_LOCAL_QGRP
- A=LOCAL_MAILER_ARGS
-Mprog, P=LOCAL_SHELL_PATH, F=_MODMF_(CONCAT(_DEF_LOCAL_SHELL_FLAGS, LOCAL_SHELL_FLAGS), `SHELL'), S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=LOCAL_SHELL_DIR,
- _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')T=X-Unix/X-Unix/X-Unix,_PROG_QGRP
- A=LOCAL_SHELL_ARGS
diff --git a/contrib/sendmail/cf/mailer/mail11.m4 b/contrib/sendmail/cf/mailer/mail11.m4
deleted file mode 100644
index 14bc794584f8..000000000000
--- a/contrib/sendmail/cf/mailer/mail11.m4
+++ /dev/null
@@ -1,61 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-# Not exciting enough to bother with copyrights and most of the
-# rulesets are based from those provided by DEC.
-# Barb Dijker, Labyrinth Computer Services, barb@labyrinth.com
-#
-# This mailer is only useful if you have DECNET and the
-# mail11 program - gatekeeper.dec.com:/pub/DEC/gwtools.
-#
-# For local delivery of DECNET style addresses to the local
-# DECNET node, you will need feature(use_cw_file) and put
-# your DECNET nodename in in the cw file.
-#
-ifdef(`MAIL11_MAILER_PATH',, `define(`MAIL11_MAILER_PATH', /usr/etc/mail11)')
-_DEFIFNOT(`MAIL11_MAILER_FLAGS', `nsFx')
-ifdef(`MAIL11_MAILER_ARGS',, `define(`MAIL11_MAILER_ARGS', mail11 $g $x $h $u)')
-define(`_USE_DECNET_SYNTAX_')
-define(`_LOCAL_', ifdef(`confLOCAL_MAILER', confLOCAL_MAILER, `local'))
-define(`_MAIL11_QGRP', `ifelse(defn(`MAIL11_MAILER_QGRP'),`',`', ` Q=MAIL11_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-PUSHDIVERT(3)
-# DECNET delivery
-R$* < @ $=w .DECNET. > $#_LOCAL_ $: $1 local DECnet
-R$+ < @ $+ .DECNET. > $#mail11 $@ $2 $: $1 DECnet user
-POPDIVERT
-
-PUSHDIVERT(6)
-CPDECNET
-POPDIVERT
-
-###########################################
-### UTK-MAIL11 Mailer specification ###
-###########################################
-
-VERSIONID(`$Id: mail11.m4,v 8.22 2001/11/12 23:11:34 ca Exp $')
-
-SMail11To
-R$+ < @ $- .UUCP > $: $2 ! $1 back to old style
-R$+ < @ $- .DECNET > $: $2 :: $1 convert to DECnet style
-R$+ < @ $- .LOCAL > $: $2 :: $1 convert to DECnet style
-R$+ < @ $=w. > $: $2 :: $1 convert to DECnet style
-R$=w :: $+ $2 strip local names
-R$+ :: $+ $@ $1 :: $2 already qualified
-
-SMail11From
-R$+ $: $>Mail11To $1 preprocess
-R$w :: $+ $@ $w :: $1 ready to go
-
-Mmail11, P=MAIL11_MAILER_PATH, F=_MODMF_(MAIL11_MAILER_FLAGS, `MAIL11'), S=Mail11From, R=Mail11To,
- T=DNS/X-DECnet/X-Unix,_MAIL11_QGRP
- A=MAIL11_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/phquery.m4 b/contrib/sendmail/cf/mailer/phquery.m4
deleted file mode 100644
index 58b71b07a20a..000000000000
--- a/contrib/sendmail/cf/mailer/phquery.m4
+++ /dev/null
@@ -1,32 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001 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.
-#
-#
-# Contributed by Kimmo Suominen <kim@tac.nyc.ny.us>.
-#
-
-ifdef(`PH_MAILER_PATH',, `define(`PH_MAILER_PATH', /usr/local/etc/phquery)')
-_DEFIFNOT(`PH_MAILER_FLAGS', `ehmu')
-ifdef(`PH_MAILER_ARGS',, `define(`PH_MAILER_ARGS', `phquery -- $u')')
-define(`_PH_QGRP', `ifelse(defn(`PH_MAILER_QGRP'),`',`', ` Q=PH_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-####################################
-### PH Mailer specification ###
-####################################
-
-VERSIONID(`$Id: phquery.m4,v 8.17 2001/11/12 23:11:34 ca Exp $')
-
-Mph, P=PH_MAILER_PATH, F=_MODMF_(CONCAT(`nrDFM', PH_MAILER_FLAGS), `PH'), S=EnvFromL, R=EnvToL/HdrToL,
- T=DNS/RFC822/X-Unix,_PH_QGRP
- A=PH_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/pop.m4 b/contrib/sendmail/cf/mailer/pop.m4
deleted file mode 100644
index d2680e1cae9d..000000000000
--- a/contrib/sendmail/cf/mailer/pop.m4
+++ /dev/null
@@ -1,34 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001 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.
-#
-#
-
-ifdef(`POP_MAILER_PATH',, `define(`POP_MAILER_PATH', /usr/lib/mh/spop)')
-_DEFIFNOT(`POP_MAILER_FLAGS', `Penu')
-ifdef(`POP_MAILER_ARGS',, `define(`POP_MAILER_ARGS', `pop $u')')
-define(`_POP_QGRP', `ifelse(defn(`POP_MAILER_QGRP'),`',`', ` Q=POP_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-####################################
-### POP Mailer specification ###
-####################################
-
-VERSIONID(`$Id: pop.m4,v 8.22 2001/11/12 23:11:34 ca Exp $')
-
-Mpop, P=POP_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMq', POP_MAILER_FLAGS), `POP'), S=EnvFromL, R=EnvToL/HdrToL,
- T=DNS/RFC822/X-Unix,_POP_QGRP
- A=POP_MAILER_ARGS
-
-LOCAL_CONFIG
-# POP mailer is a pseudo-domain
-CPPOP
diff --git a/contrib/sendmail/cf/mailer/procmail.m4 b/contrib/sendmail/cf/mailer/procmail.m4
deleted file mode 100644
index 103e042a7ccc..000000000000
--- a/contrib/sendmail/cf/mailer/procmail.m4
+++ /dev/null
@@ -1,34 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001 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.
-#
-#
-
-ifdef(`PROCMAIL_MAILER_PATH',,
- `ifdef(`PROCMAIL_PATH',
- `define(`PROCMAIL_MAILER_PATH', PROCMAIL_PATH)',
- `define(`PROCMAIL_MAILER_PATH', /usr/local/bin/procmail)')')
-_DEFIFNOT(`PROCMAIL_MAILER_FLAGS', `SPhnu9')
-ifdef(`PROCMAIL_MAILER_ARGS',,
- `define(`PROCMAIL_MAILER_ARGS', `procmail -Y -m $h $f $u')')
-define(`_PROCMAIL_QGRP', `ifelse(defn(`PROCMAIL_MAILER_QGRP'),`',`', ` Q=PROCMAIL_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-######################*****##############
-### PROCMAIL Mailer specification ###
-##################*****##################
-
-VERSIONID(`$Id: procmail.m4,v 8.22 2001/11/12 23:11:34 ca Exp $')
-
-Mprocmail, P=PROCMAIL_MAILER_PATH, F=_MODMF_(CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), `PROCMAIL'), S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrFromSMTP,
- ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')T=DNS/RFC822/X-Unix,_PROCMAIL_QGRP
- A=PROCMAIL_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/qpage.m4 b/contrib/sendmail/cf/mailer/qpage.m4
deleted file mode 100644
index b0d9d51eb0f9..000000000000
--- a/contrib/sendmail/cf/mailer/qpage.m4
+++ /dev/null
@@ -1,31 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (C) 1997, Philip A. Prindeville and Enteka Enterprise Technology
-# Services
-#
-# Copyright (c) 1999, 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-# Tested with QuickPage version 3.2
-#
-ifdef(`QPAGE_MAILER_PATH', `', `define(`QPAGE_MAILER_PATH', `/usr/local/bin/qpage')')
-_DEFIFNOT(`QPAGE_MAILER_FLAGS', `mDFMs')
-ifdef(`QPAGE_MAILER_ARGS', `', `define(`QPAGE_MAILER_ARGS', `qpage -l0 -m -P$u')')
-ifdef(`QPAGE_MAILER_MAX', `', `define(`QPAGE_MAILER_MAX', `4096')')
-define(`_QPAGE_QGRP', `ifelse(defn(`QPAGE_MAILER_QGRP'),`',`', ` Q=QPAGE_MAILER_QGRP,')')dnl
-
-POPDIVERT
-
-######################################
-### QPAGE Mailer specification ###
-######################################
-
-VERSIONID(`$Id: qpage.m4,v 8.10 2001/11/12 23:11:34 ca Exp $')
-
-Mqpage, P=QPAGE_MAILER_PATH, F=_MODMF_(QPAGE_MAILER_FLAGS, `QPAGE'),
- M=QPAGE_MAILER_MAX, T=DNS/RFC822/X-Unix,_QPAGE_QGRP
- A=QPAGE_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/smtp.m4 b/contrib/sendmail/cf/mailer/smtp.m4
deleted file mode 100644
index 7010461c83c9..000000000000
--- a/contrib/sendmail/cf/mailer/smtp.m4
+++ /dev/null
@@ -1,124 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001, 2006 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.
-#
-#
-_DEFIFNOT(`_DEF_SMTP_MAILER_FLAGS', `mDFMuX')
-_DEFIFNOT(`SMTP_MAILER_FLAGS',`')
-_DEFIFNOT(`SMTP_MAILER_LL',`990')
-_DEFIFNOT(`RELAY_MAILER_LL',`2040')
-_DEFIFNOT(`RELAY_MAILER_FLAGS', `SMTP_MAILER_FLAGS')
-ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `TCP $h')')
-ifdef(`ESMTP_MAILER_ARGS',, `define(`ESMTP_MAILER_ARGS', `TCP $h')')
-ifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `TCP $h')')
-ifdef(`DSMTP_MAILER_ARGS',, `define(`DSMTP_MAILER_ARGS', `TCP $h')')
-ifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `TCP $h')')
-define(`_SMTP_QGRP', `ifelse(defn(`SMTP_MAILER_QGRP'),`',`', ` Q=SMTP_MAILER_QGRP,')')dnl
-define(`_ESMTP_QGRP', `ifelse(defn(`ESMTP_MAILER_QGRP'),`',`', ` Q=ESMTP_MAILER_QGRP,')')dnl
-define(`_SMTP8_QGRP', `ifelse(defn(`SMTP8_MAILER_QGRP'),`',`', ` Q=SMTP8_MAILER_QGRP,')')dnl
-define(`_DSMTP_QGRP', `ifelse(defn(`DSMTP_MAILER_QGRP'),`',`', ` Q=DSMTP_MAILER_QGRP,')')dnl
-define(`_RELAY_QGRP', `ifelse(defn(`RELAY_MAILER_QGRP'),`',`', ` Q=RELAY_MAILER_QGRP,')')dnl
-POPDIVERT
-#####################################
-### SMTP Mailer specification ###
-#####################################
-
-VERSIONID(`$Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $')
-
-#
-# common sender and masquerading recipient rewriting
-#
-SMasqSMTP
-R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-R$+ $@ $1 < @ *LOCAL* > add local qualification
-
-#
-# convert pseudo-domain addresses to real domain addresses
-#
-SPseudoToReal
-
-# pass <route-addr>s through
-R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
-
-# output fake domains as user%fake@relay
-ifdef(`BITNET_RELAY',
-`R$+ <@ $+ .BITNET. > $: $1 % $2 .BITNET < @ $B > user@host.BITNET
-R$+.BITNET <@ $~[ $*:$+ > $: $1 .BITNET < @ $4 > strip mailer: part',
- `dnl')
-ifdef(`_NO_UUCP_', `dnl', `
-# do UUCP heuristics; note that these are shared with UUCP mailers
-R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
-R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
-
-# leave these in .UUCP form to avoid further tampering
-R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
-R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
-R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
-R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
-R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
-R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY')
-
-
-#
-# envelope sender rewriting
-#
-SEnvFromSMTP
-R$+ $: $>PseudoToReal $1 sender/recipient common
-R$* :; <@> $@ list:; special case
-R$* $: $>MasqSMTP $1 qualify unqual'ed names
-R$+ $: $>MasqEnv $1 do masquerading
-
-
-#
-# envelope recipient rewriting --
-# also header recipient if not masquerading recipients
-#
-SEnvToSMTP
-R$+ $: $>PseudoToReal $1 sender/recipient common
-R$+ $: $>MasqSMTP $1 qualify unqual'ed names
-R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
-
-#
-# header sender and masquerading header recipient rewriting
-#
-SHdrFromSMTP
-R$+ $: $>PseudoToReal $1 sender/recipient common
-R:; <@> $@ list:; special case
-
-# do special header rewriting
-R$* <@> $* $@ $1 <@> $2 pass null host through
-R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
-R$* $: $>MasqSMTP $1 qualify unqual'ed names
-R$+ $: $>MasqHdr $1 do masquerading
-
-
-#
-# relay mailer header masquerading recipient rewriting
-#
-SMasqRelay
-R$+ $: $>MasqSMTP $1
-R$+ $: $>MasqHdr $1
-
-Msmtp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, SMTP_MAILER_FLAGS), `SMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_SMTP_QGRP
- A=SMTP_MAILER_ARGS
-Mesmtp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a', SMTP_MAILER_FLAGS), `ESMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_ESMTP_QGRP
- A=ESMTP_MAILER_ARGS
-Msmtp8, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `8', SMTP_MAILER_FLAGS), `SMTP8'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_SMTP8_QGRP
- A=SMTP8_MAILER_ARGS
-Mdsmtp, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a%', SMTP_MAILER_FLAGS), `DSMTP'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=SMTP_MAILER_LL,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,_DSMTP_QGRP
- A=DSMTP_MAILER_ARGS
-Mrelay, P=[IPC], F=_MODMF_(CONCAT(_DEF_SMTP_MAILER_FLAGS, `a8', RELAY_MAILER_FLAGS), `RELAY'), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `MasqSMTP/MasqRelay', `MasqSMTP'), E=\r\n, L=RELAY_MAILER_LL,
- _OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')_OPTINS(`RELAY_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')T=DNS/RFC822/SMTP,_RELAY_QGRP
- A=RELAY_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/usenet.m4 b/contrib/sendmail/cf/mailer/usenet.m4
deleted file mode 100644
index 39f49b8bf06d..000000000000
--- a/contrib/sendmail/cf/mailer/usenet.m4
+++ /dev/null
@@ -1,28 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2000, 2003 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.
-#
-#
-
-ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)')
-_DEFIFNOT(`USENET_MAILER_FLAGS', `rsDFMmn')
-ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `inews -m -h -n')')
-define(`_USENET_QGRP', `ifelse(defn(`USENET_MAILER_QGRP'),`',`', ` Q=USENET_MAILER_QGRP,')')dnl
-POPDIVERT
-####################################
-### USENET Mailer specification ###
-####################################
-
-VERSIONID(`$Id: usenet.m4,v 8.22 2003/02/20 21:16:13 ca Exp $')
-
-Musenet, P=USENET_MAILER_PATH, F=_MODMF_(USENET_MAILER_FLAGS, `USENET'), S=EnvFromL, R=EnvToL,
- _OPTINS(`USENET_MAILER_MAX', `M=', `, ')T=X-Usenet/X-Usenet/X-Unix,_USENET_QGRP
- A=USENET_MAILER_ARGS $u
diff --git a/contrib/sendmail/cf/mailer/uucp.m4 b/contrib/sendmail/cf/mailer/uucp.m4
deleted file mode 100644
index 6513556079a9..000000000000
--- a/contrib/sendmail/cf/mailer/uucp.m4
+++ /dev/null
@@ -1,157 +0,0 @@
-PUSHDIVERT(-1)
-#
-# Copyright (c) 1998-2001 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.
-#
-#
-
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')
-_DEFIFNOT(`UUCP_MAILER_FLAGS', `')
-ifdef(`UUCP_MAILER_MAX',,
- `define(`UUCP_MAILER_MAX',
- `ifdef(`UUCP_MAX_SIZE', `UUCP_MAX_SIZE', 100000)')')
-define(`_UUCP_QGRP', `ifelse(defn(`UUCP_MAILER_QGRP'),`',`', ` Q=UUCP_MAILER_QGRP,')')dnl
-POPDIVERT
-#####################################
-### UUCP Mailer specification ###
-#####################################
-
-VERSIONID(`$Id: uucp.m4,v 8.44 2001/08/24 19:49:08 ca Exp $')
-
-#
-# envelope and header sender rewriting
-#
-SFromU
-
-# handle error address as a special case
-R<@> $n errors to mailer-daemon
-
-# list:; syntax should disappear
-R:; <@> $@
-
-R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots
-R$* < @ $=w > $1 strip local name
-R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format
-R<@ $+ > : $+ $1 ! $2 convert to UUCP format
-R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format
-R$* < @ $+ > $2 ! $1 convert to UUCP format
-R$&h ! $+ ! $+ $@ $1 ! $2 $h!...!user => ...!user
-R$&h ! $+ $@ $&h ! $1 $h!user => $h!user
-R$+ $: $U ! $1 prepend our name
-R! $+ $: $k ! $1 in case $U undefined
-
-#
-# envelope recipient rewriting
-#
-SEnvToU
-
-# list:; should disappear
-R:; <@> $@
-
-R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots
-R$* < @ $=w > $1 strip local name
-R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format
-R<@ $+ > : $+ $1 ! $2 convert to UUCP format
-R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format
-R$* < @ $+ > $2 ! $1 convert to UUCP format
-
-#
-# header recipient rewriting
-#
-SHdrToU
-
-# list:; syntax should disappear
-R:; <@> $@
-
-R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots
-R$* < @ $=w > $1 strip local name
-R<@ $- . UUCP > : $+ $1 ! $2 convert to UUCP format
-R<@ $+ > : $+ $1 ! $2 convert to UUCP format
-R$* < @ $- . UUCP > $2 ! $1 convert to UUCP format
-R$* < @ $+ > $2 ! $1 convert to UUCP format
-R$&h ! $+ ! $+ $@ $1 ! $2 $h!...!user => ...!user
-R$&h ! $+ $@ $&h ! $1 $h!user => $h!user
-R$+ $: $U ! $1 prepend our name
-R! $+ $: $k ! $1 in case $U undefined
-
-
-ifdef(`_MAILER_smtp_',
-`#
-# envelope sender rewriting for uucp-dom mailer
-#
-SEnvFromUD
-
-# handle error address as a special case
-R<@> $n errors to mailer-daemon
-
-# pass everything to standard SMTP mailer rewriting
-R$* $@ $>EnvFromSMTP $1
-
-#
-# envelope sender rewriting for uucp-uudom mailer
-#
-SEnvFromUUD
-
-# handle error address as a special case
-R<@> $n errors to mailer-daemon
-
-# do standard SMTP mailer rewriting
-R$* $: $>EnvFromSMTP $1
-
-R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots
-R<@ $- . UUCP > : $+ $@ $1 ! $2 convert to UUCP format
-R<@ $+ > : $+ $@ $1 ! $2 convert to UUCP format
-R$* < @ $- . UUCP > $@ $2 ! $1 convert to UUCP format
-R$* < @ $+ > $@ $2 ! $1 convert to UUCP format',
-`errprint(`*** MAILER(`smtp') must appear before MAILER(`uucp')
- if uucp-dom should be included.')
-')
-
-PUSHDIVERT(4)
-# resolve locally connected UUCP links
-R$* < @ $=Z . UUCP. > $* $#uucp-uudom $@ $2 $: $1 < @ $2 .UUCP. > $3
-R$* < @ $=Y . UUCP. > $* $#uucp-new $@ $2 $: $1 < @ $2 .UUCP. > $3
-R$* < @ $=U . UUCP. > $* $#uucp-old $@ $2 $: $1 < @ $2 .UUCP. > $3
-POPDIVERT
-
-#
-# There are innumerable variations on the UUCP mailer. It really
-# is rather absurd.
-#
-
-# old UUCP mailer (two names)
-Muucp, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`DFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU,
- M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
- A=UUCP_MAILER_ARGS
-Muucp-old, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`DFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU,
- M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
- A=UUCP_MAILER_ARGS
-
-# smart UUCP mailer (handles multiple addresses) (two names)
-Msuucp, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU,
- M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
- A=UUCP_MAILER_ARGS
-Muucp-new, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhuUd', UUCP_MAILER_FLAGS), `UUCP'), S=FromU, R=EnvToU/HdrToU,
- M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
- A=UUCP_MAILER_ARGS
-
-ifdef(`_MAILER_smtp_',
-`# domain-ized UUCP mailer
-Muucp-dom, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhud', UUCP_MAILER_FLAGS), `UUCP'), S=EnvFromUD/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'),
- M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
- A=UUCP_MAILER_ARGS
-
-# domain-ized UUCP mailer with UUCP-style sender envelope
-Muucp-uudom, P=UUCP_MAILER_PATH, F=_MODMF_(CONCAT(`mDFMhud', UUCP_MAILER_FLAGS), `UUCP'), S=EnvFromUUD/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'),
- M=UUCP_MAILER_MAX, _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,_UUCP_QGRP
- A=UUCP_MAILER_ARGS')
-
-
diff --git a/contrib/sendmail/cf/ostype/a-ux.m4 b/contrib/sendmail/cf/ostype/a-ux.m4
deleted file mode 100644
index c4d4321bc38b..000000000000
--- a/contrib/sendmail/cf/ostype/a-ux.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999, 2001 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: a-ux.m4,v 8.2 2001/07/23 16:19:36 gshapiro Exp $')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -d -r $f $u')')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/aix3.m4 b/contrib/sendmail/cf/ostype/aix3.m4
deleted file mode 100644
index 4376f6770a00..000000000000
--- a/contrib/sendmail/cf/ostype/aix3.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: aix3.m4,v 8.16 1999/04/12 17:34:36 ca Exp $')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail $u)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl
-define(`confEBINDIR', `/usr/lib')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/aix4.m4 b/contrib/sendmail/cf/ostype/aix4.m4
deleted file mode 100644
index 8e0b9d44ab8f..000000000000
--- a/contrib/sendmail/cf/ostype/aix4.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1996 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: aix4.m4,v 8.11 1999/04/12 17:34:37 ca Exp $')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl
-define(`confEBINDIR', `/usr/lib')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/aix5.m4 b/contrib/sendmail/cf/ostype/aix5.m4
deleted file mode 100644
index e8df77e30ac1..000000000000
--- a/contrib/sendmail/cf/ostype/aix5.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: aix5.m4,v 1.1 2000/12/08 21:53:36 ca Exp $')
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/bellmail)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', mail -F $g $u)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl
-define(`confEBINDIR', `/usr/lib')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/altos.m4 b/contrib/sendmail/cf/ostype/altos.m4
deleted file mode 100644
index 1cffe1e8d2d9..000000000000
--- a/contrib/sendmail/cf/ostype/altos.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1996 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.
-#
-#
-# Contributed by Tim Rice <tim@trr.metro.NET>.
-#
-
-divert(0)
-VERSIONID(`$Id: altos.m4,v 8.15 1999/04/24 05:37:40 gshapiro Exp $')
-
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mPuhCE9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/amdahl-uts.m4 b/contrib/sendmail/cf/ostype/amdahl-uts.m4
deleted file mode 100644
index edd3a5db86a7..000000000000
--- a/contrib/sendmail/cf/ostype/amdahl-uts.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: amdahl-uts.m4,v 8.16 1999/04/24 05:37:40 gshapiro Exp $')
-divert(-1)
-
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSn9')
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/bsd4.3.m4 b/contrib/sendmail/cf/ostype/bsd4.3.m4
deleted file mode 100644
index 044f205ff9e4..000000000000
--- a/contrib/sendmail/cf/ostype/bsd4.3.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bsd4.3.m4,v 8.12 1999/02/07 07:26:18 gshapiro Exp $')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/bsd4.4.m4 b/contrib/sendmail/cf/ostype/bsd4.4.m4
deleted file mode 100644
index 3f7b0891de2c..000000000000
--- a/contrib/sendmail/cf/ostype/bsd4.4.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bsd4.4.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/bsdi.m4 b/contrib/sendmail/cf/ostype/bsdi.m4
deleted file mode 100644
index 35679bcf1c41..000000000000
--- a/contrib/sendmail/cf/ostype/bsdi.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bsdi.m4,v 8.1 1999/11/19 05:18:13 gshapiro Exp $')
-include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
diff --git a/contrib/sendmail/cf/ostype/bsdi1.0.m4 b/contrib/sendmail/cf/ostype/bsdi1.0.m4
deleted file mode 100644
index b806a37a33ac..000000000000
--- a/contrib/sendmail/cf/ostype/bsdi1.0.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bsdi1.0.m4,v 8.11 1999/11/19 05:18:14 gshapiro Exp $')
-errprint(`NOTE: OSTYPE(bsdi1.0) is deprecated. Use OSTYPE(bsdi) instead.')
-include(_CF_DIR_`'ostype/bsdi.m4)dnl
diff --git a/contrib/sendmail/cf/ostype/bsdi2.0.m4 b/contrib/sendmail/cf/ostype/bsdi2.0.m4
deleted file mode 100644
index 493406fd37f9..000000000000
--- a/contrib/sendmail/cf/ostype/bsdi2.0.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: bsdi2.0.m4,v 8.10 1999/11/19 05:18:14 gshapiro Exp $')
-errprint(`NOTE: OSTYPE(bsdi2.0) is deprecated. Use OSTYPE(bsdi) instead.')
-include(_CF_DIR_`'ostype/bsdi.m4)dnl
diff --git a/contrib/sendmail/cf/ostype/darwin.m4 b/contrib/sendmail/cf/ostype/darwin.m4
deleted file mode 100644
index ee5abe703c69..000000000000
--- a/contrib/sendmail/cf/ostype/darwin.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000, 2002 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: darwin.m4,v 8.4 2005/06/30 01:16:04 ca Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-dnl turn on S flag for local mailer
-MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
-define(`confDONT_BLAME_SENDMAIL', `AssumeSafeChown,GroupWritableDirPathSafe')dnl
diff --git a/contrib/sendmail/cf/ostype/dgux.m4 b/contrib/sendmail/cf/ostype/dgux.m4
deleted file mode 100644
index 335aedac8948..000000000000
--- a/contrib/sendmail/cf/ostype/dgux.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: dgux.m4,v 8.14 1999/04/12 17:34:37 ca Exp $')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-define(`confEBINDIR', `/usr/lib')dnl
-LOCAL_CONFIG
-E_FORCE_MAIL_LOCAL_=yes
diff --git a/contrib/sendmail/cf/ostype/domainos.m4 b/contrib/sendmail/cf/ostype/domainos.m4
deleted file mode 100644
index 759459d3270a..000000000000
--- a/contrib/sendmail/cf/ostype/domainos.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: domainos.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $')
-divert(-1)
-
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/dragonfly.m4 b/contrib/sendmail/cf/ostype/dragonfly.m4
deleted file mode 100644
index c1266afe868e..000000000000
--- a/contrib/sendmail/cf/ostype/dragonfly.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001, 2004 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: dragonfly.m4,v 1.1 2004/08/06 03:54:05 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-dnl turn on S flag for local mailer
-MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', `/usr/local/bin/uux')')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/dynix3.2.m4 b/contrib/sendmail/cf/ostype/dynix3.2.m4
deleted file mode 100644
index e0729531e8ee..000000000000
--- a/contrib/sendmail/cf/ostype/dynix3.2.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: dynix3.2.m4,v 8.14 1999/04/24 05:37:41 gshapiro Exp $')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/freebsd4.m4 b/contrib/sendmail/cf/ostype/freebsd4.m4
deleted file mode 100644
index b84a1e2e5452..000000000000
--- a/contrib/sendmail/cf/ostype/freebsd4.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: freebsd4.m4,v 1.1 2001/03/21 22:44:58 ca Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-dnl turn on S flag for local mailer
-MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/freebsd5.m4 b/contrib/sendmail/cf/ostype/freebsd5.m4
deleted file mode 100644
index eb7a73a0d5be..000000000000
--- a/contrib/sendmail/cf/ostype/freebsd5.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: freebsd5.m4,v 1.1 2001/10/08 22:25:34 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-dnl turn on S flag for local mailer
-MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', `/usr/local/bin/uux')')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/freebsd6.m4 b/contrib/sendmail/cf/ostype/freebsd6.m4
deleted file mode 100644
index dde1d3f41c77..000000000000
--- a/contrib/sendmail/cf/ostype/freebsd6.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: freebsd6.m4,v 1.1 2005/06/14 02:16:35 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-dnl turn on S flag for local mailer
-MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', `/usr/local/bin/uux')')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/gnu.m4 b/contrib/sendmail/cf/ostype/gnu.m4
deleted file mode 100644
index 39e8171cac91..000000000000
--- a/contrib/sendmail/cf/ostype/gnu.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1997 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.
-#
-#
-#
-
-divert(0)
-VERSIONID(`$Id: gnu.m4,v 8.13 1999/04/24 05:37:41 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /libexec/mail.local)')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail $u')')dnl
-define(`confEBINDIR', `/libexec')dnl
diff --git a/contrib/sendmail/cf/ostype/hpux10.m4 b/contrib/sendmail/cf/ostype/hpux10.m4
deleted file mode 100644
index 290c0c682d83..000000000000
--- a/contrib/sendmail/cf/ostype/hpux10.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: hpux10.m4,v 8.19 1999/04/24 05:37:41 gshapiro Exp $')
-
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-dnl
-dnl For maximum compability with HP-UX, use:
-dnl define(`confME_TOO', True)dnl
diff --git a/contrib/sendmail/cf/ostype/hpux11.m4 b/contrib/sendmail/cf/ostype/hpux11.m4
deleted file mode 100644
index 94e2e98f1d7c..000000000000
--- a/contrib/sendmail/cf/ostype/hpux11.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: hpux11.m4,v 8.1 1999/11/19 05:22:59 gshapiro Exp $')
-
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', /usr/bin/sh)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/hpux9.m4 b/contrib/sendmail/cf/ostype/hpux9.m4
deleted file mode 100644
index 902d39a655a2..000000000000
--- a/contrib/sendmail/cf/ostype/hpux9.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: hpux9.m4,v 8.24 1999/04/24 05:37:41 gshapiro Exp $')
-
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `m9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gC $h!rmail ($u)')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-define(`confEBINDIR', `/usr/lib')dnl
-dnl
-dnl For maximum compability with HP-UX, use:
-dnl define(`confME_TOO', True)dnl
diff --git a/contrib/sendmail/cf/ostype/irix4.m4 b/contrib/sendmail/cf/ostype/irix4.m4
deleted file mode 100644
index f966458f9d11..000000000000
--- a/contrib/sendmail/cf/ostype/irix4.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: irix4.m4,v 8.19 1999/04/24 05:37:41 gshapiro Exp $')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehm9')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/irix5.m4 b/contrib/sendmail/cf/ostype/irix5.m4
deleted file mode 100644
index dda4bf45c1a4..000000000000
--- a/contrib/sendmail/cf/ostype/irix5.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1995 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.
-#
-#
-# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
-#
-
-#
-# Notes:
-# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
-# perhaps don't want it.
-# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1)
-# put some Asian sites may prefer otherwise -- or perhaps not.
-# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u
-# It seems work without that -s however.
-# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest)
-# - In SGI seems that TZ variable is needed that correct time is marked to
-# syslog
-# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf
-#
-
-divert(0)
-VERSIONID(`$Id: irix5.m4,v 8.16 1999/04/24 05:37:41 gshapiro Exp $')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehmu9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/sendmail.st')')dnl
-define(`confDEF_USER_ID', `998:998')dnl
-define(`confTIME_ZONE', USE_TZ)dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/irix6.m4 b/contrib/sendmail/cf/ostype/irix6.m4
deleted file mode 100644
index 839e3873ef87..000000000000
--- a/contrib/sendmail/cf/ostype/irix6.m4
+++ /dev/null
@@ -1,39 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1995 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.
-#
-#
-# Contributed by Kari E. Hurtta <Kari.Hurtta@dionysos.fmi.fi>
-#
-
-#
-# Notes:
-# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
-# perhaps don't want it. They have begun removing this flag in IRIX 6.5.
-# - Perhaps is should also add define(`LOCAL_MAILER_CHARSET', iso-8859-1)
-# put some Asian sites may prefer otherwise -- or perhaps not.
-# - SGI's /etc/sendmail.cf seems use: A=mail -s -d $u
-# It seems work without that -s however.
-# - SGI's /etc/sendmail.cf set's default uid and gid to 998 (guest)
-# - In SGI seems that TZ variable is needed that correct time is marked to
-# syslog
-# - helpfile is in /etc/sendmail.hf in SGI's /etc/sendmail.cf
-#
-
-divert(0)
-VERSIONID(`$Id: irix6.m4,v 8.14 1999/08/05 20:35:55 gshapiro Exp $')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Ehmu9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -s -d $u')')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/sendmail.st')')dnl
-define(`confDEF_USER_ID', `998:998')dnl
-define(`confTIME_ZONE', USE_TZ)dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/isc4.1.m4 b/contrib/sendmail/cf/ostype/isc4.1.m4
deleted file mode 100644
index a124643a5e54..000000000000
--- a/contrib/sendmail/cf/ostype/isc4.1.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-#
-
-divert(0)
-VERSIONID(`$Id: isc4.1.m4,v 8.16 1999/04/24 05:37:42 gshapiro Exp $')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail -s $u')')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `humS9')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /bin/lmail)')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -gC $h!rmail ($u)')')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/linux.m4 b/contrib/sendmail/cf/ostype/linux.m4
deleted file mode 100644
index b02ad29ee8e0..000000000000
--- a/contrib/sendmail/cf/ostype/linux.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $')
-define(`confEBINDIR', `/usr/sbin')
-ifdef(`PROCMAIL_MAILER_PATH',,
- define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
-FEATURE(local_procmail)
diff --git a/contrib/sendmail/cf/ostype/maxion.m4 b/contrib/sendmail/cf/ostype/maxion.m4
deleted file mode 100644
index 6f9a48ecbcfa..000000000000
--- a/contrib/sendmail/cf/ostype/maxion.m4
+++ /dev/null
@@ -1,28 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1996 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.
-#
-#
-# Concurrent Computer Corporation Maxion system support contributed
-# by Donald R. Laster Jr. <Laster@access.digex.com>.
-#
-
-divert(0)
-VERSIONID(`$Id: maxion.m4,v 8.17 1999/10/21 00:31:39 gshapiro Exp $')
-
-define(`QUEUE_DIR', `/var/spool/mqueue')dnl
-define(`STATUS_FILE', `/var/adm/log/sendmail.st')dnl
-define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`LOCAL_MAILER_ARGS', `mail $u')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
-define(`confEBINDIR', `/usr/ucblib')dnl
-divert(-1)
diff --git a/contrib/sendmail/cf/ostype/mklinux.m4 b/contrib/sendmail/cf/ostype/mklinux.m4
deleted file mode 100644
index 90b7d2da3098..000000000000
--- a/contrib/sendmail/cf/ostype/mklinux.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998-2000 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.
-#
-#
-# MkLinux support contributed by Paul DuBois <dubois@primate.wisc.edu>
-#
-
-divert(0)
-VERSIONID(`$Id: mklinux.m4,v 8.15 2000/05/09 18:48:56 gshapiro Exp $')
-define(`confEBINDIR', `/usr/sbin')
-ifdef(`STATUS_FILE',,
- `define(`STATUS_FILE', `/var/log/sendmail.st')')
-ifdef(`PROCMAIL_MAILER_PATH',,
- `define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')')
-FEATURE(local_procmail)
diff --git a/contrib/sendmail/cf/ostype/mpeix.m4 b/contrib/sendmail/cf/ostype/mpeix.m4
deleted file mode 100644
index 9e760e94e5f4..000000000000
--- a/contrib/sendmail/cf/ostype/mpeix.m4
+++ /dev/null
@@ -1,22 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: mpeix.m4,v 1.1 2001/12/13 23:56:40 gshapiro Exp $')
-
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/tsmail')')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mu9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `tsmail $u')')dnl
-ifdef(`LOCAL_SHELL_PATH',, `define(`LOCAL_SHELL_PATH', `/bin/sh')')dnl
-ifdef(`confDEF_USER_ID',, `define(`confDEF_USER_ID', `SERVER.SENDMAIL')')dnl
-ifdef(`confTRUSTED_USER',, `define(`confTRUSTED_USER', `SERVER.SENDMAIL')')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
-define(`confDONT_BLAME_SENDMAIL', `ForwardFileInGroupWritableDirPath')dnl
diff --git a/contrib/sendmail/cf/ostype/nextstep.m4 b/contrib/sendmail/cf/ostype/nextstep.m4
deleted file mode 100644
index 0c528931233f..000000000000
--- a/contrib/sendmail/cf/ostype/nextstep.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: nextstep.m4,v 8.21 1999/10/21 00:31:40 gshapiro Exp $')
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `euP')')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/openbsd.m4 b/contrib/sendmail/cf/ostype/openbsd.m4
deleted file mode 100644
index aaeb615e502c..000000000000
--- a/contrib/sendmail/cf/ostype/openbsd.m4
+++ /dev/null
@@ -1,17 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: openbsd.m4,v 8.3 1999/04/24 05:37:42 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/log/sendmail.st')')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/libexec/mail.local)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `rmn9S')dnl
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -z -a$g $h!rmail ($u)')')dnl
diff --git a/contrib/sendmail/cf/ostype/osf1.m4 b/contrib/sendmail/cf/ostype/osf1.m4
deleted file mode 100644
index dd13963a298f..000000000000
--- a/contrib/sendmail/cf/ostype/osf1.m4
+++ /dev/null
@@ -1,19 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: osf1.m4,v 8.16 1999/10/11 18:45:43 gshapiro Exp $')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/usr/adm/sendmail/sendmail.st')')dnl
-define(`confDEF_USER_ID', `daemon')
-define(`confEBINDIR', `/usr/lbin')dnl
diff --git a/contrib/sendmail/cf/ostype/powerux.m4 b/contrib/sendmail/cf/ostype/powerux.m4
deleted file mode 100644
index 4646fe3ee2e0..000000000000
--- a/contrib/sendmail/cf/ostype/powerux.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: powerux.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
-
-define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `mn9')dnl
-define(`LOCAL_MAILER_ARGS', `rmail $u')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
-define(`confEBINDIR', `/usr/local/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/ptx2.m4 b/contrib/sendmail/cf/ostype/ptx2.m4
deleted file mode 100644
index 84e83963f9a1..000000000000
--- a/contrib/sendmail/cf/ostype/ptx2.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1994 Eric P. Allman. All rights reserved.
-# Copyright (c) 1994
-# 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.
-#
-#
-
-# Support for DYNIX/ptx 2.x.
-
-divert(0)
-VERSIONID(`$Id: ptx2.m4,v 8.17 1999/04/24 05:37:43 gshapiro Exp $')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-define(`LOCAL_MAILER_PATH', `/bin/mail')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fmn9')dnl
-define(`LOCAL_SHELL_FLAGS', `eu')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/qnx.m4 b/contrib/sendmail/cf/ostype/qnx.m4
deleted file mode 100644
index 5fb3b08e14c0..000000000000
--- a/contrib/sendmail/cf/ostype/qnx.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1997 Eric P. Allman. 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.
-#
-#
-# Contributed by Glen McCready <glen@qnx.com>
-#
-
-divert(0)
-VERSIONID(`$Id: qnx.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
-define(`QUEUE_DIR', /usr/spool/mqueue)dnl
-define(`LOCAL_MAILER_ARGS', `mail $u')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Sh')dnl
-define(`LOCAL_MAILER_PATH', /usr/bin/mailx)dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -z -a$f $h!rmail ($u)')dnl
diff --git a/contrib/sendmail/cf/ostype/riscos4.5.m4 b/contrib/sendmail/cf/ostype/riscos4.5.m4
deleted file mode 100644
index f8069383aaf7..000000000000
--- a/contrib/sendmail/cf/ostype/riscos4.5.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: riscos4.5.m4,v 8.15 1999/04/24 05:37:43 gshapiro Exp $')
-
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `rmail -d $u')')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sco-uw-2.1.m4 b/contrib/sendmail/cf/ostype/sco-uw-2.1.m4
deleted file mode 100644
index 8fe1b84a7914..000000000000
--- a/contrib/sendmail/cf/ostype/sco-uw-2.1.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# 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.
-#
-#
-# SCO UnixWare 2.1.2 ostype file
-#
-# Contributed by Christopher Durham <chrisdu@SCO.COM> of SCO.
-#
-divert(0)
-VERSIONID(`$Id: sco-uw-2.1.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
-
-define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fhCEn9')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
-define(`LOCAL_MAILER_ARGS',`rmail $u')dnl
-define(`confEBINDIR', `/usr/lib')dnl
-define(`confTIME_ZONE', `USE_TZ')dnl
diff --git a/contrib/sendmail/cf/ostype/sco3.2.m4 b/contrib/sendmail/cf/ostype/sco3.2.m4
deleted file mode 100644
index 89ac63765373..000000000000
--- a/contrib/sendmail/cf/ostype/sco3.2.m4
+++ /dev/null
@@ -1,23 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: sco3.2.m4,v 8.16 1999/04/24 05:37:43 gshapiro Exp $')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/lmail)')dnl
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `PuhCE9')dnl
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `lmail $u')')dnl
-ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sinix.m4 b/contrib/sendmail/cf/ostype/sinix.m4
deleted file mode 100644
index bcd6b31826bb..000000000000
--- a/contrib/sendmail/cf/ostype/sinix.m4
+++ /dev/null
@@ -1,20 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
-# All rights reserved.
-# Copyright (c) 1996 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: sinix.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
-define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', `/var/sendmail.st')')dnl
-define(`confEBINDIR', `/usr/ucblib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.m4 b/contrib/sendmail/cf/ostype/solaris2.m4
deleted file mode 100644
index 6cf14846d93e..000000000000
--- a/contrib/sendmail/cf/ostype/solaris2.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 ostype file is suitable for use on Solaris 2.x systems that
-# have mail.local installed. It is my understanding that this is
-# standard as of Solaris 2.5.
-#
-
-divert(0)
-VERSIONID(`$Id: solaris2.m4,v 8.22 1999/09/24 21:43:53 ca Exp $')
-divert(-1)
-
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSmn9')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')')
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.ml.m4 b/contrib/sendmail/cf/ostype/solaris2.ml.m4
deleted file mode 100644
index 72cb72923e95..000000000000
--- a/contrib/sendmail/cf/ostype/solaris2.ml.m4
+++ /dev/null
@@ -1,27 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 ostype file is suitable for use on Solaris 2.x systems that
-# have mail.local installed. It is my understanding that this is
-# standard as of Solaris 2.5.
-#
-
-divert(0)
-VERSIONID(`$Id: solaris2.ml.m4,v 8.14 1999/04/24 05:37:44 gshapiro Exp $')
-divert(-1)
-
-ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSmn9')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail.local -d $u')')
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.pre5.m4 b/contrib/sendmail/cf/ostype/solaris2.pre5.m4
deleted file mode 100644
index c30dda60df6f..000000000000
--- a/contrib/sendmail/cf/ostype/solaris2.pre5.m4
+++ /dev/null
@@ -1,26 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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 ostype file is suitable for use on Solaris 2.x systems that
-# use mail as local mailer which are usually version before 2.5.
-#
-
-
-divert(0)
-VERSIONID(`$Id: solaris2.pre5.m4,v 8.1 1999/09/25 08:17:44 ca Exp $')
-divert(-1)
-
-_DEFIFNOT(`LOCAL_MAILER_FLAGS', `SnE9')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')')
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris8.m4 b/contrib/sendmail/cf/ostype/solaris8.m4
deleted file mode 100644
index 10b9d37bd6ed..000000000000
--- a/contrib/sendmail/cf/ostype/solaris8.m4
+++ /dev/null
@@ -1,25 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 2000 Sendmail, Inc. and its suppliers.
-# 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 ostype file is suitable for use on Solaris 8 and later systems,
-# taking advantage of mail.local's LMTP support, the existence of
-# /var/run and support for IPv6, all of which where introduced in
-# Solaris 8.
-#
-
-divert(0)
-VERSIONID(`$Id: solaris8.m4,v 8.2 2000/08/23 16:10:49 gshapiro Exp $')
-divert(-1)
-
-ifdef(`UUCP_MAILER_ARGS',, `define(`UUCP_MAILER_ARGS', `uux - -r -a$g $h!rmail ($u)')')
-define(`confEBINDIR', `/usr/lib')dnl
-define(`confPID_FILE', `/var/run/sendmail.pid')dnl
-define(`_NETINET6_')dnl
-FEATURE(`local_lmtp')dnl
diff --git a/contrib/sendmail/cf/ostype/sunos3.5.m4 b/contrib/sendmail/cf/ostype/sunos3.5.m4
deleted file mode 100644
index d1d776ec348c..000000000000
--- a/contrib/sendmail/cf/ostype/sunos3.5.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: sunos3.5.m4,v 8.10 1999/02/07 07:26:23 gshapiro Exp $')
-
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/sunos4.1.m4 b/contrib/sendmail/cf/ostype/sunos4.1.m4
deleted file mode 100644
index 1e821ffe2c7e..000000000000
--- a/contrib/sendmail/cf/ostype/sunos4.1.m4
+++ /dev/null
@@ -1,18 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: sunos4.1.m4,v 8.10 1999/02/07 07:26:24 gshapiro Exp $')
-
-define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/svr4.m4 b/contrib/sendmail/cf/ostype/svr4.m4
deleted file mode 100644
index 3f7706b47703..000000000000
--- a/contrib/sendmail/cf/ostype/svr4.m4
+++ /dev/null
@@ -1,21 +0,0 @@
-divert(-1)
-#
-# Copyright (c) 1998, 1999 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.
-#
-#
-
-divert(0)
-VERSIONID(`$Id: svr4.m4,v 8.17 1999/10/21 00:31:41 gshapiro Exp $')
-
-define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
-define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
-define(`UUCP_MAILER_ARGS', `uux - -r -a$g -gmedium $h!rmail ($u)')dnl
-define(`confEBINDIR', `/usr/ucblib')dnl
diff --git a/contrib/sendmail/cf/ostype/ultrix4.m4 b/contrib/sendmail/cf/ostype/ultrix4.m4
deleted file mode 1006