summaryrefslogtreecommitdiffstats
path: root/contrib/sendmail/cf
diff options
context:
space:
mode:
authorgshapiro <gshapiro@FreeBSD.org>2000-08-12 21:55:49 +0000
committergshapiro <gshapiro@FreeBSD.org>2000-08-12 21:55:49 +0000
commitc3cd75415d60bc002b20182ffd3383ea9e901a80 (patch)
tree211dfd0f771f89d6abe14fa94cab53985a9d0116 /contrib/sendmail/cf
parent231592eb7942ebd4becae24ea8e018acea3742a9 (diff)
parent4332139a9a11f773ffe5109bed871561e3c290a1 (diff)
downloadFreeBSD-src-c3cd75415d60bc002b20182ffd3383ea9e901a80.zip
FreeBSD-src-c3cd75415d60bc002b20182ffd3383ea9e901a80.tar.gz
This commit was generated by cvs2svn to compensate for changes in r64562,
which included commits to RCS files with non-trunk default branches.
Diffstat (limited to 'contrib/sendmail/cf')
-rw-r--r--contrib/sendmail/cf/README1798
-rwxr-xr-xcontrib/sendmail/cf/cf/Build7
-rw-r--r--contrib/sendmail/cf/cf/Makefile53
-rw-r--r--contrib/sendmail/cf/cf/chez.cs.mc5
-rw-r--r--contrib/sendmail/cf/cf/clientproto.mc10
-rw-r--r--contrib/sendmail/cf/cf/cs-hpux10.mc5
-rw-r--r--contrib/sendmail/cf/cf/cs-hpux9.mc5
-rw-r--r--contrib/sendmail/cf/cf/cs-osf1.mc5
-rw-r--r--contrib/sendmail/cf/cf/cs-solaris2.mc5
-rw-r--r--contrib/sendmail/cf/cf/cs-sunos4.1.mc5
-rw-r--r--contrib/sendmail/cf/cf/cs-ultrix4.mc5
-rw-r--r--contrib/sendmail/cf/cf/cyrusproto.mc29
-rw-r--r--contrib/sendmail/cf/cf/generic-bsd4.4.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux10.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-hpux9.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-linux.mc27
-rw-r--r--contrib/sendmail/cf/cf/generic-nextstep3.3.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-osf1.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-solaris2.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-sunos4.1.mc5
-rw-r--r--contrib/sendmail/cf/cf/generic-ultrix4.mc5
-rw-r--r--contrib/sendmail/cf/cf/huginn.cs.mc5
-rw-r--r--contrib/sendmail/cf/cf/knecht.mc14
-rw-r--r--contrib/sendmail/cf/cf/mail.cs.mc5
-rw-r--r--contrib/sendmail/cf/cf/mail.eecs.mc5
-rw-r--r--contrib/sendmail/cf/cf/mailspool.cs.mc5
-rw-r--r--contrib/sendmail/cf/cf/python.cs.mc5
-rw-r--r--contrib/sendmail/cf/cf/s2k-osf1.mc5
-rw-r--r--contrib/sendmail/cf/cf/s2k-ultrix4.mc5
-rw-r--r--contrib/sendmail/cf/cf/tcpproto.mc5
-rw-r--r--contrib/sendmail/cf/cf/ucbarpa.mc5
-rw-r--r--contrib/sendmail/cf/cf/ucbvax.mc5
-rw-r--r--contrib/sendmail/cf/cf/uucpproto.mc5
-rw-r--r--contrib/sendmail/cf/cf/vangogh.cs.mc5
-rw-r--r--contrib/sendmail/cf/domain/Berkeley.EDU.m45
-rw-r--r--contrib/sendmail/cf/domain/CS.Berkeley.EDU.m45
-rw-r--r--contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m45
-rw-r--r--contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m45
-rw-r--r--contrib/sendmail/cf/domain/berkeley-only.m45
-rw-r--r--contrib/sendmail/cf/domain/generic.m411
-rw-r--r--contrib/sendmail/cf/feature/accept_unqualified_senders.m45
-rw-r--r--contrib/sendmail/cf/feature/accept_unresolvable_domains.m45
-rw-r--r--contrib/sendmail/cf/feature/access_db.m417
-rw-r--r--contrib/sendmail/cf/feature/allmasquerade.m46
-rw-r--r--contrib/sendmail/cf/feature/always_add_domain.m45
-rw-r--r--contrib/sendmail/cf/feature/bestmx_is_local.m416
-rw-r--r--contrib/sendmail/cf/feature/bitdomain.m417
-rw-r--r--contrib/sendmail/cf/feature/blacklist_recipients.m47
-rw-r--r--contrib/sendmail/cf/feature/delay_checks.m422
-rw-r--r--contrib/sendmail/cf/feature/dnsbl.m425
-rw-r--r--contrib/sendmail/cf/feature/domaintable.m416
-rw-r--r--contrib/sendmail/cf/feature/generics_entire_domain.m416
-rw-r--r--contrib/sendmail/cf/feature/genericstable.m417
-rw-r--r--contrib/sendmail/cf/feature/ldap_routing.m434
-rw-r--r--contrib/sendmail/cf/feature/limited_masquerade.m45
-rw-r--r--contrib/sendmail/cf/feature/local_lmtp.m414
-rw-r--r--contrib/sendmail/cf/feature/local_procmail.m417
-rw-r--r--contrib/sendmail/cf/feature/loose_relay_check.m45
-rw-r--r--contrib/sendmail/cf/feature/mailertable.m417
-rw-r--r--contrib/sendmail/cf/feature/masquerade_entire_domain.m45
-rw-r--r--contrib/sendmail/cf/feature/masquerade_envelope.m45
-rw-r--r--contrib/sendmail/cf/feature/no_default_msa.m416
-rw-r--r--contrib/sendmail/cf/feature/nocanonify.m410
-rw-r--r--contrib/sendmail/cf/feature/nodns.m47
-rw-r--r--contrib/sendmail/cf/feature/notsticky.m45
-rw-r--r--contrib/sendmail/cf/feature/nouucp.m415
-rw-r--r--contrib/sendmail/cf/feature/nullclient.m449
-rw-r--r--contrib/sendmail/cf/feature/promiscuous_relay.m45
-rw-r--r--contrib/sendmail/cf/feature/rbl.m47
-rw-r--r--contrib/sendmail/cf/feature/redirect.m414
-rw-r--r--contrib/sendmail/cf/feature/relay_based_on_MX.m410
-rw-r--r--contrib/sendmail/cf/feature/relay_entire_domain.m45
-rw-r--r--contrib/sendmail/cf/feature/relay_hosts_only.m45
-rw-r--r--contrib/sendmail/cf/feature/relay_local_from.m45
-rw-r--r--contrib/sendmail/cf/feature/relay_mail_from.m420
-rw-r--r--contrib/sendmail/cf/feature/smrsh.m411
-rw-r--r--contrib/sendmail/cf/feature/stickyhost.m45
-rw-r--r--contrib/sendmail/cf/feature/use_ct_file.m45
-rw-r--r--contrib/sendmail/cf/feature/use_cw_file.m45
-rw-r--r--contrib/sendmail/cf/feature/uucpdomain.m417
-rw-r--r--contrib/sendmail/cf/feature/virtuser_entire_domain.m416
-rw-r--r--contrib/sendmail/cf/feature/virtusertable.m417
-rw-r--r--contrib/sendmail/cf/hack/cssubdomain.m45
-rw-r--r--contrib/sendmail/cf/m4/cf.m45
-rw-r--r--contrib/sendmail/cf/m4/proto.m41563
-rw-r--r--contrib/sendmail/cf/m4/version.m47
-rw-r--r--contrib/sendmail/cf/mailer/cyrus.m436
-rw-r--r--contrib/sendmail/cf/mailer/fax.m48
-rw-r--r--contrib/sendmail/cf/mailer/local.m461
-rw-r--r--contrib/sendmail/cf/mailer/mail11.m420
-rw-r--r--contrib/sendmail/cf/mailer/phquery.m413
-rw-r--r--contrib/sendmail/cf/mailer/pop.m413
-rw-r--r--contrib/sendmail/cf/mailer/procmail.m416
-rw-r--r--contrib/sendmail/cf/mailer/qpage.m430
-rw-r--r--contrib/sendmail/cf/mailer/smtp.m4122
-rw-r--r--contrib/sendmail/cf/mailer/usenet.m412
-rw-r--r--contrib/sendmail/cf/mailer/uucp.m490
-rw-r--r--contrib/sendmail/cf/ostype/aix2.m47
-rw-r--r--contrib/sendmail/cf/ostype/aix3.m47
-rw-r--r--contrib/sendmail/cf/ostype/aix4.m47
-rw-r--r--contrib/sendmail/cf/ostype/altos.m49
-rw-r--r--contrib/sendmail/cf/ostype/amdahl-uts.m411
-rw-r--r--contrib/sendmail/cf/ostype/aux.m49
-rw-r--r--contrib/sendmail/cf/ostype/bsd4.3.m45
-rw-r--r--contrib/sendmail/cf/ostype/bsdi.m417
-rw-r--r--contrib/sendmail/cf/ostype/bsdi1.0.m48
-rw-r--r--contrib/sendmail/cf/ostype/bsdi2.0.m48
-rw-r--r--contrib/sendmail/cf/ostype/darwin.m417
-rw-r--r--contrib/sendmail/cf/ostype/dgux.m47
-rw-r--r--contrib/sendmail/cf/ostype/domainos.m47
-rw-r--r--contrib/sendmail/cf/ostype/dynix3.2.m46
-rw-r--r--contrib/sendmail/cf/ostype/gnu.m421
-rw-r--r--contrib/sendmail/cf/ostype/hpux10.m410
-rw-r--r--contrib/sendmail/cf/ostype/hpux11.m423
-rw-r--r--contrib/sendmail/cf/ostype/hpux9.m49
-rw-r--r--contrib/sendmail/cf/ostype/irix4.m49
-rw-r--r--contrib/sendmail/cf/ostype/irix5.m411
-rw-r--r--contrib/sendmail/cf/ostype/irix6.m413
-rw-r--r--contrib/sendmail/cf/ostype/isc4.1.m410
-rw-r--r--contrib/sendmail/cf/ostype/linux.m410
-rw-r--r--contrib/sendmail/cf/ostype/maxion.m410
-rw-r--r--contrib/sendmail/cf/ostype/mklinux.m410
-rw-r--r--contrib/sendmail/cf/ostype/nextstep.m410
-rw-r--r--contrib/sendmail/cf/ostype/openbsd.m417
-rw-r--r--contrib/sendmail/cf/ostype/osf1.m410
-rw-r--r--contrib/sendmail/cf/ostype/powerux.m410
-rw-r--r--contrib/sendmail/cf/ostype/ptx2.m410
-rw-r--r--contrib/sendmail/cf/ostype/qnx.m48
-rw-r--r--contrib/sendmail/cf/ostype/riscos4.5.m47
-rw-r--r--contrib/sendmail/cf/ostype/sco-uw-2.1.m410
-rw-r--r--contrib/sendmail/cf/ostype/sco3.2.m49
-rw-r--r--contrib/sendmail/cf/ostype/sinix.m49
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.m418
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.ml.m411
-rw-r--r--contrib/sendmail/cf/ostype/solaris2.pre5.m426
-rw-r--r--contrib/sendmail/cf/ostype/sunos3.5.m45
-rw-r--r--contrib/sendmail/cf/ostype/sunos4.1.m45
-rw-r--r--contrib/sendmail/cf/ostype/svr4.m49
-rw-r--r--contrib/sendmail/cf/ostype/ultrix4.m45
-rw-r--r--contrib/sendmail/cf/ostype/unixware7.m413
-rw-r--r--contrib/sendmail/cf/ostype/unknown.m45
-rw-r--r--contrib/sendmail/cf/ostype/uxpds.m49
142 files changed, 3641 insertions, 1461 deletions
diff --git a/contrib/sendmail/cf/README b/contrib/sendmail/cf/README
index 392c36d..dc3cebe 100644
--- a/contrib/sendmail/cf/README
+++ b/contrib/sendmail/cf/README
@@ -1,63 +1,26 @@
+ SENDMAIL CONFIGURATION FILES
- NEW SENDMAIL CONFIGURATION FILES
-
- Eric Allman <eric@Sendmail.ORG>
-
- @(#)README 8.186 (Berkeley) 2/3/1999
-
-
-This document describes the sendmail configuration files being used
-at Berkeley. These use features in the new (R8) sendmail; they will
-not work on other versions.
-
-These configuration files are probably not as general as previous
-versions, and don't handle as many of the weird cases automagically.
-I was able to simplify them for two reasons. First, the network
-has become more consistent -- for example, at this point, everyone
-on the internet is supposed to be running a name server, so hacks to
-handle NIC-registered hosts can go away. Second, I assumed that a
-subdomain would be running SMTP internally -- UUCP is presumed to be
-a long-haul protocol. I realize that this is not universal, but it
-does describe the vast majority of sites with which I am familiar,
-including those outside the US.
-
-Of course, the downside of this is that if you do live in a weird
-world, things are going to get weirder for you. I'm sorry about that,
-but at the time we at Berkeley had a problem, and it seemed like the
-right thing to do.
-
-This package requires a post-V7 version of m4; if you are running the
-4.2bsd, SysV.2, or 7th Edition version, I suggest finding a friend with
-a newer version. You can m4-expand on their system, then run locally.
-SunOS's /usr/5bin/m4 or BSD-Net/2's m4 both work. GNU m4 version 1.1
-or later also works. Unfortunately, I'm told that the M4 on BSDI 1.0
+This document describes the sendmail configuration files. 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-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.
-
-IF YOU DON'T HAVE A BERKELEY MAKE, don't despair! Just run
-"m4 ../m4/cf.m4 foo.mc > foo.cf" -- that should be all you need.
-There is also a fairly crude (but functional) Makefile.dist that works
-on the old version of make.
-
-To get started, you may want to look at tcpproto.mc (for TCP-only
-sites), uucpproto.mc (for UUCP-only sites), and clientproto.mc (for
-clusters of clients using a single mail host). Others are versions
-that we use at Berkeley, although not all are in current use. For
-example, ucbvax has gone away, but I've left ucbvax.mc in because
-it demonstrates some interesting techniques.
-
-I'm not pretending that this README describes everything that these
-configuration files can do; clever people can probably tweak them
-to great effect. But it should get you started.
+available from ftp://ftp.gnu.org/pub/gnu/m4-1.4.tar.gz (check for the
+latset version). EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x
+is fine). Use GNU m4 on this platform.
+
+To get started, you may want to look at tcpproto.mc (for TCP-only sites),
+uucpproto.mc (for UUCP-only sites), and clientproto.mc (for clusters of
+clients using a single mail host). Others are versions previously used at
+Berkeley. For example, ucbvax has gone away, but ucbvax.mc demonstrates
+some interesting techniques.
*******************************************************************
*** BE SURE YOU CUSTOMIZE THESE FILES! They have some ***
*** Berkeley-specific assumptions built in, such as the name ***
-*** of our UUCP-relay. You'll want to create your own domain ***
-*** description, and use that in place of ***
+*** of their UUCP-relay. You'll want to create your own ***
+*** domain description, and use that in place of ***
*** domain/Berkeley.EDU.m4. ***
*******************************************************************
@@ -72,6 +35,11 @@ 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
@@ -86,7 +54,8 @@ Let's examine a typical .mc file:
divert(-1)
#
- # Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+ # 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.
@@ -109,17 +78,17 @@ Let's examine a typical .mc file:
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 I've included in my files. A copyleft
+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. We use SCCS; you could use RCS, something else, or
+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
+ 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
@@ -127,21 +96,21 @@ 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
+ 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
+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)
+ MAILER(`local')
+ MAILER(`smtp')
-These describe the mailers used at the default CS site site. The
+These describe the mailers used at the default CS site. The
local mailer is always included automatically. Beware: MAILER
declarations should always be at the end of the configuration file,
-and MAILER(smtp) should always precede MAILER(uucp). The general
-rules are that the order should be:
+and MAILER(`smtp') should always precede MAILER(`procmail'), and
+MAILER(`uucp'). The general rules are that the order should be:
VERSIONID
OSTYPE
@@ -149,7 +118,13 @@ rules are that the order should be:
FEATURE
local macro definitions
MAILER
- LOCAL_RULESET_*
+ 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').
+----------------------------+
@@ -174,9 +149,9 @@ one normally quotes both values to prevent expansion. For example,
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
+ # See FEATURE(`foo') above
-it will not do what you expect, because the FEATURE(foo) will be
+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
@@ -190,10 +165,61 @@ them with directed quotes, `like this'.
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. 8.9 will
-serve as a transition release. Beginning with 8.10, all of the files
-will use this directory by default.
+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.
+--------+
| OSTYPE |
@@ -215,31 +241,46 @@ 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/aliases] The location of the text version
+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 [/usr/lib/sendmail.hf] The name of the file
+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.
-STATUS_FILE [/etc/sendmail.st] The file containing status
+ queue files. To use multiple queues, supply
+ a value ending with an asterisk. For
+ example, /var/spool/mqueue/q* will use all of the
+ directories or symbolic links to directories
+ beginning with 'q' in /var/spool/mqueue as queue
+ directories. The names 'qf', 'df', and 'xf' are
+ used as specific subdirectories for the corresponding
+ queue file types.
+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 [rmn9] The flags used by the local mailer. The
- flags lsDFM are always included.
+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.
@@ -249,23 +290,35 @@ LOCAL_SHELL_DIR [$z:/] The directory search path in which the
shell should run.
USENET_MAILER_PATH [/usr/lib/news/inews] The name of the program
used to submit news.
-USENET_MAILER_FLAGS [rlsDFMmn] The mailer flags for the usenet mailer.
+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.
USENET_MAILER_MAX [100000] The maximum size of messages that will
be accepted by 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' and "smtp8" adds `8'.
+ 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, or esmtp
+ 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_ARGS [IPC $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 [IPC $h] The arguments passed to the esmtp mailer.
SMTP8_MAILER_ARGS [IPC $h] The arguments passed to the smtp8 mailer.
+DSMTP_MAILER_ARGS [IPC $h] The arguments passed to the dsmtp mailer.
RELAY_MAILER_ARGS [IPC $h] The arguments passed to 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
@@ -289,14 +342,14 @@ FAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX
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 "lsDFM"
+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.
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
+ 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
@@ -311,9 +364,10 @@ MAIL11_MAILER_ARGS [mail11 $g $x $h $u] Arguments passed to 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.
+PH_MAILER_FLAGS [ehmu] Flags for the phquery mailer. Flags nrDFM
+ are always set.
PH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer.
-CYRUS_MAILER_FLAGS [A5@/:|] The flags used by the cyrus mailer. The
+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.
@@ -323,14 +377,34 @@ 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_BB_MAILER_FLAGS [undefined] The flags used by the cyrusbb
- mailer. The flags lsDFMnP are always included.
+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.
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.
+
+Note: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS:
+MODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of
+the macro Name_MAILER_FLAGS and change can be: flags that should
+be used directly (thus overriding the default value), or if it
+starts with `+' (`-') then those flags are added to (removed from)
+the default value. Example:
+ MODIFY_MAILER_FLAGS(`LOCAL', `+e')
+
+will add the flag `e' to LOCAL_MAILER_FLAGS.
+WARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS
+unconditionally, i.e., without respecting any definitions in an
+OSTYPE setting.
+---------+
@@ -338,7 +412,7 @@ confEBINDIR [/usr/libexec] The directory for executables.
+---------+
You will probably want to collect domain-dependent defines into one
-file, referenced by the DOMAIN macro. For example, our Berkeley
+file, referenced by the DOMAIN macro. For example, the Berkeley
domain file includes definitions for several internal distinguished
hosts:
@@ -360,7 +434,9 @@ LOCAL_RELAY DEPRECATED. The site that will handle unqualified
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.
+ 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
@@ -387,10 +463,12 @@ knowledge" into one place.
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, and always put MAILER(smtp)
-before MAILER(uucp) -- several features and definitions will modify
-the definition of mailers, and the smtp mailer modifies the UUCP
-mailer.
+MAILER definitions last in your .mc file, and always put MAILER(`smtp')
+before MAILER(`uucp') and MAILER(`procmail') -- several features and
+definitions will modify the definition of mailers, and the smtp mailer
+modifies the UUCP mailer. Moreover, MAILER(`cyrus'), MAILER(`pop'),
+MAILER(`phquery'), and MAILER(`usenet') must be defined after
+MAILER(`local').
local The local and prog mailers. You will almost always
need these; the only exception is if you relay ALL
@@ -401,14 +479,14 @@ 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
- four mailers: "smtp" for regular (old-style) SMTP to
+ 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), and "relay" for
- transmission to our RELAY_HOST, LUSER_RELAY, or
- MAILER_HUB.
+ 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
@@ -419,9 +497,9 @@ uucp The Unix-to-Unix Copy Program mailer. Actually, this
("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
- the $=U class and sends them to the uucp-old mailer; all
- names in the $=Y class are sent to uucp-new; and all
- names in the $=Z class are sent to uucp-uudom. Note that
+ 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
@@ -474,8 +552,11 @@ cyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to
"user+detail@local.host" syntax; 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.
+ if the mailbox's ACL permits. The cyrus 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
@@ -494,53 +575,86 @@ example, the .mc line:
FEATURE(`use_cw_file')
-tells sendmail that you want to have it read an /etc/sendmail.cw
-file to get values for class $=w. The FEATURE may contain a single
-optional parameter -- for example:
+tells sendmail that you want to have it read an /etc/mail/local-host-names
+file to get values for class {w}. The 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.
+if no argument is given for the FEATURE. It must be specified before any
+feature that uses a map.
Available features are:
-use_cw_file Read the file /etc/sendmail.cw 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/sendmail.ct 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.
+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 not local; please try <address>'' message.
+ 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 do anything special with UUCP addresses at all.
-
-nocanonify Don't pass addresses to $[ ... $] for canonification.
- 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.
+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. 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 If set, email sent to "user@local.host" are marked
as "sticky" -- that is, the local addresses aren't
@@ -552,16 +666,18 @@ stickyhost If set, email sent to "user@local.host" are marked
turn this off.
mailertable Include a "mailer table" which can be used to override
- routing for particular domains. The argument of the
- FEATURE may be the key definition. If none is specified,
- the definition used is:
+ 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 -o /etc/mailertable
+ 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".
- Values must be of the form:
+ "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
@@ -573,8 +689,10 @@ mailertable Include a "mailer table" which can be used to override
will forward to the original user in the e-mail address
using the local mailer, and
error:code message
- will give an error message with the indicated code and
- 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
@@ -584,7 +702,7 @@ domaintable Include a "domain table" which can be used to provide
FEATURE may be the key definition. If none is specified,
the definition used is:
- hash -o /etc/domaintable
+ hash /etc/mail/domaintable
The key in this table is the domain name; the value is
the new (fully qualified) domain. Anything in the
@@ -597,7 +715,7 @@ bitdomain Look up bitnet hosts in a table to try to turn them into
The argument of the FEATURE may be the key definition; if
none is specified, the definition used is:
- hash -o /etc/bitdomain.db
+ hash /etc/mail/bitdomain
Keys are the bitnet hostname; values are the corresponding
internet hostname.
@@ -605,7 +723,7 @@ bitdomain Look up bitnet hosts in a table to try to turn them into
uucpdomain Similar feature for UUCP hosts. The default map definition
is:
- hash -o /etc/uudomain.db
+ hash /etc/mail/uudomain
At the moment there is no automagic tool to build this
database.
@@ -631,13 +749,14 @@ allmasquerade If masquerading is enabled (using MASQUERADE_AS), this
local entries.
limited_masquerade
- Normally, any hosts listed in $=w are masqueraded. If this
- feature is given, only the hosts listed in $=M are masqueraded.
- This is useful if you have several domains with disjoint
- namespaces hosted on the same machine.
+ 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
+ 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
@@ -645,9 +764,9 @@ masquerade_entire_domain
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)
+ 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.
@@ -655,32 +774,45 @@ masquerade_entire_domain
NOTE: only domains within your jurisdiction and
current hierarchy should be masqueraded using this.
-genericstable This feature will cause certain addresses originating locally
- (i.e. that are unqualified) or a domain listed in $=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. This
- is similar to the userdb functionality. The same types of
- addresses as for masquerading are looked up, i.e. only header
+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.
+ This 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 the list of names given by the
- by the macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE
- (analogously to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE,
- see below).
+ 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 -o /etc/genericstable
+ hash /etc/mail/genericstable
- The key for this table is either the full address or the
- unqualified username (the former is tried first); 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
+ 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,
@@ -688,49 +820,83 @@ virtusertable A domain-specific form of aliasing, allowing multiple
info@foo.com foo-info
info@bar.com bar-info
- @baz.org jane@elsewhere.net
+ joe@bar.com error:nouser No such user here
+ jax@bar.com error:D.S.N:unavailable 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@elsewhere.net. The username
- from the original address is passed as %1 allowing:
+ 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
+ D.S.N.
+
+ The username from the original address is passed
+ as %1 allowing:
- @foo.org %1@elsewhere.com
+ @foo.org %1@example.com
- meaning someone@foo.org will be sent to someone@elsewhere.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 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+%2@example.com
+
+ and other forms are possible. Note: to preserve "+detail"
+ for a default case (@domain) +*@domain must be used as
+ exemplified above.
All the host names on the left hand side (foo.com, bar.com,
- and baz.org) must be in $=w. The default map definition is:
+ 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 -o /etc/virtusertable
+ hash /etc/mail/virtusertable
A new definition can be specified as the second argument of
the FEATURE macro, such as
- FEATURE(`virtusertable', `dbm -o /etc/mail/virtusers')
+ 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}.
-nodns We aren't running DNS at our site (for example,
- we are UUCP-only connected). It's hard to consider
+ldap_routing Implement LDAP-based e-mail recipient routing according to
+ the Internet Draft draft-lachman-laser-ldap-mail-routing-01.
+ This provides a method to re-route addresses with a
+ domain portion in class {LDAPRoute} to either a
+ different mail host or a different address. Hosts can
+ be added to this class using LDAPROUTE_DOMAIN and
+ LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and
+ MASQUERADE_DOMAIN_FILE, see below).
+
+ See the LDAP ROUTING section below for more information.
+
+nodns If you aren't running DNS at your site (for example,
+ you are UUCP-only connected). It's hard to consider
this a "feature", but hey, it had to go somewhere.
Actually, as of 8.7 this is a no-op -- remove "dns" from
the hosts service switch entry instead.
-nullclient This is a special case -- it creates a stripped down
- 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.
-
+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 "nocanonify" (this causes addresses to
- be sent unqualified via the SMTP connection; normally
- they are qualified with the masquerade name, which
- defaults to the name of the hub machine). No mailers
+ with this one is FEATURE(`nocanonify'). No mailers
should be defined. No aliasing or forwarding is done.
- Also, note that absolutely no anti-spam or anti-relaying
- is done in a null client configuration. More information
- can be found in the ANTI-SPAM CONFIGURATION CONTROL section.
local_lmtp Use an LMTP capable local mailer. The argument to this
feature is the pathname of an LMTP capable mailer. By
@@ -739,16 +905,44 @@ local_lmtp Use an LMTP capable local mailer. The argument to this
LMTP capable. The path to mail.local is set by the
confEBINDIR m4 variable -- making the default
LOCAL_MAILER_PATH /usr/libexec/mail.local.
+ WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally,
+ i.e., without respecting any definitions in an OSTYPE setting.
+
+local_procmail Use procmail or another delivery agent as the local mailer.
+ The argument to this feature is the pathname of the
+ delivery agent, which defaults to PROCMAIL_MAILER_PATH.
+ Note that this does NOT use PROCMAIL_MAILER_FLAGS or
+ PROCMAIL_MAILER_ARGS for the local mailer; tweak
+ LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or
+ specify the appropriate parameters. When procmail is used,
+ the local mailer can make use of the
+ "user+indicator@local.host" syntax; normally the +indicator
+ is just tossed, but by default it is passed as the -a
+ argument to procmail.
+
+ This feature can take up to three arguments:
-local_procmail Use procmail as the local mailer. This 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. The
- argument to this feature is the pathname of procmail,
- 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.
+ 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.
+
+ 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
@@ -772,22 +966,23 @@ smrsh Use the SendMail Restricted SHell (smrsh) provided
promiscuous_relay
By default, the sendmail configuration files do not permit
mail relaying (that is, accepting mail from outside your
- domain and sending it to another host outside your domain).
- This option sets your site to allow mail relaying from any
- site to any site. In general, it is better to control the
- relaying more carefully with the access db and the 'R'
- class ($=R). 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).
+ 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
By default, only hosts listed as RELAY in the access db
will be allowed to relay. This option also allows any
- host in your domain as defined by the 'm' class ($=m).
+ host in your domain as defined by class {m}.
relay_hosts_only
By default, names that are listed as RELAY in the access
- db and class 'R' ($=R) are domain names, not host names.
+ db and class {R} are 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
@@ -808,6 +1003,17 @@ relay_based_on_MX
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' is given,
+ the domain portion of the mail sender is checked too.
+ This should only be used if absolutely necessary as the
+ sender address can be easily forged. Use of this feature
+ requires the "From:" tag be prepended to 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
@@ -816,32 +1022,38 @@ relay_local_from
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>),
+ setup sends local mail unqualified (i.e., MAIL FROM: <joe>),
you will need to use this feature to accept unqualified
- sender addresses.
-
+ 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., 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.
+ 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. By default,
the access database specification is:
- hash -o /etc/mail/access
+ hash /etc/mail/access
- The format of the database is described below.
+ The format of the database is described in the anti-spam
+ configuration control section later in this document.
blacklist_recipients
Turns on the ability to block incoming mail for certain
@@ -849,21 +1061,38 @@ blacklist_recipients
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 below.
-
-rbl Turns on rejection of hosts found in the Realtime Blackhole
- List. If an argument is provided it is used as the
- name sever to contact; otherwise, the main RBL server at
- rbl.maps.vix.com is used. For details, see
+ described in the anti-spam configuration control section
+ later in this document.
+
+rbl This feature is deprecated! Please use dnsbl instead.
+ Turns on rejection of hosts found in the Realtime Blackhole
+ List. If an argument is provided it is used as the domain
+ in which blocked hosts are listed; otherwise, the main
+ RBL domain rbl.maps.vix.com is used. For details, see
http://maps.vix.com/rbl/.
+dnsbl Turns on rejection of hosts found in an DNS based rejection
+ list. If an argument is provided it is used as the domain
+ in which blocked hosts are listed; otherwise it defaults to
+ rbl.maps.vix.com. An explanation for an DNS based rejection
+ list can be found http://maps.vix.com/rbl/. A second argument
+ can be used to change the default error message of
+ Mail from $&{client_addr} refused by blackhole site SERVER
+ where SERVER is replaced by the first argument. This feature
+ can be included several times to query different DNS based
+ rejection lists.
+
loose_relay_check
- Normally, if a recipient using % addressing is used, e.g.
- user%site@othersite, and othersite is in class 'R', the
+ 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.
+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().
+-------+
| HACKS |
@@ -874,7 +1103,7 @@ 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 we move hosts into
+this is intended as a short-term aid while moving hosts into
subdomains.
@@ -894,54 +1123,40 @@ 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.
-If your host is known by several different names, you need to augment
-the $=w class. This is a list of names by which you are 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/sendmail.cw containing a list of your aliases (one per
-line), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add the
-line:
-
- Cw alias.host.name
-
-at the end of that file. See the ``vangogh.mc'' file for an example.
-Be sure you use the fully-qualified name of the host, rather than a
-short name.
-
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)
+ 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
+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)
+ 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. The $=W class will be used to
+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 I've left
-this out-of-date configuration file around to demonstrate how you
-might do this.]
+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 $=w (the list of local hostnames) as $U.UUCP.
+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)
+ 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
@@ -990,7 +1205,7 @@ The four mailers are:
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 also specified.
+ is only included if MAILER(`smtp') is also specified.
Unfortunately, a lot of UUCP mailer transport agents require
bangified addresses in the envelope, although you can use
@@ -1004,13 +1219,13 @@ The four mailers are:
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)
+ "some.dom.ain!wolf"). This is also included only if MAILER(`smtp')
is also specified.
Examples:
-We are on host grasp.insa-lyon.fr (UUCP host name "grasp"). The
-following summarizes the sender rewriting for various mailers.
+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
------ ------ -------------------------
@@ -1048,8 +1263,8 @@ 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)
+ 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"
@@ -1077,11 +1292,12 @@ 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, and can be used to
-declare local database maps or whatever. For example:
+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/hostmap.db
+ Khostmap hash /etc/mail/hostmap
Kyplocal nis -m hosts.byname
@@ -1091,14 +1307,15 @@ declare local database maps or whatever. For example:
You can have your host masquerade as another using
- MASQUERADE_AS(host.domain)
+ 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 I 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.
+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
@@ -1106,10 +1323,11 @@ 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 $=w, the list
-of local domain names). You can augment this list using
+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)
+ 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
@@ -1118,9 +1336,17 @@ This can be a space-separated list of names.
If these names are in a file, you can use
- MASQUERADE_DOMAIN_FILE(filename)
+ MASQUERADE_DOMAIN_FILE(`filename')
-to read the list of names from the indicated file.
+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).
Normally only header addresses are masqueraded. If you want to
masquerade the envelope as well, use
@@ -1129,13 +1355,14 @@ masquerade the envelope as well, use
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. You can add users to this list using
+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)
+ EXPOSED_USER(`usernames')
-This adds users to class E; you could also use something like
+This adds users to class {E}; you could also use something like
- FE/etc/sendmail.cE
+ FE/etc/mail/exposed-users
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
@@ -1149,11 +1376,11 @@ The ``mailer:'' can be omitted, in which case the mailer defaults to
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)
+ LOCAL_USER(`usernames')
-This adds users to class L; you could also use something like
+This adds users to class {L}; you could also use something like
- FL/etc/sendmail.cL
+ FL/etc/mail/local-users
If you want all incoming mail sent to a centralized hub, as for a
shared /var/spool/mail scheme, use
@@ -1163,7 +1390,9 @@ shared /var/spool/mail scheme, use
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.
-Names in $=L will be delivered locally, so you MUST have aliases or
+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
@@ -1190,7 +1419,9 @@ 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.
+ 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
@@ -1205,6 +1436,124 @@ specified with a terminal dot:
note the trailing dot ---^
++--------------+
+| 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')
+
+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>)
+
+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; and
+the <bounce> argument, if present and not the word "passthru", dictates
+that mail should be bounced if neither a mailHost nor mailRoutingAddress
+is found.
+
+The default <mailHost> map definition is:
+
+ ldap -1 -v mailHost -k (&(objectClass=inetLocalMailRecipient)
+ (mailLocalAddress=%0))
+
+The default <mailRoutingAddress> map definition is:
+
+ ldap -1 -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 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}.
+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.
+
+ 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 |
+---------------------------------+
@@ -1216,20 +1565,26 @@ The primary anti-spam features available in sendmail are:
* Access database.
* Header checks.
-Relaying (transmission of messages from a site outside your domain to
-another site outside your domain) is denied by default. Note that
-this changed in sendmail 8.9; previous versions allowed relaying by
-default. If you 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' ($=R) using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the
-access database (described below).
+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). The file consists (like any other file based class)
+of entries listed on separate lines, e.g.,
+
+ sendmail.org
+ 128.32
+ 1:2:3:4:5:6:7
+ host.mydomain.com
If you use
FEATURE(`relay_entire_domain')
-then any host in any of your local domains (that is, the $=m class)
+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).
@@ -1253,11 +1608,21 @@ MAIL FROM: <user@domain>) domain which is a local domain. This 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' is given, the domain
+portion of the mail sender is also checked to allowing relaying.
+This option only works together with the tag From: for the LHS of
+the access map entries (see below: Finer control...).
+
If source routing is used in the recipient address (i.e.
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,
+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:
@@ -1268,10 +1633,22 @@ 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). If you want to
-continue to accept such domains, e.g. because you are inside a
+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
@@ -1284,6 +1661,11 @@ 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 addresses.
+
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
@@ -1293,7 +1675,7 @@ originating from known spammers. To enable such a database, use
The FEATURE macro can accept a second parameter giving the key file
definition for the database; for example
- FEATURE(`access_db', `hash -o /etc/mail/access')
+ FEATURE(`access_db', `hash /etc/mail/access')
Remember, since /etc/mail/access is a database, after creating the text
file as described below, you must use makemap to create the database
@@ -1324,33 +1706,57 @@ The value part of the map can contain:
REJECT Reject the sender or recipient with a general
purpose message.
DISCARD Discard the message completely using the
- $#discard mailer. This only works for sender
- addresses (i.e., it indicates that you should
- discard anything received from the indicated
- domain).
+ $#discard mailer. For sender addresses it
+ indicates that you should discard anything
+ received from the indicated domain. If it
+ is used for recipients, it affects only
+ the designated recipients, not the whole
+ message.
### any text where ### is an RFC 821 compliant error code
and "any text" is a message to return for
the command.
+ ERROR:### any text
+ as above, but useful to mark error messages as such.
+ ERROR:D.S.N:### any text
+ where D.S.N is an RFC 1893 compliant error code
+ and the rest as above.
For example:
cyberspammer.com 550 We don't accept mail from spammers
okay.cyberspammer.com OK
- sendmail.org OK
+ sendmail.org RELAY
128.32 RELAY
+ 1:2:3:4:5:6:7 RELAY
+ [127.0.0.3] OK
+ [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 accept mail from any hosts in the sendmail.org domain,
-and allow relaying for the 128.32.*.* network. Note, UUCP users may
-need to add hostname.UUCP to the access database or class 'R' ($=R).
-If you also use:
+would accept mail from okay.cyberspammer.com, but would reject mail from
+all other hosts at cyberspammer.com with the indicated message. It would
+allow relaying mail from and to any hosts in the sendmail.org domain, and
+allow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:*
+network. The latter two entries are for checks against ${client_name} if
+the IP address doesn't resolve to a hostname (or is considered as "may be
+forged").
+
+Warning: if you change the RFC 821 compliant error code from the default
+value of 550, then you should probably also change the RFC 1893 compliant
+error code to match it. For example, if you use
+
+ user@example.com 450 mailbox full
+
+the error returned would be "450 4.0.0 mailbox full" which is wrong.
+Use "450 4.2.2 mailbox full" or "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' ($=R) to be fully qualified host names.
+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:
@@ -1368,16 +1774,19 @@ If you use:
then you can add entries to the map for local users, hosts in your
domains, or addresses in your domain which should not receive mail:
- badlocaluser 550 Mailbox disabled for this username
+ badlocaluser@ 550 Mailbox disabled for this username
host.mydomain.com 550 That host does not accept mail
user@otherhost.mydomain.com 550 Mailbox disabled for this recipient
This would prevent a recipient of badlocaluser@mydomain.com, any
user at host.mydomain.com, and the single address
-user@otherhost.mydomain.com from receiving mail. 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:
+user@otherhost.mydomain.com from receiving mail. Please note: a
+local username must be now tagged with an @ (this is consistent
+with the check of the sender address, and hence it is possible to
+distinguish between hostnames and usernames). Enabling this feature
+will keep you from sending mails to all addresses that have an
+error message or REJECT as value part in the access map. Taking
+the example from above:
spammer@aol.com REJECT
cyberspammer.com REJECT
@@ -1388,11 +1797,16 @@ There is also a ``Realtime Blackhole List'' run by the MAPS project
at http://maps.vix.com/. This is a database maintained in DNS of
spammers. To use this database, use
- FEATURE(`rbl')
+ FEATURE(`dnsbl')
This will cause sendmail to reject mail from any site in the
Realtime Blackhole List database. You can specify an alternative
-RBL name server to contact by specifying an argument to the FEATURE.
+RBL domain to check by specifying an argument to the FEATURE.
+A second argument can be used to change the default error message
+Mail from $&{client_addr} refused by blackhole site DOMAIN
+where DOMAIN is replaced by the first argument. This FEATURE can
+be included several times to query different DNS based rejection
+lists, e.g., the dial-up user list (see http://maps.vix.com/dul/).
The features described above make use of the check_relay, check_mail,
and check_rcpt rulesets. If you wish to include your own checks,
@@ -1401,15 +1815,15 @@ 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 new regex map:
- LOCAL_CONFIG
- Kallnumbers regex -a@MATCH ^[0-9]+$
-
- LOCAL_RULESETS
- SLocal_check_mail
- # check address against various regex checks
+ 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
+ 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
@@ -1418,6 +1832,93 @@ local ruleset resolves to a mailer (such as $#error or $#discard), the
appropriate action is taken. Otherwise, the results of the local
rewriting are ignored.
+Finer control by using tags for the LHS of the access map
+
+Read this section only if the options listed so far are not sufficient
+for your purposes. There is now the option to tag entries in the
+access map according to their type. Three tags are available:
+
+ Connect: connection information (${client_addr}, ${client_name})
+ From: sender
+ To: recipient
+
+If the required item is looked up in a map, it will be tried first
+with the corresponding tag in front, then (as fallback to enable
+backward compatibility) without any tag. For example,
+
+ From:spammer@some.dom REJECT
+ To:friend.domain RELAY
+ Connect:friend.domain OK
+ Connect:from.domain RELAY
+ From:good@another.dom OK
+ From:another.dom REJECT
+
+This would deny mails from spammer@some.dom but you could still
+send mail to that address even if FEATURE(`blacklist_recipients')
+is enabled. Your system will allow relaying to friend.domain, but
+not from it (unless enabled by other means). Connections from that
+domain will be allowed even if it ends up in one of the DNS based
+rejection lists. Relaying is enabled from from.domain but not to
+it (since relaying is based on the connection information for
+outgoing relaying, the tag Connect: must be used; for incoming
+relaying, which is based on the recipient address, To: must be
+used). The last two entries allow mails from good@another.dom but
+reject mail from all other addresses with another.dom as domain
+part.
+
+Delay all checks
+
+By using FEATURE(`delay_checks') the rulesets check_mail and check_relay
+will not be called when a client connects or issues a MAIL command,
+respectively. Instead, those rulesets will be called by the check_rcpt
+ruleset; they will be skipped if a sender has been authenticated using
+a "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH().
+If check_mail returns an error then the RCPT TO command will be rejected
+with that error. If it returns some other result starting with $# then
+check_relay will be skipped. If the sender address (or a part of it) is
+listed in the access map and it has a RHS of OK or RELAY, then check_relay
+will be skipped. This has an interesting side effect: if your domain is
+my.domain and you have
+
+ my.domain RELAY
+
+in the access map, then all e-mail with a sender address of
+<user@my.domain> gets through, even if check_relay would reject it
+(e.g., based on the hostname or IP address). This allows spammers
+to get around DNS based blacklist by faking the sender address. To
+avoid this problem you have to use tagged entries:
+
+ To:my.domain RELAY
+ Connect:my.domain RELAY
+
+if you need those entries at all (class {R} may take care of them).
+
+FEATURE(`delay_checks') can take an optional argument:
+
+ FEATURE(`delay_checks', `friend')
+ enables spamfriend test
+ FEATURE(`delay_checks', `hater')
+ enables spamhater test
+
+If such an argument is given, the recipient will be looked up in the access
+map (using the tag To:). If the argument is `friend', then the other
+rulesets will be skipped if the recipient address is found and has RHS
+spamfriend. If the argument is `hater', then the other rulesets will be
+applied if the recipient address is found and has RHS spamhater.
+
+This allows for simple exceptions from the tests, e.g., by activating
+the spamfriend option and having
+
+ To:abuse@ SPAMFRIEND
+
+in the access map, mail to abuse@localdomain will get through. It is
+also possible to specify a full address or an address with +detail:
+
+ To:abuse@abuse.my.domain SPAMFRIEND
+ To:me+abuse@ SPAMFRIEND
+
+
+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
@@ -1431,25 +1932,211 @@ a Message-ID: header:
R< $+ @ $+ > $@ OK
R$* $#error $: 553 Header Error
-Users of FEATURE(`nullclient') who desire to use the anti-spam and
-anti-relaying capabilities should replace FEATURE(`nullclient', `mailhub')
-with:
+The alternative format:
- undefine(`ALIAS_FILE')
- define(`MAIL_HUB', `mailhub')
- define(`SMART_HOST', `mailhub')
- define(`confFORWARD_PATH', `')
+ HSubject: $>+CheckSubject
-where mailhub is the fully qualified hostname for their mail server.
-The above rules will provide the relaying to the mailhub without local
-alias and forward file expansion. To match the other behavior of
-FEATURE(`nullclient'), you should also add these lines along with those
-listed above:
+that is, $>+ instead of $>, gives the full Subject: header including
+comments to the ruleset (comments in parentheses () are stripped
+by default).
- MASQUERADE_AS(`mailhub')
- FEATURE(`allmasquerade')
- FEATURE(`masquerade_envelope')
+A default ruleset for headers which don't have a specific ruleset
+defined for them can be given by:
+
+ H*: $>CheckHdr
+
+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
+
+ LOCAL_RULESETS
+ HMessage-Id: $>CheckMessageId
+
+ SCheckMessageId
+ # Record the presence of the header
+ R$* $: $(storage {MessageIdCheck} $@ OK $) $1
+ R< $+ @ $+ > $@ OK
+ R$* $#error $: 553 Header Error
+
+ Scheck_eoh
+ # Check the macro
+ R$* $: < $&{MessageIdCheck} >
+ # Clear the macro for the next message
+ R$* $: $(storage {MessageIdCheck} $) $1
+ # Has a Message-Id: header
+ R< $+ > $@ OK
+ # Allow missing Message-Id: from local mail
+ R$* $: < $&{client_name} >
+ R< > $@ OK
+ R< $=w > $@ OK
+ # Otherwise, reject the mail
+ R$* $#error $: 553 Header Error
+
++--------------------------------+
+| STARTTLS |
++--------------------------------+
+
+In this text, cert will be used as an abreviation for X.509 certificate,
+DN is the distinguished name of a cert, and CA is a certification authority.
+
+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).
+${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1,
+ 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.
+ FAIL cert presented but could not be verified, e.g., the signing
+ CA is missing.
+ NONE STARTTLS has not been performed.
+ TEMP temporary error occurred.
+ PROTOCOL some protocol error occurred.
+ 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 senders who have successfully
+authenticated themselves. This is done in the ruleset RelayAuth. If the
+verification of the cert failed (${verify} != OK), relaying is subject to
+the usual rules. Otherwise the DN of the issuer is looked up in the access
+map using the tag CERTISSUER. If the resulting value is RELAY, relaying is
+allowed. If it is SUBJECT, the DN of the cert subject is looked up next in
+the access map. using the tag CERTSUBJECT. If the value is RELAY, relaying
+is allowed.
+
+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).
+
+Of course it is also possible to write a simple rulesets 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 and tls_client 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. Otherwise, ${client_name} (${server_name}) is looked
+up in the access map using the tag TLS_Srv (or 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 :). 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.
+
+Example: e-mail send 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.
+TLS_Srv:secure.example.com ENCR:112
+TLS_Clt:laptop.example.com PERM+VERIFY:112
+
+Received: Header
+
+The Received: header reveals whether STARTTLS has been used. It contains an
+extra line:
+
+(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${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 Strust_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')
+
+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}.
+--------------------------------+
| ADDING NEW MAILERS OR RULESETS |
@@ -1468,15 +2155,60 @@ LOCAL_RULESETS respectively. For example:
...
+#if _FFR_MILTER
++---------------------------+
+| ADDING NEW MAILER 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.
+#endif /* _FFR_MILTER */
+
+
+-------------------------------+
| NON-SMTP BASED CONFIGURATIONS |
+-------------------------------+
-These configuration files are designed primarily for use by SMTP-based
-sites. I don't pretend that they are well tuned for UUCP-only or
+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.
+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:
@@ -1490,12 +2222,12 @@ 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', `suucp:uunet')
+ 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) via
-SMTP; anything else will be sent via suucp (smart UUCP) to uunet.
+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
@@ -1531,6 +2263,24 @@ name. This is usually done using:
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 |
+--------------------+
@@ -1540,13 +2290,13 @@ 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 suucp:uuhost1
+ uuhost1.my.domain uucp-new:uuhost1
.bitnet smtp:relay.bit.net
-This should normally be stored in /etc/mailertable. The actual
+This should normally be stored in /etc/mail/mailertable. The actual
database version of the mailertable is built using:
- makemap hash /etc/mailertable.db < /etc/mailertable
+ 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
@@ -1555,10 +2305,13 @@ they can be thought of as having a leading "*" wildcard. 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.
+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
+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
@@ -1588,7 +2341,7 @@ again, which would give you an MX loop.
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. (I would recommend that you set up aliases for this
+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.
@@ -1599,20 +2352,18 @@ e-mail sent to Full.Name@local.host.name will be rejected.
To build the internal form of the user database, use:
- makemap btree /usr/data/base.db < /usr/data/base.txt
+ makemap btree /etc/mail/userdb < /etc/mail/userdb.txt
-As a general rule, I am adamantly opposed to using full names as
-e-mail addresses, since they are not in any sense unique. For example,
-the Unix software-development community has two Andy Tannenbaums,
-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?
+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. [Not that I expect anyone to pay any
-attention to my opinions.]
+handles, and not be fuzzy.
+--------------------------------+
@@ -1634,11 +2385,6 @@ Plussed users
If that is not found, the alias "root+*" will be tried,
then "root".
-LDAP
- For notes on use LDAP in sendmail, see
- http://www.stanford.edu/~bbense/Inst.html
-
-
+----------------+
| SECURITY NOTES |
@@ -1673,7 +2419,7 @@ for. In particular:
files and programs listed in them will be honored).
In general, file giveaways are a mistake -- if you can turn them
-off I recommend you do so.
+off, do so.
+--------------------------------+
@@ -1711,38 +2457,44 @@ confDOMAIN_NAME $j macro If defined, sets $j. This should
domain name.
confCF_VERSION $Z macro If defined, this is appended to the
configuration version name.
-confFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an
+confFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an
internally generated From: address.
confRECEIVED_HEADER Received:
[$?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated)
$.by $j ($v/$Z)$?r with $r$. id $i$?u
for $u; $|;
$.$b]
The format of the Received: header
in messages passed through this host.
It is unwise to try to change this.
-confCW_FILE Fw class [/etc/sendmail.cw] Name of file used
- to get the local additions to the $=w
- (local host names) class.
-confCT_FILE Ft class [/etc/sendmail.ct] Name of file used
- to get the local additions to the $=t
- (trusted users) class.
+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 the $=R (hosts allowed to relay)
- class.
+ 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", or "esmtp".
+ 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
- $=U, $=Y, and $=Z in the MAILER(uucp)
- section.
+ 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".
@@ -1770,7 +2522,7 @@ confMAX_MESSAGE_SIZE MaxMessageSize [infinite] The maximum size of messages
confBLANK_SUB BlankSub [.] Blank (space) substitution
character.
confCON_EXPENSIVE HoldExpensive [False] Avoid connecting immediately
- to mailers marked expensive?
+ to mailers marked expensive.
confCHECKPOINT_INTERVAL CheckpointInterval
[10] Checkpoint queue files every N
recipients.
@@ -1778,15 +2530,19 @@ confDELIVERY_MODE DeliveryMode [background] Default delivery mode.
confAUTO_REBUILD AutoRebuildAliases
[False] Automatically rebuild alias
file if needed.
+ There is a potential for a denial
+ of service attack if this is set.
+ This option is deprecated and will
+ be removed from a future version.
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?
+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-
@@ -1818,14 +2574,16 @@ confSINGLE_THREAD_DELIVERY SingleThreadDelivery
cached but otherwise idle connection
to a host will prevent other sendmails
from connecting to the other host.
-confUSE_ERRORS_TO* UserErrorsTo [False] Use the Errors-To: header to
+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 [False] Include sender in group
- expansions.
+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
@@ -1833,8 +2591,9 @@ confCHECK_ALIASES CheckAliases [False] Check RHS of aliases when
considerably on large alias files.
confOLD_STYLE_HEADERS* OldStyleHeaders [True] Assume that headers without
special chars are old style.
-confDAEMON_OPTIONS DaemonPortOptions
- [none] SMTP daemon options.
+confCLIENT_OPTIONS ClientPortOptions
+ [none] Options for outgoing SMTP client
+ connections.
confPRIVACY_FLAGS PrivacyOptions [authwarnings] Privacy flags.
confCOPY_ERRORS_TO PostmasterCopy [undefined] Address for additional
copies of all error messages.
@@ -1880,13 +2639,16 @@ 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 [30s] The timeout waiting for a response
- to an IDENT query.
+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_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.
@@ -1905,7 +2667,8 @@ confTO_QUEUERETURN_NONURGENT
confTO_QUEUEWARN Timeout.queuewarn
[4h] The timeout before a warning
message is sent to the sender telling
- them that the message has been deferred.
+ them that the message has been
+ deferred.
confTO_QUEUEWARN_NORMAL Timeout.queuewarn.normal
[undefined] As above, for normal
priority messages.
@@ -1923,29 +2686,78 @@ confTO_HOSTSTATUS Timeout.hoststatus
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
+ retransmition 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
+ retransmition 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
+ retransmition 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.
+ [undefined] User database
+ specification.
confFALLBACK_MX FallbackMXhost [undefined] Fallback MX host.
-confTRY_NULL_MX_LIST TryNullMXList [False] If we are the best MX for a
- host and haven't made other
- arrangements, try connecting to the
- host directly; normally this would be
- a config error.
-confQUEUE_LA QueueLA [8] Load average at which queue-only
- function kicks in.
-confREFUSE_LA RefuseLA [12] Load average at which incoming
- SMTP connections are refused.
+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).
+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
+ [undefined] 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.
@@ -1955,12 +2767,12 @@ confCONNECTION_RATE_THROTTLE ConnectionRateThrottle
no limit.
confWORK_RECIPIENT_FACTOR
RecipientFactor [30000] Cost of each recipient.
-confSEPARATE_PROC ForkEachJob [False] Run all deliveries in a separate
- process.
+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, or Time.
+ Priority, Host, Filename, 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
@@ -1971,9 +2783,10 @@ 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/service.switch] The file to use
- for the service switch on systems that
- do not have a system-defined switch.
+ [/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
@@ -2010,7 +2823,7 @@ confCOLON_OK_IN_ADDR ColonOkInAddr [True unless Configuration Level > 6]
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 the queue directory after this
+ 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
@@ -2030,7 +2843,7 @@ confDONT_EXPAND_CNAMES DontExpandCnames
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
+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
@@ -2067,11 +2880,23 @@ confUNSAFE_GROUP_WRITES UnsafeGroupWrites
and files cannot be directly referenced
from such files. World-writable files
are always considered unsafe.
+confCONNECT_ONLY_TO ConnectOnlyTo [undefined] override connection
+ address (for testing).
+confCONTROL_SOCKET_NAME ControlSocketName
+ [undefined] Control socket for daemon
+ management.
confDOUBLE_BOUNCE_ADDRESS DoubleBounceAddress
[postmaster] If an error occurs when
sending an error message, send that
"double bounce" error message to this
address.
+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
@@ -2091,13 +2916,18 @@ confMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage
confDONT_PROBE_INTERFACES DontProbeInterfaces
[False] If set, sendmail will _not_
insert the names and addresses of any
- local interfaces into the $=w class
+ 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.
+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
@@ -2107,10 +2937,139 @@ confDONT_BLAME_SENDMAIL DontBlameSendmail
confREJECT_MSG - [550 Access denied] The message
given if the access database contains
REJECT in the value portion.
+confDF_BUFFER_SIZE DataFileBufferSize
+ [4096] The maximum size of a
+ memory-buffered data (df) file
+ before a disk-based file is used.
+confXF_BUFFER_SIZE XScriptFileBufferSize
+ [4096] The maximum size of a
+ memory-buffered transcript (xf)
+ file before a disk-based file is
+ used.
+confAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5
+ CRAM-MD5] List of authentication
+ mechanisms for AUTH (separated by
+ spaces). The advertised list of
+ authentication mechanisms will be the
+ intersection of this list and the list
+ of available mechanisms as determined
+ by the CYRUS SASL library.
+confDEF_AUTH_INFO DefaultAuthInfo [undefined] Filename that contains
+ authentication information for
+ outgoing connections. This file
+ must contain the user id, the
+ authorization id, the password
+ (plain text), and the realm to use,
+ each on a separate line and must be
+ readable by root (or the trusted
+ user) only. If no realm is
+ specified, $j is used.
+
+ NOTE: Currently, AuthMechanisms is
+ used to determine the list of
+ mechanisms to use on an outgoing
+ connection. Sites which require a
+ different list of mechanisms for
+ incoming connections and outgoing
+ connections will have the ability
+ to do this in 8.11 by specifying a
+ list of mechanisms as the fifth
+ line of the DefaultAuthInfo file.
+ If no mechanisms are given in the
+ file, AuthMechanisms is used. The
+ code for doing so is included as
+ in the sendmail source code but
+ disabled. It can be enabled by
+ recompiling sendmail with:
+ -D_FFR_DEFAUTHINFO_MECHS
+confAUTH_OPTIONS AuthOptions [undefined] If this options is 'A'
+ then the AUTH= parameter for the
+ MAIL FROM command is only issued
+ when authentication succeeded.
+confLDAP_DEFAULT_SPEC LDAPDefaultSpec [undefined] Default map
+ specification for LDAP maps. The
+ value should only contain LDAP
+ specific settings such as "-h host
+ -p port -d bindDN", etc. The
+ settings will be used for all LDAP
+ maps unless they are specified in
+ the individual map specification
+ ('K' command).
+confCACERT_PATH CACERTPath [undefined] Path to directory
+ with certs of CAs.
+confCACERT CACERTFile [undefined] File containing one CA
+ cert.
+confSERVER_CERT ServerCertFile [undefined] File containing the
+ cert of the server, i.e., this cert
+ is used when sendmail acts as
+ server.
+confSERVER_KEY ServerKeyFile [undefined] File containing the
+ private key belonging to the server
+ cert.
+confCLIENT_CERT ClientCertFile [undefined] File containing the
+ cert of the client, i.e., this cert
+ is used when sendmail acts as
+ client.
+confCLIENT_KEY ClientKeyFile [undefined] File containing the
+ private key belonging to the client
+ cert.
+confDH_PARAMETERS DHParameters [undefined] File containing the
+ DH parameters.
+confRAND_FILE RandFile [undefined] File containing random
+ data or the name of the Unix socket
+ if EGD is used. STARTTLS requires
+ this option if the compile flag
+ HASURANDOM is not set (see
+ sendmail/README).
See also the description of OSTYPE for some parameters that can be
tweaked (generally pathnames to mailers).
+DaemonPortOptions are a special case since multiple daemons can be
+defined. This can be done via
+
+ DAEMON_OPTIONS(`field1=value1,field2=value2,...')
+
+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 the envelope 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.
+Finally, the M=E modifier shown above disables ETRN as required by RFC
+2476.
+
+-----------+
| HIERARCHY |
@@ -2151,7 +3110,6 @@ feature These hold special orthogonal features that you might
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?
- We've all got our own peccadillos.
siteconfig Site configuration -- e.g., tables of locally connected
UUCP sites.
@@ -2213,7 +3171,7 @@ MACROS
J
K
L Luser Relay
- M Masquerade (who I claim to be)
+ M Masquerade (who you claim to be)
N
O
P
@@ -2221,10 +3179,10 @@ MACROS
R Relay (for unqualified names)
S Smart Host
T
- U my UUCP name (if I have a UUCP connection)
- V UUCP Relay (class V hosts)
- W UUCP Relay (class W hosts)
- X UUCP Relay (class X hosts)
+ 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
@@ -2236,7 +3194,7 @@ CLASSES
C
D
E addresses that should not seem to come from $M
- F hosts we forward for
+ F hosts this system forward for
G domains that should be looked up in genericstable
H
I
@@ -2244,11 +3202,11 @@ CLASSES
K
L addresses that should not be forwarded to $R
M domains that should be mapped to $M
- N
+ 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 we are willing to relay (pass anti-spam filters)
+ R domains this system is willing to relay (pass anti-spam filters)
S
T
U locally connected UUCP hosts
@@ -2270,5 +3228,7 @@ M4 DIVERSIONS
5 locally interpreted names (overrides $R)
6 local configuration (at top of file)
7 mailer definitions
- 8
+ 8 DNS based blacklists
9 special local rulesets (1 and 2)
+
+$Revision: 8.383.2.1.2.15 $, Last updated $Date: 2000/07/19 22:27:29 $
diff --git a/contrib/sendmail/cf/cf/Build b/contrib/sendmail/cf/cf/Build
index 3a91477..77055f2 100755
--- a/contrib/sendmail/cf/cf/Build
+++ b/contrib/sendmail/cf/cf/Build
@@ -1,13 +1,14 @@
#!/bin/sh
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
#
#
-# @(#)Build 8.3 (Berkeley) 5/19/1998
+# $Id: Build,v 8.7 1999/03/02 02:37:12 peterh Exp $
#
#
@@ -15,7 +16,7 @@
#
SMROOT=${SMROOT-../..}
-BUILDTOOLS=${BUILDTOOLS-$SMROOT/BuildTools}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/devtools}
M4=`sh $BUILDTOOLS/bin/find_m4.sh`
ret=$?
diff --git a/contrib/sendmail/cf/cf/Makefile b/contrib/sendmail/cf/cf/Makefile
index 7d0f373..1192228 100644
--- a/contrib/sendmail/cf/cf/Makefile
+++ b/contrib/sendmail/cf/cf/Makefile
@@ -1,7 +1,7 @@
#
# Makefile for configuration files.
#
-# @(#)Makefile 8.17 (Berkeley) 4/2/1998
+# $Id: Makefile,v 8.40 2000/02/01 22:07:15 gshapiro Exp $
#
#
@@ -24,21 +24,28 @@ RM= rm -f
$(M4) ${CFDIR}/m4/cf.m4 $*.mc > $@ || ( $(RM) $@ && exit 1 )
$(CHMOD) $(ROMODE) $@
-ALL= generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \
+GENERIC=generic-bsd4.4.cf generic-hpux9.cf generic-hpux10.cf \
+ generic-linux.cf \
generic-osf1.cf generic-solaris2.cf \
- generic-sunos4.1.cf generic-ultrix4.cf \
- cs-hpux9.cf cs-osf1.cf cs-solaris2.cf \
- cs-sunos4.1.cf cs-ultrix4.cf \
+ generic-sunos4.1.cf generic-ultrix4.cf
+BERKELEY=cs-hpux9.cf cs-osf1.cf cs-solaris2.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 knecht.cf
+ python.cs.cf ucbarpa.cf ucbvax.cf vangogh.cs.cf
+OTHER= knecht.cf
+ALL= $(GENERIC) $(BERKELEY) $(OTHER)
all: $(ALL)
+berkeley: $(BERKELEY)
+generic: $(GENERIC)
+other: $(OTHER)
+
clean cleandir:
$(RM) $(ALL) core
-depend install:
+depend install:
# this is overkill, but....
M4FILES=\
@@ -56,15 +63,19 @@ M4FILES=\
${CFDIR}/feature/bestmx_is_local.m4 \
${CFDIR}/feature/bitdomain.m4 \
${CFDIR}/feature/blacklist_recipients.m4 \
- ${CFDIR}/feature/loose_relay_check.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/nodns.m4 \
${CFDIR}/feature/notsticky.m4 \
@@ -77,49 +88,57 @@ M4FILES=\
${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/nullrelay.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/aix2.m4 \
${CFDIR}/ostype/aix3.m4 \
+ ${CFDIR}/ostype/aix4.m4 \
${CFDIR}/ostype/altos.m4 \
${CFDIR}/ostype/amdahl-uts.m4 \
${CFDIR}/ostype/aux.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/dynix3.2.m4 \
- ${CFDIR}/ostype/gnuhurd.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/nextstep.m4 \
+ ${CFDIR}/ostype/openbsd.m4 \
${CFDIR}/ostype/osf1.m4 \
${CFDIR}/ostype/powerux.m4 \
${CFDIR}/ostype/ptx2.m4 \
@@ -127,17 +146,19 @@ M4FILES=\
${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/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 \
- ${CFDIR}/siteconfig/uucp.cogsci.m4 \
- ${CFDIR}/siteconfig/uucp.old.arpa.m4 \
- ${CFDIR}/siteconfig/uucp.ucbarpa.m4 \
- ${CFDIR}/siteconfig/uucp.ucbvax.m4 \
+ ${CFDIR}/ostype/uxpds.m4
-$(ALL): $(M4FILES)
+$(ALL): $(M4FILES)
+$(BERKELEY): $(M4FILES)
+$(GENERIC): $(M4FILES)
+$(OTHER): $(M4FILES)
diff --git a/contrib/sendmail/cf/cf/chez.cs.mc b/contrib/sendmail/cf/cf/chez.cs.mc
index a5334b5..bb335a4 100644
--- a/contrib/sendmail/cf/cf/chez.cs.mc
+++ b/contrib/sendmail/cf/cf/chez.cs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -23,7 +24,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)chez.cs.mc 8.11 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/clientproto.mc b/contrib/sendmail/cf/cf/clientproto.mc
index b0fd9bd..ecdbddf 100644
--- a/contrib/sendmail/cf/cf/clientproto.mc
+++ b/contrib/sendmail/cf/cf/clientproto.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,15 +20,10 @@ divert(-1)
# 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.
-# In addition, you MAY select the nocanonify feature. This causes
-# addresses to be sent unqualified via the SMTP connection; normally
-# they are qualifed with the masquerade name, which defaults to the
-# name of the hub machine.
-# Other than these, it should never contain any other lines.
#
divert(0)dnl
-VERSIONID(`@(#)clientproto.mc 8.12 (Berkeley) 5/19/1998')
+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
index 0be009c..f384b5f 100644
--- a/contrib/sendmail/cf/cf/cs-hpux10.mc
+++ b/contrib/sendmail/cf/cf/cs-hpux10.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-hpux10.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/cs-hpux9.mc b/contrib/sendmail/cf/cf/cs-hpux9.mc
index 9b5edfe..664377e 100644
--- a/contrib/sendmail/cf/cf/cs-hpux9.mc
+++ b/contrib/sendmail/cf/cf/cs-hpux9.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-hpux9.mc 8.11 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/cs-osf1.mc b/contrib/sendmail/cf/cf/cs-osf1.mc
index 230023c..09d6e49 100644
--- a/contrib/sendmail/cf/cf/cs-osf1.mc
+++ b/contrib/sendmail/cf/cf/cs-osf1.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-osf1.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/cs-solaris2.mc b/contrib/sendmail/cf/cf/cs-solaris2.mc
index 03fd5e2..c802b50 100644
--- a/contrib/sendmail/cf/cf/cs-solaris2.mc
+++ b/contrib/sendmail/cf/cf/cs-solaris2.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-solaris2.mc 8.9 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/cs-sunos4.1.mc b/contrib/sendmail/cf/cf/cs-sunos4.1.mc
index 3913639..6263e11 100644
--- a/contrib/sendmail/cf/cf/cs-sunos4.1.mc
+++ b/contrib/sendmail/cf/cf/cs-sunos4.1.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-sunos4.1.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/cs-ultrix4.mc b/contrib/sendmail/cf/cf/cs-ultrix4.mc
index a12b989..7669823 100644
--- a/contrib/sendmail/cf/cf/cs-ultrix4.mc
+++ b/contrib/sendmail/cf/cf/cs-ultrix4.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cs-ultrix4.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/cyrusproto.mc b/contrib/sendmail/cf/cf/cyrusproto.mc
index c660898b..8fa00ce 100644
--- a/contrib/sendmail/cf/cf/cyrusproto.mc
+++ b/contrib/sendmail/cf/cf/cyrusproto.mc
@@ -1,17 +1,17 @@
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,
+#
+# 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
+# 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.
-#
+# 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
@@ -27,15 +27,14 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)cyrusproto.mc 8.3 (Carnegie Mellon) @(#)cyrusproto.mc 8.3')
+VERSIONID(`$Id: cyrusproto.mc,v 8.7 1999/09/07 14:57:10 ca Exp $')
define(`confBIND_OPTS',`-DNSRCH -DEFNAMES')
-FEATURE(nouucp)
-FEATURE(nocanonify)
-FEATURE(always_add_domain)
-MAILER(smtp)
-MAILER(cyrus)
-
-define(`confLOCAL_MAILER',`cyrus')
+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
index b097605..18ea8b3 100644
--- a/contrib/sendmail/cf/cf/generic-bsd4.4.mc
+++ b/contrib/sendmail/cf/cf/generic-bsd4.4.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -20,7 +21,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-bsd4.4.mc 8.7 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/generic-hpux10.mc b/contrib/sendmail/cf/cf/generic-hpux10.mc
index 2000505..4db6687 100644
--- a/contrib/sendmail/cf/cf/generic-hpux10.mc
+++ b/contrib/sendmail/cf/cf/generic-hpux10.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-hpux10.mc 8.8 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: generic-hpux10.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
OSTYPE(hpux10)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/contrib/sendmail/cf/cf/generic-hpux9.mc b/contrib/sendmail/cf/cf/generic-hpux9.mc
index 531b4ee..739207c 100644
--- a/contrib/sendmail/cf/cf/generic-hpux9.mc
+++ b/contrib/sendmail/cf/cf/generic-hpux9.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-hpux9.mc 8.8 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/generic-linux.mc b/contrib/sendmail/cf/cf/generic-linux.mc
new file mode 100644
index 0000000..f86e263
--- /dev/null
+++ b/contrib/sendmail/cf/cf/generic-linux.mc
@@ -0,0 +1,27 @@
+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-nextstep3.3.mc b/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
index 1511ce7..14b46d3 100644
--- a/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
+++ b/contrib/sendmail/cf/cf/generic-nextstep3.3.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-nextstep3.3.mc 8.7 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/generic-osf1.mc b/contrib/sendmail/cf/cf/generic-osf1.mc
index 83858d1..9cd4e77 100644
--- a/contrib/sendmail/cf/cf/generic-osf1.mc
+++ b/contrib/sendmail/cf/cf/generic-osf1.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-osf1.mc 8.8 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/generic-solaris2.mc b/contrib/sendmail/cf/cf/generic-solaris2.mc
index a696e01..96d9030 100644
--- a/contrib/sendmail/cf/cf/generic-solaris2.mc
+++ b/contrib/sendmail/cf/cf/generic-solaris2.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-solaris2.mc 8.8 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: generic-solaris2.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $')
OSTYPE(solaris2)dnl
DOMAIN(generic)dnl
MAILER(local)dnl
diff --git a/contrib/sendmail/cf/cf/generic-sunos4.1.mc b/contrib/sendmail/cf/cf/generic-sunos4.1.mc
index fc0de35..a27d099 100644
--- a/contrib/sendmail/cf/cf/generic-sunos4.1.mc
+++ b/contrib/sendmail/cf/cf/generic-sunos4.1.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-sunos4.1.mc 8.8 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/generic-ultrix4.mc b/contrib/sendmail/cf/cf/generic-ultrix4.mc
index 6fed36e..913edb5 100644
--- a/contrib/sendmail/cf/cf/generic-ultrix4.mc
+++ b/contrib/sendmail/cf/cf/generic-ultrix4.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)generic-ultrix4.mc 8.8 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/huginn.cs.mc b/contrib/sendmail/cf/cf/huginn.cs.mc
index a58d121..117a236 100644
--- a/contrib/sendmail/cf/cf/huginn.cs.mc
+++ b/contrib/sendmail/cf/cf/huginn.cs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -21,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)huginn.cs.mc 8.12 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/knecht.mc b/contrib/sendmail/cf/cf/knecht.mc
index 4ba1471..cd467f6 100644
--- a/contrib/sendmail/cf/cf/knecht.mc
+++ b/contrib/sendmail/cf/cf/knecht.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -16,8 +17,8 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)knecht.mc 8.31 (Berkeley) 1/30/1999')
-OSTYPE(bsd4.4)dnl
+VERSIONID(`$Id: knecht.mc,v 8.37 1999/11/19 05:18:12 gshapiro Exp $')
+OSTYPE(bsdi)dnl
DOMAIN(generic)dnl
define(`confFORWARD_PATH', `$z/.forward.$w:$z/.forward+$h:$z/.forward')dnl
define(`confDEF_USER_ID', `mailnull')dnl
@@ -27,10 +28,10 @@ define(`confCOPY_ERRORS_TO', `Postmaster')dnl
define(`confTO_QUEUEWARN', `8h')dnl
define(`confTRUSTED_USERS', `www')dnl
define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'')dnl
-FEATURE(virtusertable, `hash /etc/mail/virtusertable')dnl
+FEATURE(virtusertable)dnl
FEATURE(access_db)dnl
FEATURE(local_lmtp)dnl
-define(`LOCAL_MAILER_FLAGS', CONCAT(LOCAL_MAILER_FLAGS,P))dnl
+MODIFY_MAILER_FLAGS(`LOCAL', `+P')dnl
MAILER(local)dnl
MAILER(smtp)dnl
@@ -39,10 +40,9 @@ LOCAL_CONFIG
# Regular expression to reject:
# * numeric-only localparts from aol.com and msn.com
# * localparts starting with a digit from juno.com
-# * localparts longer than 10 characters from aol.com
#
Kcheckaddress regex -a@MATCH
- ^([0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com|.{10}[^<]+<@aol\.com)\.?>
+ ^([0-9]+<@(aol|msn)\.com|[0-9][^<]*<@juno\.com)\.?>
#
# Names that won't be allowed in a To: line (local-part and domains)
diff --git a/contrib/sendmail/cf/cf/mail.cs.mc b/contrib/sendmail/cf/cf/mail.cs.mc
index 8abd945..6bd7782 100644
--- a/contrib/sendmail/cf/cf/mail.cs.mc
+++ b/contrib/sendmail/cf/cf/mail.cs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -21,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)mail.cs.mc 8.15 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/mail.eecs.mc b/contrib/sendmail/cf/cf/mail.eecs.mc
index 6522141..bf7d408 100644
--- a/contrib/sendmail/cf/cf/mail.eecs.mc
+++ b/contrib/sendmail/cf/cf/mail.eecs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -21,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)mail.eecs.mc 8.15 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/mailspool.cs.mc b/contrib/sendmail/cf/cf/mailspool.cs.mc
index 08dcce6..0414e4c 100644
--- a/contrib/sendmail/cf/cf/mailspool.cs.mc
+++ b/contrib/sendmail/cf/cf/mailspool.cs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -23,7 +24,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)mailspool.cs.mc 8.9 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/python.cs.mc b/contrib/sendmail/cf/cf/python.cs.mc
index ddf4fc3..c3b3e0d 100644
--- a/contrib/sendmail/cf/cf/python.cs.mc
+++ b/contrib/sendmail/cf/cf/python.cs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -23,7 +24,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)python.cs.mc 8.9 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/s2k-osf1.mc b/contrib/sendmail/cf/cf/s2k-osf1.mc
index 6f1099a..6ec08fe 100644
--- a/contrib/sendmail/cf/cf/s2k-osf1.mc
+++ b/contrib/sendmail/cf/cf/s2k-osf1.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)s2k-osf1.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/s2k-ultrix4.mc b/contrib/sendmail/cf/cf/s2k-ultrix4.mc
index db8e455..4bf4939 100644
--- a/contrib/sendmail/cf/cf/s2k-ultrix4.mc
+++ b/contrib/sendmail/cf/cf/s2k-ultrix4.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)s2k-ultrix4.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/tcpproto.mc b/contrib/sendmail/cf/cf/tcpproto.mc
index 692a08f..bdba7ef 100644
--- a/contrib/sendmail/cf/cf/tcpproto.mc
+++ b/contrib/sendmail/cf/cf/tcpproto.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -25,7 +26,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)tcpproto.mc 8.10 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: tcpproto.mc,v 8.13 1999/02/07 07:26:05 gshapiro Exp $')
OSTYPE(unknown)
FEATURE(nouucp)
MAILER(local)
diff --git a/contrib/sendmail/cf/cf/ucbarpa.mc b/contrib/sendmail/cf/cf/ucbarpa.mc
index 40bb6c2..26b2ce0 100644
--- a/contrib/sendmail/cf/cf/ucbarpa.mc
+++ b/contrib/sendmail/cf/cf/ucbarpa.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -20,7 +21,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)ucbarpa.mc 8.9 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/ucbvax.mc b/contrib/sendmail/cf/cf/ucbvax.mc
index 2395f82..235d9aa 100644
--- a/contrib/sendmail/cf/cf/ucbvax.mc
+++ b/contrib/sendmail/cf/cf/ucbvax.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -21,7 +22,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)ucbvax.mc 8.11 (Berkeley) 5/19/1998')
+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)
diff --git a/contrib/sendmail/cf/cf/uucpproto.mc b/contrib/sendmail/cf/cf/uucpproto.mc
index a547d10..134c8f4 100644
--- a/contrib/sendmail/cf/cf/uucpproto.mc
+++ b/contrib/sendmail/cf/cf/uucpproto.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -25,7 +26,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)uucpproto.mc 8.12 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/cf/vangogh.cs.mc b/contrib/sendmail/cf/cf/vangogh.cs.mc
index f60dca7..3fb48e1 100644
--- a/contrib/sendmail/cf/cf/vangogh.cs.mc
+++ b/contrib/sendmail/cf/cf/vangogh.cs.mc
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -22,7 +23,7 @@ divert(-1)
#
divert(0)dnl
-VERSIONID(`@(#)vangogh.cs.mc 8.10 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/domain/Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/Berkeley.EDU.m4
index 85d5e5b..d0fee24 100644
--- a/contrib/sendmail/cf/domain/Berkeley.EDU.m4
+++ b/contrib/sendmail/cf/domain/Berkeley.EDU.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,7 +12,7 @@ divert(-1)
#
#
divert(0)
-VERSIONID(`@(#)Berkeley.EDU.m4 8.14 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
index 5609ce8..181ced1 100644
--- a/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
+++ b/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,7 +12,7 @@ divert(-1)
#
#
divert(0)
-VERSIONID(`@(#)CS.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/1998')
+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',
diff --git a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 b/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
index 095fbc8..41a21ad 100644
--- a/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
+++ b/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,6 +12,6 @@ divert(-1)
#
#
divert(0)
-VERSIONID(`@(#)EECS.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/1998')
+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
index a951f8b..9a019ce 100644
--- a/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4
+++ b/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,6 +12,6 @@ divert(-1)
#
#
divert(0)
-VERSIONID(`@(#)S2K.Berkeley.EDU.m4 8.7 (Berkeley) 5/19/1998')
+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
index 805bab6..b9a73b9 100644
--- a/contrib/sendmail/cf/domain/berkeley-only.m4
+++ b/contrib/sendmail/cf/domain/berkeley-only.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,7 +12,7 @@ divert(-1)
#
#
divert(0)
-VERSIONID(`@(#)unspecified-domain.m4 8.7 (Berkeley) 5/19/1998')
+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')
diff --git a/contrib/sendmail/cf/domain/generic.m4 b/contrib/sendmail/cf/domain/generic.m4
index 93057d0..caa5a88 100644
--- a/contrib/sendmail/cf/domain/generic.m4
+++ b/contrib/sendmail/cf/domain/generic.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -19,7 +20,9 @@ divert(-1)
# files.
#
divert(0)
-VERSIONID(`@(#)generic.m4 8.9 (Berkeley) 5/19/1998')
+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
-FEATURE(redirect)dnl
-FEATURE(use_cw_file)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
index bf1b1e7..4c39884 100644
--- a/contrib/sendmail/cf/feature/accept_unqualified_senders.m4
+++ b/contrib/sendmail/cf/feature/accept_unqualified_senders.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)accept_unqualified_senders.m4 8.3 (Berkeley) 5/19/1998')
+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
index cbc4747..a54507c 100644
--- a/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4
+++ b/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)accept_unresolvable_domains.m4 8.7 (Berkeley) 5/19/1998')
+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
index 75b5551..14a8fe8 100644
--- a/contrib/sendmail/cf/feature/access_db.m4
+++ b/contrib/sendmail/cf/feature/access_db.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,10 +10,14 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)access_db.m4 8.8 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: access_db.m4,v 8.15 1999/07/22 17:55:34 gshapiro Exp $')
divert(-1)
-define(`ACCESS_TABLE',
- ifelse(_ARG_, `',
- DATABASE_MAP_TYPE` -o /etc/mail/access',
- `_ARG_'))dnl
+define(`_ACCESS_TABLE_', `')
+define(`_TAG_DELIM_', `:')dnl should be in OperatorChars
+
+LOCAL_CONFIG
+# Access list database (for spam stomping)
+Kaccess ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`access',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/feature/allmasquerade.m4 b/contrib/sendmail/cf/feature/allmasquerade.m4
index ed622dc..bbb8660 100644
--- a/contrib/sendmail/cf/feature/allmasquerade.m4
+++ b/contrib/sendmail/cf/feature/allmasquerade.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,8 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)allmasquerade.m4 8.7 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: allmasquerade.m4,v 8.11 1999/08/06 01:28:26 gshapiro Exp $')
divert(-1)
-
define(`_ALL_MASQUERADE_', 1)
diff --git a/contrib/sendmail/cf/feature/always_add_domain.m4 b/contrib/sendmail/cf/feature/always_add_domain.m4
index 69092e3..3ea174b 100644
--- a/contrib/sendmail/cf/feature/always_add_domain.m4
+++ b/contrib/sendmail/cf/feature/always_add_domain.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)always_add_domain.m4 8.6 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: always_add_domain.m4,v 8.9 1999/02/07 07:26:08 gshapiro Exp $')
divert(-1)
define(`_ALWAYS_ADD_DOMAIN_', 1)
diff --git a/contrib/sendmail/cf/feature/bestmx_is_local.m4 b/contrib/sendmail/cf/feature/bestmx_is_local.m4
index ec4c81c..22c8723 100644
--- a/contrib/sendmail/cf/feature/bestmx_is_local.m4
+++ b/contrib/sendmail/cf/feature/bestmx_is_local.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)bestmx_is_local.m4 8.14 (Berkeley) 1/25/1999')
+VERSIONID(`$Id: bestmx_is_local.m4,v 8.24 1999/10/18 21:50:24 ca Exp $')
divert(-1)
define(_BESTMX_IS_LOCAL_, _ARG_)
@@ -20,7 +21,7 @@ define(_BESTMX_IS_LOCAL_, _ARG_)
LOCAL_CONFIG
# turn on bestMX lookup table
Kbestmx bestmx
-ifelse(_ARG_, `', `dnl',`
+ifelse(defn(`_ARG_'), `', `dnl',`
# limit bestmx to these domains
CB`'_ARG_')
@@ -37,13 +38,14 @@ LOCAL_NET_CONFIG
# low to medium traffic hosts. If you use the limited bestmx
# by passing in a set of possible domains it will improve things.
-ifelse(_ARG_, `', `dnl
+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 . > $* $@ $>97 $1 $2 $3
-R< @ $* @@ $=w . > : $* $@ $>97 $3
-R$* < @ $* @@ $=w . > $* $#local $: $1
+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
index 7f9a181..7ac7304 100644
--- a/contrib/sendmail/cf/feature/bitdomain.m4
+++ b/contrib/sendmail/cf/feature/bitdomain.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,11 +13,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)bitdomain.m4 8.14 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: bitdomain.m4,v 8.23 1999/07/22 17:55:34 gshapiro Exp $')
divert(-1)
-define(`BITDOMAIN_TABLE', ifelse(_ARG_, `',
- ifdef(`_USE_ETC_MAIL_',
- DATABASE_MAP_TYPE` -o /etc/mail/bitdomain',
- DATABASE_MAP_TYPE` -o /etc/bitdomain'),
- `_ARG_'))dnl
+define(`_BITDOMAIN_TABLE_', `')
+
+LOCAL_CONFIG
+# BITNET mapping table
+Kbitdomain ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`bitdomain',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/feature/blacklist_recipients.m4 b/contrib/sendmail/cf/feature/blacklist_recipients.m4
index e3478d3..d6218d1 100644
--- a/contrib/sendmail/cf/feature/blacklist_recipients.m4
+++ b/contrib/sendmail/cf/feature/blacklist_recipients.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,10 +10,10 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)blacklist_recipients.m4 8.9 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: blacklist_recipients.m4,v 8.13 1999/04/02 02:25:13 gshapiro Exp $')
divert(-1)
-ifdef(`ACCESS_TABLE',
+ifdef(`_ACCESS_TABLE_',
`define(`_BLACKLIST_RCPT_', 1)',
`errprint(`*** ERROR: FEATURE(blacklist_recipients) requires FEATURE(access_db)
')')
diff --git a/contrib/sendmail/cf/feature/delay_checks.m4 b/contrib/sendmail/cf/feature/delay_checks.m4
new file mode 100644
index 0000000..1592525
--- /dev/null
+++ b/contrib/sendmail/cf/feature/delay_checks.m4
@@ -0,0 +1,22 @@
+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.7 2000/02/26 01:32:02 gshapiro 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)
+')
+ ')
diff --git a/contrib/sendmail/cf/feature/dnsbl.m4 b/contrib/sendmail/cf/feature/dnsbl.m4
new file mode 100644
index 0000000..fd3ceee
--- /dev/null
+++ b/contrib/sendmail/cf/feature/dnsbl.m4
@@ -0,0 +1,25 @@
+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)
+ifdef(`_DNSBL_R_',`dnl',`dnl
+VERSIONID(`$Id: dnsbl.m4,v 8.18 1999/08/03 04:30:56 gshapiro Exp $')')
+divert(-1)
+define(`_DNSBL_SRV_', `ifelse(len(X`'_ARG_),`1',`rbl.maps.vix.com',_ARG_)')dnl
+define(`_DNSBL_MSG_', `ifelse(len(X`'_ARG2_),`1',`"550 Mail from " $`'&{client_addr} " refused by blackhole site '_DNSBL_SRV_`"',`_ARG2_')')dnl
+divert(8)
+# DNS based IP address spam list _DNSBL_SRV_
+R$* $: $&{client_addr}
+R::ffff:$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._DNSBL_SRV_. $: OK $)
+R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._DNSBL_SRV_. $: OK $)
+R<?>OK $: OKSOFAR
+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
index e7303dc..b609ec9 100644
--- a/contrib/sendmail/cf/feature/domaintable.m4
+++ b/contrib/sendmail/cf/feature/domaintable.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,12 +13,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)domaintable.m4 8.9 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: domaintable.m4,v 8.17 1999/07/22 17:55:35 gshapiro Exp $')
divert(-1)
-define(`DOMAIN_TABLE', ifelse(_ARG_, `',
- ifdef(`_USE_ETC_MAIL_',
- DATABASE_MAP_TYPE` -o /etc/mail/domaintable',
- DATABASE_MAP_TYPE` -o /etc/domaintable'),
- `_ARG_'))dnl
+define(`_DOMAIN_TABLE_', `')
+LOCAL_CONFIG
+# Domain table (adding domains)
+Kdomaintable ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`domaintable',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/feature/generics_entire_domain.m4 b/contrib/sendmail/cf/feature/generics_entire_domain.m4
new file mode 100644
index 0000000..fab586a
--- /dev/null
+++ b/contrib/sendmail/cf/feature/generics_entire_domain.m4
@@ -0,0 +1,16 @@
+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
index 654db5d..9104948 100644
--- a/contrib/sendmail/cf/feature/genericstable.m4
+++ b/contrib/sendmail/cf/feature/genericstable.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,11 +13,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)genericstable.m4 8.8 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: genericstable.m4,v 8.16 1999/07/22 17:55:35 gshapiro Exp $')
divert(-1)
-define(`GENERICS_TABLE', ifelse(_ARG_, `',
- ifdef(`_USE_ETC_MAIL_',
- DATABASE_MAP_TYPE` -o /etc/mail/genericstable',
- DATABASE_MAP_TYPE` -o /etc/genericstable'),
- `_ARG_'))dnl
+define(`_GENERICS_TABLE_', `')
+
+LOCAL_CONFIG
+# Generics table (mapping outgoing addresses)
+Kgenerics ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`genericstable',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/feature/ldap_routing.m4 b/contrib/sendmail/cf/feature/ldap_routing.m4
new file mode 100644
index 0000000..7ea0c86
--- /dev/null
+++ b/contrib/sendmail/cf/feature/ldap_routing.m4
@@ -0,0 +1,34 @@
+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: ldap_routing.m4,v 8.5.4.1 2000/07/15 18:05:05 gshapiro 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')')
+
+# 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_')',
+ `define(`_LDAP_ROUTING_', `_MUST_EXIST_')')
+
+LOCAL_CONFIG
+# LDAP routing maps
+Kldapmh ifelse(len(X`'_ARG1_), `1',
+ `ldap -1 -v mailHost -k (&(objectClass=inetLocalMailRecipient)(mailLocalAddress=%0))',
+ `_ARG1_')
+
+Kldapmra ifelse(len(X`'_ARG2_), `1',
+ `ldap -1 -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
index b036ae1..f86ebd4 100644
--- a/contrib/sendmail/cf/feature/limited_masquerade.m4
+++ b/contrib/sendmail/cf/feature/limited_masquerade.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)limited_masquerade.m4 8.6 (Berkeley) 5/19/1998')
+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
index f328ce5..4b44eab 100644
--- a/contrib/sendmail/cf/feature/local_lmtp.m4
+++ b/contrib/sendmail/cf/feature/local_lmtp.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,12 +10,17 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)local_lmtp.m4 8.5 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: local_lmtp.m4,v 8.15 1999/11/18 05:06:22 ca Exp $')
divert(-1)
+ifdef(`_MAILER_local_',
+ `errprint(`*** FEATURE(local_lmtp) must occur before MAILER(local)
+')')dnl
+
define(`LOCAL_MAILER_PATH',
- ifelse(_ARG_, `',
+ ifelse(defn(`_ARG_'), `',
ifdef(`confEBINDIR', confEBINDIR, `/usr/libexec')`/mail.local',
_ARG_))
-define(`LOCAL_MAILER_FLAGS', `SXfmnz9')
+define(`LOCAL_MAILER_FLAGS', `PSXfmnz9')
define(`LOCAL_MAILER_ARGS', `mail.local -l')
+define(`LOCAL_MAILER_DSN_DIAGNOSTIC_CODE', `SMTP')
diff --git a/contrib/sendmail/cf/feature/local_procmail.m4 b/contrib/sendmail/cf/feature/local_procmail.m4
index 20618dd..29bb980 100644
--- a/contrib/sendmail/cf/feature/local_procmail.m4
+++ b/contrib/sendmail/cf/feature/local_procmail.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1998, 1999 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.
@@ -12,14 +13,20 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)local_procmail.m4 8.11 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: local_procmail.m4,v 8.21 1999/11/18 05:06:23 ca Exp $')
divert(-1)
+ifdef(`_MAILER_local_',
+ `errprint(`*** FEATURE(local_procmail) must occur before MAILER(local)
+')')dnl
+
define(`LOCAL_MAILER_PATH',
- ifelse(_ARG_, `',
+ ifelse(defn(`_ARG_'), `',
ifdef(`PROCMAIL_MAILER_PATH',
PROCMAIL_MAILER_PATH,
`/usr/local/bin/procmail'),
_ARG_))
-define(`LOCAL_MAILER_FLAGS', `SPfhn9')
-define(`LOCAL_MAILER_ARGS', `procmail -Y -a $h -d $u')
+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_))
diff --git a/contrib/sendmail/cf/feature/loose_relay_check.m4 b/contrib/sendmail/cf/feature/loose_relay_check.m4
index 988e441..abd1b9c9 100644
--- a/contrib/sendmail/cf/feature/loose_relay_check.m4
+++ b/contrib/sendmail/cf/feature/loose_relay_check.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)loose_relay_check.m4 8.3 (Berkeley) 5/19/1998')
+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
index 71a41ad..08c1bf6 100644
--- a/contrib/sendmail/cf/feature/mailertable.m4
+++ b/contrib/sendmail/cf/feature/mailertable.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,11 +13,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)mailertable.m4 8.10 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: mailertable.m4,v 8.18 1999/07/22 17:55:35 gshapiro Exp $')
divert(-1)
-define(`MAILER_TABLE', ifelse(_ARG_, `',
- ifdef(`_USE_ETC_MAIL_',
- DATABASE_MAP_TYPE` -o /etc/mail/mailertable',
- DATABASE_MAP_TYPE` -o /etc/mailertable'),
- `_ARG_'))dnl
+define(`_MAILER_TABLE_', `')
+
+LOCAL_CONFIG
+# Mailer table (overriding domains)
+Kmailertable ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`mailertable',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 b/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
index 4455b9a..e2bcc65 100644
--- a/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
+++ b/contrib/sendmail/cf/feature/masquerade_entire_domain.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)masquerade_entire_domain.m4 8.6 (Berkeley) 5/19/1998')
+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
index 276c7f4..74d3aa0 100644
--- a/contrib/sendmail/cf/feature/masquerade_envelope.m4
+++ b/contrib/sendmail/cf/feature/masquerade_envelope.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)masquerade_envelope.m4 8.6 (Berkeley) 5/19/1998')
+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/no_default_msa.m4 b/contrib/sendmail/cf/feature/no_default_msa.m4
new file mode 100644
index 0000000..3f5752a
--- /dev/null
+++ b/contrib/sendmail/cf/feature/no_default_msa.m4
@@ -0,0 +1,16 @@
+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.1 2000/02/01 15:56:30 ca Exp $')
+divert(-1)
+
+define(`_NO_MSA_', `1')
diff --git a/contrib/sendmail/cf/feature/nocanonify.m4 b/contrib/sendmail/cf/feature/nocanonify.m4
index 279a8ea..05baa7a 100644
--- a/contrib/sendmail/cf/feature/nocanonify.m4
+++ b/contrib/sendmail/cf/feature/nocanonify.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,12 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)nocanonify.m4 8.6 (Berkeley) 5/19/1998')
+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/nodns.m4 b/contrib/sendmail/cf/feature/nodns.m4
index 5d383d5..c5acadf 100644
--- a/contrib/sendmail/cf/feature/nodns.m4
+++ b/contrib/sendmail/cf/feature/nodns.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,10 +13,10 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)nodns.m4 8.9 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: nodns.m4,v 8.14 1999/07/22 17:55:35 gshapiro Exp $')
divert(-1)
undefine(`confBIND_OPTS')dnl
errprint(`FEATURE(nodns) is no-op.
-Use ServiceSwitchFile ('ifdef(`confSERVICE_SWITCH_FILE',confSERVICE_SWITCH_FILE,ifdef(`_USE_ETC_MAIL_',`/etc/mail/service.switch',`/etc/service.switch'))`) if your OS does not provide its own instead.
+Use ServiceSwitchFile ('ifdef(`confSERVICE_SWITCH_FILE',confSERVICE_SWITCH_FILE,MAIL_SETTINGS_DIR`service.switch')`) if your OS does not provide its own instead.
')
diff --git a/contrib/sendmail/cf/feature/notsticky.m4 b/contrib/sendmail/cf/feature/notsticky.m4
index 5ba6b2f..1cecca5 100644
--- a/contrib/sendmail/cf/feature/notsticky.m4
+++ b/contrib/sendmail/cf/feature/notsticky.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)notsticky.m4 8.8 (Berkeley) 5/19/1998')
+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.
diff --git a/contrib/sendmail/cf/feature/nouucp.m4 b/contrib/sendmail/cf/feature/nouucp.m4
index 7cf241f..a031049 100644
--- a/contrib/sendmail/cf/feature/nouucp.m4
+++ b/contrib/sendmail/cf/feature/nouucp.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,15 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)nouucp.m4 8.6 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: nouucp.m4,v 8.13 1999/11/24 18:37:07 ca Exp $')
divert(-1)
-define(`_NO_UUCP_', 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
index 99346ae..1354e56 100644
--- a/contrib/sendmail/cf/feature/nullclient.m4
+++ b/contrib/sendmail/cf/feature/nullclient.m4
@@ -1,6 +1,7 @@
-PUSHDIVERT(-1)
+divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -10,11 +11,8 @@ PUSHDIVERT(-1)
# the sendmail distribution.
#
#
-ifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
-define(_NULL_CLIENT_ONLY_, `1')
-ifelse(_ARG_, `', `errprint(`Feature "nullclient" requires argument')',
- `define(`MAIL_HUB', _ARG_)')
-POPDIVERT
+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
@@ -23,28 +21,17 @@ POPDIVERT
# sendmail.
#
-VERSIONID(`@(#)nullclient.m4 8.12 (Berkeley) 5/19/1998')
+divert(0)
+VERSIONID(`$Id: nullclient.m4,v 8.21.16.1 2000/05/26 18:08:41 gshapiro Exp $')
+divert(-1)
-PUSHDIVERT(6)
-# hub host (to which all mail is sent)
-DH`'ifdef(`MAIL_HUB', MAIL_HUB,
- `errprint(`MAIL_HUB not defined for nullclient feature')')
-ifdef(`MASQUERADE_NAME',, `define(`MASQUERADE_NAME', MAIL_HUB)')dnl
-
-# route-addr separators
-C: : ,
-POPDIVERT
-PUSHDIVERT(7)
-############################################
-### Null Client Mailer specification ###
-############################################
-
-ifdef(`confRELAY_MAILER',,
- `define(`confRELAY_MAILER', `nullclient')')dnl
-ifdef(`confFROM_HEADER',,
- `define(`confFROM_HEADER', <$g>)')dnl
-ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')dnl
-
-Mnullclient, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS),ifdef(`SMTP_MAILER_MAX', ` M=SMTP_MAILER_MAX,')
- A=SMTP_MAILER_ARGS
-POPDIVERT
+undefine(`ALIAS_FILE')
+define(`MAIL_HUB', _NULL_CLIENT_)
+define(`SMART_HOST', _NULL_CLIENT_)
+define(`confFORWARD_PATH', `')
+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/promiscuous_relay.m4 b/contrib/sendmail/cf/feature/promiscuous_relay.m4
index cc3dae6..86db75f 100644
--- a/contrib/sendmail/cf/feature/promiscuous_relay.m4
+++ b/contrib/sendmail/cf/feature/promiscuous_relay.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)promiscuous_relay.m4 8.7 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: promiscuous_relay.m4,v 8.10 1999/02/07 07:26:11 gshapiro Exp $')
divert(-1)
define(`_PROMISCUOUS_RELAY_', 1)
diff --git a/contrib/sendmail/cf/feature/rbl.m4 b/contrib/sendmail/cf/feature/rbl.m4
index 0284aa3..6e5d159 100644
--- a/contrib/sendmail/cf/feature/rbl.m4
+++ b/contrib/sendmail/cf/feature/rbl.m4
@@ -9,7 +9,10 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)rbl.m4 8.8 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: rbl.m4,v 8.17 1999/04/04 00:51:12 ca Exp $')
divert(-1)
-define(`_RBL_', ifelse(_ARG_, `', `rbl.maps.vix.com', `_ARG_'))dnl
+define(`_RBL_', ifelse(defn(`_ARG_'), `', `rbl.maps.vix.com', `_ARG_'))dnl
+ifelse(defn(`_ARG_'), `', `', `
+errprint(`Warning: FEATURE(`rbl') is deprecated, use FEATURE(`dnsbl') instead
+')')dnl
diff --git a/contrib/sendmail/cf/feature/redirect.m4 b/contrib/sendmail/cf/feature/redirect.m4
index a9b333f..e167865 100644
--- a/contrib/sendmail/cf/feature/redirect.m4
+++ b/contrib/sendmail/cf/feature/redirect.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,17 +13,14 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)redirect.m4 8.10 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $')
divert(-1)
-
-PUSHDIVERT(3)
+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>
-POPDIVERT
+R$* < @ $+ .REDIRECT. > < $- > $#error $@ 5.1.1 $: "551 User has moved; please try " <$1@$2>
-PUSHDIVERT(6)
+LOCAL_CONFIG
CPREDIRECT
-POPDIVERT
diff --git a/contrib/sendmail/cf/feature/relay_based_on_MX.m4 b/contrib/sendmail/cf/feature/relay_based_on_MX.m4
index f19e89b..872680a 100644
--- a/contrib/sendmail/cf/feature/relay_based_on_MX.m4
+++ b/contrib/sendmail/cf/feature/relay_based_on_MX.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,12 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)relay_based_on_MX.m4 8.7 (Berkeley) 5/19/1998')
+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
index c932a70..a720b16 100644
--- a/contrib/sendmail/cf/feature/relay_entire_domain.m4
+++ b/contrib/sendmail/cf/feature/relay_entire_domain.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)relay_entire_domain.m4 8.7 (Berkeley) 5/19/1998')
+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
index 35f7ab5..867d4ed 100644
--- a/contrib/sendmail/cf/feature/relay_hosts_only.m4
+++ b/contrib/sendmail/cf/feature/relay_hosts_only.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)relay_hosts_only.m4 8.7 (Berkeley) 5/19/1998')
+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
index ab040f6..6e1aa80 100644
--- a/contrib/sendmail/cf/feature/relay_local_from.m4
+++ b/contrib/sendmail/cf/feature/relay_local_from.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -9,7 +10,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)relay_local_from.m4 8.2 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: relay_local_from.m4,v 8.5 1999/02/07 07:26:12 gshapiro Exp $')
divert(-1)
define(`_RELAY_LOCAL_FROM_', 1)
diff --git a/contrib/sendmail/cf/feature/relay_mail_from.m4 b/contrib/sendmail/cf/feature/relay_mail_from.m4
new file mode 100644
index 0000000..f66408d
--- /dev/null
+++ b/contrib/sendmail/cf/feature/relay_mail_from.m4
@@ -0,0 +1,20 @@
+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: relay_mail_from.m4,v 8.2 1999/04/02 02:25:13 gshapiro 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)
+')')
diff --git a/contrib/sendmail/cf/feature/smrsh.m4 b/contrib/sendmail/cf/feature/smrsh.m4
index 3b44fa8..2159ff8 100644
--- a/contrib/sendmail/cf/feature/smrsh.m4
+++ b/contrib/sendmail/cf/feature/smrsh.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,12 +13,14 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)smrsh.m4 8.8 (Berkeley) 5/19/1998')
+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
+ `errprint(`*** FEATURE(smrsh) must occur before MAILER(local)
+')')dnl
define(`LOCAL_SHELL_PATH',
- ifelse(_ARG_, `',
+ 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
index 1d0d1cd..1e95be4 100644
--- a/contrib/sendmail/cf/feature/stickyhost.m4
+++ b/contrib/sendmail/cf/feature/stickyhost.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)stickyhost.m4 8.6 (Berkeley) 5/19/1998')
+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_ct_file.m4 b/contrib/sendmail/cf/feature/use_ct_file.m4
index 924dd06..e87ca62 100644
--- a/contrib/sendmail/cf/feature/use_ct_file.m4
+++ b/contrib/sendmail/cf/feature/use_ct_file.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)use_ct_file.m4 8.6 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: use_ct_file.m4,v 8.9 1999/02/07 07:26:13 gshapiro Exp $')
divert(-1)
# if defined, the sendmail.cf will read the /etc/sendmail.ct file
diff --git a/contrib/sendmail/cf/feature/use_cw_file.m4 b/contrib/sendmail/cf/feature/use_cw_file.m4
index 5bbbf7b..c7e1cee 100644
--- a/contrib/sendmail/cf/feature/use_cw_file.m4
+++ b/contrib/sendmail/cf/feature/use_cw_file.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)use_cw_file.m4 8.6 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: use_cw_file.m4,v 8.9 1999/02/07 07:26:13 gshapiro Exp $')
divert(-1)
# if defined, the sendmail.cf will read the /etc/sendmail.cw file
diff --git a/contrib/sendmail/cf/feature/uucpdomain.m4 b/contrib/sendmail/cf/feature/uucpdomain.m4
index 0c584aa..cc34032 100644
--- a/contrib/sendmail/cf/feature/uucpdomain.m4
+++ b/contrib/sendmail/cf/feature/uucpdomain.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,11 +13,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)uucpdomain.m4 8.14 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: uucpdomain.m4,v 8.22 1999/07/22 17:55:35 gshapiro Exp $')
divert(-1)
-define(`UUDOMAIN_TABLE', ifelse(_ARG_, `',
- ifdef(`_USE_ETC_MAIL_',
- DATABASE_MAP_TYPE` -o /etc/mail/uudomain',
- DATABASE_MAP_TYPE` -o /etc/uudomain'),
- `_ARG_'))dnl
+define(`_UUDOMAIN_TABLE_', `')
+
+LOCAL_CONFIG
+# UUCP domain table
+Kuudomain ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`uudomain',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/feature/virtuser_entire_domain.m4 b/contrib/sendmail/cf/feature/virtuser_entire_domain.m4
new file mode 100644
index 0000000..5a1d9f0
--- /dev/null
+++ b/contrib/sendmail/cf/feature/virtuser_entire_domain.m4
@@ -0,0 +1,16 @@
+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
index 316f7ea..b1f6028 100644
--- a/contrib/sendmail/cf/feature/virtusertable.m4
+++ b/contrib/sendmail/cf/feature/virtusertable.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,11 +13,13 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)virtusertable.m4 8.8 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: virtusertable.m4,v 8.16 1999/07/22 17:55:36 gshapiro Exp $')
divert(-1)
-define(`VIRTUSER_TABLE', ifelse(_ARG_, `',
- ifdef(`_USE_ETC_MAIL_',
- DATABASE_MAP_TYPE` -o /etc/mail/virtusertable',
- DATABASE_MAP_TYPE` -o /etc/virtusertable'),
- `_ARG_'))dnl
+define(`_VIRTUSER_TABLE_', `')
+
+LOCAL_CONFIG
+# Virtual user table (maps incoming users)
+Kvirtuser ifelse(defn(`_ARG_'), `',
+ DATABASE_MAP_TYPE MAIL_SETTINGS_DIR`virtusertable',
+ `_ARG_')
diff --git a/contrib/sendmail/cf/hack/cssubdomain.m4 b/contrib/sendmail/cf/hack/cssubdomain.m4
index 6297d64..9b0e76a2 100644
--- a/contrib/sendmail/cf/hack/cssubdomain.m4
+++ b/contrib/sendmail/cf/hack/cssubdomain.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,7 +12,7 @@ divert(-1)
#
#
divert(0)
-VERSIONID(`@(#)cssubdomain.m4 8.6 (Berkeley) 5/19/1998')
+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
diff --git a/contrib/sendmail/cf/m4/cf.m4 b/contrib/sendmail/cf/m4/cf.m4
index 0b05809..4f5712b 100644
--- a/contrib/sendmail/cf/m4/cf.m4
+++ b/contrib/sendmail/cf/m4/cf.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -25,4 +26,4 @@ ifdef(`_CF_DIR_', `',
divert(0)dnl
ifdef(`OSTYPE', `dnl',
`include(_CF_DIR_`'m4/cfhead.m4)dnl
-VERSIONID(`@(#)cf.m4 8.29 (Berkeley) 5/19/1998')')
+VERSIONID(`$Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $')')
diff --git a/contrib/sendmail/cf/m4/proto.m4 b/contrib/sendmail/cf/m4/proto.m4
index 863b42c..04c1197 100644
--- a/contrib/sendmail/cf/m4/proto.m4
+++ b/contrib/sendmail/cf/m4/proto.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1998-2000 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.
@@ -12,17 +13,18 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)proto.m4 8.243 (Berkeley) 2/2/1999')
+VERSIONID(`$Id: proto.m4,v 8.446.2.5.2.12 2000/07/19 21:41:19 gshapiro Exp $')
MAILER(local)dnl
-# level 8 config file format
-V8/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
+# level CF_LEVEL config file format
+V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
divert(-1)
# do some sanity checking
ifdef(`__OSTYPE__',,
- `errprint(`*** ERROR: No system type defined (use OSTYPE macro)')')
+ `errprint(`*** ERROR: No system type defined (use OSTYPE macro)
+')')
# pick our default mailers
ifdef(`confSMTP_MAILER',, `define(`confSMTP_MAILER', `esmtp')')
@@ -37,16 +39,15 @@ define(`_LOCAL_', `confLOCAL_MAILER')dnl for readability only
define(`_RELAY_', `confRELAY_MAILER')dnl for readability only
define(`_UUCP_', `confUUCP_MAILER')dnl for readability only
-# set our default hashed database type
-ifdef(`DATABASE_MAP_TYPE',, `define(`DATABASE_MAP_TYPE', `hash')')
-
# back compatibility with old config files
ifdef(`confDEF_GROUP_ID',
- `errprint(`*** confDEF_GROUP_ID is obsolete.')
- errprint(` Use confDEF_USER_ID with a colon in the value instead.')')
+`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.')
- errprint(` Use individual confTO_<timeout> parameters instead.')')
+`errprint(`*** confREAD_TIMEOUT is obsolete.
+ Use individual confTO_<timeout> parameters instead.
+')')
ifdef(`confMESSAGE_TIMEOUT',
`define(`_ARG_', index(confMESSAGE_TIMEOUT, /))
ifelse(_ARG_, -1,
@@ -56,17 +57,36 @@ ifdef(`confMESSAGE_TIMEOUT',
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.')
- errprint(` Use confMAX_MESSAGE_SIZE for the second part of the value.')')')
+`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=$2', `#O $1`'ifelse($3, `',, `=$3')')')dnl
+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', `"550 Relaying denied"')')
divert(0)dnl
-# override file safeties - setting this option compromises system security
-# need to set this now for the sake of class files
-_OPTION(DontBlameSendmail, `confDONT_BLAME_SENDMAIL', safe)
+# 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 #
@@ -82,8 +102,6 @@ Fw`'confCW_FILE',
# ... `define' this only if sendmail cannot automatically determine your domain
ifdef(`confDOMAIN_NAME', `Dj`'confDOMAIN_NAME', `#Dj$w.Foo.COM')
-ifdef(`_NULL_CLIENT_ONLY_', `divert(-1)')dnl
-
CP.
ifdef(`UUCP_RELAY',
@@ -129,44 +147,13 @@ C..
# a class with just a left bracket (for identifying domain literals)
C[[
-ifdef(`MAILER_TABLE', `dnl
-# Mailer table (overriding domains)
-Kmailertable MAILER_TABLE',
-`dnl')
-
-ifdef(`DOMAIN_TABLE', `dnl
-# Domain table (adding domains)
-Kdomaintable DOMAIN_TABLE',
-`dnl')
-
-ifdef(`GENERICS_TABLE', `dnl
-# Generics table (mapping outgoing addresses)
-Kgenerics GENERICS_TABLE',
-`dnl')
-
-ifdef(`UUDOMAIN_TABLE', `dnl
-# UUCP domain table
-Kuudomain UUDOMAIN_TABLE',
-`dnl')
-
-ifdef(`BITDOMAIN_TABLE', `dnl
-# BITNET mapping table
-Kbitdomain BITDOMAIN_TABLE',
-`dnl')
-
-ifdef(`VIRTUSER_TABLE', `dnl
-# Virtual user table (maps incoming users)
-Kvirtuser VIRTUSER_TABLE',
-`dnl')
-
-ifdef(`ACCESS_TABLE', `dnl
-# Access list database (for spam stomping)
-Kaccess ACCESS_TABLE',
-`dnl')
-
-ifdef(`_RELAY_MX_SERVED_', `dnl
-# MX map (to allow relaying to hosts that we MX for)
-Kmxserved bestmx -z: -T<TEMP>',
+ifdef(`_ACCESS_TABLE_', `dnl
+# access_db acceptance class
+C{Accept}OK RELAY
+ifdef(`_DELAY_CHECKS_',`dnl
+ifdef(`_BLACKLIST_RCPT_',`dnl
+# possible access_db RHS for spam friends/haters
+C{SpamTag}SPAMFRIEND SPAMHATER')')',
`dnl')
ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',`dnl',`dnl
@@ -178,6 +165,24 @@ ifdef(`confCR_FILE', `dnl
FR`'confCR_FILE',
`dnl')
+define(`TLS_SRV_TAG', `TLS_Srv')dnl
+define(`TLS_CLT_TAG', `TLS_Clt')dnl
+define(`TLS_TRY_TAG', `Try_TLS')dnl
+define(`TLS_OFF_TAG', `Offer_TLS')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
+# possible values for tls_connect 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')
+
# who I send unqualified names to (null means deliver locally)
DR`'ifdef(`LOCAL_RELAY', LOCAL_RELAY)
@@ -189,12 +194,12 @@ Kdequote dequote
divert(0)dnl # end of nullclient diversion
# class E: names that should be exposed as from this host, even if we masquerade
-ifdef(`_NULL_CLIENT_ONLY_', `#',
-`# class L: names that should be delivered locally, even if we have a relay
+# 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
-')CE root
undivert(5)dnl
+ifdef(`_VIRTHOSTS_', `CR$={VirtHost}', `dnl')
# who I masquerade as (null for no masquerading) (see also $=M)
DM`'ifdef(`MASQUERADE_NAME', MASQUERADE_NAME)
@@ -202,7 +207,7 @@ DM`'ifdef(`MASQUERADE_NAME', MASQUERADE_NAME)
# my name for error messages
ifdef(`confMAILER_NAME', `Dn`'confMAILER_NAME', `#DnMAILER-DAEMON')
-undivert(6)dnl
+undivert(6)dnl LOCAL_CONFIG
include(_CF_DIR_`m4/version.m4')
###############
@@ -210,148 +215,164 @@ include(_CF_DIR_`m4/version.m4')
###############
# strip message body to 7 bits on input?
-_OPTION(SevenBitInput, `confSEVEN_BIT_INPUT')
+_OPTION(SevenBitInput, `confSEVEN_BIT_INPUT', `False')
# 8-bit data handling
-_OPTION(EightBitMode, `confEIGHT_BIT_HANDLING', adaptive)
+_OPTION(EightBitMode, `confEIGHT_BIT_HANDLING', `adaptive')
-ifdef(`_NULL_CLIENT_ONLY_', `dnl', `
# wait for alias file rebuild (default units: minutes)
-_OPTION(AliasWait, `confALIAS_WAIT', 5m)
+_OPTION(AliasWait, `confALIAS_WAIT', `5m')
# location of alias file
-_OPTION(AliasFile, `ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/aliases, /etc/aliases))
-')
+_OPTION(AliasFile, `ALIAS_FILE', `MAIL_SETTINGS_DIR`'aliases')
+
# minimum number of free blocks on filesystem
-_OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', 100)
+_OPTION(MinFreeBlocks, `confMIN_FREE_BLOCKS', `100')
# maximum message size
-_OPTION(MaxMessageSize, `confMAX_MESSAGE_SIZE', 1000000)
+_OPTION(MaxMessageSize, `confMAX_MESSAGE_SIZE', `1000000')
# substitution for space (blank) characters
-_OPTION(BlankSub, `confBLANK_SUB', _)
+_OPTION(BlankSub, `confBLANK_SUB', `_')
# avoid connecting to "expensive" mailers on initial submission?
-_OPTION(HoldExpensive, `confCON_EXPENSIVE')
+_OPTION(HoldExpensive, `confCON_EXPENSIVE', `False')
# checkpoint queue runs after every N successful deliveries
-_OPTION(CheckpointInterval, `confCHECKPOINT_INTERVAL', 10)
+_OPTION(CheckpointInterval, `confCHECKPOINT_INTERVAL', `10')
# default delivery mode
-_OPTION(DeliveryMode, `confDELIVERY_MODE', background)
+_OPTION(DeliveryMode, `confDELIVERY_MODE', `background')
# automatically rebuild the alias database?
-_OPTION(AutoRebuildAliases, `confAUTO_REBUILD')
+# NOTE: There is a potential for a denial of service attack if this is set.
+# This option is deprecated and will be removed from a future version.
+_OPTION(AutoRebuildAliases, `confAUTO_REBUILD', `False')
# error message header/file
-_OPTION(ErrorHeader, `confERROR_MESSAGE', ifdef(`_USE_ETC_MAIL_', /etc/mail/error-header, /etc/sendmail.oE))
+_OPTION(ErrorHeader, `confERROR_MESSAGE', `MAIL_SETTINGS_DIR`'error-header')
# error mode
-_OPTION(ErrorMode, `confERROR_MODE', print)
+_OPTION(ErrorMode, `confERROR_MODE', `print')
# save Unix-style "From_" lines at top of header?
-_OPTION(SaveFromLine, `confSAVE_FROM_LINES')
+_OPTION(SaveFromLine, `confSAVE_FROM_LINES', `False')
# temporary file mode
-_OPTION(TempFileMode, `confTEMP_FILE_MODE', 0600)
+_OPTION(TempFileMode, `confTEMP_FILE_MODE', `0600')
# match recipients against GECOS field?
-_OPTION(MatchGECOS, `confMATCH_GECOS')
+_OPTION(MatchGECOS, `confMATCH_GECOS', `False')
# maximum hop count
-_OPTION(MaxHopCount, `confMAX_HOP', 17)
+_OPTION(MaxHopCount, `confMAX_HOP', `17')
# location of help file
-O HelpFile=ifdef(`HELP_FILE', HELP_FILE, ifdef(`_USE_ETC_MAIL_', /etc/mail/helpfile, /usr/lib/sendmail.hf))
+O HelpFile=ifdef(`HELP_FILE', HELP_FILE, `MAIL_SETTINGS_DIR`'helpfile')
# ignore dots as terminators in incoming messages?
-_OPTION(IgnoreDots, `confIGNORE_DOTS')
+_OPTION(IgnoreDots, `confIGNORE_DOTS', `False')
# name resolver options
-_OPTION(ResolverOptions, `confBIND_OPTS', +AAONLY)
+_OPTION(ResolverOptions, `confBIND_OPTS', `+AAONLY')
# deliver MIME-encapsulated error messages?
-_OPTION(SendMimeErrors, `confMIME_FORMAT_ERRORS')
+_OPTION(SendMimeErrors, `confMIME_FORMAT_ERRORS', `True')
# Forward file search path
-_OPTION(ForwardPath, `confFORWARD_PATH', /var/forward/$u:$z/.forward.$w:$z/.forward)
+_OPTION(ForwardPath, `confFORWARD_PATH', `/var/forward/$u:$z/.forward.$w:$z/.forward')
# open connection cache size
-_OPTION(ConnectionCacheSize, `confMCI_CACHE_SIZE', 2)
+_OPTION(ConnectionCacheSize, `confMCI_CACHE_SIZE', `2')
# open connection cache timeout
-_OPTION(ConnectionCacheTimeout, `confMCI_CACHE_TIMEOUT', 5m)
+_OPTION(ConnectionCacheTimeout, `confMCI_CACHE_TIMEOUT', `5m')
# persistent host status directory
-_OPTION(HostStatusDirectory, `confHOST_STATUS_DIRECTORY', .hoststat)
+_OPTION(HostStatusDirectory, `confHOST_STATUS_DIRECTORY', `.hoststat')
# single thread deliveries (requires HostStatusDirectory)?
-_OPTION(SingleThreadDelivery, `confSINGLE_THREAD_DELIVERY')
+_OPTION(SingleThreadDelivery, `confSINGLE_THREAD_DELIVERY', `False')
# use Errors-To: header?
-_OPTION(UseErrorsTo, `confUSE_ERRORS_TO')
+_OPTION(UseErrorsTo, `confUSE_ERRORS_TO', `False')
# log level
-_OPTION(LogLevel, `confLOG_LEVEL', 10)
+_OPTION(LogLevel, `confLOG_LEVEL', `10')
# send to me too, even in an alias expansion?
-_OPTION(MeToo, `confME_TOO')
+_OPTION(MeToo, `confME_TOO', `True')
# verify RHS in newaliases?
-_OPTION(CheckAliases, `confCHECK_ALIASES')
+_OPTION(CheckAliases, `confCHECK_ALIASES', `False')
# default messages to old style headers if no special punctuation?
-_OPTION(OldStyleHeaders, `confOLD_STYLE_HEADERS')
+_OPTION(OldStyleHeaders, `confOLD_STYLE_HEADERS', `False')
# SMTP daemon options
-_OPTION(DaemonPortOptions, `confDAEMON_OPTIONS', Port=esmtp)
+ifelse(defn(`confDAEMON_OPTIONS'), `', `dnl',
+`errprint(WARNING: `confDAEMON_OPTIONS' is no longer valid. See cf/README for more information.
+)'dnl
+`DAEMON_OPTIONS(`confDAEMON_OPTIONS')')
+ifelse(defn(`_DPO_'), `', `O DaemonPortOptions=Name=MTA', `_DPO_')
+ifdef(`_NO_MSA_', `dnl', `O DaemonPortOptions=Port=587, Name=MSA, M=E')
+
+# SMTP client options
+_OPTION(ClientPortOptions, `confCLIENT_OPTIONS', `Address=0.0.0.0')
# privacy flags
-_OPTION(PrivacyOptions, `confPRIVACY_FLAGS', authwarnings)
+_OPTION(PrivacyOptions, `confPRIVACY_FLAGS', `authwarnings')
# who (if anyone) should get extra copies of error messages
-_OPTION(PostMasterCopy, `confCOPY_ERRORS_TO', Postmaster)
+_OPTION(PostmasterCopy, `confCOPY_ERRORS_TO', `Postmaster')
# slope of queue-only function
-_OPTION(QueueFactor, `confQUEUE_FACTOR', 600000)
+_OPTION(QueueFactor, `confQUEUE_FACTOR', `600000')
# queue directory
-O QueueDirectory=ifdef(`QUEUE_DIR', QUEUE_DIR, /var/spool/mqueue)
+O QueueDirectory=ifdef(`QUEUE_DIR', QUEUE_DIR, `/var/spool/mqueue')
# timeouts (many of these)
-_OPTION(Timeout.initial, `confTO_INITIAL', 5m)
-_OPTION(Timeout.connect, `confTO_CONNECT', 5m)
-_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', 30s)
-_OPTION(Timeout.fileopen, `confTO_FILEOPEN', 60s)
-_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.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.hoststatus, `confTO_HOSTSTATUS', 30m)
+_OPTION(Timeout.initial, `confTO_INITIAL', `5m')
+_OPTION(Timeout.connect, `confTO_CONNECT', `5m')
+_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.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.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')
# should we not prune routes in route-addr syntax addresses?
-_OPTION(DontPruneRoutes, `confDONT_PRUNE_ROUTES')
+_OPTION(DontPruneRoutes, `confDONT_PRUNE_ROUTES', `False')
# queue up everything before forking?
-_OPTION(SuperSafe, `confSAFE_QUEUE')
+_OPTION(SuperSafe, `confSAFE_QUEUE', `True')
# status file
-O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/statistics, /etc/sendmail.st))
+O StatusFile=ifdef(`STATUS_FILE', `STATUS_FILE', `MAIL_SETTINGS_DIR`'statistics')
# time zone handling:
# if undefined, use system default
@@ -362,125 +383,185 @@ ifelse(confTIME_ZONE, `USE_SYSTEM', `#O TimeZoneSpec=',
`O TimeZoneSpec=confTIME_ZONE')
# default UID (can be username or userid:groupid)
-_OPTION(DefaultUser, `confDEF_USER_ID', mailnull)
+_OPTION(DefaultUser, `confDEF_USER_ID', `mailnull')
# list of locations of user database file (null means no lookup)
-_OPTION(UserDatabaseSpec, `confUSERDB_SPEC', ifdef(`_USE_ETC_MAIL_', /etc/mail/userdb, /etc/userdb))
+_OPTION(UserDatabaseSpec, `confUSERDB_SPEC', `MAIL_SETTINGS_DIR`'userdb')
# fallback MX host
-_OPTION(FallbackMXhost, `confFALLBACK_MX', fall.back.host.net)
+_OPTION(FallbackMXhost, `confFALLBACK_MX', `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')
+_OPTION(TryNullMXList, `confTRY_NULL_MX_LIST', `False')
# load average at which we just queue messages
-_OPTION(QueueLA, `confQUEUE_LA', 8)
+_OPTION(QueueLA, `confQUEUE_LA', `8')
# load average at which we refuse connections
-_OPTION(RefuseLA, `confREFUSE_LA', 12)
+_OPTION(RefuseLA, `confREFUSE_LA', `12')
# maximum number of children we allow at one time
-_OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', 12)
+_OPTION(MaxDaemonChildren, `confMAX_DAEMON_CHILDREN', `12')
# maximum number of new connections per second
-_OPTION(ConnectionRateThrottle, `confCONNECTION_RATE_THROTTLE', 3)
+_OPTION(ConnectionRateThrottle, `confCONNECTION_RATE_THROTTLE', `3')
# work recipient factor
-_OPTION(RecipientFactor, `confWORK_RECIPIENT_FACTOR', 30000)
+_OPTION(RecipientFactor, `confWORK_RECIPIENT_FACTOR', `30000')
# deliver each queued job in a separate process?
-_OPTION(ForkEachJob, `confSEPARATE_PROC')
+_OPTION(ForkEachJob, `confSEPARATE_PROC', `False')
# work class factor
-_OPTION(ClassFactor, `confWORK_CLASS_FACTOR', 1800)
+_OPTION(ClassFactor, `confWORK_CLASS_FACTOR', `1800')
# work time factor
-_OPTION(RetryFactor, `confWORK_TIME_FACTOR', 90000)
+_OPTION(RetryFactor, `confWORK_TIME_FACTOR', `90000')
# shall we sort the queue by hostname first?
-_OPTION(QueueSortOrder, `confQUEUE_SORT_ORDER', priority)
+_OPTION(QueueSortOrder, `confQUEUE_SORT_ORDER', `priority')
# minimum time in queue before retry
-_OPTION(MinQueueAge, `confMIN_QUEUE_AGE', 30m)
+_OPTION(MinQueueAge, `confMIN_QUEUE_AGE', `30m')
# default character set
-_OPTION(DefaultCharSet, `confDEF_CHAR_SET', iso-8859-1)
+_OPTION(DefaultCharSet, `confDEF_CHAR_SET', `iso-8859-1')
# service switch file (ignored on Solaris, Ultrix, OSF/1, others)
-_OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', ifdef(`_USE_ETC_MAIL_', /etc/mail/service.switch, /etc/service.switch))
+_OPTION(ServiceSwitchFile, `confSERVICE_SWITCH_FILE', `MAIL_SETTINGS_DIR`'service.switch')
# hosts file (normally /etc/hosts)
-_OPTION(HostsFile, `confHOSTS_FILE', /etc/hosts)
+_OPTION(HostsFile, `confHOSTS_FILE', `/etc/hosts')
# dialup line delay on connection failure
-_OPTION(DialDelay, `confDIAL_DELAY', 10s)
+_OPTION(DialDelay, `confDIAL_DELAY', `10s')
# action to take if there are no recipients in the message
-_OPTION(NoRecipientAction, `confNO_RCPT_ACTION', add-to-undisclosed)
+_OPTION(NoRecipientAction, `confNO_RCPT_ACTION', `add-to-undisclosed')
# chrooted environment for writing to files
-_OPTION(SafeFileEnvironment, `confSAFE_FILE_ENV', /arch)
+_OPTION(SafeFileEnvironment, `confSAFE_FILE_ENV', `/arch')
# are colons OK in addresses?
-_OPTION(ColonOkInAddr, `confCOLON_OK_IN_ADDR')
+_OPTION(ColonOkInAddr, `confCOLON_OK_IN_ADDR', `True')
# how many jobs can you process in the queue?
-_OPTION(MaxQueueRunSize, `confMAX_QUEUE_RUN_SIZE', 10000)
+_OPTION(MaxQueueRunSize, `confMAX_QUEUE_RUN_SIZE', `10000')
# shall I avoid expanding CNAMEs (violates protocols)?
-_OPTION(DontExpandCnames, `confDONT_EXPAND_CNAMES')
+_OPTION(DontExpandCnames, `confDONT_EXPAND_CNAMES', `False')
# SMTP initial login message (old $e macro)
-_OPTION(SmtpGreetingMessage, `confSMTP_LOGIN_MSG')
+_OPTION(SmtpGreetingMessage, `confSMTP_LOGIN_MSG', `$j Sendmail $v ready at $b')
# UNIX initial From header format (old $l macro)
-_OPTION(UnixFromLine, `confFROM_LINE')
+_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)
+_OPTION(SingleLineFromHeader, `confSINGLE_LINE_FROM_HEADER', `False')
# Allow HELO SMTP command that does not `include' a host name
-_OPTION(AllowBogusHELO, `confALLOW_BOGUS_HELO', False)
+_OPTION(AllowBogusHELO, `confALLOW_BOGUS_HELO', `False')
# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
-_OPTION(MustQuoteChars, `confMUST_QUOTE_CHARS', .)
+_OPTION(MustQuoteChars, `confMUST_QUOTE_CHARS', `.')
# delimiter (operator) characters (old $o macro)
-_OPTION(OperatorChars, `confOPERATORS')
+_OPTION(OperatorChars, `confOPERATORS', `.:@[]')
# shall I avoid calling initgroups(3) because of high NIS costs?
-_OPTION(DontInitGroups, `confDONT_INIT_GROUPS')
+_OPTION(DontInitGroups, `confDONT_INIT_GROUPS', `False')
# are group-writable `:include:' and .forward files (un)trustworthy?
-_OPTION(UnsafeGroupWrites, `confUNSAFE_GROUP_WRITES')
+_OPTION(UnsafeGroupWrites, `confUNSAFE_GROUP_WRITES', `True')
# where do errors that occur when sending errors get sent?
-_OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS', postmaster)
+_OPTION(DoubleBounceAddress, `confDOUBLE_BOUNCE_ADDRESS', `postmaster')
+
+# 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)
+_OPTION(RunAsUser, `confRUN_AS_USER', `sendmail')
# maximum number of recipients per SMTP envelope
-_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', 100)
+_OPTION(MaxRecipientsPerMessage, `confMAX_RCPTS_PER_MESSAGE', `100')
# shall we get local names from our installed interfaces?
-_OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES')
+_OPTION(DontProbeInterfaces, `confDONT_PROBE_INTERFACES', `False')
-ifdef(`confTRUSTED_USER',
-`# Trusted user for file ownership and starting the daemon
-O TrustedUser=confTRUSTED_USER
-')
-ifdef(`confCONTROL_SOCKET_NAME',
-`# Control socket for daemon management
-O ControlSocketName=confCONTROL_SOCKET_NAME
-')
-ifdef(`confMAX_MIME_HEADER_LENGTH',
-`# Maximum MIME header length to protect MUAs
-O MaxMimeHeaderLength=confMAX_MIME_HEADER_LENGTH
-')
-ifdef(`confMAX_HEADERS_LENGTH',
-`# Maximum length of the sum of all headers
-O MaxHeadersLength=confMAX_HEADERS_LENGTH
+# 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')
+
+# list of authentication mechanisms
+_OPTION(AuthMechanisms, `confAUTH_MECHANISMS', `GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5')
+
+# default authentication information for outgoing connections
+_OPTION(DefaultAuthInfo, `confDEF_AUTH_INFO', `MAIL_SETTINGS_DIR`'default-auth-info')
+
+# SMTP AUTH flags
+_OPTION(AuthOptions, `confAUTH_OPTIONS', `')
+
+ifdef(`_FFR_MILTER', `
+# Input mail filters
+_OPTION(InputMailFilters, `confINPUT_MAIL_FILTERS', `')
+
+# Milter options
+_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', `')')
+
+# 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', `')
+# 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', `')
+
+ifdef(`confQUEUE_FILE_MODE',
+`# queue file mode (qf files)
+O QueueFileMode=confQUEUE_FILE_MODE
')
###########################
@@ -498,7 +579,7 @@ Pjunk=-100
#####################
# this is equivalent to setting class "t"
-ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, ifdef(`_USE_ETC_MAIL_', `/etc/mail/trusted-users', `/etc/sendmail.ct'))
+ifdef(`_USE_CT_FILE_', `', `#')Ft`'ifdef(`confCT_FILE', confCT_FILE, `MAIL_SETTINGS_DIR`'trusted-users')
Troot
Tdaemon
ifdef(`_NO_UUCP_', `dnl', `Tuucp')
@@ -520,9 +601,7 @@ H?x?Full-Name: $x
# H?l?Received-Date: $b
H?M?Resent-Message-Id: <$t.$i@$j>
H?M?Message-Id: <$t.$i@$j>
-ifdef(`_NULL_CLIENT_ONLY_',
- `include(_CF_DIR_`'m4/nullrelay.m4)m4exit',
- `dnl')
+
#
######################################################################
######################################################################
@@ -535,7 +614,7 @@ ifdef(`_NULL_CLIENT_ONLY_',
############################################
### Ruleset 3 -- Name Canonicalization ###
############################################
-S3
+Scanonify=3
# handle null input (translate to <@> special case)
R$@ $@ <@>
@@ -546,7 +625,7 @@ R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
R@ $* <@> $: @ $1 unmark @host:...
R$* :: $* <@> $: $1 :: $2 unmark node::addr
R:`include': $* <@> $: :`include': $1 unmark :`include':...
-R$* [ $* : $* ] <@> $: $1 [ $2 : $3 ] unmark IPv6 addrs
+R$* [ IPv6 $- ] <@> $: $1 [ IPv6 $2 ] unmark IPv6 addr
R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
R$* : $* <@> $: $2 strip colon if marked
R$* <@> $: $1 unmark
@@ -563,71 +642,84 @@ 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
-R@ $+ : $+ $@ $>96 < @$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
+R@ $+ : $+ $2
+dnl')
# find focus for list syntax
-R $+ : $* ; @ $+ $@ $>96 $1 : $2 ; < @ $3 > 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$+ < @ $+ > $@ $>96 $1 < @ $2 > already canonical
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
# do some sanity checking
R$* < @ $* : $* > $* $1 < @ $2 $3 > $4 nix colons in addrs
ifdef(`_NO_UUCP_', `dnl',
`# convert old-style addresses to a domain-based address
-R$- ! $+ $@ $>96 $2 < @ $1 .UUCP > resolve uucp names
-R$+ . $- ! $+ $@ $>96 $3 < @ $1 . $2 > domain uucps
-R$+ ! $+ $@ $>96 $2 < @ $1 .UUCP > uucp subdomains
+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$- :: $+ $@ $>96 $2 < @ $1 .DECNET > resolve DECnet names
-R$- . $- :: $+ $@ $>96 $3 < @ $1.$2 .DECNET > numeric DECnet addr
+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$* @ $* $@ $>96 $1 < @ $2 > Insert < > and finish
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
# else we must be a local name
-R$* $@ $>96 $1
+R$* $@ $>Canonify2 $1
################################################
### Ruleset 96 -- bottom half of ruleset 3 ###
################################################
-S96
+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 IPv6 domain literal (save quoted form)
+R$* < @ [ IPv6 $- ] > $* $: $2 $| $1 < @@ [ $(dequote $2 $) ] > $3 mark IPv6 addr
+R$- $| $* < @@ $=w > $* $: $2 < @ $j . > $4 self-literal
+R$- $| $* < @@ [ $+ ] > $* $@ $2 < @ [ IPv6 $1 ] > $4 canon IP addr
+
+# check for IPv4 domain literal
R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [a.b.c.d]
R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
-ifdef(`DOMAIN_TABLE', `dnl
+ifdef(`_DOMAIN_TABLE_', `dnl
# look up domains in the domain table
R$* < @ $+ > $* $: $1 < @ $(domaintable $2 $) > $3', `dnl')
-undivert(2)dnl
+undivert(2)dnl LOCAL_RULE_3
-ifdef(`BITDOMAIN_TABLE', `dnl
+ifdef(`_BITDOMAIN_TABLE_', `dnl
# handle BITNET mapping
R$* < @ $+ .BITNET > $* $: $1 < @ $(bitdomain $2 $: $2.BITNET $) > $3', `dnl')
-ifdef(`UUDOMAIN_TABLE', `dnl
+ifdef(`_UUDOMAIN_TABLE_', `dnl
# handle UUCP mapping
R$* < @ $+ .UUCP > $* $: $1 < @ $(uudomain $2 $: $2.UUCP $) > $3', `dnl')
@@ -652,31 +744,69 @@ ifdef(`_NO_CANONIFY_', `dnl', `dnl
R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3')
')')
-ifdef(`_NO_CANONIFY_', `dnl', `dnl
+# 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)
+R$* CC $* $| $* $: $3
# pass to name server to make hostname canonical
-R$* < @ $* $~P > $* $: $1 < @ $[ $2 $3 $] > $4')
+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
-R$* < @ $j > $* $: $1 < @ $j . > $2
ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
`R$* < @ $* $=M > $* $: $1 < @ $2 $3 . > $4',
`R$* < @ $=M > $* $: $1 < @ $2 . > $3')
-R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+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')
+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 ###
##################################################
-S4
+Sfinal=4
R$* <@> $@ handle <> and list:;
# strip trailing dot off possibly canonical name
R$* < @ $+ . > $* $1 < @ $2 > $3
-# eliminate internal code -- should never get this far!
+# eliminate internal code
R$* < @ *LOCAL* > $* $1 < @ $j > $2
# externalize local domain info
@@ -702,20 +832,20 @@ R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
### (used for recursive calls) ###
##############################################################
-S`'97
-R$* $: $>3 $1
-R$* $@ $>0 $1
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
######################################
### Ruleset 0 -- Parse Address ###
######################################
-S0
+Sparse=0
R$* $: $>Parse0 $1 initial parsing
R<@> $#_LOCAL_ $: <@> special case error msgs
-R$* $: $>98 $1 handle local hacks
+R$* $: $>ParseLocal $1 handle local hacks
R$* $: $>Parse1 $1 final parsing
#
@@ -727,26 +857,28 @@ R$* $: $>Parse1 $1 final parsing
SParse0
R<@> $@ <@> special case error msgs
-R$* : $* ; <@> $#error $@ 5.1.3 $: "List:; syntax illegal for recipient addresses"
-#R@ <@ $* > < @ $1 > catch "@@host" bogosity
-R<@ $+> $#error $@ 5.1.3 $: "User address required"
+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$* $: <> $1
R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
-R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "Colon illegal in host name part"
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
R<> $* $1
-R$* < @ . $* > $* $#error $@ 5.1.2 $: "Invalid host name"
-R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "Invalid host name"
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+dnl comma only allowed before @; this check is not complete
+R$* , $~O $* $#error $@ 5.1.2 $: "553 Invalid route address"
# now delete the local info -- note $=O to find characters that cause forwarding
-R$* < @ > $* $@ $>Parse0 $>3 $1 user@ => user
-R< @ $=w . > : $* $@ $>Parse0 $>3 $2 @here:... -> ...
+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 $: "User address required"
-R$* $=O $* < @ $=w . > $@ $>Parse0 $>3 $1 $2 $3 ...@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 $: "User address required"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
R$* $=O $* < @ *LOCAL* >
- $@ $>Parse0 $>3 $1 $2 $3 ...@*LOCAL* -> ...
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
R$* < @ *LOCAL* > $: $1
#
@@ -754,64 +886,90 @@ R$* < @ *LOCAL* > $: $1
#
SParse1
+ifdef(`_LDAP_ROUTING_', `dnl
+# handle LDAP routing for hosts in $={LDAPRoute}
+R$+ < @ $={LDAPRoute} . > $: $>LDAPExpand <$1 < @ $2 . >> <$1 @ $2>',
+`dnl')
+
+
ifdef(`_MAILER_smtp_',
`# handle numeric address spec
-R$* < @ [ $+ ] > $* $: $>98 $1 < @ [ $2 ] > $3 numeric internet spec
-R$* < @ [ $+ ] > $* $#_SMTP_ $@ [$2] $: $1 < @ [$2] > $3 still numeric: send',
+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$* < @ [ IPv6 $- ] : > $*
+ $#_SMTP_ $@ [ $(dequote $2 $) ] $: $1 < @ [IPv6 $2 ] > $3 no smarthost: send
+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
+ifdef(`_VIRTUSER_TABLE_', `dnl
# handle virtual users
-R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
+R$+ $: <!> $1 Mark for lookup
+ifdef(`_VIRTUSER_ENTIRE_DOMAIN_',
+`R<!> $+ < @ $* $={VirtHost} . > $: < $(virtuser $1 @ $2 $3 $@ $1 $: @ $) > $1 < @ $2 $3 . >',
+`R<!> $+ < @ $={VirtHost} . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >')
+R<!> $+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
R<@> $+ + $* < @ $* . >
- $: < $(virtuser $1 + * @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
+ $: < $(virtuser $1 + * @ $3 $@ $1 $@ $2 $: @ $) > $1 + $2 < @ $3 . >
R<@> $+ + $* < @ $* . >
$: < $(virtuser $1 @ $3 $@ $1 $: @ $) > $1 + $2 < @ $3 . >
+dnl try default entry: @domain
+dnl +*@domain
+R<@> $+ + $+ < @ $+ . > $: < $(virtuser + * @ $3 $@ $1 $@ $2 $: @ $) > $1 + $2 < @ $3 . >
+dnl @domain if +detail exists
+R<@> $+ + $* < @ $+ . > $: < $(virtuser @ $3 $@ $1 $@ $2 $: @ $) > $1 + $2 < @ $3 . >
+dnl without +detail (or no match)
R<@> $+ < @ $+ . > $: < $(virtuser @ $2 $@ $1 $: @ $) > $1 < @ $2 . >
R<@> $+ $: $1
+R<!> $+ $: $1
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2
-R< $+ > $+ < @ $+ > $: $>97 $1',
+R< $+ > $+ < @ $+ > $: $>Recurse $1',
`dnl')
# short circuit local delivery so forwarded email works
ifdef(`_MAILER_usenet_', `dnl
-R$+ . USENET < @ $=w . > $#usenet $: $1 handle usenet specially', `dnl')
+R$+ . USENET < @ $=w . > $#usenet $@ usenet $: $1 handle usenet specially', `dnl')
ifdef(`_STICKY_LOCAL_DOMAIN_',
`R$+ < @ $=w . > $: < $H > $1 < @ $2 . > first try hub
-R< $+ > $+ < $+ > $>95 < $1 > $2 < $3 > yep ....
+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$=L < @ $=w . > $#_LOCAL_ $: @ $1 special local names
R$+ < @ $=w . > $#_LOCAL_ $: $1 regular local name')
-ifdef(`MAILER_TABLE', `dnl
+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
-R< $~[ : $* > $* $>95 < $1 : $2 > $3 check -- resolved?
-R< $+ > $* $: $>90 <$1> $2 try domain',
+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
+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 . > $* $: $>95 < $V > $1 <@$2.UUCP.> $3',
+`R$* < @ $=V . UUCP . > $* $: $>MailerToTriple < $V > $1 <@$2.UUCP.> $3',
`dnl')
ifdef(`_CLASS_W_',
-`R$* < @ $=W . UUCP . > $* $: $>95 < $W > $1 <@$2.UUCP.> $3',
+`R$* < @ $=W . UUCP . > $* $: $>MailerToTriple < $W > $1 <@$2.UUCP.> $3',
`dnl')
ifdef(`_CLASS_X_',
-`R$* < @ $=X . UUCP . > $* $: $>95 < $X > $1 <@$2.UUCP.> $3',
+`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.>$* $: $>95 < $B > $1 <@$2.BITNET.> $3 user@host.BITNET',
+`R$*<@$+.BITNET.>$* $: $>MailerToTriple < $B > $1 <@$2.BITNET.> $3 user@host.BITNET',
`dnl')
ifdef(`DECNET_RELAY',
-`R$*<@$+.DECNET.>$* $: $>95 < $C > $1 <@$2.DECNET.> $3 user@host.DECNET',
+`R$*<@$+.DECNET.>$* $: $>MailerToTriple < $C > $1 <@$2.DECNET.> $3 user@host.DECNET',
`dnl')
ifdef(`_MAILER_pop_',
`R$+ < @ POP. > $#pop $: $1 user@POP',
@@ -819,19 +977,19 @@ ifdef(`_MAILER_pop_',
ifdef(`_MAILER_fax_',
`R$+ < @ $+ .FAX. > $#fax $@ $2 $: $1 user@host.FAX',
`ifdef(`FAX_RELAY',
-`R$*<@$+.FAX.>$* $: $>95 < $F > $1 <@$2.FAX.> $3 user@host.FAX',
+`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.>$* $: $>95 < $Y > $1 <@$2.UUCP.> $3 uucp mail',
+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 $: $1',
+R$+ . USENET $#usenet $@ usenet $: $1',
`dnl')
ifdef(`_LOCAL_RULES_',
@@ -839,22 +997,26 @@ ifdef(`_LOCAL_RULES_',
undivert(1)', `dnl')
# pass names that still have a host to a smarthost (if defined)
-R$* < @ $* > $* $: $>95 < $S > $1 < @ $2 > $3 glue on smarthost name
+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 $: "Unrecognized host name " $2')
+`R$* < @$* > $* $#_SMTP_ $@ $2 $: $1 < @ $2 > $3 user@host.domain',
+`R$* < @$* > $* $#error $@ 5.1.2 $: "553 Unrecognized host name " $2')
# handle locally delivered names
-R$=L $#_LOCAL_ $: @ $1 special local names
+R$=L $#_LOCAL_ $: @ $1 special local names
R$+ $#_LOCAL_ $: $1 regular local names
###########################################################################
### Ruleset 5 -- special rewriting after aliases have been expanded ###
###########################################################################
-S5
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
# deal with plussed users so aliases work nicely
R$+ + * $#_LOCAL_ $@ $&h $: $1
@@ -865,61 +1027,87 @@ R$+ $: <> $1
ifdef(`LUSER_RELAY', `dnl
# send unrecognized local users to a relay host
-R< > $+ $: < $L . > $(user $1 $) look up user
-R< $* > $+ <> $* $: < > $2 $3 found; strip $L
-R< $* . > $+ $: < $1 > $2 strip extra dot',
+R< > $+ $: < $L > $(user $1 $) look up user
+R< $* > $+ <> $: < > $2 found; strip $L',
`dnl')
# see if we have a relay or a hub
R< > $+ $: < $H > $1 try hub
R< > $+ $: < $R > $1 try relay
-R< > $+ $: < > < $1 $&h > nope, restore +detail
+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 : $* > $* $: $>95 < local : $1 > $2 no host extension
-R< error : $* > $* $: $>95 < error : $1 > $2 no host extension
-R< $- : $+ > $+ $: $>95 < $1 : $2 > $3 < @ $2 >
-R< $+ > $+ $@ $>95 < $1 > $2 < @ $1 >
+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 >
-ifdef(`MAILER_TABLE', `dnl
+ifdef(`_MAILER_TABLE_', `dnl
###################################################################
### Ruleset 90 -- try domain part of mailertable entry ###
+dnl input: LeftPartOfDomain <RightPartOfDomain> FullAddress
###################################################################
-S90
+SMailertable=90
+dnl shift and check
+dnl %2 is not documented in cf/README
R$* <$- . $+ > $* $: $1$2 < $(mailertable .$3 $@ $1$2 $@ $2 $) > $4
-R$* <$~[ : $* > $* $>95 < $2 : $3 > $4 check -- resolved?
-R$* < . $+ > $* $@ $>90 $1 . <$2> $3 no -- strip & try again
+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< $~[ : $* > $* $>95 < $1 : $2 > $3 "." found?
+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:text> -> error
+dnl <mailer:user@host> lp<@domain>rest -> mailer host user
+dnl <mailer:host> address -> mailer host address
+dnl <localdomain> address -> address
+dnl <[IPv6 number]> address -> relay number address
+dnl <host> address -> relay host address
###################################################################
-S95
+SMailerToTriple=95
R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
R< error : $- $+ > $* $#error $@ $(dequote $1 $) $: $2
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< [ IPv6 $+ ] > $* $#_RELAY_ $@ $(dequote $1 $) $: $2 use unqualified mailer
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< $* > < @ $+ > : $+ $@ $>97 $3
-R< $* > $+ $=O $+ < @ $+ > $@ $>97 $2 $3 $4
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
# strip trailing dot from any host name that may appear
R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
@@ -939,21 +1127,42 @@ R< $+ > $* $#_LOCAL_ $@ $2 $: $1
### Ruleset 93 -- convert header names to masqueraded form ###
###################################################################
-S93
+SMasqHdr=93
-ifdef(`GENERICS_TABLE', `dnl
+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
-R< $+ > $+ < $* > @ $: < $(generics $1 $: $) > $2 < $3 >
+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
+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< $* @ $* > $* < $* > $@ $>3 $1 @ $2 found qualified
-R< $+ > $* < $* > $: $>3 $1 @ *LOCAL* found unqualified
+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 . >
+
# special case the users that should be exposed
R$=E < @ *LOCAL* > $@ $1 < @ $j . > leave exposed
ifdef(`_MASQUERADE_ENTIRE_DOMAIN_',
@@ -976,34 +1185,95 @@ R$* < @ $+ @ $+ > $* $: $1 < @ $3 . > $4 $M is not null
### Ruleset 94 -- convert envelope names to masqueraded form ###
###################################################################
-S94
+SMasqEnv=94
ifdef(`_MASQUERADE_ENVELOPE_',
-`R$+ $@ $>93 $1',
+`R$+ $@ $>MasqHdr $1',
`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2')
###################################################################
### Ruleset 98 -- local part of ruleset zero (can be null) ###
###################################################################
-S98
-undivert(3)dnl
+SParseLocal=98
+undivert(3)dnl LOCAL_RULE_0
+
+ifdef(`_LDAP_ROUTING_', `dnl
+SLDAPExpand
+# do the LDAP lookups
+R<$+><$+> $: <$(ldapmra $2 $: $)> <$(ldapmh $2 $: $)> <$1> <$2>
+
+# if mailRoutingAddress and local or non-existant mailHost,
+# return the new mailRoutingAddress
+R< $+ > < $=w > < $+ > < $+ > $@ $>Parse0 $>canonify $1
+R< $+ > < > < $+ > < $+ > $@ $>Parse0 $>canonify $1
+
+# if mailRoutingAddress and non-local mailHost,
+# relay to mailHost with new mailRoutingAddress
+R< $+ > < $+ > < $+ > < $+ > $#_RELAY_ $@ $2 $: $>canonify $1
-ifelse(substr(confDELIVERY_MODE,0,1), `d', `errprint(`WARNING: Antispam rules not available in deferred delivery mode.')')
-ifdef(`ACCESS_TABLE', `dnl
+# 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
+R< > < $+ > <$+> <$+> $#_RELAY_ $@ $1 $: $2
+
+# if no mailRoutingAddress and no mailHost,
+# try @domain
+R< > < > <$+> <$+ @ $+> $@ $>LDAPExpand <$1> <@ $3>
+
+# if no mailRoutingAddress and no mailHost and this was a domain attempt,
+ifelse(_LDAP_ROUTING_, `_MUST_EXIST_', `dnl
+# user does not exist
+R< > < > <$+> <@ $+> $#error $@ nouser $: "550 User unknown"',
+`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
######################################################################
### 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> -- passthru (additional data passed unchanged through)
+### <$4> -- mark (must be <(!|+) single-token>)
+### ! does lookup only with tag
+### + does lookup with and without tag
+dnl returns: <default> <passthru>
+dnl <result> <passthru>
######################################################################
SLookUpDomain
-R<$+> <$+> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <$3>
-R<?> <$+.$+> <$+> <$*> $@ $>LookUpDomain <$2> <$3> <$4>
-R<?> <$+> <$+> <$*> $@ <$2> <$3>
-R<$*> <$+> <$+> <$*> $@ <$1> <$4>
+dnl remove IPv6 mark and dequote address
+dnl it is a bit ugly because it is checked on each "iteration"
+R<[IPv6 $-]> <$+> <$*> <$*> $: <[$(dequote $1 $)]> <$2> <$3> <$4>
+dnl workspace <key> <default> <passthru> <mark>
+dnl lookup with tag (in front, no delimiter here)
+R<$*> <$+> <$*> <$- $-> $: < $(access $5`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3> <$4 $5>
+dnl workspace <result-of-lookup|?> <key> <default> <passthru> <mark>
+ifdef(`_FFR_LOOKUPDOTDOMAIN', `dnl omit first component: lookup .rest
+R<?> <$+.$+> <$+> <$*> <$- $-> $: < $(access $5`'_TAG_DELIM_`'.$2 $: ? $) > <$1.$2> <$3> <$4> <$5 $6>', `dnl')
+dnl lookup without tag?
+R<?> <$+> <$+> <$*> <+ $*> $: < $(access $1 $: ? $) > <$1> <$2> <$3> <+ $4>
+ifdef(`_FFR_LOOKUPDOTDOMAIN', `dnl omit first component: lookup .rest
+R<?> <$+.$+> <$+> <$*> <+ $*> $: < $(access .$2 $: ? $) > <$1.$2> <$3> <$4> <+ $5>', `dnl')
+dnl lookup IP address (no check is done whether it is an IP number!)
+R<?> <[$+.$-]> <$+> <$*> <$*> $@ $>LookUpDomain <[$1]> <$3> <$4> <$5>
+dnl lookup IPv6 address
+R<?> <[$+:$-]> <$+> <$*> <$*> $: $>LookUpDomain <[$1]> <$3> <$4> <$5>
+dnl not found, but subdomain: try again
+R<?> <$+.$+> <$+> <$*> <$*> $@ $>LookUpDomain <$2> <$3> <$4> <$5>
+dnl not found, no subdomain: return default
+R<?> <$+> <$+> <$*> <$*> $@ <$2> <$3>
+dnl return result of lookup
+R<$*> <$+> <$+> <$*> <$*> $@ <$1> <$4>
######################################################################
### LookUpAddress -- search for host address in access database
@@ -1011,14 +1281,28 @@ R<$*> <$+> <$+> <$*> $@ <$1> <$4>
### Parameters:
### <$1> -- key (dot quadded host address)
### <$2> -- default (what to return if not found in db)
+dnl must not be empty
### <$3> -- passthru (additional data passed through)
+### <$4> -- mark (must be <(!|+) single-token>)
+### ! does lookup only with tag
+### + does lookup with and without tag
+dnl returns: <default> <passthru>
+dnl <result> <passthru>
######################################################################
SLookUpAddress
-R<$+> <$+> <$*> $: < $(access $1 $: ? $) > <$1> <$2> <$3>
-R<?> <$+.$-> <$+> <$*> $@ $>LookUpAddress <$1> <$3> <$4>
-R<?> <$+> <$+> <$*> $@ <$2> <$3>
-R<$*> <$+> <$+> <$*> $@ <$1> <$4>',
+dnl lookup with tag
+R<$+> <$+> <$*> <$- $+> $: < $(access $5`'_TAG_DELIM_`'$1 $: ? $) > <$1> <$2> <$3> <$4 $5>
+dnl lookup without tag
+R<?> <$+> <$+> <$*> <+ $+> $: < $(access $1 $: ? $) > <$1> <$2> <$3> <+ $4>
+dnl no match; IPv6: remove last part
+R<?> <$+:$-> <$+> <$*> <$*> $@ $>LookUpAddress <$1> <$3> <$4> <$5>
+dnl no match; IPv4: remove last part
+R<?> <$+.$-> <$+> <$*> <$*> $@ $>LookUpAddress <$1> <$3> <$4> <$5>
+dnl no match: return default
+R<?> <$+> <$+> <$*> <$*> $@ <$2> <$3>
+dnl match: return result
+R<$*> <$+> <$+> <$*> <$*> $@ <$1> <$4>',
`dnl')
######################################################################
@@ -1031,13 +1315,17 @@ R<$*> <$+> <$+> <$*> $@ <$1> <$4>',
###
### Returns:
### parsed address, not in source route form
+dnl user%host%host<@domain>
+dnl host!user<@domain>
######################################################################
SCanonAddr
-R$* $: $>Parse0 $>3 $1 make domain canonical
+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
@@ -1052,42 +1340,56 @@ R$* < @ $+ > : $* $3 $1 < @ $2 >
######################################################################
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: <?> 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')
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> : > $* $#error $@ 4.7.1 $: "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 workspace: <(NO|RELAY)> localpart<@domain>, where localpart contains $=O
+dnl if mark is <NO> then change it to <RELAY> if domain is "authorized"
ifdef(`_RELAY_HOSTS_ONLY_',
`R<NO> $* < @ $=R > $: <RELAY> $1 < @ $2 >
-ifdef(`ACCESS_TABLE', `dnl
+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> $* < @ $+ > $: $>LookUpDomain <$2> <NO> <$1 < @ $2 >>
+ifdef(`_ACCESS_TABLE_', `dnl
+R<NO> $* < @ $+ > $: $>LookUpDomain <$2> <NO> <$1 < @ $2 >> <+To>
R<$+> <$+> $: <$1> $2',`dnl')')
+
R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
R<$-> $* $@ $2
+
######################################################################
### check_relay -- check hostname/address on SMTP startup
######################################################################
SLocal_check_relay
-Scheck_relay
+Scheck`'_U_`'relay
R$* $: $1 $| $>"Local_check_relay" $1
R$* $| $* $| $#$* $#$3
R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
@@ -1098,30 +1400,35 @@ R$* $: < ${deliveryMode} > $1
R< d > $* $@ deferred
R< $* > $* $: $2
-ifdef(`ACCESS_TABLE', `dnl
-R$+ $| $+ $: $>LookUpDomain < $1 > <?> < $2 >
-R<?> < $+ > $: $>LookUpAddress < $1 > <?> < $1 >
-R<?> < $+ > $: $1
-R<OK> < $* > $@ OK
-R<RELAY> < $* > $@ RELAY
-R<REJECT> $* $#error $@ 5.7.1 $: "ifdef(`confREJECT_MSG', `confREJECT_MSG', `550 Access denied')"
+ifdef(`_ACCESS_TABLE_', `dnl
+R$+ $| $+ $: $>LookUpDomain < $1 > <?> < $2 > <+Connect>
+R<?> <$+> $: $>LookUpAddress < $1 > <?> < $1 > <+Connect> no: another lookup
+R<?> < $+ > $: $1 found nothing
+R<$={Accept}> < $* > $@ $1
+R<REJECT> $* $#error ifdef(`confREJECT_MSG', `$: "confREJECT_MSG"', `$@ 5.7.1 $: "550 Access denied"')
R<DISCARD> $* $#discard $: discard
-R<$+> $* $#error $@ 5.7.1 $: $1', `dnl')
-
-ifdef(`_RBL_', `dnl
-# DNS based IP address spam lists
+dnl error tag
+R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4
+R<ERROR:$+> $* $#error $: $1
+dnl generic error from access map
+R<$+> $* $#error $: $1', `dnl')
+
+ifdef(`_RBL_',`dnl
+# DNS based IP address spam list
R$* $: $&{client_addr}
-R$-.$-.$-.$- $: $(host $4.$3.$2.$1._RBL_. $: OK $)
-ROK $@ OK
-R$+ $#error $@ 5.7.1 $: "Mail from " $&{client_addr} " refused by blackhole site _RBL_"',
+R::ffff:$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $)
+R$-.$-.$-.$- $: <?> $(host $4.$3.$2.$1._RBL_. $: OK $)
+R<?>OK $: OKSOFAR
+R<?>$+ $#error $@ 5.7.1 $: "550 Mail from " $&{client_addr} " refused by blackhole site _RBL_"',
`dnl')
+undivert(8)
######################################################################
### check_mail -- check SMTP ``MAIL FROM:'' command argument
######################################################################
SLocal_check_mail
-Scheck_mail
+Scheck`'_U_`'mail
R$* $: $1 $| $>"Local_check_mail" $1
R$* $| $#$* $#$2
R$* $| $* $@ $>"Basic_check_mail" $1
@@ -1132,63 +1439,124 @@ R$* $: < ${deliveryMode} > $1
R< d > $* $@ deferred
R< $* > $* $: $2
-R<> $@ <OK>
-R$* $: <?> $>CanonAddr $1
-R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
-# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
-R<?> $* < $* $=P > $* $: <OK> $1 < @ $2 $3 > $4
-ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',
-`R<?> $* < @ $+ > $* $: <OK> $1 < @ $2 > $3 ... unresolvable OK',
-`R<?> $* < @ $+ > $* $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 > $3
-R<? $* <$->> $* < @ $+ > $*
- $: <$2> $3 < @ $4 > $5')
+# 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> $2 < @localhost >
-R<$+> $* < @localhost.$m >
- $: < ? $&{client_name} > <$1> $2 < @localhost.$m >
+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> $2 < @localhost.UUCP >')
-R<? $=w> <$+> $* <?> <$2> $3
-R<? $+> <$+> $* $#error $@ 5.5.4 $: "553 Real domain name required"
-R<?> <$+> $* $: <$1> $2')
-
-ifdef(`ACCESS_TABLE', `dnl
-# lookup localpart (user@)
-R<$+> $* < @ $+ > $* $: <USER $(access $2@ $: ? $) > <$1> $2 < @ $3 > $4
-# no match, try full address (user@domain rest)
-R<USER ?> <$+> $* < @ $* > $*
- $: <USER $(access $2@$3$4 $: ? $) > <$1> $2 < @ $3 > $4
-# no match, try address (user@domain)
-R<USER ?> <$+> $+ < @ $+ > $*
- $: <USER $(access $2@$3 $: ? $) > <$1> $2 < @ $3 > $4
-# no match, try (sub)domain (domain)
-R<USER ?> <$+> $* < @ $+ > $*
- $: $>LookUpDomain <$3> <$1> <>
-# check unqualified user in access database
-R<?> $* $: <USER $(access $1@ $: ? $) > <?> $1
+`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 $: "553 Real domain name required"
+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 > $: <OK> $1 < @ $2 $3 >
+dnl workspace <mark> CanonicalAddress where mark is ? or OK
+ifdef(`_ACCEPT_UNRESOLVABLE_DOMAINS_',
+`R<?> $* < @ $+ > $: <OK> $1 < @ $2 > ... unresolvable OK',
+`R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >')
+dnl workspace <mark> CanonicalAddress where mark is ?, 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: ?, OK, PERM, TEMP
+R<$+> $+ < @ $* > $: @<$1> <$2 < @ $3 >> $| <F:$2@$3> <U:$2@> <H:$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
-R<USER $+> <$+> $* $: <$1> $3',
-`dnl')
+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 $* $| <?> $* $: <OK> $3
+dnl remove daemon_flags
+R$* $| $* $: $2
R<?> $* $: < ? $&{client_name} > $1
R<?> $* $@ <OK> ...local unqualed ok
R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required"
...remote is not')
# check results
-R<?> $* $@ <OK>
+R<?> $* $: @ $1 mark address: nothing known about it
R<OK> $* $@ <OK>
-R<TEMP> $* $#error $@ 4.1.8 $: "451 Sender domain must resolve"
-R<PERM> $* $#error $@ 5.1.8 $: "501 Sender domain must exist"
-ifdef(`ACCESS_TABLE', `dnl
-R<RELAY> $* $@ <RELAY>
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "501 Domain of sender address " $&f " does not exist"
+ifdef(`_ACCESS_TABLE_', `dnl
+R<$={Accept}> $* $# $1
R<DISCARD> $* $#discard $: discard
-R<REJECT> $* $#error $@ 5.7.1 $: "ifdef(`confREJECT_MSG', `confREJECT_MSG', `550 Access denied')"
-R<$+> $* $#error $@ 5.7.1 $: $1 error from access db',
+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
+dnl generic error from access map
+R<$+> $* $#error $: $1 error from access db',
`dnl')
######################################################################
@@ -1196,7 +1564,7 @@ R<$+> $* $#error $@ 5.7.1 $: $1 error from access db',
######################################################################
SLocal_check_rcpt
-Scheck_rcpt
+Scheck`'_U_`'rcpt
R$* $: $1 $| $>"Local_check_rcpt" $1
R$* $| $#$* $#$2
R$* $| $* $@ $>"Basic_check_rcpt" $1
@@ -1207,6 +1575,22 @@ R$* $: < ${deliveryMode} > $1
R< d > $* $@ deferred
R< $* > $* $: $2
+ifdef(`_REQUIRE_QUAL_RCPT_', `dnl
+# require qualified recipient?
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+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$* r $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R<?> < $* > $: <$1>
+R<? $=w> < $* > $: <$1>
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Domain name required"
+dnl remove daemon_flags for other cases
+R$* $| <@> $* $: $2', `dnl')
+
ifdef(`_LOOSE_RELAY_CHECK_',`dnl
R$* $: $>CanonAddr $1
R$* < @ $* . > $1 < @ $2 > strip trailing dots',
@@ -1219,49 +1603,89 @@ R$* < @ $* > $* $: $1 < @ $2 @@ $(bestmx $2 $) > $3',
`dnl
# limit bestmx to $=B
R$* < @ $* $=B > $* $: $1 < @ $2 $3 @@ $(bestmx $2 $3 $) > $4')
-R$* $=O $* < @ $* @@ $=w . > $* $@ $>Basic_check_rcpt $1 $2 $3
+R$* $=O $* < @ $* @@ $=w . > $* $@ $>"Basic_check_rcpt" $1 $2 $3
R$* < @ $* @@ $=w . > $* $: $1 < @ $3 > $4
R$* < @ $* @@ $* > $* $: $1 < @ $2 > $4')
ifdef(`_BLACKLIST_RCPT_',`dnl
-ifdef(`ACCESS_TABLE', `dnl
+ifdef(`_ACCESS_TABLE_', `dnl
# blacklist local users or any host from receiving mail
R$* $: <?> $1
-R<?> $+ < @ $=w > $: <> <USER $1> <FULL $1@$2> <HOST $2> <$1 < @ $2 >>
-R<?> $+ < @ $* > $: <> <FULL $1@$2> <HOST $2> <$1 < @ $2 >>
-R<?> $+ $: <> <USER $1> <$1>
-R<> <USER $+> $* $: <$(access $1 $: $)> $2
-R<> <FULL $+> $* $: <$(access $1 $: $)> $2
-R<OK> <FULL $+> $* $: <$(access $1 $: $)> $2
-R<> <HOST $+> $* $: <$(access $1 $: $)> $2
-R<OK> <HOST $+> $* $: <$(access $1 $: $)> $2
-R<> <$*> $: $1
-R<OK> <$*> $: $1
-R<RELAY> <$*> $: $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@> <H:$2>
+R<?> $+ < @ $* > $: <> <$1 < @ $2 >> $| <F:$1@$2> <H:$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
+R<$={Accept}> <$*> $: @ $2 mark address as no match
+ifdef(`_DELAY_CHECKS_',`dnl
+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 $: "550 Mailbox disabled for this recipient"
-R<$+> $* $#error $@ 5.2.1 $: $1 error from access db', `dnl')', `dnl')
-
-ifdef(`_PROMISCUOUS_RELAY_', `dnl', `dnl
+R<DISCARD> $* $#discard $: discard
+dnl error tag
+R<ERROR:$-.$-.$-:$+> $* $#error $@ $1.$2.$3 $: $4
+R<ERROR:$+> $* $#error $: $1
+dnl generic error from access map
+R<$+> $* $#error $: $1 error from access db
+R@ $* $1 remove mark', `dnl')', `dnl')
+
+ifdef(`_PROMISCUOUS_RELAY_', `divert(-1)')
+# authenticated?
+dnl do this unconditionally? this requires to manage CAs carefully
+dnl just because someone has a CERT signed by a "trusted" CA
+dnl does not mean we want to allow relaying for her,
+dnl either use a subroutine or provide something more sophisticated
+dnl this could for example check the DN (maybe an access map lookup)
+R$* $: $1 $| $>RelayAuth $1 $| $&{verify} client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+# authenticated by a trusted mechanism?
+R$* $: $1 $| $&{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} $# RELAYAUTH
+dnl undo addition of ${auth_type}
+R$* $| $* $: $1
+dnl workspace: localpart<@domain>
+ifelse(defn(`_NO_UUCP_'), `r',
+`R$* ! $* < @ $* > $: <REMOTE> $2 < @ BANG_PATH >', `dnl')
# anything terminating locally is ok
ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
-R$+ < @ $* $=m > $@ OK', `dnl')
-R$+ < @ $=w > $@ OK
+R$+ < @ $* $=m > $@ RELAYTO', `dnl')
+R$+ < @ $=w > $@ RELAYTO
ifdef(`_RELAY_HOSTS_ONLY_',
-`R$+ < @ $=R > $@ OK
-ifdef(`ACCESS_TABLE', `dnl
-R$+ < @ $* > $: <$(access $2 $: ? $)> <$1 < @ $2 >>',`dnl')',
-`R$+ < @ $* $=R > $@ OK
-ifdef(`ACCESS_TABLE', `dnl
-R$+ < @ $* > $: $>LookUpDomain <$2> <?> <$1 < @ $2 >>',`dnl')')
-ifdef(`ACCESS_TABLE', `dnl
-R<RELAY> $* $@ RELAY
+`R$+ < @ $=R > $@ RELAYTO
+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 > $@ RELAYTO
+ifdef(`_ACCESS_TABLE_', `dnl
+R$+ < @ $+ > $: $>LookUpDomain <$2> <?> <$1 < @ $2 >> <+To>',`dnl')')
+ifdef(`_ACCESS_TABLE_', `dnl
+dnl workspace: <Result-of-lookup | ?> <localpart<@domain>>
+R<RELAY> $* $@ RELAYTO
R<$*> <$*> $: $2',`dnl')
+
ifdef(`_RELAY_MX_SERVED_', `dnl
# allow relaying for hosts which we MX serve
-R$+ < @ $* > $: < : $(mxserved $2 $) : > $1 < @ $2 >
+R$+ < @ $+ > $: < : $(mxserved $2 $) : > $1 < @ $2 >
+dnl this must not necessarily happen if the client is checked first...
R< : $* <TEMP> : > $* $#error $@ 4.7.1 $: "450 Can not check MX records for recipient host " $1
-R<$* : $=w . : $*> $* $@ OK
+R<$* : $=w . : $*> $* $@ RELAYTO
R< : $* : > $* $: $2',
`dnl')
@@ -1269,55 +1693,374 @@ R< : $* : > $* $: $2',
R$* $: <?> $1
R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
# local user is ok
-R<?> $+ $@ 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 $@ TOPOSTMASTER
+# 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$* $| <?> $+ $@ RELAYTOLOCAL
+dnl client_name is empty
+R<?> <?> $+ $@ RELAYTOLOCAL
+dnl client_name is local
+R<? $=w> <?> $+ $@ RELAYTOLOCAL
+dnl client_name is not local
+R<? $+> $+ $#error $@ 5.5.4 $: "553 Domain name required"', `dnl
+dnl no qualified recipient required
+R<?> $+ $@ RELAYTOLOCAL')
+dnl it is a remote user: remove mark and then check client
R<$+> $* $: $2
+dnl currently the recipient address is not used below
# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAYFROM originated locally
+R0 $@ RELAYFROM originated locally
+R$=R $* $@ RELAYFROM relayable IP address
+ifdef(`_ACCESS_TABLE_', `dnl
+R$* $: $>LookUpAddress <$1> <?> <$1> <+Connect>
+R<RELAY> $* $@ RELAYFROM relayable IP address
+R<$*> <$*> $: $2', `dnl')
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAYFROM ... 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
+ifdef(`_RELAY_LOCAL_FROM_', `dnl
+# check whether local FROM is ok
+R<?> $+ < @ $=w . > $@ RELAYFROMMAIL FROM local', `dnl')
+ifdef(`_RELAY_DB_FROM_', `dnl
+R<?> $+ < @ $+ . > <?> $1 < @ $2 > remove trailing dot
+R<?> $+ < @ $+ > $: $1 < @ $2 > $| $>SearchList <! From> $| <F:$1@$2> ifdef(`_RELAY_DB_FROM_DOMAIN_', `<H:$2>') <>
+R$* <RELAY> $@ RELAYFROMMAIL RELAY FROM sender ok', `dnl
+ifdef(`_RELAY_DB_FROM_DOMAIN_', `errprint(`*** ERROR: _RELAY_DB_FROM_DOMAIN_ requires _RELAY_DB_FROM_
+')',
+`dnl')
+dnl')', `dnl')
+
+# check client name: first: did it resolve?
+dnl input: ignored
+R$* $: < $&{client_resolve} >
+R<TEMP> $#error $@ 4.7.1 $: "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}
-# check if bracketed IP address (forward lookup != reverse lookup)
-R<?> [$+] $: <BAD> [$1]
# pass to name server to make hostname canonical
-R<?> $* $~P $: <?> $[ $1 $2 $]
-R<$-> $* $: $2
-R$* . $1 strip trailing dots
-R$@ $@ OK
+R<?> $* $~P $:<?> $[ $1 $2 $]
+R$* . $1 strip trailing dots
+dnl should not be necessary since it has been done for client_addr already
+R<?> $@ RELAYFROM
ifdef(`_RELAY_ENTIRE_DOMAIN_', `dnl
-R$* $=m $@ OK', `dnl')
-R$=w $@ OK
+R<?> $* $=m $@ RELAYFROM', `dnl')
+R<?> $=w $@ RELAYFROM
ifdef(`_RELAY_HOSTS_ONLY_',
-`R$=R $@ OK
-ifdef(`ACCESS_TABLE', `dnl
-R$* $: <$(access $1 $: ? $)> <$1>',`dnl')',
-`R$* $=R $@ OK
-ifdef(`ACCESS_TABLE', `dnl
-R$* $: $>LookUpDomain <$1> <?> <$1>',`dnl')')
-ifdef(`ACCESS_TABLE', `dnl
-R<RELAY> $* $@ RELAY
+`R<?> $=R $@ RELAYFROM
+ifdef(`_ACCESS_TABLE_', `dnl
+R<?> $* $: <$(access Connect:$1 $: ? $)> <$1>
+R<?> <$*> $: <$(access $1 $: ? $)> <$1>',`dnl')',
+`R<?> $* $=R $@ RELAYFROM
+ifdef(`_ACCESS_TABLE_', `dnl
+R<?> $* $: $>LookUpDomain <$1> <?> <$1> <+Connect>',`dnl')')
+ifdef(`_ACCESS_TABLE_', `dnl
+R<RELAY> $* $@ RELAYFROM
R<$*> <$*> $: $2',`dnl')
-# check IP address
-R$* $: $&{client_addr}
-R$@ $@ OK originated locally
-R0 $@ OK originated locally
-R$=R $* $@ OK relayable IP address
-ifdef(`ACCESS_TABLE', `dnl
-R$* $: $>LookUpAddress <$1> <?> <$1>
-R<RELAY> $* $@ RELAY relayable IP address
-R<$*> <$*> $: $2', `dnl')
-R$* $: [ $1 ] put brackets around it...
-R$=w $@ OK ... and see if it is local
-
-ifdef(`_RELAY_LOCAL_FROM_', `dnl
-# anything with a local FROM is ok
-R$* $: $1 $| $>CanonAddr $&f
-R$* $| $+ < @ $=w . > $@ OK FROM local
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: confRELAY_MSG
+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 >
+
+# 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"
+R$+ $| $#$* $#$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 > <U: $1@>
+R<?> $+ < @ $* > $: <> $1 < @ $2 > $| <F: $1@$2 >
+dnl R<?> $@ something_is_very_wrong_here
+# lookup the addresses only with To tag
+R<> $* $| <$+> $: <@> $1 $| $>SearchList <!To> $| <$2> <>
+R<@> $* $| $* $: $2 $1 reverse result
+dnl', `dnl')
+ifdef(`_SPAM_FRIEND_',
+`# is the recipient a spam friend?
+ifdef(`_SPAM_HATER_',
+ `errprint(`*** ERROR: define either SpamHater or SpamFriend
+')', `dnl')
+R<SPAMFRIEND> $+ $@ SPAMFRIEND
+R<$*> $+ $: $2',
+`dnl')
+ifdef(`_SPAM_HATER_',
+`# is the recipient no spam hater?
+R<SPAMHATER> $+ $: $1 spam hater: continue checks
+R<$*> $+ $@ NOSPAMHATER everyone else: stop
+dnl',`dnl')
+dnl run further checks: check_mail
+dnl should we "clean up" $&f?
+R$* $: $1 $| $>checkmail <$&f>
+R$* $| $#$* $#$2
+dnl run further checks: check_relay
+R$* $: $1 $| $>checkrelay $&{client_name} $| $&{client_addr}
+R$* $| $#$* $#$2
R$* $| $* $: $1
', `dnl')
+ifdef(`_ACCESS_TABLE_', `dnl
+######################################################################
+### 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: H: 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:
+### H: 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)
+######################################################################
-# anything else is bogus
-R$* $#error $@ 5.7.1 $: "550 Relaying denied"')
+# class with valid marks for SearchList
+dnl if A is activated: add it
+C{src}E F H U
+SSearchList
+# mark H: lookup domain
+R<$+> $| <H:$+> <$*> $: <$1> $| <@> $>LookUpDomain <$2> <?> <$3> <$1>
+R<$+> $| <@> <$+> <$*> $: <$1> $| <$2> <$3>
+dnl A: NOT YET REQUIRED
+dnl R<$+> $| <A:$+> <$*> $: <$1> $| <@> $>LookUpAddress <$2> <?> <$3> <$1>
+dnl R<$+> $| <@> <$+> <$*> $: <$1> $| <$2> <$3>
+dnl lookup of the item with tag
+dnl this applies to F: U: E:
+R<$- $-> $| <$={src}:$+> <$*> $: <$1 $2> $| <$(access $2`'_TAG_DELIM_`'$4 $: $3:$4 $)> <$5>
+dnl no match, try without tag
+R<+ $-> $| <$={src}:$+> <$*> $: <+ $1> $| <$(access $3 $: $2:$3 $)> <$4>
+dnl do we really have to distinguish these cases?
+dnl probably yes, there might be a + in the domain part (is that allowed?)
+dnl user+detail lookups: should it be:
+dnl user+detail, user+*, user; just like aliases?
+R<$- $-> $| <F:$* + $*@$+> <$*> $: <$1 $2> $| <$(access $2`'_TAG_DELIM_`'$3@$5 $: F:$3 + $4@$5$)> <$6>
+R<+ $-> $| <F:$* + $*@$+> <$*> $: <+ $1> $| <$(access $2@$4 $: F:$2 + $3@$4$)> <$5>
+dnl user lookups are always with trailing @
+dnl do not remove the @ from the lookup:
+dnl it is part of the +detail@ which is omitted for the lookup
+R<$- $-> $| <U:$* + $*> <$*> $: <$1 $2> $| <$(access $2`'_TAG_DELIM_`'$3@ $: U:$3 + $4$)> <$5>
+dnl no match, try without tag
+R<+ $-> $| <U:$* + $*> <$*> $: <+ $1> $| <$(access $2@ $: U:$2 + $3$)> <$4>
+dnl no match, try rest of list
+R<$+> $| <$={src}:$+> <$+> $@ $>SearchList <$1> $| <$4>
+dnl no match, list empty: return failure
+R<$+> $| <$={src}:$+> <> $@ <?>
+dnl got result, return it
+R<$+> $| <$+> <$*> $@ <$2>
+dnl return result from recursive invocation
+R<$+> $| <$+> $@ <$2>', `dnl')
+
+# is user trusted to authenticate as someone else?
+dnl AUTH= parameter from MAIL command
+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" $1
+R$* $| $#$* $#$2
+dnl default: error
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+dnl empty ruleset definition so it can be called
+SLocal_trust_auth
+
+ifdef(`_FFR_TLS_O_T', `dnl
+Soffer_tls
+R$* $: $>LookUpDomain <$&{client_name}> <?> <> <! TLS_OFF_TAG>
+R<?>$* $: $>LookUpAddress <$&{client_addr}> <?> <> <! TLS_OFF_TAG>
+R<?>$* $: <$(access TLS_OFF_TAG: $: ? $)>
+R<?>$* $@ OK
+R<NO> <> $#error $@ 5.7.1 $: "550 do not offer TLS for " $&{client_name} " ["$&{client_addr}"]"
+
+Stry_tls
+R$* $: $>LookUpDomain <$&{server_name}> <?> <> <! TLS_TRY_TAG>
+R<?>$* $: $>LookUpAddress <$&{server_addr}> <?> <> <! TLS_TRY_TAG>
+R<?>$* $: <$(access TLS_TRY_TAG: $: ? $)>
+R<?>$* $@ OK
+R<NO> <> $#error $@ 5.7.1 $: "550 do not try TLS with " $&{server_name} " ["$&{server_addr}"]"
+')dnl
-undivert(9)dnl
+# is connection with client "good" enough? (done in server)
+# input: ${verify} $| (MAIL|STARTTLS)
+dnl MAIL: called from check_mail
+dnl STARTTLS: called from smtp() after STARTTLS has been accepted
+Stls_client
+ifdef(`_ACCESS_TABLE_', `dnl
+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 $| $>LookUpDomain <$&{client_name}> <?> <> <! TLS_CLT_TAG>
+R$* $| <?>$* $: $1 $| $>LookUpAddress <$&{client_addr}> <?> <> <! TLS_CLT_TAG>
+dnl do a default lookup: just TLS_CLT_TAG
+R$* $| <?>$* $: $1 $| <$(access TLS_CLT_TAG`'_TAG_DELIM_ $: ? $)>
+R$* $@ $>"tls_connection" $1', `dnl
+R$* $| $* $@ $>"tls_connection" $1')
+
+# is connection with server "good" enough? (done in client)
+dnl i.e. has the server been authenticated and is encryption active?
+dnl called from deliver() after STARTTLS command
+# input: ${verify}
+Stls_server
+ifdef(`_ACCESS_TABLE_', `dnl
+R$* $: $1 $| $>LookUpDomain <$&{server_name}> <?> <> <! TLS_SRV_TAG>
+R$* $| <?>$* $: $1 $| $>LookUpAddress <$&{server_addr}> <?> <> <! TLS_SRV_TAG>
+dnl do a default lookup: just TLS_SRV_TAG
+R$* $| <?>$* $: $1 $| <$(access TLS_SRV_TAG`'_TAG_DELIM_ $: ? $)>
+R$* $@ $>"tls_connection" $1', `dnl
+R$* $@ $>"tls_connection" $1')
+
+Stls_connection
+ifdef(`_ACCESS_TABLE_', `dnl
+dnl common ruleset for tls_{client|server}
+dnl input: $&{verify} $| <ResultOfLookup> [<>]
+dnl remove optional <>
+R$* $| <$*>$* $: $1 $| <$2>
+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 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."
+R$* $| <$*> <VERIFY> $: <$2> <VERIFY> $1
+R$* $| <$*> <$={tls}:$->$* $: <$2> <$3:$4> $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]> ${verify}
+dnl only verification required and it succeeded
+R<$*><VERIFY> OK $@ OK
+dnl verification required + some level of encryption
+R<$*><VERIFY:$-> OK $: <$1> <REQ:$2>
+dnl just some level of encryption required
+R<$*><ENCR:$-> $* $: <$1> <REQ:$2>
+dnl verification required but ${verify} is not set
+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 $*> 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
+R<$*><REQ:$-> $: <$1> <REQ:$2> $>max $&{cipher_bits} : $&{auth_ssf}
+dnl compare required bits with actual bits
+R<$*><REQ:$-> $- $: <$1> <$2:$3> $(arith l $@ $3 $@ $2 $)
+R<$-:$+><$-:$-> TRUE $#error $@ $2 $: $1 " encryption too weak " $4 " less than " $3
+
+Smax
+dnl compute the max of two values separated by :
+R: $: 0
+R:$- $: $1
+R$-: $: $1
+R$-:$- $: $(arith l $@ $1 $@ $2 $) : $1 : $2
+RTRUE:$-:$- $: $2
+R$-:$-:$- $: $2',
+`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."')
+
+SRelayAuth
+# 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.
+R$* $| OK $: $1
+R$* $| $* $@ NO not authenticated
+ifdef(`_ACCESS_TABLE_', `dnl
+ifdef(`_CERT_REGEX_ISSUER_', `dnl
+R$* $: $1 $| $(CERTIssuer $&{cert_issuer} $)',
+`R$* $: $1 $| $&{cert_issuer}')
+R$* $| $+ $: $1 $| $(access CERTISSUER:$2 $)
+dnl use $# to stop further checks (delay_check)
+R$* $| RELAY $# RELAYCERTISSUER
+ifdef(`_CERT_REGEX_SUBJECT_', `dnl
+R$* $| SUBJECT $: $1 $| <@> $(CERTSubject $&{cert_subject} $)',
+`R$* $| SUBJECT $: $1 $| <@> $&{cert_subject}')
+R$* $| <@> $+ $: $1 $| <@> $(access CERTSUBJECT:$&{cert_subject} $)
+R$* $| <@> RELAY $# RELAYCERTSUBJECT
+R$* $| $* $: $1', `dnl')
+
+undivert(9)dnl LOCAL_RULESETS
+ifdef(`_FFR_MILTER', `
+#
+######################################################################
+######################################################################
+#####
+`##### MAIL FILTER DEFINITIONS'
+#####
+######################################################################
+######################################################################
+_MAIL_FILTERS_')
#
######################################################################
######################################################################
@@ -1326,4 +2069,4 @@ undivert(9)dnl
#####
######################################################################
######################################################################
-undivert(7)dnl
+undivert(7)dnl MAILER_DEFINITIONS
diff --git a/contrib/sendmail/cf/m4/version.m4 b/contrib/sendmail/cf/m4/version.m4
index 416488c..4025272 100644
--- a/contrib/sendmail/cf/m4/version.m4
+++ b/contrib/sendmail/cf/m4/version.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -10,8 +11,8 @@ divert(-1)
# the sendmail distribution.
#
#
-VERSIONID(`@(#)version.m4 8.9.3.1 (Berkeley) 2/4/1999')
+VERSIONID(`$Id: version.m4,v 8.39.4.10 2000/07/19 20:40:59 gshapiro Exp $')
#
divert(0)
# Configuration version number
-DZ8.9.3`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.11.0`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/contrib/sendmail/cf/mailer/cyrus.m4 b/contrib/sendmail/cf/mailer/cyrus.m4
index 567025f..a6afa4a 100644
--- a/contrib/sendmail/cf/mailer/cyrus.m4
+++ b/contrib/sendmail/cf/mailer/cyrus.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -12,17 +13,17 @@ PUSHDIVERT(-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,
+#
+# 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
+# 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.
-#
+# 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
@@ -32,13 +33,16 @@ PUSHDIVERT(-1)
# SOFTWARE.
#
# Contributed to Berkeley by John Gardiner Myers <jgm+@CMU.EDU>.
-#
+#
+
+ifdef(`_MAILER_local_', `',
+ `errprint(`*** MAILER(`local') must appear before MAILER(`cyrus')')')dnl
-ifdef(`CYRUS_MAILER_FLAGS',, `define(`CYRUS_MAILER_FLAGS', `A5@/:|')')
+_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')')
-ifdef(`CYRUS_BB_MAILER_FLAGS',, `define(`CYRUS_BB_MAILER_FLAGS', `')')
+_DEFIFNOT(`CYRUS_BB_MAILER_FLAGS', `u')
ifdef(`CYRUS_BB_MAILER_ARGS',, `define(`CYRUS_BB_MAILER_ARGS', `deliver -e -m $u')')
POPDIVERT
@@ -47,12 +51,12 @@ POPDIVERT
### Cyrus Mailer specification ###
##################################################
-VERSIONID(`@(#)cyrus.m4 8.9 (Carnegie Mellon) 5/19/1998')
+VERSIONID(`$Id: cyrus.m4,v 8.21 1999/10/18 04:57:52 gshapiro Exp $ (Carnegie Mellon)')
-Mcyrus, P=CYRUS_MAILER_PATH, F=CONCAT(`lsDFMnPq', CYRUS_MAILER_FLAGS), S=10, R=20/40, T=X-Unix,
- ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER,
+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,
A=CYRUS_MAILER_ARGS
-Mcyrusbb, P=CYRUS_MAILER_PATH, F=CONCAT(`lsDFMnP', CYRUS_BB_MAILER_FLAGS), S=10, R=20/40, T=X-Unix,
- ifdef(`CYRUS_MAILER_MAX', `M=CYRUS_MAILER_MAX, ')U=CYRUS_MAILER_USER,
+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,
A=CYRUS_BB_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/fax.m4 b/contrib/sendmail/cf/mailer/fax.m4
index 3ee94bd..63c6931 100644
--- a/contrib/sendmail/cf/mailer/fax.m4
+++ b/contrib/sendmail/cf/mailer/fax.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -26,9 +27,10 @@ POPDIVERT
### FAX Mailer specification ###
####################################
-VERSIONID(`@(#)fax.m4 8.11 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: fax.m4,v 8.15 1999/10/18 04:57:53 gshapiro Exp $')
-Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24, M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,
+Mfax, P=FAX_MAILER_PATH, F=DFMhu, S=14, R=24,
+ M=FAX_MAILER_MAX, T=X-Phone/X-FAX/X-Unix,
A=FAX_MAILER_ARGS
LOCAL_CONFIG
diff --git a/contrib/sendmail/cf/mailer/local.m4 b/contrib/sendmail/cf/mailer/local.m4
index 6b4b679..6b14b19 100644
--- a/contrib/sendmail/cf/mailer/local.m4
+++ b/contrib/sendmail/cf/mailer/local.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -10,10 +11,13 @@ PUSHDIVERT(-1)
# the sendmail distribution.
#
#
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmn9')')
+_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_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', `eu9')')
+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:/')')
@@ -23,52 +27,59 @@ POPDIVERT
### Local and Program Mailer specification ###
##################################################
-VERSIONID(`@(#)local.m4 8.30 (Berkeley) 6/30/1998')
-
-Mlocal, P=LOCAL_MAILER_PATH, F=CONCAT(`lsDFMAw5:/|@q', LOCAL_MAILER_FLAGS), S=10/30, R=20/40,
- _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')_OPTINS(`LOCAL_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/X-Unix,
- A=LOCAL_MAILER_ARGS
-Mprog, P=LOCAL_SHELL_PATH, F=CONCAT(`lsDFMoq', LOCAL_SHELL_FLAGS), S=10/30, R=20/40, D=LOCAL_SHELL_DIR,
- _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')T=X-Unix,
- A=LOCAL_SHELL_ARGS
+VERSIONID(`$Id: local.m4,v 8.50.16.1 2000/06/12 18:25:40 gshapiro Exp $')
#
# Envelope sender rewriting
#
-S10
+SEnvFromL=10
R<@> $n errors to mailer-daemon
R@ <@ $*> $n temporarily bypass Sun bogosity
-R$+ $: $>50 $1 add local domain if needed
-R$* $: $>94 $1 do masquerading
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
#
# Envelope recipient rewriting
#
-S20
+SEnvToL=20
R$+ < @ $* > $: $1 strip host part
+ifdef(`_FFR_ADDR_TYPE', `dnl
+ifdef(`confUSERDB_SPEC', `dnl',
+`dnl Do not forget to bump V9 to V10 before removing _FFR_ADDR_TYPE check
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark')', `dnl')
#
# Header sender rewriting
#
-S30
+SHdrFromL=30
R<@> $n errors to mailer-daemon
R@ <@ $*> $n temporarily bypass Sun bogosity
-R$+ $: $>50 $1 add local domain if needed
-R$* $: $>93 $1 do masquerading
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
#
# Header recipient rewriting
#
-S40
-R$+ $: $>50 $1 add local domain if needed
-ifdef(`_ALL_MASQUERADE_', `dnl
-R$* $: $>93 $1 do all-masquerading', `dnl')
+SHdrToL=40
+R$+ $: $>AddDomain $1 add local domain if needed
+ifdef(`_ALL_MASQUERADE_',
+`R$* $: $>MasqHdr $1 do all-masquerading',
+`R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2')
#
# Common code to add local domain name (only if always-add-domain)
#
-S50
+SAddDomain=50
ifdef(`_ALWAYS_ADD_DOMAIN_', `dnl
-R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-R$+ $@ $1 < @ *LOCAL* > add local qualification',
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification',
`dnl')
+
+Mlocal, P=LOCAL_MAILER_PATH, F=_MODMF_(CONCAT(_DEF_LOCAL_MAILER_FLAGS, LOCAL_MAILER_FLAGS), `LOCAL'), S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,_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,
+ A=LOCAL_MAILER_ARGS
+Mprog, P=LOCAL_SHELL_PATH, F=CONCAT(_DEF_LOCAL_SHELL_FLAGS, LOCAL_SHELL_FLAGS), S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=LOCAL_SHELL_DIR,
+ _OPTINS(`LOCAL_MAILER_MAX', `M=', `, ')T=X-Unix/X-Unix/X-Unix,
+ A=LOCAL_SHELL_ARGS
diff --git a/contrib/sendmail/cf/mailer/mail11.m4 b/contrib/sendmail/cf/mailer/mail11.m4
index 222b53f..d60a063 100644
--- a/contrib/sendmail/cf/mailer/mail11.m4
+++ b/contrib/sendmail/cf/mailer/mail11.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -13,13 +14,13 @@ PUSHDIVERT(-1)
#
# 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)')
-ifdef(`MAIL11_MAILER_FLAGS',, `define(`MAIL11_MAILER_FLAGS', nsFx)')
+_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'))
@@ -40,19 +41,20 @@ POPDIVERT
### UTK-MAIL11 Mailer specification ###
###########################################
-VERSIONID(`@(#)mail11.m4 8.8 (Berkeley) 5/19/1998')
-
-Mmail11, P=MAIL11_MAILER_PATH, F=MAIL11_MAILER_FLAGS, S=15, R=25,
- A=MAIL11_MAILER_ARGS
+VERSIONID(`$Id: mail11.m4,v 8.19 1999/10/18 04:57:54 gshapiro Exp $')
-S15
+SMail11From=15
R$+ $: $>25 $1 preprocess
R$w :: $+ $@ $w :: $1 ready to go
-S25
+SMail11To=25
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
+
+Mmail11, P=MAIL11_MAILER_PATH, F=_MODMF_(MAIL11_MAILER_FLAGS, `MAIL11'), S=Mail11From, R=Mail11To,
+ T=DNS/X-DECnet/X-Unix,
+ A=MAIL11_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/phquery.m4 b/contrib/sendmail/cf/mailer/phquery.m4
index 3e0891a..09032e4 100644
--- a/contrib/sendmail/cf/mailer/phquery.m4
+++ b/contrib/sendmail/cf/mailer/phquery.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -13,8 +14,11 @@ PUSHDIVERT(-1)
# Contributed by Kimmo Suominen <kim@tac.nyc.ny.us>.
#
+ifdef(`_MAILER_local_', `',
+ `errprint(`*** MAILER(`local') must appear before MAILER(`phquery')')')dnl
+
ifdef(`PH_MAILER_PATH',, `define(`PH_MAILER_PATH', /usr/local/etc/phquery)')
-ifdef(`PH_MAILER_FLAGS',, `define(`PH_MAILER_FLAGS', `ehmu')')
+_DEFIFNOT(`PH_MAILER_FLAGS', `ehmu')
ifdef(`PH_MAILER_ARGS',, `define(`PH_MAILER_ARGS', `phquery -- $u')')
POPDIVERT
@@ -23,7 +27,8 @@ POPDIVERT
### PH Mailer specification ###
####################################
-VERSIONID(`@(#)phquery.m4 8.6 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: phquery.m4,v 8.15 1999/10/18 04:57:54 gshapiro Exp $')
-Mph, P=PH_MAILER_PATH, F=CONCAT(`nrDFM', PH_MAILER_FLAGS), S=10, R=20/40,
+Mph, P=PH_MAILER_PATH, F=_MODMF_(CONCAT(`nrDFM', PH_MAILER_FLAGS), `PH'), S=EnvFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
A=PH_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/pop.m4 b/contrib/sendmail/cf/mailer/pop.m4
index 0acea7d..a7b373d 100644
--- a/contrib/sendmail/cf/mailer/pop.m4
+++ b/contrib/sendmail/cf/mailer/pop.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,8 +12,11 @@ PUSHDIVERT(-1)
#
#
+ifdef(`_MAILER_local_', `',
+ `errprint(`*** MAILER(`local') must appear before MAILER(`pop')')')dnl
+
ifdef(`POP_MAILER_PATH',, `define(`POP_MAILER_PATH', /usr/lib/mh/spop)')
-ifdef(`POP_MAILER_FLAGS',, `define(`POP_MAILER_FLAGS', `Penu')')
+_DEFIFNOT(`POP_MAILER_FLAGS', `Penu')
ifdef(`POP_MAILER_ARGS',, `define(`POP_MAILER_ARGS', `pop $u')')
POPDIVERT
@@ -21,9 +25,10 @@ POPDIVERT
### POP Mailer specification ###
####################################
-VERSIONID(`@(#)pop.m4 8.11 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: pop.m4,v 8.20 1999/10/18 04:57:54 gshapiro Exp $')
-Mpop, P=POP_MAILER_PATH, F=CONCAT(`lsDFMq', POP_MAILER_FLAGS), S=10, R=20/40, T=DNS/RFC822/X-Unix,
+Mpop, P=POP_MAILER_PATH, F=_MODMF_(CONCAT(`lsDFMq', POP_MAILER_FLAGS), `POP'), S=EnvFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
A=POP_MAILER_ARGS
LOCAL_CONFIG
diff --git a/contrib/sendmail/cf/mailer/procmail.m4 b/contrib/sendmail/cf/mailer/procmail.m4
index 38b6d20..8589f3a 100644
--- a/contrib/sendmail/cf/mailer/procmail.m4
+++ b/contrib/sendmail/cf/mailer/procmail.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,12 +12,14 @@ PUSHDIVERT(-1)
#
#
+ifdef(`_MAILER_smtp_', `',
+ `errprint(`*** MAILER(`smtp') must appear before MAILER(`procmail')')')dnl
+
ifdef(`PROCMAIL_MAILER_PATH',,
`ifdef(`PROCMAIL_PATH',
`define(`PROCMAIL_MAILER_PATH', PROCMAIL_PATH)',
`define(`PROCMAIL_MAILER_PATH', /usr/local/bin/procmail)')')
-ifdef(`PROCMAIL_MAILER_FLAGS',,
- `define(`PROCMAIL_MAILER_FLAGS', `SPhnu9')')
+_DEFIFNOT(`PROCMAIL_MAILER_FLAGS', `SPhnu9')
ifdef(`PROCMAIL_MAILER_ARGS',,
`define(`PROCMAIL_MAILER_ARGS', `procmail -Y -m $h $f $u')')
@@ -26,7 +29,8 @@ POPDIVERT
### PROCMAIL Mailer specification ###
##################*****##################
-VERSIONID(`@(#)procmail.m4 8.11 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: procmail.m4,v 8.20 1999/10/18 04:57:54 gshapiro Exp $')
-Mprocmail, P=PROCMAIL_MAILER_PATH, F=CONCAT(`DFM', PROCMAIL_MAILER_FLAGS), S=11/31, R=21/31, T=DNS/RFC822/X-Unix,
- ifdef(`PROCMAIL_MAILER_MAX', `M=PROCMAIL_MAILER_MAX, ')A=PROCMAIL_MAILER_ARGS
+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,
+ A=PROCMAIL_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/qpage.m4 b/contrib/sendmail/cf/mailer/qpage.m4
new file mode 100644
index 0000000..31521d5
--- /dev/null
+++ b/contrib/sendmail/cf/mailer/qpage.m4
@@ -0,0 +1,30 @@
+PUSHDIVERT(-1)
+#
+# Copyright (C) 1997, Philip A. Prindeville and Enteka Enterprise Technology
+# Services
+#
+# 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.
+#
+# 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')')
+
+POPDIVERT
+
+######################################
+### QPAGE Mailer specification ###
+######################################
+
+VERSIONID(`$Id: qpage.m4,v 8.9 1999/11/16 03:33:04 gshapiro Exp $')
+
+Mqpage, P=QPAGE_MAILER_PATH, F=_MODMF_(QPAGE_MAILER_FLAGS, `QPAGE'),
+ M=QPAGE_MAILER_MAX, T=DNS/RFC822/X-Unix,
+ A=QPAGE_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/smtp.m4 b/contrib/sendmail/cf/mailer/smtp.m4
index 7545597..dd601ec 100644
--- a/contrib/sendmail/cf/mailer/smtp.m4
+++ b/contrib/sendmail/cf/mailer/smtp.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -10,70 +11,32 @@ PUSHDIVERT(-1)
# the sendmail distribution.
#
#
-ifdef(`SMTP_MAILER_FLAGS',, `define(`SMTP_MAILER_FLAGS', `')')
-ifdef(`SMTP_MAILER_ARGS',, `define(`SMTP_MAILER_ARGS', `IPC $h')')
-ifdef(`ESMTP_MAILER_ARGS',, `define(`ESMTP_MAILER_ARGS', `IPC $h')')
-ifdef(`SMTP8_MAILER_ARGS',, `define(`SMTP8_MAILER_ARGS', `IPC $h')')
-ifdef(`RELAY_MAILER_ARGS',, `define(`RELAY_MAILER_ARGS', `IPC $h')')
-ifdef(`_MAILER_uucp_',
- `errprint(`*** MAILER(smtp) must appear before MAILER(uucp)')')dnl
+_DEFIFNOT(`_DEF_SMTP_MAILER_FLAGS', `mDFMuX')
+_DEFIFNOT(`SMTP_MAILER_FLAGS',`')
+_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')')
POPDIVERT
#####################################
### SMTP Mailer specification ###
#####################################
-VERSIONID(`@(#)smtp.m4 8.38 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: smtp.m4,v 8.56.2.1.2.2 2000/07/18 15:31:24 gshapiro Exp $')
-Msmtp, P=[IPC], F=CONCAT(mDFMuX, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
- A=SMTP_MAILER_ARGS
-Mesmtp, P=[IPC], F=CONCAT(mDFMuXa, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
- A=ESMTP_MAILER_ARGS
-Msmtp8, P=[IPC], F=CONCAT(mDFMuX8, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), E=\r\n, L=990,
- _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
- A=SMTP8_MAILER_ARGS
-Mrelay, P=[IPC], F=CONCAT(mDFMuXa8, SMTP_MAILER_FLAGS), S=11/31, R=ifdef(`_ALL_MASQUERADE_', `61/71', `61'), E=\r\n, L=2040,
- _OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
- A=RELAY_MAILER_ARGS
-
-#
-# envelope sender rewriting
#
-S11
-R$+ $: $>51 $1 sender/recipient common
-R$* :; <@> $@ list:; special case
-R$* $: $>61 $1 qualify unqual'ed names
-R$+ $: $>94 $1 do masquerading
-
-
-#
-# envelope recipient rewriting --
-# also header recipient if not masquerading recipients
-#
-S21
-R$+ $: $>51 $1 sender/recipient common
-R$+ $: $>61 $1 qualify unqual'ed names
-
-
-#
-# header sender and masquerading header recipient rewriting
+# common sender and masquerading recipient rewriting
#
-S31
-R$+ $: $>51 $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$* $: $>61 $1 qualify unqual'ed names
-R$+ $: $>93 $1 do masquerading
-
+SMasqSMTP=61
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
#
# convert pseudo-domain addresses to real domain addresses
#
-S51
+SPseudoToReal=51
# pass <route-addr>s through
R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
@@ -98,18 +61,57 @@ R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY')
#
-# common sender and masquerading recipient rewriting
+# envelope sender rewriting
#
-S61
+SEnvFromSMTP=11
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
-R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
-R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP=21
+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=31
+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
#
-S71
+SMasqRelay=71
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
-R$+ $: $>61 $1
-R$+ $: $>93 $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=990,
+ _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
+ A=SMTP_MAILER_ARGS
+Mesmtp, P=[IPC], F=CONCAT(_DEF_SMTP_MAILER_FLAGS, `a', SMTP_MAILER_FLAGS), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990,
+ _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
+ A=ESMTP_MAILER_ARGS
+Msmtp8, P=[IPC], F=CONCAT(_DEF_SMTP_MAILER_FLAGS, `8', SMTP_MAILER_FLAGS), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990,
+ _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
+ A=SMTP8_MAILER_ARGS
+Mdsmtp, P=[IPC], F=CONCAT(_DEF_SMTP_MAILER_FLAGS, `a%', SMTP_MAILER_FLAGS), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `EnvToSMTP/HdrFromSMTP', `EnvToSMTP'), E=\r\n, L=990,
+ _OPTINS(`SMTP_MAILER_MAX', `M=', `, ')_OPTINS(`SMTP_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')_OPTINS(`SMTP_MAILER_CHARSET', `C=', `, ')T=DNS/RFC822/SMTP,
+ A=DSMTP_MAILER_ARGS
+Mrelay, P=[IPC], F=CONCAT(_DEF_SMTP_MAILER_FLAGS, `a8', RELAY_MAILER_FLAGS), S=EnvFromSMTP/HdrFromSMTP, R=ifdef(`_ALL_MASQUERADE_', `MasqSMTP/MasqRelay', `MasqSMTP'), E=\r\n, L=2040,
+ _OPTINS(`RELAY_MAILER_CHARSET', `C=', `, ')_OPTINS(`RELAY_MAILER_MAXMSGS', `m=', `, ')_OPTINS(`SMTP_MAILER_MAXRCPTS', `r=', `, ')T=DNS/RFC822/SMTP,
+ A=RELAY_MAILER_ARGS
diff --git a/contrib/sendmail/cf/mailer/usenet.m4 b/contrib/sendmail/cf/mailer/usenet.m4
index 1535751..770eb30 100644
--- a/contrib/sendmail/cf/mailer/usenet.m4
+++ b/contrib/sendmail/cf/mailer/usenet.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -11,16 +12,19 @@ PUSHDIVERT(-1)
#
#
+ifdef(`_MAILER_local_', `',
+ `errprint(`*** MAILER(`local') must appear before MAILER(`usenet')')')dnl
+
ifdef(`USENET_MAILER_PATH',, `define(`USENET_MAILER_PATH', /usr/lib/news/inews)')
-ifdef(`USENET_MAILER_FLAGS',, `define(`USENET_MAILER_FLAGS', `rlsDFMmn')')
+_DEFIFNOT(`USENET_MAILER_FLAGS', `rsDFMmn')
ifdef(`USENET_MAILER_ARGS',, `define(`USENET_MAILER_ARGS', `inews -m -h -n')')
POPDIVERT
####################################
### USENET Mailer specification ###
####################################
-VERSIONID(`@(#)usenet.m4 8.10 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: usenet.m4,v 8.19 1999/11/16 03:33:04 gshapiro Exp $')
-Musenet, P=USENET_MAILER_PATH, F=USENET_MAILER_FLAGS, S=10, R=20,
+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,
A=USENET_MAILER_ARGS $u
diff --git a/contrib/sendmail/cf/mailer/uucp.m4 b/contrib/sendmail/cf/mailer/uucp.m4
index badd307..dd915c3 100644
--- a/contrib/sendmail/cf/mailer/uucp.m4
+++ b/contrib/sendmail/cf/mailer/uucp.m4
@@ -1,6 +1,7 @@
PUSHDIVERT(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -10,10 +11,12 @@ PUSHDIVERT(-1)
# the sendmail distribution.
#
#
+ifdef(`_MAILER_smtp_', `',
+ `errprint(`*** MAILER(`smtp') must appear before MAILER(`uucp')')')dnl
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)')')
-ifdef(`UUCP_MAILER_FLAGS',, `define(`UUCP_MAILER_FLAGS', `')')
+_DEFIFNOT(`UUCP_MAILER_FLAGS', `')
ifdef(`UUCP_MAILER_MAX',,
`define(`UUCP_MAILER_MAX',
`ifdef(`UUCP_MAX_SIZE', `UUCP_MAX_SIZE', 100000)')')
@@ -22,45 +25,12 @@ POPDIVERT
### UUCP Mailer specification ###
#####################################
-VERSIONID(`@(#)uucp.m4 8.30 (Berkeley) 5/19/1998')
-
-#
-# There are innumerable variations on the UUCP mailer. It really
-# is rather absurd.
-#
-
-# old UUCP mailer (two names)
-Muucp, P=UUCP_MAILER_PATH, F=CONCAT(DFMhuUd, UUCP_MAILER_FLAGS), S=12, R=22/42, M=UUCP_MAILER_MAX,
- _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
- A=UUCP_MAILER_ARGS
-Muucp-old, P=UUCP_MAILER_PATH, F=CONCAT(DFMhuUd, UUCP_MAILER_FLAGS), S=12, R=22/42, M=UUCP_MAILER_MAX,
- _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
- A=UUCP_MAILER_ARGS
-
-# smart UUCP mailer (handles multiple addresses) (two names)
-Msuucp, P=UUCP_MAILER_PATH, F=CONCAT(mDFMhuUd, UUCP_MAILER_FLAGS), S=12, R=22/42, M=UUCP_MAILER_MAX,
- _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
- A=UUCP_MAILER_ARGS
-Muucp-new, P=UUCP_MAILER_PATH, F=CONCAT(mDFMhuUd, UUCP_MAILER_FLAGS), S=12, R=22/42, M=UUCP_MAILER_MAX,
- _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
- A=UUCP_MAILER_ARGS
-
-ifdef(`_MAILER_smtp_',
-`# domain-ized UUCP mailer
-Muucp-dom, P=UUCP_MAILER_PATH, F=CONCAT(mDFMhud, UUCP_MAILER_FLAGS), S=52/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), M=UUCP_MAILER_MAX,
- _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
- A=UUCP_MAILER_ARGS
-
-# domain-ized UUCP mailer with UUCP-style sender envelope
-Muucp-uudom, P=UUCP_MAILER_PATH, F=CONCAT(mDFMhud, UUCP_MAILER_FLAGS), S=72/31, R=ifdef(`_ALL_MASQUERADE_', `21/31', `21'), M=UUCP_MAILER_MAX,
- _OPTINS(`UUCP_MAILER_CHARSET', `C=', `, ')T=X-UUCP/X-UUCP/X-Unix,
- A=UUCP_MAILER_ARGS')
-
+VERSIONID(`$Id: uucp.m4,v 8.38 1999/10/18 04:57:55 gshapiro Exp $')
#
# envelope and header sender rewriting
#
-S12
+SFromU=12
# handle error address as a special case
R<@> $n errors to mailer-daemon
@@ -82,7 +52,7 @@ R! $+ $: $k ! $1 in case $U undefined
#
# envelope recipient rewriting
#
-S22
+SEnvToU=22
# list:; should disappear
R:; <@> $@
@@ -97,7 +67,7 @@ R$* < @ $+ > $2 ! $1 convert to UUCP format
#
# header recipient rewriting
#
-S42
+SHdrToU=42
# list:; syntax should disappear
R:; <@> $@
@@ -118,24 +88,24 @@ ifdef(`_MAILER_smtp_',
`#
# envelope sender rewriting for uucp-dom mailer
#
-S52
+SEnvFromUD=52
# handle error address as a special case
R<@> $n errors to mailer-daemon
# pass everything to standard SMTP mailer rewriting
-R$* $@ $>11 $1
+R$* $@ $>EnvFromSMTP $1
#
# envelope sender rewriting for uucp-uudom mailer
#
-S72
+SEnvFromUUD=72
# handle error address as a special case
R<@> $n errors to mailer-daemon
# do standard SMTP mailer rewriting
-R$* $: $>11 $1
+R$* $: $>EnvFromSMTP $1
R$* < @ $* . > $* $1 < @ $2 > $3 strip trailing dots
R<@ $- . UUCP > : $+ $@ $1 ! $2 convert to UUCP format
@@ -150,3 +120,37 @@ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ A=UUCP_MAILER_ARGS')
+
+
diff --git a/contrib/sendmail/cf/ostype/aix2.m4 b/contrib/sendmail/cf/ostype/aix2.m4
index 2bda79c..fba191d 100644
--- a/contrib/sendmail/cf/ostype/aix2.m4
+++ b/contrib/sendmail/cf/ostype/aix2.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,9 +13,9 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)aix2.m4 8.8 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: aix2.m4,v 8.12 1999/04/12 17:34:36 ca Exp $')
define(`LOCAL_MAILER_PATH', /bin/bellmail)dnl
define(`LOCAL_MAILER_ARGS', mail $u)dnl
-define(`LOCAL_MAILER_FLAGS', `mn9')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/aix3.m4 b/contrib/sendmail/cf/ostype/aix3.m4
index fb74d9e..4376f67 100644
--- a/contrib/sendmail/cf/ostype/aix3.m4
+++ b/contrib/sendmail/cf/ostype/aix3.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,9 +13,9 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)aix3.m4 8.12 (Berkeley) 5/19/1998')
+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
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')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
index 24ff001..8e0b9d4 100644
--- a/contrib/sendmail/cf/ostype/aix4.m4
+++ b/contrib/sendmail/cf/ostype/aix4.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,9 +13,9 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)aix4.m4 8.7 (Berkeley) 5/19/1998')
+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
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `mn9')')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
index 4dcefa9..1cffe1e 100644
--- a/contrib/sendmail/cf/ostype/altos.m4
+++ b/contrib/sendmail/cf/ostype/altos.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -14,14 +15,12 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)altos.m4 8.10 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: altos.m4,v 8.15 1999/04/24 05:37:40 gshapiro Exp $')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')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
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mPuhCE9)')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
diff --git a/contrib/sendmail/cf/ostype/amdahl-uts.m4 b/contrib/sendmail/cf/ostype/amdahl-uts.m4
index 84d47cd..edd3a5d 100644
--- a/contrib/sendmail/cf/ostype/amdahl-uts.m4
+++ b/contrib/sendmail/cf/ostype/amdahl-uts.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,12 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)amdahl-uts.m4 8.11 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: amdahl-uts.m4,v 8.16 1999/04/24 05:37:40 gshapiro Exp $')
divert(-1)
-define(`ALIAS_FILE', /etc/mail/aliases)
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSn9')')
-define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
+_DEFIFNOT(`LOCAL_MAILER_FLAGS', `fSn9')
define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/aux.m4 b/contrib/sendmail/cf/ostype/aux.m4
index 8038cb5..ff7f19a 100644
--- a/contrib/sendmail/cf/ostype/aux.m4
+++ b/contrib/sendmail/cf/ostype/aux.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,11 +13,9 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)aux.m4 8.11 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
+VERSIONID(`$Id: aux.m4,v 8.16 1999/04/24 05:37:40 gshapiro Exp $')
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
ifdef(`UUCP_MAILER_PATH',, `define(`UUCP_MAILER_PATH', /usr/bin/uux)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', mn9)')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/bsd4.3.m4 b/contrib/sendmail/cf/ostype/bsd4.3.m4
index d0f3f8a..044f205 100644
--- a/contrib/sendmail/cf/ostype/bsd4.3.m4
+++ b/contrib/sendmail/cf/ostype/bsd4.3.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,6 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)bsd4.3.m4 8.9 (Berkeley) 5/19/1998')
+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/bsdi.m4 b/contrib/sendmail/cf/ostype/bsdi.m4
new file mode 100644
index 0000000..35679bc
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/bsdi.m4
@@ -0,0 +1,17 @@
+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
index 08bd2a5..b806a37 100644
--- a/contrib/sendmail/cf/ostype/bsdi1.0.m4
+++ b/contrib/sendmail/cf/ostype/bsdi1.0.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,5 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)bsdi1.0.m4 8.7 (Berkeley) 5/19/1998')dnl
-include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
+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
index 6883eb0..493406f 100644
--- a/contrib/sendmail/cf/ostype/bsdi2.0.m4
+++ b/contrib/sendmail/cf/ostype/bsdi2.0.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,5 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)bsdi2.0.m4 8.6 (Berkeley) 5/19/1998')dnl
-include(_CF_DIR_`'ostype/bsd4.4.m4)dnl
+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
new file mode 100644
index 0000000..c5fffe0
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/darwin.m4
@@ -0,0 +1,17 @@
+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: darwin.m4,v 8.1.2.1 2000/06/15 06:37:04 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/dgux.m4 b/contrib/sendmail/cf/ostype/dgux.m4
index 2f25cd8..335aeda 100644
--- a/contrib/sendmail/cf/ostype/dgux.m4
+++ b/contrib/sendmail/cf/ostype/dgux.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,8 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)dgux.m4 8.10 (Berkeley) 5/19/1998')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', m9)')dnl
+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
diff --git a/contrib/sendmail/cf/ostype/domainos.m4 b/contrib/sendmail/cf/ostype/domainos.m4
index 9f4ea92..759459d 100644
--- a/contrib/sendmail/cf/ostype/domainos.m4
+++ b/contrib/sendmail/cf/ostype/domainos.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,10 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)domainos.m4 8.10 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: domainos.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $')
divert(-1)
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')
define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/dynix3.2.m4 b/contrib/sendmail/cf/ostype/dynix3.2.m4
index 3836446..e072953 100644
--- a/contrib/sendmail/cf/ostype/dynix3.2.m4
+++ b/contrib/sendmail/cf/ostype/dynix3.2.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)dynix3.2.m4 8.10 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
+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/gnu.m4 b/contrib/sendmail/cf/ostype/gnu.m4
new file mode 100644
index 0000000..39e8171
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/gnu.m4
@@ -0,0 +1,21 @@
+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
index d349b54..290c0c6 100644
--- a/contrib/sendmail/cf/ostype/hpux10.m4
+++ b/contrib/sendmail/cf/ostype/hpux10.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,14 +13,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)hpux10.m4 8.14 (Berkeley) 10/6/1998')
+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
-define(`ALIAS_FILE', /etc/mail/aliases)dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/lib/sendmail.hf'))')dnl
ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /usr/bin/rmail)')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')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
diff --git a/contrib/sendmail/cf/ostype/hpux11.m4 b/contrib/sendmail/cf/ostype/hpux11.m4
new file mode 100644
index 0000000..94e2e98
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/hpux11.m4
@@ -0,0 +1,23 @@
+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
index 55f1b97..902d39a 100644
--- a/contrib/sendmail/cf/ostype/hpux9.m4
+++ b/contrib/sendmail/cf/ostype/hpux9.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,13 +13,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)hpux9.m4 8.19 (Berkeley) 10/6/1998')
+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
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/bin/rmail')')dnl
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `m9')')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
diff --git a/contrib/sendmail/cf/ostype/irix4.m4 b/contrib/sendmail/cf/ostype/irix4.m4
index aea6e9e..f966458 100644
--- a/contrib/sendmail/cf/ostype/irix4.m4
+++ b/contrib/sendmail/cf/ostype/irix4.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,9 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)irix4.m4 8.14 (Berkeley) 10/6/1998')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehm9)')dnl
+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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/irix5.m4 b/contrib/sendmail/cf/ostype/irix5.m4
index 426f002..dda4bf4 100644
--- a/contrib/sendmail/cf/ostype/irix5.m4
+++ b/contrib/sendmail/cf/ostype/irix5.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -28,13 +29,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)irix5.m4 8.11 (Berkeley) 10/6/1998')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
+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
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')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
index d419202..839e387 100644
--- a/contrib/sendmail/cf/ostype/irix6.m4
+++ b/contrib/sendmail/cf/ostype/irix6.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -16,7 +17,7 @@ divert(-1)
#
# Notes:
# - SGI's /etc/sendmail.cf defines also 'u' for local mailer flags -- you
-# perhaps don't want it.
+# 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
@@ -28,13 +29,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)irix6.m4 8.8 (Berkeley) 10/6/1998')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', Ehmu9)')dnl
+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
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')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
index 629835b..a124643 100644
--- a/contrib/sendmail/cf/ostype/isc4.1.m4
+++ b/contrib/sendmail/cf/ostype/isc4.1.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -13,14 +14,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)isc4.1.m4 8.11 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
+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
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `humS9')')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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')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
diff --git a/contrib/sendmail/cf/ostype/linux.m4 b/contrib/sendmail/cf/ostype/linux.m4
index e1f7a92..b2dccf0 100644
--- a/contrib/sendmail/cf/ostype/linux.m4
+++ b/contrib/sendmail/cf/ostype/linux.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,5 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)linux.m4 8.7 (Berkeley) 5/19/1998')
-define(`LOCAL_MAILER_PATH', /bin/mail.local)dnl
+VERSIONID(`$Id: linux.m4,v 8.11.16.1 2000/05/09 18:48:58 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
index a8ecfd0..6f9a48e 100644
--- a/contrib/sendmail/cf/ostype/maxion.m4
+++ b/contrib/sendmail/cf/ostype/maxion.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -15,14 +16,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)maxion.m4 8.11 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: maxion.m4,v 8.17 1999/10/21 00:31:39 gshapiro Exp $')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/ucbmail/aliases'))dnl
-define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/ucbmail/sendmail.hf'))dnl
define(`QUEUE_DIR', `/var/spool/mqueue')dnl
-define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/adm/log/sendmail.st'))dnl
+define(`STATUS_FILE', `/var/adm/log/sendmail.st')dnl
define(`LOCAL_MAILER_PATH', `/usr/bin/mail')dnl
-define(`LOCAL_MAILER_FLAGS',`rmn9')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
diff --git a/contrib/sendmail/cf/ostype/mklinux.m4 b/contrib/sendmail/cf/ostype/mklinux.m4
index abcdbae..12c6f8bf 100644
--- a/contrib/sendmail/cf/ostype/mklinux.m4
+++ b/contrib/sendmail/cf/ostype/mklinux.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -14,9 +15,10 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)mklinux.m4 8.8 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: mklinux.m4,v 8.14.4.1 2000/05/09 18:48:58 gshapiro Exp $')
+define(`confEBINDIR', `/usr/sbin')
ifdef(`STATUS_FILE',,
- `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/log/sendmail.st'))')
+ `define(`STATUS_FILE', `/var/log/sendmail.st')')
ifdef(`PROCMAIL_MAILER_PATH',,
- define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail'))
+ `define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')')
FEATURE(local_procmail)
diff --git a/contrib/sendmail/cf/ostype/nextstep.m4 b/contrib/sendmail/cf/ostype/nextstep.m4
index ebe6957..0c52893 100644
--- a/contrib/sendmail/cf/ostype/nextstep.m4
+++ b/contrib/sendmail/cf/ostype/nextstep.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,13 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)nextstep.m4 8.15 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', /etc/sendmail/aliases)dnl
-define(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/sendmail/sendmail.cw'))dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/sendmail/sendmail.st'))')dnl
+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_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `rmnP9')')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
new file mode 100644
index 0000000..aaeb615
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/openbsd.m4
@@ -0,0 +1,17 @@
+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
index 7fcf1cf..dd13963 100644
--- a/contrib/sendmail/cf/ostype/osf1.m4
+++ b/contrib/sendmail/cf/ostype/osf1.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,8 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)osf1.m4 8.11 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/adm/sendmail/aliases'))dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/adm/sendmail/sendmail.st'))')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/share/lib/sendmail.hf'))')dnl
+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
index 068bd8e..4646fe3 100644
--- a/contrib/sendmail/cf/ostype/powerux.m4
+++ b/contrib/sendmail/cf/ostype/powerux.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,13 +13,10 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)powerux.m4 8.8 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: powerux.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
-define(`ALIAS_FILE', /etc/mail/aliases)dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')dnl
define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
-define(`LOCAL_MAILER_FLAGS', `mn9')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
diff --git a/contrib/sendmail/cf/ostype/ptx2.m4 b/contrib/sendmail/cf/ostype/ptx2.m4
index d564ead..84e8396 100644
--- a/contrib/sendmail/cf/ostype/ptx2.m4
+++ b/contrib/sendmail/cf/ostype/ptx2.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -14,12 +15,9 @@ divert(-1)
# Support for DYNIX/ptx 2.x.
divert(0)
-VERSIONID(`@(#)ptx2.m4 8.12 (Berkeley) 10/6/1998')
+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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')dnl
define(`LOCAL_MAILER_PATH', `/bin/mail')dnl
-define(`LOCAL_MAILER_FLAGS', `fmn9')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
index 91ed669..5fb3b08 100644
--- a/contrib/sendmail/cf/ostype/qnx.m4
+++ b/contrib/sendmail/cf/ostype/qnx.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -12,10 +13,9 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)qnx.m4 8.8 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: qnx.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
define(`QUEUE_DIR', /usr/spool/mqueue)dnl
-define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))dnl
define(`LOCAL_MAILER_ARGS', `mail $u')dnl
-define(`LOCAL_MAILER_FLAGS', `Sh')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
index c44a180..f806938 100644
--- a/contrib/sendmail/cf/ostype/riscos4.5.m4
+++ b/contrib/sendmail/cf/ostype/riscos4.5.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,10 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)riscos4.5.m4 8.11 (Berkeley) 10/6/1998')
+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
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/aliases'))dnl
ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', `/usr/spool/mqueue')')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/lib/sendmail.hf'))')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
index 0de9bae..8fe1b84 100644
--- a/contrib/sendmail/cf/ostype/sco-uw-2.1.m4
+++ b/contrib/sendmail/cf/ostype/sco-uw-2.1.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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
@@ -12,13 +13,10 @@ divert(-1)
# Contributed by Christopher Durham <chrisdu@SCO.COM> of SCO.
#
divert(0)
-VERSIONID(`@(#)sco-uw-2.1.m4 8.8 (Berkeley) 1/25/1999')
+VERSIONID(`$Id: sco-uw-2.1.m4,v 8.13 1999/04/24 05:37:43 gshapiro Exp $')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
define(`LOCAL_MAILER_PATH', `/usr/bin/rmail')dnl
-define(`LOCAL_MAILER_FLAGS', `fhCEn9')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
diff --git a/contrib/sendmail/cf/ostype/sco3.2.m4 b/contrib/sendmail/cf/ostype/sco3.2.m4
index 135fefa..89ac637 100644
--- a/contrib/sendmail/cf/ostype/sco3.2.m4
+++ b/contrib/sendmail/cf/ostype/sco3.2.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,13 +13,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)sco3.2.m4 8.11 (Berkeley) 10/6/1998')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/lib/mail/aliases'))dnl
+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(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/lib/sendmail.st'))')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
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', PuhCE9)')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
index 37d12d4..bcd6b31 100644
--- a/contrib/sendmail/cf/ostype/sinix.m4
+++ b/contrib/sendmail/cf/ostype/sinix.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,10 +13,8 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)sinix.m4 8.9 (Berkeley) 10/6/1998')
+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(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/etc/aliases'))dnl
define(`LOCAL_MAILER_PATH', `/bin/mail.local')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/var/sendmail.st'))')dnl
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/sendmail.hf'))')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
index 5a0e2a9..6cf1484 100644
--- a/contrib/sendmail/cf/ostype/solaris2.m4
+++ b/contrib/sendmail/cf/ostype/solaris2.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -10,16 +11,17 @@ divert(-1)
# 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(`@(#)solaris2.m4 8.16 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: solaris2.m4,v 8.22 1999/09/24 21:43:53 ca Exp $')
divert(-1)
-define(`ALIAS_FILE', /etc/mail/aliases)
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `SnE9')')
-ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `mail -f $g -d $u')')
+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(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.ml.m4 b/contrib/sendmail/cf/ostype/solaris2.ml.m4
index f99cebb..72cb729 100644
--- a/contrib/sendmail/cf/ostype/solaris2.ml.m4
+++ b/contrib/sendmail/cf/ostype/solaris2.ml.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -16,15 +17,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)solaris2.ml.m4 8.9 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: solaris2.ml.m4,v 8.14 1999/04/24 05:37:44 gshapiro Exp $')
divert(-1)
-define(`ALIAS_FILE', /etc/mail/aliases)
-ifdef(`HELP_FILE',, `define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/etc/mail/sendmail.hf'))')
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mail/sendmail.st'))')
ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', `/usr/lib/mail.local')')
-ifdef(`LOCAL_MAILER_FLAGS',, `define(`LOCAL_MAILER_FLAGS', `fSmn9')')
+_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(`confCW_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/local-host-names', `/etc/mail/sendmail.cw'))
define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/solaris2.pre5.m4 b/contrib/sendmail/cf/ostype/solaris2.pre5.m4
new file mode 100644
index 0000000..c30dda6
--- /dev/null
+++ b/contrib/sendmail/cf/ostype/solaris2.pre5.m4
@@ -0,0 +1,26 @@
+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/sunos3.5.m4 b/contrib/sendmail/cf/ostype/sunos3.5.m4
index aeda272..d1d776e 100644
--- a/contrib/sendmail/cf/ostype/sunos3.5.m4
+++ b/contrib/sendmail/cf/ostype/sunos3.5.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,6 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)sunos3.5.m4 8.7 (Berkeley) 5/19/1998')
+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
index 78648da..1e821ff 100644
--- a/contrib/sendmail/cf/ostype/sunos4.1.m4
+++ b/contrib/sendmail/cf/ostype/sunos4.1.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,6 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)sunos4.1.m4 8.7 (Berkeley) 5/19/1998')
+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
index d0de278..3f7706b 100644
--- a/contrib/sendmail/cf/ostype/svr4.m4
+++ b/contrib/sendmail/cf/ostype/svr4.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,13 +13,9 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)svr4.m4 8.11 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: svr4.m4,v 8.17 1999/10/21 00:31:41 gshapiro Exp $')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/ucblib/aliases'))dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
-define(`LOCAL_MAILER_FLAGS', `rmn9')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
index d10518a..128c61a 100644
--- a/contrib/sendmail/cf/ostype/ultrix4.m4
+++ b/contrib/sendmail/cf/ostype/ultrix4.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,6 +13,6 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)ultrix4.m4 8.8 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: ultrix4.m4,v 8.11 1999/02/07 07:26:24 gshapiro Exp $')
define(`confEBINDIR', `/usr/lib')dnl
diff --git a/contrib/sendmail/cf/ostype/unixware7.m4 b/contrib/sendmail/cf/ostype/unixware7.m4
index a787307..d42f8ab 100644
--- a/contrib/sendmail/cf/ostype/unixware7.m4
+++ b/contrib/sendmail/cf/ostype/unixware7.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# Copyright (c) 1998-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
@@ -9,9 +10,11 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)unixware7.m4 8.2 (Berkeley) 1/25/1999')
-define(`ALIAS_FILE', `/etc/mail/aliases')dnl
-ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /usr/spool/mqueue)')dnl
-ifdef(`STATUS_FILE',, `define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/etc/mailer/sendmail.st'))')dnl
+VERSIONID(`$Id: unixware7.m4,v 8.8 2000/02/26 01:32:04 gshapiro Exp $')
+ifdef(`QUEUE_DIR',, `define(`QUEUE_DIR', /var/spool/mqueue)')dnl
define(`confEBINDIR', `/usr/lib')dnl
define(`confTIME_ZONE', `USE_TZ')dnl
+ifdef(`LOCAL_MAILER_PATH',, `define(`LOCAL_MAILER_PATH', /etc/mail/slocal)')dnl
+_DEFIFNOT(`LOCAL_MAILER_FLAGS', `Puho9')dnl
+ifdef(`LOCAL_MAILER_ARGS',, `define(`LOCAL_MAILER_ARGS', `slocal -user $u')')dnl
+ifdef(`LOCAL_SHELL_FLAGS',, `define(`LOCAL_SHELL_FLAGS', Peu)')dnl
diff --git a/contrib/sendmail/cf/ostype/unknown.m4 b/contrib/sendmail/cf/ostype/unknown.m4
index 629c31b..2d5734c 100644
--- a/contrib/sendmail/cf/ostype/unknown.m4
+++ b/contrib/sendmail/cf/ostype/unknown.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -12,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)unknown.m4 8.6 (Berkeley) 5/19/1998')
+VERSIONID(`$Id: unknown.m4,v 8.9 1999/02/07 07:26:24 gshapiro Exp $')
errprint(`*** ERROR: You have not specified a valid operating system type.')
errprint(` Use the OSTYPE macro to select a valid system type. This')
errprint(` is necessary in order to get the proper pathnames and flags')
diff --git a/contrib/sendmail/cf/ostype/uxpds.m4 b/contrib/sendmail/cf/ostype/uxpds.m4
index 0f1d908..1ba0346 100644
--- a/contrib/sendmail/cf/ostype/uxpds.m4
+++ b/contrib/sendmail/cf/ostype/uxpds.m4
@@ -1,6 +1,7 @@
divert(-1)
#
-# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
+# 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.
@@ -15,14 +16,10 @@ divert(-1)
#
divert(0)
-VERSIONID(`@(#)uxpds.m4 8.10 (Berkeley) 10/6/1998')
+VERSIONID(`$Id: uxpds.m4,v 8.16 1999/10/21 00:31:42 gshapiro Exp $')
define(`confDEF_GROUP_ID', `6')
-define(`ALIAS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/aliases', `/usr/ucblib/aliases'))dnl
-ifdef(`HELP_FILE',,`define(`HELP_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/helpfile', `/usr/ucblib/sendmail.hf'))')dnl
-ifdef(`STATUS_FILE',,`define(`STATUS_FILE', ifdef(`_USE_ETC_MAIL_', `/etc/mail/statistics', `/usr/ucblib/sendmail.st'))')dnl
define(`LOCAL_MAILER_PATH', `/usr/ucblib/binmail')dnl
-define(`LOCAL_MAILER_FLAGS', `rmn9')dnl
define(`LOCAL_SHELL_FLAGS', `ehuP')dnl
define(`UUCP_MAILER_ARGS', `uux - -r -a$f -gmedium $h!rmail ($u)')dnl
define(`confEBINDIR', `/usr/ucblib')dnl
OpenPOWER on IntegriCloud