aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGregory Neil Shapiro <gshapiro@FreeBSD.org>2008-08-28 04:33:50 +0000
committerGregory Neil Shapiro <gshapiro@FreeBSD.org>2008-08-28 04:33:50 +0000
commite8e0e5823adff1aed6bf456d75e58353e6dcf68e (patch)
tree366be2f317b4d052916d4861096c4a53ba6f9a26
parentaa651f666c6d33d54b6572c19534539ed5ae7637 (diff)
downloadsrc-e8e0e5823adff1aed6bf456d75e58353e6dcf68e.tar.gz
src-e8e0e5823adff1aed6bf456d75e58353e6dcf68e.zip
Notes
-rwxr-xr-xBuild13
-rw-r--r--KNOWNBUGS13
-rw-r--r--PGPKEYS65
-rw-r--r--README4
-rw-r--r--RELEASE_NOTES40
-rw-r--r--cf/README6
-rwxr-xr-xcf/cf/Build29
-rw-r--r--cf/cf/generic-bsd4.4.cf1466
-rw-r--r--cf/cf/generic-hpux10.cf1466
-rw-r--r--cf/cf/generic-hpux9.cf1466
-rw-r--r--cf/cf/generic-linux.cf1470
-rw-r--r--cf/cf/generic-mpeix.cf1464
-rw-r--r--cf/cf/generic-nextstep3.3.cf1465
-rw-r--r--cf/cf/generic-osf1.cf1466
-rw-r--r--cf/cf/generic-solaris.cf1467
-rw-r--r--cf/cf/generic-sunos4.1.cf1466
-rw-r--r--cf/cf/generic-ultrix4.cf1466
-rw-r--r--cf/cf/submit.cf8
-rw-r--r--cf/m4/proto.m412
-rw-r--r--cf/m4/version.m46
-rw-r--r--devtools/M4/UNIX/all.m4121
-rw-r--r--devtools/M4/UNIX/check.m428
-rw-r--r--devtools/M4/UNIX/defines.m4169
-rw-r--r--devtools/M4/UNIX/executable.m442
-rw-r--r--devtools/M4/UNIX/footer.m419
-rw-r--r--devtools/M4/UNIX/library.m436
-rw-r--r--devtools/M4/UNIX/links.m429
-rw-r--r--devtools/M4/UNIX/manpage.m479
-rw-r--r--devtools/M4/UNIX/sm-test.m428
-rw-r--r--devtools/M4/UNIX/smlib.m427
-rw-r--r--devtools/M4/depend/AIX.m415
-rw-r--r--devtools/M4/depend/BSD.m48
-rw-r--r--devtools/M4/depend/CC-M.m48
-rw-r--r--devtools/M4/depend/NCR.m48
-rw-r--r--devtools/M4/depend/QNX6.m48
-rw-r--r--devtools/M4/depend/Solaris.m48
-rw-r--r--devtools/M4/depend/X11.m45
-rw-r--r--devtools/M4/depend/generic.m46
-rw-r--r--devtools/M4/header.m436
-rw-r--r--devtools/M4/list.m426
-rw-r--r--devtools/M4/string.m418
-rw-r--r--devtools/M4/subst_ext.m430
-rw-r--r--devtools/M4/switch.m463
-rw-r--r--devtools/OS/386BSD11
-rw-r--r--devtools/OS/A-UX13
-rw-r--r--devtools/OS/AIX14
-rw-r--r--devtools/OS/AIX.4.216
-rw-r--r--devtools/OS/AIX.4.324
-rw-r--r--devtools/OS/AIX.4.x15
-rw-r--r--devtools/OS/AIX.5.020
-rw-r--r--devtools/OS/AIX.5.120
-rw-r--r--devtools/OS/AIX.5.220
-rw-r--r--devtools/OS/AIX.5.320
-rw-r--r--devtools/OS/Altos14
-rw-r--r--devtools/OS/BSD-OS12
-rw-r--r--devtools/OS/BSD4323
-rw-r--r--devtools/OS/CLIX16
-rw-r--r--devtools/OS/CSOS11
-rw-r--r--devtools/OS/ConvexOS13
-rw-r--r--devtools/OS/Darwin25
-rw-r--r--devtools/OS/Darwin.7.x22
-rw-r--r--devtools/OS/Darwin.8.x25
-rw-r--r--devtools/OS/Darwin.9.x25
-rw-r--r--devtools/OS/Dell17
-rw-r--r--devtools/OS/DomainOS20
-rw-r--r--devtools/OS/DomainOS.10.417
-rw-r--r--devtools/OS/DragonFly42
-rw-r--r--devtools/OS/Dynix16
-rw-r--r--devtools/OS/EWS-UX_V32
-rw-r--r--devtools/OS/FreeBSD42
-rw-r--r--devtools/OS/GNU22
-rw-r--r--devtools/OS/HP-UX16
-rw-r--r--devtools/OS/HP-UX.10.x35
-rw-r--r--devtools/OS/HP-UX.11.x45
-rw-r--r--devtools/OS/IRIX15
-rw-r--r--devtools/OS/IRIX.5.x17
-rw-r--r--devtools/OS/IRIX.6.521
-rw-r--r--devtools/OS/IRIX.6.x21
-rw-r--r--devtools/OS/IRIX64.6.019
-rw-r--r--devtools/OS/IRIX64.6.119
-rw-r--r--devtools/OS/IRIX64.6.521
-rw-r--r--devtools/OS/IRIX64.6.x21
-rw-r--r--devtools/OS/ISC13
-rw-r--r--devtools/OS/Interix19
-rw-r--r--devtools/OS/KSR10
-rw-r--r--devtools/OS/LUNA48
-rw-r--r--devtools/OS/Linux37
-rw-r--r--devtools/OS/MPE-iX36
-rw-r--r--devtools/OS/Mach38613
-rw-r--r--devtools/OS/NCR.MP-RAS.2.x18
-rw-r--r--devtools/OS/NCR.MP-RAS.3.x16
-rw-r--r--devtools/OS/NEWS-OS.4.x16
-rw-r--r--devtools/OS/NEWS-OS.6.x29
-rw-r--r--devtools/OS/NEXTSTEP.4.x38
-rw-r--r--devtools/OS/NeXT.2.x24
-rw-r--r--devtools/OS/NeXT.3.x33
-rw-r--r--devtools/OS/NeXT.4.x42
-rw-r--r--devtools/OS/NetBSD19
-rw-r--r--devtools/OS/NetBSD.8.36
-rw-r--r--devtools/OS/NonStop-UX18
-rw-r--r--devtools/OS/OSF119
-rw-r--r--devtools/OS/OSF1.V5.x18
-rw-r--r--devtools/OS/OSR.i38624
-rw-r--r--devtools/OS/OpenBSD14
-rw-r--r--devtools/OS/OpenUNIX.5.i38622
-rw-r--r--devtools/OS/PTX12
-rw-r--r--devtools/OS/Paragon11
-rw-r--r--devtools/OS/PowerUX13
-rw-r--r--devtools/OS/QNX19
-rw-r--r--devtools/OS/QNX.6.x39
-rw-r--r--devtools/OS/RISCos27
-rw-r--r--devtools/OS/RISCos.4_027
-rw-r--r--devtools/OS/Rhapsody23
-rw-r--r--devtools/OS/SCO11
-rw-r--r--devtools/OS/SCO.4.213
-rw-r--r--devtools/OS/SCO.5.x13
-rw-r--r--devtools/OS/SINIX.5.4315
-rw-r--r--devtools/OS/SINIX.5.4415
-rw-r--r--devtools/OS/SVR416
-rw-r--r--devtools/OS/SunOS13
-rw-r--r--devtools/OS/SunOS.4.018
-rw-r--r--devtools/OS/SunOS.5.125
-rw-r--r--devtools/OS/SunOS.5.1026
-rw-r--r--devtools/OS/SunOS.5.1126
-rw-r--r--devtools/OS/SunOS.5.225
-rw-r--r--devtools/OS/SunOS.5.323
-rw-r--r--devtools/OS/SunOS.5.423
-rw-r--r--devtools/OS/SunOS.5.523
-rw-r--r--devtools/OS/SunOS.5.627
-rw-r--r--devtools/OS/SunOS.5.727
-rw-r--r--devtools/OS/SunOS.5.826
-rw-r--r--devtools/OS/SunOS.5.926
-rw-r--r--devtools/OS/Titan17
-rw-r--r--devtools/OS/ULTRIX14
-rw-r--r--devtools/OS/UMAX19
-rw-r--r--devtools/OS/UNICOS15
-rw-r--r--devtools/OS/UNICOS-mk15
-rw-r--r--devtools/OS/UNICOS-mp16
-rw-r--r--devtools/OS/UNIX_SV.4.x.i38615
-rw-r--r--devtools/OS/UX480027
-rw-r--r--devtools/OS/UXPDS.V1017
-rw-r--r--devtools/OS/UXPDS.V2024
-rw-r--r--devtools/OS/UnixWare.5.i38623
-rw-r--r--devtools/OS/dcosx.1.x.NILE10
-rw-r--r--devtools/OS/dgux14
-rw-r--r--devtools/OS/m88k24
-rw-r--r--devtools/OS/maxion17
-rw-r--r--devtools/OS/uts.systemV28
-rw-r--r--devtools/README398
-rw-r--r--devtools/Site/README22
-rw-r--r--devtools/Site/site.config.m4.sample62
-rwxr-xr-xdevtools/bin/Build819
-rwxr-xr-xdevtools/bin/configure.sh184
-rwxr-xr-xdevtools/bin/find_in_path.sh19
-rwxr-xr-xdevtools/bin/find_m4.sh89
-rwxr-xr-xdevtools/bin/install.sh134
-rw-r--r--doc/op/op.ps9956
-rwxr-xr-xeditmap/Build13
-rw-r--r--editmap/editmap.062
-rw-r--r--include/libmilter/mfapi.h6
-rwxr-xr-xlibmilter/Build13
-rw-r--r--libmilter/Makefile.m42
-rw-r--r--libmilter/docs/smfi_opensocket.html22
-rw-r--r--libmilter/docs/smfi_version.html24
-rw-r--r--libmilter/engine.c9
-rw-r--r--libmilter/worker.c6
-rwxr-xr-xlibsm/Build13
-rwxr-xr-xlibsmdb/Build13
-rwxr-xr-xlibsmutil/Build13
-rwxr-xr-xmail.local/Build13
-rw-r--r--mail.local/mail.local.097
-rw-r--r--mail.local/mail.local.c31
-rwxr-xr-xmailstats/Build13
-rw-r--r--mailstats/mailstats.064
-rwxr-xr-xmakemap/Build13
-rw-r--r--makemap/makemap.090
-rw-r--r--makemap/makemap.87
-rw-r--r--makemap/makemap.c7
-rwxr-xr-xpraliases/Build13
-rw-r--r--praliases/praliases.037
-rwxr-xr-xrmail/Build13
-rw-r--r--rmail/rmail.036
-rwxr-xr-xsmrsh/Build13
-rw-r--r--smrsh/README10
-rw-r--r--smrsh/smrsh.065
-rwxr-xr-xsrc/Build13
-rw-r--r--src/Makefile.m42
-rw-r--r--src/README8
-rw-r--r--src/aliases.089
-rw-r--r--src/collect.c5
-rw-r--r--src/conf.c23
-rw-r--r--src/daemon.c18
-rw-r--r--src/envelope.c16
-rw-r--r--src/mailq.081
-rw-r--r--src/main.c14
-rwxr-xr-xsrc/makesendmail13
-rw-r--r--src/mci.c29
-rw-r--r--src/newaliases.035
-rw-r--r--src/parseaddr.c9
-rw-r--r--src/queue.c8
-rw-r--r--src/ratectrl.c4
-rw-r--r--src/readcf.c20
-rw-r--r--src/sendmail.0465
-rw-r--r--src/sendmail.h20
-rw-r--r--src/sfsasl.c28
-rw-r--r--src/sm_resolve.c6
-rw-r--r--src/srvrsmtp.c53
-rw-r--r--src/sysexits.h95
-rw-r--r--src/usersmtp.c5
-rw-r--r--src/util.c9
-rw-r--r--src/version.c6
-rwxr-xr-xtest/Build13
-rwxr-xr-xvacation/Build13
-rw-r--r--vacation/vacation.0149
214 files changed, 31386 insertions, 145 deletions
diff --git a/Build b/Build
new file mode 100755
index 000000000000..44e74c51f3cb
--- /dev/null
+++ b/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.3 1999/09/23 21:31:12 ca Exp $
+
+exec make OPTIONS="$*"
diff --git a/KNOWNBUGS b/KNOWNBUGS
index 6c7adb11fdf2..998fb11c7e5e 100644
--- a/KNOWNBUGS
+++ b/KNOWNBUGS
@@ -47,6 +47,17 @@ This list is not guaranteed to be complete.
but some characters might be lost. Fix: obey RFC (2)822 and do not
send lines that are longer than 1000 characters.
+* milter communication fails if a single header is larger than 64K.
+
+ If a single header is larger than 64KB (which is not possible in the
+ default configuration) then it cannot be transferred in one block to
+ libmilter and hence the communication fails. This can be avoided by
+ increasing the constant MILTER_CHUNK_SIZE in
+ include/libmilter/mfdef.h and recompiling sendmail, libmilter, and
+ all (statically linked) milters (or by using an undocumented compile
+ time option: _FFR_MAXDATASIZE; you have to read the source code in
+ order to use this properly).
+
* Sender addresses whose domain part cause a temporary A record lookup
failure but have a valid MX record will be temporarily rejected in
the default configuration. Solution: fix the DNS at the sender side.
@@ -247,4 +258,4 @@ Kresolve sequence dnsmx canon
be used if set instead of LOCAL_RELAY ($R). This will be fixed in a
future version.
-$Revision: 8.59 $, Last updated $Date: 2007/02/21 23:13:58 $
+$Revision: 8.60 $, Last updated $Date: 2007/12/04 01:16:50 $
diff --git a/PGPKEYS b/PGPKEYS
index a6d7f5e1403b..3f7e9226d968 100644
--- a/PGPKEYS
+++ b/PGPKEYS
@@ -142,6 +142,69 @@ gpExpdV7qPrw9k01j5rod5PjZlG8zV0=
-----END PGP PUBLIC KEY BLOCK-----
Type Bits KeyID Created Expires Algorithm Use
+pub 1024 0xF6B30729 2008-01-18 ---------- RSA Sign & Encrypt
+f16 Fingerprint16 = 07 FB 9A F9 F7 94 4B E4 0F 28 D1 8E 23 6F A2 B0
+uid Sendmail Signing Key/2008 <sendmail@Sendmail.ORG>
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.8 (Darwin)
+
+mQCNA0eP9NsAAAEEAM5xPc5UXm01Mnqad8NPc5RkbeWcotxNOZXwrz4qQM6sr/E2
+lEMGgo5FOjWJX3tjtys8gfXZJihz3XMD5RleniW3RIhc2tbTJotNq9Qq9+LmiuBs
+lT32O3ZSKsQtHQSfZ0j2bIabC/aQ4Dhfz13wz7x6VvRGwDbX3Niq8Mr2swcpAAUR
+tDFTZW5kbWFpbCBTaWduaW5nIEtleS8yMDA4IDxzZW5kbWFpbEBTZW5kbWFpbC5P
+Ukc+iQCVAwUQR4/029iq8Mr2swcpAQGa3QP+O6q/DvRLzM03AwIrEPRjdswejima
+4BjKYYVQ1Qa7m4pyQeY/0CJScqu5A7p+kCrLqznmHu5aeezvjZy1mW7OCScPrCN9
+yC3IJdu7oX6mGZwPdUnsEyJvtHmiRXkumJtncmhcTZyplmt9ZDHVADQUQWRnyuex
+oToSOeMPjS8YBpSJAJUDBRBHj/Xol0MBGHCTuEEBAYnzBAC5U2c8RtxNwwV4wh7V
+Q4isNyXcYqUlUL5ZjtsP5+vuHz4d1CtT/tD4jGagy6J30xUuwUcF7AlNLIcn4z98
+GqF/aMCANut3dpGbzzvLYg+SkKkrZKH6fF4QPbdotp8NWKeiihoqD+hD6sVNc3zZ
+/JymsmD1T346VpRTwKf4JzkJG4kAlQMFEEeP9hEee7PIr5WWJQEBP1sD/3I5VeiC
+lW9fmwaAyOt/BrPIfsieL2TLysXCQbXFObNqqdR9APPlmQAtFdERjopQZu+VKvZd
+pInWGaIegibPr4ZyGHmGxmJwYyHCt0MNvjY2oA1WPVRvXz2dno7Q5SFDR0sQaFKe
+4knKfzGu8fngy//R1vlO+UE3vTQ3cgTaIpDsiQCVAwUQR4/2GXCgJE0e+ZJRAQEH
+6QP9FVDSFnXCSPy+tNFlLhtpjVOEqREG30iezAVZlx+yJVSb3/sG0LRCvXB1w3td
+jzW7A1iCvEQVb1yuNSFPb6Dq7TKoSpS8XZyCIetCpzab06D319Ubfcs2lHaDioY6
+ibSaysDrBDETyXg1eQBIUQ+9iltfkI6HRpm5vgz8d4iwieqJAJUDBRBHj/YgyNXt
+KZX2F3EBASjtBACNzoDfjET153Zd3PQlj2X6b9BzjS8XHsjMuo+F04u9o3g78MSt
++g2HW5Xi1ORh/LFSrkK7Qi9jLREr3dKQM9jjhfvxidN80H8jNyUIUJ3d1/K123rP
+z7GuXhXCfDCq/tjveUiVkoxQ1Q5h2OsXKqC0p7C7qpXKTg2CHLdbYTg/rIkAlQMF
+EEeP9mAhg+GxOW8HiQEBRpAEAI9MQwE6xoG08vdkrn8/tZEfK/h3zc3UgT5sjME3
+NPbWD9o0W/KlIA7JKIpIYbX1M3GgGU5rlWmFyuRD5XVvu4NJ761PXAHenhg3wEk9
+TySAwH7Edlhr0M1goALxpjiAzrh+hc0x2rz2jMcuRQlSh19MMe9sc9pDgUaXl7QJ
+Z51oiQCVAwUQR4/2colpYrhnjAoDAQHWPAP6AlqqzMhKJtWxVP4k10r06MwuUkOn
+tAeuPL4semoKb8lTtuBG14vADXsoavifuq2iv4KQCncGn3yWglCUjG46DKLluZyG
+uWjE44PEEiIs1zYzWo9F1Nw2C5VDR41/rzLqNctqr+bXac0lO3aRLgW1SkqJLI41
+M+yXMYkf99dM4cuJAJUDBRBHj/Z6OCLbR8w3Ty0BAUwaBACH9QViBa/sejJULNu8
+3i8B5tq0HOKvAzAQp/a79MxdFnhL8XrIhsTrprh3+/JvljrWLkfMe2tsVBTdTMJf
+snjjCijgtuCKaR5ESyu1Kl2E8mhp1A032LWRYYrxSyJqklqNem4HeZAN4N1CzMoS
+Iw5ELNeocuNmkBQn1xmkMYXiC4kAlQMFEEeP9pKcHL3i41xWNQEBqjgD/i9sEpQo
+0YTW77za+n2rQD3141UZwql/F4cO0ds4sLSwJ3h4Ba8OkATHU1W2LbpogvpfvL6B
+1H+4D7vo/VY/fSiNGUb8TjZfcj65ACToYokxK6PwBHL85jaWGh83kMS8pYDBL7zP
+sJ3sCyayKwAXOFpT7doaZU5FsC7tNMwlnRCuiQCVAwUQR4/2t29Sk9ijm6ZVAQGP
+TQP/Qbj1ZsqZfQn+7SXPmW0Y9+xUUQ351ecD1UX3yhuL195djP/O7ebeTiCBFkaG
+gWfMZtNCtaPQr1BhXBF9Xkum4IseUlRz1mTsdrhbAVtL6mGWMYcxQFTx13pHiGYS
+IaJhc+XQIxc7wmfW2LjOZpcHi0E2dhcjMEoWZGyEzKI/cJ2JAJUDBRBHj/bE71iW
+ZNQy4Z0BAe8aA/4oiv/MRmiRdDrVY8kTIZWb4whGYLqKEScOEuqir0PrMtyEUkzP
+YpkM1u3Cf4+zbtmgN16sx6DfyHAVGyI0U14hvnQhuVrrBs23dxGj2iciu14BvNJU
+YVaAoAWSp8qA14fDOAGd1H/InQmDZJrAiH61wQwjLrU1oI44Dr+55KHgO4kAlQMF
+EEeP9s3BnB0lEtNGHQEBxk4D/2WTAGSVuwDUGeIaHM1NVrgRcFFqrz37farxYNKx
+7jZ1EqJXZXTqtSAUVc5LB8ko7V0P8w7CLso3Jj3hvFdYOt+6howpI/FO1Ur6RbTC
+ik6RUMbHRvIxpcTzZvRmWlMGcMdJFcCxsliOG7cyjpeuisaGJFIhyqfpAdqMKRn2
+jOrqiQCVAwUQR4/5GcApykAW9MzpAQFuCgQAjaPwttPvJNegPa/KqZFVVO/VDaRm
+9Aeiktw8lWlTE7BJ9SIePdsTEbKIzER/gVt85bOptJo6xpXaodoIjXWiSD+PHbdz
+tuEp88zv0B0mJcKSRIPt/u+baAgR2dKR1jlNvEjbpCm9rei+vqRNREpdrk32ls5d
+VwtrkbnFDuzLcgKJAJUDBRBHj/r11uCh/k++Kt0BAQvcBACq594Jrh+y+Pqf4bCL
+8LrBqspvPL9MTMWDdwWvT7Yoaa+cyApuUWqpkyh8alWAwxnJmyw9I14zBr219862
+0Rb1oCo2TDL/pMz8WVpyjD0RIxs4FcoJODD52kYxhLadKk0OrCXfrpWvIcp4sRJa
+kOWK3QzpD/0NtFJLZ+BnNq39h4kAlQMFEEeP+wK92o/WP+p9/QEBtVID/1AxNsk7
+/ktDwz/khcTsCLILgtuKh+7jZa6K8FhhoqNXbjyUhZYjGne6No72KJ52P6P7iPLu
+SPDOmhu+z0kNTTm0KsWRSzQeUD08qyoB3qNcdxcRgAOJHl0MCXUwSxumfBb4iJq2
+5282RCnsKroyWAhV8KjoJer1hTKCsu58Lqrv
+=jDs3
+-----END PGP PUBLIC KEY BLOCK-----
+
+Type Bits KeyID Created Expires Algorithm Use
pub 1024 0x7093B841 2006-12-16 ---------- RSA Sign & Encrypt
f16 Fingerprint16 = D9 FD C5 6B EE 1E 7A A8 CE 27 D9 B9 55 8B 56 B6
uid Sendmail Signing Key/2007 <sendmail@Sendmail.ORG>
@@ -1729,4 +1792,4 @@ DnF3FZZEzV7oqPwC2jzv/1dD6GFhtgy0cnyoPGUJCyc=
=nES8
-----END PGP PUBLIC KEY BLOCK-----
-$Revision: 8.25 $, Last updated $Date: 2007/01/02 22:38:08 $
+$Revision: 8.26 $, Last updated $Date: 2008/01/22 06:20:27 $
diff --git a/README b/README
index b0c25e5b74b3..a8db16227a3e 100644
--- a/README
+++ b/README
@@ -312,7 +312,7 @@ nicer to animals and plants. If the Berkeley DB include files
are installed in a location other than those which your compiler searches,
you will need to provide that directory when building:
- Build -I/path/to/include/directory
+ ./Build -I/path/to/include/directory
If you are using Berkeley DB versions 1.85 or 1.86, you are *strongly*
urged to upgrade to DB version 2 or later, available from
@@ -464,4 +464,4 @@ sendmail Source for the sendmail program itself.
test Some test scripts (currently only for compilation aids).
vacation Source for the vacation program. NOT PART OF SENDMAIL!
-$Revision: 8.93 $, Last updated $Date: 2005/09/16 20:08:50 $
+$Revision: 8.94 $, Last updated $Date: 2008/02/12 16:40:05 $
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
index 8a0b51c3441f..0d8ed8663c09 100644
--- a/RELEASE_NOTES
+++ b/RELEASE_NOTES
@@ -1,11 +1,47 @@
SENDMAIL RELEASE NOTES
- $Id: RELEASE_NOTES,v 8.1909 2007/10/31 16:04:13 ca Exp $
+ $Id: RELEASE_NOTES,v 8.1926 2008/05/03 03:34:26 ca Exp $
This listing shows the version of the sendmail binary, the version
of the sendmail configuration files, the date of release, and a
summary of the changes in that release.
+8.14.3/8.14.3 2008/05/03
+ During ruleset processing the generation of a key for a map
+ lookup and the parsing of the default value was broken
+ for some macros, e.g., $|, which caused the BlankSub
+ character to be inserted into the workspace and thus
+ failures, e.g., rules that should have matched did not.
+ 8.14.2 caused a regression: it accessed (macro) storage which was
+ freed before. First instance of the problem reported by
+ Matthew Dillon of DragonFlyBSD; variations of the same
+ bug reported by Todd C. Miller of OpenBSD, Moritz
+ Jodeit, and Dave Hayes.
+ Improve pathname length checks for persistent host status. Patch
+ from Joerg Sonnenberger of DragonFlyBSD.
+ Reword misleading SMTP reply text for FEATURE(`badmx'). Problem
+ noted by Beth Halsema.
+ The read timeout was fixed to be Timeout.datablock if STARTTLS
+ was activated. This may cause problems if that value
+ is lowered from its default. Problem noted by Jens Elkner.
+ CONFIG: Using LOCAL_TLS_CLIENT caused the tls_client ruleset
+ to operate incorrectly. Problem found by Werner Wiethege.
+ LIBMILTER: Omitting some protocol steps via the xxfi_negotiate()
+ callback did not work properly. The patchlevel of
+ libmilter has been set to 1 so a milter can determine
+ whether libmilter contains this fix.
+ MAKEMAP: If a delimiter is specified (-t) use that also when
+ dumping a map. Patch from Todd C. Miller of OpenBSD.
+ Portability:
+ Add support for Darwin 9.x (Mac OS X 10.5).
+ Support shared libraries in Darwin 8 and 9. Patch from
+ Chris Behrens of Concentric.
+ Add support for SCO OpenServer 6, patch from Boyd Gerber.
+ DEVTOOLS: Clarify that confSHAREDLIBDIR requires a trailing path.
+ Added Files:
+ devtools/OS/Darwin.9.x
+ devtools/OS/OSR.i386
+
8.14.2/8.14.2 2007/11/01
If a message was queued and it contained 8 bit characters in
a From: or To: header, then those characters could be
@@ -24,7 +60,7 @@ summary of the changes in that release.
Prior to 8.14 this happened only if milter could delete
recipients.
ClientRate should trigger when the limit was exceeded (as
- documented), not when it was reached. Patch from
+ documented), not when it was reached. Patch from
John Beck of Sun Microsystems.
Force a queue run for -qGqueuegroup even if no runners are
specified (R=0) and forking (F=f) is requested.
diff --git a/cf/README b/cf/README
index 81689ad8009a..43737f60bce6 100644
--- a/cf/README
+++ b/cf/README
@@ -1008,7 +1008,9 @@ virtusertable A domain-specific form of aliasing, allowing multiple
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:
+ to (and from) those domains, which by default includes also
+ all subdomains (see relay_hosts_only). The default map
+ definition is:
hash /etc/mail/virtusertable
@@ -4699,4 +4701,4 @@ M4 DIVERSIONS
8 DNS based blacklists
9 special local rulesets (1 and 2)
-$Revision: 8.722 $, Last updated $Date: 2007/04/03 21:26:58 $
+$Revision: 8.724 $, Last updated $Date: 2008/02/15 23:05:32 $
diff --git a/cf/cf/Build b/cf/cf/Build
new file mode 100755
index 000000000000..77055f2dbd83
--- /dev/null
+++ b/cf/cf/Build
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.7 1999/03/02 02:37:12 peterh Exp $
+#
+
+#
+# A quick-and-dirty script to create cf files.
+#
+
+SMROOT=${SMROOT-../..}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/devtools}
+
+M4=`sh $BUILDTOOLS/bin/find_m4.sh`
+ret=$?
+if [ $ret -ne 0 ]
+then
+ exit $ret
+fi
+echo "Using M4=$M4"
+
+eval exec ${MAKE-make} M4=$M4 $*
diff --git a/cf/cf/generic-bsd4.4.cf b/cf/cf/generic-bsd4.4.cf
new file mode 100644
index 000000000000..da8cce260f71
--- /dev/null
+++ b/cf/cf/generic-bsd4.4.cf
@@ -0,0 +1,1466 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $ #####
+
+##### $Id: bsd4.4.m4,v 8.14 1999/04/24 05:37:40 gshapiro Exp $ #####
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+O StatusFile=/var/log/sendmail.st
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/usr/libexec/mail.local, F=lsDFMAw5:/|@qPrmn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=mail -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-bsd4.4.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for 4.4 BSD-based systems,
+# # including 4.4-Lite, BSDi, NetBSD, and FreeBSD.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')
+# OSTYPE(bsd4.4)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-hpux10.cf b/cf/cf/generic-hpux10.cf
new file mode 100644
index 000000000000..b5df4388bd18
--- /dev/null
+++ b/cf/cf/generic-hpux10.cf
@@ -0,0 +1,1466 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-hpux10.mc,v 8.13 2001/05/29 17:29:52 ca Exp $ #####
+
+##### $Id: hpux10.m4,v 8.19 1999/04/24 05:37:41 gshapiro Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/usr/bin/rmail, F=lsDFMAw5:/|@qm9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=rmail -d $u
+Mprog, P=/usr/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-hpux10.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for HP-UX 10.x.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-hpux10.mc,v 8.13 2001/05/29 17:29:52 ca Exp $')
+# OSTYPE(hpux10)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-hpux9.cf b/cf/cf/generic-hpux9.cf
new file mode 100644
index 000000000000..6b38c5bdd850
--- /dev/null
+++ b/cf/cf/generic-hpux9.cf
@@ -0,0 +1,1466 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-hpux9.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $ #####
+
+##### $Id: hpux9.m4,v 8.24 1999/04/24 05:37:41 gshapiro Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/usr/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/bin/rmail, F=lsDFMAw5:/|@qm9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=rmail -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-hpux9.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for HP-UX 9.x.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-hpux9.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
+# OSTYPE(hpux9)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-linux.cf b/cf/cf/generic-linux.cf
new file mode 100644
index 000000000000..2cd89253dbd1
--- /dev/null
+++ b/cf/cf/generic-linux.cf
@@ -0,0 +1,1470 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-linux.mc,v 8.1 1999/09/24 22:48:05 gshapiro Exp $ #####
+
+##### $Id: linux.m4,v 8.13 2000/09/17 17:30:00 gshapiro Exp $ #####
+
+
+
+##### $Id: local_procmail.m4,v 8.22 2002/11/17 04:24:19 ca Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=procmail -Y -a $h -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-linux.mc ###
+# 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/cf/cf/generic-mpeix.cf b/cf/cf/generic-mpeix.cf
new file mode 100644
index 000000000000..f94d61c8681e
--- /dev/null
+++ b/cf/cf/generic-mpeix.cf
@@ -0,0 +1,1464 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-mpeix.mc,v 8.1 2001/12/13 23:56:37 gshapiro Exp $ #####
+
+##### $Id: mpeix.m4,v 1.1 2001/12/13 23:56:40 gshapiro Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+O DontBlameSendmail=ForwardFileInGroupWritableDirPath
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+O DefaultUser=SERVER.SENDMAIL
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+O TrustedUser=SERVER.SENDMAIL
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/bin/tsmail, F=lsDFMAw5:/|@qmu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=tsmail $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-mpeix.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 2001 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for HP MPE/iX.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-mpeix.mc,v 8.1 2001/12/13 23:56:37 gshapiro Exp $')
+# OSTYPE(mpeix)dnl
+# DOMAIN(generic)dnl
+# define(`confFORWARD_PATH', `$z/.forward')dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-nextstep3.3.cf b/cf/cf/generic-nextstep3.3.cf
new file mode 100644
index 000000000000..7ff514cd0c21
--- /dev/null
+++ b/cf/cf/generic-nextstep3.3.cf
@@ -0,0 +1,1465 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-nextstep3.3.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $ #####
+
+##### $Id: nextstep.m4,v 8.21 1999/10/21 00:31:40 gshapiro Exp $ #####
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/usr/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qPrmn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=mail -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeuP, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-nextstep3.3.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for NEXTSTEP 3.3 systems.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-nextstep3.3.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $')
+# OSTYPE(nextstep)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-osf1.cf b/cf/cf/generic-osf1.cf
new file mode 100644
index 000000000000..62171c299d61
--- /dev/null
+++ b/cf/cf/generic-osf1.cf
@@ -0,0 +1,1466 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-osf1.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $ #####
+
+##### $Id: osf1.m4,v 8.16 1999/10/11 18:45:43 gshapiro Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+O StatusFile=/usr/adm/sendmail/sendmail.st
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+O DefaultUser=daemon
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qPrmn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=mail -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-osf1.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for OSF/1.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-osf1.mc,v 8.11 1999/02/07 07:26:02 gshapiro Exp $')
+# OSTYPE(osf1)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-solaris.cf b/cf/cf/generic-solaris.cf
new file mode 100644
index 000000000000..2f58b6538147
--- /dev/null
+++ b/cf/cf/generic-solaris.cf
@@ -0,0 +1,1467 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $ #####
+
+##### $Id: solaris2.m4,v 8.22 1999/09/24 21:43:53 ca Exp $ #####
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/usr/lib/mail.local, F=lsDFMAw5:/|@qfSmn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=mail.local -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-solaris.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for SunOS 5.x (a.k.a. Solaris 2.x
+# # and Solaris 7 through the present version).
+# #
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-solaris.mc,v 8.13 2001/06/27 21:46:30 gshapiro Exp $')
+# OSTYPE(solaris2)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-sunos4.1.cf b/cf/cf/generic-sunos4.1.cf
new file mode 100644
index 000000000000..534e482bfe85
--- /dev/null
+++ b/cf/cf/generic-sunos4.1.cf
@@ -0,0 +1,1466 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-sunos4.1.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $ #####
+
+##### $Id: sunos4.1.m4,v 8.10 1999/02/07 07:26:24 gshapiro Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qPrmn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=mail -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-sunos4.1.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for SunOS 4.1.x.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-sunos4.1.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $')
+# OSTYPE(sunos4.1)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/generic-ultrix4.cf b/cf/cf/generic-ultrix4.cf
new file mode 100644
index 000000000000..d96d1f8f05d5
--- /dev/null
+++ b/cf/cf/generic-ultrix4.cf
@@ -0,0 +1,1466 @@
+#
+# Copyright (c) 1998-2004 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
+# Copyright (c) 1988, 1993
+# The Regents of the University of California. All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+
+######################################################################
+######################################################################
+#####
+##### SENDMAIL CONFIGURATION FILE
+#####
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:38:59 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
+##### using ../ as configuration include directory
+#####
+######################################################################
+#####
+##### DO NOT EDIT THIS FILE! Only edit the source .mc file.
+#####
+######################################################################
+######################################################################
+
+##### $Id: cfhead.m4,v 8.116 2004/01/28 22:02:22 ca Exp $ #####
+##### $Id: cf.m4,v 8.32 1999/02/07 07:26:14 gshapiro Exp $ #####
+##### $Id: generic-ultrix4.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $ #####
+
+##### $Id: ultrix4.m4,v 8.11 1999/02/07 07:26:24 gshapiro Exp $ #####
+
+
+##### $Id: generic.m4,v 8.15 1999/04/04 00:51:09 ca Exp $ #####
+
+##### $Id: redirect.m4,v 8.15 1999/08/06 01:47:36 gshapiro Exp $ #####
+
+##### $Id: use_cw_file.m4,v 8.11 2001/08/26 20:58:57 gshapiro Exp $ #####
+
+
+
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
+
+# level 10 config file format
+V10/Berkeley
+
+# override file safeties - setting this option compromises system security,
+# addressing the actual file configuration problem is preferred
+# need to set this before any file actions are encountered in the cf file
+#O DontBlameSendmail=safe
+
+# default LDAP map specification
+# need to set this now before any LDAP maps are defined
+#O LDAPDefaultSpec=-h localhost
+
+##################
+# local info #
+##################
+
+# my LDAP cluster
+# need to set this before any LDAP lookups are done (including classes)
+#D{sendmailMTACluster}$m
+
+Cwlocalhost
+# file containing names of hosts for which we receive email
+Fw/etc/mail/local-host-names
+
+# my official domain name
+# ... define this only if sendmail cannot automatically determine your domain
+#Dj$w.Foo.COM
+
+# host/domain names ending with a token in class P are canonical
+CP.
+
+# "Smart" relay host (may be null)
+DS
+
+
+# operators that cannot be in local usernames (i.e., network indicators)
+CO @ % !
+
+# a class with just dot (for identifying canonical names)
+C..
+
+# a class with just a left bracket (for identifying domain literals)
+C[[
+
+
+# Resolve map (to check if a host exists in check_mail)
+Kresolve host -a<OKR> -T<TEMP>
+C{ResOk}OKR
+
+
+# Hosts for which relaying is permitted ($=R)
+FR-o /etc/mail/relay-domains
+
+# arithmetic map
+Karith arith
+
+
+
+
+
+# dequoting map
+Kdequote dequote
+
+# class E: names that should be exposed as from this host, even if we masquerade
+# class L: names that should be delivered locally, even if we have a relay
+# class M: domains that should be converted to $M
+# class N: domains that should not be converted to $M
+#CL root
+C{E}root
+
+
+
+# my name for error messages
+DnMAILER-DAEMON
+
+
+CPREDIRECT
+
+# Configuration version number
+DZ8.14.3
+
+
+###############
+# Options #
+###############
+
+# strip message body to 7 bits on input?
+O SevenBitInput=False
+
+# 8-bit data handling
+#O EightBitMode=pass8
+
+# wait for alias file rebuild (default units: minutes)
+O AliasWait=10
+
+# location of alias file
+O AliasFile=/etc/mail/aliases
+
+# minimum number of free blocks on filesystem
+O MinFreeBlocks=100
+
+# maximum message size
+#O MaxMessageSize=0
+
+# substitution for space (blank) characters
+O BlankSub=.
+
+# avoid connecting to "expensive" mailers on initial submission?
+O HoldExpensive=False
+
+# checkpoint queue runs after every N successful deliveries
+#O CheckpointInterval=10
+
+# default delivery mode
+O DeliveryMode=background
+
+# error message header/file
+#O ErrorHeader=/etc/mail/error-header
+
+# error mode
+#O ErrorMode=print
+
+# save Unix-style "From_" lines at top of header?
+#O SaveFromLine=False
+
+# queue file mode (qf files)
+#O QueueFileMode=0600
+
+# temporary file mode
+O TempFileMode=0600
+
+# match recipients against GECOS field?
+#O MatchGECOS=False
+
+# maximum hop count
+#O MaxHopCount=25
+
+# location of help file
+O HelpFile=/etc/mail/helpfile
+
+# ignore dots as terminators in incoming messages?
+#O IgnoreDots=False
+
+# name resolver options
+#O ResolverOptions=+AAONLY
+
+# deliver MIME-encapsulated error messages?
+O SendMimeErrors=True
+
+# Forward file search path
+O ForwardPath=$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward
+
+# open connection cache size
+O ConnectionCacheSize=2
+
+# open connection cache timeout
+O ConnectionCacheTimeout=5m
+
+# persistent host status directory
+#O HostStatusDirectory=.hoststat
+
+# single thread deliveries (requires HostStatusDirectory)?
+#O SingleThreadDelivery=False
+
+# use Errors-To: header?
+O UseErrorsTo=False
+
+# log level
+O LogLevel=9
+
+# send to me too, even in an alias expansion?
+#O MeToo=True
+
+# verify RHS in newaliases?
+O CheckAliases=False
+
+# default messages to old style headers if no special punctuation?
+O OldStyleHeaders=True
+
+# SMTP daemon options
+O DaemonPortOptions=Name=MTA
+O DaemonPortOptions=Port=587, Name=MSA, M=E
+
+# SMTP client options
+#O ClientPortOptions=Family=inet, Address=0.0.0.0
+
+# Modifiers to define {daemon_flags} for direct submissions
+#O DirectSubmissionModifiers
+
+# Use as mail submission program? See sendmail/SECURITY
+#O UseMSP
+
+# privacy flags
+O PrivacyOptions=authwarnings
+
+# who (if anyone) should get extra copies of error messages
+#O PostmasterCopy=Postmaster
+
+# slope of queue-only function
+#O QueueFactor=600000
+
+# limit on number of concurrent queue runners
+#O MaxQueueChildren
+
+# maximum number of queue-runners per queue-grouping with multiple queues
+#O MaxRunnersPerQueue=1
+
+# priority of queue runners (nice(3))
+#O NiceQueueRun
+
+# shall we sort the queue by hostname first?
+#O QueueSortOrder=priority
+
+# minimum time in queue before retry
+#O MinQueueAge=30m
+
+# how many jobs can you process in the queue?
+#O MaxQueueRunSize=0
+
+# perform initial split of envelope without checking MX records
+#O FastSplit=1
+
+# queue directory
+O QueueDirectory=/var/spool/mqueue
+
+# key for shared memory; 0 to turn off, -1 to auto-select
+#O SharedMemoryKey=0
+
+# file to store auto-selected key for shared memory (SharedMemoryKey = -1)
+#O SharedMemoryKeyFile
+
+# timeouts (many of these)
+#O Timeout.initial=5m
+#O Timeout.connect=5m
+#O Timeout.aconnect=0s
+#O Timeout.iconnect=5m
+#O Timeout.helo=5m
+#O Timeout.mail=10m
+#O Timeout.rcpt=1h
+#O Timeout.datainit=5m
+#O Timeout.datablock=1h
+#O Timeout.datafinal=1h
+#O Timeout.rset=5m
+#O Timeout.quit=2m
+#O Timeout.misc=2m
+#O Timeout.command=1h
+#O Timeout.ident=5s
+#O Timeout.fileopen=60s
+#O Timeout.control=2m
+O Timeout.queuereturn=5d
+#O Timeout.queuereturn.normal=5d
+#O Timeout.queuereturn.urgent=2d
+#O Timeout.queuereturn.non-urgent=7d
+#O Timeout.queuereturn.dsn=5d
+O Timeout.queuewarn=4h
+#O Timeout.queuewarn.normal=4h
+#O Timeout.queuewarn.urgent=1h
+#O Timeout.queuewarn.non-urgent=12h
+#O Timeout.queuewarn.dsn=4h
+#O Timeout.hoststatus=30m
+#O Timeout.resolver.retrans=5s
+#O Timeout.resolver.retrans.first=5s
+#O Timeout.resolver.retrans.normal=5s
+#O Timeout.resolver.retry=4
+#O Timeout.resolver.retry.first=4
+#O Timeout.resolver.retry.normal=4
+#O Timeout.lhlo=2m
+#O Timeout.auth=10m
+#O Timeout.starttls=1h
+
+# time for DeliverBy; extension disabled if less than 0
+#O DeliverByMin=0
+
+# should we not prune routes in route-addr syntax addresses?
+#O DontPruneRoutes=False
+
+# queue up everything before forking?
+O SuperSafe=True
+
+# status file
+#O StatusFile
+
+# time zone handling:
+# if undefined, use system default
+# if defined but null, use TZ envariable passed in
+# if defined and non-null, use that info
+#O TimeZoneSpec=
+
+# default UID (can be username or userid:groupid)
+#O DefaultUser=mailnull
+
+# list of locations of user database file (null means no lookup)
+#O UserDatabaseSpec=/etc/mail/userdb
+
+# fallback MX host
+#O FallbackMXhost=fall.back.host.net
+
+# fallback smart host
+#O FallbackSmartHost=fall.back.host.net
+
+# if we are the best MX host for a site, try it directly instead of config err
+#O TryNullMXList=False
+
+# load average at which we just queue messages
+#O QueueLA=8
+
+# load average at which we refuse connections
+#O RefuseLA=12
+
+# log interval when refusing connections for this long
+#O RejectLogInterval=3h
+
+# load average at which we delay connections; 0 means no limit
+#O DelayLA=0
+
+# maximum number of children we allow at one time
+#O MaxDaemonChildren=0
+
+# maximum number of new connections per second
+#O ConnectionRateThrottle=0
+
+# Width of the window
+#O ConnectionRateWindowSize=60s
+
+# work recipient factor
+#O RecipientFactor=30000
+
+# deliver each queued job in a separate process?
+#O ForkEachJob=False
+
+# work class factor
+#O ClassFactor=1800
+
+# work time factor
+#O RetryFactor=90000
+
+# default character set
+#O DefaultCharSet=unknown-8bit
+
+# service switch file (name hardwired on Solaris, Ultrix, OSF/1, others)
+#O ServiceSwitchFile=/etc/mail/service.switch
+
+# hosts file (normally /etc/hosts)
+#O HostsFile=/etc/hosts
+
+# dialup line delay on connection failure
+#O DialDelay=0s
+
+# action to take if there are no recipients in the message
+#O NoRecipientAction=none
+
+# chrooted environment for writing to files
+#O SafeFileEnvironment
+
+# are colons OK in addresses?
+#O ColonOkInAddr=True
+
+# shall I avoid expanding CNAMEs (violates protocols)?
+#O DontExpandCnames=False
+
+# SMTP initial login message (old $e macro)
+O SmtpGreetingMessage=$j Sendmail $v/$Z; $b
+
+# UNIX initial From header format (old $l macro)
+O UnixFromLine=From $g $d
+
+# From: lines that have embedded newlines are unwrapped onto one line
+#O SingleLineFromHeader=False
+
+# Allow HELO SMTP command that does not include a host name
+#O AllowBogusHELO=False
+
+# Characters to be quoted in a full name phrase (@,;:\()[] are automatic)
+#O MustQuoteChars=.
+
+# delimiter (operator) characters (old $o macro)
+O OperatorChars=.:%@!^/[]+
+
+# shall I avoid calling initgroups(3) because of high NIS costs?
+#O DontInitGroups=False
+
+# are group-writable :include: and .forward files (un)trustworthy?
+# True (the default) means they are not trustworthy.
+#O UnsafeGroupWrites=True
+
+
+# where do errors that occur when sending errors get sent?
+#O DoubleBounceAddress=postmaster
+
+# issue temporary errors (4xy) instead of permanent errors (5xy)?
+#O SoftBounce=False
+
+# where to save bounces if all else fails
+#O DeadLetterDrop=/var/tmp/dead.letter
+
+# what user id do we assume for the majority of the processing?
+#O RunAsUser=sendmail
+
+# maximum number of recipients per SMTP envelope
+#O MaxRecipientsPerMessage=0
+
+# limit the rate recipients per SMTP envelope are accepted
+# once the threshold number of recipients have been rejected
+#O BadRcptThrottle=0
+
+# shall we get local names from our installed interfaces?
+#O DontProbeInterfaces=False
+
+# Return-Receipt-To: header implies DSN request
+#O RrtImpliesDsn=False
+
+# override connection address (for testing)
+#O ConnectOnlyTo=0.0.0.0
+
+# Trusted user for file ownership and starting the daemon
+#O TrustedUser=root
+
+# Control socket for daemon management
+#O ControlSocketName=/var/spool/mqueue/.control
+
+# Maximum MIME header length to protect MUAs
+#O MaxMimeHeaderLength=0/0
+
+# Maximum length of the sum of all headers
+O MaxHeadersLength=32768
+
+# Maximum depth of alias recursion
+#O MaxAliasRecursion=10
+
+# location of pid file
+#O PidFile=/var/run/sendmail.pid
+
+# Prefix string for the process title shown on 'ps' listings
+#O ProcessTitlePrefix=prefix
+
+# Data file (df) memory-buffer file maximum size
+#O DataFileBufferSize=4096
+
+# Transcript file (xf) memory-buffer file maximum size
+#O XscriptFileBufferSize=4096
+
+# lookup type to find information about local mailboxes
+#O MailboxDatabase=pw
+
+# override compile time flag REQUIRES_DIR_FSYNC
+#O RequiresDirfsync=true
+
+# list of authentication mechanisms
+#O AuthMechanisms=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
+
+# Authentication realm
+#O AuthRealm
+
+# default authentication information for outgoing connections
+#O DefaultAuthInfo=/etc/mail/default-auth-info
+
+# SMTP AUTH flags
+#O AuthOptions
+
+# SMTP AUTH maximum encryption strength
+#O AuthMaxBits
+
+# SMTP STARTTLS server options
+#O TLSSrvOptions
+
+# Input mail filters
+#O InputMailFilters
+
+
+# CA directory
+#O CACertPath
+# CA file
+#O CACertFile
+# Server Cert
+#O ServerCertFile
+# Server private key
+#O ServerKeyFile
+# Client Cert
+#O ClientCertFile
+# Client private key
+#O ClientKeyFile
+# File containing certificate revocation lists
+#O CRLFile
+# DHParameters (only required if DSA/DH is used)
+#O DHParameters
+# Random data source (required for systems without /dev/urandom under OpenSSL)
+#O RandFile
+
+# Maximum number of "useless" commands before slowing down
+#O MaxNOOPCommands=20
+
+# Name to use for EHLO (defaults to $j)
+#O HeloName
+
+############################
+# QUEUE GROUP DEFINITIONS #
+############################
+
+
+###########################
+# Message precedences #
+###########################
+
+Pfirst-class=0
+Pspecial-delivery=100
+Plist=-30
+Pbulk=-60
+Pjunk=-100
+
+#####################
+# Trusted users #
+#####################
+
+# this is equivalent to setting class "t"
+#Ft/etc/mail/trusted-users
+Troot
+Tdaemon
+Tuucp
+
+#########################
+# Format of headers #
+#########################
+
+H?P?Return-Path: <$g>
+HReceived: $?sfrom $s $.$?_($?s$|from $.$_)
+ $.$?{auth_type}(authenticated$?{auth_ssf} bits=${auth_ssf}$.)
+ $.by $j ($v/$Z)$?r with $r$. id $i$?{tls_version}
+ (version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify})$.$?u
+ for $u; $|;
+ $.$b
+H?D?Resent-Date: $a
+H?D?Date: $a
+H?F?Resent-From: $?x$x <$g>$|$g$.
+H?F?From: $?x$x <$g>$|$g$.
+H?x?Full-Name: $x
+# HPosted-Date: $a
+# H?l?Received-Date: $b
+H?M?Resent-Message-Id: <$t.$i@$j>
+H?M?Message-Id: <$t.$i@$j>
+
+#
+######################################################################
+######################################################################
+#####
+##### REWRITING RULES
+#####
+######################################################################
+######################################################################
+
+############################################
+### Ruleset 3 -- Name Canonicalization ###
+############################################
+Scanonify=3
+
+# handle null input (translate to <@> special case)
+R$@ $@ <@>
+
+# strip group: syntax (not inside angle brackets!) and trailing semicolon
+R$* $: $1 <@> mark addresses
+R$* < $* > $* <@> $: $1 < $2 > $3 unmark <addr>
+R@ $* <@> $: @ $1 unmark @host:...
+R$* [ IPv6 : $+ ] <@> $: $1 [ IPv6 : $2 ] unmark IPv6 addr
+R$* :: $* <@> $: $1 :: $2 unmark node::addr
+R:include: $* <@> $: :include: $1 unmark :include:...
+R$* : $* [ $* ] $: $1 : $2 [ $3 ] <@> remark if leading colon
+R$* : $* <@> $: $2 strip colon if marked
+R$* <@> $: $1 unmark
+R$* ; $1 strip trailing semi
+R$* < $+ :; > $* $@ $2 :; <@> catch <list:;>
+R$* < $* ; > $1 < $2 > bogus bracketed semi
+
+# null input now results from list:; syntax
+R$@ $@ :; <@>
+
+# strip angle brackets -- note RFC733 heuristic to get innermost item
+R$* $: < $1 > housekeeping <>
+R$+ < $* > < $2 > strip excess on left
+R< $* > $+ < $1 > strip excess on right
+R<> $@ < @ > MAIL FROM:<> case
+R< $+ > $: $1 remove housekeeping <>
+
+# strip route address <@a,@b,@c:user@d> -> <user@d>
+R@ $+ , $+ $2
+R@ [ $* ] : $+ $2
+R@ $+ : $+ $2
+
+# find focus for list syntax
+R $+ : $* ; @ $+ $@ $>Canonify2 $1 : $2 ; < @ $3 > list syntax
+R $+ : $* ; $@ $1 : $2; list syntax
+
+# find focus for @ syntax addresses
+R$+ @ $+ $: $1 < @ $2 > focus on domain
+R$+ < $+ @ $+ > $1 $2 < @ $3 > move gaze right
+R$+ < @ $+ > $@ $>Canonify2 $1 < @ $2 > already canonical
+
+
+# convert old-style addresses to a domain-based address
+R$- ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > resolve uucp names
+R$+ . $- ! $+ $@ $>Canonify2 $3 < @ $1 . $2 > domain uucps
+R$+ ! $+ $@ $>Canonify2 $2 < @ $1 .UUCP > uucp subdomains
+
+# if we have % signs, take the rightmost one
+R$* % $* $1 @ $2 First make them all @s.
+R$* @ $* @ $* $1 % $2 @ $3 Undo all but the last.
+R$* @ $* $@ $>Canonify2 $1 < @ $2 > Insert < > and finish
+
+# else we must be a local name
+R$* $@ $>Canonify2 $1
+
+
+################################################
+### Ruleset 96 -- bottom half of ruleset 3 ###
+################################################
+
+SCanonify2=96
+
+# handle special cases for local names
+R$* < @ localhost > $* $: $1 < @ $j . > $2 no domain at all
+R$* < @ localhost . $m > $* $: $1 < @ $j . > $2 local domain
+R$* < @ localhost . UUCP > $* $: $1 < @ $j . > $2 .UUCP domain
+
+# check for IPv4/IPv6 domain literal
+R$* < @ [ $+ ] > $* $: $1 < @@ [ $2 ] > $3 mark [addr]
+R$* < @@ $=w > $* $: $1 < @ $j . > $3 self-literal
+R$* < @@ $+ > $* $@ $1 < @ $2 > $3 canon IP addr
+
+
+
+
+
+# if really UUCP, handle it immediately
+
+# try UUCP traffic as a local address
+R$* < @ $+ . UUCP > $* $: $1 < @ $[ $2 $] . UUCP . > $3
+R$* < @ $+ . . UUCP . > $* $@ $1 < @ $2 . > $3
+
+# hostnames ending in class P are always canonical
+R$* < @ $* $=P > $* $: $1 < @ $2 $3 . > $4
+R$* < @ $* $~P > $* $: $&{daemon_flags} $| $1 < @ $2 $3 > $4
+R$* CC $* $| $* < @ $+.$+ > $* $: $3 < @ $4.$5 . > $6
+R$* CC $* $| $* $: $3
+# pass to name server to make hostname canonical
+R$* $| $* < @ $* > $* $: $2 < @ $[ $3 $] > $4
+R$* $| $* $: $2
+
+# local host aliases and pseudo-domains are always canonical
+R$* < @ $=w > $* $: $1 < @ $2 . > $3
+R$* < @ $=M > $* $: $1 < @ $2 . > $3
+R$* < @ $* . . > $* $1 < @ $2 . > $3
+
+
+##################################################
+### Ruleset 4 -- Final Output Post-rewriting ###
+##################################################
+Sfinal=4
+
+R$+ :; <@> $@ $1 : handle <list:;>
+R$* <@> $@ handle <> and list:;
+
+# strip trailing dot off possibly canonical name
+R$* < @ $+ . > $* $1 < @ $2 > $3
+
+# eliminate internal code
+R$* < @ *LOCAL* > $* $1 < @ $j > $2
+
+# externalize local domain info
+R$* < $+ > $* $1 $2 $3 defocus
+R@ $+ : @ $+ : $+ @ $1 , @ $2 : $3 <route-addr> canonical
+R@ $* $@ @ $1 ... and exit
+
+# UUCP must always be presented in old form
+R$+ @ $- . UUCP $2!$1 u@h.UUCP => h!u
+
+# delete duplicate local names
+R$+ % $=w @ $=w $1 @ $2 u%host@host => u@host
+
+
+
+##############################################################
+### Ruleset 97 -- recanonicalize and call ruleset zero ###
+### (used for recursive calls) ###
+##############################################################
+
+SRecurse=97
+R$* $: $>canonify $1
+R$* $@ $>parse $1
+
+
+######################################
+### Ruleset 0 -- Parse Address ###
+######################################
+
+Sparse=0
+
+R$* $: $>Parse0 $1 initial parsing
+R<@> $#local $: <@> special case error msgs
+R$* $: $>ParseLocal $1 handle local hacks
+R$* $: $>Parse1 $1 final parsing
+
+#
+# Parse0 -- do initial syntax checking and eliminate local addresses.
+# This should either return with the (possibly modified) input
+# or return with a #error mailer. It should not return with a
+# #mailer other than the #error mailer.
+#
+
+SParse0
+R<@> $@ <@> special case error msgs
+R$* : $* ; <@> $#error $@ 5.1.3 $: "553 List:; syntax illegal for recipient addresses"
+R@ <@ $* > < @ $1 > catch "@@host" bogosity
+R<@ $+> $#error $@ 5.1.3 $: "553 User address required"
+R$+ <@> $#error $@ 5.1.3 $: "553 Hostname required"
+R$* $: <> $1
+R<> $* < @ [ $* ] : $+ > $* $1 < @ [ $2 ] : $3 > $4
+R<> $* < @ [ $* ] , $+ > $* $1 < @ [ $2 ] , $3 > $4
+R<> $* < @ [ $* ] $+ > $* $#error $@ 5.1.2 $: "553 Invalid address"
+R<> $* < @ [ $+ ] > $* $1 < @ [ $2 ] > $3
+R<> $* <$* : $* > $* $#error $@ 5.1.3 $: "553 Colon illegal in host name part"
+R<> $* $1
+R$* < @ . $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* .. $* > $* $#error $@ 5.1.2 $: "553 Invalid host name"
+R$* < @ $* @ > $* $#error $@ 5.1.2 $: "553 Invalid route address"
+R$* @ $* < @ $* > $* $#error $@ 5.1.3 $: "553 Invalid route address"
+R$* , $~O $* $#error $@ 5.1.3 $: "553 Invalid route address"
+
+
+# now delete the local info -- note $=O to find characters that cause forwarding
+R$* < @ > $* $@ $>Parse0 $>canonify $1 user@ => user
+R< @ $=w . > : $* $@ $>Parse0 $>canonify $2 @here:... -> ...
+R$- < @ $=w . > $: $(dequote $1 $) < @ $2 . > dequote "foo"@here
+R< @ $+ > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ $=w . > $@ $>Parse0 $>canonify $1 $2 $3 ...@here -> ...
+R$- $: $(dequote $1 $) < @ *LOCAL* > dequote "foo"
+R< @ *LOCAL* > $#error $@ 5.1.3 $: "553 User address required"
+R$* $=O $* < @ *LOCAL* >
+ $@ $>Parse0 $>canonify $1 $2 $3 ...@*LOCAL* -> ...
+R$* < @ *LOCAL* > $: $1
+
+#
+# Parse1 -- the bottom half of ruleset 0.
+#
+
+SParse1
+
+# handle numeric address spec
+R$* < @ [ $+ ] > $* $: $>ParseLocal $1 < @ [ $2 ] > $3 numeric internet spec
+R$* < @ [ $+ ] > $* $: $1 < @ [ $2 ] : $S > $3 Add smart host to path
+R$* < @ [ $+ ] : > $* $#esmtp $@ [$2] $: $1 < @ [$2] > $3 no smarthost: send
+R$* < @ [ $+ ] : $- : $*> $* $#$3 $@ $4 $: $1 < @ [$2] > $5 smarthost with mailer
+R$* < @ [ $+ ] : $+ > $* $#esmtp $@ $3 $: $1 < @ [$2] > $4 smarthost without mailer
+
+
+# short circuit local delivery so forwarded email works
+
+
+R$=L < @ $=w . > $#local $: @ $1 special local names
+R$+ < @ $=w . > $#local $: $1 regular local name
+
+
+# resolve remotely connected UUCP links (if any)
+
+# resolve fake top level domains by forwarding to other hosts
+
+
+
+# pass names that still have a host to a smarthost (if defined)
+R$* < @ $* > $* $: $>MailerToTriple < $S > $1 < @ $2 > $3 glue on smarthost name
+
+# deal with other remote names
+R$* < @$* > $* $#esmtp $@ $2 $: $1 < @ $2 > $3 user@host.domain
+
+# handle locally delivered names
+R$=L $#local $: @ $1 special local names
+R$+ $#local $: $1 regular local names
+
+###########################################################################
+### Ruleset 5 -- special rewriting after aliases have been expanded ###
+###########################################################################
+
+SLocal_localaddr
+Slocaladdr=5
+R$+ $: $1 $| $>"Local_localaddr" $1
+R$+ $| $#ok $@ $1 no change
+R$+ $| $#$* $#$2
+R$+ $| $* $: $1
+
+
+
+
+# deal with plussed users so aliases work nicely
+R$+ + * $#local $@ $&h $: $1
+R$+ + $* $#local $@ + $2 $: $1 + *
+
+# prepend an empty "forward host" on the front
+R$+ $: <> $1
+
+
+
+R< > $+ $: < > < $1 <> $&h > nope, restore +detail
+
+R< > < $+ <> + $* > $: < > < $1 + $2 > check whether +detail
+R< > < $+ <> $* > $: < > < $1 > else discard
+R< > < $+ + $* > $* < > < $1 > + $2 $3 find the user part
+R< > < $+ > + $* $#local $@ $2 $: @ $1 strip the extra +
+R< > < $+ > $@ $1 no +detail
+R$+ $: $1 <> $&h add +detail back in
+
+R$+ <> + $* $: $1 + $2 check whether +detail
+R$+ <> $* $: $1 else discard
+R< local : $* > $* $: $>MailerToTriple < local : $1 > $2 no host extension
+R< error : $* > $* $: $>MailerToTriple < error : $1 > $2 no host extension
+
+R< $~[ : $+ > $+ $: $>MailerToTriple < $1 : $2 > $3 < @ $2 >
+
+R< $+ > $+ $@ $>MailerToTriple < $1 > $2 < @ $1 >
+
+
+###################################################################
+### Ruleset 95 -- canonify mailer:[user@]host syntax to triple ###
+###################################################################
+
+SMailerToTriple=95
+R< > $* $@ $1 strip off null relay
+R< error : $-.$-.$- : $+ > $* $#error $@ $1.$2.$3 $: $4
+R< error : $- : $+ > $* $#error $@ $(dequote $1 $) $: $2
+R< error : $+ > $* $#error $: $1
+R< local : $* > $* $>CanonLocal < $1 > $2
+R< $~[ : $+ @ $+ > $*<$*>$* $# $1 $@ $3 $: $2<@$3> use literal user
+R< $~[ : $+ > $* $# $1 $@ $2 $: $3 try qualified mailer
+R< $=w > $* $@ $2 delete local host
+R< $+ > $* $#relay $@ $1 $: $2 use unqualified mailer
+
+###################################################################
+### Ruleset CanonLocal -- canonify local: syntax ###
+###################################################################
+
+SCanonLocal
+# strip local host from routed addresses
+R< $* > < @ $+ > : $+ $@ $>Recurse $3
+R< $* > $+ $=O $+ < @ $+ > $@ $>Recurse $2 $3 $4
+
+# strip trailing dot from any host name that may appear
+R< $* > $* < @ $* . > $: < $1 > $2 < @ $3 >
+
+# handle local: syntax -- use old user, either with or without host
+R< > $* < @ $* > $* $#local $@ $1@$2 $: $1
+R< > $+ $#local $@ $1 $: $1
+
+# handle local:user@host syntax -- ignore host part
+R< $+ @ $+ > $* < @ $* > $: < $1 > $3 < @ $4 >
+
+# handle local:user syntax
+R< $+ > $* <@ $* > $* $#local $@ $2@$3 $: $1
+R< $+ > $* $#local $@ $2 $: $1
+
+###################################################################
+### Ruleset 93 -- convert header names to masqueraded form ###
+###################################################################
+
+SMasqHdr=93
+
+
+# do not masquerade anything in class N
+R$* < @ $* $=N . > $@ $1 < @ $2 $3 . >
+
+R$* < @ *LOCAL* > $@ $1 < @ $j . >
+
+###################################################################
+### Ruleset 94 -- convert envelope names to masqueraded form ###
+###################################################################
+
+SMasqEnv=94
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+###################################################################
+### Ruleset 98 -- local part of ruleset zero (can be null) ###
+###################################################################
+
+SParseLocal=98
+
+# 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>
+
+
+
+
+
+######################################################################
+### CanonAddr -- Convert an address into a standard form for
+### relay checking. Route address syntax is
+### crudely converted into a %-hack address.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed address, not in source route form
+######################################################################
+
+SCanonAddr
+R$* $: $>Parse0 $>canonify $1 make domain canonical
+
+
+######################################################################
+### ParseRecipient -- Strip off hosts in $=R as well as possibly
+### $* $=m or the access database.
+### Check user portion for host separators.
+###
+### Parameters:
+### $1 -- full recipient address
+###
+### Returns:
+### parsed, non-local-relaying address
+######################################################################
+
+SParseRecipient
+R$* $: <?> $>CanonAddr $1
+R<?> $* < @ $* . > <?> $1 < @ $2 > strip trailing dots
+R<?> $- < @ $* > $: <?> $(dequote $1 $) < @ $2 > dequote local part
+
+# if no $=O character, no host in the user portion, we are done
+R<?> $* $=O $* < @ $* > $: <NO> $1 $2 $3 < @ $4>
+R<?> $* $@ $1
+
+
+R<NO> $* < @ $* $=R > $: <RELAY> $1 < @ $2 $3 >
+
+
+
+R<RELAY> $* < @ $* > $@ $>ParseRecipient $1
+R<$+> $* $@ $2
+
+
+######################################################################
+### check_relay -- check hostname/address on SMTP startup
+######################################################################
+
+
+
+SLocal_check_relay
+Scheck_relay
+R$* $: $1 $| $>"Local_check_relay" $1
+R$* $| $* $| $#$* $#$3
+R$* $| $* $| $* $@ $>"Basic_check_relay" $1 $| $2
+
+SBasic_check_relay
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+
+
+######################################################################
+### check_mail -- check SMTP `MAIL FROM:' command argument
+######################################################################
+
+SLocal_check_mail
+Scheck_mail
+R$* $: $1 $| $>"Local_check_mail" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_mail" $1
+
+SBasic_check_mail
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+# authenticated?
+R$* $: $1 $| $>"tls_client" $&{verify} $| MAIL
+R$* $| $#$+ $#$2
+R$* $| $* $: $1
+
+R<> $@ <OK> we MUST accept <> (RFC 1123)
+R$+ $: <?> $1
+R<?><$+> $: <@> <$1>
+R<?>$+ $: <@> <$1>
+R$* $: $&{daemon_flags} $| $1
+R$* f $* $| <@> < $* @ $- > $: < ? $&{client_name} > < $3 @ $4 >
+R$* u $* $| <@> < $* > $: <?> < $3 >
+R$* $| $* $: $2
+# handle case of @localhost on address
+R<@> < $* @ localhost > $: < ? $&{client_name} > < $1 @ localhost >
+R<@> < $* @ [127.0.0.1] >
+ $: < ? $&{client_name} > < $1 @ [127.0.0.1] >
+R<@> < $* @ localhost.$m >
+ $: < ? $&{client_name} > < $1 @ localhost.$m >
+R<@> < $* @ localhost.UUCP >
+ $: < ? $&{client_name} > < $1 @ localhost.UUCP >
+R<@> $* $: $1 no localhost as domain
+R<? $=w> $* $: $2 local client: ok
+R<? $+> <$+> $#error $@ 5.5.4 $: "553 Real domain name required for sender address"
+R<?> $* $: $1
+R$* $: <?> $>CanonAddr $1 canonify sender address and mark it
+R<?> $* < @ $+ . > <?> $1 < @ $2 > strip trailing dots
+# handle non-DNS hostnames (*.bitnet, *.decnet, *.uucp, etc)
+R<?> $* < @ $* $=P > $: <OKR> $1 < @ $2 $3 >
+R<?> $* < @ $j > $: <OKR> $1 < @ $j >
+R<?> $* < @ $+ > $: <? $(resolve $2 $: $2 <PERM> $) > $1 < @ $2 >
+R<? $* <$->> $* < @ $+ >
+ $: <$2> $3 < @ $4 >
+
+
+# handle case of no @domain on address
+R<?> $* $: $&{daemon_flags} $| <?> $1
+R$* u $* $| <?> $* $: <OKR> $3
+R$* $| $* $: $2
+R<?> $* $: < ? $&{client_addr} > $1
+R<?> $* $@ <OKR> ...local unqualed ok
+R<? $+> $* $#error $@ 5.5.4 $: "553 Domain name required for sender address " $&f
+ ...remote is not
+# check results
+R<?> $* $: @ $1 mark address: nothing known about it
+R<$={ResOk}> $* $: @ $2 domain ok
+R<TEMP> $* $#error $@ 4.1.8 $: "451 Domain of sender address " $&f " does not resolve"
+R<PERM> $* $#error $@ 5.1.8 $: "553 Domain of sender address " $&f " does not exist"
+
+
+
+######################################################################
+### check_rcpt -- check SMTP `RCPT TO:' command argument
+######################################################################
+
+SLocal_check_rcpt
+Scheck_rcpt
+R$* $: $1 $| $>"Local_check_rcpt" $1
+R$* $| $#$* $#$2
+R$* $| $* $@ $>"Basic_check_rcpt" $1
+
+SBasic_check_rcpt
+# empty address?
+R<> $#error $@ nouser $: "553 User address required"
+R$@ $#error $@ nouser $: "553 User address required"
+# check for deferred delivery mode
+R$* $: < $&{deliveryMode} > $1
+R< d > $* $@ deferred
+R< $* > $* $: $2
+
+
+######################################################################
+R$* $: $1 $| @ $>"Rcpt_ok" $1
+R$* $| @ $#TEMP $+ $: $1 $| T $2
+R$* $| @ $#$* $#$2
+R$* $| @ RELAY $@ RELAY
+R$* $| @ $* $: O $| $>"Relay_ok" $1
+R$* $| T $+ $: T $2 $| $>"Relay_ok" $1
+R$* $| $#TEMP $+ $#error $2
+R$* $| $#$* $#$2
+R$* $| RELAY $@ RELAY
+R T $+ $| $* $#error $1
+# anything else is bogus
+R$* $#error $@ 5.7.1 $: "550 Relaying denied"
+
+
+######################################################################
+### Rcpt_ok: is the recipient ok?
+######################################################################
+SRcpt_ok
+R$* $: $>ParseRecipient $1 strip relayable hosts
+
+
+
+
+# authenticated via TLS?
+R$* $: $1 $| $>RelayTLS client authenticated?
+R$* $| $# $+ $# $2 error/ok?
+R$* $| $* $: $1 no
+
+R$* $: $1 $| $>"Local_Relay_Auth" $&{auth_type}
+R$* $| $# $* $# $2
+R$* $| NO $: $1
+R$* $| $* $: $1 $| $&{auth_type}
+R$* $| $: $1
+R$* $| $={TrustAuthMech} $# RELAY
+R$* $| $* $: $1
+# anything terminating locally is ok
+R$+ < @ $=w > $@ RELAY
+R$+ < @ $* $=R > $@ RELAY
+
+
+
+
+# check for local user (i.e. unqualified address)
+R$* $: <?> $1
+R<?> $* < @ $+ > $: <REMOTE> $1 < @ $2 >
+# local user is ok
+R<?> $+ $@ RELAY
+R<$+> $* $: $2
+
+######################################################################
+### Relay_ok: is the relay/sender ok?
+######################################################################
+SRelay_ok
+# anything originating locally is ok
+# check IP address
+R$* $: $&{client_addr}
+R$@ $@ RELAY originated locally
+R0 $@ RELAY originated locally
+R127.0.0.1 $@ RELAY originated locally
+RIPv6:::1 $@ RELAY originated locally
+R$=R $* $@ RELAY relayable IP address
+R$* $: [ $1 ] put brackets around it...
+R$=w $@ RELAY ... and see if it is local
+
+
+# check client name: first: did it resolve?
+R$* $: < $&{client_resolve} >
+R<TEMP> $#TEMP $@ 4.4.0 $: "450 Relaying temporarily denied. Cannot resolve PTR record for " $&{client_addr}
+R<FORGED> $#error $@ 5.7.1 $: "550 Relaying denied. IP name possibly forged " $&{client_name}
+R<FAIL> $#error $@ 5.7.1 $: "550 Relaying denied. IP name lookup failed " $&{client_name}
+R$* $: <@> $&{client_name}
+# pass to name server to make hostname canonical
+R<@> $* $=P $:<?> $1 $2
+R<@> $+ $:<?> $[ $1 $]
+R$* . $1 strip trailing dots
+R<?> $=w $@ RELAY
+R<?> $* $=R $@ RELAY
+
+
+
+
+
+######################################################################
+### trust_auth: is user trusted to authenticate as someone else?
+###
+### Parameters:
+### $1: AUTH= parameter from MAIL command
+######################################################################
+
+SLocal_trust_auth
+Strust_auth
+R$* $: $&{auth_type} $| $1
+# required by RFC 2554 section 4.
+R$@ $| $* $#error $@ 5.7.1 $: "550 not authenticated"
+R$* $| $&{auth_authen} $@ identical
+R$* $| <$&{auth_authen}> $@ identical
+R$* $| $* $: $1 $| $>"Local_trust_auth" $2
+R$* $| $#$* $#$2
+R$* $#error $@ 5.7.1 $: "550 " $&{auth_authen} " not allowed to act as " $&{auth_author}
+
+######################################################################
+### Relay_Auth: allow relaying based on authentication?
+###
+### Parameters:
+### $1: ${auth_type}
+######################################################################
+SLocal_Relay_Auth
+
+######################################################################
+### srv_features: which features to offer to a client?
+### (done in server)
+######################################################################
+Ssrv_features
+
+
+######################################################################
+### try_tls: try to use STARTTLS?
+### (done in client)
+######################################################################
+Stry_tls
+
+
+######################################################################
+### tls_rcpt: is connection with server "good" enough?
+### (done in client, per recipient)
+###
+### Parameters:
+### $1: recipient
+######################################################################
+Stls_rcpt
+
+
+######################################################################
+### tls_client: is connection with client "good" enough?
+### (done in server)
+###
+### Parameters:
+### ${verify} $| (MAIL|STARTTLS)
+######################################################################
+Stls_client
+R$* $| $* $@ $>"TLS_connection" $1
+
+######################################################################
+### tls_server: is connection with server "good" enough?
+### (done in client)
+###
+### Parameter:
+### ${verify}
+######################################################################
+Stls_server
+R$* $@ $>"TLS_connection" $1
+
+######################################################################
+### TLS_connection: is TLS connection "good" enough?
+###
+### Parameters:
+### ${verify}
+### Requirement: RHS from access map, may be ? for none.
+######################################################################
+STLS_connection
+RSOFTWARE $#error $@ 4.7.0 $: "403 TLS handshake."
+
+
+######################################################################
+### RelayTLS: allow relaying based on TLS authentication
+###
+### Parameters:
+### none
+######################################################################
+SRelayTLS
+# authenticated?
+
+######################################################################
+### authinfo: lookup authinfo in the access map
+###
+### Parameters:
+### $1: {server_name}
+### $2: {server_addr}
+######################################################################
+Sauthinfo
+
+
+
+
+
+#
+######################################################################
+######################################################################
+#####
+##### MAIL FILTER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+#
+######################################################################
+######################################################################
+#####
+##### MAILER DEFINITIONS
+#####
+######################################################################
+######################################################################
+
+
+##################################################
+### Local and Program Mailer specification ###
+##################################################
+
+##### $Id: local.m4,v 8.59 2004/11/23 00:37:25 ca Exp $ #####
+
+#
+# Envelope sender rewriting
+#
+SEnvFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqEnv $1 do masquerading
+
+#
+# Envelope recipient rewriting
+#
+SEnvToL
+R$+ < @ $* > $: $1 strip host part
+R$+ + $* $: < $&{addr_type} > $1 + $2 mark with addr type
+R<e s> $+ + $* $: $1 remove +detail for sender
+R< $* > $+ $: $2 else remove mark
+
+#
+# Header sender rewriting
+#
+SHdrFromL
+R<@> $n errors to mailer-daemon
+R@ <@ $*> $n temporarily bypass Sun bogosity
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* $: $>MasqHdr $1 do masquerading
+
+#
+# Header recipient rewriting
+#
+SHdrToL
+R$+ $: $>AddDomain $1 add local domain if needed
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# Common code to add local domain name (only if always-add-domain)
+#
+SAddDomain
+
+Mlocal, P=/bin/mail, F=lsDFMAw5:/|@qPrmn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
+ T=DNS/RFC822/X-Unix,
+ A=mail -d $u
+Mprog, P=/bin/sh, F=lsDFMoqeu9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, D=$z:/,
+ T=X-Unix/X-Unix/X-Unix,
+ A=sh -c $u
+
+#####################################
+### SMTP Mailer specification ###
+#####################################
+
+##### $Id: smtp.m4,v 8.65 2006/07/12 21:08:10 ca Exp $ #####
+
+#
+# common sender and masquerading recipient rewriting
+#
+SMasqSMTP
+R$* < @ $* > $* $@ $1 < @ $2 > $3 already fully qualified
+R$+ $@ $1 < @ *LOCAL* > add local qualification
+
+#
+# convert pseudo-domain addresses to real domain addresses
+#
+SPseudoToReal
+
+# pass <route-addr>s through
+R< @ $+ > $* $@ < @ $1 > $2 resolve <route-addr>
+
+# output fake domains as user%fake@relay
+
+# do UUCP heuristics; note that these are shared with UUCP mailers
+R$+ < @ $+ .UUCP. > $: < $2 ! > $1 convert to UUCP form
+R$+ < @ $* > $* $@ $1 < @ $2 > $3 not UUCP form
+
+# leave these in .UUCP form to avoid further tampering
+R< $&h ! > $- ! $+ $@ $2 < @ $1 .UUCP. >
+R< $&h ! > $-.$+ ! $+ $@ $3 < @ $1.$2 >
+R< $&h ! > $+ $@ $1 < @ $&h .UUCP. >
+R< $+ ! > $+ $: $1 ! $2 < @ $Y > use UUCP_RELAY
+R$+ < @ $~[ $* : $+ > $@ $1 < @ $4 > strip mailer: part
+R$+ < @ > $: $1 < @ *LOCAL* > if no UUCP_RELAY
+
+
+#
+# envelope sender rewriting
+#
+SEnvFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$* :; <@> $@ list:; special case
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqEnv $1 do masquerading
+
+
+#
+# envelope recipient rewriting --
+# also header recipient if not masquerading recipients
+#
+SEnvToSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R$+ $: $>MasqSMTP $1 qualify unqual'ed names
+R$* < @ *LOCAL* > $* $: $1 < @ $j . > $2
+
+#
+# header sender and masquerading header recipient rewriting
+#
+SHdrFromSMTP
+R$+ $: $>PseudoToReal $1 sender/recipient common
+R:; <@> $@ list:; special case
+
+# do special header rewriting
+R$* <@> $* $@ $1 <@> $2 pass null host through
+R< @ $* > $* $@ < @ $1 > $2 pass route-addr through
+R$* $: $>MasqSMTP $1 qualify unqual'ed names
+R$+ $: $>MasqHdr $1 do masquerading
+
+
+#
+# relay mailer header masquerading recipient rewriting
+#
+SMasqRelay
+R$+ $: $>MasqSMTP $1
+R$+ $: $>MasqHdr $1
+
+Msmtp, P=[IPC], F=mDFMuX, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mesmtp, P=[IPC], F=mDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Msmtp8, P=[IPC], F=mDFMuX8, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mdsmtp, P=[IPC], F=mDFMuXa%, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP, E=\r\n, L=990,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+Mrelay, P=[IPC], F=mDFMuXa8, S=EnvFromSMTP/HdrFromSMTP, R=MasqSMTP, E=\r\n, L=2040,
+ T=DNS/RFC822/SMTP,
+ A=TCP $h
+
+### generic-ultrix4.mc ###
+# divert(-1)
+# #
+# # Copyright (c) 1998, 1999 Sendmail, Inc. and its suppliers.
+# # All rights reserved.
+# # Copyright (c) 1983 Eric P. Allman. All rights reserved.
+# # Copyright (c) 1988, 1993
+# # The Regents of the University of California. All rights reserved.
+# #
+# # By using this file, you agree to the terms and conditions set
+# # forth in the LICENSE file which can be found at the top level of
+# # the sendmail distribution.
+# #
+# #
+#
+# #
+# # This is a generic configuration file for Ultrix 4.x.
+# # It has support for local and SMTP mail only. If you want to
+# # customize it, copy it to a name appropriate for your environment
+# # and do the modifications there.
+# #
+#
+# divert(0)dnl
+# VERSIONID(`$Id: generic-ultrix4.mc,v 8.11 1999/02/07 07:26:03 gshapiro Exp $')
+# OSTYPE(ultrix4)dnl
+# DOMAIN(generic)dnl
+# MAILER(local)dnl
+# MAILER(smtp)dnl
diff --git a/cf/cf/submit.cf b/cf/cf/submit.cf
index 22a574cdcb90..11f3820eaa3e 100644
--- a/cf/cf/submit.cf
+++ b/cf/cf/submit.cf
@@ -16,8 +16,8 @@
#####
##### SENDMAIL CONFIGURATION FILE
#####
-##### built by ca@nother.smi.sendmail.com on Wed Oct 31 09:24:27 PDT 2007
-##### in /extra/home/ca/sm-8.14.2/OpenSource/sendmail-8.14.2/cf/cf
+##### built by ca@wiz.smi.sendmail.com on Fri May 2 20:39:00 PDT 2008
+##### in /extra/home/ca/sm-8.14.3/OpenSource/sendmail-8.14.3/cf/cf
##### using ../ as configuration include directory
#####
######################################################################
@@ -35,7 +35,7 @@
##### $Id: no_default_msa.m4,v 8.2 2001/02/14 05:03:22 gshapiro Exp $ #####
-##### $Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $ #####
+##### $Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $ #####
# level 10 config file format
V10/Berkeley
@@ -114,7 +114,7 @@ D{MTAHost}[127.0.0.1]
# Configuration version number
-DZ8.14.2/Submit
+DZ8.14.3/Submit
###############
diff --git a/cf/m4/proto.m4 b/cf/m4/proto.m4
index 6ef2f1cd0137..4e314b3e41b9 100644
--- a/cf/m4/proto.m4
+++ b/cf/m4/proto.m4
@@ -13,7 +13,7 @@ divert(-1)
#
divert(0)
-VERSIONID(`$Id: proto.m4,v 8.732 2007/04/20 00:53:30 ca Exp $')
+VERSIONID(`$Id: proto.m4,v 8.734 2008/01/24 23:42:01 ca Exp $')
# level CF_LEVEL config file format
V`'CF_LEVEL/ifdef(`VENDOR_NAME', `VENDOR_NAME', `Berkeley')
@@ -1956,7 +1956,7 @@ R<MX><$+><:$*<TEMP>:><$*> $#error $@ 4.1.2 $: "450 MX lookup failure for "$1
# Recursively run badmx check on each mx.
R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><: $4 $(badmx $2 $):>
# See if any of them fail.
-R<MX><$*><$*><$*<BADMX>:$*> $#error $@ 5.1.2 $:"550 Illegal MX record for recipient host "$1
+R<MX><$*><$*><$*<BADMX>:$*> $#error $@ 5.1.2 $:"550 Illegal MX record for host "$1
# Reverse the mxlists so we can use the same argument order again.
R<MX><$*><$*><$*> $:<MX><$1><$3><$2>
R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(dnsA $2 $) :>
@@ -1965,7 +1965,7 @@ R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(dnsA $2 $) :>
R<MX><$*><$*><$*> $:<MX><$1><$3><$2>
R<MX><$*><:$+:$*><:$*> <MX><$1><:$3><:$4 $(BadMXIP $2 $) :>
-R<MX><$*><$*><$*<BADMXIP>:$*> $#error $@ 5.1.2 $:"550 Invalid MX record for recipient host "$1',
+R<MX><$*><$*><$*<BADMXIP>:$*> $#error $@ 5.1.2 $:"550 Invalid MX record for host "$1',
`dnl')
@@ -2686,9 +2686,9 @@ dnl MAIL: called from check_mail
dnl STARTTLS: called from smtp() after STARTTLS has been accepted
Stls_client
ifdef(`_LOCAL_TLS_CLIENT_', `dnl
-R$* $: $1 $| $>"Local_tls_client" $1
-R$* $| $#$* $#$2
-R$* $| $* $: $1', `dnl')
+R$* $: $1 <?> $>"Local_tls_client" $1
+R$* <?> $#$* $#$2
+R$* <?> $* $: $1', `dnl')
ifdef(`_ACCESS_TABLE_', `dnl
dnl store name of other side
R$* $: $(macro {TLS_Name} $@ $&{server_name} $) $1
diff --git a/cf/m4/version.m4 b/cf/m4/version.m4
index 9b34f1a4a9c6..bd722ac3a89b 100644
--- a/cf/m4/version.m4
+++ b/cf/m4/version.m4
@@ -1,6 +1,6 @@
divert(-1)
#
-# Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+# Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
# All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
@@ -11,8 +11,8 @@ divert(-1)
# the sendmail distribution.
#
#
-VERSIONID(`$Id: version.m4,v 8.186 2007/10/31 16:04:13 ca Exp $')
+VERSIONID(`$Id: version.m4,v 8.195 2008/04/17 17:04:30 ca Exp $')
#
divert(0)
# Configuration version number
-DZ8.14.2`'ifdef(`confCF_VERSION', `/confCF_VERSION')
+DZ8.14.3`'ifdef(`confCF_VERSION', `/confCF_VERSION')
diff --git a/devtools/M4/UNIX/all.m4 b/devtools/M4/UNIX/all.m4
new file mode 100644
index 000000000000..327c2bd0618f
--- /dev/null
+++ b/devtools/M4/UNIX/all.m4
@@ -0,0 +1,121 @@
+divert(-1)
+#
+# Copyright (c) 1999-2000, 2006 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: all.m4,v 8.21 2006/06/14 20:18:27 ca Exp $
+#
+divert(0)dnl
+ALL=${BEFORE} ${LINKS} bldTARGETS
+
+all: ${ALL}
+
+clean: bldCLEAN_TARGETS
+
+define(`bldADD_SRC', ${$1SRCS} )dnl
+SRCS=bldFOREACH(`bldADD_SRC(', bldC_PRODUCTS)
+define(`bldADD_OBJS', ${$1OBJS} )dnl
+OBJS=bldFOREACH(`bldADD_OBJS(', bldC_PRODUCTS)
+
+ifdef(`bldCHECK_PROGRAMS',`dnl
+check_PROGRAMS=bldCHECK_PROGRAMS')
+
+ifdef(`bldCHECK_TARGETS',`dnl
+TESTS=bldCHECK_TARGETS')
+
+VPATH=${srcdir}
+changequote([[, ]])
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; \
+ list='$(TESTS)'; \
+ srcdir=$(srcdir); export srcdir; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *" $$tst "*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes=`echo "$$banner" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ fi
+changequote(`, ')
+
+check-am: all
+ $(MAKE) $(check_PROGRAMS)
+ $(MAKE) check-TESTS
+check: check-am
+
+
+define(`bldADD_SRC_CHK', ${$1SRCS_CHK} )dnl
+SRCS_CHK=bldFOREACH(`bldADD_SRC_CHK(', bldC_CHECKS)
+define(`bldADD_OBJS_CHK', ${$1OBJS_CHK} )dnl
+OBJS_CHK=bldFOREACH(`bldADD_OBJS(', bldC_CHECKS)
+
+ifdef(`bldNO_INSTALL', `divert(-1)')
+install: bldINSTALL_TARGETS
+
+install-strip: bldINSTALL_TARGETS ifdef(`bldSTRIP_TARGETS', `bldSTRIP_TARGETS')
+ifdef(`bldNO_INSTALL', `divert(0)')
+
+ifdef(`confREQUIRE_SM_OS_H',`
+ifdef(`confSM_OS_HEADER',
+`sm_os.h: ${SRCDIR}/inc`'lude/sm/os/confSM_OS_HEADER.h
+ ${RM} ${RMOPTS} sm_os.h
+ ${LN} ${LNOPTS} ${SRCDIR}/inc`'lude/sm/os/confSM_OS_HEADER.h sm_os.h',
+`sm_os.h:
+ ${CP} /dev/null sm_os.h')')
+
+divert(bldDEPENDENCY_SECTION)
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
+divert(0)
diff --git a/devtools/M4/UNIX/check.m4 b/devtools/M4/UNIX/check.m4
new file mode 100644
index 000000000000..581a5aa889c7
--- /dev/null
+++ b/devtools/M4/UNIX/check.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 2006 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+# Compile/run a test program.
+#
+# $Id: check.m4,v 8.5 2006/08/28 23:48:54 ca Exp $
+#
+define(`smcheck', `dnl
+ifelse(X`'$2, `X', `', `ifelse(index($2, `run'), `-1', `', `dnl
+bldLIST_PUSH_ITEM(`bldCHECK_TARGETS', $1)dnl
+')')
+ifelse(X`'$2, `X', `', `ifelse(index($2, `compile'), `-1', `', `dnl
+bldLIST_PUSH_ITEM(`bldC_CHECKS', $1)dnl
+bldLIST_PUSH_ITEM(`bldCHECK_PROGRAMS', $1)dnl
+bldPUSH_CLEAN_TARGET($1`-clean')dnl
+divert(bldTARGETS_SECTION)
+$1`'SRCS=$1.c
+$1: ${BEFORE} $1.o ifdef(`confCHECK_LIBS', `confCHECK_LIBS')
+ ${CC} -o $1 ${LDOPTS} ${LIBDIRS} $1.o ifdef(`confCHECK_LIBS', `confCHECK_LIBS') ${LIBS}
+$1-clean:
+ rm -f $1 $1.o')')
+divert(0)')
diff --git a/devtools/M4/UNIX/defines.m4 b/devtools/M4/UNIX/defines.m4
new file mode 100644
index 000000000000..a4a04c6cc35b
--- /dev/null
+++ b/devtools/M4/UNIX/defines.m4
@@ -0,0 +1,169 @@
+divert(-1)
+#
+# Copyright (c) 1999-2001, 2006 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: defines.m4,v 8.47 2006/10/06 05:44:44 ca Exp $
+#
+# temporary hack: if confREQUIRE_LIBSM is set then also set confREQUIRE_SM_OS_H
+ifdef(`confREQUIRE_LIBSM',`
+ifdef(`confREQUIRE_SM_OS_H',`', `define(`confREQUIRE_SM_OS_H', `1')')')
+#
+divert(0)dnl
+
+# C compiler
+CC= confCC
+CCOPTS= ifdef(`confCCOPTS', `confCCOPTS', ` ') ifdef(`confMT', ifdef(`confMTCCOPTS', `confMTCCOPTS', `'), `')
+
+# Linker for executables
+CCLINK = ifdef(`confCCLINK', `confCCLINK', `confCC')
+# Linker for libraries
+LD= ifdef(`confLD', `confLD', `confCC')
+LDOPTS= ifdef(`confLDOPTS', `confLDOPTS') ifdef(`confMT', ifdef(`confMTLDOPTS', `confMTLDOPTS', `'), `')
+LDOPTS_SO= ${LDOPTS} ifdef(`confLDOPTS_SO', `confLDOPTS_SO', `-shared')
+
+# Shell
+SHELL= confSHELL
+
+# use O=-O (usual) or O=-g (debugging)
+O= ifdef(`confOPTIMIZE', `confOPTIMIZE', `-O')
+
+# Object archiver
+AR= ifdef(`confAR', `confAR', `ar')
+AROPTS= ifdef(`confAROPTS', `confAROPTS', `crv')
+
+# Remove command
+RM= ifdef(`confRM', `confRM', `rm')
+RMOPTS= ifdef(`confRMOPTS', `confRMOPTS', `-f')
+
+# Link command
+LN= ifdef(`confLN', `confLN', `ln')
+LNOPTS= ifdef(`confLNOPTS', `confLNOPTS', `-f -s')
+
+# Ranlib (or echo)
+RANLIB= ifdef(`confRANLIB', `confRANLIB', `ranlib')
+RANLIBOPTS= ifdef(`confRANLIBOPTS', `confRANLIBOPTS', `')
+
+# Object stripper
+STRIP= ifdef(`confSTRIP', `confSTRIP', `strip')
+STRIPOPTS= ifdef(`confSTRIPOPTS', `confSTRIPOPTS', `')
+
+# environment definitions (e.g., -D_AIX3)
+ENVDEF= ifdef(`confENVDEF', `confENVDEF') ifdef(`conf_'bldCURRENT_PRD`_ENVDEF', `conf_'bldCURRENT_PRD`_ENVDEF')
+
+# location of the source directory
+SRCDIR= ifdef(`confSRCDIR', `confSRCDIR', `_SRC_PATH_')
+
+# inc`'lude directories
+INCDIRS= confINCDIRS
+
+# library directories
+LIBDIRS=confLIBDIRS
+
+# Additional libs needed
+LIBADD= ifdef(`conf_'bldCURRENT_PRD`_LIBS', `conf_'bldCURRENT_PRD`_LIBS')
+
+# libraries required on your system
+LIBS= ${LIBADD} ifdef(`confLIBS', `confLIBS') ifdef(`conf_'bldCURRENT_PRD`_LIB_POST', `conf_'bldCURRENT_PRD`_LIB_POST')
+
+# location of sendmail binary (usually /usr/sbin or /usr/lib)
+BINDIR= ifdef(`confMBINDIR', `confMBINDIR', `/usr/sbin')
+
+# location of "user" binaries (usually /usr/bin or /usr/ucb)
+UBINDIR=ifdef(`confUBINDIR', `confUBINDIR', `/usr/bin')
+
+# location of "root" binaries (usually /usr/sbin or /usr/etc)
+SBINDIR=ifdef(`confSBINDIR', `confSBINDIR', `/usr/sbin')
+
+# location of "root" binaries (usually /usr/sbin or /usr/etc)
+MBINDIR=ifdef(`confMBINDIR', `confMBINDIR', `/usr/sbin')
+
+# location of "libexec" binaries (usually /usr/libexec or /usr/etc)
+EBINDIR=ifdef(`confEBINDIR', `confEBINDIR', `/usr/libexec')
+
+# where to install inc`'lude files (usually /usr/inc`'lude)
+INCLUDEDIR=ifdef(`confINCLUDEDIR', `confINCLUDEDIR', `/usr/inc`'lude')
+
+# where to install library files (usually /usr/lib)
+LIBDIR=ifdef(`confLIBDIR', `confLIBDIR', `/usr/lib')
+
+# additional .c files needed
+SRCADD= ifdef(`confSRCADD', `confSRCADD')
+
+ifdef(`conf_'bldCURRENT_PRD`_SRCADD', `bldLIST_PUSH_ITEM(`bldSOURCES', `conf_'bldCURRENT_PRD`_SRCADD')')
+
+# additional .o files needed
+OBJADD= ifdef(`confOBJADD', `confOBJADD')
+bldCURRENT_PRODUCT`OBJADD'= ifdef(`conf_'bldCURRENT_PRD`_OBJADD', `conf_'bldCURRENT_PRD`_OBJADD') ifdef(`confLIBADD', `bldADD_EXTENSIONS(`a', confLIBADD)', `')
+
+# copy files
+CP= ifdef(`confCOPY', `confCOPY', `cp')
+
+# In some places windows wants nmake where unix would just want make
+NMAKE=ifdef(`confNMAKE', `confNMAKE', `${MAKE}')
+
+################### end of user configuration flags ######################
+
+BUILDBIN=confBUILDBIN
+COPTS= -I. ${INCDIRS} ${ENVDEF} ${CCOPTS}
+CFLAGS= $O ${COPTS} ifdef(`confMT', ifdef(`confMTCFLAGS', `confMTCFLAGS -DXP_MT', `-DXP_MT'), `')
+
+
+BEFORE= confBEFORE ifdef(`confREQUIRE_SM_OS_H',`sm_os.h')
+
+LINKS=ifdef(`bldLINK_SOURCES', `bldLINK_SOURCES', `')
+
+bldCURRENT_PRODUCT`SRCS'= bldSOURCES ${SRCADD}
+bldCURRENT_PRODUCT`OBJS'= bldSUBST_EXTENSIONS(`o', bldSOURCES) ifdef(`bldLINK_SOURCES', `bldSUBST_EXTENSIONS(`o', bldLINK_SOURCES)') ${OBJADD} ${bldCURRENT_PRODUCT`OBJADD'}
+bldCURRENT_PRODUCT`SMDEPLIBS'= ifdef(`bldSMDEPLIBS', `bldSMDEPLIBS', `')
+bldCURRENT_PRODUCT`TARGET_LINKS'= ifdef(`bldTARGET_LINKS', `bldTARGET_LINKS', `')
+
+bldPUSH_ALL_SRCS(bldCURRENT_PRODUCT`SRCS')dnl
+
+ifdef(`bldBIN_TYPE', , `define(`bldBIN_TYPE', `U')')dnl
+ifdef(`bldINSTALL_DIR', , `define(`bldINSTALL_DIR', `U')')dnl
+
+NROFF= ifdef(`confNROFF', `confNROFF', `groff -Tascii')
+MANDOC= ifdef(`confMANDOC', `confMANDOC', `-man')
+
+INSTALL=ifdef(`confINSTALL', `confINSTALL', `install')
+
+# User binary ownership/permissions
+UBINOWN=ifdef(`confUBINOWN', `confUBINOWN', `bin')
+UBINGRP=ifdef(`confUBINGRP', `confUBINGRP', `bin')
+UBINMODE=ifdef(`confUBINMODE', `confUBINMODE', `555')
+
+# Setuid binary ownership/permissions
+SBINOWN=ifdef(`confSBINOWN', `confSBINOWN', `root')
+SBINGRP=ifdef(`confSBINGRP', `confSBINGRP', `bin')
+SBINMODE=ifdef(`confSBINMODE', `confSBINMODE', `4555')
+
+# Setgid binary ownership/permissions
+GBINOWN=ifdef(`confGBINOWN', `confGBINOWN', `root')
+GBINGRP=ifdef(`confGBINGRP', `confGBINGRP', `smmsp')
+GBINMODE=ifdef(`confGBINMODE', `confGBINMODE', `2555')
+
+# owner of MSP queue
+MSPQOWN=ifdef(`confMSPQOWN', `confMSPQOWN', `smmsp')
+
+# MTA binary ownership/permissions
+MBINOWN=ifdef(`confMBINOWN', `confMBINOWN', `root')
+MBINGRP=ifdef(`confMBINGRP', `confMBINGRP', `bin')
+MBINMODE=ifdef(`confMBINMODE', `confMBINMODE', `550')
+
+# Library ownership/permissions
+LIBOWN=ifdef(`confLIBOWN', `confLIBOWN', `root')
+LIBGRP=ifdef(`confLIBGRP', `confLIBGRP', `bin')
+LIBMODE=ifdef(`confLIBMODE', `confLIBMODE', `0444')
+
+# Include file ownership/permissions
+INCOWN=ifdef(`confINCOWN', `confINCOWN', `root')
+INCGRP=ifdef(`confINCGRP', `confINCGRP', `bin')
+INCMODE=ifdef(`confINCMODE', `confINCMODE', `0444')
diff --git a/devtools/M4/UNIX/executable.m4 b/devtools/M4/UNIX/executable.m4
new file mode 100644
index 000000000000..44d255890c38
--- /dev/null
+++ b/devtools/M4/UNIX/executable.m4
@@ -0,0 +1,42 @@
+divert(-1)
+#
+# Copyright (c) 1999, 2001, 2006 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: executable.m4,v 8.24 2006/10/06 05:44:44 ca Exp $
+#
+divert(0)dnl
+include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/links.m4')dnl
+bldLIST_PUSH_ITEM(`bldC_PRODUCTS', bldCURRENT_PRODUCT)dnl
+bldPUSH_TARGET(bldCURRENT_PRODUCT)dnl
+bldPUSH_INSTALL_TARGET(`install-'bldCURRENT_PRODUCT)dnl
+bldPUSH_CLEAN_TARGET(bldCURRENT_PRODUCT`-clean')dnl
+bldPUSH_ALL_SRCS(bldCURRENT_PRODUCT`SRCS')dnl
+bldPUSH_STRIP_TARGET(`strip-'bldCURRENT_PRODUCT)dnl
+
+include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/defines.m4')
+divert(bldTARGETS_SECTION)
+bldCURRENT_PRODUCT: ${bldCURRENT_PRODUCT`OBJS'} ${bldCURRENT_PRODUCT`SMDEPLIBS'}
+ ${CCLINK} -o bldCURRENT_PRODUCT ${LDOPTS} ${LIBDIRS} ${bldCURRENT_PRODUCT`OBJS'} ${LIBS}
+
+ifdef(`bldLINK_SOURCES', `bldMAKE_SOURCE_LINKS(bldLINK_SOURCES)')
+
+ifdef(`bldNO_INSTALL', ,
+`install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT ifdef(`bldTARGET_INST_DEP', `bldTARGET_INST_DEP')
+ ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${bldINSTALL_DIR`'BINDIR} ]; then confMKDIR -p ${DESTDIR}${bldINSTALL_DIR`'BINDIR}; else :; fi ')
+ ${INSTALL} -c -o ${bldBIN_TYPE`'BINOWN} -g ${bldBIN_TYPE`'BINGRP} -m ${bldBIN_TYPE`'BINMODE} bldCURRENT_PRODUCT ${DESTDIR}${bldINSTALL_DIR`'BINDIR}
+ifdef(`bldTARGET_LINKS', `bldMAKE_TARGET_LINKS(${bldINSTALL_DIR`'BINDIR}/bldCURRENT_PRODUCT, ${bldCURRENT_PRODUCT`'TARGET_LINKS})')')
+
+strip-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT
+ ${STRIP} ${STRIPOPTS} ${DESTDIR}${bldINSTALL_DIR`'BINDIR}`'/bldCURRENT_PRODUCT
+
+bldCURRENT_PRODUCT-clean:
+ rm -f ${OBJS} bldCURRENT_PRODUCT ${MANPAGES}
+divert(0)
diff --git a/devtools/M4/UNIX/footer.m4 b/devtools/M4/UNIX/footer.m4
new file mode 100644
index 000000000000..18b386eb34a4
--- /dev/null
+++ b/devtools/M4/UNIX/footer.m4
@@ -0,0 +1,19 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: footer.m4,v 8.2 1999/05/13 16:16:35 gshapiro Exp $
+#
+divert(0)dnl
+################ Dependency scripts
+include(confBUILDTOOLSDIR/M4/depend/ifdef(`confDEPEND_TYPE', `confDEPEND_TYPE',
+`generic').m4)dnl
+################ End of dependency scripts
diff --git a/devtools/M4/UNIX/library.m4 b/devtools/M4/UNIX/library.m4
new file mode 100644
index 000000000000..77ed2104e905
--- /dev/null
+++ b/devtools/M4/UNIX/library.m4
@@ -0,0 +1,36 @@
+divert(-1)
+#
+# Copyright (c) 1999-2001, 2006 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: library.m4,v 8.11 2006/09/05 22:56:53 ca Exp $
+#
+divert(0)dnl
+include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/links.m4')dnl
+bldLIST_PUSH_ITEM(`bldC_PRODUCTS', bldCURRENT_PRODUCT)dnl
+bldPUSH_TARGET(bldCURRENT_PRODUCT`.a')dnl
+bldPUSH_INSTALL_TARGET(`install-'bldCURRENT_PRODUCT)dnl
+bldPUSH_CLEAN_TARGET(bldCURRENT_PRODUCT`-clean')dnl
+
+include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/defines.m4')
+divert(bldTARGETS_SECTION)
+bldCURRENT_PRODUCT.a: ${BEFORE} ${bldCURRENT_PRODUCT`OBJS'}
+ ${AR} ${AROPTS} bldCURRENT_PRODUCT.a ${bldCURRENT_PRODUCT`OBJS'}
+ ${RANLIB} ${RANLIBOPTS} bldCURRENT_PRODUCT.a
+ifdef(`bldLINK_SOURCES', `bldMAKE_SOURCE_LINKS(bldLINK_SOURCES)')
+
+install-`'bldCURRENT_PRODUCT: bldCURRENT_PRODUCT.a
+ifdef(`bldINSTALLABLE', ` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${bldINSTALL_DIR`'LIBDIR} ]; then confMKDIR -p ${DESTDIR}${bldINSTALL_DIR`'LIBDIR}; else :; fi ')
+ ${INSTALL} -c -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} bldCURRENT_PRODUCT.a ${DESTDIR}${LIBDIR}')
+
+bldCURRENT_PRODUCT-clean:
+ rm -f ${OBJS} bldCURRENT_PRODUCT.a ${MANPAGES}
+
+divert(0)
diff --git a/devtools/M4/UNIX/links.m4 b/devtools/M4/UNIX/links.m4
new file mode 100644
index 000000000000..d47eb5b2dc3b
--- /dev/null
+++ b/devtools/M4/UNIX/links.m4
@@ -0,0 +1,29 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: links.m4,v 8.5 1999/07/25 03:53:08 gshapiro Exp $
+#
+divert(0)dnl
+define(`bldMAKE_SOURCE_LINK',
+`$1: ${SRCDIR}/$1
+ -ln -s ${SRCDIR}/$1 $1'
+)dnl
+define(`bldMAKE_SOURCE_LINKS',
+`bldFOREACH(`bldMAKE_SOURCE_LINK(', $1)'dnl
+)dnl
+define(`bldMAKE_TARGET_LINKS',
+` for i in $2; do \
+ rm -f $$i; \
+ ln -s $1 $$i; \
+ done'
+)dnl
+
diff --git a/devtools/M4/UNIX/manpage.m4 b/devtools/M4/UNIX/manpage.m4
new file mode 100644
index 000000000000..c46cf6fb49bb
--- /dev/null
+++ b/devtools/M4/UNIX/manpage.m4
@@ -0,0 +1,79 @@
+divert(-1)
+#
+# Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: manpage.m4,v 8.15 2006/09/07 22:13:07 ca Exp $
+#
+divert(0)dnl
+
+define(`bldGET_MAN_SOURCE_NUM',
+`substr($1, eval(len($1) - 1))'dnl
+)dnl
+define(`bldGET_MAN_BASE_NAME',
+`substr($1, 0, eval(len($1) - 2))'dnl
+)dnl
+ifdef(`confNO_MAN_BUILD',, `
+bldPUSH_TARGET(`${MANPAGES}')
+bldPUSH_INSTALL_TARGET(`install-docs')')
+bldLIST_PUSH_ITEM(`bldMAN_PAGES', `bldSOURCES')dnl
+
+MANOWN= ifdef(`confMANOWN', `confMANOWN', `bin')
+MANGRP= ifdef(`confMANGRP', `confMANGRP', `bin')
+MANMODE=ifdef(`confMANMODE', `confMANMODE', `444')
+MANROOT=ifdef(`confMANROOT', `confMANROOT', `/usr/share/man/cat')
+MANROOTMAN=ifdef(`confMANROOTMAN', `confMANROOTMAN', `/usr/share/man/man')
+MAN1= ${MANROOT}ifdef(`confMAN1', `confMAN1', `1')
+MAN1MAN=${MANROOTMAN}ifdef(`confMAN1', `confMAN1', `1')
+MAN1EXT=ifdef(`confMAN1EXT', `confMAN1EXT', `1')
+MAN1SRC=ifdef(`confMAN1SRC', `confMAN1SRC', `0')
+MAN3= ${MANROOT}ifdef(`confMAN3', `confMAN3', `3')
+MAN3MAN=${MANROOTMAN}ifdef(`confMAN3', `confMAN3', `3')
+MAN3EXT=ifdef(`confMAN3EXT', `confMAN3EXT', `3')
+MAN3SRC=ifdef(`confMAN3SRC', `confMAN3SRC', `0')
+MAN4= ${MANROOT}ifdef(`confMAN4', `confMAN4', `4')
+MAN4MAN=${MANROOTMAN}ifdef(`confMAN4', `confMAN4', `4')
+MAN4EXT=ifdef(`confMAN4EXT', `confMAN4EXT', `4')
+MAN4SRC=ifdef(`confMAN4SRC', `confMAN4SRC', `0')
+MAN5= ${MANROOT}ifdef(`confMAN5', `confMAN5', `5')
+MAN5MAN=${MANROOTMAN}ifdef(`confMAN5', `confMAN5', `5')
+MAN5EXT=ifdef(`confMAN5EXT', `confMAN5EXT', `5')
+MAN5SRC=ifdef(`confMAN5SRC', `confMAN5SRC', `0')
+MAN8= ${MANROOT}ifdef(`confMAN8', `confMAN8', `8')
+MAN8MAN=${MANROOTMAN}ifdef(`confMAN8', `confMAN8', `8')
+MAN8EXT=ifdef(`confMAN8EXT', `confMAN8EXT', `8')
+MAN8SRC=ifdef(`confMAN8SRC', `confMAN8SRC', `0')
+
+define(`bldMAN_TARGET_NAME',
+`bldGET_MAN_BASE_NAME($1).${MAN`'bldGET_MAN_SOURCE_NUM($1)`SRC}' 'dnl
+)dnl
+MANPAGES= bldFOREACH(`bldMAN_TARGET_NAME(', `bldMAN_PAGES')
+
+divert(bldTARGETS_SECTION)
+define(`bldMAN_BUILD_CMD',
+`bldGET_MAN_BASE_NAME($1).${MAN`'bldGET_MAN_SOURCE_NUM($1)`SRC}': bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1)
+ ${NROFF} ${MANDOC} bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1) > bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' || ${CP} bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}'.dist bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}''
+
+)dnl
+bldFOREACH(`bldMAN_BUILD_CMD(', `bldMAN_PAGES')
+
+install-docs: ${MANPAGES}
+ifdef(`confNO_MAN_INSTALL', `divert(-1)', `dnl')
+define(`bldMAN_INSTALL_CMD',
+`ifdef(`confDONT_INSTALL_CATMAN', `dnl',
+` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}; else :; fi ')
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).`${MAN'bldGET_MAN_SOURCE_NUM($1)`SRC}' `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)}/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'')
+ifdef(`confINSTALL_RAWMAN',
+` ifdef(`confMKDIR', `if [ ! -d ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN} ]; then confMKDIR -p ${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}; else :; fi ')
+ ${INSTALL} -c -o ${MANOWN} -g ${MANGRP} -m ${MANMODE} bldGET_MAN_BASE_NAME($1).bldGET_MAN_SOURCE_NUM($1) `${DESTDIR}${MAN'bldGET_MAN_SOURCE_NUM($1)`MAN}'/bldGET_MAN_BASE_NAME($1)`.${MAN'bldGET_MAN_SOURCE_NUM($1)`EXT}'', `dnl')'
+)dnl
+bldFOREACH(`bldMAN_INSTALL_CMD(', `bldMAN_PAGES')
+ifdef(`confNO_MAN_INSTALL', `divert(0)', `dnl')
+divert(0)
diff --git a/devtools/M4/UNIX/sm-test.m4 b/devtools/M4/UNIX/sm-test.m4
new file mode 100644
index 000000000000..71ce3c6e3f3f
--- /dev/null
+++ b/devtools/M4/UNIX/sm-test.m4
@@ -0,0 +1,28 @@
+divert(-1)
+#
+# Copyright (c) 2001-2002 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+# Compile/run a test program for libsm.
+#
+# $Id: sm-test.m4,v 1.7 2002/02/01 17:38:07 ca Exp $
+#
+define(`smtest',
+`bldPUSH_TARGET($1)dnl
+bldLIST_PUSH_ITEM(`bldC_PRODUCTS', $1)dnl
+bldPUSH_CLEAN_TARGET($1`-clean')dnl
+divert(bldTARGETS_SECTION)
+$1`'SRCS=$1.c
+$1: ${BEFORE} $1.o ifdef(`confREQUIRE_LIBSM', `libsm.a')
+ ${CC} -o $1 ${LDOPTS} ${LIBDIRS} $1.o ifdef(`confREQUIRE_LIBSM', `libsm.a') ${LIBS}
+ifelse(len(X`'$2), `1', `', `
+ @echo ============================================================
+ ./$1
+ @echo ============================================================')
+$1-clean:
+ rm -f $1 $1.o
+divert(0)')
diff --git a/devtools/M4/UNIX/smlib.m4 b/devtools/M4/UNIX/smlib.m4
new file mode 100644
index 000000000000..9720d7d7427c
--- /dev/null
+++ b/devtools/M4/UNIX/smlib.m4
@@ -0,0 +1,27 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: smlib.m4,v 8.3 2000/07/07 18:52:23 dmoen Exp $
+#
+divert(0)dnl
+
+define(`confLIBEXT', `a')dnl
+
+define(`bldPUSH_SMLIB',
+ `bldPUSH_TARGET(bldABS_OBJ_DIR`/lib$1/lib$1.a')
+bldPUSH_SMDEPLIB(bldABS_OBJ_DIR`/lib$1/lib$1.a')
+PREPENDDEF(`confLIBS', bldABS_OBJ_DIR`/lib$1/lib$1.a')
+divert(bldTARGETS_SECTION)
+bldABS_OBJ_DIR/lib$1/lib$1.a:
+ (cd ${SRCDIR}/lib$1; sh Build ${SENDMAIL_BUILD_FLAGS})
+divert
+')dnl
diff --git a/devtools/M4/depend/AIX.m4 b/devtools/M4/depend/AIX.m4
new file mode 100644
index 000000000000..4cc49bbd6273
--- /dev/null
+++ b/devtools/M4/depend/AIX.m4
@@ -0,0 +1,15 @@
+# $Id: AIX.m4,v 8.2 1999/05/28 05:54:26 gshapiro Exp $
+depend: ${BEFORE} ${LINKS}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ changequote([,])
+ for i in ${SRCS}; \
+ do \
+ ${CC} -M -E ${COPTS} $$i > /dev/null; \
+ cat `basename $$i .c`.u >> Makefile ; \
+ rm -f `basename $$i .c`.u ; \
+ done;
+ changequote
+
+# End of $RCSfile: AIX.m4,v $
diff --git a/devtools/M4/depend/BSD.m4 b/devtools/M4/depend/BSD.m4
new file mode 100644
index 000000000000..e97140061b99
--- /dev/null
+++ b/devtools/M4/depend/BSD.m4
@@ -0,0 +1,8 @@
+# $Id: BSD.m4,v 8.6 1999/05/27 22:03:28 peterh Exp $
+depend: ${BEFORE} ${LINKS}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ mkdep -a -f Makefile ${COPTS} ${SRCS}
+
+# End of $RCSfile: BSD.m4,v $
diff --git a/devtools/M4/depend/CC-M.m4 b/devtools/M4/depend/CC-M.m4
new file mode 100644
index 000000000000..2db655f42119
--- /dev/null
+++ b/devtools/M4/depend/CC-M.m4
@@ -0,0 +1,8 @@
+# $Id: CC-M.m4,v 8.5 1999/05/27 22:03:28 peterh Exp $
+depend: ${BEFORE} ${LINKS}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -M ${COPTS} ${SRCS} >> Makefile
+
+# End of $RCSfile: CC-M.m4,v $
diff --git a/devtools/M4/depend/NCR.m4 b/devtools/M4/depend/NCR.m4
new file mode 100644
index 000000000000..2386142e8b5a
--- /dev/null
+++ b/devtools/M4/depend/NCR.m4
@@ -0,0 +1,8 @@
+# $Id: NCR.m4,v 8.6 1999/05/27 22:03:29 peterh Exp $
+depend: ${BEFORE} ${LINKS}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -w0 -Hmake ${COPTS} ${SRCS} >> Makefile
+
+# End of $RCSfile: NCR.m4,v $
diff --git a/devtools/M4/depend/QNX6.m4 b/devtools/M4/depend/QNX6.m4
new file mode 100644
index 000000000000..3d9814579386
--- /dev/null
+++ b/devtools/M4/depend/QNX6.m4
@@ -0,0 +1,8 @@
+# $Id: QNX6.m4,v 1.1 2007/03/21 23:56:17 ca Exp $
+# This can go away (use CC-M in devel/OS/QNX.6.x) with newer qcc (PR 26458)
+depend: ${BEFORE} ${LINKS}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -E -Wp,-M ${COPTS} ${SRCS} >> Makefile
+
diff --git a/devtools/M4/depend/Solaris.m4 b/devtools/M4/depend/Solaris.m4
new file mode 100644
index 000000000000..b50ebee70807
--- /dev/null
+++ b/devtools/M4/depend/Solaris.m4
@@ -0,0 +1,8 @@
+# $Id: Solaris.m4,v 8.4 1999/05/27 22:03:29 peterh Exp $
+depend: ${BEFORE} ${LINKS}
+ @mv Makefile Makefile.old
+ @sed -e '/^# Do not edit or remove this line or anything below it.$$/,$$d' < Makefile.old > Makefile
+ @echo "# Do not edit or remove this line or anything below it." >> Makefile
+ ${CC} -xM ${COPTS} ${SRCS} >> Makefile
+
+# End of $RCSfile: Solaris.m4,v $
diff --git a/devtools/M4/depend/X11.m4 b/devtools/M4/depend/X11.m4
new file mode 100644
index 000000000000..fab0e283014e
--- /dev/null
+++ b/devtools/M4/depend/X11.m4
@@ -0,0 +1,5 @@
+# $Id: X11.m4,v 8.4 1999/05/27 22:03:29 peterh Exp $
+depend: ${BEFORE} ${LINKS}
+ makedepend -- ${COPTS} -- ${SRCS}
+
+# End of $RCSfile: X11.m4,v $
diff --git a/devtools/M4/depend/generic.m4 b/devtools/M4/depend/generic.m4
new file mode 100644
index 000000000000..b2d454569ccd
--- /dev/null
+++ b/devtools/M4/depend/generic.m4
@@ -0,0 +1,6 @@
+# $Id: generic.m4,v 8.5 1999/05/24 18:38:33 rand Exp $
+# dependencies
+
+# give a null "depend" list so that the startup script will work
+depend:
+# End of $RCSfile: generic.m4,v $
diff --git a/devtools/M4/header.m4 b/devtools/M4/header.m4
new file mode 100644
index 000000000000..8c0ca189e7a6
--- /dev/null
+++ b/devtools/M4/header.m4
@@ -0,0 +1,36 @@
+#
+# 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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: header.m4,v 8.27 2002/08/01 21:58:26 gshapiro Exp $
+#
+changecom(^A)
+undefine(`format')
+undefine(`hpux')
+undefine(`unix')
+ifdef(`pushdef', `',
+ `errprint(`You need a newer version of M4, at least as new as
+System V or GNU')
+ include(NoSuchFile)')
+define(`confABI', `')
+define(`confCC', `cc')
+define(`confSHELL', `/bin/sh')
+define(`confBEFORE', `')
+define(`confLIBDIRS', `')
+define(`confINCDIRS', `')
+define(`confLIBSEARCH', `db bind resolv 44bsd')
+define(`confLIBSEARCHPATH', `/lib /usr/lib /usr/shlib')
+define(`confSITECONFIG', `site.config')
+define(`confBUILDBIN', `${SRCDIR}/devtools/bin')
+define(`confRANLIB', `echo')
+define(`PUSHDIVERT', `pushdef(`__D__', divnum)divert($1)')
+define(`POPDIVERT', `divert(__D__)popdef(`__D__')')
+define(`APPENDDEF', `define(`$1', ifdef(`$1', `$1 $2', `$2'))')
+define(`PREPENDDEF', `define(`$1', ifdef(`$1', `$2 $1', `$2'))')
diff --git a/devtools/M4/list.m4 b/devtools/M4/list.m4
new file mode 100644
index 000000000000..f11590bb1113
--- /dev/null
+++ b/devtools/M4/list.m4
@@ -0,0 +1,26 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: list.m4,v 8.3 1999/07/15 22:46:05 rand Exp $
+#
+divert(0)dnl
+define(`bldLIST_PUSH_ITEM',
+`define(`$1', ifdef(`$1', `$1 $2 ', `$2 '))'
+)dnl
+define(`bldFOREACH',
+`$1substr($2, `0', index($2, ` ')))`'ifelse(index($2, ` '), eval(len($2)-1), , `bldFOREACH(`$1', substr($2, index($2, ` ')))')'dnl
+)dnl
+
+define(`bldADD_PATH', `$1/$2 ')dnl
+define(`bldADD_PATHS',
+`bldFOREACH(`bldADD_PATH(`$1',', $2)'dnl
+)dnl
diff --git a/devtools/M4/string.m4 b/devtools/M4/string.m4
new file mode 100644
index 000000000000..e4916d3bbed3
--- /dev/null
+++ b/devtools/M4/string.m4
@@ -0,0 +1,18 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: string.m4,v 8.2 1999/05/13 16:16:33 gshapiro Exp $
+#
+divert(0)dnl
+define(`bldRINDEX',
+`ifelse(index($1, $2), `-1', `-1', `eval(index($1, $2) + bldRINDEX(substr($1, eval(index($1, $2) + 1)), $2) + 1)')'dnl
+)dnl
diff --git a/devtools/M4/subst_ext.m4 b/devtools/M4/subst_ext.m4
new file mode 100644
index 000000000000..46f9b4d5cd3c
--- /dev/null
+++ b/devtools/M4/subst_ext.m4
@@ -0,0 +1,30 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: subst_ext.m4,v 8.3 1999/05/24 18:29:46 rand Exp $
+#
+divert(0)dnl
+define(`bldSUBST_EXTENSION',
+`substr($2, 0, bldRINDEX($2, `.'))`'.$1 'dnl
+)dnl
+define(`bldSUBST_EXTENSIONS',
+`bldFOREACH(`bldSUBST_EXTENSION(`$1',', $2)'dnl
+)dnl
+define(`bldREMOVE_COMMAS',
+`$1 ifelse($#, 1, , `bldREMOVE_COMMAS(shift($@))')'dnl
+)dnl
+
+define(`bldADD_EXTENSION', `$2.$1 ')dnl
+define(`bldADD_EXTENSIONS',
+`bldFOREACH(`bldADD_EXTENSION(`$1',', $2)'dnl
+)dnl
+
diff --git a/devtools/M4/switch.m4 b/devtools/M4/switch.m4
new file mode 100644
index 000000000000..e95afdf43bb0
--- /dev/null
+++ b/devtools/M4/switch.m4
@@ -0,0 +1,63 @@
+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.
+#
+#
+# Definitions for Makefile construction for sendmail
+#
+# $Id: switch.m4,v 8.16 2000/04/06 18:45:22 peterh Exp $
+#
+divert(0)dnl
+include(confBUILDTOOLSDIR`/M4/string.m4')dnl
+include(confBUILDTOOLSDIR`/M4/list.m4')dnl
+include(confBUILDTOOLSDIR`/M4/subst_ext.m4')dnl
+define(`bldDEPENDENCY_SECTION', `3')dnl
+define(`bldTARGETS_SECTION', `6')dnl
+define(`bldPUSH_TARGET',
+ `bldLIST_PUSH_ITEM(`bldTARGETS', `$1')'dnl
+)dnl
+
+define(`bldPUSH_INSTALL_TARGET',
+ `bldLIST_PUSH_ITEM(`bldINSTALL_TARGETS', `$1')'dnl
+)dnl
+
+define(`bldPUSH_CLEAN_TARGET',
+ `bldLIST_PUSH_ITEM(`bldCLEAN_TARGETS', `$1')'dnl
+)dnl
+
+define(`bldPUSH_ALL_SRCS',
+ `bldLIST_PUSH_ITEM(`bldALL_SRCS', `$1')'dnl
+)dnl
+
+define(`bldPUSH_SMDEPLIB',
+ `bldLIST_PUSH_ITEM(`bldSMDEPLIBS', `$1')'dnl
+)dnl
+
+define(`bldM4_TYPE_DIR',ifdef(`confNT', `NT', ``UNIX''))dnl
+
+define(`bldPUSH_STRIP_TARGET',
+ `bldLIST_PUSH_ITEM(`bldSTRIP_TARGETS', `$1')'dnl
+)dnl
+
+define(`bldPRODUCT_START',
+`define(`bldCURRENT_PRODUCT', `$2')dnl
+define(`bldCURRENT_PRD', translit(`$2', `.', `_'))dnl
+define(`bldPRODUCT_TYPE', `$1')dnl'
+)dnl
+
+
+define(`bldPRODUCT_END',
+`include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/'bldPRODUCT_TYPE`.m4')'
+)dnl
+
+include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/smlib.m4')dnl
+
+define(`bldFINISH',
+ifdef(`bldDONT_INCLUDE_ALL', ,``include(confBUILDTOOLSDIR`/M4/'bldM4_TYPE_DIR`/all.m4')'')dnl
+undivert(bldTARGETS_SECTION)dnl
+)dnl
diff --git a/devtools/OS/386BSD b/devtools/OS/386BSD
new file mode 100644
index 000000000000..9f83c686c7c6
--- /dev/null
+++ b/devtools/OS/386BSD
@@ -0,0 +1,11 @@
+# $Id: 386BSD,v 8.3 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', ` -DMIME')
+define(`confLIBS', `-lutil')
+define(`confLINKS', `/usr/sbin/sendmail /usr/bin/newaliases \
+ /usr/sbin/sendmail /usr/bin/mailq \
+ /usr/sbin/sendmail /usr/bin/hoststat \
+ /usr/sbin/sendmail /usr/bin/purgestat')
diff --git a/devtools/OS/A-UX b/devtools/OS/A-UX
new file mode 100644
index 000000000000..d6ffaceb2892
--- /dev/null
+++ b/devtools/OS/A-UX
@@ -0,0 +1,13 @@
+# $Id: A-UX,v 8.8 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D_POSIX_SOURCE')
+define(`confLIBS', `-ldbm -lposix -lUTIL')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
diff --git a/devtools/OS/AIX b/devtools/OS/AIX
new file mode 100644
index 000000000000..64d714fb3640
--- /dev/null
+++ b/devtools/OS/AIX
@@ -0,0 +1,14 @@
+# $Id: AIX,v 8.12 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-D_AIX3')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-ldbm')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `AIX')
+define(`confSM_OS_HEADER', `sm_os_aix')
diff --git a/devtools/OS/AIX.4.2 b/devtools/OS/AIX.4.2
new file mode 100644
index 000000000000..97ee6017ae76
--- /dev/null
+++ b/devtools/OS/AIX.4.2
@@ -0,0 +1,16 @@
+# $Id: AIX.4.2,v 8.16 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40200')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confLIBS', `-ldbm')
+define(`confLIBSEARCH', `db resolv 44bsd')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confSM_OS_HEADER', `sm_os_aix')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
diff --git a/devtools/OS/AIX.4.3 b/devtools/OS/AIX.4.3
new file mode 100644
index 000000000000..00fe2cee8ace
--- /dev/null
+++ b/devtools/OS/AIX.4.3
@@ -0,0 +1,24 @@
+# $Id: AIX.4.3,v 8.20 2003/07/03 01:30:10 jutta Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4=40300')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confCC', `/usr/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
+define(`confSM_OS_HEADER', `sm_os_aix')
+
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLDOPTS_SO', `-Wl,-G -Wl,-bexpall')
+
+define(`USE_ICONV',`
+ APPENDDEF(`confLIBS',`-liconv ')dnl
+')dnl
diff --git a/devtools/OS/AIX.4.x b/devtools/OS/AIX.4.x
new file mode 100644
index 000000000000..53f5b4e500b8
--- /dev/null
+++ b/devtools/OS/AIX.4.x
@@ -0,0 +1,15 @@
+# $Id: AIX.4.x,v 8.17 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX4')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
+define(`confSM_OS_HEADER', `sm_os_aix')
diff --git a/devtools/OS/AIX.5.0 b/devtools/OS/AIX.5.0
new file mode 100644
index 000000000000..e7a0abdde682
--- /dev/null
+++ b/devtools/OS/AIX.5.0
@@ -0,0 +1,20 @@
+# $Id: AIX.5.0,v 1.6 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX5=50000')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confCC', `/usr/vac/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
+define(`confSM_OS_HEADER', `sm_os_aix')
+
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLDOPTS_SO', `-Wl,-G -Wl,-bexpall')
diff --git a/devtools/OS/AIX.5.1 b/devtools/OS/AIX.5.1
new file mode 100644
index 000000000000..9d48db027b3b
--- /dev/null
+++ b/devtools/OS/AIX.5.1
@@ -0,0 +1,20 @@
+# $Id: AIX.5.1,v 1.2 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX5=50100')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confCC', `/usr/vac/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
+define(`confSM_OS_HEADER', `sm_os_aix')
+
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLDOPTS_SO', `-Wl,-G -Wl,-bexpall')
diff --git a/devtools/OS/AIX.5.2 b/devtools/OS/AIX.5.2
new file mode 100644
index 000000000000..c935e298d9bd
--- /dev/null
+++ b/devtools/OS/AIX.5.2
@@ -0,0 +1,20 @@
+# $Id: AIX.5.2,v 1.2 2003/04/28 23:37:21 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX5=50200')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confCC', `/usr/vac/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
+define(`confSM_OS_HEADER', `sm_os_aix')
+
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLDOPTS_SO', `-Wl,-G -Wl,-bexpall')
diff --git a/devtools/OS/AIX.5.3 b/devtools/OS/AIX.5.3
new file mode 100644
index 000000000000..c2ba803912e9
--- /dev/null
+++ b/devtools/OS/AIX.5.3
@@ -0,0 +1,20 @@
+# $Id: AIX.5.3,v 1.1 2005/05/17 00:36:55 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_AIX5=50300')
+define(`confOPTIMIZE', `-O3 -qstrict')
+define(`confCC', `/usr/vac/bin/xlc')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `system')
+define(`confDEPEND_TYPE', `AIX')
+define(`confLDOPTS', `-blibpath:/usr/lib:/lib')
+define(`confSM_OS_HEADER', `sm_os_aix')
+
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLDOPTS_SO', `-Wl,-G -Wl,-bexpall')
diff --git a/devtools/OS/Altos b/devtools/OS/Altos
new file mode 100644
index 000000000000..3edcc7a22c2e
--- /dev/null
+++ b/devtools/OS/Altos
@@ -0,0 +1,14 @@
+# $Id: Altos,v 8.10 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confENVDEF', `-DALTOS_SYSTEM_V')
+define(`confLIBS', `-lsocket -lrpc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/BSD-OS b/devtools/OS/BSD-OS
new file mode 100644
index 000000000000..1d61797d430f
--- /dev/null
+++ b/devtools/OS/BSD-OS
@@ -0,0 +1,12 @@
+# $Id: BSD-OS,v 8.16 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNEWDB -DMAP_REGEX')
+define(`confENVDEF', `-DNETISO')
+define(`confLIBS', `-lutil -lkvm')
+define(`confOPTIMIZE', `-O2')
+define(`confMAN1EXT', `0')
+define(`confMAN5EXT', `0')
+define(`confMAN8EXT', `0')
diff --git a/devtools/OS/BSD43 b/devtools/OS/BSD43
new file mode 100644
index 000000000000..7f6e91ef4c52
--- /dev/null
+++ b/devtools/OS/BSD43
@@ -0,0 +1,23 @@
+# $Id: BSD43,v 8.11 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confBEFORE', `unistd.h stddef.h stdlib.h dirent.h sys/time.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DoldBSD43')
+define(`confLIBS', `-ldbm -ll')
+define(`confUBINDIR', `/usr/ucb')
+PUSHDIVERT(3)
+unistd.h stddef.h stdlib.h sys/time.h:
+ cp /dev/null $@
+
+sys/time.h: sys
+
+sys:
+ mkdir sys
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/CLIX b/devtools/OS/CLIX
new file mode 100644
index 000000000000..86749cf6fc8b
--- /dev/null
+++ b/devtools/OS/CLIX
@@ -0,0 +1,16 @@
+# $Id: CLIX,v 8.13 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DCLIX')
+APPENDDEF(`confINCDIRS', `-I/usr/include')
+define(`confLIBS', `-lnsl -lbsd')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `cp')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/CSOS b/devtools/OS/CSOS
new file mode 100644
index 000000000000..c2953d91c022
--- /dev/null
+++ b/devtools/OS/CSOS
@@ -0,0 +1,11 @@
+# $Id: CSOS,v 8.8 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confLIBS', `-lnet')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/devtools/OS/ConvexOS b/devtools/OS/ConvexOS
new file mode 100644
index 000000000000..d83a1b2032ee
--- /dev/null
+++ b/devtools/OS/ConvexOS
@@ -0,0 +1,13 @@
+# $Id: ConvexOS,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DYPCOMPAT -DNIS')
+define(`confENVDEF', `-D__STDC__ -d non_int_bit_field')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-lshare')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
diff --git a/devtools/OS/Darwin b/devtools/OS/Darwin
new file mode 100644
index 000000000000..60bc755af9ff
--- /dev/null
+++ b/devtools/OS/Darwin
@@ -0,0 +1,25 @@
+# $Id: Darwin,v 8.6 2002/08/26 22:08:49 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+# Wilfredo Sanchez <wsanchez@apple.com>:
+# We look a lot more like 4.4BSD than NeXTStep or OpenStep.
+#
+define(`confCC', `cc -traditional-cpp -pipe ${Extra_CC_Flags}')
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX -DNETINFO -DAUTO_NETINFO_ALIASES -DAUTO_NETINFO_HOSTS')
+define(`confENVDEF', `-DDARWIN')
+define(`confLDOPTS', `${Extra_LD_Flags}')
+define(`confMILTER_STATIC', `')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confOPTIMIZE', `-O3')
+define(`confRANLIBOPTS', `-c')
+define(`confHFDIR', `/usr/share/sendmail')
+define(`confINSTALL_RAWMAN')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
diff --git a/devtools/OS/Darwin.7.x b/devtools/OS/Darwin.7.x
new file mode 100644
index 000000000000..6522e4e51345
--- /dev/null
+++ b/devtools/OS/Darwin.7.x
@@ -0,0 +1,22 @@
+# $Id: Darwin.7.x,v 1.2 2004/01/19 21:21:22 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+define(`confCC', `cc -pipe ${Extra_CC_Flags}')
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DDARWIN -DBIND_8_COMPAT')
+define(`confLDOPTS', `${Extra_LD_Flags}')
+define(`confMILTER_STATIC', `')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confOPTIMIZE', `-O3')
+define(`confRANLIBOPTS', `-c')
+define(`confHFDIR', `/usr/share/sendmail')
+define(`confINSTALL_RAWMAN')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
diff --git a/devtools/OS/Darwin.8.x b/devtools/OS/Darwin.8.x
new file mode 100644
index 000000000000..347fa74dfd24
--- /dev/null
+++ b/devtools/OS/Darwin.8.x
@@ -0,0 +1,25 @@
+# $Id: Darwin.8.x,v 1.4 2008/02/26 21:21:30 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+define(`confCC', `cc -pipe ${Extra_CC_Flags}')
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DDARWIN=80000 -DBIND_8_COMPAT -DNETINET6')
+define(`confLDOPTS', `${Extra_LD_Flags}')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMILTER_STATIC', `')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confOPTIMIZE', `-O3')
+define(`confRANLIBOPTS', `-c')
+define(`confHFDIR', `/usr/share/sendmail')
+define(`confINSTALL_RAWMAN')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
+define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module')
+define(`confSHAREDLIB_EXT', `.dylib')
diff --git a/devtools/OS/Darwin.9.x b/devtools/OS/Darwin.9.x
new file mode 100644
index 000000000000..08bd7acb5513
--- /dev/null
+++ b/devtools/OS/Darwin.9.x
@@ -0,0 +1,25 @@
+# $Id: Darwin.9.x,v 1.3 2008/02/26 21:21:30 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+define(`confCC', `cc -pipe ${Extra_CC_Flags}')
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DDARWIN=90000 -DBIND_8_COMPAT -DNETINET6')
+define(`confLDOPTS', `${Extra_LD_Flags}')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMILTER_STATIC', `')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confOPTIMIZE', `-O3')
+define(`confRANLIBOPTS', `-c')
+define(`confHFDIR', `/usr/share/sendmail')
+define(`confINSTALL_RAWMAN')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
+define(`confLDOPTS_SO', `-dynamiclib -flat_namespace -undefined suppress -single_module')
+define(`confSHAREDLIB_EXT', `.dylib')
diff --git a/devtools/OS/Dell b/devtools/OS/Dell
new file mode 100644
index 000000000000..4aceadf394c1
--- /dev/null
+++ b/devtools/OS/Dell
@@ -0,0 +1,17 @@
+# $Id: Dell,v 8.12 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__')
+define(`confOPTIMIZE', `-O2')
+define(`confLIBS', `-ldbm -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucblib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/DomainOS b/devtools/OS/DomainOS
new file mode 100644
index 000000000000..152e5575ef3b
--- /dev/null
+++ b/devtools/OS/DomainOS
@@ -0,0 +1,20 @@
+# $Id: DomainOS,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confSBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/DomainOS.10.4 b/devtools/OS/DomainOS.10.4
new file mode 100644
index 000000000000..7839291a59f1
--- /dev/null
+++ b/devtools/OS/DomainOS.10.4
@@ -0,0 +1,17 @@
+# $Id: DomainOS.10.4,v 8.4 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -A nansi -A,systype,any -A,runtype,bsd4.3')
+define(`confBEFORE', `dirent.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confSBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/DragonFly b/devtools/OS/DragonFly
new file mode 100644
index 000000000000..574d31723987
--- /dev/null
+++ b/devtools/OS/DragonFly
@@ -0,0 +1,42 @@
+# $Id: DragonFly,v 1.1 2004/08/06 03:54:05 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confLIBS', `-lutil')
+
+define(`confLD', `cc')
+define(`confMTLDOPTS', `-pthread')
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confLDOPTS_SO', `-shared')
+define(`confCCOPTS_SO', `-fPIC')
+define(`confSONAME', `-soname')
+define(`confSM_OS_HEADER', `sm_os_dragonfly')
+
+define(`confPERL_CONFIGURE_ARGS', `-Dlddlflags=-shared -Dccdlflags="-export-dynamic"')
+
+ifelse(confBLDVARIANT, `DEBUG',
+dnl Debug build
+`
+ define(`confOPTIMIZE',`-g')
+',
+dnl Optimized build
+confBLDVARIANT, `OPTIMIZED',
+`
+ define(`confOPTIMIZE',`-O')
+',
+dnl Purify build
+confBLDVARIANT, `PURIFY',
+`
+ define(`confOPTIMIZE',`-g')
+',
+dnl default
+`
+ define(`confOPTIMIZE',`-O')
+')
+define(`USE_ICONV',`
+ APPENDDEF(`confLIBS',`-liconv ')dnl
+ APPENDDEF(`confLIBDIRS',`-L/usr/local/lib ')dnl
+ APPENDDEF(`confINCDIRS',`-I/usr/local/include ')dnl
+')dnl
diff --git a/devtools/OS/Dynix b/devtools/OS/Dynix
new file mode 100644
index 000000000000..9f0d7d0c5c7d
--- /dev/null
+++ b/devtools/OS/Dynix
@@ -0,0 +1,16 @@
+# $Id: Dynix,v 8.11 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-O -g')
+define(`confLIBS', `-lseq')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `staff # no kmem group,')
+define(`confOBJADD', `strtol.o')
+define(`confSRCADD', `strtol.c')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/EWS-UX_V b/devtools/OS/EWS-UX_V
new file mode 100644
index 000000000000..5af00abcb7aa
--- /dev/null
+++ b/devtools/OS/EWS-UX_V
@@ -0,0 +1,32 @@
+# $Id: EWS-UX_V,v 8.11 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/abiccs/bin/cc -KOlimit=1000')
+define(`confBEFORE', `sysexits.h ndbm.h ndbm.o')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-Dnec_ews_svr4')
+define(`confLIBS', `ndbm.o -lsocket -lnsl -lelf # # with NDBM')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
+ echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
+ cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
+ echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
+# ln -s /usr/abiccs/ucbinclude/sysexits.h .
+
+ndbm.h:
+ ln -s /usr/abiccs/ucbinclude/ndbm.h .
+
+ndbm.o:
+ ar x /usr/abiccs/ucblib/libucb.a ndbm.o
+# ar x /usr/ucblib/libucb.a ndbm.o
+POPDIVERT
diff --git a/devtools/OS/FreeBSD b/devtools/OS/FreeBSD
new file mode 100644
index 000000000000..e09877d6fc32
--- /dev/null
+++ b/devtools/OS/FreeBSD
@@ -0,0 +1,42 @@
+# $Id: FreeBSD,v 8.36 2003/07/03 01:07:45 jutta Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confLIBS', `-lutil')
+
+define(`confLD', `cc')
+define(`confMTLDOPTS', `-pthread')
+define(`confMTCCOPTS', `-D_THREAD_SAFE')
+define(`confLDOPTS_SO', `-shared')
+define(`confCCOPTS_SO', `-fPIC')
+define(`confSONAME', `-soname')
+define(`confSM_OS_HEADER', `sm_os_freebsd')
+
+define(`confPERL_CONFIGURE_ARGS', `-Dlddlflags=-shared -Dccdlflags="-export-dynamic"')
+
+ifelse(confBLDVARIANT, `DEBUG',
+dnl Debug build
+`
+ define(`confOPTIMIZE',`-g')
+',
+dnl Optimized build
+confBLDVARIANT, `OPTIMIZED',
+`
+ define(`confOPTIMIZE',`-O')
+',
+dnl Purify build
+confBLDVARIANT, `PURIFY',
+`
+ define(`confOPTIMIZE',`-g')
+',
+dnl default
+`
+ define(`confOPTIMIZE',`-O')
+')
+define(`USE_ICONV',`
+ APPENDDEF(`confLIBS',`-liconv ')dnl
+ APPENDDEF(`confLIBDIRS',`-L/usr/local/lib ')dnl
+ APPENDDEF(`confINCDIRS',`-I/usr/local/include ')dnl
+')dnl
diff --git a/devtools/OS/GNU b/devtools/OS/GNU
new file mode 100644
index 000000000000..9c8b0f017ff9
--- /dev/null
+++ b/devtools/OS/GNU
@@ -0,0 +1,22 @@
+# $Id: GNU,v 8.3 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-g -O2')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confEBINDIR', `/libexec')
+define(`confMANROOT', `/man/man')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confMANMODE', `644')
+define(`confMBINDIR', `/sbin')
+define(`confSBINDIR', `/sbin')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
+define(`confSBINMODE', `4755')
+define(`confUBINDIR', `/bin')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confUBINMODE', `755')
diff --git a/devtools/OS/HP-UX b/devtools/OS/HP-UX
new file mode 100644
index 000000000000..cfd9ac821258
--- /dev/null
+++ b/devtools/OS/HP-UX
@@ -0,0 +1,16 @@
+# $Id: HP-UX,v 8.14 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -Aa')
+define(`confENVDEF', `-D_HPUX_SOURCE')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confSM_OS_HEADER', `sm_os_hp')
+define(`confOPTIMIZE', `+O1')
+define(`confLIBS', `-lndbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/devtools/OS/HP-UX.10.x b/devtools/OS/HP-UX.10.x
new file mode 100644
index 000000000000..19768e0a2779
--- /dev/null
+++ b/devtools/OS/HP-UX.10.x
@@ -0,0 +1,35 @@
+# $Id: HP-UX.10.x,v 8.20 2003/11/21 01:05:09 lijian Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -Aa')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-D_HPUX_SOURCE -DHPUX10 -DV4FS')
+define(`confSM_OS_HEADER', `sm_os_hp')
+define(`confLIBS', `-lndbm')
+define(`confSHELL', `/usr/bin/sh')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confSBINGRP', `mail')
+
+dnl Don't indent or put any tab/space in this file.
+dnl Tab/space here causes make syntax error
+ifelse(confBLDVARIANT, `DEBUG',
+dnl Debug build
+`
+define(`confOPTIMIZE',`-g')
+',
+dnl Optimized build
+confBLDVARIANT, `OPTIMIZED',
+`
+define(`confOPTIMIZE',`+O3')
+',
+dnl Purify build
+confBLDVARIANT, `PURIFY',
+`
+define(`confOPTIMIZE',`-g')
+',
+dnl default
+`
+define(`confOPTIMIZE',`+O3')
+')
diff --git a/devtools/OS/HP-UX.11.x b/devtools/OS/HP-UX.11.x
new file mode 100644
index 000000000000..f04bc49b9b6f
--- /dev/null
+++ b/devtools/OS/HP-UX.11.x
@@ -0,0 +1,45 @@
+# $Id: HP-UX.11.x,v 8.26 2003/11/21 01:05:09 lijian Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+# +z is to generate position independant code
+define(`confCClibsmi', `cc -Ae +Z')
+define(`confCC', `cc -Ae')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DV4FS -DHPUX11')
+define(`confSM_OS_HEADER', `sm_os_hp')
+define(`confOPTIMIZE',`+O2')
+define(`confLIBS', `-ldbm -lnsl')
+define(`confSHELL', `/usr/bin/sh')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confSBINGRP', `mail')
+define(`confEBINDIR', `/usr/sbin')
+
+define(`confMTCCOPTS', `-D_POSIX_C_SOURCE=199506L +z')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLD', `ld')
+define(`confLDOPTS_SO', `-b')
+define(`confCCOPTS_SO', `')
+
+dnl Don't indent or put any tab/space in this file.
+dnl Tab/space here causes make syntax error
+ifelse(confBLDVARIANT, `DEBUG',
+dnl Debug build
+`
+define(`confOPTIMIZE',`-g')
+',
+dnl Optimized build
+confBLDVARIANT, `OPTIMIZED',
+`
+define(`confOPTIMIZE',`+O2')
+',
+dnl Purify build
+confBLDVARIANT, `PURIFY',
+`
+define(`confOPTIMIZE',`-g')
+',
+dnl default
+`
+define(`confOPTIMIZE',`+O2')
+')
diff --git a/devtools/OS/IRIX b/devtools/OS/IRIX
new file mode 100644
index 000000000000..d482c6f0f610
--- /dev/null
+++ b/devtools/OS/IRIX
@@ -0,0 +1,15 @@
+# $Id: IRIX,v 8.14 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBS', `-lmld -lmalloc -lsun')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX.5.x b/devtools/OS/IRIX.5.x
new file mode 100644
index 000000000000..5d6ac4d7a956
--- /dev/null
+++ b/devtools/OS/IRIX.5.x
@@ -0,0 +1,17 @@
+# $Id: IRIX.5.x,v 8.16 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -mips2 -OPT:Olimit=1400')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBS', `-lmld -lmalloc')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX.6.5 b/devtools/OS/IRIX.6.5
new file mode 100644
index 000000000000..06234e49a1c6
--- /dev/null
+++ b/devtools/OS/IRIX.6.5
@@ -0,0 +1,21 @@
+# $Id: IRIX.6.5,v 8.23 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -mips3 -n32 -OPT:Olimit=0')
+define(`confLIBSEARCHPATH', `/lib32 /usr/lib32')
+define(`confMAPDEF', `-DNEWDB -DNDBM -DNIS -DMAP_REGEX -DMAP_NSD')
+define(`confENVDEF', `-DIRIX6')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confMANOWN', `root')
+define(`confMANGRP', `sys')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `sys')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX.6.x b/devtools/OS/IRIX.6.x
new file mode 100644
index 000000000000..92b0f496addc
--- /dev/null
+++ b/devtools/OS/IRIX.6.x
@@ -0,0 +1,21 @@
+# $Id: IRIX.6.x,v 8.30 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -mips3 -n32 -OPT:Olimit=0')
+define(`confLIBSEARCHPATH', `/lib32 /usr/lib32')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confMANOWN', `root')
+define(`confMANGRP', `sys')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `sys')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX64.6.0 b/devtools/OS/IRIX64.6.0
new file mode 100644
index 000000000000..536ab15c2999
--- /dev/null
+++ b/devtools/OS/IRIX64.6.0
@@ -0,0 +1,19 @@
+# $Id: IRIX64.6.0,v 8.21 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DIRIX64')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confLIBS', `-lelf -lmalloc')
+define(`confMANOWN', `root')
+define(`confMANGRP', `sys')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `sys')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX64.6.1 b/devtools/OS/IRIX64.6.1
new file mode 100644
index 000000000000..b051cd47bfb0
--- /dev/null
+++ b/devtools/OS/IRIX64.6.1
@@ -0,0 +1,19 @@
+# $Id: IRIX64.6.1,v 8.21 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DIRIX64')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confLIBS', `-lelf -lmalloc')
+define(`confMANOWN', `root')
+define(`confMANGRP', `sys')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `sys')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX64.6.5 b/devtools/OS/IRIX64.6.5
new file mode 100644
index 000000000000..fab1e71b309c
--- /dev/null
+++ b/devtools/OS/IRIX64.6.5
@@ -0,0 +1,21 @@
+# $Id: IRIX64.6.5,v 8.21 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -mips3 -n32 -OPT:Olimit=0')
+define(`confLIBSEARCHPATH', `/lib32 /usr/lib32')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confMANOWN', `root')
+define(`confMANGRP', `sys')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `sys')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/IRIX64.6.x b/devtools/OS/IRIX64.6.x
new file mode 100644
index 000000000000..a0934cf0fe21
--- /dev/null
+++ b/devtools/OS/IRIX64.6.x
@@ -0,0 +1,21 @@
+# $Id: IRIX64.6.x,v 8.30 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -mips3 -n32 -OPT:Olimit=0')
+define(`confLIBSEARCHPATH', `/lib32 /usr/lib32')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `-DIRIX6')
+define(`confSM_OS_HEADER', `sm_os_irix')
+define(`confMANOWN', `root')
+define(`confMANGRP', `sys')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `sys')
+define(`confMBINDIR', `/usr/lib')
+define(`confUBINDIR', `/usr/bsd')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/ISC b/devtools/OS/ISC
new file mode 100644
index 000000000000..7842d8b6a550
--- /dev/null
+++ b/devtools/OS/ISC
@@ -0,0 +1,13 @@
+# $Id: ISC,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DISC_UNIX -D_POSIX_SOURCE -D_SYSV3')
+define(`confLIBS', `-lyp -lrpc -lndbm -linet -lcposix')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSTDIR', `/usr/spool/log')
diff --git a/devtools/OS/Interix b/devtools/OS/Interix
new file mode 100644
index 000000000000..540f7138cee8
--- /dev/null
+++ b/devtools/OS/Interix
@@ -0,0 +1,19 @@
+# $Id: Interix,v 1.2 2004/01/09 18:53:03 ca Exp $
+# Contributed by Nedelcho Stanev <nedelcho.stanev@atlanticsky.com>
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+dnl: Interix 3.0: /usr/local/bin/gcc
+dnl: Interix 3.5: /opt/gcc.3.3/bin/gcc
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-O2')
+APPENDDEF(`confMAPDEF', `-DMAP_REGEX')
+APPENDDEF(`confENVDEF', `-D__INTERIX -D_ALL_SOURCE')
+APPENDDEF(`confINCDIRS', `-I/usr/local/include/bind')
+APPENDDEF(`confLIBDIRS', `-L/usr/local/lib/bind')
+APPENDDEF(`confLIBS', `-lbind')
+APPENDDEF(`confLIBS', `-ll')
+define(`confMAN1EXT', `0')
+define(`confMAN5EXT', `0')
+define(`confMAN8EXT', `0')
diff --git a/devtools/OS/KSR b/devtools/OS/KSR
new file mode 100644
index 000000000000..36d3876fe646
--- /dev/null
+++ b/devtools/OS/KSR
@@ -0,0 +1,10 @@
+# $Id: KSR,v 8.7 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confINSTALL', `installbsd')
diff --git a/devtools/OS/LUNA b/devtools/OS/LUNA
new file mode 100644
index 000000000000..9bba64433278
--- /dev/null
+++ b/devtools/OS/LUNA
@@ -0,0 +1,48 @@
+# $Id: LUNA,v 8.11 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confBEFORE', `dirent.h stddef.h stdlib.h unistd.h limits.h time.h sys/time.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+
+stddef.h unistd.h limits.h:
+ if [ -f /usr/include/$@ ]; then \
+ ln -s /usr/include/$@ .; \
+ else \
+ cp /dev/null $@; \
+ fi
+
+stdlib.h:
+ if [ -f /usr/include/stdlib.h ]; then \
+ ln -s /usr/include/stdlib.h .; \
+ else \
+ if [ -f /usr/include/libc.h ]; then \
+ ln -s /usr/include/libc.h stdlib.h; \
+ else \
+ cp /dev/null stdlib.h; \
+ fi; \
+ fi
+
+# just for UNIOS-B
+time.h:
+ echo "#ifndef _LOCAL_TIME_H_" > time.h
+ echo "#define _LOCAL_TIME_H_" >> time.h
+ cat /usr/include/time.h >> time.h
+ echo "#endif" >> time.h
+
+sys/time.h:
+ -mkdir sys
+ echo "#ifndef _LOCAL_SYS_TIME_H_" > sys/time.h
+ echo "#define _LOCAL_SYS_TIME_H_" >> sys/time.h
+ cat /usr/include/sys/time.h >> sys/time.h
+ echo "#endif" >> sys/time.h
+POPDIVERT
diff --git a/devtools/OS/Linux b/devtools/OS/Linux
new file mode 100644
index 000000000000..52418c8473aa
--- /dev/null
+++ b/devtools/OS/Linux
@@ -0,0 +1,37 @@
+# $Id: Linux,v 8.30 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confDEPEND_TYPE', `CC-M')
+define(`confSM_OS_HEADER', `sm_os_linux')
+define(`confMANROOT', `/usr/man/man')
+define(`confLIBS', `-ldl')
+define(`confEBINDIR', `/usr/sbin')
+APPENDDEF(`confLIBSEARCH', `crypt nsl')
+
+define(`confLD', `ld')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confLDOPTS_SO', `-shared')
+define(`confSONAME',`-soname')
+
+ifelse(confBLDVARIANT, `DEBUG',
+dnl Debug build
+`
+ define(`confOPTIMIZE',`-g -Wall')
+',
+dnl Optimized build
+confBLDVARIANT, `OPTIMIZED',
+`
+ define(`confOPTIMIZE',`-O2')
+',
+dnl Purify build
+confBLDVARIANT, `PURIFY',
+`
+ define(`confOPTIMIZE',`-g')
+',
+dnl default
+`
+ define(`confOPTIMIZE',`-O2')
+')
diff --git a/devtools/OS/MPE-iX b/devtools/OS/MPE-iX
new file mode 100644
index 000000000000..00ed6cd78a5c
--- /dev/null
+++ b/devtools/OS/MPE-iX
@@ -0,0 +1,36 @@
+# $Id: MPE-iX,v 1.2 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-O')
+define(`confMAPDEF', `-DNEWDB -DMAP_REGEX')
+define(`confENVDEF', `-DMPE -D_SOCKET_SOURCE -D_POSIX_SOURCE -DIS_SOCKET_CLIB_ITSELF')
+APPENDDEF(`conf_sendmail_ENVDEF', `-D_FFR_DOTTED_USERNAMES -D_FFR_DROP_TRUSTUSER_WARNING -D_FFR_TRUSTED_QF')
+define(`confINCDIRS', `-I/BINDFW/CURRENT/include -I/SYSLOG/PUB -I/${HPACCOUNT}/${HPGROUP}/include -I/usr/contrib/include')
+define(`confLIBDIRS', `-L/BINDFW/CURRENT/lib -L/SYSLOG/PUB -L/${HPACCOUNT}/${HPGROUP}/lib')
+define(`confLIBS', `-lsyslog -ldb -lsocket -lsvipc')
+define(`confSM_OS_HEADER', `sm_os_mpeix')
+define(`conf_sendmail_LIB_POST', `--for-linker="-WL,cap=ia,ba,ph,pm"')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+
+define(`confEBINDIR', `/${HPACCOUNT}/${HPGROUP}/sbin')
+define(`confGBINGRP', `${HPACCOUNT}')
+define(`confGBINOWN', `MGR.${HPACCOUNT}')
+define(`confMSPQOWN', `SERVER.${HPACCOUNT}')
+define(`confMANROOT', `/${HPACCOUNT}/${HPGROUP}/man/cat')
+define(`confMANROOTMAN', `/${HPACCOUNT}/${HPGROUP}/man/man')
+define(`confMANGRP', `${HPACCOUNT}')
+define(`confMANOWN', `MGR.${HPACCOUNT}')
+define(`confMBINDIR', `/${HPACCOUNT}/${HPGROUP}/sbin')
+define(`confMBINGRP', `${HPACCOUNT}')
+define(`confMBINMODE', `555')
+define(`confMBINOWN', `MGR.${HPACCOUNT}')
+define(`confSBINDIR', `/${HPACCOUNT}/${HPGROUP}/sbin')
+define(`confSBINGRP', `${HPACCOUNT}')
+define(`confSBINMODE', `6555')
+define(`confSBINOWN', `MGR.${HPACCOUNT}')
+define(`confUBINDIR', `/${HPACCOUNT}/${HPGROUP}/bin')
+define(`confUBINGRP', `${HPACCOUNT}')
+define(`confUBINOWN', `MGR.${HPACCOUNT}')
diff --git a/devtools/OS/Mach386 b/devtools/OS/Mach386
new file mode 100644
index 000000000000..bd3f9cf7d1c4
--- /dev/null
+++ b/devtools/OS/Mach386
@@ -0,0 +1,13 @@
+# $Id: Mach386,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/NCR.MP-RAS.2.x b/devtools/OS/NCR.MP-RAS.2.x
new file mode 100644
index 000000000000..b6e5ba174601
--- /dev/null
+++ b/devtools/OS/NCR.MP-RAS.2.x
@@ -0,0 +1,18 @@
+# $Id: NCR.MP-RAS.2.x,v 8.14 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNCR_MP_RAS2')
+define(`confOPTIMIZE', `-O2')
+APPENDDEF(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lnsl -lnet -lsocket -lelf -lc -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSTDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `NCR')
diff --git a/devtools/OS/NCR.MP-RAS.3.x b/devtools/OS/NCR.MP-RAS.3.x
new file mode 100644
index 000000000000..5ef26b23323c
--- /dev/null
+++ b/devtools/OS/NCR.MP-RAS.3.x
@@ -0,0 +1,16 @@
+# $Id: NCR.MP-RAS.3.x,v 8.20 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DMAP_REGEX')
+define(`confENVDEF', `-DNCR_MP_RAS3')
+define(`confOPTIMIZE', `-O2')
+define(`confLIBS', `-lsocket -lnsl -lelf -lc89')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSTDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `NCR')
diff --git a/devtools/OS/NEWS-OS.4.x b/devtools/OS/NEWS-OS.4.x
new file mode 100644
index 000000000000..2ed02231a830
--- /dev/null
+++ b/devtools/OS/NEWS-OS.4.x
@@ -0,0 +1,16 @@
+# $Id: NEWS-OS.4.x,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confBEFORE', `limits.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+limits.h:
+ touch limits.h
+POPDIVERT
diff --git a/devtools/OS/NEWS-OS.6.x b/devtools/OS/NEWS-OS.6.x
new file mode 100644
index 000000000000..97d6e957bde1
--- /dev/null
+++ b/devtools/OS/NEWS-OS.6.x
@@ -0,0 +1,29 @@
+# $Id: NEWS-OS.6.x,v 8.14 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/bin/cc')
+define(`confBEFORE', `sysexits.h ndbm.o')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBS', `ndbm.o -lelf -lsocket -lnsl')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ ln -s /usr/ucbinclude/sysexits.h .
+
+ndbm.o:
+ if [ ! -f /usr/include/ndbm.h ]; then \
+ ln -s /usr/ucbinclude/ndbm.h .; \
+ fi; \
+ if [ -f /usr/lib/libndbm.a ]; then \
+ ar x /usr/lib/libndbm.a ndbm.o; \
+ else \
+ ar x /usr/ucblib/libucb.a ndbm.o; \
+ fi;
+POPDIVERT
diff --git a/devtools/OS/NEXTSTEP.4.x b/devtools/OS/NEXTSTEP.4.x
new file mode 100644
index 000000000000..788d3573bbbb
--- /dev/null
+++ b/devtools/OS/NEXTSTEP.4.x
@@ -0,0 +1,38 @@
+# $Id: NEXTSTEP.4.x,v 8.7 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL_RAWMAN')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
+define(`confEBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confRANLIBOPTS', `-c')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/NeXT.2.x b/devtools/OS/NeXT.2.x
new file mode 100644
index 000000000000..607060426415
--- /dev/null
+++ b/devtools/OS/NeXT.2.x
@@ -0,0 +1,24 @@
+# $Id: NeXT.2.x,v 8.13 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confSM_OS_HEADER', `sm_os_next')
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confRANLIBOPTS', `-c')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/NeXT.3.x b/devtools/OS/NeXT.3.x
new file mode 100644
index 000000000000..269fc539a1e2
--- /dev/null
+++ b/devtools/OS/NeXT.3.x
@@ -0,0 +1,33 @@
+# $Id: NeXT.3.x,v 8.19 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confSM_OS_HEADER', `sm_os_next')
+define(`confCCOPTS', `-posix')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS} -posix')
+define(`confLIBS', `-ldbm')
+define(`confINSTALL_RAWMAN')
+define(`confMANROOT', `/usr/man/cat')
+define(`confMANROOTMAN', `/usr/man/man')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
+define(`confEBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confRANLIBOPTS', `-c')
diff --git a/devtools/OS/NeXT.4.x b/devtools/OS/NeXT.4.x
new file mode 100644
index 000000000000..03c0c71694c1
--- /dev/null
+++ b/devtools/OS/NeXT.4.x
@@ -0,0 +1,42 @@
+# $Id: NeXT.4.x,v 8.20 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+PUSHDIVERT(1)
+# NEXTSTEP 3.1 and 3.2 only support m68k and i386
+#ARCH= -arch m68k -arch i386 -arch hppa -arch sparc
+#ARCH= -arch m68k -arch i386
+#ARCH= ${RC_CFLAGS}
+# For new sendmail Makefile structure, this must go in the ENVDEF and LDOPTS
+POPDIVERT
+define(`confSM_OS_HEADER', `sm_os_next')
+define(`confBEFORE', `unistd.h dirent.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNETINFO')
+define(`confENVDEF', `-DNeXT -Wno-precomp -pipe ${RC_CFLAGS}')
+define(`confLDOPTS', `${RC_CFLAGS}')
+define(`confLIBS', `-ldbm')
+define(`confRANLIBOPTS', `-c')
+define(`confINSTALL_RAWMAN')
+define(`confMANROOT', `/usr/man/cat')
+define(`confMANROOTMAN', `/usr/man/man')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
+define(`confEBINDIR', `/usr/etc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confRANLIBOPTS', `-c')
+PUSHDIVERT(3)
+unistd.h:
+ cp /dev/null unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/NetBSD b/devtools/OS/NetBSD
new file mode 100644
index 000000000000..3ae968542476
--- /dev/null
+++ b/devtools/OS/NetBSD
@@ -0,0 +1,19 @@
+# $Id: NetBSD,v 8.15 2004/06/16 17:50:00 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confLIBS', `-lutil')
+define(`confENVDEF', ` -DNETISO')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confSBINGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confMAN1EXT', `0')
+define(`confMAN3EXT', `0')
+define(`confMAN4EXT', `0')
+define(`confMAN5EXT', `0')
+define(`confMAN8EXT', `0')
diff --git a/devtools/OS/NetBSD.8.3 b/devtools/OS/NetBSD.8.3
new file mode 100644
index 000000000000..0d02bb009992
--- /dev/null
+++ b/devtools/OS/NetBSD.8.3
@@ -0,0 +1,6 @@
+# $Id: NetBSD.8.3,v 8.11 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
diff --git a/devtools/OS/NonStop-UX b/devtools/OS/NonStop-UX
new file mode 100644
index 000000000000..b68993bf20a8
--- /dev/null
+++ b/devtools/OS/NonStop-UX
@@ -0,0 +1,18 @@
+# $Id: NonStop-UX,v 8.13 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DNonStop_UX_BXX -D_SVID')
+APPENDDEF(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-lsocket -lnsl -lelf -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/OSF1 b/devtools/OS/OSF1
new file mode 100644
index 000000000000..7fb036844079
--- /dev/null
+++ b/devtools/OS/OSF1
@@ -0,0 +1,19 @@
+# $Id: OSF1,v 8.19 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -std1 -Olimit 1000')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confLIBS', `-ldbm')
+define(`confSM_OS_HEADER', `sm_os_osf1')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confINSTALL', `installbsd')
+define(`confEBINDIR', `/usr/lbin')
+define(`confUBINDIR', `${BINDIR}')
+define(`confDEPEND_TYPE', `CC-M')
+
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confDEPLIBS', `-lpthread -lc')
+define(`confSONAME', `-soname')
diff --git a/devtools/OS/OSF1.V5.x b/devtools/OS/OSF1.V5.x
new file mode 100644
index 000000000000..06904c83ec80
--- /dev/null
+++ b/devtools/OS/OSF1.V5.x
@@ -0,0 +1,18 @@
+# $Id: OSF1.V5.x,v 8.4 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -std1 -Olimit 1000')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confENVDEF', `')
+define(`confLIBS', `-ldbm')
+define(`confSM_OS_HEADER', `sm_os_osf1')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confINSTALL', `installbsd')
+define(`confEBINDIR', `/usr/lbin')
+define(`confUBINDIR', `${BINDIR}')
+define(`confDEPEND_TYPE', `CC-M')
+
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
diff --git a/devtools/OS/OSR.i386 b/devtools/OS/OSR.i386
new file mode 100644
index 000000000000..9ccc4aec1d99
--- /dev/null
+++ b/devtools/OS/OSR.i386
@@ -0,0 +1,24 @@
+# $Id: OSR.i386,v 1.1 2008/01/11 18:40:15 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+# System V Rel 5.x (a.k.a Unixware7/OpenUnix8/OpenServer 6
+# w/o BSD-Compatiblity Libs ie. native)
+# Contributed by Boyd Gerber <gerberb@zenez.com>
+#
+define(`confSM_OS_HEADER', `sm_os_unixware')
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DMAP_REGEX')
+define(`confENVDEF', `-D__svr5__')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confSHELL', `/usr/bin/sh')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/etc/mail')
+define(`confUBINDIR', `/etc/mail')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confMTCCOPTS', `-Kpthread')
+define(`confMTLDOPTS', `-lpthread')
diff --git a/devtools/OS/OpenBSD b/devtools/OS/OpenBSD
new file mode 100644
index 000000000000..07bec0fd2f52
--- /dev/null
+++ b/devtools/OS/OpenBSD
@@ -0,0 +1,14 @@
+# $Id: OpenBSD,v 8.20 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confLD', `cc')
+define(`confLDOPTS_SO', `-shared')
+define(`confCCOPTS_SO', `-fPIC')
+
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX')
+define(`confENVDEF', ` -DNETISO -DFAST_PID_RECYCLE')
+define(`confSM_OS_HEADER', `sm_os_openbsd')
+define(`confMTCCOPTS', `-pthread')
+define(`confMTLDOPTS', `-pthread')
diff --git a/devtools/OS/OpenUNIX.5.i386 b/devtools/OS/OpenUNIX.5.i386
new file mode 100644
index 000000000000..e925b51f97e5
--- /dev/null
+++ b/devtools/OS/OpenUNIX.5.i386
@@ -0,0 +1,22 @@
+# $Id: OpenUNIX.5.i386,v 1.3 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+# System V Rel 5.x (a.k.a OpenUNIX)
+#
+define(`confSM_OS_HEADER', `sm_os_openunix')
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DMAP_REGEX')
+define(`confENVDEF', `-D__svr5__')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confSHELL', `/usr/bin/sh')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/etc/mail')
+define(`confUBINDIR', `/etc/mail')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confMTCCOPTS', `-Kpthread')
+define(`confMTLDOPTS', `-lpthread')
diff --git a/devtools/OS/PTX b/devtools/OS/PTX
new file mode 100644
index 000000000000..dfde70de05aa
--- /dev/null
+++ b/devtools/OS/PTX
@@ -0,0 +1,12 @@
+# $Id: PTX,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM')
+define(`confOPTIMIZE', `-g')
+define(`confLIBS', `-lsocket -linet -lelf -lnsl -lseq')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
diff --git a/devtools/OS/Paragon b/devtools/OS/Paragon
new file mode 100644
index 000000000000..f5e21169fec8
--- /dev/null
+++ b/devtools/OS/Paragon
@@ -0,0 +1,11 @@
+# $Id: Paragon,v 8.6 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBDIRS', `-L/usr/shlib -L/usr/lib')
+define(`confLIBS', `-ldbm')
+define(`confSTDIR', `/var/adm/sendmail')
+define(`confINSTALL', `installbsd')
+define(`confUBINDIR', `${BINDIR}')
diff --git a/devtools/OS/PowerUX b/devtools/OS/PowerUX
new file mode 100644
index 000000000000..aa19743d9e17
--- /dev/null
+++ b/devtools/OS/PowerUX
@@ -0,0 +1,13 @@
+# $Id: PowerUX,v 8.8 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-D__svr4__')
+define(`confLIBS', `-Bstatic -lsocket -lnsl -lelf -lgen')
+define(`confMBINDIR', `/usr/local/etc')
+define(`confSBINDIR', `/usr/local/etc')
+define(`confUBINDIR', `/usr/local/bin')
+define(`confEBINDIR', `/usr/local/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/devtools/OS/QNX b/devtools/OS/QNX
new file mode 100644
index 000000000000..d3a8428b9b7d
--- /dev/null
+++ b/devtools/OS/QNX
@@ -0,0 +1,19 @@
+# $Id: QNX,v 8.7 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+PUSHDIVERT(1)
+#
+# For this Makefile to work you must compile and install the libdb package
+# and then change DBMINC and DBMLIB as appropriate.
+#
+DBMINC= /usr/local/include
+DBMLIB= /usr/local/lib
+POPDIVERT
+define(`confENVDEF', `-Osax -w4 -zc -fr= -D__BIT_TYPES_DEFINED__')
+APPENDDEF(`confINCDIRS', `${DBMINC}')
+define(`confLIBDIRS', `${DBMLIB}')
+define(`confLIBS', `-lsocket')
+define(`confLDOPTS', `-M -N256k')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/devtools/OS/QNX.6.x b/devtools/OS/QNX.6.x
new file mode 100644
index 000000000000..022175fef6f6
--- /dev/null
+++ b/devtools/OS/QNX.6.x
@@ -0,0 +1,39 @@
+# $Id: QNX.6.x,v 1.2 2008/02/11 23:04:50 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DMAP_REGEX')
+define(`confLIBSEARCH', `db socket')
+define(`confSM_OS_HEADER', `sm_os_qnx')
+define(`confDEPEND_TYPE', `QNX6')
+define(`confSBINGRP', `root')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `root')
+define(`confMANOWN', `root')
+define(`confMANGRP', `root')
+define(`confNO_MAN_BUILD', 'yes')
+define(`confMAN1EXT', `0')
+define(`confMAN3EXT', `0')
+define(`confMAN4EXT', `0')
+define(`confMAN5EXT', `0')
+define(`confMAN8EXT', `0')
+ifelse(confBLDVARIANT, `DEBUG',
+dnl Debug build
+`
+ define(`confOPTIMIZE',`-g -O0')
+',
+dnl Optimized build
+confBLDVARIANT, `OPTIMIZED',
+`
+ define(`confOPTIMIZE',`-O2')
+',
+dnl Purify build
+confBLDVARIANT, `PURIFY',
+`
+ define(`confOPTIMIZE',`-g')
+',
+dnl default
+`
+ define(`confOPTIMIZE',`-O2')
+')
diff --git a/devtools/OS/RISCos b/devtools/OS/RISCos
new file mode 100644
index 000000000000..8ea20741b3cc
--- /dev/null
+++ b/devtools/OS/RISCos
@@ -0,0 +1,27 @@
+# $Id: RISCos,v 8.9 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -systype bsd43 -Olimit 900')
+define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DRISCOS')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `/usr/bsd43/bin/install')
+PUSHDIVERT(3)
+stdlib.h stddef.h:
+ cp /dev/null $@
+
+unistd.h:
+ echo "typedef unsigned short mode_t;" > unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/RISCos.4_0 b/devtools/OS/RISCos.4_0
new file mode 100644
index 000000000000..23b09cec3ba9
--- /dev/null
+++ b/devtools/OS/RISCos.4_0
@@ -0,0 +1,27 @@
+# $Id: RISCos.4_0,v 8.10 2002/03/21 23:59:25 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -systype bsd43 -Olimit 900')
+define(`confBEFORE', `stdlib.h dirent.h unistd.h stddef.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DRISCOS -DRISCOS_4_0')
+define(`confLIBS', `-lmld')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+stdlib.h stddef.h:
+ cp /dev/null $@
+
+unistd.h:
+ echo "typedef unsigned short mode_t;" > unistd.h
+
+dirent.h:
+ echo "#include <sys/dir.h>" > dirent.h
+ echo "#define dirent direct" >> dirent.h
+POPDIVERT
diff --git a/devtools/OS/Rhapsody b/devtools/OS/Rhapsody
new file mode 100644
index 000000000000..f2c08607afa3
--- /dev/null
+++ b/devtools/OS/Rhapsody
@@ -0,0 +1,23 @@
+# $Id: Rhapsody,v 8.7 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+# Wilfredo Sanchez <wsanchez@apple.com>:
+# We look a lot more like 4.4BSD than NeXTStep or OpenStep.
+#
+define(`confCC', `cc -traditional-cpp -pipe ${Extra_CC_Flags}')
+define(`confMAPDEF', `-DNEWDB -DNIS -DMAP_REGEX -DNETINFO -DAUTO_NETINFO_ALIASES -DAUTO_NETINFO_HOSTS')
+define(`confENVDEF', `-DDARWIN -DNETISO')
+define(`confLDOPTS', `${Extra_LD_Flags}')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confOPTIMIZE', `-O3')
+define(`confRANLIBOPTS', `-c')
+define(`confHFDIR', `/usr/share/sendmail')
+define(`confMANOWN', `root')
+define(`confMANGRP', `wheel')
+define(`confUBINOWN', `root')
+define(`confUBINGRP', `wheel')
+define(`confSBINOWN', `root')
+define(`confSBINGRP', `wheel')
diff --git a/devtools/OS/SCO b/devtools/OS/SCO
new file mode 100644
index 000000000000..aedcfdc273d2
--- /dev/null
+++ b/devtools/OS/SCO
@@ -0,0 +1,11 @@
+# $Id: SCO,v 8.7 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-D_SCO_unix_')
+define(`confLIBS', `-lsocket -lprot_s -lx -lc_s')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
diff --git a/devtools/OS/SCO.4.2 b/devtools/OS/SCO.4.2
new file mode 100644
index 000000000000..562dfc490304
--- /dev/null
+++ b/devtools/OS/SCO.4.2
@@ -0,0 +1,13 @@
+# $Id: SCO.4.2,v 8.9 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-D_SCO_unix_4_2')
+define(`confLIBS', `-lsocket -lndbm -lprot_s -lx -lc_s')
+define(`confMAPDEF', `-DNDBM')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `bin')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/devtools/OS/SCO.5.x b/devtools/OS/SCO.5.x
new file mode 100644
index 000000000000..f3d0b1bea7a6
--- /dev/null
+++ b/devtools/OS/SCO.5.x
@@ -0,0 +1,13 @@
+# $Id: SCO.5.x,v 8.14 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -b elf')
+define(`confLIBS', `-lsocket -lndbm -lprot -lcurses -lm -lx -lgen')
+define(`confMAPDEF', `-DMAP_REGEX -DNDBM')
+define(`confSBINGRP', `bin')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/bin')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
diff --git a/devtools/OS/SINIX.5.43 b/devtools/OS/SINIX.5.43
new file mode 100644
index 000000000000..7440f3a9d997
--- /dev/null
+++ b/devtools/OS/SINIX.5.43
@@ -0,0 +1,15 @@
+# $Id: SINIX.5.43,v 8.3 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/bin/cc')
+define(`confENVDEF', `-W0 -D__svr4__')
+define(`confLIBS', `-lsocket -lnsl -lelf -lmproc')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confLDOPTS', `-s')
diff --git a/devtools/OS/SINIX.5.44 b/devtools/OS/SINIX.5.44
new file mode 100644
index 000000000000..f5a08d1c0821
--- /dev/null
+++ b/devtools/OS/SINIX.5.44
@@ -0,0 +1,15 @@
+# $Id: SINIX.5.44,v 8.3 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/bin/cc')
+define(`confENVDEF', `-W0 -D__svr4__ -Klp64')
+define(`confLIBS', `-lsocket -lnsl -lelf -lmproc')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confLDOPTS', `-Klp64 -s')
diff --git a/devtools/OS/SVR4 b/devtools/OS/SVR4
new file mode 100644
index 000000000000..c709146a6b04
--- /dev/null
+++ b/devtools/OS/SVR4
@@ -0,0 +1,16 @@
+# $Id: SVR4,v 8.10 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__')
+define(`confLIBS', `-ldbm -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/SunOS b/devtools/OS/SunOS
new file mode 100644
index 000000000000..9a116f48e10e
--- /dev/null
+++ b/devtools/OS/SunOS
@@ -0,0 +1,13 @@
+# $Id: SunOS,v 8.12 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLDOPTS', `-Bstatic')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/SunOS.4.0 b/devtools/OS/SunOS.4.0
new file mode 100644
index 000000000000..31725b7538d2
--- /dev/null
+++ b/devtools/OS/SunOS.4.0
@@ -0,0 +1,18 @@
+# $Id: SunOS.4.0,v 8.13 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confBEFORE', `stdlib.h stddef.h limits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSUNOS403')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLDOPTS', `-Bstatic')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h stdlib.h limits.h:
+ cp /dev/null $@
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.1 b/devtools/OS/SunOS.5.1
new file mode 100644
index 000000000000..05162cef2b72
--- /dev/null
+++ b/devtools/OS/SunOS.5.1
@@ -0,0 +1,25 @@
+# $Id: SunOS.5.1,v 8.15 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSOLARIS=20100')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.10 b/devtools/OS/SunOS.5.10
new file mode 100644
index 000000000000..ed39f03ff0c7
--- /dev/null
+++ b/devtools/OS/SunOS.5.10
@@ -0,0 +1,26 @@
+# $Id: SunOS.5.10,v 1.2 2002/11/09 03:06:39 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confLDOPTS_SO', `-G')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=21000 -DNETINET6')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.11 b/devtools/OS/SunOS.5.11
new file mode 100644
index 000000000000..0001caab178c
--- /dev/null
+++ b/devtools/OS/SunOS.5.11
@@ -0,0 +1,26 @@
+# $Id: SunOS.5.11,v 1.1 2005/06/20 23:52:31 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confLDOPTS_SO', `-G')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=21100 -DNETINET6')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.2 b/devtools/OS/SunOS.5.2
new file mode 100644
index 000000000000..fd37819f3276
--- /dev/null
+++ b/devtools/OS/SunOS.5.2
@@ -0,0 +1,25 @@
+# $Id: SunOS.5.2,v 8.15 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DSOLARIS=20100')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.3 b/devtools/OS/SunOS.5.3
new file mode 100644
index 000000000000..0bc0c9046318
--- /dev/null
+++ b/devtools/OS/SunOS.5.3
@@ -0,0 +1,23 @@
+# $Id: SunOS.5.3,v 8.15 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
+define(`confENVDEF', `-DSOLARIS=20300')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/ucbinclude/sysexits.h ]; \
+ then \
+ ln -s /usr/ucbinclude/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.4 b/devtools/OS/SunOS.5.4
new file mode 100644
index 000000000000..abd2883d038b
--- /dev/null
+++ b/devtools/OS/SunOS.5.4
@@ -0,0 +1,23 @@
+# $Id: SunOS.5.4,v 8.17 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS')
+define(`confENVDEF', `-DSOLARIS=20400')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.5 b/devtools/OS/SunOS.5.5
new file mode 100644
index 000000000000..ccbc21a743e6
--- /dev/null
+++ b/devtools/OS/SunOS.5.5
@@ -0,0 +1,23 @@
+# $Id: SunOS.5.5,v 8.18 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20500')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl -lkstat')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.6 b/devtools/OS/SunOS.5.6
new file mode 100644
index 000000000000..7c15380cc59a
--- /dev/null
+++ b/devtools/OS/SunOS.5.6
@@ -0,0 +1,27 @@
+# $Id: SunOS.5.6,v 8.20 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confLDOPTS_SO',`-G')
+define(`confSONAME',`-h')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20600')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl -lkstat')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.7 b/devtools/OS/SunOS.5.7
new file mode 100644
index 000000000000..e1a26a425a10
--- /dev/null
+++ b/devtools/OS/SunOS.5.7
@@ -0,0 +1,27 @@
+# $Id: SunOS.5.7,v 8.22 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confLDOPTS_SO', `-G')
+define(`confSONAME',`-h')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20700')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.8 b/devtools/OS/SunOS.5.8
new file mode 100644
index 000000000000..a176eb617a49
--- /dev/null
+++ b/devtools/OS/SunOS.5.8
@@ -0,0 +1,26 @@
+# $Id: SunOS.5.8,v 8.14 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confLDOPTS_SO', `-G')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20800 -DNETINET6')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/SunOS.5.9 b/devtools/OS/SunOS.5.9
new file mode 100644
index 000000000000..4ae1e51b5047
--- /dev/null
+++ b/devtools/OS/SunOS.5.9
@@ -0,0 +1,26 @@
+# $Id: SunOS.5.9,v 8.9 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confLDOPTS_SO', `-G')
+define(`confBEFORE', `sysexits.h')
+define(`confMAPDEF', `-DNDBM -DNIS -DNISPLUS -DMAP_REGEX')
+define(`confENVDEF', `-DSOLARIS=20900 -DNETINET6')
+define(`confSM_OS_HEADER', `sm_os_sunos')
+define(`confLIBS', `-lsocket -lnsl')
+define(`confMTCCOPTS', `-D_REENTRANT')
+define(`confMTLDOPTS', `-lpthread')
+define(`confMBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `sys')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confDEPEND_TYPE', `CC-M')
+PUSHDIVERT(3)
+sysexits.h:
+ if [ -r /usr/include/sysexits.h ]; \
+ then \
+ ln -s /usr/include/sysexits.h; \
+ fi
+POPDIVERT
diff --git a/devtools/OS/Titan b/devtools/OS/Titan
new file mode 100644
index 000000000000..81d7795d16f2
--- /dev/null
+++ b/devtools/OS/Titan
@@ -0,0 +1,17 @@
+# $Id: Titan,v 8.7 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -43')
+define(`confBEFORE', `stddef.h stdlib.h')
+define(`confMAPDEF', `-DNDBM')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h stdlib.h:
+ cp /dev/null $@
+POPDIVERT
diff --git a/devtools/OS/ULTRIX b/devtools/OS/ULTRIX
new file mode 100644
index 000000000000..6a791365617a
--- /dev/null
+++ b/devtools/OS/ULTRIX
@@ -0,0 +1,14 @@
+# $Id: ULTRIX,v 8.15 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `cc -Olimit 1350')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confSM_OS_HEADER', `sm_os_ultrix')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/UMAX b/devtools/OS/UMAX
new file mode 100644
index 000000000000..a4d6b91f1b20
--- /dev/null
+++ b/devtools/OS/UMAX
@@ -0,0 +1,19 @@
+# $Id: UMAX,v 8.8 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confBEFORE', `stddef.h')
+define(`confMAPDEF', `-DNIS')
+define(`confENVDEF', `-DUMAXV')
+define(`confLIBS', `-lyp -lrpc')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confHFDIR', `/usr/lib')
+PUSHDIVERT(3)
+stddef.h:
+ echo "#define _STDDEF_H" > stddef.h
+ chmod 444 stddef.h
+POPDIVERT
diff --git a/devtools/OS/UNICOS b/devtools/OS/UNICOS
new file mode 100644
index 000000000000..51e691b8aa3d
--- /dev/null
+++ b/devtools/OS/UNICOS
@@ -0,0 +1,15 @@
+# $Id: UNICOS,v 8.12 2003/04/21 17:03:52 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-DUNICOS')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confMAPDEF', `-DNDBM')
+define(`confOPTIMIZE', `-O')
+define(`confINSTALL', `cpset')
+define(`confSM_OS_HEADER', `sm_os_unicos')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
diff --git a/devtools/OS/UNICOS-mk b/devtools/OS/UNICOS-mk
new file mode 100644
index 000000000000..a57e308b3c33
--- /dev/null
+++ b/devtools/OS/UNICOS-mk
@@ -0,0 +1,15 @@
+# $Id: UNICOS-mk,v 8.1 2003/04/21 17:03:52 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-DUNICOS -DUNICOSMK')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confMAPDEF', `-DNDBM')
+define(`confOPTIMIZE', `-O')
+define(`confINSTALL', `cpset')
+define(`confSM_OS_HEADER', `sm_os_unicosmk')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
diff --git a/devtools/OS/UNICOS-mp b/devtools/OS/UNICOS-mp
new file mode 100644
index 000000000000..b98652a3f4c8
--- /dev/null
+++ b/devtools/OS/UNICOS-mp
@@ -0,0 +1,16 @@
+# $Id: UNICOS-mp,v 8.1 2003/04/21 17:03:52 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-DUNICOSMP')
+define(`confDEPEND_TYPE', `CC-M')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confMANGRP', `sys')
+define(`confMANOWN', `root')
+define(`confMAPDEF', `-DNDBM -DNIS -DMAP_REGEX')
+define(`confSBINGRP', `sys')
+define(`confSBINOWN', `root')
+define(`confSM_OS_HEADER', `sm_os_unicosmp')
+define(`confUBINGRP', `sys')
+define(`confUBINOWN', `root')
diff --git a/devtools/OS/UNIX_SV.4.x.i386 b/devtools/OS/UNIX_SV.4.x.i386
new file mode 100644
index 000000000000..44a0227dd9c1
--- /dev/null
+++ b/devtools/OS/UNIX_SV.4.x.i386
@@ -0,0 +1,15 @@
+# $Id: UNIX_SV.4.x.i386,v 8.11 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `gcc')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-D__svr4__ -DUNIXWARE')
+define(`confLIBS', `-lc -ldbm -lsocket -lnsl -lgen -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/devtools/OS/UX4800 b/devtools/OS/UX4800
new file mode 100644
index 000000000000..4576aa431bac
--- /dev/null
+++ b/devtools/OS/UX4800
@@ -0,0 +1,27 @@
+# $Id: UX4800,v 8.15 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/abiccs/bin/cc -KOlimit=1000')
+define(`confBEFORE', `sysexits.h ndbm.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `sys')
+define(`confSTDIR', `/var/ucblib')
+define(`confINSTALL', `/usr/ucb/install')
+PUSHDIVERT(3)
+sysexits.h:
+ echo '#ifndef _LOCAL_SYSEXITS_H_' > sysexits.h;
+ echo '#define _LOCAL_SYSEXITS_H_' >> sysexits.h;
+ cat /usr/abiccs/ucbinclude/sysexits.h >> sysexits.h;
+ echo '#endif /* _LOCAL_SYSEXITS_H_ */' >> sysexits.h;
+
+ndbm.h:
+ sed 's/void/char/' /usr/abiccs/include/ndbm.h > ndbm.h
+POPDIVERT
diff --git a/devtools/OS/UXPDS.V10 b/devtools/OS/UXPDS.V10
new file mode 100644
index 000000000000..149216b93888
--- /dev/null
+++ b/devtools/OS/UXPDS.V10
@@ -0,0 +1,17 @@
+# $Id: UXPDS.V10,v 8.14 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DUXPDS=10')
+APPENDDEF(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBS', `/usr/ucblib/libdbm.a /usr/ucblib/libucb.a -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confMANROOT', `/usr/local/man/man')
diff --git a/devtools/OS/UXPDS.V20 b/devtools/OS/UXPDS.V20
new file mode 100644
index 000000000000..adf662d22168
--- /dev/null
+++ b/devtools/OS/UXPDS.V20
@@ -0,0 +1,24 @@
+# $Id: UXPDS.V20,v 8.13 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confBEFORE', `netinet/ip_var.h')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confENVDEF', `-DUXPDS=20')
+define(`confLIBS', `/usr/ucblib/libdbm.a -lsocket -lnsl -lelf')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+define(`confMANROOT', `/usr/local/man/man')
+PUSHDIVERT(3)
+netinet/ip_var.h: netinet /usr/include/netinet/ip_var.h
+ sed '/ip_var_f.h/d' /usr/include/netinet/ip_var.h > netinet/ip_var.h
+
+netinet:
+ mkdir netinet
+POPDIVERT
diff --git a/devtools/OS/UnixWare.5.i386 b/devtools/OS/UnixWare.5.i386
new file mode 100644
index 000000000000..8ea55beda0e7
--- /dev/null
+++ b/devtools/OS/UnixWare.5.i386
@@ -0,0 +1,23 @@
+# $Id: UnixWare.5.i386,v 8.7 2002/10/24 20:42:46 ca Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+# System V Rel 5.x (a.k.a Unixware7 w/o BSD-Compatiblity Libs ie. native)
+# Contributed by Paul Gampe <paulg@apnic.net>
+#
+define(`confSM_OS_HEADER', `sm_os_unixware')
+define(`confCC', `/usr/ccs/bin/cc')
+define(`confMAPDEF', `-DNDBM -DMAP_REGEX')
+define(`confENVDEF', `-D__svr5__')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confSHELL', `/usr/bin/sh')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/etc/mail')
+define(`confUBINDIR', `/etc/mail')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confMTCCOPTS', `-Kpthread')
+define(`confMTLDOPTS', `-lpthread')
diff --git a/devtools/OS/dcosx.1.x.NILE b/devtools/OS/dcosx.1.x.NILE
new file mode 100644
index 000000000000..3999e0bd052f
--- /dev/null
+++ b/devtools/OS/dcosx.1.x.NILE
@@ -0,0 +1,10 @@
+# $Id: dcosx.1.x.NILE,v 8.6 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confENVDEF', `-D__svr4__ -DDCOSx')
+define(`confLIBS', `-lsocket -lnsl -lelf')
+define(`confHFDIR', `/usr/share/lib/mail')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confSBINGRP', `sys')
diff --git a/devtools/OS/dgux b/devtools/OS/dgux
new file mode 100644
index 000000000000..c26406b2c980
--- /dev/null
+++ b/devtools/OS/dgux
@@ -0,0 +1,14 @@
+# $Id: dgux,v 8.9 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBS', `-ldbm')
+define(`confMBINDIR', `/usr/bin')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `bin')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+APPENDDEF(`confLIBSEARCH', `socket nsl')
diff --git a/devtools/OS/m88k b/devtools/OS/m88k
new file mode 100644
index 000000000000..27e62682e6da
--- /dev/null
+++ b/devtools/OS/m88k
@@ -0,0 +1,24 @@
+# $Id: m88k,v 8.3 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+#
+# Contributed by Sergey Rusanov <rsm@utfoms.udmnet.ru>
+#
+define(`confCC', `gcc')
+define(`confOPTIMIZE', `-O2')
+define(`confMAPDEF', `-DNDBM')
+define(`confENVDEF', `-DMOTO')
+define(`confINCDIRS', `-I/usr/include -I/usr/ucbinclude')
+define(`confLIBDIRS', `-L/usr/lib -L/usr/ucblib')
+define(`confLIBS', `-lc -ldbm -lsocket -lnsl -lelf -lucb')
+define(`confMBINDIR', `/usr/local/sbin')
+define(`confSBINDIR', `/usr/ucb')
+define(`confUBINDIR', `/usr/local/bin')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/var/log')
+define(`confHFDIR', `/usr/local/sbin')
+define(`confINSTALL', `/usr/ucb/install')
+define(`confDEPEND_TYPE', `CC-M')
diff --git a/devtools/OS/maxion b/devtools/OS/maxion
new file mode 100644
index 000000000000..eb9ff3e1c79f
--- /dev/null
+++ b/devtools/OS/maxion
@@ -0,0 +1,17 @@
+# $Id: maxion,v 8.9 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+define(`confCC', `/usr/ucb/cc')
+define(`confMAPDEF', `-DNDBM -DNIS')
+define(`confLIBDIRS', `-L/usr/ucblib')
+define(`confLIBS', `-ldbm -lgen -lucb')
+define(`confMBINDIR', `/usr/ucblib')
+define(`confSBINDIR', `/usr/ucbetc')
+define(`confUBINDIR', `/usr/ucb')
+define(`confEBINDIR', `/usr/ucblib')
+define(`confSBINOWN', `smtp')
+define(`confSBINGRP', `mail')
+define(`confSTDIR', `/var/adm/log')
+define(`confINSTALL', `/usr/ucb/install')
diff --git a/devtools/OS/uts.systemV b/devtools/OS/uts.systemV
new file mode 100644
index 000000000000..e0600d0f500b
--- /dev/null
+++ b/devtools/OS/uts.systemV
@@ -0,0 +1,28 @@
+# $Id: uts.systemV,v 8.15 2002/03/21 23:59:26 gshapiro Exp $
+
+dnl DO NOT EDIT THIS FILE.
+dnl Place personal settings in devtools/Site/site.config.m4
+
+PUSHDIVERT(1)
+# Sendmail 8 on UTS requires BIND 4.9's include files and lib44bsd and
+# libresolv libraries. The BIND version on UTS is much too old.
+#
+BINDPATH=../../../bind
+POPDIVERT
+define(`confBEFORE', `stddef.h')
+define(`confMAPDEF', `-DNIS -DNDBM')
+define(`confENVDEF', `-D_UTS')
+define(`confOPTIMIZE', `-g')
+APPENDDEF(`confINCDIRS', `-I${BINDPATH}/include -I${BINDPATH}/compat/include')
+define(`confLIBDIRS', `-L${BINDPATH}/res -L${BINDPATH}/compat/lib')
+define(`confLIBS', `-lyp -lrpc -lbsd -lsocket -la')
+define(`confMBINDIR', `/usr/lib')
+define(`confSBINDIR', `/usr/etc')
+define(`confUBINDIR', `/usr/lib')
+define(`confEBINDIR', `/usr/lib')
+define(`confSBINGRP', `mail')
+define(`confINSTALL', `${BUILDBIN}/install.sh')
+PUSHDIVERT(3)
+stddef.h:
+ echo "#include <sys/types.h>" > stddef.h
+POPDIVERT
diff --git a/devtools/README b/devtools/README
new file mode 100644
index 000000000000..69be72b6a335
--- /dev/null
+++ b/devtools/README
@@ -0,0 +1,398 @@
+This directory contains tools. Do not attempt to actually build
+anything in this directory.
+
+The Build script allows you to specify a base location for the object
+files by using the -O flag:
+
+ ./Build -O /tmp
+
+will put the object files in /tmp/obj.*/. Also, if the SENDMAIL_SUFFIX
+environment variable is set, its value will be used in the obj.* directory
+name.
+
+The Build script allows you to specify a site configuration file by using
+the -f flag:
+
+ ./Build -f siteconfig.m4
+
+You can put such site configuration files in the Site sub-directory;
+see Site/README for details.
+
+If you need to support multiple build configurations from the same tree,
+you can use prefixes to differentiate your configurations. Use the -Q
+flag to Build:
+
+ ./Build -Q prefix
+
+Build will select a prefix.*.m4 file instead of the site.*.m4 file according
+to the conventions in Site/README, and use it to modify the build
+configuration. The object directory used will be obj.prefix.*/. Your
+prefix.*.m4 files should reside in the Site directory. You may not use
+-Q and -f simultaneously.
+
+While building a site configuration file, beyond using define() to set
+variables, you can also add to a definition using the APPENDDEF() and
+PREPENDDEF() macros. For example:
+
+ APPENDDEF(`confINCDIRS', `-I/usr/local/bind/include')
+
+will add -I/usr/local/bind/include to the already existing confINCDIRS.
+Note: There must be no trailing spaces after the last quote mark and
+before the closing parenthesis. Also you may need to properly quote
+m4 reserved words as specified by your vendor's m4 command.
+
+By default, sendmail will search your system for include and library
+directories as well as certain libraries (libdb.* for Berkeley DB and
+libbind.a or libresolv.* for name resolution). You can turn off this
+configuration step by specifying the -S flag with the Build command.
+
+The OS subtree contains definitions for variations on a standard
+model for system installation. The M4 variables that can be defined
+and their defaults before referencing the appropriate OS definitions
+are listed below. Note that variables preceded by an asterisk (*)
+are currently not used in the open source distribution.
+
+confBEFORE [empty] Files to create before sendmail is
+ compiled. The methods must be defined
+ in the Makefile using PUSHDIVERT(3).
+confBLDVARIANT OPTIMIZED This controls which object variant will
+ be built and is controlled with the
+ -v flag to the Build
+ script. Internally, this macro is
+ used to select compiler options in
+ the devtools/OS/*.m4 files. Valid
+ arguments for the Build -v flag are
+ "optimized", "debug", and "purify"
+ which map to confBLDVARIANT values
+ of "OPTIMIZED", "DEBUG", and
+ "PURIFY". This is a work in
+ progress, and as such not all
+ devtools/OS/*.m4 have been updated
+ yet. (See Linux for an example of
+ one that has.) Also, in the future
+ it may be desirable to append a
+ variant identifier to the object
+ directory name to allow different
+ variants to independently co-exist
+ on a given target platform. Note:
+ the PURIFY variant has not been
+ fully implemented on any platforms
+ yet. Other variants can be added as
+ needed in the future. Changing this
+ macro from its default will affect
+ other default values.
+confBUILDBIN ../../devtools/bin The location of the build support
+ binaries, relative to the obj.*
+ directory.
+confCC cc The C compiler to use.
+confCCOPTS [empty] Additional options to pass to confCC.
+*confCCOPTS_SO -fPIC Additional options for compiling
+ shared object libraries.
+confCCLINK confCC Linker to use (for executables).
+confCOPY cp A program that copies files.
+confMKDIR [empty] A program that creates directories
+ (mkdir) and takes the -p parameter
+ to create also intermediate directories
+ as required. If this macro is set,
+ then it used by "make install" to
+ create the required installation
+ directories.
+confDEPEND_TYPE generic How to build dependencies. This should
+ be the name of a file in
+ devtools/M4/depend
+confDEPLIBS [empty] Dependent libraries when building
+ shared objects.
+confDONT_INSTALL_CATMAN [undefined] Don't install the formatted manual
+ pages.
+confEBINDIR /usr/libexec The location for binaries executed
+ from other binaries, e.g., mail.local
+ or smrsh.
+confENVDEF [empty] -D flags passed to C compiler.
+confFORCE_RMAIL [undefined] If defined, install the rmail program
+ without question.
+confGBINGRP smmsp The group for set-group-ID binaries.
+confGBINMODE 2555 The mode for set-group-ID binaries.
+confGBINOWN root The owner for set-group-ID binaries.
+confMSPQOWN smmsp The owner of the MSP queue.
+confMSP_QUEUE_DIR /var/spool/clientmqueue The MSP queue directory.
+confMSP_STFILE sm-client.st Name of the MSP statistics file.
+confHFDIR /etc/mail Location of the sendmail helpfile.
+confHFFILE helpfile Name of the installed helpfile.
+confINCDIRS [empty] -I flags passed to C compiler.
+confINCGRP bin The group for include files.
+confINCMODE 444 The mode of installed include files.
+confINCOWN root The owner for include files.
+confINCLUDEDIR /usr/include Where to install include files.
+confINSTALL install The BSD-compatible install program.
+ Use ${BUILDBIN}/install.sh if none
+ is available on your system.
+confINSTALL_RAWMAN [undefined] Install the unformatted manual pages.
+*confLD confCC Linker to use (for libraries).
+confLDOPTS [empty] Linker options.
+*confLDOPTS_SO -shared -Wl Additional linker options for
+ linking shared object libraries.
+confLIBDIR /usr/lib Where to install library files.
+confLIBDIRS [empty] -L flags passed to ld.
+confLIBGRP bin The group for libraries.
+confLIBMODE 444 The mode of installed libraries.
+confLIBOWN root The owner for libraries.
+confLIBS [varies] -l flags passed to ld.
+confLIBSEARCH db bind resolv 44bsd
+ Search for these libraries for
+ linking with programs.
+confLIBSEARCHPATH /lib /usr/lib /usr/shlib
+ Locations to search for the
+ libraries specified by confLIBSEARCH.
+confLINKS ${UBINDIR}/newaliases ${UBINDIR}/mailq \
+ ${UBINDIR}/hoststat ${UBINDIR}/purgestat
+ Names of links to sendmail.
+confLN ln The command used to create links.
+confLNOPTS -f -s The parameters for confLN.
+confMAN1 confMANROOT 1 The location of man1 files.
+confMAN1EXT 1 The extension on files in confMAN1.
+confMAN1SRC 0 The source for man pages installed
+ in confMAN1.
+confMAN3 confMANROOT 3 The location of man3 files.
+confMAN3EXT 3 The extension on files in confMAN3.
+confMAN3SRC 0 The source for man pages installed
+ in confMAN3.
+confMAN4 confMANROOT 4 The location of man4 files.
+confMAN4EXT 4 The extension on files in confMAN4.
+confMAN4SRC 0 The source for man pages installed
+ in confMAN4.
+confMAN5 confMANROOT 5 The location of man5 files.
+confMAN5EXT 5 The extension on files in confMAN5.
+confMAN5SRC 0 The source for man pages installed
+ in confMAN5.
+confMAN8 confMANROOT 8 The location of man8 files.
+confMAN8EXT 8 The extension on files in confMAN8.
+confMAN8SRC 0 The source for man pages installed
+ in confMAN8.
+confMANDOC -man The macros used to format man pages.
+confMANGRP bin The group of installed man pages.
+confMANMODE 444 The mode of installed man pages.
+confMANOWN bin The owner of installed man pages.
+confMANROOT /usr/share/man/cat The root of the man subtree.
+confMANROOTMAN /usr/share/man/man The root of the man subtree, for
+ unformatted manual pages.
+confMAPDEF [varies] The map definitions, e.g.,
+ -DNDBM -DNEWDB. -DNEWDB is always
+ added if libdb.* can be found.
+confMBINDIR /usr/sbin The location of the MTA (sm-mta,
+ sendmail) binary.
+confMBINGRP bin The group of the MTA binary (sm-mta).
+confMBINMODE 550 The mode of the MTA binary (sm-mta).
+confMBINOWN root The owner of the MTA binary (sm-mta).
+confMTCCOPTS [empty] Additional options for compiling
+ multi-threaded object files.
+confMTLDOPTS [empty] Additional linker options for
+ linking multithreaded binaries.
+confNO_HELPFILE_INSTALL [undefined] If defined, don't install the sendmail
+ helpfile by default.
+confNO_MAN_BUILD [undefined] If defined, don't build the man
+ pages.
+confNO_MAN_INSTALL [undefined] If defined, don't install the man
+ pages by default.
+confNO_STATISTICS_INSTALL [undefined] If defined, don't install the sendmail
+ statistics file by default.
+confNROFF groff -Tascii The command to format man pages.
+confOBJADD [empty] Objects that should be included in
+ when linking sendmail and the
+ associated utilities. See also
+ confSRCADD.
+confOPTIMIZE -O Flags passed to C compiler as ${O}.
+confRANLIB echo The path to the program to use
+ as ranlib.
+confRANLIBOPTS [empty] Options to pass to ranlib.
+confREQUIRE_LIBSM [empty] Define if libsm is required.
+confSBINDIR /usr/sbin The location of root-oriented
+ commands, such as makemap.
+confSBINGRP bin The group for set-user-ID binaries.
+confSBINMODE 4555 The mode for set-user-ID binaries.
+confSBINOWN root The owner for set-user-ID binaries.
+confSETUSERID_INSTALL [undefined] Needs to be defined to enable the
+ install-set-user-id target for
+ sendmail. See sendmail/SECURITY.
+confSHAREDLIB_EXT .so Shared library file extenion name.
+confSHAREDLIB_SUFFIX [empty] Shared object version suffix.
+confSHAREDLIBDIR /usr/lib/ Directory for installing shared
+ library. Note: if the value is
+ not empty, it must end with a
+ slash ('/') otherwise it will not
+ be taken as a directory (but as
+ the beginning of a path).
+confSHELL /bin/sh The shell to use inside make.
+confSM_OS_HEADER [varies] The name of the platform specific
+ include file. Undefine this if
+ libsm is not used.
+confSMOBJADD [empty] Objects that should be included in
+ when linking sendmail. See also
+ confSMSRCADD.
+confSMSRCADD [empty] C source files which correspond to
+ objects listed in confSMOBJADD.
+confSMSRCDIR [varies] The sendmail source directory
+ relative to support program obj.*
+ directories. If not set, the
+ Makefile will use a path set by the
+ Build script.
+confSRCADD [empty] C source files which correspond to
+ objects listed in confOBJADD.
+confSRCDIR [varies] The root of the source directories
+ relative to support program obj.*
+ directories. If not set, the
+ Makefile will use a path set by the
+ Build script.
+confSONAME [empty] ld flag for recording the shared object
+ name into shared object.
+confSTDIR /etc/mail The directory in which to store the
+ sendmail statistics file.
+confSTFILE statistics Name of the installed statistics file.
+confSTMODE 0600 Mode of the installed statistics file.
+confSTRIP strip What program to use for stripping
+ executables.
+confSTRIPOPTS [empty] Options to pass to the strip program.
+confUBINDIR /usr/bin The directory for user-executable
+ binaries.
+confUBINGRP bin The group for user-executable binaries.
+confUBINMODE 555 The mode for user-executable binaries.
+confUBINOWN bin The owner for user-executable binaries.
+
+There are also program specific variables for each of the programs
+in the sendmail distribution. Each has the form `conf_prog_ENVDEF',
+for example, `conf_sendmail_ENVDEF'. If the program name contains
+a '.' it must be replaced by '_' first, e.g., use `conf_mail_local_LIBS'
+instead of `conf_mail.local_LIBS'. The variables are:
+
+conf_prog_ENVDEF [empty] -D flags passed to C compiler when
+ compiling prog.
+conf_prog_LIB_POST [empty] -l flags passed to ld when linking
+ prog (after other libraries).
+conf_prog_LIBS [varies] -l flags passed to ld when linking
+ prog (before other libraries).
+conf_prog_OBJADD [empty] Additional object files given to ld
+ when linking prog.
+conf_prog_SRCADD [empty] C source files to compile and link
+ for prog.
+
+The order of the different conf*LIBS* is as follows:
+conf_prog_LIBS confLIBS conf_prog_LIB_POST
+
+----------------------------------------------------------------
+
+----------------
+New build system
+----------------
+
+Sendmail's build system has undergone some rearrangement to accommodate
+future development. To the end user building sendmail from a distribution,
+this should have little effect. All the same configuration files and macros
+should still behave the same.
+
+If you need to make some radical changes to a Makefile.m4 or are adding new
+libraries or utilities, you may want to read the rest of this document on
+how to work with the new system.
+
+
+--------
+Overview
+--------
+
+The purpose of the redesign is twofold. First, it cuts down massively on
+replicated information. Second, the new design should lend itself better to
+working on platforms with somewhat different build tools than on standard
+unix.
+
+The main idea is to have the Makefile.m4 in each subdirectory contain the
+minimum amount of information needed to describe the elements needed for
+the build process and the products produced.
+
+Each product has a type and each type has a template that provides a basic
+makefile for that type. Right now the templates are organized by the broad
+type of the operating system. The two existing types are UNIX and NT.
+
+
+------------------
+Makefile.m4 basics
+------------------
+
+Each Makefile.m4 is split into separate products. For the most part, the
+products are considered totally separate from other products in the
+Makefile.m4. Each products is delineated by two macros: bldPRODUCT_START and
+bldPRODUCT_END.
+
+The form for bldPRODUCT_START is:
+bldPRODUCT_START(<product_type>, <product_name>)
+where <product_type> is the type of product to be produced (e.g., executable,
+library, manpage) and <product_name> is a unique identifier within the
+product_type name space for this Makefile.m4
+
+The form for bldPRODUCT_END is:
+bldPRODUCT_END
+
+This is marks the end of all the information for the current product.
+
+There is one other macro required in any Makefile.m4 and that is bldFINISH
+which takes no arguments and must appear after all the products have been
+defined.
+
+When the actual makefile is generated each product appears in two sections.
+The first is where makefile variables are set (e.g., CFLAGS=-O). The second
+is where the targets appear (e.g., foo.o: foo.c). Anything diverted to
+bldTARGETS_SECTION ends up in the second part of the makefile. Anything
+else turns up in the header part where variables are defined.
+
+As always, any straight text put into Makefile.m4 will just show up as is
+in the finished makefile.
+
+
+-------------
+Product Types
+-------------
+
+executable
+----------
+
+This means an executable created from C sources. The name of the executable
+is derived from the product_name in the bldPRODUCT_START macro.
+
+bldSOURCES - This should be defined to a space separated list of source
+files that make up the executable.
+
+bldBIN_TYPE - This determines where the binaries will be installed and what
+permissions they will have. Available types are `M', `U', `K', `S', and `E'.
+See M4/UNIX/make/executable.m4 for what the different types mean.
+
+bldTARGET_LINKS - This determines where additional symbolic links to the
+executable are placed. These should be full pathnames, separated by
+spaces.
+
+
+test
+----
+
+This is just like 'executable', but is used for test programs.
+The program cannot be installed. Each time it is built, it is executed
+by make with no arguments.
+
+
+manpage
+-------
+
+This builds manpages from source using *roff.
+
+bldSOURCES - This should be defined to a space separated list of man source
+files.
+
+
+library
+-------
+
+This builds a static library from C sources.
+
+bldSOURCES - This should be defined to a space separated list of C source
+files that make up the library.
+
+bldINSTALLABLE - This should be set if the library should be installed in
+confLIBDIR.
+
+$Revision: 8.102 $, Last updated $Date: 2008/02/12 16:40:05 $
diff --git a/devtools/Site/README b/devtools/Site/README
new file mode 100644
index 000000000000..de9ef8b1fe4a
--- /dev/null
+++ b/devtools/Site/README
@@ -0,0 +1,22 @@
+The Build script will look for the default site configuration files in
+this directory. Build will include the following files if they are
+present in this directory:
+
+ site.config.m4
+ site.OS.$SENDMAIL_SUFFIX.m4
+ site.OS.m4
+ site.post.m4
+
+OS is the name of the operating system file selected from the devtools/OS
+directory. SENDMAIL_SUFFIX is a user environment variable which can be
+used to further distinguish between site configuration files in this
+directory. If set, it will also be used in generating the obj.* directory
+name.
+
+Notice: if any of the above files is changed, the -c flag must be
+specified with the Build command, otherwise those changes will have
+no effect.
+
+See the README in the devtools directory for more information.
+
+$Revision: 8.8 $, Last updated $Date: 2002/02/18 20:57:00 $
diff --git a/devtools/Site/site.config.m4.sample b/devtools/Site/site.config.m4.sample
new file mode 100644
index 000000000000..c1f76c03fcfe
--- /dev/null
+++ b/devtools/Site/site.config.m4.sample
@@ -0,0 +1,62 @@
+dnl #####################################################################
+dnl ### ###
+dnl ### This is a sample "site.config.m4". It is not intended to be ###
+dnl ### used directly. It is intended to illustrate, by example, ###
+dnl ### how to make your own site configuration file. ###
+dnl ### ###
+dnl #####################################################################
+dnl $Id: site.config.m4.sample,v 1.1 2003/01/11 17:09:25 ca Exp $
+
+dnl #####################################################################
+dnl ### ###
+dnl ### This illustrates how to turn off an option that is defined by ###
+dnl ### default. Check your compiler documentation to make sure that ###
+dnl ### it supports "-U". ###
+dnl ### ###
+dnl #####################################################################
+
+dnl ### Changes to disable the default NIS support
+APPENDDEF(`confENVDEF', `-UNIS')
+
+dnl #####################################################################
+dnl ### ###
+dnl ### The next group of statements illustrates how to add support ###
+dnl ### for a particular map class. If you have not heard of this ###
+dnl ### particular map type, then you probably don't need it. ###
+dnl ### ###
+dnl ### Note that the map define goes in confMAPDEF, and that any ###
+dnl ### special library must be defined. Note, also that include ###
+dnl ### directories and library directories must also be defined if ###
+dnl ### they are places that your compiler does not automatically ###
+dnl ### search. ###
+dnl ### ###
+dnl #####################################################################
+
+dnl ### Changes for PH_MAP support.
+APPENDDEF(`confMAPDEF',`-DPH_MAP')
+APPENDDEF(`confLIBS', `-lphclient')
+APPENDDEF(`confINCDIRS', `-I/opt/nph/include')
+APPENDDEF(`confLIBDIRS', `-L/opt/nph/lib')
+
+dnl #####################################################################
+dnl ### ###
+dnl ### The next group illustrates how to add support for a compile ###
+dnl ### time option. In addition to the compile time define, any ###
+dnl ### required libraries must be given. In addition, include and ###
+dnl ### library directories must be given if they are not standardly ###
+dnl ### searched by your compiler. ###
+dnl ### ###
+dnl ### Note the "-R" for the library directory. On some systems, ###
+dnl ### that can be used to tell the run time loader where to find ###
+dnl ### dynamic libraries (shared objects). Check your system ###
+dnl ### documentation (man ld) to see if this is appropriate for your ###
+dnl ### system. ###
+dnl ### ###
+dnl #####################################################################
+
+dnl ### Changes for STARTTLS support
+APPENDDEF(`confENVDEF',`-DSTARTTLS')
+APPENDDEF(`confLIBS', `-lssl -lcrypto')
+APPENDDEF(`confLIBDIRS', `-L/usr/local/ssl/lib -R/usr/local/ssl/lib')
+APPENDDEF(`confINCDIRS', `-I/usr/local/ssl/include')
+
diff --git a/devtools/bin/Build b/devtools/bin/Build
new file mode 100755
index 000000000000..8d77581cd5df
--- /dev/null
+++ b/devtools/bin/Build
@@ -0,0 +1,819 @@
+#!/bin/sh
+
+# Copyright (c) 1998-2002, 2008 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+# Copyright (c) 1993, 1996-1997 Eric P. Allman. All rights reserved.
+# Copyright (c) 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.
+#
+#
+# $Id: Build,v 8.187 2008/01/11 18:40:17 ca Exp $
+#
+
+#
+# A quick-and-dirty script to compile sendmail and related programs
+# in the presence of multiple architectures. To use, just use
+# "sh Build".
+#
+
+trap "rm -f $obj/.settings$$; exit" 1 2 3 15
+
+cflag=""
+mflag=""
+Mflag=""
+Aflag=""
+sflag=""
+makeargs=""
+libdirs=""
+incdirs=""
+libsrch=""
+libpath=""
+siteconfig=""
+pfx=""
+obj=""
+oscf=""
+arch=""
+os=""
+rel=""
+mkdir="mkdir -p"
+SENDMAIL_BUILD_FLAGS=""
+EX_OK=0
+EX_USAGE=64
+EX_NOINPUT=66
+EX_UNAVAILABLE=69
+SHELL=/bin/sh
+
+# default to a optimized build to behave like the old system.
+build_variant="optimized"
+
+full_src_dir=`pwd`
+if [ -z "$src_dir" ]
+then
+ src_dir=`basename ${full_src_dir}`
+fi
+absolute_base_dir=`echo ${full_src_dir} | sed "s#${src_dir}\\$##"`
+obj_rel_base_dir='../..'
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -src) # Specify pathname of source directory relative to
+ # root of cvs tree. This relative pathname may have
+ # multiple components, as in 'foo/bar/baz', and will also
+ # be used to form the pathname of the object directory.
+ shift
+ arg=$1
+ if [ -z "$arg" ]
+ then
+ echo "Missing arg for -src" >&2
+ exit $EX_USAGE
+ fi
+ case $arg
+ in
+ /*) echo "Arg for -src must not begin with / ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ src_dir="$arg"
+ absolute_base_dir=`echo ${full_src_dir} | sed "s;/${src_dir}$;;"`
+ obj_rel_base_dir=`echo x/${src_dir} | sed "s;[^/][^/]*;..;g"`
+ SMROOT=${absolute_base_dir}
+ shift
+ ;;
+ -c) # clean out existing $obj tree
+ cflag=1
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS $1"
+ shift
+ ;;
+
+ -m) # show Makefile name only
+ mflag=1
+ shift
+ ;;
+
+ -M) # show the name of the obj. directory
+ Mflag=1
+ shift
+ ;;
+
+ -A) # show the name of the architecture
+ Aflag=1
+ shift
+ ;;
+
+ -E*) # environment variables to pass into Build
+ arg=`echo $1 | sed 's/^-E//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -E flag" >&2
+ exit $EX_USAGE
+ else
+ case $arg
+ in
+ *=*) # check format
+ eval $arg
+ export `echo $arg | sed 's;=.*;;'`
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS -E \"$arg\""
+ ;;
+ *) # bad format
+ echo "Bad format for -E argument ($arg)" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ fi
+ ;;
+
+ -L*) # set up LIBDIRS
+ libdirs="$libdirs $1"
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS $1"
+ shift
+ ;;
+
+ -I*) # set up INCDIRS
+ incdirs="$incdirs $1"
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS $1"
+ shift
+ ;;
+
+ -f*) # select site config file
+ arg=`echo $1 | sed 's/^-f//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ "$pfx" ]
+ then
+ echo "May not use -f and -Q together"
+ exit $EX_USAGE
+ fi
+ if [ "$siteconfig" ]
+ then
+ echo "Only one -f flag allowed" >&2
+ exit $EX_USAGE
+ else
+ siteconfig=$arg
+ if [ -z "$siteconfig" ]
+ then
+ echo "Missing argument for -f flag" >&2
+ exit $EX_USAGE
+ elif [ ! -f "$siteconfig" ]
+ then
+ echo "${siteconfig}: File not found"
+ exit $EX_NOINPUT
+ else
+ shift # move past argument
+ case $arg
+ in
+ /*)
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS -f \"$siteconfig\""
+ ;;
+ *)
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS -f \"${full_src_dir}/$siteconfig\""
+ ;;
+ esac
+ fi
+ fi
+ ;;
+
+ -O*) # Set object directory manually.
+ arg="`echo $1 | sed 's/^-O//'`"
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg="$1"
+ fi
+ case $arg
+ in
+ /*)
+ OBJ_ROOT="$arg"
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS -O \"$OBJ_ROOT\""
+ obj_rel_base_dir=$absolute_base_dir
+ ;;
+ *)
+ echo "Absolute directory path required for -O flag" >&2
+ exit $EX_USAGE
+ ;;
+ esac
+ shift
+ ;;
+
+ -S) # skip auto-configure
+ sflag="-s"
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS $1"
+ shift
+ ;;
+
+ -Q*) # Select a prefix for the Site/*.config.m4 file
+ arg=`echo $1 | sed 's/^-Q//'`
+ if [ -z "$arg" ]
+ then
+ shift # move to argument
+ arg=$1
+ fi
+ if [ -z "$arg" ]
+ then
+ echo "Empty -Q flag" >&2
+ exit $EX_USAGE
+ elif [ "$siteconfig" ]
+ then
+ echo "May not use -Q and -f together" >&2
+ exit $EX_USAGE
+ elif [ "$pfx" ]
+ then
+ echo "Only one -Q allowed" >&2
+ exit $EX_USAGE
+ else
+ pfx=$arg
+ SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS -Q \"$pfx\""
+ fi
+ shift
+ ;;
+
+ -v) # Select a build variant: debug, optimized, purify, whatever.
+ shift
+ build_variant=$1
+ if [ -z "$build_variant" ]
+ then
+ echo "Usage error with \"-v\" <build_variant>" >&2
+ echo "You must specify exactly one build variant of debug|optimized|purify" >&2
+ exit $EX_USAGE
+ fi
+ shift
+ ;;
+
+ *) # pass argument to make
+ makeargs="$makeargs \"$1\""
+ #SENDMAIL_BUILD_FLAGS="$SENDMAIL_BUILD_FLAGS \"$1\""
+ shift
+ ;;
+ esac
+done
+
+# process selected build variant.
+case $build_variant in
+ debug)
+ M4_BLDVARIANT_FLAGS="-DconfBLDVARIANT=DEBUG"
+ ;;
+ optimized)
+ M4_BLDVARIANT_FLAGS="-DconfBLDVARIANT=OPTIMIZED"
+ ;;
+ purify)
+ M4_BLDVARIANT_FLAGS="-DconfBLDVARIANT=PURIFY"
+ echo "Sorry, the purify build variant has not been plumbed yet. (Bummer.)" >&2
+ exit $EX_USAGE
+ ;;
+ *)
+ exit $EX_USAGE
+ ;;
+esac
+
+
+#
+# Do heuristic guesses !ONLY! for machines that do not have uname
+#
+if [ -d /NextApps -a ! -f /bin/uname -a ! -f /usr/bin/uname ]
+then
+ # probably a NeXT box
+ arch=`hostinfo | sed -n 's/.*Processor type: \([^ ]*\).*/\1/p'`
+ os=NeXT
+ rel=`hostinfo | sed -n 's/.*NeXT Mach \([0-9\.]*\).*/\1/p'`
+elif [ -f /usr/sony/bin/machine -a -f /etc/osversion ]
+then
+ # probably a Sony NEWS 4.x
+ os=NEWS-OS
+ rel=`awk '{ print $3}' /etc/osversion`
+ arch=`/usr/sony/bin/machine`
+elif [ -d /usr/omron -a -f /bin/luna ]
+then
+ # probably a Omron LUNA
+ os=LUNA
+ if [ -f /bin/luna1 ] && /bin/luna1
+ then
+ rel=unios-b
+ arch=luna1
+ elif [ -f /bin/luna2 ] && /bin/luna2
+ then
+ rel=Mach
+ arch=luna2
+ elif [ -f /bin/luna88k ] && /bin/luna88k
+ then
+ rel=Mach
+ arch=luna88k
+ fi
+elif [ -d /usr/apollo -a -d \`node_data ]
+then
+ # probably a Apollo/DOMAIN
+ os=DomainOS
+ arch=$ISP
+ rel=`/usr/apollo/bin/bldt | grep Domain | awk '{ print $4 }' | sed -e 's/,//g'`
+fi
+
+if [ ! "$arch" -a ! "$os" -a ! "$rel" ]
+then
+ arch=`uname -m | sed -e 's/ //g' -e 's/\//-/g'`
+ os=`uname -s | sed -e 's/\//-/g' -e 's/ //g'`
+ rel=`uname -r | sed -e 's/(/-/g' -e 's/)//g' -e 's/ //g'`
+fi
+
+#
+# Tweak the values we have already got. PLEASE LIMIT THESE to
+# tweaks that are absolutely necessary because your system uname
+# routine doesn't return something sufficiently unique. Don't do
+# it just because you don't like the name that is returned. You
+# can combine the architecture name with the os name to create a
+# unique Makefile name.
+#
+
+# tweak machine architecture
+case $arch
+in
+ sun4*) arch=sun4;;
+
+ 9000/*) arch=`echo $arch | sed -e 's/9000.//' -e 's/..$/xx/'`;;
+
+ DS/907000) arch=ds90;;
+
+ NILE*) arch=NILE
+ os=`uname -v`;;
+
+ CRAYT3E) os=UNICOS-mk;;
+
+ CRAY[CJT]90*|CRAYTS|CRAYSV1*|CRAYY-MP)
+ os=UNICOS;;
+esac
+
+# tweak operating system type and release
+node=`uname -n | sed -e 's/\//-/g' -e 's/ //g'`
+if [ "$os" = "$node" -a "$arch" = "i386" -a "$rel" = 3.2 -a "`uname -v`" = 2 ]
+then
+ # old versions of SCO UNIX set uname -s the same as uname -n
+ os=SCO_SV
+fi
+if [ "$rel" = 4.0 ]
+then
+ case $arch in
+ 3[34]??|3[34]??,*|3[34]??[A-Z]|4[48]??|56??)
+ if [ -d /usr/sadm/sysadm/add-ons/WIN-TCP ]
+ then
+ os=NCR.MP-RAS
+ rel=2.x
+ arch=i486
+ elif [ -d /usr/sadm/sysadm/add-ons/inet ]
+ then
+ os=NCR.MP-RAS
+ rel=3.x
+ arch=i486
+ fi
+ ;;
+ esac
+fi
+
+case $os
+in
+ DYNIX-ptx) os=PTX;;
+ Paragon*) os=Paragon;;
+ HP-UX) rel=`echo $rel | sed -e 's/^[^.]*\.0*//'`;;
+ AIX) osl=""
+ if [ -x /bin/lslpp ]
+ then
+ osl=`/bin/lslpp -Lcq bos.rte | cut -f3 -d: | cut -f1-3 -d. 2>/dev/null`
+ if [ $? = 0 -a -n "$osl" ]
+ then
+ rel=$osl
+ else
+ # command failed; fall back to old method
+ osl=""
+ fi
+ fi
+ # check whether it worked
+ if [ -z "$osl" ]
+ then
+ rela=$rel
+ rel=`uname -v`
+ rel=$rel.$rela
+ fi
+ arch=PPC
+ ;;
+ BSD-386) os=BSD-OS;;
+ SCO_SV) rel=`uname -X | sed -n 's/Release = //p'`
+ if [ "$rel" = "5v6.0.0" ]
+ then
+ os=OSR; rel=`uname -X | sed -n 's/Release = //p'`
+ else
+ os=SCO; rel=`uname -X | sed -n 's/Release = 3.2v//p'`
+ fi;;
+ UNIX_System_V) if [ "$arch" = "ds90" ]
+ then
+ os="UXPDS"
+ rel=`uname -v | sed -e 's/\(V.*\)L.*/\1/'`
+ fi;;
+ ReliantUNIX-?|SINIX-?) os=SINIX;;
+ DomainOS) case $rel in
+ 10.4*) rel=10.4;;
+ esac
+ ;;
+ IRIX*) rel=`echo $rel | sed -e 's/-.*$//'`;;
+ NeXT) mkdir="mkdirs";;
+ UNICOSMK) rel=`echo $rel | sed -e 's/\(.*\)\.\(.*\)\.\(.*\)\..*$/\1.\2.\3/'`;;
+ UNICOS*) rel=`echo $rel | sed -e 's/\(.*\)\.\(.*\)\..*$/\1.\2/'`;;
+esac
+
+# get "base part" of operating system release
+rroot=`echo $rel | sed -e 's/\.[^.]*$//'`
+rbase=`echo $rel | sed -e 's/\..*//'`
+if [ "$rroot" = "$rbase" ]
+then
+ rroot=$rel
+fi
+
+# heuristic tweaks to clean up names -- PLEASE LIMIT THESE!
+if [ "$os" = "unix" ]
+then
+ # might be Altos System V
+ case $rel
+ in
+ 5.3*) os=Altos;;
+ esac
+elif [ -r /unix -a -r /usr/lib/libseq.a -a -r /lib/cpp ]
+then
+ # might be a DYNIX/ptx 2.x system, which has a broken uname
+ if strings /lib/cpp | grep _SEQUENT_ > /dev/null
+ then
+ os=PTX
+ fi
+elif [ -d /usr/nec ]
+then
+ # NEC machine -- what is it running?
+ if [ "$os" = "UNIX_System_V" ]
+ then
+ os=EWS-UX_V
+ elif [ "$os" = "UNIX_SV" ]
+ then
+ os=UX4800
+ fi
+elif [ "$arch" = "mips" ]
+then
+ case $rel
+ in
+ 4_*)
+ if [ `uname -v` = "UMIPS" ]
+ then
+ os=RISCos
+ fi;;
+ esac
+fi
+
+# see if there is a "user suffix" specified
+if [ "${SENDMAIL_SUFFIX-}x" = "x" ]
+then
+ sfx=""
+else
+ sfx=".${SENDMAIL_SUFFIX}"
+fi
+
+if [ ! -n "$Mflag" -a ! -n "$Aflag" ]
+then
+ echo "Configuration: pfx=$pfx, os=$os, rel=$rel, rbase=$rbase, rroot=$rroot, arch=$arch, sfx=$sfx, variant=$build_variant"
+fi
+
+SMROOT=${SMROOT-`(cd ..;pwd)`}
+BUILDTOOLS=${BUILDTOOLS-$SMROOT/devtools}
+export SMROOT BUILDTOOLS
+
+# see if we are in a Build-able directory
+if [ ! -f Makefile.m4 -a ! -n "$Aflag" ]; then
+ echo "Makefile.m4 not found. Build can only be run from a source directory."
+ exit $EX_UNAVAILABLE
+fi
+
+incdirs="$incdirs -I\${SRCDIR}/include"
+
+if [ -z "$OBJ_ROOT" ]; then
+ OBJ_ROOT=${SMROOT}
+fi
+
+if [ "${pfx}x" = "x" ]
+then
+ prefix=""
+else
+ prefix=".$pfx"
+fi
+
+# Print out the architecture (to build up an obj dir path) and exit
+if [ -n "$Aflag" ]
+then
+ echo "$os.$rel.$arch$sfx"
+ exit $EX_OK
+fi
+
+# now try to find a reasonable object directory
+if [ -r ${OBJ_ROOT}/obj${prefix}.$os.$rel.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$rel.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$os.$rroot.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$rroot.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$os.$rbase.x.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$rbase.x.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$os.$rel$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$rel$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$os.$rbase.x$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$rbase.x$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$os.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$rel.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$rel.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$rbase.x.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$rbase.x.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$os$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$arch$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$arch$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$rel$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$rel$sfx
+elif [ -r ${OBJ_ROOT}/obj${prefix}.$sfx ]; then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$sfx
+fi
+
+if [ -n "$abs_obj_dir" ]
+then
+ obj=${abs_obj_dir}/${src_dir}
+fi
+
+# Print the directory which would be used for the build and exit
+if [ -n "$Mflag" ]
+then
+ if [ ! -n "$obj" ]
+ then
+ obj=${OBJ_ROOT}/obj.$os.$rel.$arch$sfx/${src_dir}
+ fi
+ echo "$obj"
+ exit $EX_OK
+fi
+
+# Check if trying to use -f with an existing obj directory
+if [ -n "$siteconfig" -a -n "$obj" -a -d "$obj" -a -z "$cflag" ]
+then
+ echo "Can not use Build's -f flag with an existing object tree."
+ echo "If you wish to change configuration information, use the -c flag to clear"
+ echo "the existing $obj tree."
+ exit $EX_USAGE
+fi
+
+# Check if trying to use -Q with an existing obj directory
+if [ -n "$pfx" -a -n "$obj" -a -d "$obj" -a -z "$cflag" ]
+then
+ echo "Can not use Build's -Q flag with an existing object tree."
+ echo "If you wish to change configuration information, use the -c flag to clear"
+ echo "the existing $obj tree."
+ exit $EX_USAGE
+fi
+
+
+# Clean out the directory before building.
+if [ "$cflag" ]
+then
+ if [ -n "$obj" ]
+ then
+ echo "Clearing out existing $obj tree"
+ rm -rf $obj
+ fi
+fi
+
+# If we didn't detect an existing obj directory, makeup a new obj name.
+if [ -z "$obj" ]
+then
+ abs_obj_dir=${OBJ_ROOT}/obj${prefix}.$os.$rel.$arch$sfx
+ obj=${abs_obj_dir}/${src_dir}
+fi
+
+# Check if obj directory exists
+if [ ! -r "$obj" ]
+then
+ if [ -r $BUILDTOOLS/OS/$os.$rel.$arch$sfx ]; then
+ oscf=$os.$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel.$arch ]; then
+ oscf=$os.$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch$sfx ]; then
+ oscf=$os.$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot.$arch ]; then
+ oscf=$os.$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch$sfx ]; then
+ oscf=$os.$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x.$arch ]; then
+ oscf=$os.$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os.$rel$sfx ]; then
+ oscf=$os.$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rel ]; then
+ oscf=$os.$rel
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot$sfx ]; then
+ oscf=$os.$rroot$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rroot ]; then
+ oscf=$os.$rroot
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x$sfx ]; then
+ oscf=$os.$rbase.x$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$rbase.x ]; then
+ oscf=$os.$rbase.x
+ elif [ -r $BUILDTOOLS/OS/$os.$arch$sfx ]; then
+ oscf=$os.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$os.$arch ]; then
+ oscf=$os.$arch
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch$sfx ]; then
+ oscf=$rel.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel.$arch ]; then
+ oscf=$rel.$arch
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch$sfx ]; then
+ oscf=$rroot.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rroot.$arch ]; then
+ oscf=$rroot.$arch
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch$sfx ]; then
+ oscf=$rbase.x.$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$rbase.x.$arch ]; then
+ oscf=$rbase.x.$arch
+ elif [ -r $BUILDTOOLS/OS/$os$sfx ]; then
+ oscf=$os$sfx
+ elif [ -r $BUILDTOOLS/OS/$os ]; then
+ oscf=$os
+ elif [ -r $BUILDTOOLS/OS/$arch$sfx ]; then
+ oscf=$arch$sfx
+ elif [ -r $BUILDTOOLS/OS/$arch ]; then
+ oscf=$arch
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ elif [ -r $BUILDTOOLS/OS/$rel ]; then
+ oscf=$rel
+ elif [ -r $BUILDTOOLS/OS/$rel$sfx ]; then
+ oscf=$rel$sfx
+ else
+ echo "Cannot determine how to support $os.$rel.$arch" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ M4=`$SHELL $BUILDTOOLS/bin/find_m4.sh`
+ ret=$?
+ if [ $ret -ne 0 ]
+ then
+ exit $ret
+ fi
+ echo "Using M4=$M4"
+ export M4
+ if [ "$mflag" ]
+ then
+ echo "Will run in virgin $obj using $BUILDTOOLS/OS/$oscf"
+ exit $EX_OK
+ fi
+
+ echo "Creating $obj using $BUILDTOOLS/OS/$oscf"
+ ${mkdir} $obj
+
+ ln="ln -s"
+ (cd $obj
+ # This glob doesn't actually glob to something everywhere,
+ # thus the protective measures.
+ for i in ${obj_rel_base_dir}/${src_dir}/*.[chly13458]
+ do
+ if [ -f $i ]
+ then
+ $ln $i .
+ fi
+ done
+ # This glob doesn't actually glob to something everywhere,
+ # thus the protective measures.
+ for i in ${obj_rel_base_dir}/${src_dir}/*.0
+ do
+ if [ -f $i ]
+ then
+ $ln $i `basename $i`.dist
+ fi
+ done)
+ if [ -f helpfile ]
+ then
+ (cd $obj; $ln ${obj_rel_base_dir}/${src_dir}/helpfile .)
+ fi
+
+ rm -f $obj/.settings$$
+ echo 'divert(-1)' > $obj/.settings$$
+ cat $BUILDTOOLS/M4/header.m4 >> $obj/.settings$$
+ echo "define(\`bldOS', \`\`$os'')" >> $obj/.settings$$
+ echo "define(\`bldREL', \`\`$rel'')" >> $obj/.settings$$
+ echo "define(\`bldARCH', \`\`$arch'')" >> $obj/.settings$$
+ cat $BUILDTOOLS/OS/$oscf >> $obj/.settings$$
+
+ cur_dir=`pwd`
+ cd $obj/..
+ absolute_obj_dir=`pwd`
+
+
+ cd $cur_dir
+ echo "ifdef(\`bldABS_OBJ_DIR',,\`define(\`bldABS_OBJ_DIR', \`$absolute_obj_dir')')" >> $obj/.settings$$
+ rel_src_dir="$obj_rel_base_dir/$src_dir"
+ echo "define(\`bldSRC_NAME', \`$src_dir')" >> $obj/.settings$$
+ echo "define(\`bldREL_SRC_DIR', \`$rel_src_dir')" >> $obj/.settings$$
+
+ if [ ! -z "$pfx" ]
+ then
+ # They gave us a specific prefix, let's try it out.
+ if [ -f $BUILDTOOLS/Site/$pfx.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/$pfx.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/$pfx.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/$pfx.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/$pfx.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/$pfx.config.m4 $siteconfig"
+ fi
+ elif [ -z "$siteconfig" ]
+ then
+ # none specified, use defaults
+ if [ -f $BUILDTOOLS/Site/site.$oscf$sfx.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf$sfx.m4
+ elif [ -f $BUILDTOOLS/Site/site.$oscf.m4 ]
+ then
+ siteconfig=$BUILDTOOLS/Site/site.$oscf.m4
+ fi
+ if [ -f $BUILDTOOLS/Site/site.config.m4 ]
+ then
+ siteconfig="$BUILDTOOLS/Site/site.config.m4 $siteconfig"
+ fi
+ if [ -f $BUILDTOOLS/Site/site.post.m4 ]
+ then
+ siteconfig="$siteconfig $BUILDTOOLS/Site/site.post.m4"
+ fi
+ fi
+ if [ ! -z "$siteconfig" ]
+ then
+ echo "Including $siteconfig"
+ cat $siteconfig >> $obj/.settings$$
+ fi
+ if [ "$libdirs" ]
+ then
+ echo "define(\`confLIBDIRS', confLIBDIRS \`\`$libdirs'')" >> $obj/.settings$$
+ fi
+ if [ "$incdirs" ]
+ then
+ echo "define(\`confINCDIRS', \`\`$incdirs'' confINCDIRS)" >> $obj/.settings$$
+ fi
+ echo "define(\`_SRC_PATH_', \`\`$obj_rel_base_dir'')" >> $obj/.settings$$
+ echo "define(\`bldSRC_PATH', \`\`$obj_rel_base_dir'')" >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ libdirs=`(cat $obj/.settings$$; echo "_SRIDBIL_= confLIBDIRS" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} ${M4_BLDVARIANT_FLAGS} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_SRIDBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_SRIDBIL_=//"`
+ libsrch=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} ${M4_BLDVARIANT_FLAGS} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ libpath=`(cat $obj/.settings$$; echo "_HCRSBIL_= confLIBSEARCHPATH" ) | \
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' | \
+ ${M4} ${M4_BLDVARIANT_FLAGS} -DconfBUILDTOOLSDIR=$BUILDTOOLS - | \
+ grep "^_HCRSBIL_=" | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e "s/^_HCRSBIL_=//"`
+ echo 'divert(-1)' >> $obj/.settings$$
+ LIBDIRS="$libdirs" LIBSRCH="$libsrch" LIBPATH="$libpath" SITECONFIG="$siteconfig" $SHELL $BUILDTOOLS/bin/configure.sh $sflag $oscf >> $obj/.settings$$
+ echo 'divert(0)dnl' >> $obj/.settings$$
+ sed -e 's/\(.\)include/\1_include_/g' -e 's/#define/#_define_/g' -e 's/ //g' $obj/.settings$$ | \
+ ${M4} ${M4_BLDVARIANT_FLAGS} -DconfBUILDTOOLSDIR=$BUILDTOOLS - Makefile.m4 | \
+ sed -e 's/#_define_/#define/g' -e 's/_include_/include/g' -e 's/ //g' > $obj/Makefile
+ # That ^M up there was added by quoting it in emacs.
+ # Make has problems if lines end in ^M^M, but not in ^M apparently
+ if [ $? -ne 0 -o ! -s $obj/Makefile ]
+ then
+ echo "ERROR: ${M4} failed; You may need a newer version of M4, at least as new as System V or GNU" 1>&2
+ rm -rf $obj
+ exit $EX_UNAVAILABLE
+ fi
+ rm -f $obj/.settings$$
+ echo "Making dependencies in $obj"
+ (cd $obj; ${MAKE-make} depend)
+fi
+
+if [ "$mflag" ]
+then
+ makefile=`ls -l $obj/Makefile | sed 's/.* //'`
+ if [ -z "$makefile" ]
+ then
+ echo "ERROR: $obj exists but has no Makefile" >&2
+ exit $EX_NOINPUT
+ fi
+ echo "Will run in existing $obj using $makefile"
+ exit $EX_OK
+fi
+
+echo "Making in $obj"
+cd $obj
+eval exec ${MAKE-make} SENDMAIL_BUILD_FLAGS=\"$SENDMAIL_BUILD_FLAGS\" $makeargs
diff --git a/devtools/bin/configure.sh b/devtools/bin/configure.sh
new file mode 100755
index 000000000000..a253b1c8f162
--- /dev/null
+++ b/devtools/bin/configure.sh
@@ -0,0 +1,184 @@
+#!/bin/sh
+
+# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# $Id: configure.sh,v 8.46 2003/08/20 18:08:35 gshapiro Exp $
+
+#
+# Special script to autoconfigure for M4 generation of Makefile
+#
+
+SHELL=/bin/sh
+os=""
+resolver=""
+sflag=""
+bin_dir=`echo $0 | sed -e 's%\/[^/]*$%%'`
+if [ ! -d $bin_dir ]
+then
+ bin_dir="."
+fi
+find_prog=$bin_dir/find_in_path.sh
+
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -s) # skip auto-configure
+ sflag=1
+ shift
+ ;;
+
+ *) # OS definition
+ os=$1
+ shift
+ ;;
+ esac
+done
+
+usewhoami=0
+usehostname=0
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/whoami ]
+ then
+ usewhoami=1
+ if [ $usehostname -ne 0 ]
+ then
+ break;
+ fi
+ fi
+ if [ -f $p/hostname ]
+ then
+ usehostname=1
+ if [ $usewhoami -ne 0 ]
+ then
+ break;
+ fi
+ fi
+done
+if [ $usewhoami -ne 0 ]
+then
+ user=`whoami`
+else
+ user=$LOGNAME
+fi
+
+if [ $usehostname -ne 0 ]
+then
+ host=`hostname`
+else
+ host=`uname -n`
+fi
+echo "PUSHDIVERT(0)"
+echo "####################################################################"
+echo "##### This file is automatically generated -- edit at your own risk"
+echo '#####' Built by $user@$host
+echo '#####' on `date` using template OS/$os
+if [ ! -z "$SITECONFIG" ]
+then
+ echo '#####' including $SITECONFIG
+fi
+echo '#####' in `pwd` | sed 's/\/tmp_mnt//'
+echo "####################################################################"
+echo ""
+echo "POPDIVERT"
+echo "define(\`__HOST__', \`$host')dnl"
+echo "ifdef(\`confMAPDEF',, \`define(\`confMAPDEF', \`')')dnl"
+echo "ifdef(\`confLIBS',, \`define(\`confLIBS', \`')')dnl"
+
+LIBDIRS="$LIBDIRS $LIBPATH"
+libs=""
+mapdef=""
+for l in $LIBSRCH
+do
+ for p in `echo $LIBDIRS | sed -e 's/:/ /g' -e 's/^-L//g' -e 's/ -L/ /g'`
+ do
+ if [ "x$p" = "x" ]
+ then
+ p = "."
+ fi
+ if [ -f $p/lib$l.a -o -f $p/lib$l.so ]
+ then
+ case $l
+ in
+ db)
+ mapdef="$mapdef -DNEWDB"
+ ;;
+ bind|resolv)
+ if [ -n "$resolver" ]
+ then
+ continue
+ else
+ resolver=$l
+ fi
+ ;;
+ 44bsd)
+ if [ "x$resolver" != "xresolv" ]
+ then
+ continue
+ fi
+ ;;
+ esac
+ libs="$libs -l$l"
+ break
+ fi
+ done
+done
+
+for p in `echo $PATH | sed 's/:/ /g'`
+do
+ pbase=`echo $p | sed -e 's,/bin,,'`
+ if [ "x$p" = "x" ]
+ then
+ p="."
+ fi
+ if [ -f $p/mkdep ]
+ then
+ echo "ifdef(\`confDEPEND_TYPE',, \`define(\`confDEPEND_TYPE', \`BSD')')dnl"
+ fi
+done
+
+if [ -z "$sflag" ]
+then
+ echo "define(\`confMAPDEF', \`$mapdef' confMAPDEF)dnl"
+ echo "define(\`confLIBS', \`$libs' confLIBS)dnl"
+fi
+
+if [ ! -z "`$SHELL $find_prog ranlib`" ]
+then
+ echo "define(\`confRANLIB', \`ranlib')dnl"
+fi
+
+roff_progs="groff nroff"
+for roff_prog in $roff_progs
+do
+ if [ ! -z "`$SHELL $find_prog $roff_prog`" ]
+ then
+ found_roff=$roff_prog
+ break;
+ fi
+done
+
+case $found_roff
+in
+ groff)
+ echo "ifdef(\`confNROFF',,\`define(\`confNROFF', \`$found_roff -Tascii')')dnl"
+ ;;
+ nroff)
+ echo "ifdef(\`confNROFF',,\`define(\`confNROFF', \`$found_roff')')dnl"
+ ;;
+ *)
+ echo "ifdef(\`confNROFF',,\`define(\`confNO_MAN_BUILD')')dnl"
+ ;;
+esac
+
diff --git a/devtools/bin/find_in_path.sh b/devtools/bin/find_in_path.sh
new file mode 100755
index 000000000000..e64ceea99ab8
--- /dev/null
+++ b/devtools/bin/find_in_path.sh
@@ -0,0 +1,19 @@
+#! /bin/sh
+#
+# $Id: find_in_path.sh,v 8.2 1999/09/23 20:42:22 gshapiro Exp $
+#
+EX_OK=0
+EX_NOT_FOUND=1
+
+ifs="$IFS"; IFS="${IFS}:"
+for dir in $PATH /usr/5bin /usr/ccs/bin
+do
+ if [ -r $dir/$1 ]
+ then
+ echo $dir/$1
+ exit $EX_OK
+ fi
+done
+IFS=$ifs
+
+exit $EX_NOT_FOUND
diff --git a/devtools/bin/find_m4.sh b/devtools/bin/find_m4.sh
new file mode 100755
index 000000000000..d83073715a7d
--- /dev/null
+++ b/devtools/bin/find_m4.sh
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+# Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# $Id: find_m4.sh,v 8.13 2001/01/23 01:47:45 gshapiro Exp $
+#
+
+# Try to find a working M4 program.
+# If $M4 is already set, we use it, otherwise we prefer GNU m4.
+
+EX_UNAVAILABLE=69
+
+test="ifdef(\`pushdef', \`',
+\`errprint(\`You need a newer version of M4, at least as new as System V or GNU')
+include(NoSuchFile)')
+define(\`BadNumber', \`10')
+ifdef(\`BadNumber', \`',
+\`errprint(\`This version of m4 is broken: trailing zero problem')
+include(NoSuchFile)')
+define(\`LongList', \` assert.c debug.c exc.c heap.c match.c rpool.c strdup.c strerror.c strl.c clrerr.c fclose.c feof.c ferror.c fflush.c fget.c fpos.c findfp.c flags.c fopen.c fprintf.c fpurge.c fput.c fread.c fscanf.c fseek.c fvwrite.c fwalk.c fwrite.c get.c makebuf.c put.c refill.c rewind.c rget.c setvbuf.c smstdio.c snprintf.c sscanf.c stdio.c strio.c syslogio.c ungetc.c vasprintf.c vfprintf.c vfscanf.c vprintf.c vsnprintf.c vsprintf.c vsscanf.c wbuf.c wsetup.c stringf.c xtrap.c strto.c test.c path.c strcasecmp.c signal.c clock.c config.c shm.c ')
+define(\`SameList', \`substr(LongList, 0, index(LongList, \`.'))\`'substr(LongList, index(LongList, \`.'))')
+ifelse(len(LongList), len(SameList), \`',
+\`errprint(\`This version of m4 is broken: length problem')
+include(NoSuchFile)')"
+
+if [ "$M4" ]
+then
+ err="`(echo "$test" | $M4) 2>&1 >/dev/null`"
+ code=$?
+else
+ firstfound=
+ ifs="$IFS"; IFS="${IFS}:"
+ for m4 in gm4 gnum4 pdm4 m4
+ do
+ for dir in $PATH /usr/5bin /usr/ccs/bin
+ do
+ [ -z "$dir" ] && dir=.
+ if [ -f $dir/$m4 ]
+ then
+ err="`(echo "$test" | $dir/$m4) 2>&1 >/dev/null`"
+ ret=$?
+ if [ $ret -eq 0 -a "X$err" = "X" ]
+ then
+ M4=$dir/$m4
+ code=0
+ break
+ else
+ case "$firstfound:$err" in
+ :*version\ of*)
+ firstfound=$dir/$m4
+ firsterr="$err"
+ firstcode=$ret
+ ;;
+ esac
+ fi
+ fi
+ done
+ [ "$M4" ] && break
+ done
+ IFS="$ifs"
+ if [ ! "$M4" ]
+ then
+ if [ "$firstfound" ]
+ then
+ M4=$firstfound
+ err="$firsterr"
+ code=$firstcode
+ else
+ echo "ERROR: Can not locate an M4 program" >&2
+ exit $EX_UNAVAILABLE
+ fi
+ fi
+fi
+if [ $code -ne 0 ]
+then
+ echo "ERROR: Using M4=$M4: $err" | grep -v NoSuchFile >&2
+ exit $EX_UNAVAILABLE
+elif [ "X$err" != "X" ]
+then
+ echo "WARNING: $err" >&2
+fi
+echo $M4
+exit 0
diff --git a/devtools/bin/install.sh b/devtools/bin/install.sh
new file mode 100755
index 000000000000..59a3771b6dad
--- /dev/null
+++ b/devtools/bin/install.sh
@@ -0,0 +1,134 @@
+#!/bin/sh
+
+# Copyright (c) 1998, 1999, 2001 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# $Id: install.sh,v 8.14 2001/03/16 23:37:31 gshapiro Exp $
+
+# Set default program
+program=mv
+owner=""
+group=""
+mode=""
+strip=""
+
+# chown program -- ultrix keeps it in /etc/chown and /usr/etc/chown
+if [ -f /etc/chown ]
+then
+ chown=/etc/chown
+elif [ -f /usr/etc/chown ]
+then
+ chown=/usr/etc/chown
+else
+ chown=chown
+fi
+
+# Check arguments
+while [ ! -z "$1" ]
+do
+ case $1
+ in
+ -o) owner=$2
+ shift; shift
+ ;;
+
+ -g) group=$2
+ shift; shift
+ ;;
+
+ -m) mode=$2
+ shift; shift
+ ;;
+
+ -c) program=cp
+ shift
+ ;;
+
+ -s) strip="strip"
+ shift
+ ;;
+
+ -*) echo $0: Unknown option $1
+ exit 1
+ ;;
+
+ *) break
+ ;;
+ esac
+done
+
+# Check source file
+if [ -z "$1" ]
+then
+ echo "Source file required" >&2
+ exit 1
+elif [ -f $1 -o $1 = /dev/null ]
+then
+ src=$1
+else
+ echo "Source file must be a regular file or /dev/null" >&2
+ exit 1
+fi
+
+# Check destination
+if [ -z "$2" ]
+then
+ echo "Destination required" >&2
+ exit 1
+elif [ -d $2 ]
+then
+ srcfile=`basename $src`
+ dst=$2/$srcfile
+else
+ dst=$2
+fi
+
+# Do install operation
+$program $src $dst
+if [ $? != 0 ]
+then
+ exit 1
+fi
+
+# Strip if requested
+if [ ! -z "$strip" ]
+then
+ $strip $dst
+fi
+
+# Change owner if requested
+if [ ! -z "$owner" ]
+then
+ $chown $owner $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+# Change group if requested
+if [ ! -z "$group" ]
+then
+ chgrp $group $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+# Change mode if requested
+if [ ! -z "$mode" ]
+then
+ chmod $mode $dst
+ if [ $? != 0 ]
+ then
+ exit 1
+ fi
+fi
+
+exit 0
diff --git a/doc/op/op.ps b/doc/op/op.ps
new file mode 100644
index 000000000000..4e5ceab89e86
--- /dev/null
+++ b/doc/op/op.ps
@@ -0,0 +1,9956 @@
+%!PS-Adobe-3.0
+%%Creator: groff version 1.19
+%%CreationDate: Fri May 2 20:38:42 2008
+%%DocumentNeededResources: font Times-Bold
+%%+ font Times-Roman
+%%+ font Times-Italic
+%%+ font Symbol
+%%DocumentSuppliedResources: procset grops 1.19 0
+%%Pages: 108
+%%PageOrder: Ascend
+%%DocumentMedia: Default 612 792 0 () ()
+%%Orientation: Portrait
+%%EndComments
+%%BeginDefaults
+%%PageMedia: Default
+%%EndDefaults
+%%BeginProlog
+%%BeginResource: procset grops 1.19 0
+/setpacking where{
+pop
+currentpacking
+true setpacking
+}if
+/grops 120 dict dup begin
+/SC 32 def
+/A/show load def
+/B{0 SC 3 -1 roll widthshow}bind def
+/C{0 exch ashow}bind def
+/D{0 exch 0 SC 5 2 roll awidthshow}bind def
+/E{0 rmoveto show}bind def
+/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
+/G{0 rmoveto 0 exch ashow}bind def
+/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/I{0 exch rmoveto show}bind def
+/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
+/K{0 exch rmoveto 0 exch ashow}bind def
+/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/M{rmoveto show}bind def
+/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
+/O{rmoveto 0 exch ashow}bind def
+/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/Q{moveto show}bind def
+/R{moveto 0 SC 3 -1 roll widthshow}bind def
+/S{moveto 0 exch ashow}bind def
+/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
+/SF{
+findfont exch
+[exch dup 0 exch 0 exch neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/MF{
+findfont
+[5 2 roll
+0 3 1 roll
+neg 0 0]makefont
+dup setfont
+[exch/setfont cvx]cvx bind def
+}bind def
+/level0 0 def
+/RES 0 def
+/PL 0 def
+/LS 0 def
+/MANUAL{
+statusdict begin/manualfeed true store end
+}bind def
+/PLG{
+gsave newpath clippath pathbbox grestore
+exch pop add exch pop
+}bind def
+/BP{
+/level0 save def
+1 setlinecap
+1 setlinejoin
+72 RES div dup scale
+LS{
+90 rotate
+}{
+0 PL translate
+}ifelse
+1 -1 scale
+}bind def
+/EP{
+level0 restore
+showpage
+}bind def
+/DA{
+newpath arcn stroke
+}bind def
+/SN{
+transform
+.25 sub exch .25 sub exch
+round .25 add exch round .25 add exch
+itransform
+}bind def
+/DL{
+SN
+moveto
+SN
+lineto stroke
+}bind def
+/DC{
+newpath 0 360 arc closepath
+}bind def
+/TM matrix def
+/DE{
+TM currentmatrix pop
+translate scale newpath 0 0 .5 0 360 arc closepath
+TM setmatrix
+}bind def
+/RC/rcurveto load def
+/RL/rlineto load def
+/ST/stroke load def
+/MT/moveto load def
+/CL/closepath load def
+/Fr{
+setrgbcolor fill
+}bind def
+/setcmykcolor where{
+pop
+/Fk{
+setcmykcolor fill
+}bind def
+}if
+/Fg{
+setgray fill
+}bind def
+/FL/fill load def
+/LW/setlinewidth load def
+/Cr/setrgbcolor load def
+/setcmykcolor where{
+pop
+/Ck/setcmykcolor load def
+}if
+/Cg/setgray load def
+/RE{
+findfont
+dup maxlength 1 index/FontName known not{1 add}if dict begin
+{
+1 index/FID ne{def}{pop pop}ifelse
+}forall
+/Encoding exch def
+dup/FontName exch def
+currentdict end definefont pop
+}bind def
+/DEFS 0 def
+/EBEGIN{
+moveto
+DEFS begin
+}bind def
+/EEND/end load def
+/CNT 0 def
+/level1 0 def
+/PBEGIN{
+/level1 save def
+translate
+div 3 1 roll div exch scale
+neg exch neg exch translate
+0 setgray
+0 setlinecap
+1 setlinewidth
+0 setlinejoin
+10 setmiterlimit
+[]0 setdash
+/setstrokeadjust where{
+pop
+false setstrokeadjust
+}if
+/setoverprint where{
+pop
+false setoverprint
+}if
+newpath
+/CNT countdictstack def
+userdict begin
+/showpage{}def
+/setpagedevice{}def
+}bind def
+/PEND{
+clear
+countdictstack CNT sub{end}repeat
+level1 restore
+}bind def
+end def
+/setpacking where{
+pop
+setpacking
+}if
+%%EndResource
+%%BeginFeature: *PageSize Default
+<< /PageSize [ 612 792 ] /ImagingBBox null >> setpagedevice
+%%EndFeature
+%%IncludeResource: font Times-Bold
+%%IncludeResource: font Times-Roman
+%%IncludeResource: font Times-Italic
+%%IncludeResource: font Symbol
+grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
+def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron
+/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
+/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
+/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
+/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
+/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
+/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
+/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
+/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
+/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
+/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
+/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
+/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
+/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
+/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
+/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
+/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
+/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
+/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
+/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
+/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
+/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
+/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
+/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
+/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
+/Times-Italic@0 ENC0/Times-Italic RE/Times-Roman@0 ENC0/Times-Roman RE
+/Times-Bold@0 ENC0/Times-Bold RE
+%%EndProlog
+%%Page: 1 1
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 16/Times-Bold@0 SF(SENDMAIL)236.833 143.4 Q/F1 10/Times-Bold@0 SF
+(TM)-8 I/F2 12/Times-Bold@0 SF(INST)170.172 172.2 Q(ALLA)-1.08 E
+(TION AND OPERA)-1.14 E(TION GUIDE)-1.14 E/F3 10/Times-Roman@0 SF
+(Eric Allman)263.42 196.2 Q(Claus Assmann)256.75 208.2 Q(Gre)244.75
+220.2 Q(gory Neil Shapiro)-.15 E(Sendmail, Inc.)258.975 232.2 Q -1.11
+(Ve)260.225 256.2 S(rsion 8.741)1.11 E -.15(Fo)234.465 280.2 S 2.5(rS)
+.15 G(endmail V)-2.5 E(ersion 8.14)-1.11 E/F4 10/Times-Italic@0 SF
+(Sendmail)97 324.6 Q/F5 8/Times-Roman@0 SF(TM)-5 I F3 .1
+(implements a general purpose internetw)2.6 5 N .1(ork mail routing f)
+-.1 F .1(acility under the UNIX\256 oper)-.1 F(-)-.2 E .017
+(ating system.)72 336.6 R .017(It is not tied to an)5.017 F 2.517(yo)
+-.15 G .017(ne transport protocol \212 its function may be lik)-2.517 F
+.017(ened to a crossbar switch,)-.1 F 1.036
+(relaying messages from one domain into another)72 348.6 R 6.036(.I)-.55
+G 3.536(nt)-6.036 G 1.036
+(he process, it can do a limited amount of message)-3.536 F .604(header\
+ editing to put the message into a format that is appropriate for the r\
+ecei)72 360.6 R .604(ving domain.)-.25 F .604(All of this is)5.604 F
+(done under the control of a con\214guration \214le.)72 372.6 Q .711
+(Due to the requirements of \215e)97 388.8 R .711(xibility for)-.15 F F4
+(sendmail)3.211 E F3 3.211(,t)C .71
+(he con\214guration \214le can seem some)-3.211 F .71(what unap-)-.25 F
+2.893(proachable. Ho)72 400.8 R(we)-.25 E -.15(ve)-.25 G 1.193 -.4(r, t)
+.15 H .393(here are only a fe).4 F 2.893(wb)-.25 G .394
+(asic con\214gurations for most sites, for which standard con\214gu-)
+-2.893 F .646(ration \214les ha)72 412.8 R .946 -.15(ve b)-.2 H .646
+(een supplied.).15 F .645(Most other con\214gurations can be b)5.646 F
+.645(uilt by adjusting an e)-.2 F .645(xisting con\214gura-)-.15 F
+(tion \214le incrementally)72 424.8 Q(.)-.65 E F4(Sendmail)97 441 Q F3
+.903(is based on RFC 821 \(Simple Mail T)3.403 F .904
+(ransport Protocol\), RFC 822 \(Internet Mail Headers)-.35 F -.15(Fo)72
+453 S 2.518(rmat\), RFC 974 \(MX routing\), RFC 1123 \(Internet Host Re\
+quirements\), RFC 1413 \(Identi\214cation).15 F(serv)72 465 Q 1.868(er\
+\), RFC 1652 \(SMTP 8BITMIME Extension\), RFC 1869 \(SMTP Service Exten\
+sions\), RFC 1870)-.15 F .671
+(\(SMTP SIZE Extension\), RFC 1891 \(SMTP Deli)72 477 R -.15(ve)-.25 G
+.671(ry Status Noti\214cations\), RFC 1892 \(Multipart/Report\),).15 F
+1.273(RFC 1893 \(Enhanced Mail System Status Codes\), RFC 1894 \(Deli)72
+489 R -.15(ve)-.25 G 1.273(ry Status Noti\214cations\), RFC 1985).15 F
+.639(\(SMTP Service Extension for Remote Message Queue Starting\), RFC \
+2033 \(Local Message T)72 501 R(ransmission)-.35 E .242(Protocol\), RFC\
+ 2034 \(SMTP Service Extension for Returning Enhanced Error Codes\), RF\
+C 2045 \(MIME\),)72 513 R .283(RFC 2476 \(Message Submission\), RFC 248\
+7 \(SMTP Service Extension for Secure SMTP o)72 525 R -.15(ve)-.15 G
+2.782(rT).15 G .282(LS\), RFC)-2.782 F .118(2554 \(SMTP Service Extensi\
+on for Authentication\), RFC 2821 \(Simple Mail T)72 537 R .118
+(ransfer Protocol\), RFC 2822)-.35 F .595(\(Internet Message F)72 549 R
+.595(ormat\), RFC 2852 \(Deli)-.15 F -.15(ve)-.25 G 3.095(rB).15 G 3.095
+(yS)-3.095 G .595(MTP Service Extension\), and RFC 2920 \(SMTP Ser)
+-3.095 F(-)-.2 E .608(vice Extension for Command Pipelining\).)72 561 R
+(Ho)5.608 E(we)-.25 E -.15(ve)-.25 G 1.409 -.4(r, s).15 H(ince).4 E F4
+(sendmail)3.109 E F3 .609(is designed to w)3.109 F .609
+(ork in a wider w)-.1 F(orld,)-.1 E(in man)72 573 Q 2.5(yc)-.15 G
+(ases it can be con\214gured to e)-2.5 E(xceed these protocols.)-.15 E
+(These cases are described herein.)5 E(Although)97 589.2 Q F4(sendmail)
+3.548 E F3 1.047(is intended to run without the need for monitoring, it\
+ has a number of features)3.548 F 1.972(that may be used to monitor or \
+adjust the operation under unusual circumstances.)72 601.2 R 1.972
+(These features are)6.972 F(described.)72 613.2 Q .817
+(Section one describes ho)97 629.4 R 3.317(wt)-.25 G 3.317(od)-3.317 G
+3.317(oa)-3.317 G(basic)-.001 E F4(sendmail)3.316 E F3 3.316
+(installation. Section)3.316 F(tw)3.316 E 3.316(oe)-.1 G .816
+(xplains the day-to-day)-3.466 F .282(information you should kno)72
+641.4 R 2.782(wt)-.25 G 2.782(om)-2.782 G .282
+(aintain your mail system.)-2.782 F .282(If you ha)5.282 F .583 -.15
+(ve a r)-.2 H(elati).15 E -.15(ve)-.25 G .283(ly normal site, these tw)
+.15 F(o)-.1 E .635(sections should contain suf)72 653.4 R .635
+(\214cient information for you to install)-.25 F F4(sendmail)3.135 E F3
+.634(and k)3.135 F .634(eep it happ)-.1 F 4.434 -.65(y. S)-.1 H .634
+(ection three).65 F .509(has information re)72 665.4 R -.05(ga)-.15 G
+.509(rding the command line ar).05 F 3.009(guments. Section)-.18 F .51
+(four describes some parameters that may)3.009 F .32 LW 76 675 72 675 DL
+80 675 76 675 DL 84 675 80 675 DL 88 675 84 675 DL 92 675 88 675 DL 96
+675 92 675 DL 100 675 96 675 DL 104 675 100 675 DL 108 675 104 675 DL
+112 675 108 675 DL 116 675 112 675 DL 120 675 116 675 DL 124 675 120 675
+DL 128 675 124 675 DL 132 675 128 675 DL 136 675 132 675 DL 140 675 136
+675 DL 144 675 140 675 DL 148 675 144 675 DL 152 675 148 675 DL 156 675
+152 675 DL 160 675 156 675 DL 164 675 160 675 DL 168 675 164 675 DL 172
+675 168 675 DL 176 675 172 675 DL 180 675 176 675 DL 184 675 180 675 DL
+188 675 184 675 DL 192 675 188 675 DL 196 675 192 675 DL 200 675 196 675
+DL 204 675 200 675 DL 208 675 204 675 DL 212 675 208 675 DL 216 675 212
+675 DL/F6 8/Times-Bold@0 SF(DISCLAIMER:)93.6 687 Q F5
+(This documentation is under modi\214cation.)2 E
+(Sendmail is a trademark of Sendmail, Inc.)93.6 699 Q F1
+(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-1)200.86 E 0
+Cg EP
+%%Page: 2 2
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 198.36(SMM:08-2 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .363
+(be safely tweak)72 96 R 2.862(ed. Section)-.1 F<8c76>2.862 E 2.862(ec)
+-.15 G .362
+(ontains the nitty-gritty information about the con\214guration \214le.)
+-2.862 F .362(This sec-)5.362 F .142
+(tion is for masochists and people who must write their o)72 108 R .143
+(wn con\214guration \214le.)-.25 F .143(Section six describes con\214g-)
+5.143 F .228(uration that can be done at compile time.)72 120 R .227
+(The appendix)5.227 F .227(es gi)-.15 F .527 -.15(ve a b)-.25 H .227
+(rief b).15 F .227(ut detailed e)-.2 F .227(xplanation of a number)-.15
+F(of features not described in the rest of the paper)72 132 Q(.)-.55 E 0
+Cg EP
+%%Page: 7 3
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-7)200.86 E 2.5(1. B)72 96 R(ASIC INST)-.3 E(ALLA)-.9 E(TION)-.95
+E/F1 10/Times-Roman@0 SF .126(There are tw)112 112.2 R 2.626(ob)-.1 G
+.126(asic steps to installing)-2.626 F/F2 10/Times-Italic@0 SF(sendmail)
+2.626 E F1 5.126(.F)C .126(irst, you ha)-5.126 F .426 -.15(ve t)-.2 H
+2.626(oc).15 G .127(ompile and install the binary)-2.626 F(.)-.65 E(If)
+87 124.2 Q F2(sendmail)2.889 E F1 .388(has already been ported to your \
+operating system that should be simple.)2.889 F .388(Second, you must)
+5.388 F -.2(bu)87 136.2 S .278(ild a run-time con\214guration \214le.).2
+F .278(This is a \214le that)5.278 F F2(sendmail)2.778 E F1 .279
+(reads when it starts up that describes the)2.778 F .532(mailers it kno)
+87 148.2 R .532(ws about, ho)-.25 F 3.031(wt)-.25 G 3.031(op)-3.031 G
+.531(arse addresses, ho)-3.031 F 3.031(wt)-.25 G 3.031(or)-3.031 G -.25
+(ew)-3.031 G .531(rite the message header).25 F 3.031(,a)-.4 G .531
+(nd the settings of)-3.031 F -.25(va)87 160.2 S .868(rious options.).25
+F .868(Although the con\214guration \214le can be quite comple)5.868 F
+.869(x, a con\214guration can usually be)-.15 F -.2(bu)87 172.2 S 1.112
+(ilt using an M4-based con\214guration language.).2 F 1.112
+(Assuming you ha)6.112 F 1.411 -.15(ve t)-.2 H 1.111(he standard).15 F
+F2(sendmail)3.611 E F1(distrib)3.611 E(u-)-.2 E(tion, see)87 184.2 Q F2
+(cf/README)2.5 E F1(for further information.)2.5 E .192
+(The remainder of this section will describe the installation of)112
+200.4 R F2(sendmail)2.692 E F1 .192(assuming you can use one)2.692 F
+1.432(of the e)87 212.4 R 1.432(xisting con\214gurations and that the s\
+tandard installation parameters are acceptable.)-.15 F 1.431(All path-)
+6.431 F .976(names and e)87 224.4 R .976(xamples are gi)-.15 F -.15(ve)
+-.25 G 3.476(nf).15 G .976(rom the root of the)-3.476 F F2(sendmail)
+3.476 E F1 .977(subtree, normally)3.476 F F2(/usr/sr)3.477 E(c/usr)-.37
+E(.sbin/send-)-1.11 E(mail)87 236.4 Q F1(on 4.4BSD-based systems.)2.5 E
+.166(Continue with the ne)112 252.6 R .166(xt section if you need/w)-.15
+F .166(ant to compile)-.1 F F2(sendmail)2.666 E F1 2.665(yourself. If)
+2.665 F .165(you ha)2.665 F .465 -.15(ve a r)-.2 H(un-).15 E(ning binar\
+y already on your system, you should probably skip to section 1.2.)87
+264.6 Q F0 2.5(1.1. Compiling)87 288.6 R(Sendmail)2.5 E F1(All)127 304.8
+Q F2(sendmail)2.57 E F1 .07(source is in the)2.57 F F2(sendmail)2.571 E
+F1(subdirectory)2.571 E 5.071(.T)-.65 G 2.571(oc)-5.871 G .071
+(ompile sendmail, \231cd\232 into the)-2.571 F F2(send-)2.571 E(mail)102
+316.8 Q F1(directory and type)2.5 E(./Build)142 333 Q 1.411
+(This will lea)102 349.2 R 1.711 -.15(ve t)-.2 H 1.411
+(he binary in an appropriately named subdirectory).15 F 3.911(,e)-.65 G
+1.41(.g., obj.BSD-OS.2.1.i386.)-3.911 F(It)6.41 E -.1(wo)102 361.2 S
+(rks for multiple object v).1 E
+(ersions compiled out of the same directory)-.15 E(.)-.65 E F0 2.5
+(1.1.1. T)102 385.2 R(weaking the Build In)-.74 E -.1(vo)-.4 G(cation).1
+E F1 -1.1(Yo)142 401.4 S 2.904(uc)1.1 G .404(an gi)-2.904 F .704 -.15
+(ve p)-.25 H .404(arameters on the).15 F F2(Build)2.905 E F1 2.905
+(command. In)2.905 F .405(most cases these are only used when)2.905 F
+(the)117 413.4 Q F2(obj.*)2.5 E F1(directory is \214rst created.)5 E 1.6
+-.8(To r)5 H(estart from scratch, use).8 E F2(-c)2.5 E F1 5(.T)C
+(hese commands include:)-5 E<ad4c>117 429.6 Q F2(libdir)2.5 E(s)-.1 E F1
+2.5(Al)153 441.6 S(ist of directories to search for libraries.)-2.5 E
+<ad49>117 457.8 Q F2(incdir)2.5 E(s)-.1 E F1 2.5(Al)153 469.8 S
+(ist of directories to search for include \214les.)-2.5 E<ad45>117 486 Q
+F2(en)2.5 E(var)-.4 E F1(=)A F2(value)A F1(Set an en)153 498 Q
+(vironment v)-.4 E(ariable to an indicated)-.25 E F2(value)2.5 E F1
+(before compiling.)2.5 E 23.42(\255c Create)117 514.2 R 2.5(an)2.5 G
+-.25(ew)-2.5 G F2(obj.*)2.75 E F1(tree before running.)5 E<ad66>117
+530.4 Q F2(sitecon\214g)2.5 E F1 2.193
+(Read the indicated site con\214guration \214le.)153 542.4 R 2.192
+(If this parameter is not speci\214ed,)7.193 F F2(Build)4.692 E F1
+(includes)153 554.4 Q F2(all)11.511 E F1 9.011(of the \214les)11.511 F
+F2($B)11.512 E(UILDT)-.1 E(OOLS/Site/site)-.18 E(.$oscf)-.15 E(.m4)-.15
+E F1(and)11.512 E F2($B)11.512 E(UILD-)-.1 E -.18(TO)153 566.4 S
+(OLS/Site/site).18 E(.con\214g)-.15 E(.m4)-.15 E F1 2.985(,w)C .485
+(here $B)-2.985 F(UILDT)-.1 E .485(OOLS is normally)-.18 F F2(../de)
+2.985 E(vtools)-.15 E F1 .485(and $oscf is)2.985 F .678
+(the same name as used on the)153 578.4 R F2(obj.*)3.178 E F1(directory)
+5.678 E 5.678(.S)-.65 G .678(ee belo)-5.678 F 3.178(wf)-.25 G .678
+(or a description of the site)-3.178 F(con\214guration \214le.)153 590.4
+Q 22.3(\255S Skip)117 606.6 R(auto-con\214guration.)4.421 E F2(Build)
+6.921 E F1 1.921(will a)4.421 F -.2(vo)-.2 G 1.921
+(id auto-detecting libraries if this is set.).2 F(All)6.92 E(libraries \
+and map de\214nitions must be speci\214ed in the site con\214guration \
+\214le.)153 618.6 Q 5.606(Most other parameters are passed to the)117
+634.8 R F2(mak)8.107 E(e)-.1 E F1 5.607(program; for details see)8.107 F
+F2($B)8.107 E(UILD-)-.1 E -.18(TO)117 646.8 S(OLS/README).18 E F1(.)A F0
+2.5(1.1.2. Cr)102 670.8 R(eating a Site Con\214guration File)-.18 E F1
+1.09(\(This section is not yet complete.)142 687 R -.15(Fo)6.089 G 3.589
+(rn).15 G -.25(ow)-3.589 G 3.589(,s)-.4 G 1.089(ee the \214le de)-3.589
+F 1.089(vtools/README for details.\))-.25 F(See sendmail/README for v)
+117 699 Q(arious compilation \215ags that can be set.)-.25 E 0 Cg EP
+%%Page: 8 4
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 198.36(SMM:08-8 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(1.1.3. T)102 96 R
+(weaking the Mak)-.74 E(e\214le)-.1 E/F1 10/Times-Italic@0 SF(Sendmail)
+142 112.2 Q/F2 10/Times-Roman@0 SF 2.18(supports tw)4.68 F 4.681(od)-.1
+G(if)-4.681 E 2.181(ferent formats for the local \(on disk\) v)-.25 F
+2.181(ersion of databases,)-.15 F(notably the)117 124.2 Q F1(aliases)2.5
+E F2 2.5(database. At)2.5 F
+(least one of these should be de\214ned if at all possible.)2.5 E 39.5
+(NDBM The)117 140.4 R -.74(``)3.167 G(ne).74 E 3.167(wD)-.25 G(BM')
+-3.167 E 3.167('f)-.74 G .667(ormat, a)-3.167 F -.25(va)-.2 G .666
+(ilable on nearly all systems around today).25 F 5.666(.T)-.65 G(his)
+-5.666 E -.1(wa)189 152.4 S 3.54(st).1 G 1.041
+(he preferred format prior to 4.4BSD.)-3.54 F 1.041(It allo)6.041 F
+1.041(ws such comple)-.25 F 3.541(xt)-.15 G 1.041(hings as)-3.541 F
+(multiple databases and closing a currently open database.)189 164.4 Q
+32.84(NEWDB The)117 180.6 R(Berk)3.788 E(ele)-.1 E 3.788(yD)-.15 G 3.788
+(Bp)-3.788 G 3.788(ackage. If)-3.788 F 1.288(you ha)3.788 F 1.588 -.15
+(ve t)-.2 H 1.288(his, use it.).15 F 1.287(It allo)6.287 F 1.287
+(ws long records,)-.25 F 2.56
+(multiple open databases, real in-memory caching, and so forth.)189
+192.6 R -1.1(Yo)7.56 G 5.06(uc)1.1 G(an)-5.06 E .469
+(de\214ne this in conjunction with)189 204.6 R/F3 9/Times-Roman@0 SF
+(NDBM)2.969 E F2 2.969(;i)C 2.968(fy)-2.969 G .468
+(ou do, old alias databases are read,)-2.968 F -.2(bu)189 216.6 S 3.108
+(tw).2 G .608(hen a ne)-3.108 F 3.108(wd)-.25 G .608
+(atabase is created it will be in NEWDB format.)-3.108 F .608
+(As a nasty)5.608 F 1.804(hack, if you ha)189 228.6 R 2.104 -.15(ve N)
+-.2 H 1.804(EWDB, NDBM, and NIS de\214ned, and if the alias \214le).15 F
+.123(name includes the substring \231/yp/\232,)189 240.6 R F1(sendmail)
+2.623 E F2 .123(will create both ne)2.623 F 2.624(wa)-.25 G .124
+(nd old v)-2.624 F(er)-.15 E(-)-.2 E 1.08
+(sions of the alias \214le during a)189 252.6 R F1(ne)3.58 E(walias)-.15
+E F2 3.58(command. This)3.58 F 1.08(is required because)3.58 F .845
+(the Sun NIS/YP system reads the DBM v)189 264.6 R .845
+(ersion of the alias \214le.)-.15 F(It')5.845 E 3.345(su)-.55 G .845
+(gly as)-3.345 F(sin, b)189 276.6 Q(ut it w)-.2 E(orks.)-.1 E 1.112
+(If neither of these are de\214ned,)117 292.8 R F1(sendmail)3.612 E F2
+1.112(reads the alias \214le into memory on e)3.612 F -.15(ve)-.25 G
+1.112(ry in).15 F -.2(vo)-.4 G(cation.).2 E 1.042(This can be slo)117
+304.8 R 3.542(wa)-.25 G 1.043(nd should be a)-3.542 F -.2(vo)-.2 G 3.543
+(ided. There).2 F 1.043(are also se)3.543 F -.15(ve)-.25 G 1.043
+(ral methods for remote database).15 F(access:)117 316.8 Q(LD)117 333 Q
+43.79(AP Lightweight)-.4 F(Directory Access Protocol.)2.5 E 53.39
+(NIS Sun')117 349.2 R 2.5(sN)-.55 G(etw)-2.5 E
+(ork Information Services \(formerly YP\).)-.1 E 28.94(NISPLUS Sun')117
+365.4 R 2.5(sN)-.55 G(IS+ services.)-2.5 E 26.73(NETINFO NeXT')117 381.6
+R 2.5(sN)-.55 G(etInfo service.)-2.5 E 32.84(HESIOD Hesiod)117 397.8 R
+(service \(from Athena\).)2.5 E .086
+(Other compilation \215ags are set in)117 414 R F1(conf)2.586 E(.h)-.15
+E F2 .085(and should be prede\214ned for you unless you are porting)
+2.586 F(to a ne)117 426 Q 2.5(we)-.25 G -.4(nv)-2.5 G 2.5(ironment. F).4
+F(or more options see)-.15 E F1(sendmail/README)2.5 E F2(.)A F0 2.5
+(1.1.4. Compilation)102 450 R(and installation)2.5 E F2 .308
+(After making the local system con\214guration described abo)142 466.2 R
+-.15(ve)-.15 G 2.809(,Y).15 G .309(ou should be able to com-)-3.909 F
+(pile and install the system.)117 478.2 Q
+(The script \231Build\232 is the best approach on most systems:)5 E
+(./Build)157 494.4 Q(This will use)117 510.6 Q F1(uname)2.5 E F2
+(\(1\) to create a custom Mak)A(e\214le for your en)-.1 E(vironment.)-.4
+E(If you are installing in the standard places, you should be able to i\
+nstall using)142 526.8 Q(./Build install)157 543 Q 3.346(This should in\
+stall the binary in /usr/sbin and create links from /usr/bin/ne)117
+559.2 R -.1(wa)-.25 G 3.345(liases and).1 F .28
+(/usr/bin/mailq to /usr/sbin/sendmail.)117 571.2 R .281
+(On most systems it will also format and install man pages.)5.28 F 1.056
+(Notice: as of v)117 583.2 R 1.056(ersion 8.12)-.15 F F1(sendmail)3.556
+E F2 1.056(will no longer be installed set-user)3.556 F 1.056
+(-ID root by def)-.2 F 3.556(ault. If)-.1 F(you really w)117 595.2 Q
+(ant to use the old method, you can specify it as tar)-.1 E(get:)-.18 E
+(./Build install-set-user)157 611.4 Q(-id)-.2 E F0 2.5
+(1.2. Con\214guration)87 639.6 R(Files)2.5 E F1(Sendmail)127 655.8 Q F2
+2.079(cannot operate without a con\214guration \214le.)4.579 F 2.079
+(The con\214guration de\214nes the mail)7.079 F(deli)102 667.8 Q -.15
+(ve)-.25 G .889(ry mechanisms understood at this site, ho).15 F 3.389
+(wt)-.25 G 3.389(oa)-3.389 G .889(ccess them, ho)-3.389 F 3.388(wt)-.25
+G 3.388(of)-3.388 G(orw)-3.388 E .888(ard email to remote)-.1 F .088
+(mail systems, and a number of tuning parameters.)102 679.8 R .088
+(This con\214guration \214le is detailed in the later por)5.088 F(-)-.2
+E(tion of this document.)102 691.8 Q(The)127 708 Q F1(sendmail)2.764 E
+F2 .264(con\214guration can be daunting at \214rst.)2.764 F .264(The w)
+5.264 F .264(orld is comple)-.1 F .264(x, and the mail con-)-.15 F .108
+(\214guration re\215ects that.)102 720 R .108(The distrib)5.108 F .109
+(ution includes an m4-based con\214guration package that hides a lot)-.2
+F 0 Cg EP
+%%Page: 9 5
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-9)200.86 E/F1 10/Times-Roman@0 SF(of the comple)102 96 Q(xity)
+-.15 E 5(.S)-.65 G(ee)-5 E/F2 10/Times-Italic@0 SF(cf/README)2.5 E F1
+(for details.)2.5 E .658(Our con\214guration \214les are processed by)
+127 112.2 R F2(m4)3.158 E F1 .658(to f)3.158 F .657
+(acilitate local customization; the directory)-.1 F F2(cf)3.157 E F1
+.396(of the)102 124.2 R F2(sendmail)2.896 E F1(distrib)2.896 E .396
+(ution directory contains the source \214les.)-.2 F .396
+(This directory contains se)5.396 F -.15(ve)-.25 G .397(ral sub-).15 F
+(directories:)102 136.2 Q 61.73(cf Both)102 152.4 R .56
+(site-dependent and site-independent descriptions of hosts.)3.06 F .56
+(These can be lit-)5.56 F .445(eral host names \(e.g., \231ucb)174 164.4
+R -.25(va)-.15 G .445(x.mc\232\) when the hosts are g).25 F(ate)-.05 E
+-.1(wa)-.25 G .445(ys or more general).1 F .535(descriptions \(such as \
+\231generic-solaris2.mc\232 as a general description of an SMTP-)174
+176.4 R .93(connected host running Solaris 2.x.)174 188.4 R .93
+(Files ending)5.93 F F0(.mc)3.43 E F1(\(`)3.43 E .93
+(`M4 Con\214guration')-.74 F .93('\) are)-.74 F 1.785
+(the input descriptions; the output is in the corresponding)174 200.4 R
+F0(.cf)4.285 E F1 4.285(\214le. The)4.285 F(general)4.285 E
+(structure of these \214les is described belo)174 212.4 Q -.65(w.)-.25 G
+39.5(domain Site-dependent)102 228.6 R .428(subdomain descriptions.)
+2.928 F .428(These are tied to the w)5.428 F .428(ay your or)-.1 F -.05
+(ga)-.18 G(niza-).05 E .777(tion w)174 240.6 R .777
+(ants to do addressing.)-.1 F -.15(Fo)5.777 G 3.277(re).15 G(xample,)
+-3.427 E F0(domain/CS.Berk)3.276 E(eley)-.1 E(.EDU)-.7 E(.m4)-.5 E F1
+.776(is our)3.276 F 1.188(description for hosts in the CS.Berk)174 252.6
+R(ele)-.1 E -.65(y.)-.15 G 1.188(EDU subdomain.).65 F 1.188
+(These are referenced)6.188 F(using the)174 264.6 Q/F3 9/Times-Roman@0
+SF(DOMAIN)2.5 E F0(m4)2.5 E F1(macro in the)2.5 E F0(.mc)2.5 E F1
+(\214le.)2.5 E 41.74(feature De\214nitions)102 280.8 R .728
+(of speci\214c features that some particular host in your site might w)
+3.229 F(ant.)-.1 E 2.466(These are referenced using the)174 292.8 R F3
+(FEA)4.966 E(TURE)-.999 E F0(m4)4.966 E F1 4.966(macro. An)4.966 F -.15
+(ex)4.967 G 2.467(ample feature is).15 F 1.764
+(use_cw_\214le \(which tells)174 304.8 R F2(sendmail)4.264 E F1 1.763
+(to read an /etc/mail/local-host-names \214le on)4.263 F
+(startup to \214nd the set of local names\).)174 316.8 Q 50.62
+(hack Local)102 333 R 1.886(hacks, referenced using the)4.386 F F3(HA)
+4.386 E(CK)-.36 E F0(m4)4.386 E F1 4.386(macro. T)4.386 F 1.886(ry to a)
+-.35 F -.2(vo)-.2 G 1.886(id these.).2 F(The)6.887 E(point of ha)174 345
+Q(ving them here is to mak)-.2 E 2.5(ei)-.1 G 2.5(tc)-2.5 G
+(lear that the)-2.5 E 2.5(ys)-.15 G(mell.)-2.5 E 56.72
+(m4 Site-independent)102 361.2 R F2(m4)2.538 E F1 .038
+(\(1\) include \214les that ha)B .338 -.15(ve i)-.2 H .038
+(nformation common to all con\214gu-).15 F(ration \214les.)174 373.2 Q
+(This can be thought of as a \231#include\232 directory)5 E(.)-.65 E
+43.95(mailer De\214nitions)102 389.4 R .152
+(of mailers, referenced using the)2.652 F F3(MAILER)2.652 E F0(m4)2.652
+E F1 2.652(macro. The)2.652 F .153(mailer types)2.652 F 1.787
+(that are kno)174 401.4 R 1.787(wn in this distrib)-.25 F 1.787
+(ution are f)-.2 F 1.787(ax, local, smtp, uucp, and usenet.)-.1 F -.15
+(Fo)6.786 G(r).15 E -.15(ex)174 413.4 S(ample, to include support for t\
+he UUCP-based mailers, use \231MAILER\(uucp\)\232.).15 E 43.39
+(ostype De\214nitions)102 429.6 R 1.156(describing v)3.656 F 1.157
+(arious operating system en)-.25 F 1.157(vironments \(such as the loca-)
+-.4 F(tion of support \214les\).)174 441.6 Q
+(These are referenced using the)5 E F3(OSTYPE)2.5 E F0(m4)2.5 E F1
+(macro.)2.5 E 60.61(sh Shell)102 457.8 R(\214les used by the)2.5 E F0
+(m4)2.5 E F1 -.2(bu)2.5 G(ild process.).2 E -1.1(Yo)5 G 2.5(us)1.1 G
+(houldn')-2.5 E 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H(to mess with these.)
+2.7 E 30.61(sitecon\214g Local)102 474 R .251(UUCP connecti)2.751 F .251
+(vity information.)-.25 F .251
+(This directory has been supplanted by the)5.251 F 1.076
+(mailertable feature; an)174 486 R 3.576(yn)-.15 G 1.576 -.25(ew c)
+-3.576 H 1.077(on\214gurations should use that feature to do UUCP).25 F
+(\(and other\) routing.)174 498 Q
+(The use of this directory is deprecated.)5 E .757(If you are in a ne)
+127 514.2 R 3.257(wd)-.25 G .757(omain \(e.g., a compan)-3.257 F .756
+(y\), you will probably w)-.15 F .756(ant to create a cf/domain)-.1 F
+.05(\214le for your domain.)102 526.2 R .051
+(This consists primarily of relay de\214nitions and features you w)5.05
+F .051(ant enabled site-)-.1 F .916(wide: for e)102 538.2 R .916
+(xample, Berk)-.15 F(ele)-.1 E(y')-.15 E 3.416(sd)-.55 G .915
+(omain de\214nition de\214nes relays for BitNET and UUCP)-3.416 F 5.915
+(.T)-1.11 G .915(hese are)-5.915 F 1.519(speci\214c to Berk)102 550.2 R
+(ele)-.1 E 2.819 -.65(y, a)-.15 H 1.519
+(nd should be fully-quali\214ed internet-style domain names.).65 F 1.52
+(Please check to)6.519 F(mak)102 562.2 Q 2.5(ec)-.1 G(ertain the)-2.5 E
+2.5(ya)-.15 G(re reasonable for your domain.)-2.5 E 1.407
+(Subdomains at Berk)127 578.4 R(ele)-.1 E 3.907(ya)-.15 G 1.407
+(re also represented in the cf/domain directory)-3.907 F 6.406(.F)-.65 G
+1.406(or e)-6.556 F 1.406(xample, the)-.15 F .356(domain CS.Berk)102
+590.4 R(ele)-.1 E -.65(y.)-.15 G .356
+(EDU is the Computer Science subdomain, EECS.Berk).65 F(ele)-.1 E -.65
+(y.)-.15 G .356(EDU is the Electri-).65 F 1.278
+(cal Engineering and Computer Sciences subdomain, and S2K.Berk)102 602.4
+R(ele)-.1 E -.65(y.)-.15 G 1.278(EDU is the Sequoia 2000).65 F 4.003
+(subdomain. Y)102 614.4 R 1.503(ou will probably ha)-1.1 F 1.804 -.15
+(ve t)-.2 H 4.004(oa).15 G 1.504
+(dd an entry to this directory to be appropriate for your)-4.004 F
+(domain.)102 626.4 Q -1.1(Yo)127 642.6 S 4.373(uw)1.1 G 1.873(ill ha)
+-4.373 F 2.173 -.15(ve t)-.2 H 4.373(ou).15 G 1.873(se or create)-4.373
+F F0(.mc)4.372 E F1 1.872(\214les in the)4.372 F F2(cf/cf)4.372 E F1
+1.872(subdirectory for your hosts.)4.372 F 1.872(This is)6.872 F
+(detailed in the cf/README \214le.)102 654.6 Q F0 2.5(1.3. Details)87
+678.6 R(of Installation Files)2.5 E F1
+(This subsection describes the \214les that comprise the)127 694.8 Q F2
+(sendmail)2.5 E F1(installation.)2.5 E 0 Cg EP
+%%Page: 10 6
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-10 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(1.3.1. /usr/sbin/sendmail)
+102 96 R/F1 10/Times-Roman@0 SF 1.832(The binary for)142 114.2 R/F2 10
+/Times-Italic@0 SF(sendmail)4.332 E F1 1.832(is located in /usr/sbin)
+4.332 F/F3 7/Times-Roman@0 SF(1)-4 I F1 6.831(.I)4 K 4.331(ts)-6.831 G
+1.831(hould be set-group-ID smmsp as)-4.331 F .644
+(described in sendmail/SECURITY)117 126.2 R 5.644(.F)-1.29 G .644
+(or security reasons, /, /usr)-5.794 F 3.144(,a)-.4 G .644
+(nd /usr/sbin should be o)-3.144 F(wned)-.25 E(by root, mode 0755)117
+140.2 Q F3(2)-4 I F1(.)4 I F0 2.5(1.3.2. /etc/mail/sendmail.cf)102 164.2
+R F1 .89(This is the main con\214guration \214le for)142 182.4 R F2
+(sendmail)3.389 E F3(3)-4 I F1 5.889(.T)4 K .889(his is one of the tw)
+-5.889 F 3.389(on)-.1 G .889(on-library \214le)-3.389 F
+(names compiled into)117 196.4 Q F2(sendmail)2.5 E F3(4)-4 I F1 2.5(,t)4
+K(he other is /etc/mail/submit.cf.)-2.5 E .721
+(The con\214guration \214le is normally created using the distrib)142
+212.6 R .721(ution \214les described abo)-.2 F -.15(ve)-.15 G 5.72(.I)
+.15 G(f)-5.72 E .64(you ha)117 224.6 R .94 -.15(ve a p)-.2 H .64(articu\
+larly unusual system con\214guration you may need to create a special v)
+.15 F(ersion.)-.15 E(The format of this \214le is detailed in later sec\
+tions of this document.)117 236.6 Q F0 2.5(1.3.3. /etc/mail/submit.cf)
+102 260.6 R F1 .911(This is the con\214guration \214le for)142 276.8 R
+F2(sendmail)3.411 E F1 .91
+(when it is used for initial mail submission, in)3.411 F 1.004
+(which case it is also called `)117 288.8 R 1.004
+(`Mail Submission Program')-.74 F 3.504('\()-.74 G 1.005
+(MSP\) in contrast to `)-3.504 F 1.005(`Mail T)-.74 F(ransfer)-.35 E
+(Agent')117 300.8 Q 3.87('\()-.74 G(MT)-3.87 E 3.87(A\). Starting)-.93 F
+1.37(with v)3.87 F 1.37(ersion 8.12,)-.15 F F2(sendmail)3.87 E F1 1.37
+(uses one of tw)3.87 F 3.87(od)-.1 G(if)-3.87 E 1.37
+(ferent con\214guration)-.25 F .051
+(\214les based on its operation mode \(or the ne)117 312.8 R(w)-.25 E F0
+<ad41>2.552 E F1 2.552(option\). F)2.552 F .052
+(or initial mail submission, i.e., if one)-.15 F .952(of the options)117
+324.8 R F0(\255bm)3.452 E F1(\(def)3.452 E(ault\),)-.1 E F0(\255bs)3.451
+E F1 3.451(,o)C(r)-3.451 E F0<ad74>3.451 E F1 .951
+(is speci\214ed, submit.cf is used \(if a)3.451 F -.25(va)-.2 G .951
+(ilable\), for other).25 F 2.28(operations sendmail.cf is used.)117
+336.8 R 2.28(Details can be found in)7.28 F F2(sendmail/SECURITY)4.78 E
+F1 7.28(.s)C 2.28(ubmit.cf is)-7.28 F .014
+(shipped with sendmail \(in cf/cf/\) and is installed by def)117 348.8 R
+2.514(ault. If)-.1 F .014(changes to the con\214guration need)2.514 F
+(to be made, start with cf/cf/submit.mc and follo)117 360.8 Q 2.5(wt)
+-.25 G(he instruction in cf/README.)-2.5 E F0 2.5
+(1.3.4. /usr/bin/newaliases)102 384.8 R F1(The)142 401 Q F2(ne)2.5 E
+(waliases)-.15 E F1(command should just be a link to)2.5 E F2(sendmail)
+2.5 E F1(:)A(rm \255f /usr/bin/ne)157 417.2 Q -.1(wa)-.25 G(liases).1 E
+(ln \255s /usr/sbin/sendmail /usr/bin/ne)157 429.2 Q -.1(wa)-.25 G
+(liases).1 E(This can be installed in whate)117 445.4 Q -.15(ve)-.25 G
+2.5(rs).15 G(earch path you prefer for your system.)-2.5 E F0 2.5
+(1.3.5. /usr/bin/hoststat)102 469.4 R F1(The)142 485.6 Q F2(hoststat)
+5.844 E F1 3.344(command should just be a link to)5.844 F F2(sendmail)
+5.844 E F1 5.844(,i)C 5.845(naf)-5.844 G 3.345(ashion similar to)-5.945
+F F2(ne)117 497.6 Q(waliases)-.15 E F1 6.444(.T)C 1.444(his command lis\
+ts the status of the last mail transaction with all remote hosts.)-6.444
+F(The)117 509.6 Q F0<ad76>3.856 E F1 1.356(\215ag will pre)3.856 F -.15
+(ve)-.25 G 1.357(nt the status display from being truncated.).15 F 1.357
+(It functions only when the)6.357 F F0(HostStatusDir)117 521.6 Q(ectory)
+-.18 E F1(option is set.)2.5 E F0 2.5(1.3.6. /usr/bin/pur)102 545.6 R
+(gestat)-.1 E F1 .187(This command is also a link to)142 561.8 R F2
+(sendmail)2.687 E F1 5.187(.I)C 2.686<748d>-5.187 G .186(ushes e)-2.686
+F .186(xpired \(T)-.15 F .186(imeout.hoststatus\) informa-)-.35 F
+(tion that is stored in the)117 573.8 Q F0(HostStatusDir)2.5 E(ectory)
+-.18 E F1(tree.)2.5 E .32 LW 76 583.4 72 583.4 DL 80 583.4 76 583.4 DL
+84 583.4 80 583.4 DL 88 583.4 84 583.4 DL 92 583.4 88 583.4 DL 96 583.4
+92 583.4 DL 100 583.4 96 583.4 DL 104 583.4 100 583.4 DL 108 583.4 104
+583.4 DL 112 583.4 108 583.4 DL 116 583.4 112 583.4 DL 120 583.4 116
+583.4 DL 124 583.4 120 583.4 DL 128 583.4 124 583.4 DL 132 583.4 128
+583.4 DL 136 583.4 132 583.4 DL 140 583.4 136 583.4 DL 144 583.4 140
+583.4 DL 148 583.4 144 583.4 DL 152 583.4 148 583.4 DL 156 583.4 152
+583.4 DL 160 583.4 156 583.4 DL 164 583.4 160 583.4 DL 168 583.4 164
+583.4 DL 172 583.4 168 583.4 DL 176 583.4 172 583.4 DL 180 583.4 176
+583.4 DL 184 583.4 180 583.4 DL 188 583.4 184 583.4 DL 192 583.4 188
+583.4 DL 196 583.4 192 583.4 DL 200 583.4 196 583.4 DL 204 583.4 200
+583.4 DL 208 583.4 204 583.4 DL 212 583.4 208 583.4 DL 216 583.4 212
+583.4 DL/F4 5/Times-Roman@0 SF(1)93.6 593.8 Q/F5 8/Times-Roman@0 SF .384
+(This is usually /usr/sbin on 4.4BSD and ne)3.2 J .384(wer systems; man)
+-.2 F 2.385(ys)-.12 G .385(ystems install it in /usr/lib)-2.385 F 4.385
+(.I)-.32 G .385(understand it is in /usr/ucblib on)-2 F
+(System V Release 4.)72 606.6 Q F4(2)93.6 617 Q F5 .15(Some v)3.2 J .15
+(endors ship them o)-.12 F .15(wned by bin; this creates a security hol\
+e that is not actually related to)-.2 F/F6 8/Times-Italic@0 SF(sendmail)
+2.15 E F5 4.15(.O)C .149(ther important di-)-4.15 F
+(rectories that should ha)72 629.8 Q .24 -.12(ve r)-.16 H(estricti).12 E
+.24 -.12(ve o)-.2 H(wnerships and permissions are /bin, /usr/bin, /etc,\
+ /etc/mail, /usr/etc, /lib, and /usr/lib)-.08 E(.)-.32 E F4(3)93.6 640.2
+Q F5(Actually)3.2 I 2.332(,t)-.52 G .332(he pathname v)-2.332 F .332(ar\
+ies depending on the operating system; /etc/mail is the preferred direc\
+tory)-.2 F 4.332(.S)-.52 G .332(ome older systems in-)-4.332 F 1.487
+(stall it in)72 653 R/F7 8/Times-Bold@0 SF(/usr/lib/sendmail.cf)3.487 E
+F5 3.487(,a)C 1.487(nd I')-3.487 F 1.727 -.12(ve a)-.4 H 1.486
+(lso seen it in).12 F F7(/usr/ucblib)3.486 E F5 5.486(.I)C 3.486(fy)
+-5.486 G 1.486(ou w)-3.486 F 1.486(ant to mo)-.08 F 1.726 -.12(ve t)-.12
+H 1.486(his \214le, add -D_P).12 F -.888(AT)-.736 G(H_SENDMAIL-).888 E
+.093(CF=\\"/\214le/name\\" to the \215ags passed to the C compiler)72
+662.6 R 4.093(.M)-.44 G -.12(ov)-4.093 G .093
+(ing this \214le is not recommended: other programs and scripts kno).12
+F 2.093(wo)-.2 G 2.093(ft)-2.093 G(his)-2.093 E(location.)72 672.2 Q F4
+(4)93.6 682.6 Q F5 .588
+(The system libraries can reference other \214les; in particular)3.2 J
+2.589(,s)-.32 G .589(ystem library subroutines that)-2.589 F F6
+(sendmail)2.589 E F5 .589(calls probably reference)2.589 F F6
+(/etc/passwd)72 695.4 Q F5(and)2 E F6(/etc/r)2 E(esolv)-.296 E(.conf)
+-.592 E F5(.)A 0 Cg EP
+%%Page: 11 7
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-11)195.86 E 2.5(1.3.7. /v)102 96 R(ar/spool/mqueue)-.1 E/F1 10
+/Times-Roman@0 SF .217(The directory)142 112.2 R/F2 10/Times-Italic@0 SF
+(/var/spool/mqueue)2.717 E F1 .218
+(should be created to hold the mail queue.)2.717 F .218(This directory)
+5.218 F(should be mode 0700 and o)117 124.2 Q(wned by root.)-.25 E 1.192
+(The actual path of this directory is de\214ned by the)142 140.4 R F0
+(QueueDir)3.691 E(ectory)-.18 E F1 1.191(option of the)3.691 F F2(send-)
+3.691 E(mail.cf)117 152.4 Q F1 4.427(\214le. T)4.427 F 4.428(ou)-.8 G
+1.928(se multiple queues, supply a v)-4.428 F 1.928
+(alue ending with an asterisk.)-.25 F -.15(Fo)6.928 G 4.428(re).15 G
+(xample,)-4.578 E F2(/var/spool/mqueue/qd*)117 164.4 Q F1 .737
+(will use all of the directories or symbolic links to directories be)
+3.237 F(ginning)-.15 E .779(with `qd' in)117 176.4 R F2
+(/var/spool/mqueue)3.279 E F1 .779(as queue directories.)3.279 F .779
+(Do not change the queue directory struc-)5.779 F
+(ture while sendmail is running.)117 188.4 Q .898
+(If these directories ha)142 204.6 R 1.198 -.15(ve s)-.2 H .897
+(ubdirectories or symbolic links to directories named `qf).15 F .897
+(', `df).55 F(',).55 E 1.24(and `xf)117 216.6 R 1.24
+(', then these will be used for the dif).55 F 1.241
+(ferent queue \214le types.)-.25 F 1.241(That is, the data \214les are)
+6.241 F .247(stored in the `df)117 228.6 R 2.747('s).55 G(ubdirectory)
+-2.747 E 2.746(,t)-.65 G .246
+(he transcript \214les are stored in the `xf)-2.746 F 2.746('s).55 G
+(ubdirectory)-2.746 E 2.746(,a)-.65 G .246(nd all oth-)-2.746 F
+(ers are stored in the `qf)117 240.6 Q 2.5('s).55 G(ubdirectory)-2.5 E
+(.)-.65 E 1.602(If shared memory support is compiled in,)142 256.8 R F2
+(sendmail)4.102 E F1 1.602(stores the a)4.102 F -.25(va)-.2 G 1.603
+(ilable diskspace in a).25 F 1.065(shared memory se)117 268.8 R 1.065
+(gment to mak)-.15 F 3.565(et)-.1 G 1.065(he v)-3.565 F 1.065
+(alues readily a)-.25 F -.25(va)-.2 G 1.064
+(ilable to all children without incurring).25 F .25(system o)117 280.8 R
+-.15(ve)-.15 G 2.75(rhead. In).15 F .251(this case, only the daemon upd\
+ates the data; i.e., the sendmail daemon cre-)2.75 F 1.037
+(ates the shared memory se)117 292.8 R 1.037
+(gment and deletes it if it is terminated.)-.15 F 2.637 -.8(To u)6.037 H
+1.037(se this,).8 F F2(sendmail)3.536 E F1(must)3.536 E(ha)117 304.8 Q
+2.461 -.15(ve b)-.2 H 2.162(een compiled with support for shared memory\
+ \(-DSM_CONF_SHM\) and the option).15 F F0(Shar)117 316.8 Q(edMemoryK)
+-.18 E(ey)-.25 E F1 1.517(must be set.)4.017 F 1.516
+(Notice: do not use the same k)6.516 F 1.816 -.15(ey f)-.1 H(or).15 E F2
+(sendmail)4.016 E F1(in)4.016 E -.2(vo)-.4 G(cations).2 E .031(with dif)
+117 328.8 R .031(ferent queue directories or dif)-.25 F .032
+(ferent queue group declarations.)-.25 F .032(Access to shared memory)
+5.032 F 1.542(is not controlled by locks, i.e., there is a race conditi\
+on when data in the shared memory is)117 340.8 R 2.844(updated. Ho)117
+352.8 R(we)-.25 E -.15(ve)-.25 G 1.144 -.4(r, s).15 H .344
+(ince operation of).4 F F2(sendmail)2.844 E F1 .344
+(does not rely on the data in the shared memory)2.844 F(,)-.65 E
+(this does not ne)117 364.8 Q -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
+(ly in\215uence the beha).15 E(vior)-.2 E(.)-.55 E F0 2.5(1.3.8. /v)102
+388.8 R(ar/spool/clientmqueue)-.1 E F1 1.727(The directory)142 405 R F2
+(/var/spool/clientmqueue)4.227 E F1 1.726
+(should be created to hold the mail queue.)4.227 F(This)6.726 E
+(directory should be mode 0770 and o)117 417 Q
+(wned by user smmsp, group smmsp.)-.25 E .139
+(The actual path of this directory is de\214ned by the)142 433.2 R F0
+(QueueDir)2.639 E(ectory)-.18 E F1 .14(option of the)2.64 F F2
+(submit.cf)2.64 E F1(\214le.)117 445.2 Q F0 2.5(1.3.9. /v)102 469.2 R
+(ar/spool/mqueue/.hoststat)-.1 E F1 1.045(This is a typical v)142 485.4
+R 1.045(alue for the)-.25 F F0(HostStatusDir)3.545 E(ectory)-.18 E F1
+1.044(option, containing one \214le per host)3.545 F
+(that this sendmail has chatted with recently)117 497.4 Q 5(.I)-.65 G
+2.5(ti)-5 G 2.5(sn)-2.5 G(ormally a subdirectory of)-2.5 E F2(mqueue)2.5
+E F1(.)A F0 2.5(1.3.10. /etc/mail/aliases*)102 521.4 R F1 .019
+(The system aliases are held in \231/etc/mail/aliases\232.)142 537.6 R
+2.519(As)5.019 G .019(ample is gi)-2.519 F -.15(ve)-.25 G 2.52(ni).15 G
+2.52<6e99>-2.52 G(sendmail/aliases\232)-2.52 E
+(which includes some aliases which)117 549.6 Q F2(must)2.5 E F1
+(be de\214ned:)2.5 E(cp sendmail/aliases /etc/mail/aliases)157 565.8 Q
+F2(edit /etc/mail/aliases)157 577.8 Q F1 -1.1(Yo)117 594 S 2.5(us)1.1 G
+(hould e)-2.5 E(xtend this \214le with an)-.15 E 2.5(ya)-.15 G
+(liases that are apropos to your system.)-2.5 E(Normally)142 610.2 Q F2
+(sendmail)7.984 E F1 5.484(looks at a database v)7.984 F 5.483
+(ersion of the \214les, stored either in)-.15 F 1.089(\231/etc/mail/ali\
+ases.dir\232 and \231/etc/mail/aliases.pag\232 or \231/etc/mail/aliases\
+.db\232 depending on which)117 622.2 R .203
+(database package you are using.)117 634.2 R .202
+(The actual path of this \214le is de\214ned in the)5.203 F F0
+(AliasFile)2.702 E F1 .202(option of)2.702 F(the)117 646.2 Q F2
+(sendmail.cf)2.5 E F1(\214le.)2.5 E .154
+(The permissions of the alias \214le and the database v)142 662.4 R .155
+(ersions should be 0640 to pre)-.15 F -.15(ve)-.25 G .155(nt local).15 F
+.242(denial of service attacks as e)117 674.4 R .242
+(xplained in the top le)-.15 F -.15(ve)-.25 G(l).15 E F0(README)2.742 E
+F1 .242(in the sendmail distrib)2.742 F 2.742(ution. If)-.2 F .909(the \
+permissions 0640 are used, be sure that only trusted users belong to th\
+e group assigned to)117 686.4 R(those \214les.)117 698.4 Q
+(Otherwise, \214les should not e)5 E -.15(ve)-.25 G 2.5(nb).15 G 2.5(eg)
+-2.5 G(roup readable.)-2.5 E 0 Cg EP
+%%Page: 12 8
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-12 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(1.3.11. /etc/r)102 96 R 2.5
+(co)-.18 G 2.5(r/)-2.5 G(etc/init.d/sendmail)-2.5 E/F1 10/Times-Roman@0
+SF .156(It will be necessary to start up the)142 112.2 R/F2 10
+/Times-Italic@0 SF(sendmail)2.655 E F1 .155
+(daemon when your system reboots.)2.655 F .155(This dae-)5.155 F 1.537
+(mon performs tw)117 124.2 R 4.037(of)-.1 G 1.537
+(unctions: it listens on the SMTP sock)-4.037 F 1.537
+(et for connections \(to recei)-.1 F 1.838 -.15(ve m)-.25 H(ail).15 E
+.442(from a remote system\) and it processes the queue periodically to \
+insure that mail gets deli)117 136.2 R -.15(ve)-.25 G(red).15 E
+(when hosts come up.)117 148.2 Q .893(If necessary)142 164.4 R 3.393(,a)
+-.65 G .893(dd the follo)-3.393 F .893(wing lines to \231/etc/rc\232 \(\
+or \231/etc/rc.local\232 as appropriate\) in the)-.25 F .313(area where\
+ it is starting up the daemons on a BSD-base system, or on a System-V)
+117 176.4 R .312(-based system)-1 F
+(in one of the startup \214les, typically \231/etc/init.d/sendmail\232:)
+117 188.4 Q(if [ \255f /usr/sbin/sendmail \255a \255f /etc/mail/sendmai\
+l.cf ]; then)157 204.6 Q(\(cd /v)193 216.6 Q
+(ar/spool/mqueue; rm \255f xf*\))-.25 E
+(/usr/sbin/sendmail \255bd \255q30m &)193 228.6 Q
+(echo \255n ' sendmail' >/de)193 240.6 Q(v/console)-.25 E<8c>157 252.6 Q
+1.611(The \231cd\232 and \231rm\232 commands insure that all transcript\
+ \214les ha)117 268.8 R 1.911 -.15(ve b)-.2 H 1.611(een remo).15 F -.15
+(ve)-.15 G 1.611(d; e).15 F(xtraneous)-.15 E .773
+(transcript \214les may be left around if the system goes do)117 280.8 R
+.772(wn in the middle of processing a mes-)-.25 F 3.921(sage. The)117
+292.8 R 1.422(line that actually in)3.921 F -.2(vo)-.4 G -.1(ke).2 G(s)
+.1 E F2(sendmail)3.922 E F1 1.422(has tw)3.922 F 3.922<6f8d>-.1 G 1.422
+(ags: \231\255bd\232 causes it to listen on the)-3.922 F
+(SMTP port, and \231\255q30m\232 causes it to run the queue e)117 304.8
+Q -.15(ve)-.25 G(ry half hour).15 E(.)-.55 E .03
+(Some people use a more comple)142 321 R 2.529(xs)-.15 G .029
+(tartup script, remo)-2.529 F .029
+(ving zero length qf/hf/Qf \214les and df)-.15 F .022
+(\214les for which there is no qf/hf/Qf \214le.)117 333 R .022
+(Note this is not advisable.)5.022 F -.15(Fo)5.022 G 2.522(re).15 G .023
+(xample, see Figure 1 for)-2.672 F(an e)117 345 Q(xample of a comple)
+-.15 E 2.5(xs)-.15 G(cript which does this clean up.)-2.5 E F0 2.5
+(1.3.12. /etc/mail/help\214le)102 369 R F1 .161
+(This is the help \214le used by the SMTP)142 385.2 R F0(HELP)2.661 E F1
+2.66(command. It)2.661 F .16(should be copied from \231send-)2.66 F
+(mail/help\214le\232:)117 397.2 Q
+(cp sendmail/help\214le /etc/mail/help\214le)157 413.4 Q
+(The actual path of this \214le is de\214ned in the)117 429.6 Q F0
+(HelpFile)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1(\214le.)
+2.5 E F0 2.5(1.3.13. /etc/mail/statistics)102 453.6 R F1 3.04
+(If you wish to collect statistics about your mail traf)142 469.8 R 3.04
+(\214c, you should create the \214le)-.25 F
+(\231/etc/mail/statistics\232:)117 481.8 Q(cp /de)157 498 Q
+(v/null /etc/mail/statistics)-.25 E(chmod 0600 /etc/mail/statistics)157
+510 Q .716(This \214le does not gro)117 526.2 R 4.516 -.65(w. I)-.25 H
+3.216(ti).65 G 3.216(sp)-3.216 G .716
+(rinted with the program \231mailstats/mailstats.c.)-3.216 F 5.715<9a54>
+-.7 G .715(he actual path)-5.715 F(of this \214le is de\214ned in the)
+117 538.2 Q F0(S)2.5 E F1(option of the)2.5 E F2(sendmail.cf)2.5 E F1
+(\214le.)2.5 E F0 2.5(1.3.14. /usr/bin/mailq)102 562.2 R F1(If)142 578.4
+Q F2(sendmail)3.439 E F1 .939(is in)3.439 F -.2(vo)-.4 G -.1(ke).2 G
+3.439(da).1 G 3.439<7399>-3.439 G(mailq,)-3.439 E 3.439<9a69>-.7 G 3.439
+(tw)-3.439 G .939(ill simulate the)-3.439 F F0(\255bp)3.439 E F1 .94
+(\215ag \(i.e.,)3.44 F F2(sendmail)3.44 E F1 .94(will print)3.44 F
+(the contents of the mail queue; see belo)117 590.4 Q 2.5(w\). This)-.25
+F(should be a link to /usr/sbin/sendmail.)2.5 E F0 2.5
+(1.3.15. sendmail.pid)102 614.4 R F2(sendmail)142 630.6 Q F1 2.334
+(stores its current pid in the \214le speci\214ed by the)4.834 F F0
+(PidFile)4.833 E F1 2.333(option \(def)4.833 F 2.333(ault is)-.1 F(_P)
+117 642.6 Q -1.11(AT)-.92 G(H_SENDMAILPID\).)1.11 E F2(sendmail)5.697 E
+F1(uses)3.197 E F0 -.92(Te)3.197 G(mpFileMode).92 E F1 .697(\(which def)
+3.197 F .697(aults to 0600\) as the per)-.1 F(-)-.2 E 1.958
+(missions of that \214le to pre)117 654.6 R -.15(ve)-.25 G 1.958
+(nt local denial of service attacks as e).15 F 1.958
+(xplained in the top le)-.15 F -.15(ve)-.25 G(l).15 E F0(README)117
+666.6 Q F1 .64(in the sendmail distrib)3.14 F 3.14(ution. If)-.2 F .64
+(the \214le already e)3.14 F .64(xists, then it might be necessary to)
+-.15 F(change the permissions accordingly)117 678.6 Q 2.5(,e)-.65 G
+(.g.,)-2.5 E(chmod 0600 /v)157 694.8 Q(ar/run/sendmail.pid)-.25 E 1.956
+(Note that as of v)117 711 R 1.956(ersion 8.13, this \214le is unlink)
+-.15 F 1.956(ed when)-.1 F F2(sendmail)4.456 E F1 -.15(ex)4.456 G 4.456
+(its. As).15 F 4.456(ar)4.456 G 1.955(esult of this)-4.456 F 1.324
+(change, a script such as the follo)117 723 R 1.324(wing, which may ha)
+-.25 F 1.624 -.15(ve w)-.2 H(ork).05 E 1.325
+(ed prior to 8.13, will no longer)-.1 F 0 Cg EP
+%%Page: 13 9
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-13)195.86 E .4 LW 77 108 72 108 DL 79 108 74 108 DL 84 108 79
+108 DL 89 108 84 108 DL 94 108 89 108 DL 99 108 94 108 DL 104 108 99 108
+DL 109 108 104 108 DL 114 108 109 108 DL 119 108 114 108 DL 124 108 119
+108 DL 129 108 124 108 DL 134 108 129 108 DL 139 108 134 108 DL 144 108
+139 108 DL 149 108 144 108 DL 154 108 149 108 DL 159 108 154 108 DL 164
+108 159 108 DL 169 108 164 108 DL 174 108 169 108 DL 179 108 174 108 DL
+184 108 179 108 DL 189 108 184 108 DL 194 108 189 108 DL 199 108 194 108
+DL 204 108 199 108 DL 209 108 204 108 DL 214 108 209 108 DL 219 108 214
+108 DL 224 108 219 108 DL 229 108 224 108 DL 234 108 229 108 DL 239 108
+234 108 DL 244 108 239 108 DL 249 108 244 108 DL 254 108 249 108 DL 259
+108 254 108 DL 264 108 259 108 DL 269 108 264 108 DL 274 108 269 108 DL
+279 108 274 108 DL 284 108 279 108 DL 289 108 284 108 DL 294 108 289 108
+DL 299 108 294 108 DL 304 108 299 108 DL 309 108 304 108 DL 314 108 309
+108 DL 319 108 314 108 DL 324 108 319 108 DL 329 108 324 108 DL 334 108
+329 108 DL 339 108 334 108 DL 344 108 339 108 DL 349 108 344 108 DL 354
+108 349 108 DL 359 108 354 108 DL 364 108 359 108 DL 369 108 364 108 DL
+374 108 369 108 DL 379 108 374 108 DL 384 108 379 108 DL 389 108 384 108
+DL 394 108 389 108 DL 399 108 394 108 DL 404 108 399 108 DL 409 108 404
+108 DL 414 108 409 108 DL 419 108 414 108 DL 424 108 419 108 DL 429 108
+424 108 DL 434 108 429 108 DL 439 108 434 108 DL 444 108 439 108 DL 449
+108 444 108 DL 454 108 449 108 DL 459 108 454 108 DL 464 108 459 108 DL
+469 108 464 108 DL 474 108 469 108 DL 479 108 474 108 DL 484 108 479 108
+DL 489 108 484 108 DL 494 108 489 108 DL 499 108 494 108 DL 504 108 499
+108 DL/F1 10/Times-Roman@0 SF(#!/bin/sh)72 132 Q 2.5(#r)72 144 S(emo)
+-2.5 E .3 -.15(ve z)-.15 H(ero length qf/hf/Qf \214les).15 E(for qf)72
+156 Q(\214le in qf* hf* Qf*)-.25 E(do)72 168 Q(if [ \255r $qf)108 180 Q
+(\214le ])-.25 E(then)108 192 Q(if [ ! \255s $qf)144 204 Q(\214le ])-.25
+E(then)144 216 Q(echo \255n " <zero: $qf)180 228 Q(\214le>" > /de)-.25 E
+(v/console)-.25 E(rm \255f $qf)180 240 Q(\214le)-.25 E<8c>144 252 Q<8c>
+108 264 Q(done)72 276 Q 2.5(#r)72 288 S
+(ename tf \214les to be qf if the qf does not e)-2.5 E(xist)-.15 E
+(for tf)72 300 Q(\214le in tf*)-.25 E(do)72 312 Q(qf)108 324 Q
+(\214le=`echo $tf)-.25 E(\214le | sed ')-.25 E(s/t/q/'`)-.55 E
+(if [ \255r $tf)108 336 Q(\214le \255a ! \255f $qf)-.25 E(\214le ])-.25
+E(then)108 348 Q(echo \255n " <reco)144 360 Q -.15(ve)-.15 G(ring: $tf)
+.15 E(\214le>" > /de)-.25 E(v/console)-.25 E(mv $tf)144 372 Q
+(\214le $qf)-.25 E(\214le)-.25 E(else)108 384 Q(if [ \255f $tf)144 396 Q
+(\214le ])-.25 E(then)144 408 Q(echo \255n " <e)180 420 Q(xtra: $tf)-.15
+E(\214le>" > /de)-.25 E(v/console)-.25 E(rm \255f $tf)180 432 Q(\214le)
+-.25 E<8c>144 444 Q<8c>108 456 Q(done)72 468 Q 2.5(#r)72 480 S(emo)-2.5
+E .3 -.15(ve d)-.15 H 2.5<668c>.15 G
+(les with no corresponding qf/hf/Qf \214les)-2.5 E(for df)72 492 Q
+(\214le in df*)-.25 E(do)72 504 Q(qf)108 516 Q(\214le=`echo $df)-.25 E
+(\214le | sed ')-.25 E(s/d/q/'`)-.55 E(hf)108 528 Q(\214le=`echo $df)
+-.25 E(\214le | sed ')-.25 E(s/d/h/'`)-.55 E(Qf)108 540 Q
+(\214le=`echo $df)-.25 E(\214le | sed ')-.25 E(s/d/Q/'`)-.55 E
+(if [ \255r $df)108 552 Q(\214le \255a ! \255f $qf)-.25 E
+(\214le \255a ! \255f $hf)-.25 E(\214le \255a ! \255f $Qf)-.25 E
+(\214le ])-.25 E(then)108 564 Q(echo \255n " <incomplete: $df)144 576 Q
+(\214le>" > /de)-.25 E(v/console)-.25 E(mv $df)144 588 Q
+(\214le `echo $df)-.25 E(\214le | sed ')-.25 E(s/d/D/'`)-.55 E<8c>108
+600 Q(done)72 612 Q 2.5(#a)72 624 S(nnounce \214les that ha)-2.5 E .3
+-.15(ve b)-.2 H(een sa).15 E -.15(ve)-.2 G 2.5(dd).15 G
+(uring disaster reco)-2.5 E -.15(ve)-.15 G(ry).15 E(for xf)72 636 Q
+(\214le in [A-Z]f*)-.25 E(do)72 648 Q(if [ \255f $xf)108 660 Q(\214le ])
+-.25 E(then)108 672 Q(echo \255n " <panic: $xf)144 684 Q(\214le>" > /de)
+-.25 E(v/console)-.25 E<8c>108 696 Q(done)72 708 Q 0 Cg EP
+%%Page: 14 10
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-14 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(Figure 1 \212 A comple)214.47 96 Q 2.5(xs)-.15 G(tartup script)-2.5 E
+.4 LW 77 108 72 108 DL 79 108 74 108 DL 84 108 79 108 DL 89 108 84 108
+DL 94 108 89 108 DL 99 108 94 108 DL 104 108 99 108 DL 109 108 104 108
+DL 114 108 109 108 DL 119 108 114 108 DL 124 108 119 108 DL 129 108 124
+108 DL 134 108 129 108 DL 139 108 134 108 DL 144 108 139 108 DL 149 108
+144 108 DL 154 108 149 108 DL 159 108 154 108 DL 164 108 159 108 DL 169
+108 164 108 DL 174 108 169 108 DL 179 108 174 108 DL 184 108 179 108 DL
+189 108 184 108 DL 194 108 189 108 DL 199 108 194 108 DL 204 108 199 108
+DL 209 108 204 108 DL 214 108 209 108 DL 219 108 214 108 DL 224 108 219
+108 DL 229 108 224 108 DL 234 108 229 108 DL 239 108 234 108 DL 244 108
+239 108 DL 249 108 244 108 DL 254 108 249 108 DL 259 108 254 108 DL 264
+108 259 108 DL 269 108 264 108 DL 274 108 269 108 DL 279 108 274 108 DL
+284 108 279 108 DL 289 108 284 108 DL 294 108 289 108 DL 299 108 294 108
+DL 304 108 299 108 DL 309 108 304 108 DL 314 108 309 108 DL 319 108 314
+108 DL 324 108 319 108 DL 329 108 324 108 DL 334 108 329 108 DL 339 108
+334 108 DL 344 108 339 108 DL 349 108 344 108 DL 354 108 349 108 DL 359
+108 354 108 DL 364 108 359 108 DL 369 108 364 108 DL 374 108 369 108 DL
+379 108 374 108 DL 384 108 379 108 DL 389 108 384 108 DL 394 108 389 108
+DL 399 108 394 108 DL 404 108 399 108 DL 409 108 404 108 DL 414 108 409
+108 DL 419 108 414 108 DL 424 108 419 108 DL 429 108 424 108 DL 434 108
+429 108 DL 439 108 434 108 DL 444 108 439 108 DL 449 108 444 108 DL 454
+108 449 108 DL 459 108 454 108 DL 464 108 459 108 DL 469 108 464 108 DL
+474 108 469 108 DL 479 108 474 108 DL 484 108 479 108 DL 489 108 484 108
+DL 494 108 489 108 DL 499 108 494 108 DL 504 108 499 108 DL -.1(wo)117
+144 S(rk:).1 E 2.5(#s)157 160.2 S(top & start sendmail)-2.5 E
+(PIDFILE=/v)157 172.2 Q(ar/run/sendmail.pid)-.25 E
+(kill `head -1 $PIDFILE`)157 184.2 Q(`tail -1 $PIDFILE`)157 196.2 Q .218
+(because it assumes that the pid\214le will still e)117 212.4 R .218
+(xist e)-.15 F -.15(ve)-.25 G 2.718(na).15 G .217
+(fter killing the process to which it refers.)-2.718 F(Belo)117 224.4 Q
+2.5(wi)-.25 G 2.5(sas)-2.5 G(cript which will w)-2.5 E
+(ork correctly on both ne)-.1 E(wer and older v)-.25 E(ersions:)-.15 E
+2.5(#s)157 240.6 S(top & start sendmail)-2.5 E(PIDFILE=/v)157 252.6 Q
+(ar/run/sendmail.pid)-.25 E(pid=`head -1 $PIDFILE`)157 264.6 Q
+(cmd=`tail -1 $PIDFILE`)157 276.6 Q(kill $pid)157 288.6 Q($cmd)157 300.6
+Q 1.31(This is just an e)117 316.8 R 1.311
+(xample script, it does not perform an)-.15 F 3.811(ye)-.15 G 1.311
+(rror checks, e.g., whether the pid\214le)-3.811 F -.15(ex)117 328.8 S
+(ists at all.).15 E F0 2.5(1.3.16. Map)102 352.8 R(Files)2.5 E F1 2.466
+-.8(To p)142 369 T(re).8 E -.15(ve)-.25 G .866
+(nt local denial of service attacks as e).15 F .865
+(xplained in the top le)-.15 F -.15(ve)-.25 G(l).15 E F0(README)3.365 E
+F1 .865(in the)3.365 F 1.076(sendmail distrib)117 381 R 1.077
+(ution, the permissions of map \214les created by)-.2 F/F2 10
+/Times-Italic@0 SF(mak)3.577 E(emap)-.1 E F1 1.077(should be 0640.)3.577
+F(The)6.077 E .56(use of 0640 implies that only trusted users belong to\
+ the group assigned to those \214les.)117 393 R .56(If those)5.56 F
+(\214les already e)117 405 Q
+(xist, then it might be necessary to change the permissions accordingly)
+-.15 E 2.5(,e)-.65 G(.g.,)-2.5 E(cd /etc/mail)157 421.2 Q
+(chmod 0640 *.db *.pag *.dir)157 433.2 Q F0 2.5(2. NORMAL)72 461.4 R
+(OPERA)2.5 E(TIONS)-.95 E 2.5(2.1. The)87 485.4 R(System Log)2.5 E F1
+1.511(The system log is supported by the)127 501.6 R F2(syslo)4.011 E
+(gd)-.1 E F1 1.511(\(8\) program.)1.666 F 1.511(All messages from)6.511
+F F2(sendmail)4.011 E F1(are)4.012 E(logged under the)102 515.6 Q/F3 9
+/Times-Roman@0 SF(LOG_MAIL)2.5 E F1 -.1(fa)2.5 G(cility).1 E/F4 7
+/Times-Roman@0 SF(5)-4 I F1(.)4 I F0 2.5(2.1.1. F)102 539.6 R(ormat)-.25
+E F1 .574(Each line in the system log consists of a timestamp, the name\
+ of the machine that gener)142 555.8 R(-)-.2 E .848
+(ated it \(for logging from se)117 567.8 R -.15(ve)-.25 G .848
+(ral machines o).15 F -.15(ve)-.15 G 3.349(rt).15 G .849
+(he local area netw)-3.349 F .849(ork\), the w)-.1 F .849
+(ord \231sendmail:\232,)-.1 F(and a message)117 581.8 Q F4(6)-4 I F1 5
+(.M)4 K(ost messages are a sequence of)-5 E F2(name)2.5 E F1(=)A F2
+(value)A F1(pairs.)2.5 E .68(The tw)142 598 R 3.18(om)-.1 G .68
+(ost common lines are logged when a message is processed.)-3.18 F .68
+(The \214rst logs the)5.68 F .376(receipt of a message; there will be e)
+117 610 R .376(xactly one of these per message.)-.15 F .376
+(Some \214elds may be omit-)5.376 F(ted if the)117 622 Q 2.5(yd)-.15 G
+2.5(on)-2.5 G(ot contain interesting information.)-2.5 E(Fields are:)5 E
+50.06(from The)117 638.2 R(en)2.5 E -.15(ve)-.4 G(lope sender address.)
+.15 E 53.95(size The)117 654.4 R(size of the message in bytes.)2.5 E .32
+LW 76 665.2 72 665.2 DL 80 665.2 76 665.2 DL 84 665.2 80 665.2 DL 88
+665.2 84 665.2 DL 92 665.2 88 665.2 DL 96 665.2 92 665.2 DL 100 665.2 96
+665.2 DL 104 665.2 100 665.2 DL 108 665.2 104 665.2 DL 112 665.2 108
+665.2 DL 116 665.2 112 665.2 DL 120 665.2 116 665.2 DL 124 665.2 120
+665.2 DL 128 665.2 124 665.2 DL 132 665.2 128 665.2 DL 136 665.2 132
+665.2 DL 140 665.2 136 665.2 DL 144 665.2 140 665.2 DL 148 665.2 144
+665.2 DL 152 665.2 148 665.2 DL 156 665.2 152 665.2 DL 160 665.2 156
+665.2 DL 164 665.2 160 665.2 DL 168 665.2 164 665.2 DL 172 665.2 168
+665.2 DL 176 665.2 172 665.2 DL 180 665.2 176 665.2 DL 184 665.2 180
+665.2 DL 188 665.2 184 665.2 DL 192 665.2 188 665.2 DL 196 665.2 192
+665.2 DL 200 665.2 196 665.2 DL 204 665.2 200 665.2 DL 208 665.2 204
+665.2 DL 212 665.2 208 665.2 DL 216 665.2 212 665.2 DL/F5 5
+/Times-Roman@0 SF(5)93.6 675.6 Q/F6 8/Times-Roman@0 SF
+(Except on Ultrix, which does not support f)3.2 I
+(acilities in the syslog.)-.08 E F5(6)93.6 689.2 Q F6(This format may v)
+3.2 I(ary slightly if your v)-.2 E(endor has changed the syntax.)-.12 E
+0 Cg EP
+%%Page: 15 11
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-15)195.86 E/F1 10/Times-Roman@0 SF 50.06(class The)117 96 R
+(class \(i.e., numeric precedence\) of the message.)2.5 E 58.39(pri The)
+117 112.2 R(initial message priority \(used for queue sorting\).)2.5 E
+45.06(nrcpts The)117 128.4 R 1.515(number of en)4.015 F -.15(ve)-.4 G
+1.514(lope recipients for this message \(after aliasing and for).15 F(-)
+-.2 E -.1(wa)189 140.4 S(rding\).).1 E 45.05(msgid The)117 156.6 R
+(message id of the message \(from the header\).)2.5 E 48.39(proto The)
+117 172.8 R(protocol used to recei)2.5 E .3 -.15(ve t)-.25 H
+(his message \(e.g., ESMTP or UUCP\)).15 E 37.84(daemon The)117 189 R
+(daemon name from the)2.5 E F0(DaemonP)2.5 E(ortOptions)-.2 E F1
+(setting.)2.5 E 49.51(relay The)117 205.2 R(machine from which it w)2.5
+E(as recei)-.1 E -.15(ve)-.25 G(d.).15 E .43
+(There is also one line logged per deli)117 221.4 R -.15(ve)-.25 G .43
+(ry attempt \(so there can be se).15 F -.15(ve)-.25 G .43
+(ral per message if deli).15 F(v-)-.25 E
+(ery is deferred or there are multiple recipients\).)117 233.4 Q
+(Fields are:)5 E 61.72(to A)117 249.6 R
+(comma-separated list of the recipients to this mailer)2.5 E(.)-.55 E
+41.73(ctladdr The)117 265.8 R -.74(``)2.727 G .227(controlling user').74
+F .226(', that is, the name of the user whose credentials we use)-.74 F
+(for deli)189 277.8 Q -.15(ve)-.25 G(ry).15 E(.)-.65 E 47.84(delay The)
+117 294 R 1.205(total delay between the time this message w)3.705 F
+1.205(as recei)-.1 F -.15(ve)-.25 G 3.705(da).15 G 1.205(nd the current)
+-3.705 F(deli)189 306 Q -.15(ve)-.25 G(ry attempt.).15 E 42.84
+(xdelay The)117 322.2 R .116(amount of time needed in this deli)2.616 F
+-.15(ve)-.25 G .116(ry attempt \(normally indicati).15 F .415 -.15(ve o)
+-.25 H 2.615(ft).15 G(he)-2.615 E(speed of the connection\).)189 334.2 Q
+43.95(mailer The)117 350.4 R(name of the mailer used to deli)2.5 E -.15
+(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(his recipient.)-2.5 E 49.51
+(relay The)117 366.6 R(name of the host that actually accepted \(or rej\
+ected\) this recipient.)2.5 E 55.61(dsn The)117 382.8 R
+(enhanced error code \(RFC 2034\) if a)2.5 E -.25(va)-.2 G(ilable.).25 E
+55.61(stat The)117 399 R(deli)2.5 E -.15(ve)-.25 G(ry status.).15 E
+1.012(Not all \214elds are present in all messages; for e)117 415.2 R
+1.012(xample, the relay is usually not listed for local)-.15 F(deli)117
+427.2 Q -.15(ve)-.25 G(ries.).15 E F0 2.5(2.1.2. Le)102 451.2 R -.1(ve)
+-.15 G(ls).1 E F1 .205(If you ha)142 467.4 R -.15(ve)-.2 G/F2 10
+/Times-Italic@0 SF(syslo)2.855 E(gd)-.1 E F1 .205(\(8\) or an equi)1.666
+F -.25(va)-.25 G .205(lent installed, you will be able to do logging.)
+.25 F .204(There is)5.204 F 2.787(al)117 479.4 S(ar)-2.787 E .287
+(ge amount of information that can be logged.)-.18 F .287
+(The log is arranged as a succession of le)5.287 F -.15(ve)-.25 G(ls.)
+.15 E .651(At the lo)117 491.4 R .651(west le)-.25 F -.15(ve)-.25 G
+3.151(lo).15 G .651(nly e)-3.151 F .651
+(xtremely strange situations are logged.)-.15 F .65(At the highest le)
+5.651 F -.15(ve)-.25 G .65(l, e).15 F -.15(ve)-.25 G 3.15(nt).15 G(he)
+-3.15 E .825(most mundane and uninteresting e)117 503.4 R -.15(ve)-.25 G
+.825(nts are recorded for posterity).15 F 5.826(.A)-.65 G 3.326(sac)
+-5.826 G(on)-3.326 E -.15(ve)-.4 G .826(ntion, log le).15 F -.15(ve)-.25
+G(ls).15 E .201
+(under ten are considered generally \231useful;\232 log le)117 515.4 R
+-.15(ve)-.25 G .201(ls abo).15 F .501 -.15(ve 6)-.15 H 2.701(4a).15 G .2
+(re reserv)-2.701 F .2(ed for deb)-.15 F .2(ugging pur)-.2 F(-)-.2 E 2.5
+(poses. Le)117 527.4 R -.15(ve)-.25 G(ls from 11\25564 are reserv).15 E
+(ed for v)-.15 E(erbose information that some sites might w)-.15 E(ant.)
+-.1 E 2.5(Ac)142 543.6 S(omplete description of the log le)-2.5 E -.15
+(ve)-.25 G(ls is gi).15 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(ns)-2.5 G
+(ection `)-2.5 E(`Log Le)-.74 E -.15(ve)-.25 G(l').15 E('.)-.74 E F0 2.5
+(2.2. Dumping)87 567.6 R(State)2.5 E F1 -1.1(Yo)127 583.8 S 2.563(uc)1.1
+G .063(an ask)-2.563 F F2(sendmail)2.563 E F1 .064(to log a dump of the\
+ open \214les and the connection cache by sending it a)2.563 F/F3 9
+/Times-Roman@0 SF(SIGUSR1)102 595.8 Q F1 2.5(signal. The)2.5 F
+(results are logged at)2.5 E F3(LOG_DEB)2.5 E(UG)-.09 E F1(priority)2.5
+E(.)-.65 E F0 2.5(2.3. The)87 619.8 R(Mail Queues)2.5 E F1 .649
+(Mail messages may either be deli)127 636 R -.15(ve)-.25 G .648
+(red immediately or be held for later deli).15 F -.15(ve)-.25 G(ry).15 E
+5.648(.H)-.65 G .648(eld mes-)-5.648 F
+(sages are placed into a holding directory called a mail queue.)102 648
+Q 2.5(Am)127 664.2 S(ail message may be queued for these reasons:)-2.5 E
+5<8349>107 680.4 S 2.546(fam)-5 G .047
+(ail message is temporarily undeli)-2.546 F -.15(ve)-.25 G .047
+(rable, it is queued and deli).15 F -.15(ve)-.25 G .047
+(ry is attempted later).15 F 5.047(.I)-.55 G 2.547(ft)-5.047 G(he)-2.547
+E .141(message is addressed to multiple recipients, it is queued only f\
+or those recipients to whom deli)115.5 692.4 R(v-)-.25 E
+(ery is not immediately possible.)115.5 704.4 Q 0 Cg EP
+%%Page: 16 12
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-16 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 5<8349>
+107 96 S 2.5(ft)-5 G(he SuperSafe option is set to true, all mail messa\
+ges are queued while deli)-2.5 E -.15(ve)-.25 G(ry is attempted.).15 E 5
+<8349>107 108 S 3.258(ft)-5 G .758(he Deli)-3.258 F -.15(ve)-.25 G .758
+(ryMode option is set to queue-only or defer).15 F 3.258(,a)-.4 G .758
+(ll mail is queued, and no immediate)-3.258 F(deli)115.5 120 Q -.15(ve)
+-.25 G(ry is attempted.).15 E 5<8349>107 132 S 2.815(ft)-5 G .315
+(he load a)-2.815 F -.15(ve)-.2 G .315(rage becomes higher than the v)
+.15 F .314(alue of the QueueLA option and the)-.25 F F0(QueueF)2.814 E
+(actor)-.25 E F1(\()115.5 144 Q F0(q)A F1 3.442(\)o)C .942(ption di)
+-3.442 F .942(vided by the dif)-.25 F .942
+(ference in the current load a)-.25 F -.15(ve)-.2 G .942(rage and the)
+.15 F F0(QueueLA)3.442 E F1 .942(option plus)3.442 F .403(one is less t\
+han the priority of the message, messages are queued rather than immedi\
+ately deli)115.5 156 R(v-)-.25 E(ered.)115.5 168 Q 5<834f>107 180 S .744
+(ne or more addresses are mark)-5 F .745(ed as e)-.1 F(xpensi)-.15 E
+1.045 -.15(ve a)-.25 H .745(nd deli).15 F -.15(ve)-.25 G .745
+(ry is postponed until the ne).15 F .745(xt queue)-.15 F
+(run or one or more address are mark)115.5 192 Q
+(ed as held via mailer which uses the hold mailer \215ag.)-.1 E 5<8354>
+107 204 S(he mail message has been mark)-5 E
+(ed as quarantined via a mail \214lter or rulesets.)-.1 E<83>107 216 Q
+F0 2.5(2.3.1. Queue)102 240 R(Gr)2.5 E(oups and Queue Dir)-.18 E
+(ectories)-.18 E F1 .339(There are one or more mail queues.)142 256.2 R
+.339(Each mail queue belongs to a queue group.)5.339 F .338(There is)
+5.338 F(al)117 268.2 Q -.1(wa)-.1 G .616(ys a def).1 F .616
+(ault queue group that is called `)-.1 F(`mqueue')-.74 E 3.117('\()-.74
+G .617(which is where messages go by def)-3.117 F(ault)-.1 E 2.244
+(unless otherwise speci\214ed\).)117 280.2 R 2.244
+(The directory or directories which comprise the def)7.244 F 2.243
+(ault queue)-.1 F 1.379
+(group are speci\214ed by the QueueDirectory option.)117 292.2 R 1.379
+(There are zero or more additional named)6.379 F
+(queue groups declared using the)117 304.2 Q F0(Q)2.5 E F1
+(command in the con\214guration \214le.)2.5 E .182(By def)142 320.4 R
+.181(ault, a queued message is placed in the queue group associated wit\
+h the \214rst recipi-)-.1 F 1.18(ent in the recipient list.)117 332.4 R
+3.68(Ar)6.18 G 1.181
+(ecipient address is mapped to a queue group as follo)-3.68 F 3.681
+(ws. First,)-.25 F(if)3.681 E 1.222(there is a ruleset called `)117
+344.4 R(`queue)-.74 E(group')-.15 E 1.222
+(', and if this ruleset maps the address to a queue group)-.74 F 1.39
+(name, then that queue group is chosen.)117 356.4 R 1.39
+(That is, the ar)6.39 F 1.39(gument for the ruleset is the recipient)
+-.18 F .79(address and the result should be)117 368.4 R F0($#)3.29 E F1
+(follo)3.29 E .79(wed by the name of a queue group.)-.25 F .79
+(Otherwise, if the)5.79 F 1.457(mailer associated with the address spec\
+i\214es a queue group, then that queue group is chosen.)117 380.4 R
+(Otherwise, the def)117 392.4 Q(ault queue group is chosen.)-.1 E 3.379
+(Am)142 408.6 S .879
+(essage with multiple recipients will be split if dif)-3.379 F .878
+(ferent queue groups are chosen by)-.25 F
+(the mapping of recipients to queue groups.)117 420.6 Q 1.606(When a me\
+ssage is placed in a queue group, and the queue group has more than one)
+142 436.8 R(queue, a queue is selected randomly)117 448.8 Q(.)-.65 E
+1.633(If a message with multiple recipients is placed into a queue grou\
+p with the ')142 465 R 1.632(r' option)-.5 F 1.055
+(\(maximum number of recipients per message\) set to a positi)117 477 R
+1.356 -.15(ve v)-.25 H(alue)-.1 E/F2 10/Times-Italic@0 SF(N)3.556 E F1
+3.556(,a)C 1.056(nd if there are more)-3.556 F(than)117 489 Q F2(N)2.905
+E F1 .405(recipients in the message, then the message will be split int\
+o multiple messages, each of)2.905 F(which ha)117 501 Q .3 -.15(ve a)-.2
+H 2.5(tm).15 G(ost)-2.5 E F2(N)2.5 E F1(recipients.)2.5 E .06
+(Notice: if multiple queue groups are used, do)142 517.2 R F0(not)2.56 E
+F1(mo)2.56 E .36 -.15(ve q)-.15 H .06
+(ueue \214les around, e.g., into a dif-).15 F 1.436
+(ferent queue directory)117 529.2 R 6.436(.T)-.65 G 1.436(his may ha)
+-6.436 F 1.735 -.15(ve w)-.2 H 1.435(eird ef).15 F 1.435
+(fects and can cause mail not to be deli)-.25 F -.15(ve)-.25 G(red.).15
+E(Queue \214les and directories should be treated as opaque and should \
+not be manipulated directly)117 541.2 Q(.)-.65 E F0 2.5(2.3.2. Queue)102
+565.2 R(Runs)2.5 E F2(sendmail)142 581.4 Q F1 1(has tw)3.5 F 3.5(od)-.1
+G(if)-3.5 E 1(ferent w)-.25 F 1.001(ays to process the queue\(s\).)-.1 F
+1.001(The \214rst one is to start queue)6.001 F .104
+(runners after certain interv)117 593.4 R .104(als \(`)-.25 F(`normal')
+-.74 E 2.604('q)-.74 G .103(ueue runners\), the second one is to k)
+-2.604 F .103(eep queue runner)-.1 F .4(processes around \(`)117 605.4 R
+(`persistent')-.74 E 2.9('q)-.74 G .401(ueue runners\).)-2.9 F(Ho)5.401
+E 2.901(wt)-.25 G 2.901(os)-2.901 G .401
+(elect either of these types is discussed)-2.901 F 1.349
+(in the appendix `)117 617.4 R 1.348(`COMMAND LINE FLA)-.74 F(GS')-.4 E
+3.848('. Persistent)-.74 F 1.348(queue runners ha)3.848 F 1.648 -.15
+(ve t)-.2 H 1.348(he adv).15 F(antage)-.25 E .054(that no ne)117 629.4 R
+2.554(wp)-.25 G .054(rocesses need to be spa)-2.554 F .055
+(wned at certain interv)-.15 F .055(als; the)-.25 F 2.555(yj)-.15 G .055
+(ust sleep for a speci\214ed time)-2.555 F .554(after the)117 641.4 R
+3.054<798c>-.15 G .554(nished a queue run.)-3.054 F .554(Another adv)
+5.554 F .554(antage of persistent queue runners is that only one)-.25 F
+.379(process belonging to a w)117 653.4 R .379(orkgroup \(a w)-.1 F .38
+(orkgroup is a set of queue groups\) collects the data for a)-.1 F .489
+(queue run and then multiple queue runner may go ahead using that data.)
+117 665.4 R .488(This can signi\214cantly)5.488 F .861(reduce the disk \
+I/O necessary to read the queue \214les compared to starting multiple q\
+ueue run-)117 677.4 R .55(ners directly)117 689.4 R 5.55(.T)-.65 G .55
+(heir disadv)-5.55 F .55(antage is that a ne)-.25 F 3.049(wq)-.25 G .549
+(ueue run is only started after all queue runners)-3.049 F 1.043
+(belonging to a group \214nished their tasks.)117 701.4 R 1.044
+(In case one of the queue runners tries deli)6.043 F -.15(ve)-.25 G
+1.044(ry to a).15 F(slo)117 713.4 Q 3.283(wr)-.25 G .783
+(ecipient site at the end of a queue run, the ne)-3.283 F .782
+(xt queue run may be substantially delayed.)-.15 F .741
+(In general this should be smoothed out due to the distrib)117 725.4 R
+.741(ution of those slo)-.2 F 3.242(wj)-.25 G .742(obs, ho)-3.242 F(we)
+-.25 E -.15(ve)-.25 G 1.542 -.4(r, f).15 H(or).4 E 0 Cg EP
+%%Page: 17 13
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-17)195.86 E/F1 10/Times-Roman@0 SF .459(sites with small number\
+ of queue entries this might introduce noticable delays.)117 96 R .458
+(In general, per)5.458 F(-)-.2 E
+(sistent queue runners are only useful for sites with big queues.)117
+108 Q F0 2.5(2.3.3. Manual)102 132 R(Inter)2.5 E -.1(ve)-.1 G(ntion).1 E
+F1 1.049
+(Under normal conditions the mail queue will be processed transparently)
+142 148.2 R 6.049(.H)-.65 G -.25(ow)-6.049 G -2.15 -.25(ev e).25 H 1.85
+-.4(r, y).25 H(ou).4 E .152(may \214nd that manual interv)117 160.2 R
+.151(ention is sometimes necessary)-.15 F 5.151(.F)-.65 G .151(or e)
+-5.301 F .151(xample, if a major host is do)-.15 F(wn)-.25 E .103
+(for a period of time the queue may become clogged.)117 172.2 R
+(Although)5.103 E/F2 10/Times-Italic@0 SF(sendmail)2.604 E F1 .104
+(ought to reco)2.604 F -.15(ve)-.15 G 2.604(rg).15 G(race-)-2.604 E .249
+(fully when the host comes up, you may \214nd performance unacceptably \
+bad in the meantime.)117 184.2 R(In)5.248 E .538(that case you w)117
+196.2 R .538
+(ant to check the content of the queue and manipulate it as e)-.1 F .539
+(xplained in the ne)-.15 F(xt)-.15 E(tw)117 208.2 Q 2.5(os)-.1 G
+(ections.)-2.5 E F0 2.5(2.3.4. Printing)102 232.2 R(the queue)2.5 E F1
+.862(The contents of the queue\(s\) can be printed using the)142 248.4 R
+F2(mailq)3.361 E F1 .861(command \(or by specifying)3.361 F(the)117
+260.4 Q F0(\255bp)2.5 E F1(\215ag to)2.5 E F2(sendmail)2.5 E F1(\):)A
+(mailq)157 276.6 Q 1.673(This will produce a listing of the queue id')
+117 292.8 R 1.673(s, the size of the message, the date the message)-.55
+F .528(entered the queue, and the sender and recipients.)117 304.8 R
+.527(If shared memory support is compiled in, the)5.527 F(\215ag)117
+316.8 Q F0(\255bP)3.014 E F1 .514
+(can be used to print the number of entries in the queue\(s\), pro)3.014
+F .515(vided a process updates)-.15 F .541(the data.)117 328.8 R(Ho)
+5.541 E(we)-.25 E -.15(ve)-.25 G 1.341 -.4(r, a).15 H 3.041(se).4 G .541
+(xplained earlier)-3.191 F 3.041(,t)-.4 G .54
+(he output might be slightly wrong, since access to the)-3.041 F 1.43
+(shared memory is not lock)117 340.8 R 3.931(ed. F)-.1 F 1.431(or e)-.15
+F 1.431(xample, `)-.15 F(`unkno)-.74 E 1.431(wn number of entries')-.25
+F 3.931('m)-.74 G 1.431(ight be sho)-3.931 F(wn.)-.25 E(The internal co\
+unters are updated after each queue run to the correct v)117 352.8 Q
+(alue ag)-.25 E(ain.)-.05 E F0 2.5(2.3.5. F)102 376.8 R(or)-.25 E
+(cing the queue)-.18 E F2(Sendmail)142 393 Q F1 .353
+(should run the queue automatically at interv)2.853 F 2.852(als. When)
+-.25 F .352(using multiple queues, a)2.852 F .276
+(separate process will by def)117 405 R .276
+(ault be created to run each of the queues unless the queue run is ini-)
+-.1 F .614(tiated by a user with the v)117 417 R .613(erbose \215ag.)
+-.15 F .613(The algorithm is to read and sort the queue, and then to)
+5.613 F .159(attempt to process all jobs in order)117 429 R 5.159(.W)
+-.55 G .159(hen it attempts to run the job,)-5.159 F F2(sendmail)2.659 E
+F1 .159(\214rst checks to see)2.659 F(if the job is lock)117 441 Q 2.5
+(ed. If)-.1 F(so, it ignores the job)2.5 E(.)-.4 E .338
+(There is no attempt to insure that only one queue processor e)142 457.2
+R .338(xists at an)-.15 F 2.838(yt)-.15 G .338(ime, since there)-2.838 F
+.094(is no guarantee that a job cannot tak)117 469.2 R 2.595(ef)-.1 G
+(ore)-2.595 E -.15(ve)-.25 G 2.595(rt).15 G 2.595(op)-2.595 G .095
+(rocess \(ho)-2.595 F(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2(sendmail)
+2.995 E F1 .095(does include heuris-)2.595 F 1.086(tics to try to abort\
+ jobs that are taking absurd amounts of time; technically)117 481.2 R
+3.586(,t)-.65 G 1.086(his violates RFC)-3.586 F .461(821, b)117 493.2 R
+.461(ut is blessed by RFC 1123\).)-.2 F .461
+(Due to the locking algorithm, it is impossible for one job to)5.461 F
+1.087(freeze the entire queue.)117 505.2 R(Ho)6.086 E(we)-.25 E -.15(ve)
+-.25 G 1.886 -.4(r, a).15 H 3.586(nu).4 G(ncooperati)-3.586 E 1.386 -.15
+(ve r)-.25 H 1.086(ecipient host or a program recipient that).15 F(ne)
+117 517.2 Q -.15(ve)-.25 G 3.35(rr).15 G .85(eturns can accumulate man)
+-3.35 F 3.351(yp)-.15 G .851(rocesses in your system.)-3.351 F
+(Unfortunately)5.851 E 3.351(,t)-.65 G .851(here is no com-)-3.351 F
+(pletely general w)117 529.2 Q(ay to solv)-.1 E 2.5(et)-.15 G(his.)-2.5
+E .082(In some cases, you may \214nd that a major host going do)142
+545.4 R .082(wn for a couple of days may create)-.25 F 2.924(ap)117
+557.4 S(rohibiti)-2.924 E -.15(ve)-.25 G .424(ly lar).15 F .424
+(ge queue.)-.18 F .424(This will result in)5.424 F F2(sendmail)2.924 E
+F1 .425(spending an inordinate amount of time)2.924 F 1.085
+(sorting the queue.)117 569.4 R 1.085(This situation can be \214x)6.085
+F 1.084(ed by mo)-.15 F 1.084(ving the queue to a temporary place and)
+-.15 F .022(creating a ne)117 581.4 R 2.522(wq)-.25 G 2.522(ueue. The)
+-2.522 F .022(old queue can be run later when the of)2.522 F .023
+(fending host returns to service.)-.25 F 1.6 -.8(To d)142 597.6 T 2.5
+(ot).8 G(his, it is acceptable to mo)-2.5 E .3 -.15(ve t)-.15 H
+(he entire queue directory:).15 E(cd /v)157 613.8 Q(ar/spool)-.25 E
+(mv mqueue omqueue; mkdir mqueue; chmod 0700 mqueue)157 625.8 Q -1.1(Yo)
+117 642 S 2.709(us)1.1 G .209(hould then kill the e)-2.709 F .209(xisti\
+ng daemon \(since it will still be processing in the old queue direc-)
+-.15 F(tory\) and create a ne)117 654 Q 2.5(wd)-.25 G(aemon.)-2.5 E 1.6
+-.8(To r)142 670.2 T(un the old mail queue, issue the follo).8 E
+(wing command:)-.25 E(/usr/sbin/sendmail \255C /etc/mail/queue.cf \255q)
+157 686.4 Q(The)117 702.6 Q F0<ad43>3.312 E F1 .813
+(\215ag speci\214es an alternate con\214guration \214le)3.312 F F0
+(queue.cf)3.313 E F1 .813(which should refer to the mo)3.313 F -.15(ve)
+-.15 G(d).15 E(queue directory)117 714.6 Q 0 Cg EP
+%%Page: 18 14
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-18 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 2.5(OQ)
+157 96 S(ueueDirectory=/v)-2.5 E(ar/spool/omqueue)-.25 E .649(and the)
+117 112.2 R F0<ad71>3.149 E F1 .649(\215ag says to just run e)3.149 F
+-.15(ve)-.25 G .648(ry job in the queue.).15 F -1.1(Yo)5.648 G 3.148(uc)
+1.1 G .648(an also specify the mo)-3.148 F -.15(ve)-.15 G 3.148(dq).15 G
+(ueue)-3.148 E(directory on the command line)117 124.2 Q
+(/usr/sbin/sendmail \255oQ/v)157 140.4 Q(ar/spool/omqueue \255q)-.25 E
+-.2(bu)117 156.6 S 3.235(tt).2 G .735(his requires that you do not ha)
+-3.235 F 1.036 -.15(ve q)-.2 H .736
+(ueue groups in the con\214guration \214le, because those are).15 F
+1.071(not subdirectories of the mo)117 168.6 R -.15(ve)-.15 G 3.571(dd)
+.15 G(irectory)-3.571 E 6.071(.S)-.65 G 1.071(ee the section about `)
+-6.071 F 1.07(`Queue Group Declaration')-.74 F(')-.74 E .011
+(for details; you most lik)117 180.6 R .011(ely need a dif)-.1 F .012
+(ferent con\214guration \214le to correctly deal with this problem.)-.25
+F(Ho)117 192.6 Q(we)-.25 E -.15(ve)-.25 G 1.818 -.4(r, a p).15 H 1.018
+(roper con\214guration of queue groups should a).4 F -.2(vo)-.2 G 1.017
+(id \214lling up queue directories, so).2 F .367(you shouldn')117 204.6
+R 2.867(tr)-.18 G .367(un into this problem.)-2.867 F .367(If you ha)
+5.367 F .668 -.15(ve a t)-.2 H(endenc).15 E 2.868(yt)-.15 G -2.1 -.25
+(ow a)-2.868 H .368(rd v).25 F -.1(oy)-.2 G .368
+(eurism, you can use the).1 F F0<ad76>117 216.6 Q F1(\215ag to w)2.5 E
+(atch what is going on.)-.1 E
+(When the queue is \214nally emptied, you can remo)142 232.8 Q .3 -.15
+(ve t)-.15 H(he directory:).15 E(rmdir /v)157 249 Q(ar/spool/omqueue)
+-.25 E F0 2.5(2.3.6. Quarantined)102 277.2 R(Queue Items)2.5 E F1 1.183
+(It is possible to "quarantine" mail messages, otherwise kno)142 293.4 R
+1.182(wn as en)-.25 F -.15(ve)-.4 G 3.682(lopes. En).15 F -.15(ve)-.4 G
+(lopes).15 E .097(\(queue \214les\) are stored b)117 305.4 R .097
+(ut not considered for deli)-.2 F -.15(ve)-.25 G .098
+(ry or display unless the "quarantine" state of).15 F 1.237(the en)117
+317.4 R -.15(ve)-.4 G 1.236(lope is undone or deli).15 F -.15(ve)-.25 G
+1.236(ry or display of quarantined items is requested.).15 F
+(Quarantined)6.236 E 1.07(messages are tagged by using a dif)117 329.4 R
+1.07(ferent name for the queue \214le, 'hf)-.25 F 3.57('i).55 G 1.07
+(nstead of 'qf)-3.57 F 1.07(', and by).55 F
+(adding the quarantine reason to the queue \214le.)117 341.4 Q(Deli)142
+357.6 Q -.15(ve)-.25 G .323
+(ry or display of quarantined items can be requested using the).15 F F0
+(\255qQ)2.823 E F1 .322(\215ag to)2.823 F/F2 10/Times-Italic@0 SF
+(sendmail)2.822 E F1(or)117 369.6 Q F2(mailq)4.277 E F1 6.777(.A)C
+(dditionally)-6.777 E 4.277(,m)-.65 G 1.778
+(essages already in the queue can be quarantined or unquarantined)-4.277
+F(using the ne)117 381.6 Q(w)-.25 E F0<ad51>2.5 E F1
+(\215ag to sendmail.)2.5 E -.15(Fo)5 G 2.5(re).15 G(xample,)-2.65 E
+(sendmail -Qreason -q[!][I|R|S][matchstring])157 397.8 Q .875(Quarantin\
+es the normal queue items matching the criteria speci\214ed by the)117
+414 R F0(-q[!][I|R|S][match-)3.374 E(string])117 426 Q F1
+(using the reason gi)2.5 E -.15(ve)-.25 G 2.5(no).15 G 2.5(nt)-2.5 G(he)
+-2.5 E F0<ad51>2.5 E F1 2.5(\215ag. Lik)2.5 F -.25(ew)-.1 G(ise,).25 E
+(sendmail -qQ -Q[reason] -q[!][I|R|S|Q][matchstring])157 442.2 Q 1.164(\
+Change the quarantine reason for the quarantined items matching the cri\
+teria speci\214ed by the)117 458.4 R F0(-q[!][I|R|S|Q][matchstring])117
+470.4 Q F1(using the reason gi)2.5 E -.15(ve)-.25 G 2.5(no).15 G 2.5(nt)
+-2.5 G(he)-2.5 E F0<ad51>2.5 E F1 2.5(\215ag. If)2.5 F
+(there is no reason,)2.5 E .757(unquarantine the matching items and mak)
+119.5 482.4 R 3.257(et)-.1 G .757(hem normal queue items.)-3.257 F .757
+(Note that the)5.757 F F0(\255qQ)3.257 E F1(\215ag)3.257 E(tells sendma\
+il to operate on quarantined items instead of normal items.)117 494.4 Q
+F0 2.5(2.4. Disk)87 518.4 R(Based Connection Inf)2.5 E(ormation)-.25 E
+F2(Sendmail)127 534.6 Q F1 .596(stores a lar)3.096 F .597
+(ge amount of information about each remote system it has connected to)
+-.18 F .003(in memory)102 546.6 R 2.503(.I)-.65 G 2.503(ti)-2.503 G
+2.503(sp)-2.503 G .002(ossible to preserv)-2.503 F 2.502(es)-.15 G .002
+(ome of this information on disk as well, by using the)-2.502 F F0
+(HostSta-)2.502 E(tusDir)102 558.6 Q(ectory)-.18 E F1 .229
+(option, so that it may be shared between se)2.729 F -.15(ve)-.25 G .229
+(ral in).15 F -.2(vo)-.4 G .23(cations of).2 F F2(sendmail)2.73 E F1
+5.23(.T)C .23(his allo)-5.23 F(ws)-.25 E .831(mail to be queued immedia\
+tely or skipped during a queue run if there has been a recent f)102
+570.6 R .831(ailure in)-.1 F .371(connecting to a remote machine.)102
+582.6 R .371
+(Note: information about a remote system is stored in a \214le whose)
+5.371 F .694(pathname consists of the components of the hostname in re)
+102 594.6 R -.15(ve)-.25 G .693(rse order).15 F 5.693(.F)-.55 G .693
+(or e)-5.843 F .693(xample, the informa-)-.15 F 1.102(tion for)102 606.6
+R F0(host.example.com)3.602 E F1 1.102(is stored in)3.602 F F0
+(com./example./host)3.602 E F1 6.103(.F)C 1.103(or top-le)-6.253 F -.15
+(ve)-.25 G 3.603(ld).15 G 1.103(omains lik)-3.603 F(e)-.1 E F0(com)3.603
+E F1(this)3.603 E 1.382(can create a lar)102 618.6 R 1.381
+(ge number of subdirectories which on some \214lesystems can e)-.18 F
+1.381(xhaust some limits.)-.15 F(Moreo)102 630.6 Q -.15(ve)-.15 G 2.432
+-.4(r, t).15 H 1.632(he performance of lookups in directory with thousa\
+nds of entries can be f).4 F 1.633(airly slo)-.1 F(w)-.25 E
+(depending on the \214lesystem implementation.)102 642.6 Q 1.439
+(Additionally enabling)127 658.8 R F0(SingleThr)3.939 E(eadDeli)-.18 E
+-.1(ve)-.1 G(ry).1 E F1 1.439(has the added ef)3.939 F 1.439
+(fect of single-threading mail)-.25 F(deli)102 670.8 Q -.15(ve)-.25 G
+1.61(ry to a destination.).15 F 1.611
+(This can be quite helpful if the remote machine is running an SMTP)6.61
+F(serv)102 682.8 Q 1.011(er that is easily o)-.15 F -.15(ve)-.15 G 1.011
+(rloaded or cannot accept more than a single connection at a time, b).15
+F 1.01(ut can)-.2 F .458
+(cause some messages to be punted to a future queue run.)102 694.8 R
+.458(It also applies to)5.458 F F2(all)2.958 E F1 .458
+(hosts, so setting this)2.958 F .282(because you ha)102 706.8 R .582
+-.15(ve o)-.2 H .281(ne machine on site that runs some softw).15 F .281
+(are that is easily o)-.1 F -.15(ve)-.15 G .281(rrun can cause mail).15
+F .315(to other hosts to be slo)102 718.8 R .315(wed do)-.25 F 2.815
+(wn. If)-.25 F .315(this option is set, you probably w)2.815 F .315
+(ant to set the)-.1 F F0(MinQueueAge)2.815 E 0 Cg EP
+%%Page: 19 15
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-19)195.86 E/F1 10/Times-Roman@0 SF .872
+(option as well and run the queue f)102 96 R .871
+(airly frequently; this w)-.1 F .871
+(ay jobs that are skipped because another)-.1 F/F2 10/Times-Italic@0 SF
+(sendmail)102 108 Q F1 .363
+(is talking to the same host will be tried ag)2.863 F .364
+(ain quickly rather than being delayed for a long)-.05 F(time.)102 120 Q
+1.099
+(The disk based host information is stored in a subdirectory of the)127
+136.2 R F0(mqueue)3.598 E F1 1.098(directory called)3.598 F F0
+(.hoststat)102 150.2 Q/F3 7/Times-Roman@0 SF(7)-4 I F1 6.749(.R)4 K(emo)
+-6.749 E 1.749(ving this directory and its subdirectories has an ef)-.15
+F 1.75(fect similar to the)-.25 F F2(pur)4.25 E -.1(ge)-.37 G(stat).1 E
+F1 1.215(command and is completely safe.)102 162.2 R(Ho)6.215 E(we)-.25
+E -.15(ve)-.25 G -.4(r,).15 G F2(pur)4.115 E -.1(ge)-.37 G(stat).1 E F1
+1.215(only remo)3.715 F -.15(ve)-.15 G 3.715(se).15 G 1.215(xpired \(T)
+-3.865 F(imeout.hoststatus\))-.35 E 3.539(data. The)102 174.2 R 1.039
+(information in these directories can be perused with the)3.539 F F2
+(hoststat)3.54 E F1 1.04(command, which will)3.54 F .065(indicate the h\
+ost name, the last access, and the status of that access.)102 186.2 R
+.064(An asterisk in the left most col-)5.065 F(umn indicates that a)102
+198.2 Q F2(sendmail)2.5 E F1(process currently has the host lock)2.5 E
+(ed for mail deli)-.1 E -.15(ve)-.25 G(ry).15 E(.)-.65 E .53
+(The disk based connection information is treated the same w)127 214.4 R
+.53(ay as memory based connection)-.1 F .536
+(information for the purpose of timeouts.)102 226.4 R .536(By def)5.536
+F .536(ault, information about host f)-.1 F .536(ailures is v)-.1 F .536
+(alid for 30)-.25 F 2.5(minutes. This)102 238.4 R
+(can be adjusted with the)2.5 E F0 -.18(Ti)2.5 G(meout.hoststatus).18 E
+F1(option.)2.5 E 1.51
+(The connection information stored on disk may be e)127 254.6 R 1.51
+(xpired at an)-.15 F 4.01(yt)-.15 G 1.51(ime with the)-4.01 F F2(pur)
+4.01 E -.1(ge)-.37 G(stat).1 E F1 2.093(command or by in)102 266.6 R -.2
+(vo)-.4 G 2.092(king sendmail with the).2 F F0(\255bH)4.592 E F1 4.592
+(switch. The)4.592 F 2.092(connection information may be)4.592 F(vie)102
+278.6 Q(wed with the)-.25 E F2(hoststat)2.5 E F1(command or by in)2.5 E
+-.2(vo)-.4 G(king sendmail with the).2 E F0(\255bh)2.5 E F1(switch.)2.5
+E F0 2.5(2.5. The)87 302.6 R(Ser)2.5 E(vice Switch)-.1 E F1 1.416(The i\
+mplementation of certain system services such as host and user name loo\
+kup is con-)127 318.8 R 1.322(trolled by the service switch.)102 330.8 R
+1.321(If the host operating system supports such a switch, and sendmail)
+6.322 F(kno)102 342.8 Q .383(ws about it,)-.25 F F2(sendmail)2.883 E F1
+.383(will use the nati)2.883 F .683 -.15(ve ve)-.25 H 2.883
+(rsion. Ultrix,).15 F .384(Solaris, and DEC OSF/1 are e)2.883 F(xamples)
+-.15 E(of such systems)102 356.8 Q F3(8)-4 I F1(.)4 I .88(If the underl\
+ying operating system does not support a service switch \(e.g., SunOS 4\
+.X, HP-)127 373 R .212(UX, BSD\) then)102 385 R F2(sendmail)2.712 E F1
+.212(will pro)2.712 F .212(vide a stub implementation.)-.15 F(The)5.211
+E F0(Ser)2.711 E(viceSwitchFile)-.1 E F1 .211(option points)2.711 F .937
+(to the name of a \214le that has the service de\214nitions.)102 397 R
+.937(Each line has the name of a service and the)5.937 F
+(possible implementations of that service.)102 409 Q -.15(Fo)5 G 2.5(re)
+.15 G(xample, the \214le:)-2.65 E 12.94(hosts dns)142 425.2 R
+(\214les nis)2.5 E 6.84(aliases \214les)142 437.2 R(nis)2.5 E .329
+(will ask)102 453.4 R F2(sendmail)2.829 E F1 .328
+(to look for hosts in the Domain Name System \214rst.)2.829 F .328
+(If the requested host name is)5.328 F .379
+(not found, it tries local \214les, and if that f)102 465.4 R .379
+(ails it tries NIS.)-.1 F(Similarly)5.379 E 2.879(,w)-.65 G .379
+(hen looking for aliases it will)-2.879 F
+(try the local \214les \214rst follo)102 477.4 Q(wed by NIS.)-.25 E .494
+(Notice: since)127 493.6 R F2(sendmail)2.994 E F1 .493
+(must access MX records for correct operation, it will use DNS if it is)
+2.993 F(con\214gured in the)102 505.6 Q F0(Ser)2.5 E(viceSwitchFile)-.1
+E F1 2.5(\214le. Hence)2.5 F(an entry lik)2.5 E(e)-.1 E 12.94
+(hosts \214les)142 521.8 R(dns)2.5 E(will not a)102 538 Q -.2(vo)-.2 G
+(id DNS lookups e).2 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fah)-2.5 G
+(ost can be found in /etc/hosts.)-2.5 E 1.269
+(Service switches are not completely inte)127 554.2 R 3.769(grated. F)
+-.15 F 1.269(or e)-.15 F 1.269(xample, despite the f)-.15 F 1.27
+(act that the host)-.1 F .294(entry listed in the abo)102 566.2 R .594
+-.15(ve ex)-.15 H .293
+(ample speci\214es to look in NIS, on SunOS this w).15 F(on')-.1 E 2.793
+(th)-.18 G .293(appen because the)-2.793 F(system implementation of)102
+578.2 Q F2 -.1(ge)2.5 G(thostbyname).1 E F1(\(3\) doesn')1.666 E 2.5(tu)
+-.18 G(nderstand this.)-2.5 E F0 2.5(2.6. The)87 602.2 R(Alias Database)
+2.5 E F1 2.074(After recipient addresses are read from the SMTP connect\
+ion or command line the)127 618.4 R 4.574(ya)-.15 G(re)-4.574 E .6
+(parsed by ruleset 0, which must resolv)102 630.4 R 3.1(et)-.15 G 3.099
+(oa{)-3.1 G F2(mailer)-3.099 E F1(,)A F2(host)3.099 E F1(,)A F2(addr)
+3.099 E(ess)-.37 E F1 3.099(}t)C 3.099(riple. If)-3.099 F .599
+(the \215ags selected by)3.099 F(the)102 642.4 Q F2(mailer)3.099 E F1
+.599(include the)3.099 F F0(A)3.099 E F1 .599(\(aliasable\) \215ag, the)
+3.099 F F2(addr)3.099 E(ess)-.37 E F1 .6(part of the triple is look)
+3.099 F .6(ed up as the k)-.1 F .9 -.15(ey \()-.1 H(i.e.,).15 E 1.046
+(the left hand side\) in the alias database.)102 654.4 R 1.045
+(If there is a match, the address is deleted from the send)6.045 F .32
+LW 76 664 72 664 DL 80 664 76 664 DL 84 664 80 664 DL 88 664 84 664 DL
+92 664 88 664 DL 96 664 92 664 DL 100 664 96 664 DL 104 664 100 664 DL
+108 664 104 664 DL 112 664 108 664 DL 116 664 112 664 DL 120 664 116 664
+DL 124 664 120 664 DL 128 664 124 664 DL 132 664 128 664 DL 136 664 132
+664 DL 140 664 136 664 DL 144 664 140 664 DL 148 664 144 664 DL 152 664
+148 664 DL 156 664 152 664 DL 160 664 156 664 DL 164 664 160 664 DL 168
+664 164 664 DL 172 664 168 664 DL 176 664 172 664 DL 180 664 176 664 DL
+184 664 180 664 DL 188 664 184 664 DL 192 664 188 664 DL 196 664 192 664
+DL 200 664 196 664 DL 204 664 200 664 DL 208 664 204 664 DL 212 664 208
+664 DL 216 664 212 664 DL/F4 5/Times-Roman@0 SF(7)93.6 674.4 Q/F5 8
+/Times-Roman@0 SF(This is the usual v)3.2 I(alue of the)-.2 E/F6 8
+/Times-Bold@0 SF(HostStatusDir)2 E(ectory)-.144 E F5
+(option; it can, of course, go an)2 E(ywhere you lik)-.12 E 2(ei)-.08 G
+2(ny)-2 G(our \214lesystem.)-2 E F4(8)93.6 688 Q F5 .108
+(HP-UX 10 has service switch support, b)3.2 J .108
+(ut since the APIs are apparently not a)-.16 F -.2(va)-.16 G .107
+(ilable in the libraries).2 F/F7 8/Times-Italic@0 SF(sendmail)2.107 E F5
+.107(does not use the)2.107 F(nati)72 700.8 Q .24 -.12(ve s)-.2 H
+(ervice switch in this release.).12 E 0 Cg EP
+%%Page: 20 16
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-20 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .776(que\
+ue and all addresses on the right hand side of the alias are added in p\
+lace of the alias that w)102 96 R(as)-.1 E 2.683(found. This)102 108 R
+.183(is a recursi)2.683 F .483 -.15(ve o)-.25 H .183(peration, so alias\
+es found in the right hand side of the alias are similarly).15 F -.15
+(ex)102 120 S(panded.).15 E 3.718(The alias database e)127 136.2 R 3.718
+(xists in tw)-.15 F 6.218(of)-.1 G 6.218(orms. One)-6.218 F 3.718
+(is a te)6.218 F 3.718(xt form, maintained in the \214le)-.15 F/F2 10
+/Times-Italic@0 SF(/etc/mail/aliases.)102 148.2 Q F1
+(The aliases are of the form)5 E(name: name1, name2, ...)142 164.4 Q
+(Only local names may be aliased; e.g.,)102 180.6 Q(eric@prep.ai.MIT)142
+196.8 Q(.EDU: eric@CS.Berk)-.74 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E
+1.088(will not ha)102 215 R 1.388 -.15(ve t)-.2 H 1.088(he desired ef)
+.15 F 1.088(fect \(e)-.25 F 1.088(xcept on prep.ai.MIT)-.15 F 1.088
+(.EDU, and the)-.74 F 3.588(yp)-.15 G 1.088(robably don')-3.588 F 3.587
+(tw)-.18 G 1.087(ant me\))-3.687 F/F3 7/Times-Roman@0 SF(9)-4 I F1(.)4 I
+.986(Aliases may be continued by starting an)102 227 R 3.486(yc)-.15 G
+.986(ontinuation lines with a space or a tab or by putting a)-3.486 F
+.776(backslash directly before the ne)102 239 R 3.276(wline. Blank)-.25
+F .776(lines and lines be)3.276 F .776
+(ginning with a sharp sign \(\231#\232\) are)-.15 F(comments.)102 251 Q
+.65(The second form is processed by the)127 269.2 R F2(ndbm)3.15 E F1
+(\(3\))1.666 E F3(10)-4 I F1 .65(or the Berk)3.15 4 N(ele)-.1 E 3.15(yD)
+-.15 G 3.15(Bl)-3.15 G(ibrary)-3.15 E 5.651(.T)-.65 G .651
+(his form is in)-5.651 F .794(the \214le)102 281.2 R F2
+(/etc/mail/aliases.db)3.294 E F1 .794(\(if using NEWDB\) or)3.294 F F2
+(/etc/mail/aliases.dir)3.294 E F1(and)3.294 E F2(/etc/mail/aliases.pa)
+3.294 E(g)-.1 E F1(\(if)3.294 E 1.126(using NDBM\).)102 293.2 R 1.126
+(This is the form that)6.126 F F2(sendmail)3.627 E F1 1.127
+(actually uses to resolv)3.627 F 3.627(ea)-.15 G 3.627(liases. This)
+-3.627 F 1.127(technique is)3.627 F(used to impro)102 305.2 Q .3 -.15
+(ve p)-.15 H(erformance.).15 E
+(The control of search order is actually set by the service switch.)127
+321.4 Q(Essentially)5 E 2.5(,t)-.65 G(he entry)-2.5 E 2.5(OA)142 337.6 S
+(liasFile=switch:aliases)-2.5 E .927(is al)102 353.8 R -.1(wa)-.1 G .927
+(ys added as the \214rst alias entry; also, the \214rst alias \214le na\
+me without a class \(e.g., without).1 F .268(\231nis:\232 on the front\
+\) will be used as the name of the \214le for a `)102 365.8 R(`\214les')
+-.74 E 2.769('e)-.74 G .269(ntry in the aliases switch.)-2.769 F -.15
+(Fo)5.269 G(r).15 E -.15(ex)102 377.8 S
+(ample, if the con\214guration \214le contains).15 E 2.5(OA)142 394 S
+(liasFile=/etc/mail/aliases)-2.5 E(and the service switch contains)102
+410.2 Q 6.84(aliases nis)142 426.4 R(\214les nisplus)2.5 E 1.164(then a\
+liases will \214rst be searched in the NIS database, then in /etc/mail/\
+aliases, then in the NIS+)102 442.6 R(database.)102 454.6 Q -1.1(Yo)127
+470.8 S 2.5(uc)1.1 G(an also use)-2.5 E/F4 9/Times-Roman@0 SF(NIS)2.5 E
+F1(-based alias \214les.)A -.15(Fo)5 G 2.5(re).15 G
+(xample, the speci\214cation:)-2.65 E 2.5(OA)142 487 S
+(liasFile=/etc/mail/aliases)-2.5 E 2.5(OA)142 499 S
+(liasFile=nis:mail.aliases@my)-2.5 E(.nis.domain)-.65 E .143(will \214r\
+st search the /etc/mail/aliases \214le and then the map named \231mail.\
+aliases\232 in \231my)102 515.2 R(.nis.domain\232.)-.65 E -.8(Wa)102
+527.2 S .59(rning: if you b).8 F .59(uild your o)-.2 F(wn)-.25 E F4(NIS)
+3.09 E F1 .589(-based alias \214les, be sure to pro)B .589(vide the)-.15
+F F0<ad6c>3.089 E F1 .589(\215ag to)3.089 F F2(mak)3.089 E(edbm)-.1 E F1
+(\(8\))A .159(to map upper case letters in the k)102 539.2 R -.15(ey)-.1
+G 2.659(st).15 G 2.659(ol)-2.659 G -.25(ow)-2.659 G .159
+(er case; otherwise, aliases with upper case letters in their).25 F
+(names w)102 551.2 Q(on')-.1 E 2.5(tm)-.18 G(atch incoming addresses.)
+-2.5 E(Additional \215ags can be added after the colon e)127 567.4 Q
+(xactly lik)-.15 E 2.5(ea)-.1 G F0(K)A F1(line \212 for e)2.5 E(xample:)
+-.15 E 2.5(OA)142 583.6 S(liasFile=nis:\255N mail.aliases@my)-2.5 E
+(.nis.domain)-.65 E(will search the appropriate NIS map and al)102 599.8
+Q -.1(wa)-.1 G(ys include null bytes in the k).1 E -.15(ey)-.1 G 5(.A)
+-.5 G(lso:)-5 E 2.5(OA)142 616 S(liasFile=nis:\255f mail.aliases@my)-2.5
+E(.nis.domain)-.65 E(will pre)102 632.2 Q -.15(ve)-.25 G
+(nt sendmail from do).15 E(wncasing the k)-.25 E .3 -.15(ey b)-.1 H
+(efore the alias lookup.).15 E .32 LW 76 665.2 72 665.2 DL 80 665.2 76
+665.2 DL 84 665.2 80 665.2 DL 88 665.2 84 665.2 DL 92 665.2 88 665.2 DL
+96 665.2 92 665.2 DL 100 665.2 96 665.2 DL 104 665.2 100 665.2 DL 108
+665.2 104 665.2 DL 112 665.2 108 665.2 DL 116 665.2 112 665.2 DL 120
+665.2 116 665.2 DL 124 665.2 120 665.2 DL 128 665.2 124 665.2 DL 132
+665.2 128 665.2 DL 136 665.2 132 665.2 DL 140 665.2 136 665.2 DL 144
+665.2 140 665.2 DL 148 665.2 144 665.2 DL 152 665.2 148 665.2 DL 156
+665.2 152 665.2 DL 160 665.2 156 665.2 DL 164 665.2 160 665.2 DL 168
+665.2 164 665.2 DL 172 665.2 168 665.2 DL 176 665.2 172 665.2 DL 180
+665.2 176 665.2 DL 184 665.2 180 665.2 DL 188 665.2 184 665.2 DL 192
+665.2 188 665.2 DL 196 665.2 192 665.2 DL 200 665.2 196 665.2 DL 204
+665.2 200 665.2 DL 208 665.2 204 665.2 DL 212 665.2 208 665.2 DL 216
+665.2 212 665.2 DL/F5 5/Times-Roman@0 SF(9)93.6 675.6 Q/F6 8
+/Times-Roman@0 SF(Actually)3.2 I 2(,a)-.52 G .24 -.12(ny m)-2 H
+(ailer that has the `).12 E 1.776 -.888(A' m)-.64 H(ailer \215ag set wi\
+ll permit aliasing; this is normally limited to the local mailer).888 E
+(.)-.44 E F5(10)93.6 689.2 Q F6(The)3.2 I/F7 8/Times-Italic@0 SF(gdbm)2
+E F6(package does not w)2 E(ork.)-.08 E 0 Cg EP
+%%Page: 21 17
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-21)195.86 E 2.5(2.6.1. Reb)102 96 R(uilding the alias database)
+-.2 E/F1 10/Times-Roman@0 SF(The)142 112.2 Q/F2 10/Times-Italic@0 SF
+(hash)3.08 E F1(or)3.08 E F2(dbm)3.08 E F1 -.15(ve)3.08 G .579
+(rsion of the database may be reb).15 F .579(uilt e)-.2 F .579
+(xplicitly by e)-.15 F -.15(xe)-.15 G .579(cuting the com-).15 F(mand)
+117 124.2 Q(ne)157 140.4 Q -.1(wa)-.25 G(liases).1 E(This is equi)117
+156.6 Q -.25(va)-.25 G(lent to gi).25 E(ving)-.25 E F2(sendmail)2.5 E F1
+(the)2.5 E F0(\255bi)2.5 E F1(\215ag:)2.5 E(/usr/sbin/sendmail \255bi)
+157 172.8 Q 1.77(If you ha)142 193.2 R 2.07 -.15(ve m)-.2 H 1.77
+(ultiple aliases databases speci\214ed, the).15 F F0(\255bi)4.27 E F1
+1.77(\215ag reb)4.27 F 1.77(uilds all the database)-.2 F
+(types it understands \(for e)117 205.2 Q(xample, it can reb)-.15 E
+(uild NDBM databases b)-.2 E(ut not NIS databases\).)-.2 E F0 2.5
+(2.6.2. P)102 229.2 R(otential pr)-.2 E(oblems)-.18 E F1 1.131
+(There are a number of problems that can occur with the alias database.)
+142 245.4 R(The)6.13 E 3.63(ya)-.15 G 1.13(ll result)-3.63 F 1.103
+(from a)117 257.4 R F2(sendmail)3.603 E F1 1.103
+(process accessing the DBM v)3.603 F 1.103
+(ersion while it is only partially b)-.15 F 3.604(uilt. This)-.2 F(can)
+3.604 E 1.249(happen under tw)117 269.4 R 3.749(oc)-.1 G 1.248(ircumsta\
+nces: One process accesses the database while another process is)-3.749
+F(reb)117 281.4 Q .518(uilding it, or the process reb)-.2 F .518
+(uilding the database dies \(due to being killed or a system crash\))-.2
+F(before completing the reb)117 293.4 Q(uild.)-.2 E .401
+(Sendmail has three techniques to try to relie)142 309.6 R .701 -.15
+(ve t)-.25 H .401(hese problems.).15 F .4(First, it ignores interrupts)
+5.401 F .045(while reb)117 321.6 R .045(uilding the database; this a)-.2
+F -.2(vo)-.2 G .045(ids the problem of someone aborting the process lea)
+.2 F .045(ving a)-.2 F .177(partially reb)117 333.6 R .177
+(uilt database.)-.2 F .177
+(Second, it locks the database source \214le during the reb)5.177 F .176
+(uild \212 b)-.2 F .176(ut that)-.2 F .812(may not w)117 345.6 R .812
+(ork o)-.1 F -.15(ve)-.15 G 3.312(rN).15 G .812
+(FS or if the \214le is unwritable.)-3.312 F .813
+(Third, at the end of the reb)5.813 F .813(uild it adds an)-.2 F
+(alias of the form)117 357.6 Q(@: @)157 373.8 Q .336
+(\(which is not normally le)117 390 R -.05(ga)-.15 G 2.836(l\). Before)
+.05 F F2(sendmail)2.836 E F1 .336
+(will access the database, it checks to insure that)2.836 F
+(this entry e)117 404 Q(xists)-.15 E/F3 7/Times-Roman@0 SF(11)-4 I F1(.)
+4 I F0 2.5(2.6.3. List)102 428 R -.1(ow)2.5 G(ners).1 E F1 .4
+(If an error occurs on sending to a certain address, say \231)142 444.2
+R F2(x)A F1<9a2c>A F2(sendmail)2.901 E F1 .401(will look for an alias)
+2.901 F .418(of the form \231o)117 456.2 R(wner)-.25 E(-)-.2 E F2(x)A F1
+2.918<9a74>C 2.918(or)-2.918 G(ecei)-2.918 E .718 -.15(ve t)-.25 H .418
+(he errors.).15 F .417
+(This is typically useful for a mailing list where the)5.418 F 1.116
+(submitter of the list has no control o)117 468.2 R -.15(ve)-.15 G 3.617
+(rt).15 G 1.117
+(he maintenance of the list itself; in this case the list)-3.617 F
+(maintainer w)117 480.2 Q(ould be the o)-.1 E(wner of the list.)-.25 E
+-.15(Fo)5 G 2.5(re).15 G(xample:)-2.65 E
+(unix-wizards: eric@ucbarpa, wnj@monet, nosuchuser)157 496.4 Q(,)-.4 E
+(sam@matisse)193 508.4 Q -.25(ow)157 520.4 S(ner).25 E
+(-unix-wizards: unix-wizards-request)-.2 E
+(unix-wizards-request: eric@ucbarpa)157 532.4 Q -.1(wo)117 548.6 S .689
+(uld cause \231eric@ucbarpa\232 to get the error that will occur when s\
+omeone sends to unix-wiz-).1 F
+(ards due to the inclusion of \231nosuchuser\232 on the list.)117 560.6
+Q .958(List o)142 576.8 R .958(wners also cause the en)-.25 F -.15(ve)
+-.4 G .959(lope sender address to be modi\214ed.).15 F .959
+(The contents of the)5.959 F -.25(ow)117 588.8 S .429
+(ner alias are used if the).25 F 2.929(yp)-.15 G .429
+(oint to a single user)-2.929 F 2.928(,o)-.4 G .428
+(therwise the name of the alias itself is used.)-2.928 F -.15(Fo)117
+600.8 S 3.454(rt).15 G .954(his reason, and to obe)-3.454 F 3.454(yI)
+-.15 G .954(nternet con)-3.454 F -.15(ve)-.4 G .954(ntions, the \231o)
+.15 F(wner)-.25 E .955(-\232 address normally points at the)-.2 F .504(\
+\231-request\232 address; this causes messages to go out with the typic\
+al Internet con)117 612.8 R -.15(ve)-.4 G .503(ntion of using).15 F -.74
+(``)117 624.8 S F2(list).74 E F1(-request')A 2.5('a)-.74 G 2.5(st)-2.5 G
+(he return address.)-2.5 E F0 2.5(2.7. User)87 648.8 R(Inf)2.5 E
+(ormation Database)-.25 E F1 3.635(This option is deprecated, use virtu\
+sertable and genericstable instead as e)127 665 R 3.636(xplained in)-.15
+F F2(cf/README)102 677 Q F1 5.06(.I)C 2.56(fy)-5.06 G .06(ou ha)-2.56 F
+.36 -.15(ve a ve)-.2 H .06(rsion of).15 F F2(sendmail)2.56 E F1 .06
+(with the user information database compiled in, and)2.56 F .32 LW 76
+686.6 72 686.6 DL 80 686.6 76 686.6 DL 84 686.6 80 686.6 DL 88 686.6 84
+686.6 DL 92 686.6 88 686.6 DL 96 686.6 92 686.6 DL 100 686.6 96 686.6 DL
+104 686.6 100 686.6 DL 108 686.6 104 686.6 DL 112 686.6 108 686.6 DL 116
+686.6 112 686.6 DL 120 686.6 116 686.6 DL 124 686.6 120 686.6 DL 128
+686.6 124 686.6 DL 132 686.6 128 686.6 DL 136 686.6 132 686.6 DL 140
+686.6 136 686.6 DL 144 686.6 140 686.6 DL 148 686.6 144 686.6 DL 152
+686.6 148 686.6 DL 156 686.6 152 686.6 DL 160 686.6 156 686.6 DL 164
+686.6 160 686.6 DL 168 686.6 164 686.6 DL 172 686.6 168 686.6 DL 176
+686.6 172 686.6 DL 180 686.6 176 686.6 DL 184 686.6 180 686.6 DL 188
+686.6 184 686.6 DL 192 686.6 188 686.6 DL 196 686.6 192 686.6 DL 200
+686.6 196 686.6 DL 204 686.6 200 686.6 DL 208 686.6 204 686.6 DL 212
+686.6 208 686.6 DL 216 686.6 212 686.6 DL/F4 5/Times-Roman@0 SF(11)93.6
+697 Q/F5 8/Times-Roman@0 SF(The)3.2 I/F6 8/Times-Bold@0 SF(AliasW)2 E
+(ait)-.52 E F5
+(option is required in the con\214guration for this action to occur)2 E
+4(.T)-.44 G(his should normally be speci\214ed.)-4 E 0 Cg EP
+%%Page: 22 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-22 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .764
+(you ha)102 96 R 1.064 -.15(ve s)-.2 H .764
+(peci\214ed one or more databases using the).15 F F0(U)3.264 E F1 .764
+(option, the databases will be searched for a)3.264 F/F2 10
+/Times-Italic@0 SF(user)102 108 Q F1(:maildrop entry)A 5(.I)-.65 G 2.5
+(ff)-5 G(ound, the mail will be sent to the speci\214ed address.)-2.5 E
+F0 2.5(2.8. P)87 132 R(er)-.2 E(-User F)-.37 E(orwarding \(.f)-.25 E
+(orward Files\))-.25 E F1 .121(As an alternati)127 148.2 R .421 -.15
+(ve t)-.25 H 2.621(ot).15 G .121(he alias database, an)-2.621 F 2.621
+(yu)-.15 G .12(ser may put a \214le with the name \231.forw)-2.621 F .12
+(ard\232 in his)-.1 F .205(or her home directory)102 160.2 R 5.205(.I)
+-.65 G 2.705(ft)-5.205 G .205(his \214le e)-2.705 F(xists,)-.15 E F2
+(sendmail)2.705 E F1 .205
+(redirects mail for that user to the list of addresses)2.705 F .665
+(listed in the .forw)102 172.2 R .665(ard \214le.)-.1 F .665
+(Note that aliases are fully e)5.665 F .664(xpanded before forw)-.15 F
+.664(ard \214les are referenced.)-.1 F -.15(Fo)102 184.2 S 2.5(re).15 G
+(xample, if the home directory for user \231mckusick\232 has a .forw)
+-2.65 E(ard \214le with contents:)-.1 E(mckusick@ernie)142 200.4 Q
+(kirk@calder)142 212.4 Q(then an)102 228.6 Q 2.5(ym)-.15 G(ail arri)-2.5
+E(ving for \231mckusick\232 will be redirected to the speci\214ed accou\
+nts.)-.25 E(Actually)127 244.8 Q 3.374(,t)-.65 G .874(he con\214guratio\
+n \214le de\214nes a sequence of \214lenames to check.)-3.374 F .875
+(By def)5.875 F .875(ault, this is)-.1 F .517(the user')102 256.8 R
+3.017(s.)-.55 G(forw)-3.017 E .517(ard \214le, b)-.1 F .517
+(ut can be de\214ned to be more generally using the)-.2 F F0 -.25(Fo)
+3.017 G(rwardP).25 E(ath)-.1 E F1 3.016(option. If)3.016 F .182
+(you change this, you will ha)102 268.8 R .482 -.15(ve t)-.2 H 2.682(oi)
+.15 G .182(nform your user base of the change; .forw)-2.682 F .183
+(ard is pretty well incor)-.1 F(-)-.2 E(porated into the collecti)102
+280.8 Q .3 -.15(ve s)-.25 H(ubconscious.).15 E F0 2.5(2.9. Special)87
+304.8 R(Header Lines)2.5 E F1(Se)127 321 Q -.15(ve)-.25 G 1.898
+(ral header lines ha).15 F 2.197 -.15(ve s)-.2 H 1.897
+(pecial interpretations de\214ned by the con\214guration \214le.).15 F
+(Others)6.897 E(ha)102 333 Q 1.205 -.15(ve i)-.2 H .905
+(nterpretations b).15 F .905(uilt into)-.2 F F2(sendmail)3.405 E F1 .906
+(that cannot be changed without changing the code.)3.405 F(These)5.906 E
+-.2(bu)102 345 S(ilt-ins are described here.).2 E F0 2.5(2.9.1. Err)102
+369 R(ors-T)-.18 E(o:)-.92 E F1 .22(If errors occur an)142 385.2 R .22(\
+ywhere during processing, this header will cause error messages to go t\
+o)-.15 F(the listed addresses.)117 397.2 Q
+(This is intended for mailing lists.)5 E .384(The Errors-T)142 413.4 R
+.384(o: header w)-.8 F .384
+(as created in the bad old days when UUCP didn')-.1 F 2.885(tu)-.18 G
+.385(nderstand the)-2.885 F .89(distinction between an en)117 425.4 R
+-.15(ve)-.4 G .89(lope and a header; this w).15 F .889(as a hack to pro)
+-.1 F .889(vide what should no)-.15 F 3.389(wb)-.25 G(e)-3.389 E .809
+(passed as the en)117 437.4 R -.15(ve)-.4 G .809(lope sender address.)
+.15 F .809(It should go a)5.809 F -.1(wa)-.15 G 4.609 -.65(y. I).1 H
+3.31(ti).65 G 3.31(so)-3.31 G .81(nly used if the)-3.31 F F0(UseErr)3.31
+E(orsT)-.18 E(o)-.92 E F1(option is set.)117 449.4 Q(The Errors-T)142
+465.6 Q(o: header is of)-.8 E(\214cially deprecated and will go a)-.25 E
+-.1(wa)-.15 G 2.5(yi).1 G 2.5(naf)-2.5 G(uture release.)-2.5 E F0 2.5
+(2.9.2. A)102 489.6 R(ppar)-.25 E(ently-T)-.18 E(o:)-.92 E F1 .045
+(RFC 822 requires at least one recipient \214eld \(T)142 505.8 R .045
+(o:, Cc:, or Bcc: line\) in e)-.8 F -.15(ve)-.25 G .044(ry message.).15
+F .044(If a)5.044 F .562
+(message comes in with no recipients listed in the message then)117
+517.8 R F2(sendmail)3.062 E F1 .562(will adjust the header)3.062 F .085
+(based on the \231NoRecipientAction\232 option.)117 529.8 R .085
+(One of the possible actions is to add an \231)5.085 F(Apparently-)-.8 E
+-.8(To)117 541.8 S(:\232 header line for an).8 E 2.5(yr)-.15 G
+(ecipients it is a)-2.5 E -.1(wa)-.15 G(re of.).1 E .91
+(The Apparently-T)142 558 R .911
+(o: header is non-standard and is both deprecated and strongly discour)
+-.8 F(-)-.2 E(aged.)117 570 Q F0 2.5(2.9.3. Pr)102 594 R(ecedence)-.18 E
+F1 .425(The Precedence: header can be used as a crude control of messag\
+e priority)142 610.2 R 5.424(.I)-.65 G 2.924(tt)-5.424 G .424(weaks the)
+-2.924 F .181(sort order in the queue and can be con\214gured to change\
+ the message timeout v)117 622.2 R 2.682(alues. The)-.25 F(prece-)2.682
+E .235(dence of a message also controls ho)117 634.2 R 2.734(wd)-.25 G
+(eli)-2.734 E -.15(ve)-.25 G .234
+(ry status noti\214cations \(DSNs\) are processed for that).15 F
+(message.)117 646.2 Q F0 2.5(2.10. IDENT)87 670.2 R(Pr)2.5 E
+(otocol Support)-.18 E F2(Sendmail)127 686.4 Q F1 .745
+(supports the IDENT protocol as de\214ned in RFC 1413.)3.245 F .746
+(Note that the RFC states a)5.745 F 1.361(client should w)102 698.4 R
+1.361(ait at least 30 seconds for a response.)-.1 F 1.36(The def)6.361 F
+1.36(ault T)-.1 F 1.36(imeout.ident is 5 seconds as)-.35 F(man)102 710.4
+Q 3.024(ys)-.15 G .524(ites ha)-3.024 F .824 -.15(ve a)-.2 H .524
+(dopted the practice of dropping IDENT queries.).15 F .524
+(This has lead to delays process-)5.524 F .452(ing mail.)102 722.4 R
+.452(Although this enhances identi\214cation of the author of an email \
+message by doing a `)5.452 F(`call)-.74 E 0 Cg EP
+%%Page: 23 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-23)195.86 E/F1 10/Times-Roman@0 SF(back')102 96 Q 3.627('t)-.74
+G 3.627(ot)-3.627 G 1.127(he originating system to include the o)-3.627
+F 1.128(wner of a particular TCP connection in the audit)-.25 F .164
+(trail it is in no sense perfect; a determined for)102 108 R .164
+(ger can easily spoof the IDENT protocol.)-.18 F .164(The follo)5.164 F
+(w-)-.25 E(ing description is e)102 120 Q(xcerpted from RFC 1413:)-.15 E
+2.5(6. Security)127 136.2 R(Considerations)2.5 E .005
+(The information returned by this protocol is at most as trustw)127
+152.4 R(orth)-.1 E 2.506(ya)-.05 G 2.506(st)-2.506 G .006(he host pro)
+-2.506 F .006(viding it OR)-.15 F .274(the or)127 164.4 R -.05(ga)-.18 G
+.274(nization operating the host.).05 F -.15(Fo)5.274 G 2.774(re).15 G
+.273(xample, a PC in an open lab has fe)-2.924 F 2.773(wi)-.25 G 2.773
+(fa)-2.773 G .573 -.15(ny c)-2.773 H(ontrols).15 E .986(on it to pre)127
+176.4 R -.15(ve)-.25 G .986(nt a user from ha).15 F .986
+(ving this protocol return an)-.2 F 3.486(yi)-.15 G .987
+(denti\214er the user w)-3.486 F 3.487(ants. Lik)-.1 F(e-)-.1 E 1.441(w\
+ise, if the host has been compromised the information returned may be c\
+ompletely erro-)127 188.4 R(neous and misleading.)127 200.4 Q .521(The \
+Identi\214cation Protocol is not intended as an authorization or access\
+ control protocol.)127 216.6 R(At)5.521 E 1.037(best, it pro)127 228.6 R
+1.037(vides some additional auditing information with respect to TCP co\
+nnections.)-.15 F(At)6.036 E -.1(wo)127 240.6 S(rst, it can pro).1 E
+(vide misleading, incorrect, or maliciously incorrect information.)-.15
+E 1.006(The use of the information returned by this protocol for other \
+than auditing is strongly dis-)127 256.8 R 2.697
+(couraged. Speci\214cally)127 268.8 R 2.697(,u)-.65 G .197
+(sing Identi\214cation Protocol information to mak)-2.697 F 2.697(ea)-.1
+G .197(ccess control deci-)-2.697 F .514(sions - either as the primary \
+method \(i.e., no other checks\) or as an adjunct to other methods)127
+280.8 R(may result in a weak)127 292.8 Q(ening of normal host security)
+-.1 E(.)-.65 E 1.779(An Identi\214cation serv)127 309 R 1.778(er may re)
+-.15 F -.15(ve)-.25 G 1.778
+(al information about users, entities, objects or processes).15 F .336
+(which might normally be considered pri)127 321 R -.25(va)-.25 G 2.836
+(te. An).25 F .337(Identi\214cation serv)2.836 F .337(er pro)-.15 F .337
+(vides service which)-.15 F .806
+(is a rough analog of the CallerID services pro)127 333 R .806
+(vided by some phone companies and man)-.15 F 3.306(yo)-.15 G(f)-3.306 E
+1.397(the same pri)127 345 R -.25(va)-.25 G 1.697 -.15(cy c).25 H 1.397
+(onsiderations and ar).15 F 1.398
+(guments that apply to the CallerID service apply to)-.18 F 3.546
+(Identi\214cation. If)127 357 R 1.046(you w)3.546 F(ouldn')-.1 E 3.546
+(tr)-.18 G 1.045(un a "\214nger" serv)-3.546 F 1.045(er due to pri)-.15
+F -.25(va)-.25 G 1.345 -.15(cy c).25 H 1.045(onsiderations you may).15 F
+(not w)127 369 Q(ant to run this protocol.)-.1 E .376
+(In some cases your system may not w)102 385.2 R .377
+(ork properly with IDENT support due to a b)-.1 F .377(ug in the TCP/IP)
+-.2 F 3.675(implementation. The)102 397.2 R 1.175(symptoms will be that\
+ for some hosts the SMTP connection will be closed)3.675 F .565
+(almost immediately)102 409.2 R 5.565(.I)-.65 G 3.065(ft)-5.565 G .565
+(his is true or if you do not w)-3.065 F .565(ant to use IDENT)-.1 F
+3.066(,y)-.74 G .566(ou should set the IDENT)-3.066 F
+(timeout to zero; this will disable the IDENT protocol.)102 421.2 Q F0
+2.5(3. ARGUMENTS)72 445.2 R F1 .018(The complete list of ar)112 461.4 R
+.018(guments to)-.18 F/F2 10/Times-Italic@0 SF(sendmail)2.517 E F1 .017
+(is described in detail in Appendix A.)2.517 F .017(Some important)5.017
+F(ar)87 473.4 Q(guments are described here.)-.18 E F0 2.5(3.1. Queue)87
+497.4 R(Inter)2.5 E -.1(va)-.1 G(l).1 E F1 .455(The amount of time betw\
+een forking a process to run through the queue is de\214ned by the)127
+513.6 R F0<ad71>2.956 E F1 2.676(\215ag. If)102 525.6 R .176
+(you run with deli)2.676 F -.15(ve)-.25 G .176(ry mode set to).15 F F0
+(i)2.676 E F1(or)2.676 E F0(b)2.675 E F1 .175(this can be relati)2.675 F
+-.15(ve)-.25 G .175(ly lar).15 F .175(ge, since it will only be rel-)
+-.18 F -.25(eva)102 537.6 S .206(nt when a host that w).25 F .206(as do)
+-.1 F .206(wn comes back up.)-.25 F .207(If you run in)5.206 F F0(q)
+2.707 E F1 .207(mode it should be relati)2.707 F -.15(ve)-.25 G .207
+(ly short,).15 F 1.039(since it de\214nes the maximum amount of time th\
+at a message may sit in the queue.)102 549.6 R 1.038(\(See also the)
+6.039 F(MinQueueAge option.\))102 561.6 Q 1.335
+(RFC 1123 section 5.3.1.1 says that this v)127 577.8 R 1.336
+(alue should be at least 30 minutes \(although that)-.25 F
+(probably doesn')102 589.8 Q 2.5(tm)-.18 G(ak)-2.5 E 2.5(es)-.1 G
+(ense if you use `)-2.5 E(`queue-only')-.74 E 2.5('m)-.74 G(ode\).)-2.5
+E .365(Notice: the meaning of the interv)127 606 R .364
+(al time depends on whether normal queue runners or persis-)-.25 F .207
+(tent queue runners are used.)102 618 R -.15(Fo)5.208 G 2.708(rt).15 G
+.208(he former)-2.708 F 2.708(,i)-.4 G 2.708(ti)-2.708 G 2.708(st)-2.708
+G .208(he time between subsequent starts of a queue run.)-2.708 F -.15
+(Fo)102 630 S 3.35(rt).15 G .85(he latter)-3.35 F 3.35(,i)-.4 G 3.35(ti)
+-3.35 G 3.35(st)-3.35 G .85(he time sendmail w)-3.35 F .849
+(aits after a persistent queue runner has \214nished its w)-.1 F .849
+(ork to)-.1 F .41(start the ne)102 642 R .41(xt one.)-.15 F .411
+(Hence for persistent queue runners this interv)5.41 F .411
+(al should be v)-.25 F .411(ery lo)-.15 F 1.711 -.65(w, t)-.25 H .411
+(ypically no).65 F(more than tw)102 654 Q 2.5(om)-.1 G(inutes.)-2.5 E F0
+2.5(3.2. Daemon)87 678 R(Mode)2.5 E F1 .085(If you allo)127 694.2 R
+2.585(wi)-.25 G .085(ncoming mail o)-2.585 F -.15(ve)-.15 G 2.585(ra).15
+G 2.585(nI)-2.585 G .085(PC connection, you should ha)-2.585 F .384 -.15
+(ve a d)-.2 H .084(aemon running.).15 F(This)5.084 E .069
+(should be set by your)102 706.2 R F2(/etc/r)2.569 E(c)-.37 E F1 .069
+(\214le using the)2.569 F F0(\255bd)2.569 E F1 2.57(\215ag. The)2.569 F
+F0(\255bd)2.57 E F1 .07(\215ag and the)2.57 F F0<ad71>2.57 E F1 .07
+(\215ag may be combined)2.57 F(in one call:)102 718.2 Q 0 Cg EP
+%%Page: 24 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-24 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(/usr/sbin/sendmail \255bd \255q30m)142 96 Q 1.141(An alternati)127
+116.4 R 1.441 -.15(ve a)-.25 H 1.141(pproach is to in).15 F -.2(vo)-.4 G
+1.341 -.1(ke s).2 H 1.141(endmail from).1 F/F2 10/Times-Italic@0 SF
+(inetd)3.641 E F1 1.141(\(8\) \(use the)B F0(\255bs)3.64 E F1 1.14
+(\255Am \215ags to ask)2.5 F 1.339(sendmail to speak SMTP on its standa\
+rd input and output and to run as MT)102 128.4 R 3.84(A\). This)-.93 F
+-.1(wo)3.84 G 1.34(rks and).1 F(allo)102 140.4 Q .323(ws you to wrap)
+-.25 F F2(sendmail)2.823 E F1 .323(in a TCP wrapper program, b)2.823 F
+.323(ut may be a bit slo)-.2 F .322(wer since the con\214gu-)-.25 F .345
+(ration \214le has to be re-read on e)102 152.4 R -.15(ve)-.25 G .346
+(ry message that comes in.).15 F .346
+(If you do this, you still need to ha)5.346 F .646 -.15(ve a)-.2 H F2
+(sendmail)102 164.4 Q F1(running to \215ush the queue:)2.5 E
+(/usr/sbin/sendmail \255q30m)142 180.6 Q F0 2.5(3.3. F)87 208.8 R(or)
+-.25 E(cing the Queue)-.18 E F1 .04(In some cases you may \214nd that t\
+he queue has gotten clogged for some reason.)127 225 R -1.1(Yo)5.04 G
+2.54(uc)1.1 G .04(an force)-2.54 F 3.184(aq)102 237 S .684
+(ueue run using the)-3.184 F F0<ad71>3.184 E F1 .684(\215ag \(with no v)
+3.184 F 3.184(alue\). It)-.25 F .684(is entertaining to use the)3.184 F
+F0<ad76>3.185 E F1 .685(\215ag \(v)3.185 F .685(erbose\) when)-.15 F
+(this is done to w)102 249 Q(atch what happens:)-.1 E
+(/usr/sbin/sendmail \255q \255v)142 265.2 Q -1.1(Yo)127 285.6 S 3(uc)1.1
+G .499
+(an also limit the jobs to those with a particular queue identi\214er)-3
+F 2.999(,r)-.4 G .499(ecipient, sender)-2.999 F 2.999(,q)-.4 G(uar)
+-2.999 E(-)-.2 E 2.097
+(antine reason, or queue group using one of the queue modi\214ers.)102
+297.6 R -.15(Fo)7.097 G 4.597(re).15 G 2.097(xample, \231\255qRberk)
+-4.747 F(ele)-.1 E<799a>-.15 E 1.364
+(restricts the queue run to jobs that ha)102 309.6 R 1.664 -.15(ve t)-.2
+H 1.364(he string \231berk).15 F(ele)-.1 E 1.364(y\232 some)-.15 F 1.363
+(where in one of the recipient)-.25 F 2.842(addresses. Similarly)102
+321.6 R 2.842<2c99>-.65 G .342(\255qSstring\232 limits the run to parti\
+cular senders, \231\255qIstring\232 limits it to partic-)-2.842 F .408(\
+ular queue identi\214ers, and \231\255qQstring\232 limits it to particu\
+lar quarantined reasons and only operated)102 333.6 R 1.748(on quaranti\
+ned queue items, and \231\255qGstring\232 limits it to a particular que\
+ue group.)102 345.6 R 1.748(The named)6.748 F .389
+(queue group will be run e)102 357.6 R -.15(ve)-.25 G 2.889(ni).15 G
+2.888(fi)-2.889 G 2.888(ti)-2.888 G 2.888(ss)-2.888 G .388(et to ha)
+-2.888 F .688 -.15(ve 0 r)-.2 H 2.888(unners. Y).15 F .388
+(ou may also place an)-1.1 F F0(!)2.888 E F1 .388(before the)5.388 F F0
+(I)2.888 E F1(or)2.888 E F0(R)102 369.6 Q F1(or)3.052 E F0(S)3.052 E F1
+(or)3.052 E F0(Q)3.052 E F1 .552(to indicate that jobs are limited to n\
+ot including a particular queue identi\214er)3.052 F 3.053(,r)-.4 G
+(ecipient)-3.053 E .252(or sender)102 381.6 R 5.252(.F)-.55 G .252(or e)
+-5.402 F .252(xample, \231\255q!Rseattle\232 limits the queue run to jo\
+bs that do not ha)-.15 F .551 -.15(ve t)-.2 H .251(he string \231seat-)
+.15 F .296(tle\232 some)102 393.6 R .297
+(where in one of the recipient addresses.)-.25 F .297
+(Should you need to terminate the queue jobs cur)5.297 F(-)-.2 E
+(rently acti)102 405.6 Q .3 -.15(ve t)-.25 H(hen a SIGTERM to the paren\
+t of the process \(or processes\) will cleanly stop the jobs.).15 E F0
+2.5(3.4. Deb)87 429.6 R(ugging)-.2 E F1 .256(There are a f)127 445.8 R
+.256(airly lar)-.1 F .256(ge number of deb)-.18 F .256(ug \215ags b)-.2
+F .256(uilt into)-.2 F F2(sendmail)2.756 E F1 5.256(.E)C .256(ach deb)
+-5.256 F .256(ug \215ag has a cat-)-.2 F -.15(eg)102 457.8 S .501
+(ory and a le).15 F -.15(ve)-.25 G 3.002(l. Higher).15 F(le)3.002 E -.15
+(ve)-.25 G .502(ls increase the le).15 F -.15(ve)-.25 G 3.002(lo).15 G
+3.002(fd)-3.002 G(eb)-3.002 E .502(ugging acti)-.2 F .502
+(vity; in most cases, this means)-.25 F .138
+(to print out more information.)102 469.8 R .138(The con)5.138 F -.15
+(ve)-.4 G .138(ntion is that le).15 F -.15(ve)-.25 G .137
+(ls greater than nine are \231absurd,).15 F 2.637<9a69>-.7 G .137
+(.e., the)-2.637 F(y)-.15 E .869
+(print out so much information that you w)102 481.8 R(ouldn')-.1 E 3.369
+(tn)-.18 G .869(ormally w)-3.369 F .87(ant to see them e)-.1 F .87
+(xcept for deb)-.15 F(ugging)-.2 E(that particular piece of code.)102
+493.8 Q -1.1(Yo)127 510 S 2.866(us)1.1 G(hould)-2.866 E F0(ne)2.866 E
+-.1(ve)-.15 G(r).1 E F1 .366(run a production sendmail serv)2.866 F .366
+(er in deb)-.15 F .366(ug mode.)-.2 F(Man)5.366 E 2.866(yo)-.15 G 2.866
+(ft)-2.866 G .366(he deb)-2.866 F .366(ug \215ags)-.2 F .907
+(will result in deb)102 522 R .907(ug output being sent o)-.2 F -.15(ve)
+-.15 G 3.407(rt).15 G .907(he SMTP channel unless the option)-3.407 F F0
+<ad44>3.407 E F1 .907(is used.)3.407 F(This)5.908 E 1.225
+(will confuse man)102 534 R 3.725(ym)-.15 G 1.225(ail programs.)-3.725 F
+(Ho)6.225 E(we)-.25 E -.15(ve)-.25 G 2.025 -.4(r, f).15 H 1.225
+(or testing purposes, it can be useful when sending).4 F
+(mail manually via telnet to the port you are using while deb)102 546 Q
+(ugging.)-.2 E 2.753(Ad)127 562.2 S(eb)-2.753 E .253(ug cate)-.2 F .254
+(gory is either an inte)-.15 F(ger)-.15 E 2.754(,l)-.4 G(ik)-2.754 E
+2.754(e4)-.1 G .254(2, or a name, lik)-2.754 F 2.754(eA)-.1 G 2.754
+(NSI. Y)-2.754 F .254(ou can specify a range)-1.1 F .929(of numeric deb)
+102 574.2 R .928(ug cate)-.2 F .928(gories using the syntax 17-42.)-.15
+F -1.1(Yo)5.928 G 3.428(uc)1.1 G .928(an specify a set of named deb)
+-3.428 F .928(ug cate-)-.2 F .483(gories using a glob pattern lik)102
+586.2 R 2.984<6599>-.1 G 2.984(sm_trace_*\232. At)-2.984 F .484
+(present, only \231*\232 and \231?\232)2.984 F .484
+(are supported in these)5.484 F(glob patterns.)102 598.2 Q(Deb)127 614.4
+Q(ug \215ags are set using the)-.2 E F0<ad64>2.5 E F1
+(option; the syntax is:)2.5 E(deb)142 630.6 Q(ug-\215ag:)-.2 E F0<ad64>
+36.78 E F1(deb)2.5 E(ug-list)-.2 E(deb)142 642.6 Q 37.05(ug-list: deb)
+-.2 F(ug-option [ , deb)-.2 E(ug-option ]*)-.2 E(deb)142 654.6 Q 23.72
+(ug-option: deb)-.2 F(ug-cate)-.2 E(gories [ . deb)-.15 E(ug-le)-.2 E
+-.15(ve)-.25 G 2.5(l]).15 G(deb)142 666.6 Q(ug-cate)-.2 E 8.89
+(gories: inte)-.15 F(ger | inte)-.15 E(ger \255 inte)-.15 E(ger | cate)
+-.15 E(gory-pattern)-.15 E(cate)142 678.6 Q 11.47
+(gory-pattern: [a-zA-Z_*?][a-zA-Z0-9_*?]*)-.15 F(deb)142 690.6 Q(ug-le)
+-.2 E -.15(ve)-.25 G 30.24(l: inte).15 F(ger)-.15 E
+(where spaces are for reading ease only)102 706.8 Q 5(.F)-.65 G(or e)
+-5.15 E(xample,)-.15 E 0 Cg EP
+%%Page: 25 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-25)195.86 E/F1 10/Times-Roman@0 SF 58.99(\255d12 Set)142 96 R
+(cate)2.5 E(gory 12 to le)-.15 E -.15(ve)-.25 G 2.5(l1).15 G 51.49
+(\255d12.3 Set)142 108 R(cate)2.5 E(gory 12 to le)-.15 E -.15(ve)-.25 G
+2.5(l3).15 G 48.35(\255d3\25517 Set)142 120 R(cate)2.5 E
+(gories 3 through 17 to le)-.15 E -.15(ve)-.25 G 2.5(l1).15 G 40.85
+(\255d3\25517.4 Set)142 132 R(cate)2.5 E(gories 3 through 17 to le)-.15
+E -.15(ve)-.25 G 2.5(l4).15 G 45.66(\255dANSI Set)142 144 R(cate)2.5 E
+(gory ANSI to le)-.15 E -.15(ve)-.25 G 2.5(l1).15 G 15.39
+(\255dsm_trace_*.3 Set)142 156 R(all named cate)2.5 E
+(gories matching sm_trace_* to le)-.15 E -.15(ve)-.25 G 2.5(l3).15 G
+-.15(Fo)102 172.2 S 3.284(rac).15 G .783(omplete list of the a)-3.284 F
+-.25(va)-.2 G .783(ilable deb).25 F .783(ug \215ags you will ha)-.2 F
+1.083 -.15(ve t)-.2 H 3.283(ol).15 G .783(ook at the code and the)-3.283
+F/F2 10/Times-Italic@0 SF(TRA)3.283 E(CE-)-.3 E(FLA)102 184.2 Q(GS)-.35
+E F1 1.062(\214le in the sendmail distrib)3.561 F 1.062(ution \(the)-.2
+F 3.562(ya)-.15 G 1.062(re too dynamic to k)-3.562 F 1.062
+(eep this document up to date\).)-.1 F -.15(Fo)102 196.2 S 2.5(ral).15 G
+(ist of named deb)-2.5 E(ug cate)-.2 E(gories in the sendmail binary)
+-.15 E 2.5(,u)-.65 G(se)-2.5 E(ident /usr/sbin/sendmail | grep Deb)142
+212.4 Q(ug)-.2 E F0 2.5(3.5. Changing)87 240.6 R(the V)2.5 E
+(alues of Options)-.92 E F1(Options can be o)127 256.8 Q -.15(ve)-.15 G
+(rridden using the).15 E F0<ad6f>2.5 E F1(or)2.5 E F0<ad4f>2.5 E F1
+(command line \215ags.)2.5 E -.15(Fo)5 G 2.5(re).15 G(xample,)-2.65 E
+(/usr/sbin/sendmail \255oT2m)142 273 Q .021(sets the)102 289.2 R F0(T)
+2.521 E F1 .021(\(timeout\) option to tw)2.521 F 2.521(om)-.1 G .021
+(inutes for this run only; the equi)-2.521 F -.25(va)-.25 G .02
+(lent line using the long option).25 F(name is)102 301.2 Q
+(/usr/sbin/sendmail -O)142 317.4 Q -.35(Ti)-.4 G(meout.queuereturn=2m)
+.35 E .72(Some options ha)127 337.8 R 1.02 -.15(ve s)-.2 H .72
+(ecurity implications.).15 F .72(Sendmail allo)5.72 F .72
+(ws you to set these, b)-.25 F .72(ut relinquishes)-.2 F(its set-user)
+102 351.8 Q(-ID or set-group-ID permissions thereafter)-.2 E/F3 7
+/Times-Roman@0 SF(12)-4 I F1(.)4 I F0 2.5(3.6. T)87 375.8 R
+(rying a Differ)-.74 E(ent Con\214guration File)-.18 E F1(An alternati)
+127 392 Q .3 -.15(ve c)-.25 H
+(on\214guration \214le can be speci\214ed using the).15 E F0<ad43>2.5 E
+F1(\215ag; for e)2.5 E(xample,)-.15 E
+(/usr/sbin/sendmail \255Ctest.cf \255oQ/tmp/mqueue)142 408.2 Q .68
+(uses the con\214guration \214le)102 424.4 R F2(test.cf)3.18 E F1 .68
+(instead of the def)3.18 F(ault)-.1 E F2(/etc/mail/sendmail.cf)3.18 E(.)
+-.15 E F1 .68(If the)5.68 F F0<ad43>3.18 E F1 .68(\215ag has no)3.18 F
+-.25(va)102 436.4 S(lue it def).25 E(aults to)-.1 E F2(sendmail.cf)2.5 E
+F1(in the current directory)2.5 E(.)-.65 E F2(Sendmail)127 452.6 Q F1
+(gi)2.571 E -.15(ve)-.25 G 2.571(su).15 G 2.571(ps)-2.571 G(et-user)
+-2.571 E .071(-ID root permissions \(if it has been installed set-user)
+-.2 F .07(-ID root\) when)-.2 F .779(you use this \215ag, so it is comm\
+on to use a publicly writable directory \(such as /tmp\) as the queue)
+102 464.6 R(directory \(QueueDirectory or Q option\) while testing.)102
+476.6 Q F0 2.5(3.7. Logging)87 500.6 R -.74(Tr)2.5 G(af\214c).74 E F1
+(Man)127 516.8 Q 3.255(yS)-.15 G .754
+(MTP implementations do not fully implement the protocol.)-3.255 F -.15
+(Fo)5.754 G 3.254(re).15 G .754(xample, some per)-3.404 F(-)-.2 E 1.178
+(sonal computer based SMTPs do not understand continuation lines in rep\
+ly codes.)102 528.8 R 1.178(These can be)6.178 F -.15(ve)102 540.8 S .13
+(ry hard to trace.).15 F .13
+(If you suspect such a problem, you can set traf)5.13 F .13
+(\214c logging using the)-.25 F F0<ad58>2.63 E F1 2.63(\215ag. F)2.63 F
+(or)-.15 E -.15(ex)102 552.8 S(ample,).15 E
+(/usr/sbin/sendmail \255X /tmp/traf)142 569 Q(\214c \255bd)-.25 E
+(will log all traf)102 585.2 Q(\214c in the \214le)-.25 E F2(/tmp/tr)2.5
+E(af)-.15 E<8c63>-.18 E F1(.)A .997(This logs a lot of data v)127 601.4
+R .997(ery quickly and should)-.15 F F0(NEVER)3.497 E F1 .998
+(be used during normal operations.)3.498 F .963(After starting up such \
+a daemon, force the errant implementation to send a message to your hos\
+t.)102 613.4 R .608(All message traf)102 625.4 R .608
+(\214c in and out of)-.25 F F2(sendmail)3.109 E F1 3.109(,i)C .609
+(ncluding the incoming SMTP traf)-3.109 F .609(\214c, will be logged in)
+-.25 F(this \214le.)102 637.4 Q .32 LW 76 669.2 72 669.2 DL 80 669.2 76
+669.2 DL 84 669.2 80 669.2 DL 88 669.2 84 669.2 DL 92 669.2 88 669.2 DL
+96 669.2 92 669.2 DL 100 669.2 96 669.2 DL 104 669.2 100 669.2 DL 108
+669.2 104 669.2 DL 112 669.2 108 669.2 DL 116 669.2 112 669.2 DL 120
+669.2 116 669.2 DL 124 669.2 120 669.2 DL 128 669.2 124 669.2 DL 132
+669.2 128 669.2 DL 136 669.2 132 669.2 DL 140 669.2 136 669.2 DL 144
+669.2 140 669.2 DL 148 669.2 144 669.2 DL 152 669.2 148 669.2 DL 156
+669.2 152 669.2 DL 160 669.2 156 669.2 DL 164 669.2 160 669.2 DL 168
+669.2 164 669.2 DL 172 669.2 168 669.2 DL 176 669.2 172 669.2 DL 180
+669.2 176 669.2 DL 184 669.2 180 669.2 DL 188 669.2 184 669.2 DL 192
+669.2 188 669.2 DL 196 669.2 192 669.2 DL 200 669.2 196 669.2 DL 204
+669.2 200 669.2 DL 208 669.2 204 669.2 DL 212 669.2 208 669.2 DL 216
+669.2 212 669.2 DL/F4 5/Times-Roman@0 SF(12)93.6 679.6 Q/F5 8
+/Times-Roman@0 SF .497(That is, it sets its ef)3.2 J(fecti)-.2 E .737
+-.12(ve u)-.2 H .497(id to the real uid; thus, if you are e).12 F -.12
+(xe)-.12 G .497(cuting as root, as from root').12 F 2.497(sc)-.44 G .497
+(rontab \214le or during system)-2.497 F
+(startup the root permissions will still be honored.)72 692.4 Q 0 Cg EP
+%%Page: 26 22
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-26 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(3.8. T)87 96 R
+(esting Con\214guration Files)-.92 E/F1 10/Times-Roman@0 SF .644
+(When you b)127 112.2 R .644(uild a con\214guration table, you can do a\
+ certain amount of testing using the \231test)-.2 F(mode\232 of)102
+124.2 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1 5(.F)C(or e)-5.15 E
+(xample, you could in)-.15 E -.2(vo)-.4 G -.1(ke).2 G F2(sendmail)2.6 E
+F1(as:)2.5 E(sendmail \255bt \255Ctest.cf)142 140.4 Q .447(which w)102
+156.6 R .447(ould read the con\214guration \214le \231test.cf\232 and e\
+nter test mode.)-.1 F .448(In this mode, you enter lines)5.448 F
+(of the form:)102 168.6 Q(rwset address)142 184.8 Q(where)102 201 Q F2
+(rwset)3.007 E F1 .507(is the re)3.007 F .507(writing set you w)-.25 F
+.507(ant to use and)-.1 F F2(addr)3.006 E(ess)-.37 E F1 .506
+(is an address to apply the set to.)3.006 F -.7(Te)5.506 G(st).7 E .793
+(mode sho)102 213 R .794(ws you the steps it tak)-.25 F .794
+(es as it proceeds, \214nally sho)-.1 F .794
+(wing you the address it ends up with.)-.25 F -1.1(Yo)102 225 S 3.332
+(um)1.1 G .832(ay use a comma separated list of rwsets for sequential a\
+pplication of rules to an input.)-3.332 F -.15(Fo)5.831 G(r).15 E -.15
+(ex)102 237 S(ample:).15 E(3,1,21,4 monet:bollard)142 253.2 Q .622
+(\214rst applies ruleset three to the input \231monet:bollard.)102 269.4
+R 5.622<9a52>-.7 G .622(uleset one is then applied to the output of)
+-5.622 F(ruleset three, follo)102 281.4 Q
+(wed similarly by rulesets twenty-one and four)-.25 E(.)-.55 E 1.084(If\
+ you need more detail, you can also use the \231\255d21\232 \215ag to t\
+urn on more deb)127 297.6 R 3.584(ugging. F)-.2 F(or)-.15 E -.15(ex)102
+309.6 S(ample,).15 E(sendmail \255bt \255d21.99)142 325.8 Q .689
+(turns on an incredible amount of information; a single w)102 342 R .689
+(ord address is probably going to print out)-.1 F(se)102 354 Q -.15(ve)
+-.25 G(ral pages w).15 E(orth of information.)-.1 E -1.1(Yo)127 370.2 S
+2.575(us)1.1 G .075(hould be w)-2.575 F .075(arned that internally)-.1 F
+(,)-.65 E F2(sendmail)2.575 E F1 .075
+(applies ruleset 3 to all addresses.)2.575 F .074(In test mode)5.074 F
+(you will ha)102 382.2 Q .3 -.15(ve t)-.2 H 2.5(od).15 G 2.5(ot)-2.5 G
+(hat manually)-2.5 E 5(.F)-.65 G(or e)-5.15 E(xample, older v)-.15 E
+(ersions allo)-.15 E(wed you to use)-.25 E 2.5(0b)142 398.4 S
+(ruce@broadcast.son)-2.5 E -.65(y.)-.15 G(com).65 E(This v)102 414.6 Q
+(ersion requires that you use:)-.15 E(3,0 bruce@broadcast.son)142 430.8
+Q -.65(y.)-.15 G(com).65 E(As of v)127 451.2 Q
+(ersion 8.7, some other syntax)-.15 E(es are a)-.15 E -.25(va)-.2 G
+(ilable in test mode:).25 E -.834(.D x v)102 467.4 R 30.038
+(alue de\214nes)-.25 F(macro)2.952 E F2(x)2.952 E F1 .452(to ha)2.952 F
+.752 -.15(ve t)-.2 H .452(he indicated).15 F F2(value)2.952 E F1 5.452
+(.T)C .453(his is useful when deb)-5.452 F .453(ugging rules)-.2 F
+(that use the)174 479.4 Q F0($&)2.5 E F2(x)A F1(syntax.)2.5 E -.834
+(.C c v)102 495.6 R 31.148(alue adds)-.25 F(the indicated)2.5 E F2
+(value)2.5 E F1(to class)2.5 E F2(c)2.5 E F1(.)A -.834(=S ruleset)102
+511.8 R(dumps the contents of the indicated ruleset.)32.474 E -.834
+(\255d deb)102 528 R 11.854(ug-spec is)-.2 F(equi)2.5 E -.25(va)-.25 G
+(lent to the command-line \215ag.).25 E -1.11(Ve)102 544.2 S
+(rsion 8.9 introduced more features:)1.11 E 67.56(?s)102 560.4 S(ho)
+-67.56 E(ws a help message.)-.25 E 54.97(=M display)102 576.6 R(the kno)
+2.5 E(wn mailers.)-.25 E 56.72($m print)102 592.8 R(the v)2.5 E
+(alue of macro m.)-.25 E 54.42($=c print)102 609 R
+(the contents of class c.)2.5 E(/mx host)102 625.2 Q
+(returns the MX records for `host'.)37.27 E(/parse address)102 641.4 Q
+(parse address, returning the v)15.63 E(alue of)-.25 E F2(cr)2.5 E(ac)
+-.15 E(kaddr)-.2 E F1 2.5(,a)C(nd the parsed address.)-2.5 E
+(/try mailer addr)102 657.6 Q(re)9.79 E
+(write address into the form it will ha)-.25 E .3 -.15(ve w)-.2 H
+(hen presented to the indicated mailer).15 E(.)-.55 E
+(/try\215ags \215ags)102 673.8 Q 1.006(set \215ags used by parsing.)
+17.83 F 1.005(The \215ags can be `H' for Header or `E' for En)6.006 F
+-.15(ve)-.4 G(lope,).15 E .62(and `S' for Sender or `R' for Recipient.)
+174 685.8 R .62(These can be combined, `HR' sets \215ags)5.62 F
+(for header recipients.)174 697.8 Q 0 Cg EP
+%%Page: 27 23
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-27)195.86 E/F1 10/Times-Roman@0 SF(/canon hostname)102 96 Q
+(try to canonify hostname.)4.51 E(/map mapname k)102 112.2 Q -.15(ey)-.1
+G(look up `k)174 124.2 Q -.15(ey)-.1 G 2.5('i).15 G 2.5(nt)-2.5 G
+(he indicated `mapname'.)-2.5 E 51.16(/quit quit)102 140.4 R
+(address test mode.)2.5 E F0 2.5(3.9. P)87 156.6 R
+(ersistent Host Status Inf)-.2 E(ormation)-.25 E F1(When)127 172.8 Q F0
+(HostStatusDir)2.57 E(ectory)-.18 E F1 .069
+(is enabled, information about the status of hosts is maintained on)2.57
+F .248(disk and can thus be shared between dif)102 184.8 R .249
+(ferent instantiations of)-.25 F/F2 10/Times-Italic@0 SF(sendmail)2.749
+E F1 5.249(.T)C .249(he status of the last con-)-5.249 F
+(nection with each remote host may be vie)102 196.8 Q
+(wed with the command:)-.25 E(sendmail \255bh)142 213 Q
+(This information may be \215ushed with the command:)102 229.2 Q
+(sendmail \255bH)142 245.4 Q 1.535(Flushing the information pre)102
+261.6 R -.15(ve)-.25 G 1.535(nts ne).15 F(w)-.25 E F2(sendmail)4.035 E
+F1 1.535(processes from loading it, b)4.035 F 1.534(ut does not pre)-.2
+F -.15(ve)-.25 G(nt).15 E -.15(ex)102 273.6 S
+(isting processes from using the status information that the).15 E 2.5
+(ya)-.15 G(lready ha)-2.5 E -.15(ve)-.2 G(.).15 E F0 2.5(4. TUNING)72
+297.6 R F1 1.922
+(There are a number of con\214guration parameters you may w)112 313.8 R
+1.922(ant to change, depending on the)-.1 F .367
+(requirements of your site.)87 325.8 R .366
+(Most of these are set using an option in the con\214guration \214le.)
+5.367 F -.15(Fo)5.366 G 2.866(re).15 G(xample,)-3.016 E
+(the line \231O T)87 337.8 Q
+(imeout.queuereturn=5d\232 sets option \231T)-.35 E
+(imeout.queuereturn\232 to the v)-.35 E(alue \2315d\232 \(\214v)-.25 E
+2.5(ed)-.15 G(ays\).)-2.5 E .735(Most of these options ha)112 354 R
+1.035 -.15(ve a)-.2 H .735(ppropriate def).15 F .735
+(aults for most sites.)-.1 F(Ho)5.735 E(we)-.25 E -.15(ve)-.25 G 1.535
+-.4(r, s).15 H .735(ites ha).4 F .735(ving v)-.2 F .735(ery high)-.15 F
+.046(mail loads may \214nd the)87 366 R 2.546(yn)-.15 G .046
+(eed to tune them as appropriate for their mail load.)-2.546 F .045
+(In particular)5.045 F 2.545(,s)-.4 G .045(ites e)-2.545 F(xperi-)-.15 E
+1.087(encing a lar)87 378 R 1.087(ge number of small messages, man)-.18
+F 3.587(yo)-.15 G 3.588(fw)-3.587 G 1.088(hich are deli)-3.588 F -.15
+(ve)-.25 G 1.088(red to man).15 F 3.588(yr)-.15 G 1.088
+(ecipients, may \214nd)-3.588 F(that the)87 390 Q 2.5(yn)-.15 G
+(eed to adjust the parameters dealing with queue priorities.)-2.5 E .524
+(All v)112 406.2 R .524(ersions of)-.15 F F2(sendmail)3.024 E F1 .524
+(prior to 8.7 had single character option names.)3.024 F .523
+(As of 8.7, options ha)5.524 F -.15(ve)-.2 G 1.215
+(long \(multi-character names\).)87 418.2 R 1.216
+(Although old short names are still accepted, most ne)6.215 F 3.716(wo)
+-.25 G 1.216(ptions do not)-3.716 F(ha)87 430.2 Q .3 -.15(ve s)-.2 H
+(hort equi).15 E -.25(va)-.25 G(lents.).25 E .802
+(This section only describes the options you are most lik)112 446.4 R
+.802(ely to w)-.1 F .801(ant to tweak; read section 5 for)-.1 F
+(more details.)87 458.4 Q F0 2.5(4.1. T)87 482.4 R(imeouts)-.18 E F1
+.582(All time interv)127 498.6 R .583
+(als are set using a scaled syntax.)-.25 F -.15(Fo)5.583 G 3.083(re).15
+G .583(xample, \23110m\232 represents ten minutes,)-3.233 F
+(whereas \2312h30m\232 represents tw)102 510.6 Q 2.5(oa)-.1 G
+(nd a half hours.)-2.5 E(The full set of scales is:)5 E 16.11(ss)142
+526.8 S(econds)-16.11 E 12.22(mm)142 538.8 S(inutes)-12.22 E 15(hh)142
+550.8 S(ours)-15 E 15(dd)142 562.8 S(ays)-15 E 12.78(ww)142 574.8 S
+(eeks)-12.78 E F0 2.5(4.1.1. Queue)102 603 R(inter)2.5 E -.1(va)-.1 G(l)
+.1 E F1 .18(The ar)142 619.2 R .18(gument to the)-.18 F F0<ad71>2.68 E
+F1 .18(\215ag speci\214es ho)2.68 F 2.68(wo)-.25 G .18
+(ften a sub-daemon will run the queue.)-2.68 F .18(This is)5.18 F .792
+(typically set to between \214fteen minutes and one hour)117 631.2 R
+5.793(.I)-.55 G 3.293(fn)-5.793 G .793
+(ot set, or set to zero, the queue will)-3.293 F .048
+(not be run automatically)117 643.2 R 5.048(.R)-.65 G .048
+(FC 1123 section 5.3.1.1 recommends that this be at least 30 minutes.)
+-5.048 F .5(Should you need to terminate the queue jobs currently acti)
+117 655.2 R .801 -.15(ve t)-.25 H .501(hen a SIGTERM to the parent of)
+.15 F(the process \(or processes\) will cleanly stop the jobs.)117 667.2
+Q F0 2.5(4.1.2. Read)102 691.2 R(timeouts)2.5 E F1 -.35(Ti)142 707.4 S
+.298(meouts all ha).35 F .598 -.15(ve o)-.2 H .297(ption names \231T).15
+F(imeout.)-.35 E F2(suboption)A F1 2.797(\232. Most)B .297
+(of these control SMTP oper)2.797 F(-)-.2 E 3.898(ations. The)117 719.4
+R(recognized)3.898 E F2(suboption)3.898 E F1 1.398(s, their def)B 1.398
+(ault v)-.1 F 1.398(alues, and the minimum v)-.25 F 1.399(alues allo)
+-.25 F 1.399(wed by)-.25 F 0 Cg EP
+%%Page: 28 24
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-28 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(RFC 2821 section 4.5.3.2 \(or RFC 1123 section 5.3.2\) are:)117 96 Q
+38.4(connect The)117 112.2 R .161(time to w)2.661 F .161
+(ait for an SMTP connection to open \(the)-.1 F/F2 10/Times-Italic@0 SF
+(connect)2.66 E F1 .16(\(2\) system call\))B 1.153([0, unspeci\214ed].)
+189 124.2 R 1.153(If zero, uses the k)6.153 F 1.153(ernel def)-.1 F
+3.653(ault. In)-.1 F 1.153(no case can this option)3.653 F -.15(ex)189
+136.2 S .519(tend the timeout longer than the k).15 F .518(ernel pro)-.1
+F .518(vides, b)-.15 F .518(ut it can shorten it.)-.2 F(This)5.518 E
+.579(is to get around k)189 148.2 R .579(ernels that pro)-.1 F .579
+(vide an absurdly long connection timeout \(90)-.15 F
+(minutes in one case\).)189 160.2 Q 35.62(iconnect The)117 176.4 R .311
+(same as)2.811 F F2(connect,)2.811 E F1 -.15(ex)2.811 G .311
+(cept it applies only to the initial attempt to connect to).15 F 2.75
+(ah)189 188.4 S .25(ost for a gi)-2.75 F -.15(ve)-.25 G 2.75(nm).15 G
+.25(essage [0, unspeci\214ed].)-2.75 F .25
+(The concept is that this should be)5.25 F -.15(ve)189 200.4 S .767
+(ry short \(a fe).15 F 3.267(ws)-.25 G .767
+(econds\); hosts that are well connected and responsi)-3.267 F 1.066
+-.15(ve w)-.25 H(ill).15 E .026(thus be serviced immediately)189 212.4 R
+5.026(.H)-.65 G .026(osts that are slo)-5.026 F 2.526(ww)-.25 G .026
+(ill not hold up other deli)-2.526 F(v-)-.25 E
+(eries in the initial deli)189 224.4 Q -.15(ve)-.25 G(ry attempt.).15 E
+33.96(aconnect [0,)117 240.6 R 1.708(unspeci\214ed] The o)4.208 F -.15
+(ve)-.15 G 1.707(rall timeout w).15 F 1.707
+(aiting for all connection for a single)-.1 F(deli)189 252.6 Q -.15(ve)
+-.25 G .152(ry attempt to succeed.).15 F .152(If 0, no o)5.152 F -.15
+(ve)-.15 G .152(rall limit is applied.).15 F .153(This can be used)5.152
+F .521(to restrict the total amount of time trying to connect to a long\
+ list of host that)189 264.6 R .514
+(could accept an e-mail for the recipient.)189 276.6 R .514
+(This timeout does not apply to)5.514 F F0 -.25(Fa)3.014 G(ll-).25 E
+(backMXhost)189 288.6 Q F1 2.678(,i)C .177(.e., if the time is e)-2.678
+F .177(xhausted, the)-.15 F F0 -.25(Fa)2.677 G(llbackMXhost).25 E F1
+.177(is tried ne)2.677 F(xt.)-.15 E 46.16(initial The)117 304.8 R -.1
+(wa)2.5 G(it for the initial 220 greeting message [5m, 5m].).1 E 52.28
+(helo The)117 321 R -.1(wa)4.226 G 1.727
+(it for a reply from a HELO or EHLO command [5m, unspeci\214ed].).1 F .1
+(This may require a host name lookup, so \214v)189 333 R 2.6(em)-.15 G
+.1(inutes is probably a reasonable)-2.6 F(minimum.)189 345 Q 46.72
+(mail\207 The)117 361.2 R -.1(wa)2.5 G
+(it for a reply from a MAIL command [10m, 5m].).1 E 48.95(rcpt\207 The)
+117 377.4 R -.1(wa)3.481 G .981
+(it for a reply from a RCPT command [1h, 5m].).1 F .982
+(This should be long)5.982 F 1.556
+(because it could be pointing at a list that tak)189 389.4 R 1.556
+(es a long time to e)-.1 F 1.556(xpand \(see)-.15 F(belo)189 401.4 Q
+(w\).)-.25 E 34.5(datainit\207 The)117 417.6 R -.1(wa)2.5 G
+(it for a reply from a D).1 E -1.21 -1.11(AT A)-.4 H(command [5m, 2m].)
+3.61 E 20.62(datablock\207\210 The)117 433.8 R -.1(wa)2.696 G .196
+(it for reading a data block \(that is, the body of the message\).).1 F
+.196([1h, 3m].)5.196 F .621(This should be long because it also applies\
+ to programs piping input to)189 445.8 R F2(send-)3.12 E(mail)189 457.8
+Q F1(which ha)2.5 E .3 -.15(ve n)-.2 H 2.5(og).15 G
+(uarantee of promptness.)-2.5 E 30.06(data\214nal\207 The)117 474 R -.1
+(wa)2.806 G .306(it for a reply from the dot terminating a message.).1 F
+.306([1h, 10m].)5.306 F .306(If this is)5.306 F .884
+(shorter than the time actually needed for the recei)189 486 R -.15(ve)
+-.25 G 3.383(rt).15 G 3.383(od)-3.383 G(eli)-3.383 E -.15(ve)-.25 G
+3.383(rt).15 G .883(he message,)-3.383 F(duplicates will be generated.)
+189 498 Q(This is discussed in RFC 1047.)5 E 55.06(rset The)117 514.2 R
+-.1(wa)2.5 G(it for a reply from a RSET command [5m, unspeci\214ed].).1
+E 53.94(quit The)117 530.4 R -.1(wa)2.5 G(it for a reply from a Q).1 E
+(UIT command [2m, unspeci\214ed].)-.1 E 50.61(misc The)117 546.6 R -.1
+(wa)2.76 G .261(it for a reply from miscellaneous \(b).1 F .261
+(ut short\) commands such as NOOP)-.2 F
+(\(no-operation\) and VERB \(go into v)189 558.6 Q(erbose mode\).)-.15 E
+([2m, unspeci\214ed].)5 E 20.06(command\207\210 In)117 574.8 R(serv)2.5
+E(er SMTP)-.15 E 2.5(,t)-1.11 G(he time to w)-2.5 E
+(ait for another command.)-.1 E([1h, 5m].)5 E 44.5(ident\210 The)117 593
+R(timeout w)2.5 E(aiting for a reply to an IDENT query [5s)-.1 E/F3 7
+/Times-Roman@0 SF(13)-4 I F1 2.5(,u)4 K(nspeci\214ed].)-2.5 E 53.94
+(lhlo The)117 609.2 R -.1(wa)2.5 G
+(it for a reply to an LMTP LHLO command [2m, unspeci\214ed].).1 E 52.28
+(auth The)117 625.4 R(timeout for a reply in an SMTP A)2.5 E
+(UTH dialogue [10m, unspeci\214ed].)-.55 E 42.83(starttls The)117 641.6
+R .141(timeout for a reply to an SMTP ST)2.641 F(AR)-.93 E .14
+(TTLS command and the TLS hand-)-.6 F(shak)189 653.6 Q 2.5(e[)-.1 G
+(1h, unspeci\214ed].)-2.5 E .32 LW 76 678.8 72 678.8 DL 80 678.8 76
+678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL
+96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108
+678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112 678.8 DL 120
+678.8 116 678.8 DL 124 678.8 120 678.8 DL 128 678.8 124 678.8 DL 132
+678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 678.8 136 678.8 DL 144
+678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 678.8 148 678.8 DL 156
+678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 678.8 160 678.8 DL 168
+678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8 172 678.8 DL 180
+678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8 DL 192
+678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204
+678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208 678.8 DL 216
+678.8 212 678.8 DL/F4 5/Times-Roman@0 SF(13)93.6 689.2 Q/F5 8
+/Times-Roman@0 SF(On some systems the def)3.2 I
+(ault is zero to turn the protocol of)-.08 E 2(fe)-.2 G(ntirely)-2 E(.)
+-.52 E 0 Cg EP
+%%Page: 29 25
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-29)195.86 E/F1 10/Times-Roman@0 SF 32.28(\214leopen\210 The)117
+96 R(timeout for opening .forw)2.5 E
+(ard and :include: \214les [60s, none].)-.1 E 36.17(control\210 The)117
+112.2 R .241(timeout for a complete control sock)2.74 F .241
+(et transaction to complete [2m, none].)-.1 F 25.05(hoststatus\210 Ho)
+117 128.4 R 4.142(wl)-.25 G 1.642
+(ong status information about a host \(e.g., host do)-4.142 F 1.641
+(wn\) will be cached)-.25 F
+(before it is considered stale [30m, unspeci\214ed].)189 140.4 Q(resolv)
+117 156.6 Q(er)-.15 E 3.28(.retrans\210 The)-.55 F(resolv)4.274 E(er')
+-.15 E 4.274(sr)-.55 G 1.774(etransmission time interv)-4.274 F 1.775
+(al \(in seconds\) [v)-.25 F 4.275(aries]. Sets)-.25 F(both)4.275 E/F2
+10/Times-Italic@0 SF -.55(Ti)189 168.6 S(meout.r).55 E(esolver)-.37 E
+(.r)-1.11 E(etr)-.37 E(ans.\214r)-.15 E(st)-.1 E F1(and)2.5 E F2 -.55
+(Ti)2.5 G(meout.r).55 E(esolver)-.37 E(.r)-1.11 E(etr)-.37 E(ans.normal)
+-.15 E F1(.)A(resolv)117 184.8 Q(er)-.15 E(.retrans.\214rst\210)-.55 E
+.318(The resolv)189 196.8 R(er')-.15 E 2.818(sr)-.55 G .318
+(etransmission time interv)-2.818 F .317
+(al \(in seconds\) for the \214rst attempt to)-.25 F(deli)189 208.8 Q
+-.15(ve)-.25 G 2.5(ram).15 G(essage [v)-2.5 E(aries].)-.25 E(resolv)117
+225 Q(er)-.15 E(.retrans.normal\210)-.55 E 3.554(The resolv)189 237 R
+(er')-.15 E 6.054(sr)-.55 G 3.554(etransmission time interv)-6.054 F
+3.555(al \(in seconds\) for all resolv)-.25 F(er)-.15 E(lookups e)189
+249 Q(xcept the \214rst deli)-.15 E -.15(ve)-.25 G(ry attempt [v).15 E
+(aries].)-.25 E(resolv)117 265.2 Q(er)-.15 E 11.61(.retry\210 The)-.55 F
+3.838(number of times to retransmit a resolv)6.339 F 3.838(er query)-.15
+F 8.838(.S)-.65 G 3.838(ets both)-8.838 F F2 -.55(Ti)6.338 G(me-).55 E
+(out.r)189 277.2 Q(esolver)-.37 E(.r)-1.11 E(etry)-.37 E(.\214r)-.55 E
+(st)-.1 E F1(and)2.5 E F2 -.55(Ti)2.5 G(meout.r).55 E(esolver)-.37 E(.r)
+-1.11 E(etry)-.37 E(.normal)-.55 E F1([v)2.5 E(aries].)-.25 E(resolv)117
+293.4 Q(er)-.15 E(.retry)-.55 E(.\214rst\210)-.65 E 1.66
+(The number of times to retransmit a resolv)189 305.4 R 1.66
+(er query for the \214rst attempt to)-.15 F(deli)189 317.4 Q -.15(ve)
+-.25 G 2.5(ram).15 G(essage [v)-2.5 E(aries].)-.25 E(resolv)117 333.6 Q
+(er)-.15 E(.retry)-.55 E(.normal\210)-.65 E
+(The number of times to retransmit a resolv)189 345.6 Q
+(er query for all resolv)-.15 E(er lookups)-.15 E -.15(ex)191.5 357.6 S
+(cept the \214rst deli).15 E -.15(ve)-.25 G(ry attempt [v).15 E(aries].)
+-.25 E -.15(Fo)117 373.8 S 4.609(rc).15 G 2.109
+(ompatibility with old con\214guration \214les, if no)-4.609 F F2
+(suboption)4.608 E F1 2.108(is speci\214ed, all the timeouts)4.608 F
+(mark)117 385.8 Q .059
+(ed with a dagger \(\207\) are set to the indicated v)-.1 F 2.559
+(alue. All)-.25 F -.2(bu)2.559 G 2.559(tt).2 G .059(hose mark)-2.559 F
+.059(ed with a double dag-)-.1 F(ger \(\210\) apply to client SMTP)117
+397.8 Q(.)-1.11 E -.15(Fo)142 414 S 2.5(re).15 G(xample, the lines:)
+-2.65 E 2.5(OT)157 430.2 S(imeout.command=25m)-2.85 E 2.5(OT)157 442.2 S
+(imeout.datablock=3h)-2.85 E .344(sets the serv)117 458.4 R .344(er SMT\
+P command timeout to 25 minutes and the input data block timeout to thr\
+ee)-.15 F(hours.)117 470.4 Q F0 2.5(4.1.3. Message)102 494.4 R(timeouts)
+2.5 E F1 .463(After sitting in the queue for a fe)142 510.6 R 2.964(wd)
+-.25 G .464(ays, an undeli)-2.964 F -.15(ve)-.25 G .464
+(rable message will time out.).15 F .464(This is)5.464 F .165
+(to insure that at least the sender is a)117 522.6 R -.1(wa)-.15 G .165
+(re of the inability to send a message.).1 F .164(The timeout is typi-)
+5.164 F .56(cally set to \214v)117 534.6 R 3.06(ed)-.15 G 3.06(ays. It)
+-3.06 F .56(is sometimes considered con)3.06 F -.15(ve)-.4 G .56
+(nient to also send a w).15 F .56(arning message if)-.1 F .236
+(the message is in the queue longer than a fe)117 546.6 R 2.736(wh)-.25
+G .236(ours \(assuming you normally ha)-2.736 F .536 -.15(ve g)-.2 H
+.236(ood connec-).15 F(ti)117 558.6 Q 2.073
+(vity; if your messages normally took se)-.25 F -.15(ve)-.25 G 2.073
+(ral hours to send you w).15 F(ouldn')-.1 E 4.574(tw)-.18 G 2.074
+(ant to do this)-4.674 F .794(because it w)117 570.6 R(ouldn')-.1 E
+3.294(tb)-.18 G 3.294(ea)-3.294 G 3.294(nu)-3.294 G .794(nusual e)-3.294
+F -.15(ve)-.25 G 3.294(nt\). These).15 F .794
+(timeouts are set using the)3.294 F F0 -.18(Ti)3.293 G(meout.queuer).18
+E(e-)-.18 E(tur)117 582.6 Q(n)-.15 E F1(and)3.075 E F0 -.18(Ti)3.075 G
+(meout.queuewar).18 E(n)-.15 E F1 .576
+(options in the con\214guration \214le \(pre)3.076 F .576
+(viously both were set using)-.25 F(the)117 594.6 Q F0(T)2.5 E F1
+(option\).)2.5 E 1.368(If the message is submitted using the)142 610.8 R
+/F3 9/Times-Roman@0 SF(NO)3.867 E 1.617(TIFY SMTP)-.36 F F1 -.15(ex)
+3.867 G 1.367(tension, w).15 F 1.367(arning messages will)-.1 F .888
+(only be sent if)117 622.8 R F3(NO)3.388 E(TIFY=DELA)-.36 E(Y)-.945 E F1
+.888(is speci\214ed.)3.388 F .888(The queuereturn and queue)5.888 F -.1
+(wa)-.25 G .888(rn timeouts can be).1 F .67(further quali\214ed with a \
+tag based on the Precedence: \214eld in the message; the)117 634.8 R
+3.169(ym)-.15 G .669(ust be one of)-3.169 F(\231ur)117 646.8 Q .938
+(gent\232 \(indicating a positi)-.18 F 1.238 -.15(ve n)-.25 H .938
+(on-zero precedence\), \231normal\232 \(indicating a zero precedence\),)
+.15 F 3.495(or \231non-ur)117 658.8 R 3.495(gent\232 \(indicating ne)
+-.18 F -.05(ga)-.15 G(ti).05 E 3.795 -.15(ve p)-.25 H 5.995
+(recedences\). F).15 F 3.495(or e)-.15 F 3.495(xample, setting \231T)
+-.15 F(imeout.queue-)-.35 E -.1(wa)117 670.8 S(rn.ur).1 E .485
+(gent=1h\232 sets the w)-.18 F .486(arning timeout for ur)-.1 F .486
+(gent messages only to one hour)-.18 F 5.486(.T)-.55 G .486(he def)
+-5.486 F .486(ault if)-.1 F .205
+(no precedence is indicated is to set the timeout for all precedences.)
+117 682.8 R .204(If the message has a normal)5.205 F(\(def)117 694.8 Q
+1.278(ault\) precedence and it is a deli)-.1 F -.15(ve)-.25 G 1.278
+(ry status noti\214cation \(DSN\),).15 F F0 -.18(Ti)3.778 G
+(meout.queuer).18 E(etur)-.18 E(n.dsn)-.15 E F1(and)117 706.8 Q F0 -.18
+(Ti)2.675 G(meout.queuewar).18 E(n.dsn)-.15 E F1 .175(can be used to gi)
+2.675 F .475 -.15(ve a)-.25 H 2.675(na).15 G(lternati)-2.675 E .475 -.15
+(ve w)-.25 H .175(arn and return time for DSNs.).05 F .241(The v)117
+718.8 R .241(alue "no)-.25 F .241(w" can be used for -O T)-.25 F .242
+(imeout.queuereturn to return entries immediately during a)-.35 F 0 Cg
+EP
+%%Page: 30 26
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-30 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(queue ru\
+n, e.g., to bounce messages independent of their time in the queue.)117
+96 Q .28(Since these options are global, and since you cannot kno)142
+112.2 R(w)-.25 E/F2 10/Times-Italic@0 SF 2.78(ap)2.78 G(riori)-2.78 E F1
+(ho)2.78 E 2.78(wl)-.25 G .28(ong another host)-2.78 F .475
+(outside your domain will be do)117 124.2 R .475(wn, a \214v)-.25 F
+2.975(ed)-.15 G .475(ay timeout is recommended.)-2.975 F .476(This allo)
+5.476 F .476(ws a recipient)-.25 F 1.58(to \214x the problem e)117 136.2
+R -.15(ve)-.25 G 4.08(ni).15 G 4.08(fi)-4.08 G 4.08(to)-4.08 G 1.579
+(ccurs at the be)-4.08 F 1.579(ginning of a long week)-.15 F 4.079
+(end. RFC)-.1 F 1.579(1123 section)4.079 F
+(5.3.1.1 says that this parameter should be `)117 148.2 Q
+(`at least 4\2555 days')-.74 E('.)-.74 E(The)142 164.4 Q F0 -.18(Ti)
+2.922 G(meout.queuewar).18 E(n)-.15 E F1 -.25(va)2.922 G .422
+(lue can be piggyback).25 F .422(ed on the)-.1 F F0(T)2.922 E F1 .423
+(option by indicating a time)2.922 F .846(after which a w)117 176.4 R
+.846(arning message should be sent; the tw)-.1 F 3.346(ot)-.1 G .845
+(imeouts are separated by a slash.)-3.346 F -.15(Fo)5.845 G(r).15 E -.15
+(ex)117 188.4 S(ample, the line).15 E -.4(OT)157 204.6 S(5d/4h).4 E .971
+(causes email to f)117 220.8 R .971(ail after \214v)-.1 F 3.471(ed)-.15
+G .971(ays, b)-3.471 F .971(ut a w)-.2 F .971
+(arning message will be sent after four hours.)-.1 F(This)5.972 E
+(should be lar)117 232.8 Q(ge enough that the message will ha)-.18 E .3
+-.15(ve b)-.2 H(een tried se).15 E -.15(ve)-.25 G(ral times.).15 E F0
+2.5(4.2. F)87 256.8 R(orking During Queue Runs)-.25 E F1 .849
+(By setting the)127 273 R F0 -.25(Fo)3.349 G(rkEachJ).25 E(ob)-.15 E F1
+(\()3.349 E F0(Y)A F1 3.348(\)o)C(ption,)-3.348 E F2(sendmail)3.348 E F1
+.848(will fork before each indi)3.348 F .848(vidual message)-.25 F .486
+(while running the queue.)102 285 R .486(This option w)5.486 F .486
+(as used with earlier releases to pre)-.1 F -.15(ve)-.25 G(nt).15 E F2
+(sendmail)2.986 E F1 .486(from con-)2.986 F 1.562(suming lar)102 297 R
+1.562(ge amounts of memory)-.18 F 6.562(.I)-.65 G 4.062(ts)-6.562 G
+1.562(hould no longer be necessary with)-4.062 F F2(sendmail)4.062 E F1
+4.062(8.12. If)4.062 F(the)4.062 E F0 -.25(Fo)102 309 S(rkEachJ).25 E
+(ob)-.15 E F1 .245(option is not set,)2.745 F F2(sendmail)2.745 E F1
+.245(will k)2.745 F .245(eep track of hosts that are do)-.1 F .246
+(wn during a queue run,)-.25 F(which can impro)102 321 Q .3 -.15(ve p)
+-.15 H(erformance dramatically).15 E(.)-.65 E(If the)127 337.2 Q F0 -.25
+(Fo)2.5 G(rkEachJ).25 E(ob)-.15 E F1(option is set,)2.5 E F2(sendmail)
+2.5 E F1(cannot use connection caching.)2.5 E F0 2.5(4.3. Queue)87 361.2
+R(Priorities)2.5 E F1(Ev)127 377.4 Q 1.128(ery message is assigned a pr\
+iority when it is \214rst instantiated, consisting of the message)-.15 F
+.286(size \(in bytes\) of)102 389.4 R .286(fset by the message class \(\
+which is determined from the Precedence: header\) times)-.25 F .343
+(the \231w)102 401.4 R .343(ork class f)-.1 F .343
+(actor\232 and the number of recipients times the \231w)-.1 F .342
+(ork recipient f)-.1 F(actor)-.1 E 4.242 -.7(.\232 T)-.55 H .342
+(he priority).7 F .073(is used to order the queue.)102 413.4 R .073(Hig\
+her numbers for the priority mean that the message will be processed)
+5.073 F(later when running the queue.)102 425.4 Q .329
+(The message size is included so that lar)127 441.6 R .328
+(ge messages are penalized relati)-.18 F .628 -.15(ve t)-.25 H 2.828(os)
+.15 G .328(mall messages.)-2.828 F .285(The message class allo)102 453.6
+R .285(ws users to send \231high priority\232 messages by including a \
+\231Precedence:\232 \214eld)-.25 F .008(in their message; the v)102
+465.6 R .008(alue of this \214eld is look)-.25 F .007(ed up in the)-.1 F
+F0(P)2.507 E F1 .007(lines of the con\214guration \214le.)2.507 F .007
+(Since the)5.007 F 1.966(number of recipients af)102 477.6 R 1.967(fect\
+s the amount of load a message presents to the system, this is also)-.25
+F(included into the priority)102 489.6 Q(.)-.65 E .53
+(The recipient and class f)127 505.8 R .53
+(actors can be set in the con\214guration \214le using the)-.1 F F0
+(RecipientF)3.03 E(actor)-.25 E F1(\()102 517.8 Q F0(y)A F1 3.442(\)a)C
+(nd)-3.442 E F0(ClassF)3.442 E(actor)-.25 E F1(\()3.442 E F0(z)A F1
+3.442(\)o)C .942(ptions respecti)-3.442 F -.15(ve)-.25 G(ly).15 E 5.942
+(.T)-.65 G(he)-5.942 E 3.442(yd)-.15 G(ef)-3.442 E .942
+(ault to 30000 \(for the recipient f)-.1 F .943(actor\) and)-.1 F
+(1800 \(for the class f)102 529.8 Q 2.5(actor\). The)-.1 F
+(initial priority is:)2.5 E F2(pri)168.495 547.8 Q/F3 10/Symbol SF(=)
+3.16 E F2(msgsize)3.18 E F3(-)2.38 E F1(\()2.2 E F2(class).2 E F3<b4>
+2.47 E F0(ClassFactor\))2.2 E F3(+)2.2 E F1(\()2.2 E F2(nrcpt).36 E F3
+<b4>2.88 E F0(RecipientFactor\))2.2 E F1(\(Remember)102 565.8 Q 3.328
+(,h)-.4 G .828(igher v)-3.328 F .828(alues for this parameter actually \
+mean that the job will be treated with lo)-.25 F(wer)-.25 E(priority)102
+577.8 Q(.\))-.65 E 1.519(The priority of a job can also be adjusted eac\
+h time it is processed \(that is, each time an)127 594 R .236
+(attempt is made to deli)102 606 R -.15(ve)-.25 G 2.736(ri).15 G .236
+(t\) using the \231w)-2.736 F .236(ork time f)-.1 F(actor)-.1 E 1.636
+-.7(,\232 s)-.4 H .236(et by the).7 F F0(RetryF)2.736 E(actor)-.25 E F1
+(\()2.736 E F0(Z)A F1 2.735(\)o)C 2.735(ption. This)-2.735 F .366
+(is added to the priority)102 618 R 2.866(,s)-.65 G 2.866(oi)-2.866 G
+2.867(tn)-2.866 G .367
+(ormally decreases the precedence of the job, on the grounds that jobs)
+-2.867 F .138(that ha)102 630 R .437 -.15(ve f)-.2 H .137(ailed man).05
+F 2.637(yt)-.15 G .137(imes will tend to f)-2.637 F .137(ail ag)-.1 F
+.137(ain in the future.)-.05 F(The)5.137 E F0(RetryF)2.637 E(actor)-.25
+E F1 .137(option def)2.637 F .137(aults to)-.1 F(90000.)102 642 Q F0 2.5
+(4.4. Load)87 666 R(Limiting)2.5 E F2(Sendmail)127 682.2 Q F1 .101
+(can be ask)2.601 F .101(ed to queue \(b)-.1 F .101(ut not deli)-.2 F
+-.15(ve)-.25 G .101(r\) mail if the system load a).15 F -.15(ve)-.2 G
+.102(rage gets too high).15 F .484(using the)102 694.2 R F0(QueueLA)
+2.984 E F1(\()2.984 E F0(x)A F1 2.984(\)o)C 2.984(ption. When)-2.984 F
+.483(the load a)2.983 F -.15(ve)-.2 G .483(rage e).15 F .483
+(xceeds the v)-.15 F .483(alue of the)-.25 F F0(QueueLA)2.983 E F1
+(option,)2.983 E .531(the deli)102 706.2 R -.15(ve)-.25 G .531
+(ry mode is set to).15 F F0(q)3.032 E F1 .532(\(queue only\) if the)
+3.032 F F0(QueueF)3.032 E(actor)-.25 E F1(\()3.032 E F0(q)A F1 3.032
+(\)o)C .532(ption di)-3.032 F .532(vided by the dif)-.25 F(ference)-.25
+E .01(in the current load a)102 718.2 R -.15(ve)-.2 G .01(rage and the)
+.15 F F0(QueueLA)2.51 E F1 .01
+(option plus one is less than the priority of the message)2.51 F 0 Cg EP
+%%Page: 31 27
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-31)195.86 E/F1 10/Times-Roman@0 SF 2.5<8a74>102 96 S
+(hat is, the message is queued if)-2.5 E(f:)-.25 E/F2 10/Times-Italic@0
+SF(pri)251.425 119.41 Q F1(>)3.16 E F0(QueueFactor)15.315 -7 M F2(LA)
+-66.835 14 M/F3 10/Symbol SF(-)2.23 E F0(QueueLA)2.2 E F3(+)2.2 E F1(1)
+2.2 E .4 LW 354.625 116.81 275.895 116.81 DL(The)102 142.67 Q F0(QueueF)
+2.616 E(actor)-.25 E F1 .116(option def)2.616 F .116
+(aults to 600000, so each point of load a)-.1 F -.15(ve)-.2 G .116
+(rage is w).15 F .116(orth 600000 priority)-.1 F
+(points \(as described abo)102 154.67 Q -.15(ve)-.15 G(\).).15 E -.15
+(Fo)127 170.87 S 3.894(rd).15 G 1.394(rastic cases, the)-3.894 F F0
+(RefuseLA)3.894 E F1(\()3.894 E F0(X)A F1 3.894(\)o)C 1.394
+(ption de\214nes a load a)-3.894 F -.15(ve)-.2 G 1.393(rage at which).15
+F F2(sendmail)3.893 E F1(will)3.893 E .432(refuse to accept netw)102
+182.87 R .432(ork connections.)-.1 F .432
+(Locally generated mail, i.e., mail which is not submitted via)5.432 F
+.318(SMTP \(including incoming UUCP mail\), is still accepted.)102
+194.87 R .317(Notice that the MSP submits mail to the)5.317 F(MT)102
+206.87 Q 3.213(Av)-.93 G .713(ia SMTP)-3.213 F 3.213(,a)-1.11 G .713
+(nd hence mail will be queued in the client queue in such a case.)-3.213
+F .714(Therefore it is)5.714 F
+(necessary to run the client mail queue periodically)102 218.87 Q(.)-.65
+E F0 2.5(4.5. Resour)87 242.87 R(ce Limits)-.18 E F2(Sendmail)127 259.07
+Q F1 .808(has se)3.308 F -.15(ve)-.25 G .808
+(ral parameters to control resource usage.).15 F .807
+(Besides those mentionted in the)5.807 F(pre)102 271.07 Q 8.476
+(vious section, there are at least)-.25 F F0(MaxDaemonChildr)10.976 E
+(en)-.18 E F1(,)A F0(ConnectionRateThr)10.976 E(ottle)-.18 E F1(,)A F0
+(MaxQueueChildr)102 283.07 Q(en)-.18 E F1 3.889(,a)C(nd)-3.889 E F0
+(MaxRunnersP)3.889 E(erQueue)-.2 E F1 6.389(.T)C 1.389(he latter tw)
+-6.389 F 3.889(ol)-.1 G 1.389(imit the number of)-3.889 F F2(sendmail)
+3.889 E F1 1.315(processes that operate on the queue.)102 295.07 R 1.315
+(These are discussed in the section `)6.315 F 1.315
+(`Queue Group Declara-)-.74 F(tion')102 307.07 Q 2.712('. The)-.74 F
+.212(former tw)2.712 F 2.712(oc)-.1 G .212
+(an be used to limit the number of incoming connections.)-2.712 F .212
+(Their appropriate)5.212 F -.25(va)102 319.07 S .062
+(lues depend on the host operating system and the hardw).25 F .062
+(are, e.g., amount of memory)-.1 F 5.062(.I)-.65 G 2.562(nm)-5.062 G(an)
+-2.562 E 2.562(ys)-.15 G(it-)-2.562 E 1.082
+(uations it might be useful to set limits to pre)102 331.07 R -.15(ve)
+-.25 G 1.082(nt to ha).15 F 1.382 -.15(ve t)-.2 H 1.082(oo man).15 F(y)
+-.15 E F2(sendmail)3.582 E F1 1.081(processes, ho)3.581 F(we)-.25 E -.15
+(ve)-.25 G -.4(r,).15 G .652(these limits can be ab)102 343.07 R .652
+(used to mount a denial of service attack.)-.2 F -.15(Fo)5.652 G 3.152
+(re).15 G .652(xample, if)-3.302 F F0(MaxDaemonChil-)3.152 E(dr)102
+355.07 Q(en=10)-.18 E F1 .901(then an attack)3.401 F .901
+(er needs to open only 10 SMTP sessions to the serv)-.1 F(er)-.15 E 3.4
+(,l)-.4 G(ea)-3.4 E 1.2 -.15(ve t)-.2 H .9(hem idle for).15 F .591
+(most of the time, and no more connections will be accepted.)102 367.07
+R .591(If this option is set then the timeouts)5.591 F 1.187
+(used in a SMTP session should be lo)102 379.07 R 1.187
+(wered from their def)-.25 F 1.187(ault v)-.1 F 1.187
+(alues to their minimum v)-.25 F 1.186(alues as)-.25 F
+(speci\214ed in RFC 2821 and listed in section 4.1.2.)102 391.07 Q F0
+2.5(4.6. Measur)87 415.07 R(es against Denial of Ser)-.18 E
+(vice Attacks)-.1 E F2(Sendmail)127 431.27 Q F1 1.673(has some b)4.173 F
+1.673(uilt-in measures ag)-.2 F 1.673
+(ainst simple denial of service \(DoS\) attacks.)-.05 F(The)6.674 E .914
+(SMTP serv)102 443.27 R .914(er by def)-.15 F .913(ault slo)-.1 F .913
+(ws do)-.25 F .913(wn if too man)-.25 F 3.413(yb)-.15 G .913
+(ad commands are issued or if some commands)-3.413 F .033
+(are repeated too often within a session.)102 455.27 R .034
+(Details can be found in the source \214le)5.033 F F0(sendmail/sr)2.534
+E(vrsmtp.c)-.1 E F1 2.169(by looking for the macro de\214nitions of)102
+467.27 R F0(MAXB)4.668 E(ADCOMMANDS)-.3 E F1(,)A F0(MAXNOOPCOMMANDS)
+4.668 E F1(,)A F0(MAXHELOCOMMANDS)102 479.27 Q F1(,)A F0
+(MAXVRFYCOMMANDS)4.414 E F1 4.414(,a)C(nd)-4.414 E F0(MAXETRNCOMMANDS)
+4.414 E F1 6.914(.I)C 4.414(fa)-6.914 G(n)-4.414 E .462
+(SMTP command is issued more often than the corresponding)102 491.27 R
+F0(MAXcmdCOMMANDS)2.962 E F1 -.25(va)2.961 G .461(lue, then).25 F .216
+(the response is delayed e)102 503.27 R(xponentially)-.15 E 2.716(,s)
+-.65 G .217(tarting with a sleep time of one second, up to a maximum of)
+-2.716 F 1.687(four minutes \(as de\214ned by)102 515.27 R F0
+(MAXTIMEOUT)4.187 E F1 4.187(\). If)B 1.687(the option)4.187 F F0
+(MaxDaemonChildr)4.187 E(en)-.18 E F1 1.687(is set to a)4.187 F -.25(va)
+102 527.27 S .734(lue greater than zero, then this could mak).25 F 3.235
+(eaD)-.1 G .735(oS attack e)-3.235 F -.15(ve)-.25 G 3.235(nw).15 G .735
+(orse since it k)-3.335 F .735(eeps a connection)-.1 F .868
+(open longer than necessary)102 539.27 R 5.868(.T)-.65 G .867
+(herefore a connection is terminated with a 421 SMTP reply code if)
+-5.868 F .57(the number of commands e)102 551.27 R .57
+(xceeds the limit by a f)-.15 F .57(actor of tw)-.1 F 3.07(oa)-.1 G(nd)
+-3.07 E F0(MAXB)3.07 E(ADCOMMANDS)-.3 E F1 .57(is set)3.07 F(to a v)102
+563.27 Q(alue greater than zero \(the def)-.25 E(ault is 25\).)-.1 E F0
+2.5(4.7. Deli)87 587.27 R -.1(ve)-.1 G(ry Mode).1 E F1 .254
+(There are a number of deli)127 603.47 R -.15(ve)-.25 G .253
+(ry modes that).15 F F2(sendmail)2.753 E F1 .253
+(can operate in, set by the)2.753 F F0(Deli)2.753 E -.1(ve)-.1 G(ryMode)
+.1 E F1(\()102 615.47 Q F0(d)A F1 3.598(\)c)C 1.098
+(on\214guration option.)-3.598 F 1.098(These modes specify ho)6.098 F
+3.598(wq)-.25 G 1.099(uickly mail will be deli)-3.598 F -.15(ve)-.25 G
+3.599(red. Le).15 F -.05(ga)-.15 G 3.599(lm).05 G(odes)-3.599 E(are:)102
+627.47 Q 17.22(id)142 643.67 S(eli)-17.22 E -.15(ve)-.25 G 2.5(ri).15 G
+(nteracti)-2.5 E -.15(ve)-.25 G(ly \(synchronously\)).15 E 15(bd)142
+655.67 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G
+(ackground \(asynchronously\))-2.5 E 15(qq)142 667.67 S
+(ueue only \(don')-15 E 2.5(td)-.18 G(eli)-2.5 E -.15(ve)-.25 G(r\)).15
+E 15(dd)142 679.67 S(efer deli)-15 E -.15(ve)-.25 G(ry attempts \(don')
+.15 E 2.5(td)-.18 G(eli)-2.5 E -.15(ve)-.25 G(r\)).15 E 1.274
+(There are tradeof)102 695.87 R 3.774(fs. Mode)-.25 F 1.274
+(\231i\232 gi)3.774 F -.15(ve)-.25 G 3.773(st).15 G 1.273
+(he sender the quick)-3.773 F 1.273(est feedback, b)-.1 F 1.273
+(ut may slo)-.2 F 3.773(wd)-.25 G -.25(ow)-3.773 G 3.773(ns).25 G(ome)
+-3.773 E .798(mailers and is hardly e)102 707.87 R -.15(ve)-.25 G 3.298
+(rn).15 G(ecessary)-3.298 E 5.799(.M)-.65 G .799(ode \231b\232 deli)
+-5.799 F -.15(ve)-.25 G .799(rs promptly b).15 F .799(ut can cause lar)
+-.2 F .799(ge numbers of)-.18 F .224(processes if you ha)102 719.87 R
+.524 -.15(ve a m)-.2 H .224(ailer that tak).15 F .224
+(es a long time to deli)-.1 F -.15(ve)-.25 G 2.724(ram).15 G 2.724
+(essage. Mode)-2.724 F .223(\231q\232 minimizes the)2.724 F 0 Cg EP
+%%Page: 32 28
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-32 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .596
+(load on your machine, b)102 96 R .596(ut means that deli)-.2 F -.15(ve)
+-.25 G .597(ry may be delayed for up to the queue interv).15 F 3.097
+(al. Mode)-.25 F .36(\231d\232 is identical to mode \231q\232 e)102 108
+R .36(xcept that it also pre)-.15 F -.15(ve)-.25 G .36
+(nts lookups in maps including the).15 F F0(-D)2.86 E F1 .36
+(\215ag from)2.86 F -.1(wo)102 120 S 2.075
+(rking during the initial queue phase; it is intended for `).1 F 2.076
+(`dial on demand')-.74 F 4.576('s)-.74 G 2.076(ites where DNS)-4.576 F
+.319(lookups might cost real mone)102 132 R 4.119 -.65(y. S)-.15 H .319
+(ome simple error messages \(e.g., host unkno).65 F .318
+(wn during the SMTP)-.25 F(protocol\) will be delayed using this mode.)
+102 144 Q(Mode \231b\232 is the usual def)5 E(ault.)-.1 E .052(If you r\
+un in mode \231q\232 \(queue only\), \231d\232 \(defer\), or \231b\232 \
+\(deli)127 160.2 R -.15(ve)-.25 G 2.552(ri).15 G 2.552(nb)-2.552 G
+(ackground\))-2.552 E/F2 10/Times-Italic@0 SF(sendmail)2.552 E F1(will)
+2.552 E 1.392(not e)102 172.2 R 1.392(xpand aliases and follo)-.15 F
+3.892(w.)-.25 G(forw)-3.892 E 1.392
+(ard \214les upon initial receipt of the mail.)-.1 F 1.391
+(This speeds up the)6.392 F(response to RCPT commands.)102 184.2 Q
+(Mode \231i\232 should not be used by the SMTP serv)5 E(er)-.15 E(.)-.55
+E F0 2.5(4.8. Log)87 208.2 R(Le)2.5 E -.1(ve)-.15 G(l).1 E F1 .189
+(The le)127 224.4 R -.15(ve)-.25 G 2.689(lo).15 G 2.689(fl)-2.689 G .189
+(ogging can be set for)-2.689 F F2(sendmail)2.689 E F1 5.189(.T)C .189
+(he def)-5.189 F .19(ault using a standard con\214guration table)-.1 F
+(is le)102 236.4 Q -.15(ve)-.25 G 2.5(l9).15 G 5(.T)-2.5 G(he le)-5 E
+-.15(ve)-.25 G(ls are as follo).15 E(ws:)-.25 E 31(0M)102 252.6 S
+(inimal logging.)-31 E 31(1S)102 268.8 S(erious system f)-31 E
+(ailures and potential security problems.)-.1 E 31(2L)102 285 S
+(ost communications \(netw)-31 E(ork problems\) and protocol f)-.1 E
+(ailures.)-.1 E 31(3O)102 301.2 S 1.238(ther serious f)-31 F 1.238
+(ailures, malformed addresses, transient forw)-.1 F 1.237
+(ard/include errors, connection)-.1 F(timeouts.)138 313.2 Q 31(4M)102
+329.4 S(inor f)-31 E(ailures, out of date alias databases, connection r\
+ejections via check_ rulesets.)-.1 E 31(5M)102 345.6 S
+(essage collection statistics.)-31 E 31(6C)102 361.8 S
+(reation of error messages, VRFY and EXPN commands.)-31 E 31(7D)102 378
+S(eli)-31 E -.15(ve)-.25 G(ry f).15 E(ailures \(host or user unkno)-.1 E
+(wn, etc.\).)-.25 E 31(8S)102 394.2 S(uccessful deli)-31 E -.15(ve)-.25
+G(ries and alias database reb).15 E(uilds.)-.2 E 31(9M)102 410.4 S
+(essages being deferred \(due to a host being do)-31 E(wn, etc.\).)-.25
+E 23.5(10 Database)102 426.6 R -.15(ex)2.5 G(pansion \(alias, forw).15 E
+(ard, and userdb lookups\) and authentication information.)-.1 E 23.5
+(11 NIS)102 442.8 R(errors and end of job processing.)2.5 E 23.5
+(12 Logs)102 459 R(all SMTP connections.)2.5 E 23.5(13 Log)102 475.2 R(\
+bad user shells, \214les with improper permissions, and other questiona\
+ble situations.)2.5 E 23.5(14 Logs)102 491.4 R(refused connections.)2.5
+E 23.5(15 Log)102 507.6 R(all incoming and outgoing SMTP commands.)2.5 E
+23.5(20 Logs)102 523.8 R .603(attempts to run lock)3.102 F .603
+(ed queue \214les.)-.1 F .603(These are not errors, b)5.603 F .603
+(ut can be useful to note if)-.2 F(your queue appears to be clogged.)138
+535.8 Q 23.5(30 Lost)102 552 R
+(locks \(only if using lockf instead of \215ock\).)2.5 E(Additionally)
+102 568.2 Q 2.717(,v)-.65 G .217(alues abo)-2.967 F .516 -.15(ve 6)-.15
+H 2.716(4a).15 G .216(re reserv)-2.716 F .216(ed for e)-.15 F .216
+(xtremely v)-.15 F .216(erbose deb)-.15 F .216(ugging output.)-.2 F .216
+(No normal site)5.216 F -.1(wo)102 580.2 S(uld e).1 E -.15(ve)-.25 G 2.5
+(rs).15 G(et these.)-2.5 E F0 2.5(4.9. File)87 604.2 R(Modes)2.5 E F1
+.264(The modes used for \214les depend on what functionality you w)127
+620.4 R .264(ant and the le)-.1 F -.15(ve)-.25 G 2.764(lo).15 G 2.764
+(fs)-2.764 G .264(ecurity you)-2.764 F 2.561(require. In)102 632.4 R
+(man)2.561 E 2.561(yc)-.15 G(ases)-2.561 E F2(sendmail)2.561 E F1 .06
+(does careful checking of the modes of \214les and directories to a)
+2.561 F -.2(vo)-.2 G(id).2 E 1.335(accidental compromise; if you w)102
+644.4 R 1.336(ant to mak)-.1 F 3.836(ei)-.1 G 3.836(tp)-3.836 G 1.336
+(ossible to ha)-3.836 F 1.636 -.15(ve g)-.2 H 1.336
+(roup-writable support \214les you).15 F(may need to use the)102 656.4 Q
+F0(DontBlameSendmail)2.5 E F1(option to turn of)2.5 E 2.5(fs)-.25 G
+(ome of these checks.)-2.5 E F0 2.5(4.9.1. T)102 680.4 R 2.5(os)-.92 G
+(uid or not to suid?)-2.5 E F2(Sendmail)142 696.6 Q F1 .163
+(is no longer installed set-user)2.663 F .163(-ID to root.)-.2 F .162
+(sendmail/SECURITY e)5.163 F .162(xplains ho)-.15 F 2.662(wt)-.25 G(o)
+-2.662 E .559(con\214gure and install)117 708.6 R F2(sendmail)3.059 E F1
+.559(without set-user)3.059 F .559(-ID to root b)-.2 F .56
+(ut set-group-ID which is the def)-.2 F(ault)-.1 E
+(con\214guration starting with 8.12.)117 720.6 Q 0 Cg EP
+%%Page: 33 29
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-33)195.86 E/F1 10/Times-Roman@0 SF 1.286
+(The daemon usually runs as root, unless other measures are tak)142 96 R
+3.785(en. At)-.1 F 1.285(the point where)3.785 F/F2 10/Times-Italic@0 SF
+(sendmail)117 108 Q F1 .494(is about to)2.994 F F2 -.2(ex)2.994 G(ec).2
+E F1 .494(\(2\) a mailer)1.666 F 2.995(,i)-.4 G 2.995(tc)-2.995 G .495
+(hecks to see if the userid is zero \(root\); if so, it resets)-2.995 F
+.334(the userid and groupid to a def)117 120 R .333(ault \(set by the)
+-.1 F F0(U=)2.833 E F1 .333
+(equate in the mailer line; if that is not set, the)2.833 F F0
+(DefaultUser)117 132 Q F1 .121(option is used\).)2.621 F .122
+(This can be o)5.121 F -.15(ve)-.15 G .122(rridden by setting the).15 F
+F0(S)2.622 E F1 .122(\215ag to the mailer for mail-)2.622 F .804
+(ers that are trusted and must be called as root.)117 144 R(Ho)5.804 E
+(we)-.25 E -.15(ve)-.25 G 1.604 -.4(r, t).15 H .804
+(his will cause mail processing to be).4 F(accounted \(using)117 156 Q
+F2(sa)2.5 E F1
+(\(8\)\) to root rather than to the user sending the mail.)1.666 E 3.557
+(Am)142 172.2 S 1.057(iddle ground is to set the)-3.557 F F0(RunAsUser)
+3.557 E F1 3.557(option. This)3.557 F(causes)3.557 E F2(sendmail)3.557 E
+F1 1.058(to become the)3.557 F .392(indicated user as soon as it has do\
+ne the startup that requires root pri)117 184.2 R(vile)-.25 E .392
+(ges \(primarily)-.15 F 2.892(,o)-.65 G(pening)-2.892 E(the)117 196.2 Q
+/F3 9/Times-Roman@0 SF(SMTP)3.741 E F1(sock)3.741 E 3.741(et\). If)-.1 F
+1.241(you use)3.741 F F0(RunAsUser)3.741 E F1 3.741(,t)C 1.241
+(he queue directory \(normally)-3.741 F F2(/var/spool/mqueue)3.742 E F1
+(\))A 1.315(should be o)117 208.2 R 1.315(wned by that user)-.25 F 3.815
+(,a)-.4 G 1.315(nd all \214les and databases \(including user)-3.815 F
+F2(.forwar)3.814 E(d)-.37 E F1 1.314(\214les, alias)3.814 F .256
+(\214les, :include: \214les, and e)117 220.2 R .256
+(xternal databases\) must be readable by that user)-.15 F 5.257(.A)-.55
+G .257(lso, since sendmail)-5.257 F .836
+(will not be able to change its uid, deli)117 232.2 R -.15(ve)-.25 G
+.836(ry to programs or \214les will be mark).15 F .836
+(ed as unsafe, e.g.,)-.1 F(undeli)117 244.2 Q -.15(ve)-.25 G .814
+(rable, in).15 F F2(.forwar)3.314 E(d)-.37 E F1 3.314(,a)C .814
+(liases, and :include: \214les.)-3.314 F .814(Administrators can o)5.814
+F -.15(ve)-.15 G .815(rride this by set-).15 F .7(ting the)117 256.2 R
+F0(DontBlameSendmail)3.2 E F1 .7(option to the setting)3.2 F F0
+(NonRootSafeAddr)3.2 E F1(.)A F0(RunAsUser)5.7 E F1 .7(is proba-)3.2 F
+1.186(bly best suited for \214re)117 268.2 R -.1(wa)-.25 G 1.186
+(ll con\214gurations that don').1 F 3.686(th)-.18 G -2.25 -.2(av e)
+-3.686 H(re)3.886 E 1.186(gular user logins.)-.15 F 1.186
+(If the option is)6.186 F 1.443
+(used on a system which performs local deli)117 280.2 R -.15(ve)-.25 G
+(ry).15 E 3.943(,t)-.65 G 1.443(hen the local deli)-3.943 F -.15(ve)-.25
+G 1.442(ry agent must ha).15 F 1.742 -.15(ve t)-.2 H(he).15 E .974
+(proper permissions \(i.e., usually set-user)117 292.2 R .975
+(-ID root\) since it will be in)-.2 F -.2(vo)-.4 G -.1(ke).2 G 3.475(db)
+.1 G 3.475(yt)-3.475 G(he)-3.475 E F0(RunAsUser)3.475 E F1(,)A
+(not by root.)117 304.2 Q F0 2.5(4.9.2. T)102 328.2 R(ur)-.92 E
+(ning off security checks)-.15 E F2(Sendmail)142 344.4 Q F1 .648(is v)
+3.148 F .648
+(ery particular about the modes of \214les that it reads or writes.)-.15
+F -.15(Fo)5.648 G 3.148(re).15 G(xample,)-3.298 E .25(by def)117 356.4 R
+.251(ault it will refuse to read most \214les that are group writable o\
+n the grounds that the)-.1 F 2.751(ym)-.15 G(ight)-2.751 E(ha)117 368.4
+Q 1.216 -.15(ve b)-.2 H .916
+(een tampered with by someone other than the o).15 F .916
+(wner; it will e)-.25 F -.15(ve)-.25 G 3.416(nr).15 G .916
+(efuse to read \214les in)-3.416 F 1.456(group writable directories.)117
+380.4 R 1.456(Also, sendmail will refuse to create a ne)6.456 F 3.957
+(wa)-.25 G 1.457(liases database in an)-3.957 F .032(unsafe directory)
+117 392.4 R 5.032(.Y)-.65 G .031(ou can get around this by manually cre\
+ating the database \214le as a trusted user)-6.132 F
+(ahead of time and then reb)117 404.4 Q
+(uilding the aliases database with)-.2 E F0(newaliases)2.5 E F1(.)A .437
+(If you are)142 420.6 R F2(quite)2.937 E F1 .437
+(sure that your con\214guration is safe and you w)2.937 F(ant)-.1 E F2
+(sendmail)2.938 E F1 .438(to a)2.938 F -.2(vo)-.2 G .438(id these).2 F
+1.187(security checks, you can turn of)117 432.6 R 3.687(fc)-.25 G 1.187
+(ertain checks using the)-3.687 F F0(DontBlameSendmail)3.686 E F1 3.686
+(option. This)3.686 F 1.389(option tak)117 444.6 R 1.389
+(es one or more names that disable checks.)-.1 F 1.39
+(In the descriptions that follo)6.389 F 2.69 -.65(w, \231)-.25 H(unsafe)
+.65 E(directory\232 means a directory that is writable by an)117 456.6 Q
+(yone other than the o)-.15 E(wner)-.25 E 5(.T)-.55 G(he v)-5 E
+(alues are:)-.25 E 15.73(Safe No)117 472.8 R(special handling.)2.5 E
+(AssumeSafeCho)117 489 Q(wn)-.25 E .413(Assume that the)153 501 R F2
+-.15(ch)2.913 G(own).15 E F1 .413(system call is restricted to root.)
+2.913 F .413(Since some v)5.413 F .412(ersions of UNIX)-.15 F .865
+(permit re)153 513 R .865(gular users to gi)-.15 F 1.166 -.15(ve aw)-.25
+H .866(ay their \214les to other users on some \214lesystems,).05 F F2
+(send-)3.366 E(mail)153 525 Q F1 .457(often cannot assume that a gi)
+2.957 F -.15(ve)-.25 G 2.956<6e8c>.15 G .456(le w)-2.956 F .456
+(as created by the o)-.1 F(wner)-.25 E 2.956(,p)-.4 G .456
+(articularly when)-2.956 F 1.474(it is in a writable directory)153 537 R
+6.475(.Y)-.65 G 1.475(ou can set this \215ag if you kno)-7.575 F 3.975
+(wt)-.25 G 1.475(hat \214le gi)-3.975 F -.15(ve)-.25 G -2.3 -.15(aw a)
+.15 H 3.975(yi).15 G(s)-3.975 E(restricted on your system.)153 549 Q
+(ClassFileInUnsafeDirP)117 565.2 Q(ath)-.15 E .494
+(When reading class \214les \(using the)153 577.2 R F0(F)2.993 E F1 .493
+(line in the con\214guration \214le\), allo)2.993 F 2.993<778c>-.25 G
+.493(les that are)-2.993 F(in unsafe directories.)153 589.2 Q(DontW)117
+605.4 Q(arnF)-.8 E(orw)-.15 E(ardFileInUnsafeDirP)-.1 E(ath)-.15 E(Pre)
+153 617.4 Q -.15(ve)-.25 G(nt logging of unsafe directory path w).15 E
+(arnings for non-e)-.1 E(xistent forw)-.15 E(ard \214les.)-.1 E
+(ErrorHeaderInUnsafeDirP)117 633.6 Q(ath)-.15 E(Allo)153 645.6 Q 2.5(wt)
+-.25 G(he \214le named in the)-2.5 E F0(Err)2.5 E(orHeader)-.18 E F1
+(option to be in an unsafe directory)2.5 E(.)-.65 E(FileDeli)117 661.8 Q
+-.15(ve)-.25 G(ryT).15 E(oHardLink)-.8 E(Allo)153 673.8 Q 2.5(wd)-.25 G
+(eli)-2.5 E -.15(ve)-.25 G(ry to \214les that are hard links.).15 E
+(FileDeli)117 690 Q -.15(ve)-.25 G(ryT).15 E(oSymLink)-.8 E(Allo)153 702
+Q 2.5(wd)-.25 G(eli)-2.5 E -.15(ve)-.25 G
+(ry to \214les that are symbolic links.).15 E 0 Cg EP
+%%Page: 34 30
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-34 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -.15(Fo)
+117 96 S(rw).15 E(ardFileInGroupWritableDirP)-.1 E(ath)-.15 E(Allo)153
+108 Q(w)-.25 E/F2 10/Times-Italic@0 SF(.forwar)2.5 E(d)-.37 E F1
+(\214les in group writable directories.)2.5 E -.15(Fo)117 124.2 S(rw).15
+E(ardFileInUnsafeDirP)-.1 E(ath)-.15 E(Allo)153 136.2 Q(w)-.25 E F2
+(.forwar)2.5 E(d)-.37 E F1(\214les in unsafe directories.)2.5 E -.15(Fo)
+117 152.4 S(rw).15 E(ardFileInUnsafeDirP)-.1 E(athSafe)-.15 E(Allo)153
+164.4 Q 2.612(wa)-.25 G F2(.forwar)A(d)-.37 E F1 .112(\214le that is in\
+ an unsafe directory to include references to program and)2.612 F
+(\214les.)153 176.4 Q(GroupReadableK)117 192.6 Q -.15(ey)-.25 G(File).15
+E(Accept a group-readable k)153 204.6 Q .3 -.15(ey \214)-.1 H(le for ST)
+.15 E(AR)-.93 E(TTLS.)-.6 E(GroupReadableSASLDBFile)117 220.8 Q
+(Accept a group-readable Cyrus SASL passw)153 232.8 Q(ord \214le.)-.1 E
+(GroupWritableAliasFile)117 249 Q(Allo)153 261 Q 2.5(wg)-.25 G
+(roup-writable alias \214les.)-2.5 E(GroupWritableDirP)117 277.2 Q
+(athSafe)-.15 E .224(Change the de\214nition of \231unsafe directory\
+\232 to consider group-writable directories to be)153 289.2 R 2.5
+(safe. W)153 301.2 R(orld-writable directories are al)-.8 E -.1(wa)-.1 G
+(ys unsafe.).1 E(GroupWritableF)117 317.4 Q(orw)-.15 E(ardFile)-.1 E
+(Allo)153 329.4 Q 2.5(wg)-.25 G(roup writable)-2.5 E F2(.forwar)2.5 E(d)
+-.37 E F1(\214les.)2.5 E(GroupWritableF)117 345.6 Q(orw)-.15 E
+(ardFileSafe)-.1 E(Accept group-writable)153 357.6 Q F2(.forwar)2.5 E(d)
+-.37 E F1(\214les as safe for program and \214le deli)2.5 E -.15(ve)-.25
+G(ry).15 E(.)-.65 E(GroupWritableIncludeFile)117 373.8 Q(Allo)153 385.8
+Q 2.5(wg)-.25 G(roup wriable)-2.5 E F2(:include:)2.5 E F1(\214les.)2.5 E
+(GroupWritableIncludeFileSafe)117 402 Q(Accept group-writable)153 414 Q
+F2(:include:)2.5 E F1(\214les as safe for program and \214le deli)2.5 E
+-.15(ve)-.25 G(ry).15 E(.)-.65 E(GroupWritableSASLDBFile)117 430.2 Q
+(Accept a group-writable Cyrus SASL passw)153 442.2 Q(ord \214le.)-.1 E
+(HelpFileInUnsafeDirP)117 458.4 Q(ath)-.15 E(Allo)153 470.4 Q 2.5(wt)
+-.25 G(he \214le named in the)-2.5 E F0(HelpFile)2.5 E F1
+(option to be in an unsafe directory)2.5 E(.)-.65 E
+(IncludeFileInGroupWritableDirP)117 486.6 Q(ath)-.15 E(Allo)153 498.6 Q
+(w)-.25 E F2(:include:)2.5 E F1(\214les in group writable directories.)
+2.5 E(IncludeFileInUnsafeDirP)117 514.8 Q(ath)-.15 E(Allo)153 526.8 Q(w)
+-.25 E F2(:include:)2.5 E F1(\214les in unsafe directories.)2.5 E
+(IncludeFileInUnsafeDirP)117 543 Q(athSafe)-.15 E(Allo)153 555 Q 3.705
+(wa)-.25 G F2(:include:)A F1 1.206
+(\214le that is in an unsafe directory to include references to program)
+3.705 F(and \214les.)153 567 Q(Insuf)117 583.2 Q(\214cientEntrop)-.25 E
+(y)-.1 E -.35(Tr)153 595.2 S 3.213(yt).35 G 3.213(ou)-3.213 G .713
+(se ST)-3.213 F(AR)-.93 E .713(TTLS e)-.6 F -.15(ve)-.25 G 3.213(ni).15
+G 3.213(ft)-3.213 G .713
+(he PRNG for OpenSSL is not properly seeded despite)-3.213 F
+(the security problems.)153 607.2 Q(Link)117 623.4 Q
+(edAliasFileInWritableDir)-.1 E(Allo)153 635.4 Q 2.5(wa)-.25 G 2.5(na)
+-2.5 G(lias \214le that is a link in a writable directory)-2.5 E(.)-.65
+E(Link)117 651.6 Q(edClassFileInWritableDir)-.1 E(Allo)153 663.6 Q 2.5
+(wc)-.25 G(lass \214les that are links in writable directories.)-2.5 E
+(Link)117 679.8 Q(edF)-.1 E(orw)-.15 E(ardFileInWritableDir)-.1 E(Allo)
+153 691.8 Q(w)-.25 E F2(.forwar)2.5 E(d)-.37 E F1
+(\214les that are links in writable directories.)2.5 E(Link)117 708 Q
+(edIncludeFileInWritableDir)-.1 E(Allo)153 720 Q(w)-.25 E F2(:include:)
+2.5 E F1(\214les that are links in writable directories.)2.5 E 0 Cg EP
+%%Page: 35 31
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-35)195.86 E/F1 10/Times-Roman@0 SF(Link)117 96 Q
+(edMapInWritableDir)-.1 E(Allo)153 108 Q 2.684(wm)-.25 G .184
+(ap \214les that are links in writable directories.)-2.684 F .185
+(This includes alias database \214les.)5.185 F(Link)117 124.2 Q
+(edServiceSwitchFileInWritableDir)-.1 E(Allo)153 136.2 Q 2.5(wt)-.25 G
+(he service switch \214le to be a link e)-2.5 E -.15(ve)-.25 G 2.5(ni)
+.15 G 2.5(ft)-2.5 G(he directory is writable.)-2.5 E(MapInUnsafeDirP)117
+152.4 Q(ath)-.15 E(Allo)153 164.4 Q 2.97(wm)-.25 G .47(aps \(e.g.,)-2.97
+F/F2 10/Times-Italic@0 SF(hash)2.97 E F1(,)A F2(btr)2.97 E(ee)-.37 E F1
+2.97(,a)C(nd)-2.97 E F2(dbm)2.97 E F1 .47
+(\214les\) in unsafe directories.)2.97 F .47(This includes alias)5.47 F
+(database \214les.)153 176.4 Q(NonRootSafeAddr)117 192.6 Q .484
+(Do not mark \214le and program deli)153 204.6 R -.15(ve)-.25 G .485
+(ries as unsafe if sendmail is not running with root).15 F(pri)153 216.6
+Q(vile)-.25 E(ges.)-.15 E(RunProgramInUnsafeDirP)117 232.8 Q(ath)-.15 E
+(Run programs that are in writable directories without logging a w)153
+244.8 Q(arning.)-.1 E(RunWritableProgram)117 261 Q
+(Run programs that are group- or w)153 273 Q
+(orld-writable without logging a w)-.1 E(arning.)-.1 E -.35(Tr)117 289.2
+S(ustStick).35 E(yBit)-.15 E(Allo)153 301.2 Q 3.406(wg)-.25 G .906
+(roup or w)-3.406 F .905(orld writable directories if the stick)-.1 F
+3.405(yb)-.15 G .905(it is set on the directory)-3.405 F 5.905(.D)-.65 G
+(o)-5.905 E(not set this on systems which do not honor the stick)153
+313.2 Q 2.5(yb)-.15 G(it on directories.)-2.5 E -.8(Wo)117 329.4 S
+(rldWritableAliasFile).8 E(Accept w)153 341.4 Q
+(orld-writable alias \214les.)-.1 E -.8(Wo)117 357.6 S(rldWritableF).8 E
+(orw)-.15 E(ard\214le)-.1 E(Allo)153 369.6 Q 2.5(ww)-.25 G
+(orld writable)-2.6 E F2(.forwar)2.5 E(d)-.37 E F1(\214les.)2.5 E -.8
+(Wo)117 385.8 S(rldWritableInclude\214le).8 E(Allo)153 397.8 Q 2.5(ww)
+-.25 G(orld wriable)-2.6 E F2(:include:)2.5 E F1(\214les.)2.5 E
+(WriteMapT)117 414 Q(oHardLink)-.8 E(Allo)153 426 Q 2.5(ww)-.25 G
+(rites to maps that are hard links.)-2.5 E(WriteMapT)117 442.2 Q
+(oSymLink)-.8 E(Allo)153 454.2 Q 2.5(ww)-.25 G
+(rites to maps that are symbolic links.)-2.5 E(WriteStatsT)117 470.4 Q
+(oHardLink)-.8 E(Allo)153 482.4 Q 2.5(wt)-.25 G
+(he status \214le to be a hard link.)-2.5 E(WriteStatsT)117 498.6 Q
+(oSymLink)-.8 E(Allo)153 510.6 Q 2.5(wt)-.25 G
+(he status \214le to be a symbolic link.)-2.5 E F0 2.5(4.10. Connection)
+87 534.6 R(Caching)2.5 E F1 .642(When processing the queue,)127 550.8 R
+F2(sendmail)3.142 E F1 .642(will try to k)3.142 F .642(eep the last fe)
+-.1 F 3.142(wo)-.25 G .642(pen connections open to)-3.142 F -.2(avo)102
+562.8 S(id startup and shutdo).2 E(wn costs.)-.25 E
+(This only applies to IPC and LPC connections.)5 E .286
+(When trying to open a connection the cache is \214rst searched.)127 579
+R .286(If an open connection is found,)5.286 F 1.033
+(it is probed to see if it is still acti)102 591 R 1.333 -.15(ve b)-.25
+H 3.533(ys).15 G 1.033(ending a)-3.533 F/F3 9/Times-Roman@0 SF(RSET)
+3.533 E F1 3.534(command. It)3.534 F 1.034(is not an error if this f)
+3.534 F(ails;)-.1 E(instead, the connection is closed and reopened.)102
+603 Q -1 -.8(Tw o)127 619.2 T .408
+(parameters control the connection cache.)3.708 F(The)5.408 E F0
+(ConnectionCacheSize)2.908 E F1(\()2.908 E F0(k)A F1 2.908(\)o)C .408
+(ption de\214nes)-2.908 F .145
+(the number of simultaneous open connections that will be permitted.)102
+631.2 R .145(If it is set to zero, connections)5.145 F .213
+(will be closed as quickly as possible.)102 643.2 R .212(The def)5.212 F
+.212(ault is one.)-.1 F .212(This should be set as appropriate for your)
+5.212 F .629
+(system size; it will limit the amount of system resources that)102
+655.2 R F2(sendmail)3.13 E F1 .63(will use during queue runs.)3.13 F(Ne)
+102 667.2 Q -.15(ve)-.25 G 2.5(rs).15 G(et this higher than 4.)-2.5 E
+(The)127 683.4 Q F0(ConnectionCacheT)2.741 E(imeout)-.18 E F1(\()2.741 E
+F0(K)A F1 2.741(\)o)C .241(ption speci\214es the maximum time that an)
+-2.741 F 2.741(yc)-.15 G .24(ached con-)-2.741 F .899
+(nection will be permitted to idle.)102 695.4 R .899
+(When the idle time e)5.899 F .9(xceeds this v)-.15 F .9
+(alue the connection is closed.)-.25 F .34
+(This number should be small \(under ten minutes\) to pre)102 707.4 R
+-.15(ve)-.25 G .34(nt you from grabbing too man).15 F 2.84(yr)-.15 G
+(esources)-2.84 E(from other hosts.)102 719.4 Q(The def)5 E
+(ault is \214v)-.1 E 2.5(em)-.15 G(inutes.)-2.5 E 0 Cg EP
+%%Page: 36 32
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-36 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(4.11. Name)87 96 R(Ser)2.5 E
+-.1(ve)-.1 G 2.5(rA).1 G(ccess)-2.5 E/F1 10/Times-Roman@0 SF .103
+(Control of host address lookups is set by the)127 112.2 R F0(hosts)
+2.604 E F1 .104(service entry in your service switch \214le.)2.604 F(If)
+5.104 E .99(you are on a system that has b)102 124.2 R .99
+(uilt-in service switch support \(e.g., Ultrix, Solaris, or DEC OSF/1\))
+-.2 F .335(then your system is probably con\214gured properly already)
+102 136.2 R 5.335(.O)-.65 G(therwise,)-5.335 E/F2 10/Times-Italic@0 SF
+(sendmail)2.836 E F1 .336(will consult the \214le)2.836 F F0
+(/etc/mail/ser)102 148.2 Q(vice.switch)-.1 E F1 4.902(,w)C 2.402
+(hich should be created.)-4.902 F F2(Sendmail)7.402 E F1 2.402
+(only uses tw)4.902 F 4.902(oe)-.1 G(ntries:)-4.902 E F0(hosts)4.901 E
+F1(and)4.901 E F0(aliases)102 160.2 Q F1 2.745(,a)C .246
+(lthough system routines may use other services \(notably the)-2.745 F
+F0(passwd)2.746 E F1 .246(service for user name)2.746 F(lookups by)102
+172.2 Q F2 -.1(ge)2.5 G(tpwname).1 E F1(\).)A(Ho)127 188.4 Q(we)-.25 E
+-.15(ve)-.25 G 1.511 -.4(r, s).15 H .711
+(ome systems \(such as SunOS 4.X\) will do DNS lookups re).4 F -.05(ga)
+-.15 G .71(rdless of the setting).05 F 1.028
+(of the service switch entry)102 200.4 R 6.028(.I)-.65 G 3.529(np)-6.028
+G(articular)-3.529 E 3.529(,t)-.4 G 1.029(he system routine)-3.529 F F2
+-.1(ge)3.529 G(thostbyname).1 E F1 1.029(\(3\) is used to look up)B
+1.869(host names, and man)102 212.4 R 4.369(yv)-.15 G 1.869(endor v)
+-4.519 F 1.869
+(ersions try some combination of DNS, NIS, and \214le lookup in)-.15 F
+1.73(/etc/hosts without consulting a service switch.)102 224.4 R F2
+(Sendmail)6.731 E F1(mak)4.231 E 1.731(es no attempt to w)-.1 F 1.731
+(ork around this)-.1 F .368(problem, and the DNS lookup will be done an)
+102 236.4 R(yw)-.15 E(ay)-.1 E 5.368(.I)-.65 G 2.868(fy)-5.368 G .367
+(ou do not ha)-2.868 F .667 -.15(ve a n)-.2 H(ameserv).15 E .367
+(er con\214gured at)-.15 F .464(all, such as at a UUCP-only site,)102
+248.4 R F2(sendmail)2.964 E F1 .464
+(will get a \231connection refused\232 message when it tries to)2.964 F
+.424(connect to the name serv)102 260.4 R(er)-.15 E 5.424(.I)-.55 G
+2.924(ft)-5.424 G(he)-2.924 E F0(hosts)2.924 E F1 .423
+(switch entry has the service \231dns\232 listed some)2.924 F .423
+(where in the)-.25 F(list,)102 272.4 Q F2(sendmail)3.312 E F1 .813
+(will interpret this to mean a temporary f)3.313 F .813
+(ailure and will queue the mail for later pro-)-.1 F
+(cessing; otherwise, it ignores the name serv)102 284.4 Q(er data.)-.15
+E .673(The same technique is used to decide whether to do MX lookups.)
+127 300.6 R .672(If you w)5.672 F .672(ant MX support,)-.1 F(you)102
+312.6 Q F2(must)2.5 E F1(ha)2.5 E .3 -.15(ve \231)-.2 H
+(dns\232 listed as a service in the).15 E F0(hosts)2.5 E F1
+(switch entry)2.5 E(.)-.65 E(The)127 328.8 Q F0(Resolv)3.869 E
+(erOptions)-.1 E F1(\()3.869 E F0(I)A F1 3.869(\)o)C 1.369(ption allo)
+-3.869 F 1.369(ws you to tweak name serv)-.25 F 1.369(er options.)-.15 F
+1.37(The command)6.37 F .892(line tak)102 340.8 R .892
+(es a series of \215ags as documented in)-.1 F F2 -.37(re)3.392 G
+(solver).37 E F1 .892(\(3\) \(with the leading \231RES_\232 deleted\).)B
+(Each)5.892 E(can be preceded by an optional `+' or `)102 352.8 Q/F3 10
+/Symbol SF(-)A F1 2.5('. F)B(or e)-.15 E(xample, the line)-.15 E 2.5(OR)
+142 369 S(esolv)-2.5 E(erOptions=+AA)-.15 E(ONL)-.55 E(Y)-1 E F3(-)2.5 E
+F1(DNSRCH)A .861(turns on the AA)102 385.2 R(ONL)-.55 E 3.361(Y\()-1 G
+.861(accept authoritati)-3.361 F 1.161 -.15(ve a)-.25 H .861
+(nswers only\) and turns of).15 F 3.362(ft)-.25 G .862
+(he DNSRCH \(search the)-3.362 F 2.039(domain path\) options.)102 397.2
+R 2.039(Most resolv)7.039 F 2.039(er libraries def)-.15 F 2.039
+(ault DNSRCH, DEFN)-.1 F 2.039(AMES, and RECURSE)-.35 F .393
+(\215ags on and all others of)102 409.2 R 2.894(f. If)-.25 F .394
+(NETINET6 is enabled, most libraries def)2.894 F .394
+(ault to USE_INET6 as well.)-.1 F -1.1(Yo)102 421.2 S 3.749(uc)1.1 G
+1.249(an also include \231HasW)-3.749 F 1.248
+(ildcardMX\232 to specify that there is a wildcard MX record matching)
+-.4 F .224(your domain; this turns of)102 433.2 R 2.724(fM)-.25 G 2.724
+(Xm)-2.724 G .224
+(atching when canonifying names, which can lead to inappropriate)-2.724
+F 5.249(canoni\214cations. Use)102 445.2 R<9957>5.249 E(orkAroundBrok)
+-.8 E 2.749(enAAAA\232 when f)-.1 F 2.749(aced with a brok)-.1 F 2.749
+(en nameserv)-.1 F 2.748(er that)-.15 F .564(returns SER)102 457.2 R(VF)
+-.8 E .564(AIL \(a temporary f)-.74 F .565
+(ailure\) on T_AAAA \(IPv6\) lookups during hostname canoni\214ca-)-.1 F
+2.5(tion. Notice:)102 469.2 R
+(it might be necessary to apply the same \(or similar\) options to)2.5 E
+F2(submit.cf)2.5 E F1(too.)2.5 E -1.11(Ve)127 485.4 S 1.733(rsion le)
+1.11 F -.15(ve)-.25 G 4.233(l1c).15 G 1.733
+(on\214gurations \(see the section about `)-4.233 F 1.732
+(`Con\214guration V)-.74 F 1.732(ersion Le)-1.11 F -.15(ve)-.25 G(l').15
+E 1.732('\) turn)-.74 F .842(DNSRCH and DEFN)102 497.4 R .842(AMES of)
+-.35 F 3.342(fw)-.25 G .842(hen doing deli)-3.342 F -.15(ve)-.25 G .842
+(ry lookups, b).15 F .842(ut lea)-.2 F 1.143 -.15(ve t)-.2 H .843
+(hem on e).15 F -.15(ve)-.25 G .843(rywhere else.).15 F -1.11(Ve)102
+509.4 S 1.043(rsion 8 of)1.11 F F2(sendmail)3.543 E F1 1.043(ignores th\
+em when doing canoni\214cation lookups \(that is, when using $[ ...)
+3.543 F .391($]\), and al)102 521.4 R -.1(wa)-.1 G .391
+(ys does the search.).1 F .392(If you don')5.391 F 2.892(tw)-.18 G .392
+(ant to do automatic name e)-2.992 F .392(xtension, don')-.15 F 2.892
+(tc)-.18 G .392(all $[ ...)-2.892 F($].)102 533.4 Q .486
+(The search rules for $[ ... $] are some)127 549.6 R .485(what dif)-.25
+F .485(ferent than usual.)-.25 F .485(If the name being look)5.485 F
+.485(ed up)-.1 F .109(has at least one dot, it al)102 561.6 R -.1(wa)-.1
+G .109(ys tries the unmodi\214ed name \214rst.).1 F .11(If that f)5.11 F
+.11(ails, it tries the reduced search)-.1 F .124
+(path, and lastly tries the unmodi\214ed name \(b)102 573.6 R .124
+(ut only for names without a dot, since names with a dot)-.2 F(ha)102
+585.6 Q .788 -.15(ve a)-.2 H .488(lready been tried\).).15 F .488
+(This allo)5.488 F .489(ws names such as `)-.25 F(`utc.CS')-.74 E 2.989
+('t)-.74 G 2.989(om)-2.989 G .489(atch the site in Czechoslo)-2.989 F
+-.25(va)-.15 G(kia).25 E 1.588
+(rather than the site in your local Computer Science department.)102
+597.6 R 1.587(It also prefers A and CN)6.587 F(AME)-.35 E .512
+(records o)102 609.6 R -.15(ve)-.15 G 3.012(rM).15 G 3.012(Xr)-3.012 G
+.512(ecords \212 that is, if it \214nds an MX record it mak)-3.012 F
+.513(es note of it, b)-.1 F .513(ut k)-.2 F .513(eeps looking.)-.1 F
+1.542(This w)102 621.6 R(ay)-.1 E 4.042(,i)-.65 G 4.042(fy)-4.042 G
+1.541(ou ha)-4.042 F 1.841 -.15(ve a w)-.2 H 1.541
+(ildcard MX record matching your domain, it will not assume that all).15
+F(names match.)102 633.6 Q 3.453 -.8(To c)127 649.8 T 1.853
+(ompletely turn of).8 F 4.353(fa)-.25 G 1.853(ll name serv)-4.353 F
+1.853(er access on systems without service switch support)-.15 F .942
+(\(such as SunOS 4.X\) you will ha)102 661.8 R 1.242 -.15(ve t)-.2 H
+3.441(or).15 G .941(ecompile with \255DN)-3.441 F .941
+(AMED_BIND=0 and remo)-.35 F 1.241 -.15(ve \255)-.15 H(lresolv).15 E
+(from the list of libraries to be searched when linking.)102 673.8 Q 0
+Cg EP
+%%Page: 37 33
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-37)195.86 E 2.5(4.12. Mo)87 96 R(ving the P)-.1 E(er)-.2 E
+(-User F)-.37 E(orward Files)-.25 E/F1 10/Times-Roman@0 SF .772
+(Some sites mount each user')127 112.2 R 3.272(sh)-.55 G .772
+(ome directory from a local disk on their w)-3.272 F .772
+(orkstation, so that)-.1 F .615(local access is f)102 124.2 R 3.114
+(ast. Ho)-.1 F(we)-.25 E -.15(ve)-.25 G 1.414 -.4(r, t).15 H .614
+(he result is that .forw).4 F .614
+(ard \214le lookups from a central mail serv)-.1 F .614(er are)-.15 F
+(slo)102 136.2 Q 5.534 -.65(w. I)-.25 H 4.234(ns).65 G 1.734
+(ome cases, mail can e)-4.234 F -.15(ve)-.25 G 4.234(nb).15 G 4.234(ed)
+-4.234 G(eli)-4.234 E -.15(ve)-.25 G 1.734
+(red on machines inappropriately because of a \214le).15 F(serv)102
+148.2 Q(er being do)-.15 E 2.5(wn. The)-.25 F
+(performance can be especially bad if you run the automounter)2.5 E(.)
+-.55 E(The)127 164.4 Q F0 -.25(Fo)2.744 G(rwardP).25 E(ath)-.1 E F1(\()
+2.744 E F0(J)A F1 2.743(\)o)C .243(ption allo)-2.743 F .243
+(ws you to set a path of forw)-.25 F .243(ard \214les.)-.1 F -.15(Fo)
+5.243 G 2.743(re).15 G .243(xample, the con-)-2.893 F(\214g \214le line)
+102 176.4 Q 2.5(OF)142 192.6 S(orw)-2.65 E(ardP)-.1 E(ath=/v)-.15 E
+(ar/forw)-.25 E(ard/$u:$z/.forw)-.1 E(ard.$w)-.1 E -.1(wo)102 208.8 S
+.207(uld \214rst look for a \214le with the same name as the user').1 F
+2.708(sl)-.55 G .208(ogin in /v)-2.708 F(ar/forw)-.25 E .208
+(ard; if that is not found)-.1 F 1.171
+(\(or is inaccessible\) the \214le `)102 220.8 R(`.forw)-.74 E(ard.)-.1
+E/F2 10/Times-Italic@0 SF(mac)A(hinename)-.15 E F1 2.651 -.74('' i)D
+3.671(nt).74 G 1.171(he user')-3.671 F 3.671(sh)-.55 G 1.17
+(ome directory is searched.)-3.671 F(A)6.17 E(truly perv)102 232.8 Q
+(erse site could also search by sender by using $r)-.15 E 2.5(,$)-.4 G
+(s, or $f.)-2.5 E .69(If you create a directory such as /v)127 249 R
+(ar/forw)-.25 E .69(ard, it should be mode 1777 \(that is, the stick)-.1
+F 3.19(yb)-.15 G(it)-3.19 E .109(should be set\).)102 261 R .109
+(Users should create the \214les mode 0644.)5.109 F .108
+(Note that you must use the F)5.109 F(orw)-.15 E(ardFileIn-)-.1 E
+(UnsafeDirP)102 273 Q .392(ath and F)-.15 F(orw)-.15 E
+(ardFileInUnsafeDirP)-.1 E .392(athSafe \215ags with the)-.15 F F0
+(DontBlameSendmail)2.893 E F1 .393(option to)2.893 F(allo)102 285 Q
+3.782(wf)-.25 G(orw)-3.782 E 1.282(ard \214les in a w)-.1 F 1.281
+(orld writable directory)-.1 F 6.281(.T)-.65 G 1.281
+(his might also be used as a denial of service)-6.281 F 2.351
+(attack \(users could create forw)102 297 R 2.351
+(ard \214les for other users\); a better approach might be to create)-.1
+F(/v)102 309 Q(ar/forw)-.25 E 1.086
+(ard mode 0755 and create empty \214les for each user)-.1 F 3.586(,o)-.4
+G 1.086(wned by that user)-3.836 F 3.586(,m)-.4 G 1.086(ode 0644.)-3.586
+F(If)6.086 E(you do this, you don')102 321 Q 2.5(th)-.18 G -2.25 -.2
+(av e)-2.5 H(to set the DontBlameSendmail options indicated abo)2.7 E
+-.15(ve)-.15 G(.).15 E F0 2.5(4.13. Fr)87 345 R(ee Space)-.18 E F1 1.405
+(On systems that ha)127 361.2 R 1.705 -.15(ve o)-.2 H 1.405
+(ne of the system calls in the).15 F F2(statfs)3.906 E F1 1.406(\(2\) f)
+B 1.406(amily \(including)-.1 F F2(statvfs)3.906 E F1(and)3.906 E F2
+(ustat)102 373.2 Q F1 .839(\), you can specify a minimum number of free\
+ blocks on the queue \214lesystem using the)B F0(Min-)3.339 E(Fr)102
+385.2 Q(eeBlocks)-.18 E F1(\()2.553 E F0(b)A F1 2.553(\)o)C 2.553
+(ption. If)-2.553 F .053(there are fe)2.553 F .053
+(wer than the indicated number of blocks free on the \214lesystem)-.25 F
+1.355(on which the queue is mounted the SMTP serv)102 397.2 R 1.355
+(er will reject mail with the 452 error code.)-.15 F(This)6.354 E(in)102
+409.2 Q(vites the SMTP client to try ag)-.4 E(ain later)-.05 E(.)-.55 E
+(Be)127 425.4 Q -.1(wa)-.25 G .746(re of setting this option too high; \
+it can cause rejection of email when that mail w).1 F(ould)-.1 E
+(be processed without dif)102 437.4 Q(\214culty)-.25 E(.)-.65 E F0 2.5
+(4.14. Maximum)87 461.4 R(Message Size)2.5 E F1 2.078 -.8(To a)127 477.6
+T -.2(vo).6 G .478(id o).2 F -.15(ve)-.15 G(r\215o).15 E .478
+(wing your system with a lar)-.25 F .478(ge message, the)-.18 F F0
+(MaxMessageSize)2.977 E F1 .477(option can be)2.977 F .692
+(set to set an absolute limit on the size of an)102 489.6 R 3.193(yo)
+-.15 G .693(ne message.)-3.193 F .693(This will be adv)5.693 F .693
+(ertised in the ESMTP)-.15 F(dialogue and check)102 501.6 Q
+(ed during message collection.)-.1 E F0 2.5(4.15. Pri)87 525.6 R -.1(va)
+-.1 G(cy Flags).1 E F1(The)127 541.8 Q F0(Pri)2.96 E -.1(va)-.1 G
+(cyOptions).1 E F1(\()2.96 E F0(p)A F1 2.96(\)o)C .46(ption allo)-2.96 F
+.46(ws you to set certain `)-.25 F(`pri)-.74 E -.25(va)-.25 G -.15(cy)
+.25 G 1.94 -.74('' \215).15 H 2.96(ags. Actually).74 F 2.96(,m)-.65 G
+(an)-2.96 E 2.96(yo)-.15 G(f)-2.96 E .533(them don')102 553.8 R 3.033
+(tg)-.18 G -2.15 -.25(iv e)-3.033 H .533(you an)3.283 F 3.034(ye)-.15 G
+.534(xtra pri)-3.184 F -.25(va)-.25 G -.15(cy).25 G 3.034(,r)-.5 G .534
+(ather just insisting that client SMTP serv)-3.034 F .534
+(ers use the HELO)-.15 F 2.87
+(command before using certain commands or adding e)102 565.8 R 2.87
+(xtra headers to indicate possible spoof)-.15 F(attempts.)102 577.8 Q
+.123(The option tak)127 594 R .124
+(es a series of \215ag names; the \214nal pri)-.1 F -.25(va)-.25 G .424
+-.15(cy i).25 H 2.624(st).15 G .124(he inclusi)-2.624 F .424 -.15(ve o)
+-.25 H 2.624(ro).15 G 2.624(ft)-2.624 G .124(hose \215ags.)-2.624 F -.15
+(Fo)5.124 G(r).15 E -.15(ex)102 606 S(ample:).15 E 2.5(OP)142 622.2 S
+(ri)-2.5 E -.25(va)-.25 G -.15(cy).25 G(Options=needmailhelo, noe).15 E
+(xpn)-.15 E .928(insists that the HELO or EHLO command be used before a\
+ MAIL command is accepted and dis-)102 638.4 R(ables the EXPN command.)
+102 650.4 Q(The \215ags are detailed in section 5.6.)127 666.6 Q F0 2.5
+(4.16. Send)87 690.6 R(to Me T)2.5 E(oo)-.92 E F1(Be)127 706.8 Q 1.074
+(ginning with v)-.15 F 1.074(ersion 8.10,)-.15 F F2(sendmail)3.574 E F1
+1.075(includes by def)3.574 F 1.075(ault the \(en)-.1 F -.15(ve)-.4 G
+1.075(lope\) sender in an).15 F 3.575(yl)-.15 G(ist)-3.575 E -.15(ex)102
+718.8 S 3.465(pansions. F).15 F .965(or e)-.15 F .964(xample, if \231ma\
+tt\232 sends to a list that contains \231matt\232 as one of the members\
+ he)-.15 F 0 Cg EP
+%%Page: 38 34
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-38 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .227
+(will get a cop)102 96 R 2.727(yo)-.1 G 2.727(ft)-2.727 G .227
+(he message.)-2.727 F .227(If the)5.227 F F0(MeT)2.728 E(oo)-.92 E F1
+.228(option is set to)2.728 F/F2 9/Times-Roman@0 SF -.666(FA)2.728 G
+(LSE).666 E F1 .228(\(in the con\214guration \214le or via)2.728 F 1.023
+(the command line\), this beha)102 108 R 1.023
+(vior is changed, i.e., the \(en)-.2 F -.15(ve)-.4 G 1.022
+(lope\) sender is e).15 F 1.022(xcluded in list e)-.15 F(xpan-)-.15 E
+(sions.)102 120 Q F0 2.5(5. THE)72 144 R(WHOLE SCOOP ON THE CONFIGURA)
+2.5 E(TION FILE)-.95 E F1
+(This section describes the con\214guration \214le in detail.)112 160.2
+Q .648(There is one point that should be made clear immediately: the sy\
+ntax of the con\214guration \214le is)112 176.4 R 1.077
+(designed to be reasonably easy to parse, since this is done e)87 188.4
+R -.15(ve)-.25 G 1.076(ry time).15 F/F3 10/Times-Italic@0 SF(sendmail)
+3.576 E F1 1.076(starts up, rather than)3.576 F .302
+(easy for a human to read or write.)87 200.4 R .303(The con\214guration\
+ \214le should be generated via the method described)5.302 F(in)87 212.4
+Q F0(cf/README)3.658 E F1 3.658(,i)C 3.658(ts)-3.658 G 1.158
+(hould not be edited directly unless someone is f)-3.658 F 1.157
+(amiliar with the internals of the)-.1 F
+(syntax described here and it is not possible to achie)87 224.4 Q .3
+-.15(ve t)-.25 H(he desired result via the def).15 E(ault method.)-.1 E
+.243(The con\214guration \214le is or)112 240.6 R -.05(ga)-.18 G .243
+(nized as a series of lines, each of which be).05 F .243
+(gins with a single charac-)-.15 F .102
+(ter de\214ning the semantics for the rest of the line.)87 252.6 R .102
+(Lines be)5.102 F .102(ginning with a space or a tab are continuation)
+-.15 F 1.322
+(lines \(although the semantics are not well de\214ned in man)87 264.6 R
+3.823(yp)-.15 G 3.823(laces\). Blank)-3.823 F 1.323(lines and lines be)
+3.823 F(ginning)-.15 E(with a sharp symbol \(`#'\) are comments.)87
+276.6 Q F0 2.5(5.1. R)87 300.6 R(and S \212 Rewriting Rules)2.5 E F1
+.466(The core of address parsing are the re)127 316.8 R .466
+(writing rules.)-.25 F .465(These are an ordered production system.)
+5.466 F F3(Sendmail)102 328.8 Q F1 .19(scans through the set of re)2.69
+F .19
+(writing rules looking for a match on the left hand side \(LHS\) of)-.25
+F(the rule.)102 340.8 Q(When a rule matches, the address is replaced by\
+ the right hand side \(RHS\) of the rule.)5 E .922(There are se)127 357
+R -.15(ve)-.25 G .922(ral sets of re).15 F .921(writing rules.)-.25 F
+.921(Some of the re)5.921 F .921(writing sets are used internally and)
+-.25 F .359(must ha)102 369 R .659 -.15(ve s)-.2 H .359
+(peci\214c semantics.).15 F .359(Other re)5.359 F .359
+(writing sets do not ha)-.25 F .659 -.15(ve s)-.2 H .36
+(peci\214cally assigned semantics, and).15 F
+(may be referenced by the mailer de\214nitions or by other re)102 381 Q
+(writing sets.)-.25 E(The syntax of these tw)127 397.2 Q 2.5(oc)-.1 G
+(ommands are:)-2.5 E F0(S)142 413.4 Q F3(n)A F1 .249
+(Sets the current ruleset being collected to)102 429.6 R F3(n)2.749 E F1
+5.249(.I)C 2.748(fy)-5.249 G .248(ou be)-2.748 F .248
+(gin a ruleset more than once it appends to the)-.15 F
+(old de\214nition.)102 441.6 Q F0(R)142 457.8 Q F3(lhs rhs comments)A F1
+1.185(The \214elds must be separated by at least one tab character; the\
+re may be embedded spaces in the)102 474 R 2.595(\214elds. The)102 486 R
+F3(lhs)2.595 E F1 .095(is a pattern that is applied to the input.)2.595
+F .095(If it matches, the input is re)5.095 F .094(written to the)-.25 F
+F3(rhs)2.594 E F1(.)A(The)102 498 Q F3(comments)2.5 E F1(are ignored.)
+2.5 E .426(Macro e)127 514.2 R .426(xpansions of the form)-.15 F F0($)
+2.926 E F3(x)A F1 .427
+(are performed when the con\214guration \214le is read.)2.927 F 2.927
+(Al)5.427 G(iteral)-2.927 E F0($)102 526.2 Q F1 .609
+(can be included using)3.109 F F0($$)3.109 E F1 5.609(.E)C .609
+(xpansions of the form)-5.609 F F0($&)3.109 E F3(x)A F1 .609
+(are performed at run time using a some-)3.109 F .147
+(what less general algorithm.)102 538.2 R .148(This is intended only fo\
+r referencing internally de\214ned macros such as)5.148 F F0($h)102
+550.2 Q F1(that are changed at runtime.)2.5 E F0 2.5(5.1.1. The)102
+574.2 R(left hand side)2.5 E F1 2.771(The left hand side of re)142 590.4
+R 2.771(writing rules contains a pattern.)-.25 F 2.77(Normal w)7.771 F
+2.77(ords are simply)-.1 F(matched directly)117 602.4 Q 5(.M)-.65 G
+(etasyntax is introduced using a dollar sign.)-5 E(The metasymbols are:)
+5 E F0($*)157 618.6 Q F1(Match zero or more tok)10.14 E(ens)-.1 E F0($+)
+157 630.6 Q F1(Match one or more tok)9.44 E(ens)-.1 E F0<24ad>157 642.6
+Q F1(Match e)9.44 E(xactly one tok)-.15 E(en)-.1 E F0($=)157 654.6 Q F3
+(x)A F1(Match an)5 E 2.5(yp)-.15 G(hrase in class)-2.5 E F3(x)2.5 E F0
+($~)157 666.6 Q F3(x)A F1(Match an)7.37 E 2.5(yw)-.15 G
+(ord not in class)-2.6 E F3(x)2.5 E F1 .131(If an)117 682.8 R 2.631(yo)
+-.15 G 2.631(ft)-2.631 G .131(hese match, the)-2.631 F 2.631(ya)-.15 G
+.132(re assigned to the symbol)-2.631 F F0($)2.632 E F3(n)A F1 .132
+(for replacement on the right hand side,)2.632 F(where)117 694.8 Q F3(n)
+2.5 E F1(is the inde)2.5 E 2.5(xi)-.15 G 2.5(nt)-2.5 G(he LHS.)-2.5 E
+-.15(Fo)5 G 2.5(re).15 G(xample, if the LHS:)-2.65 E($\255:$+)157 711 Q
+0 Cg EP
+%%Page: 39 35
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-39)195.86 E/F1 10/Times-Roman@0 SF(is applied to the input:)117
+96 Q(UCB)157 112.2 Q(ARP)-.35 E(A:eric)-.92 E
+(the rule will match, and the v)117 128.4 Q
+(alues passed to the RHS will be:)-.25 E 7.5($1 UCB)157 144.6 R(ARP)-.35
+E(A)-.92 E 7.5($2 eric)157 156.6 R(Additionally)142 177 Q 2.705(,t)-.65
+G .204(he LHS can include)-2.705 F F0($@)2.704 E F1 .204
+(to match zero tok)2.704 F 2.704(ens. This)-.1 F(is)2.704 E/F2 10
+/Times-Italic@0 SF(not)2.704 E F1 .204(bound to a)2.704 F F0($)2.704 E
+F2(n)A F1(on)2.704 E(the RHS, and is normally only used when it stands \
+alone in order to match the null input.)117 189 Q F0 2.5(5.1.2. The)102
+213 R(right hand side)2.5 E F1 .648(When the left hand side of a re)142
+229.2 R .649(writing rule matches, the input is deleted and replaced by)
+-.25 F 1.037(the right hand side.)117 241.2 R -.8(To)6.037 G -.1(ke).8 G
+1.036(ns are copied directly from the RHS unless the).1 F 3.536(yb)-.15
+G -.15(eg)-3.536 G 1.036(in with a dollar).15 F 2.5(sign. Metasymbols)
+117 253.2 R(are:)2.5 E F0($)157 269.4 Q F2(n)A F1
+(Substitute inde\214nite tok)40.55 E(en)-.1 E F2(n)2.5 E F1(from LHS)2.5
+E F0($[)157 281.4 Q F2(name)A F0($])A F1(Canonicalize)12.23 E F2(name)
+2.5 E F0($\()157 293.4 Q F2(map k)A -.3(ey)-.1 G F0($@)2.8 E F2(ar)A
+(guments)-.37 E F0($:)2.5 E F2(default)A F0($\))2.5 E F1(Generalized k)
+207.55 305.4 Q -.15(ey)-.1 G(ed mapping function).15 E F0($>)157 317.4 Q
+F2(n)A F1(\231Call\232 ruleset)34.85 E F2(n)2.5 E F0($#)157 329.4 Q F2
+(mailer)A F1(Resolv)14.44 E 2.5(et)-.15 G(o)-2.5 E F2(mailer)2.5 E F0
+($@)157 341.4 Q F2(host)A F1(Specify)19.58 E F2(host)2.5 E F0($:)157
+353.4 Q F2(user)A F1(Specify)25 E F2(user)2.5 E F1(The)142 373.8 Q F0($)
+3.136 E F2(n)A F1 .637(syntax substitutes the corresponding v)3.136 F
+.637(alue from a)-.25 F F0($+)3.137 E F1(,)A F0<24ad>3.137 E F1(,)A F0
+($*)3.137 E F1(,)A F0($=)3.137 E F1 3.137(,o)C(r)-3.137 E F0($~)3.137 E
+F1 .637(match on)3.137 F(the LHS.)117 385.8 Q(It may be used an)5 E
+(ywhere.)-.15 E 2.706(Ah)142 402 S .206(ost name enclosed between)-2.706
+F F0($[)2.706 E F1(and)2.706 E F0($])2.706 E F1 .206(is look)2.706 F
+.205(ed up in the host database\(s\) and replaced)-.1 F 1.683
+(by the canonical name)117 416 R/F3 7/Times-Roman@0 SF(14)-4 I F1 6.683
+(.F)4 K 1.683(or e)-6.833 F 1.683
+(xample, \231$[ftp$]\232 might become \231ftp.CS.Berk)-.15 F(ele)-.1 E
+-.65(y.)-.15 G 1.683(EDU\232 and).65 F 3.17
+(\231$[[128.32.130.2]$]\232 w)117 428 R 3.17(ould become \231v)-.1 F
+(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU.).65 E<9a>-.7 E F2
+(Sendmail)8.17 E F1 3.17(recognizes its)5.67 F
+(numeric IP address without calling the name serv)117 440 Q
+(er and replaces it with its canonical name.)-.15 E(The)142 456.2 Q F0
+($\()3.003 E F1(...)3.003 E F0($\))5.503 E F1 .503(syntax is a more gen\
+eral form of lookup; it uses a named map instead of an)3.003 F .81
+(implicit map.)117 468.2 R .81(If no lookup is found, the indicated)5.81
+F F2(default)3.309 E F1 .809(is inserted; if no def)3.309 F .809
+(ault is speci\214ed)-.1 F .775(and no lookup matches, the v)117 480.2 R
+.776(alue is left unchanged.)-.25 F(The)5.776 E F2(ar)3.276 E(guments)
+-.37 E F1 .776(are passed to the map for)3.276 F(possible use.)117 492.2
+Q(The)142 508.4 Q F0($>)2.62 E F2(n)A F1 .119(syntax causes the remaind\
+er of the line to be substituted as usual and then passed)2.62 F .586
+(as the ar)117 520.4 R .586(gument to ruleset)-.18 F F2(n)3.086 E F1
+5.586(.T)C .586(he \214nal v)-5.586 F .586(alue of ruleset)-.25 F F2(n)
+3.087 E F1 .587(then becomes the substitution for this)3.087 F 3.759
+(rule. The)117 532.4 R F0($>)3.759 E F1 1.259(syntax e)3.759 F 1.259
+(xpands e)-.15 F -.15(ve)-.25 G 1.259
+(rything after the ruleset name to the end of the replacement).15 F .976
+(string and then passes that as the initial input to the ruleset.)117
+544.4 R(Recursi)5.976 E 1.277 -.15(ve c)-.25 H .977(alls are allo).15 F
+3.477(wed. F)-.25 F(or)-.15 E -.15(ex)117 556.4 S(ample,).15 E
+($>0 $>3 $1)157 572.6 Q -.15(ex)117 588.8 S(pands $1, passes that to ru\
+leset 3, and then passes the result of ruleset 3 to ruleset 0.).15 E
+(The)142 605 Q F0($#)2.769 E F1 .268(syntax should)2.769 F F2(only)2.768
+E F1 .268
+(be used in ruleset zero, a subroutine of ruleset zero, or rulesets)
+2.768 F .454(that return decisions \(e.g., check_rcpt\).)117 617 R .455
+(It causes e)5.454 F -.25(va)-.25 G .455
+(luation of the ruleset to terminate immedi-).25 F(ately)117 629 Q 2.565
+(,a)-.65 G .065(nd signals to)-2.565 F F2(sendmail)2.565 E F1 .065
+(that the address has completely resolv)2.565 F 2.565(ed. The)-.15 F
+.065(complete syntax for)2.565 F(ruleset 0 is:)117 641 Q F0($#)157 657.2
+Q F2(mailer)A F0($@)2.5 E F2(host)A F0($:)2.5 E F2(user)A F1 1.512
+(This speci\214es the {mailer)117 673.4 R 4.013(,h)-.4 G 1.513
+(ost, user} 3-tuple necessary to direct the mailer)-4.013 F 6.513(.N)
+-.55 G 1.513(ote: the third)-6.513 F .32 LW 76 683 72 683 DL 80 683 76
+683 DL 84 683 80 683 DL 88 683 84 683 DL 92 683 88 683 DL 96 683 92 683
+DL 100 683 96 683 DL 104 683 100 683 DL 108 683 104 683 DL 112 683 108
+683 DL 116 683 112 683 DL 120 683 116 683 DL 124 683 120 683 DL 128 683
+124 683 DL 132 683 128 683 DL 136 683 132 683 DL 140 683 136 683 DL 144
+683 140 683 DL 148 683 144 683 DL 152 683 148 683 DL 156 683 152 683 DL
+160 683 156 683 DL 164 683 160 683 DL 168 683 164 683 DL 172 683 168 683
+DL 176 683 172 683 DL 180 683 176 683 DL 184 683 180 683 DL 188 683 184
+683 DL 192 683 188 683 DL 196 683 192 683 DL 200 683 196 683 DL 204 683
+200 683 DL 208 683 204 683 DL 212 683 208 683 DL 216 683 212 683 DL/F4 5
+/Times-Roman@0 SF(14)93.6 693.4 Q/F5 8/Times-Roman@0 SF
+(This is actually completely equi)3.2 I -.2(va)-.2 G(lent to $\(host).2
+E/F6 8/Times-Italic@0 SF(hostname)2 E F5 2($\). In)B(particular)2 E 2
+(,a)-.32 G/F7 8/Times-Bold@0 SF($:)A F5(def)2 E(ault can be used.)-.08 E
+0 Cg EP
+%%Page: 40 36
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-40 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.254
+(element \()117 96 R/F2 10/Times-Italic@0 SF(user)3.754 E F1 3.754(\)i)
+3.754 G 3.754(so)-3.754 G 1.254(ften also called)-3.754 F F2(addr)3.754
+E(ess)-.37 E F1 3.754(part. If)3.754 F 1.253
+(the mailer is local the host part may be)3.754 F(omitted)117 110 Q/F3 7
+/Times-Roman@0 SF(15)-4 I F1 5.968(.T)4 K(he)-5.968 E F2(mailer)3.467 E
+F1 .967(must be a single w)3.467 F .967(ord, b)-.1 F .967(ut the)-.2 F
+F2(host)3.467 E F1(and)3.467 E F2(user)3.467 E F1 .967
+(may be multi-part.)3.467 F .967(If the)5.967 F F2(mailer)117 122 Q F1
+.025(is the b)2.525 F .025(uilt-in IPC mailer)-.2 F 2.525(,t)-.4 G(he)
+-2.525 E F2(host)2.525 E F1 .026
+(may be a colon-separated list of hosts that are searched)2.525 F .723
+(in order for the \214rst w)117 134 R .723(orking address \(e)-.1 F .723
+(xactly lik)-.15 F 3.223(eM)-.1 G 3.223(Xr)-3.223 G 3.223(ecords\). The)
+-3.223 F F2(user)3.223 E F1 .723(is later re)3.223 F .723(written by)
+-.25 F .105(the mailer)117 146 R .105(-speci\214c en)-.2 F -.15(ve)-.4 G
+.105(lope re).15 F .105(writing set and assigned to the)-.25 F F0($u)
+2.606 E F1 2.606(macro. As)2.606 F 2.606(as)2.606 G .106
+(pecial case, if the)-2.606 F 1.033(mailer speci\214ed has the)117 158 R
+F0(F=@)3.533 E F1 1.033
+(\215ag speci\214ed and the \214rst character of the)3.533 F F0($:)3.533
+E F1 -.25(va)3.533 G 1.033(lue is \231@\232, the).25 F .016
+(\231@\232 is stripped of)117 170 R .017(f, and a \215ag is set in the \
+address descriptor that causes sendmail to not do rule-)-.25 F
+(set 5 processing.)117 182 Q(Normally)142 198.2 Q 3.252(,ar)-.65 G .751
+(ule that matches is retried, that is, the rule loops until it f)-3.252
+F 3.251(ails. A)-.1 F .751(RHS may)3.251 F 1.085(also be preceded by a)
+117 210.2 R F0($@)3.585 E F1 1.085(or a)3.585 F F0($:)3.585 E F1 1.085
+(to change this beha)3.585 F(vior)-.2 E 6.085(.A)-.55 G F0($@)-2.5 E F1
+1.086(pre\214x causes the ruleset to)3.586 F 1.46
+(return with the remainder of the RHS as the v)117 222.2 R 3.96(alue. A)
+-.25 F F0($:)3.96 E F1 1.46(pre\214x causes the rule to terminate)3.96 F
+(immediately)117 234.2 Q 3.756(,b)-.65 G 1.256
+(ut the ruleset to continue; this can be used to a)-3.956 F -.2(vo)-.2 G
+1.256(id continued application of a).2 F 2.5(rule. The)117 246.2 R
+(pre\214x is stripped before continuing.)2.5 E(The)142 262.4 Q F0($@)2.5
+E F1(and)2.5 E F0($:)2.5 E F1(pre\214x)2.5 E(es may precede a)-.15 E F0
+($>)2.5 E F1(spec; for e)2.5 E(xample:)-.15 E 20.19(R$+ $:)157 278.6 R
+($>7 $1)2.5 E 1.256(matches an)117 294.8 R 1.256
+(ything, passes that to ruleset se)-.15 F -.15(ve)-.25 G 1.256
+(n, and continues; the).15 F F0($:)3.756 E F1 1.256(is necessary to a)
+3.756 F -.2(vo)-.2 G 1.256(id an).2 F(in\214nite loop.)117 306.8 Q 1.205
+(Substitution occurs in the order described, that is, parameters from t\
+he LHS are substi-)142 323 R .22(tuted, hostnames are canonicalized, \
+\231subroutines\232 are called, and \214nally)117 335 R F0($#)2.719 E F1
+(,)A F0($@)2.719 E F1 2.719(,a)C(nd)-2.719 E F0($:)2.719 E F1 .219
+(are pro-)2.719 F(cessed.)117 347 Q F0 2.5(5.1.3. Semantics)102 371 R
+(of r)2.5 E(ewriting rule sets)-.18 E F1 1.847(There are six re)142
+387.2 R 1.847(writing sets that ha)-.25 F 2.147 -.15(ve s)-.2 H 1.847
+(peci\214c semantics.).15 F(Fi)6.847 E 2.147 -.15(ve o)-.25 H 4.347(ft)
+.15 G 1.848(hese are related as)-4.347 F(depicted by \214gure 1.)117
+399.2 Q 1.029
+(Ruleset three should turn the address into \231canonical form.)142
+415.4 R 6.029<9a54>-.7 G 1.029(his form should ha)-6.029 F 1.329 -.15
+(ve t)-.2 H(he).15 E(basic syntax:)117 427.4 Q .4 LW 77 451.4 72 451.4
+DL 79 451.4 74 451.4 DL 84 451.4 79 451.4 DL 89 451.4 84 451.4 DL 94
+451.4 89 451.4 DL 99 451.4 94 451.4 DL 104 451.4 99 451.4 DL 109 451.4
+104 451.4 DL 114 451.4 109 451.4 DL 119 451.4 114 451.4 DL 124 451.4 119
+451.4 DL 129 451.4 124 451.4 DL 134 451.4 129 451.4 DL 139 451.4 134
+451.4 DL 144 451.4 139 451.4 DL 149 451.4 144 451.4 DL 154 451.4 149
+451.4 DL 159 451.4 154 451.4 DL 164 451.4 159 451.4 DL 169 451.4 164
+451.4 DL 174 451.4 169 451.4 DL 179 451.4 174 451.4 DL 184 451.4 179
+451.4 DL 189 451.4 184 451.4 DL 194 451.4 189 451.4 DL 199 451.4 194
+451.4 DL 204 451.4 199 451.4 DL 209 451.4 204 451.4 DL 214 451.4 209
+451.4 DL 219 451.4 214 451.4 DL 224 451.4 219 451.4 DL 229 451.4 224
+451.4 DL 234 451.4 229 451.4 DL 239 451.4 234 451.4 DL 244 451.4 239
+451.4 DL 249 451.4 244 451.4 DL 254 451.4 249 451.4 DL 259 451.4 254
+451.4 DL 264 451.4 259 451.4 DL 269 451.4 264 451.4 DL 274 451.4 269
+451.4 DL 279 451.4 274 451.4 DL 284 451.4 279 451.4 DL 289 451.4 284
+451.4 DL 294 451.4 289 451.4 DL 299 451.4 294 451.4 DL 304 451.4 299
+451.4 DL 309 451.4 304 451.4 DL 314 451.4 309 451.4 DL 319 451.4 314
+451.4 DL 324 451.4 319 451.4 DL 329 451.4 324 451.4 DL 334 451.4 329
+451.4 DL 339 451.4 334 451.4 DL 344 451.4 339 451.4 DL 349 451.4 344
+451.4 DL 354 451.4 349 451.4 DL 359 451.4 354 451.4 DL 364 451.4 359
+451.4 DL 369 451.4 364 451.4 DL 374 451.4 369 451.4 DL 379 451.4 374
+451.4 DL 384 451.4 379 451.4 DL 389 451.4 384 451.4 DL 394 451.4 389
+451.4 DL 399 451.4 394 451.4 DL 404 451.4 399 451.4 DL 409 451.4 404
+451.4 DL 414 451.4 409 451.4 DL 419 451.4 414 451.4 DL 424 451.4 419
+451.4 DL 429 451.4 424 451.4 DL 434 451.4 429 451.4 DL 439 451.4 434
+451.4 DL 444 451.4 439 451.4 DL 449 451.4 444 451.4 DL 454 451.4 449
+451.4 DL 459 451.4 454 451.4 DL 464 451.4 459 451.4 DL 469 451.4 464
+451.4 DL 474 451.4 469 451.4 DL 479 451.4 474 451.4 DL 484 451.4 479
+451.4 DL 489 451.4 484 451.4 DL 494 451.4 489 451.4 DL 499 451.4 494
+451.4 DL 504 451.4 499 451.4 DL(addr)91.915 546 Q 133.2 543.8 111.6
+543.8 DL 133.2 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 133.2 543.8 MT
+-7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 154.8 554.6 MT 0 -21.6 RL -21.6 0 RL 0
+21.6 RL CL ST(3)141.5 546 Q 176.4 543.8 154.8 543.8 DL 176.4 543.8 MT
+-7.2 1.8 RL 0 -3.6 RL CL 0 Fg 176.4 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0
+Cg ST 198 554.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(D)183.59 546 Q
+219.6 543.8 198 543.8 DL 277.2 525.8 255.6 525.8 DL 277.2 525.8 MT -7.2
+1.8 RL 0 -3.6 RL CL 0 Fg 277.2 525.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST
+298.8 536.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(1)285.5 528 Q 320.4
+525.8 298.8 525.8 DL 320.4 525.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 320.4
+525.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 342 536.6 MT 0 -21.6 RL -21.6
+0 RL 0 21.6 RL CL ST(S)328.42 528 Q 363.6 525.8 342 525.8 DL 277.2 561.8
+255.6 561.8 DL 277.2 561.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 277.2 561.8
+MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST 298.8 572.6 MT 0 -21.6 RL -21.6 0 RL
+0 21.6 RL CL ST(2)285.5 564 Q 320.4 561.8 298.8 561.8 DL 320.4 561.8 MT
+-7.2 1.8 RL 0 -3.6 RL CL 0 Fg 320.4 561.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0
+Cg ST 342 572.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(R)327.865 564 Q
+363.6 561.8 342 561.8 DL 421.2 543.8 399.6 543.8 DL 421.2 543.8 MT -7.2
+1.8 RL 0 -3.6 RL CL 0 Fg 421.2 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST
+442.8 554.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(4)429.5 546 Q 464.4
+543.8 442.8 543.8 DL 464.4 543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 464.4
+543.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST(msg)466.865 546 Q 255.6 525.8
+219.6 543.8 DL 255.6 561.8 219.6 543.8 DL 399.6 543.8 363.6 525.8 DL
+399.6 543.8 363.6 561.8 DL 208.8 489.8 187.2 489.8 DL 208.8 489.8 MT
+-7.2 1.8 RL 0 -3.6 RL CL 0 Fg 208.8 489.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0
+Cg ST 230.4 500.6 MT 0 -21.6 RL -21.6 0 RL 0 21.6 RL CL ST(0)217.1 492 Q
+252 489.8 230.4 489.8 DL 252 489.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Fg 252
+489.8 MT -7.2 1.8 RL 0 -3.6 RL CL 0 Cg ST(resolv)265.69 492 Q
+(ed address)-.15 E 187.2 489.8 162 543.8 DL(Figure 1 \212 Re)216.045
+591.8 Q(writing set semantics)-.25 E 2.5(D\212s)209.35 603.8 S
+(ender domain addition)-2.5 E 2.5(S\212m)209.35 615.8 S(ailer)-2.5 E
+(-speci\214c sender re)-.2 E(writing)-.25 E 2.5(R\212m)209.35 627.8 S
+(ailer)-2.5 E(-speci\214c recipient re)-.2 E(writing)-.25 E 77 639.8 72
+639.8 DL 79 639.8 74 639.8 DL 84 639.8 79 639.8 DL 89 639.8 84 639.8 DL
+94 639.8 89 639.8 DL 99 639.8 94 639.8 DL 104 639.8 99 639.8 DL 109
+639.8 104 639.8 DL 114 639.8 109 639.8 DL 119 639.8 114 639.8 DL 124
+639.8 119 639.8 DL 129 639.8 124 639.8 DL 134 639.8 129 639.8 DL 139
+639.8 134 639.8 DL 144 639.8 139 639.8 DL 149 639.8 144 639.8 DL 154
+639.8 149 639.8 DL 159 639.8 154 639.8 DL 164 639.8 159 639.8 DL 169
+639.8 164 639.8 DL 174 639.8 169 639.8 DL 179 639.8 174 639.8 DL 184
+639.8 179 639.8 DL 189 639.8 184 639.8 DL 194 639.8 189 639.8 DL 199
+639.8 194 639.8 DL 204 639.8 199 639.8 DL 209 639.8 204 639.8 DL 214
+639.8 209 639.8 DL 219 639.8 214 639.8 DL 224 639.8 219 639.8 DL 229
+639.8 224 639.8 DL 234 639.8 229 639.8 DL 239 639.8 234 639.8 DL 244
+639.8 239 639.8 DL 249 639.8 244 639.8 DL 254 639.8 249 639.8 DL 259
+639.8 254 639.8 DL 264 639.8 259 639.8 DL 269 639.8 264 639.8 DL 274
+639.8 269 639.8 DL 279 639.8 274 639.8 DL 284 639.8 279 639.8 DL 289
+639.8 284 639.8 DL 294 639.8 289 639.8 DL 299 639.8 294 639.8 DL 304
+639.8 299 639.8 DL 309 639.8 304 639.8 DL 314 639.8 309 639.8 DL 319
+639.8 314 639.8 DL 324 639.8 319 639.8 DL 329 639.8 324 639.8 DL 334
+639.8 329 639.8 DL 339 639.8 334 639.8 DL 344 639.8 339 639.8 DL 349
+639.8 344 639.8 DL 354 639.8 349 639.8 DL 359 639.8 354 639.8 DL 364
+639.8 359 639.8 DL 369 639.8 364 639.8 DL 374 639.8 369 639.8 DL 379
+639.8 374 639.8 DL 384 639.8 379 639.8 DL 389 639.8 384 639.8 DL 394
+639.8 389 639.8 DL 399 639.8 394 639.8 DL 404 639.8 399 639.8 DL 409
+639.8 404 639.8 DL 414 639.8 409 639.8 DL 419 639.8 414 639.8 DL 424
+639.8 419 639.8 DL 429 639.8 424 639.8 DL 434 639.8 429 639.8 DL 439
+639.8 434 639.8 DL 444 639.8 439 639.8 DL 449 639.8 444 639.8 DL 454
+639.8 449 639.8 DL 459 639.8 454 639.8 DL 464 639.8 459 639.8 DL 469
+639.8 464 639.8 DL 474 639.8 469 639.8 DL 479 639.8 474 639.8 DL 484
+639.8 479 639.8 DL 489 639.8 484 639.8 DL 494 639.8 489 639.8 DL 499
+639.8 494 639.8 DL 504 639.8 499 639.8 DL .32 LW 76 673.4 72 673.4 DL 80
+673.4 76 673.4 DL 84 673.4 80 673.4 DL 88 673.4 84 673.4 DL 92 673.4 88
+673.4 DL 96 673.4 92 673.4 DL 100 673.4 96 673.4 DL 104 673.4 100 673.4
+DL 108 673.4 104 673.4 DL 112 673.4 108 673.4 DL 116 673.4 112 673.4 DL
+120 673.4 116 673.4 DL 124 673.4 120 673.4 DL 128 673.4 124 673.4 DL 132
+673.4 128 673.4 DL 136 673.4 132 673.4 DL 140 673.4 136 673.4 DL 144
+673.4 140 673.4 DL 148 673.4 144 673.4 DL 152 673.4 148 673.4 DL 156
+673.4 152 673.4 DL 160 673.4 156 673.4 DL 164 673.4 160 673.4 DL 168
+673.4 164 673.4 DL 172 673.4 168 673.4 DL 176 673.4 172 673.4 DL 180
+673.4 176 673.4 DL 184 673.4 180 673.4 DL 188 673.4 184 673.4 DL 192
+673.4 188 673.4 DL 196 673.4 192 673.4 DL 200 673.4 196 673.4 DL 204
+673.4 200 673.4 DL 208 673.4 204 673.4 DL 212 673.4 208 673.4 DL 216
+673.4 212 673.4 DL/F4 5/Times-Roman@0 SF(15)93.6 683.8 Q/F5 8
+/Times-Roman@0 SF -.88(Yo)3.2 K 2.725(um).88 G .725(ay w)-2.725 F .726
+(ant to use it for special \231per user\232 e)-.08 F 2.726(xtensions. F)
+-.12 F .726(or e)-.12 F .726
+(xample, in the address \231jgm+foo@CMU.EDU\232; the \231+foo\232)-.12 F
+(part is not part of the user name, and is passed to the local mailer f\
+or local use.)72 696.6 Q 0 Cg EP
+%%Page: 41 37
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-41)195.86 E/F1 10/Times-Roman@0 SF(local-part@host-domain-spec)
+157 96 Q(Ruleset three is applied by)117 112.2 Q/F2 10/Times-Italic@0 SF
+(sendmail)2.5 E F1(before doing an)2.5 E(ything with an)-.15 E 2.5(ya)
+-.15 G(ddress.)-2.5 E .301
+(If no \231@\232 sign is speci\214ed, then the host-domain-spec)142
+128.4 R F2(may)2.801 E F1 .302(be appended \(box \231D\232 in Fig-)2.801
+F .578(ure 1\) from the sender address \(if the)117 140.4 R F0(C)3.077 E
+F1 .577(\215ag is set in the mailer de\214nition corresponding to the)
+3.077 F F2(sending)117 152.4 Q F1(mailer\).)2.5 E 1.021(Ruleset zero is\
+ applied after ruleset three to addresses that are going to actually sp\
+ecify)142 168.6 R 2.819(recipients. It)117 180.6 R .319(must resolv)
+2.819 F 2.819(et)-.15 G 2.819(oa)-2.819 G F2({mailer)A 2.819(,h)-1.11 G
+.319(ost, addr)-2.819 F(ess})-.37 E F1 2.819(triple. The)2.819 F F2
+(mailer)2.819 E F1 .318(must be de\214ned in the)2.819 F .751
+(mailer de\214nitions from the con\214guration \214le.)117 192.6 R(The)
+5.751 E F2(host)3.251 E F1 .751(is de\214ned into the)3.251 F F0($h)
+3.251 E F1 .752(macro for use in)3.252 F 1.203(the ar)117 204.6 R 1.203
+(gv e)-.18 F 1.203(xpansion of the speci\214ed mailer)-.15 F 6.203(.N)
+-.55 G 1.203(otice: since the en)-6.203 F -.15(ve)-.4 G 1.203
+(lope sender address will be).15 F .644(used if a deli)117 216.6 R -.15
+(ve)-.25 G .645(ry status noti\214cation must be send, i.e., is may spe\
+cify a recipient, it is also run).15 F 1.549(through ruleset zero.)117
+228.6 R 1.549(If ruleset zero returns a temporary error)6.549 F F0(4xy)
+4.048 E F1 1.548(then deli)4.048 F -.15(ve)-.25 G 1.548(ry is deferred.)
+.15 F .064(This can be used to temporarily disable deli)117 240.6 R -.15
+(ve)-.25 G(ry).15 E 2.564(,e)-.65 G .064
+(.g., based on the time of the day or other v)-2.564 F(ary-)-.25 E
+(ing parameters.)117 252.6 Q
+(It should not be used to quarantine e-mails.)5 E .453
+(Rulesets one and tw)142 268.8 R 2.953(oa)-.1 G .452
+(re applied to all sender and recipient addresses respecti)-2.953 F -.15
+(ve)-.25 G(ly).15 E 5.452(.T)-.65 G(he)-5.452 E(y)-.15 E
+(are applied before an)117 280.8 Q 2.5(ys)-.15 G
+(peci\214cation in the mailer de\214nition.)-2.5 E(The)5 E 2.5(ym)-.15 G
+(ust ne)-2.5 E -.15(ve)-.25 G 2.5(rr).15 G(esolv)-2.5 E(e.)-.15 E 1.265
+(Ruleset four is applied to all addresses in the message.)142 297 R
+1.266(It is typically used to translate)6.265 F(internal to e)117 309 Q
+(xternal form.)-.15 E .653(In addition, ruleset 5 is applied to all loc\
+al addresses \(speci\214cally)142 325.2 R 3.152(,t)-.65 G .652
+(hose that resolv)-3.152 F 3.152(et)-.15 G 3.152(oa)-3.152 G .296
+(mailer with the `F=5' \215ag set\) that do not ha)117 337.2 R .596 -.15
+(ve a)-.2 H 2.796(liases. This).15 F(allo)2.796 E .296
+(ws a last minute hook for local)-.25 F(names.)117 349.2 Q F0 2.5
+(5.1.4. Ruleset)102 373.2 R(hooks)2.5 E F1 3.815(Af)142 389.4 S 1.815
+-.25(ew e)-3.815 H 1.315(xtra rulesets are de\214ned as \231hooks\232 t\
+hat can be de\214ned to get special features.).1 F(The)117 401.4 Q 3.467
+(ya)-.15 G .968(re all named rulesets.)-3.467 F .968
+(The \231check_*\232 forms all gi)5.968 F 1.268 -.15(ve a)-.25 H .968
+(ccept/reject status; f).15 F .968(alling of)-.1 F 3.468(ft)-.25 G(he)
+-3.468 E .207(end or returning normally is an accept, and resolving to)
+117 413.4 R F0($#err)2.707 E(or)-.18 E F1 .207
+(is a reject or quarantine.)2.707 F(Quar)5.206 E(-)-.2 E
+(antining is chosen by specifying)117 425.4 Q F0(quarantine)2.5 E F1
+(in the second part of the mailer triplet:)2.5 E
+($#error $@ quarantine $: Reason for quarantine)157 441.6 Q(Man)117
+457.8 Q 3.12(yo)-.15 G 3.12(ft)-3.12 G .62(hese can also resolv)-3.12 F
+3.121(et)-.15 G 3.121(ot)-3.121 G .621(he special mailer name)-3.121 F
+F0($#discard)3.121 E F1 3.121(;t)C .621(his accepts the message)-3.121 F
+.924(as though it were successful b)117 469.8 R .923
+(ut then discards it without deli)-.2 F -.15(ve)-.25 G(ry).15 E 5.923
+(.N)-.65 G .923(ote, this mailer cannot be)-5.923 F .681
+(chosen as a mailer in ruleset 0.)117 481.8 R .682
+(Note also that all \231check_*\232 rulesets ha)5.682 F .982 -.15(ve t)
+-.2 H 3.182(od).15 G .682(eal with tempo-)-3.182 F .683(rary f)117 493.8
+R .683(ailures, especially for map lookups, themselv)-.1 F .682
+(es, i.e., the)-.15 F 3.182(ys)-.15 G .682
+(hould return a temporary error)-3.182 F(code or at least the)117 505.8
+Q 2.5(ys)-.15 G(hould mak)-2.5 E 2.5(eap)-.1 G
+(roper decision in those cases.)-2.5 E F0 2.5(5.1.4.1. check_r)117 529.8
+R(elay)-.18 E F1(The)157 546 Q F2 -.15(ch)3.335 G(ec).15 E(k_r)-.2 E
+(elay)-.37 E F1 .836
+(ruleset is called after a connection is accepted by the daemon.)3.335 F
+.836(It is)5.836 F(not called when sendmail is started using the)132 558
+Q F0(\255bs)2.5 E F1 2.5(option. It)2.5 F(is passed)2.5 E
+(client.host.name $| client.host.address)172 574.2 Q(where)132 590.4 Q
+F0($|)4.017 E F1 1.517(is a metacharacter separating the tw)4.017 F
+4.017(op)-.1 G 4.017(arts. This)-4.017 F 1.517
+(ruleset can reject connections)4.017 F .322(from v)132 602.4 R .322
+(arious locations.)-.25 F .322
+(Note that it only checks the connecting SMTP client IP address and)
+5.322 F 3.464(hostname. It)132 614.4 R .963
+(does not check for third party message relaying.)3.463 F(The)5.963 E F2
+-.15(ch)3.463 G(ec).15 E(k_r)-.2 E(cpt)-.37 E F1 .963(ruleset dis-)3.463
+F(cussed belo)132 626.4 Q 2.5(wu)-.25 G
+(sually does third party message relay checking.)-2.5 E F0 2.5
+(5.1.4.2. check_mail)117 650.4 R F1(The)157 666.6 Q F2 -.15(ch)3.722 G
+(ec).15 E(k_mail)-.2 E F1 1.223
+(ruleset is passed the user name parameter of the)3.722 F/F3 9
+/Times-Roman@0 SF 1.223(SMTP MAIL)3.723 F F1(com-)3.723 E 2.5(mand. It)
+132 678.6 R(can accept or reject the address.)2.5 E 0 Cg EP
+%%Page: 42 38
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-42 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(5.1.4.3. check_r)117 96 R
+(cpt)-.18 E/F1 10/Times-Roman@0 SF(The)157 112.2 Q/F2 10/Times-Italic@0
+SF -.15(ch)3.918 G(ec).15 E(k_r)-.2 E(cpt)-.37 E F1 1.417
+(ruleset is passed the user name parameter of the)3.918 F/F3 9
+/Times-Roman@0 SF 1.417(SMTP RCPT)3.917 F F1(com-)3.917 E 2.5(mand. It)
+132 124.2 R(can accept or reject the address.)2.5 E F0 2.5
+(5.1.4.4. check_data)117 148.2 R F1(The)157 164.4 Q F2 -.15(ch)3.245 G
+(ec).15 E(k_data)-.2 E F1 .746(ruleset is called after the)3.245 F F3
+.746(SMTP D)3.246 F -1.089 -.999(AT A)-.36 H F1 .746
+(command, its parameter is the)4.245 F(number of recipients.)132 176.4 Q
+(It can accept or reject the command.)5 E F0 2.5(5.1.4.5. check_compat)
+117 200.4 R F1(The)157 216.6 Q F2 -.15(ch)2.5 G(ec).15 E(k_compat)-.2 E
+F1(ruleset is passed)2.5 E(sender)172 232.8 Q
+(-address $| recipient-address)-.2 E(where)132 249 Q F0($|)3.725 E F1
+1.225(is a metacharacter separating the addresses.)3.725 F 1.225
+(It can accept or reject mail transfer)6.225 F 2.385(between these tw)
+132 261 R 4.885(oa)-.1 G 2.385(ddresses much lik)-4.885 F 4.885(et)-.1 G
+(he)-4.885 E F2 -.15(ch)4.886 G(ec).15 E(kcompat\(\))-.2 E F1 4.886
+(function. Note:)4.886 F 2.386(while other)4.886 F F2 -.15(ch)132 273 S
+(ec).15 E(k_*)-.2 E F1 1.99(rulesets are in)4.49 F -.2(vo)-.4 G -.1(ke)
+.2 G 4.49(dd).1 G 1.99
+(uring the SMTP mail receiption stage \(i.e., in the SMTP)-4.49 F(serv)
+132 285 Q(er\),)-.15 E F2 -.15(ch)2.5 G(ec).15 E(k_compat)-.2 E F1
+(is in)2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dd).1 G(uring the mail deli)
+-2.5 E -.15(ve)-.25 G(ry stage.).15 E F0 2.5(5.1.4.6. check_eoh)117 309
+R F1(The)157 325.2 Q F2 -.15(ch)2.5 G(ec).15 E(k_eoh)-.2 E F1
+(ruleset is passed)2.5 E(number)172 341.4 Q
+(-of-headers $| size-of-headers)-.2 E(where)132 357.6 Q F0($|)3.802 E F1
+1.303(is a metacharacter separating the numbers.)3.802 F 1.303
+(These numbers can be used for size)6.303 F .588(comparisons with the)
+132 369.6 R F0(arith)3.088 E F1 3.088(map. The)3.088 F .588
+(ruleset is triggered after all of the headers ha)3.088 F .888 -.15
+(ve b)-.2 H(een).15 E 3.261(read. It)132 381.6 R .761
+(can be used to correlate information g)3.261 F .762
+(athered from those headers using the)-.05 F F0(macr)3.262 E(o)-.18 E F1
+(storage map.)132 393.6 Q
+(One possible use is to check for a missing header)5 E 5(.F)-.55 G(or e)
+-5.15 E(xample:)-.15 E(Kstorage macro)172 409.8 Q
+(HMessage-Id: $>CheckMessageId)172 421.8 Q(SCheckMessageId)172 445.8 Q
+2.5(#R)172 457.8 S(ecord the presence of the header)-2.5 E 88.83(R$* $:)
+172 469.8 R($\(storage {MessageIdCheck} $@ OK $\) $1)2.5 E(R< $+ @ $+ >)
+172 481.8 Q($@ OK)49.56 E 88.83(R$* $#error)172 493.8 R
+($: 553 Header Error)2.5 E(Scheck_eoh)172 517.8 Q 2.5(#C)172 529.8 S
+(heck the macro)-2.5 E 88.83(R$* $:)172 541.8 R 2.5(<$)2.5 G
+(&{MessageIdCheck} >)-2.5 E 2.5(#C)172 553.8 S
+(lear the macro for the ne)-2.5 E(xt message)-.15 E 88.83(R$* $:)172
+565.8 R($\(storage {MessageIdCheck} $\) $1)2.5 E 2.5(#H)172 577.8 S
+(as a Message-Id: header)-2.5 E(R< $+ >)172 589.8 Q($@ OK)74.41 E 2.5
+(#A)172 601.8 S(llo)-2.5 E 2.5(wm)-.25 G
+(issing Message-Id: from local mail)-2.5 E 88.83(R$* $:)172 613.8 R 2.5
+(<$)2.5 G(&{client_name} >)-2.5 E(R< >)172 625.8 Q($@ OK)87.55 E
+(R< $=w >)172 637.8 Q($@ OK)67.19 E 2.5(#O)172 649.8 S
+(therwise, reject the mail)-2.5 E 88.83(R$* $#error)172 661.8 R
+($: 553 Header Error)2.5 E -.25(Ke)132 678 S .459(ep in mind the Messag\
+e-Id: header is not a required header and is not a guaranteed spam).25 F
+(indicator)132 690 Q 5(.T)-.55 G(his ruleset is an e)-5 E
+(xample and should probably not be used in production.)-.15 E 0 Cg EP
+%%Page: 43 39
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-43)195.86 E 2.5(5.1.4.7. check_eom)117 96 R/F1 10/Times-Roman@0
+SF(The)157 112.2 Q/F2 10/Times-Italic@0 SF -.15(ch)3.218 G(ec).15 E
+(k_eom)-.2 E F1 .719(ruleset is called after the end of a message, its \
+parameter is the mes-)3.218 F(sage size.)132 124.2 Q
+(It can accept or reject the message.)5 E F0 2.5(5.1.4.8. check_etr)117
+148.2 R(n)-.15 E F1(The)157 164.4 Q F2 -.15(ch)3.385 G(ec).15 E(k_etrn)
+-.2 E F1 .885(ruleset is passed the parameter of the)3.385 F/F3 9
+/Times-Roman@0 SF .885(SMTP ETRN)3.385 F F1 3.384(command. It)3.385 F
+(can)3.384 E(accept or reject the command.)132 176.4 Q F0 2.5
+(5.1.4.9. check_expn)117 200.4 R F1(The)157 216.6 Q F2 -.15(ch)3.614 G
+(ec).15 E(k_e)-.2 E(xpn)-.2 E F1 1.115
+(ruleset is passed the user name parameter of the)3.614 F F3 1.115
+(SMTP EXPN)3.615 F F1(com-)3.615 E 2.5(mand. It)132 228.6 R
+(can accept or reject the address.)2.5 E F0 2.5(5.1.4.10. check_vrfy)117
+252.6 R F1(The)157 268.8 Q F2 -.15(ch)3.817 G(ec).15 E(k_vrfy)-.2 E F1
+1.317(ruleset is passed the user name parameter of the)3.817 F F3 1.316
+(SMTP VRFY)3.817 F F1(com-)3.816 E 2.5(mand. It)132 280.8 R
+(can accept or reject the command.)2.5 E F0 2.5(5.1.4.11. trust_auth)117
+304.8 R F1(The)157 321 Q F2(trust_auth)3.044 E F1 .545
+(ruleset is passed the A)3.044 F .545(UTH= parameter of the)-.55 F F3
+.545(SMTP MAIL)3.045 F F1(command.)3.045 E .636
+(It is used to determine whether this v)132 333 R .635
+(alue should be trusted. In order to mak)-.25 F 3.135(et)-.1 G .635
+(his decision,)-3.135 F .153(the ruleset may mak)132 345 R 2.653(eu)-.1
+G .154(se of the v)-2.653 F(arious)-.25 E F0(${auth_*})2.654 E F1 2.654
+(macros. If)2.654 F .154(the ruleset does resolv)2.654 F 2.654(et)-.15 G
+2.654(ot)-2.654 G(he)-2.654 E .019(\231error\232 mailer the A)132 357 R
+.019(UTH= parameter is not trusted and hence not passed on to the ne)
+-.55 F .018(xt relay)-.15 F(.)-.65 E F0 2.5(5.1.4.12. tls_client)117 381
+R F1(The)157 397.2 Q F2(tls_client)2.946 E F1 .447
+(ruleset is called when sendmail acts as serv)2.947 F(er)-.15 E 2.947
+(,a)-.4 G .447(fter a ST)-2.947 F(AR)-.93 E .447(TTLS com-)-.6 F 1.045
+(mand has been issued, and from)132 409.2 R F2 -.15(ch)3.545 G(ec).15 E
+(k_mail.)-.2 E F1 1.045(The parameter is the v)6.045 F 1.045(alue of)
+-.25 F F0(${v)3.545 E(erify})-.1 E F1(and)3.545 E(ST)132 421.2 Q(AR)-.93
+E 1.703(TTLS or MAIL, respecti)-.6 F -.15(ve)-.25 G(ly).15 E 6.704(.I)
+-.65 G 4.204(ft)-6.704 G 1.704(he ruleset does resolv)-4.204 F 4.204(et)
+-.15 G 4.204(ot)-4.204 G 1.704(he \231error\232 mailer)-4.204 F 4.204
+(,t)-.4 G(he)-4.204 E(appropriate error code is returned to the client.)
+132 433.2 Q F0 2.5(5.1.4.13. tls_ser)117 457.2 R -.1(ve)-.1 G(r).1 E F1
+(The)157 473.4 Q F2(tls_server)3.054 E F1 .554
+(ruleset is called when sendmail acts as client after a ST)3.054 F(AR)
+-.93 E .553(TTLS com-)-.6 F .049(mand \(should\) ha)132 485.4 R .349
+-.15(ve b)-.2 H .049(een issued.).15 F .049(The parameter is the v)5.049
+F .049(alue of)-.25 F F0(${v)2.55 E(erify})-.1 E F1 5.05(.I)C 2.55(ft)
+-5.05 G .05(he ruleset does)-2.55 F(resolv)132 497.4 Q 2.515(et)-.15 G
+2.515(ot)-2.515 G .015(he \231error\232 mailer)-2.515 F 2.514(,t)-.4 G
+.014(he connection is aborted \(treated as non-deli)-2.514 F -.15(ve)
+-.25 G .014(rable with a per).15 F(-)-.2 E(manent or temporary error\).)
+132 509.4 Q F0 2.5(5.1.4.14. tls_r)117 533.4 R(cpt)-.18 E F1(The)157
+549.6 Q F2(tls_r)4.074 E(cpt)-.37 E F1 1.574
+(ruleset is called each time before a RCPT T)4.074 F 4.075(Oc)-.18 G
+1.575(ommand is sent.)-4.075 F(The)6.575 E .102
+(parameter is the current recipient.)132 561.6 R .102
+(If the ruleset does resolv)5.102 F 2.602(et)-.15 G 2.602(ot)-2.602 G
+.102(he \231error\232 mailer)-2.602 F 2.602(,t)-.4 G .102(he RCPT)-2.602
+F 2.748 -.18(TO c)132 573.6 T 2.388
+(ommand is suppressed \(treated as non-deli).18 F -.15(ve)-.25 G 2.388
+(rable with a permanent or temporary).15 F 3.028(error\). This)132 585.6
+R .528(ruleset allo)3.028 F .528(ws to require encryption or v)-.25 F
+.527(eri\214cation of the recipient')-.15 F 3.027(sM)-.55 G 2.387 -.93
+(TA e)-3.027 H -.15(ve).68 G(n).15 E .467(if the mail is someho)132
+597.6 R 2.968(wr)-.25 G .468(edirected to another host.)-2.968 F -.15
+(Fo)5.468 G 2.968(re).15 G .468(xample, sending mail to)-3.118 F F2(luk)
+2.968 E(e@end-)-.1 E(mail.or)132 609.6 Q(g)-.37 E F1 1.929
+(may get redirected to a host named)4.43 F F2(death.star)4.429 E F1
+1.929(and hence the tls_serv)4.429 F 1.929(er ruleset)-.15 F -.1(wo)132
+621.6 S(n').1 E 3.002(ta)-.18 G(pply)-3.002 E 5.502(.B)-.65 G 3.002(yi)
+-5.502 G .503(ntroducing per recipient restrictions such attacks \(e.g.\
+, via DNS spoo\214ng\))-3.002 F(can be made impossible.)132 633.6 Q(See)
+5 E F2(cf/README)2.5 E F1(ho)2.5 E 2.5(wt)-.25 G
+(his ruleset can be used.)-2.5 E F0 2.5(5.1.4.15. sr)117 657.6 R
+(v_featur)-.1 E(es)-.18 E F1(The)157 673.8 Q F2(srv_featur)2.75 E(es)
+-.37 E F1 .25(ruleset is called with the connecting client')2.75 F 2.75
+(sh)-.55 G .25(ost name when a client)-2.75 F 1.511
+(connects to sendmail.)132 685.8 R 1.511(This ruleset should return)
+6.511 F F0($#)4.011 E F1(follo)4.011 E 1.512
+(wed by a list of options \(single)-.25 F 2.16
+(characters delimited by white space\).)132 697.8 R 2.16
+(If the return v)7.16 F 2.16(alue starts with an)-.25 F 2.16
+(ything else it is)-.15 F .266(silently ignored.)132 709.8 R .267
+(Generally upper case characters turn of)5.267 F 2.767(faf)-.25 G .267
+(eature while lo)-2.767 F .267(wer case charac-)-.25 F 1.55
+(ters turn it on.)132 721.8 R 1.55(Option `S' causes the serv)6.55 F
+1.55(er not to of)-.15 F 1.55(fer ST)-.25 F(AR)-.93 E 1.55
+(TTLS, which is useful to)-.6 F 0 Cg EP
+%%Page: 44 40
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-44 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.865
+(interact with MT)132 96 R(As/MU)-.93 E 1.865(As that ha)-.4 F 2.165
+-.15(ve b)-.2 H(rok).15 E 1.865(en ST)-.1 F(AR)-.93 E 1.865
+(TTLS implementations by simply not)-.6 F(of)132 108 Q 2.116(fering it.)
+-.25 F 2.116(`V' turns of)7.116 F 4.616(ft)-.25 G 2.116
+(he request for a client certi\214cate during the TLS handshak)-4.616 F
+(e.)-.1 E .148(Options `)132 120 R 2.368 -1.11(A' a)-.8 H .148
+(nd `P' suppress SMTP A)1.11 F .149(UTH and PIPELINING, respecti)-.55 F
+-.15(ve)-.25 G(ly).15 E 5.149(.`)-.65 G .149(c' is the equi)-5.149 F(v-)
+-.25 E 1.768(alent to AuthOptions=p, i.e., it doesn')132 132 R 4.268(tp)
+-.18 G 1.768(ermit mechanisms susceptible to simple passi)-4.268 F -.15
+(ve)-.25 G 1.13
+(attack \(e.g., PLAIN, LOGIN\), unless a security layer is acti)132 144
+R -.15(ve)-.25 G 6.13(.O).15 G 1.13(ption `l' requires SMTP)-6.13 F -.55
+(AU)132 156 S 2.123(TH for a connection.).55 F 2.123
+(Options 'B', 'D', 'E', and 'X' suppress SMTP VERB, DSN,)7.123 F
+(ETRN, and EXPN, respecti)132 168 Q -.15(ve)-.25 G(ly).15 E(.)-.65 E
+37.78(AD)172 184.2 S 2.5(on)-37.78 G(ot of)-2.5 E(fer A)-.25 E(UTH)-.55
+E 40.56(aO)172 196.2 S -.25(ff)-40.56 G(er A).25 E(UTH \(def)-.55 E
+(ault\))-.1 E 38.33(BD)172 208.2 S 2.5(on)-38.33 G(ot of)-2.5 E
+(fer VERB)-.25 E 40(bO)172 220.2 S -.25(ff)-40 G(er VERB \(def).25 E
+(ault\))-.1 E 38.33(CD)172 232.2 S 2.5(on)-38.33 G
+(ot require security layer for)-2.5 E(plainte)217 244.2 Q(xt A)-.15 E
+(UTH \(def)-.55 E(ault\))-.1 E 40.56(cR)172 256.2 S
+(equire security layer for plainte)-40.56 E(xt A)-.15 E(UTH)-.55 E 37.78
+(DD)172 268.2 S 2.5(on)-37.78 G(ot of)-2.5 E(fer DSN)-.25 E 40(dO)172
+280.2 S -.25(ff)-40 G(er DSN \(def).25 E(ault\))-.1 E 38.89(ED)172 292.2
+S 2.5(on)-38.89 G(ot of)-2.5 E(fer ETRN)-.25 E 40.56(eO)172 304.2 S -.25
+(ff)-40.56 G(er ETRN \(def).25 E(ault\))-.1 E 38.89(LD)172 316.2 S 2.5
+(on)-38.89 G(ot require A)-2.5 E(UTH \(def)-.55 E(ault\))-.1 E 42.22(lR)
+172 328.2 S(equire A)-42.22 E(UTH)-.55 E 39.44(PD)172 340.2 S 2.5(on)
+-39.44 G(ot of)-2.5 E(fer PIPELINING)-.25 E 40(pO)172 352.2 S -.25(ff)
+-40 G(er PIPELINING \(def).25 E(ault\))-.1 E 39.44(SD)172 364.2 S 2.5
+(on)-39.44 G(ot of)-2.5 E(fer ST)-.25 E(AR)-.93 E(TTLS)-.6 E 41.11(sO)
+172 376.2 S -.25(ff)-41.11 G(er ST).25 E(AR)-.93 E(TTLS \(def)-.6 E
+(ault\))-.1 E 37.78(VD)172 388.2 S 2.5(on)-37.78 G
+(ot request a client certi\214cate)-2.5 E 40(vR)172 400.2 S
+(equest a client certi\214cate \(def)-40 E(ault\))-.1 E 37.78(XD)172
+412.2 S 2.5(on)-37.78 G(ot of)-2.5 E(fer EXPN)-.25 E 40(xO)172 424.2 S
+-.25(ff)-40 G(er EXPN \(def).25 E(ault\))-.1 E .204
+(Note: the entries mark)132 440.4 R .204(ed as `)-.1 F(`\(def)-.74 E
+(ault\)')-.1 E 2.705('m)-.74 G .205
+(ay require that some con\214guration has been made,)-2.705 F .407
+(e.g., SMTP A)132 452.4 R .407(UTH is only a)-.55 F -.25(va)-.2 G .407
+(ilable if properly con\214gured.).25 F(Moreo)5.407 E -.15(ve)-.15 G
+1.207 -.4(r, m).15 H(an).4 E 2.907(yo)-.15 G .407(ptions can be)-2.907 F
+.054(changed on a global basis via other settings as e)132 464.4 R .054
+(xplained in this document, e.g., via Daemon-)-.15 F(PortOptions.)132
+476.4 Q .88(The ruleset may return `$#temp' to indicate that there is a\
+ temporary problem deter)157 492.6 R(-)-.2 E 1.622
+(mining the correct features, e.g., if a map is una)132 504.6 R -.25(va)
+-.2 G 4.123(ilable. In).25 F 1.623(that case, the SMTP serv)4.123 F(er)
+-.15 E(issues a temporary f)132 516.6 Q
+(ailure and does not accept email.)-.1 E F0 2.5(5.1.4.16. try_tls)117
+540.6 R F1(The)157 556.8 Q/F2 10/Times-Italic@0 SF(try_tls)3.564 E F1
+1.063(ruleset is called when sendmail connects to another MT)3.563 F
+3.563(A. If)-.93 F 1.063(the ruleset)3.563 F 1.152(does resolv)132 568.8
+R 3.652(et)-.15 G 3.652(ot)-3.652 G 1.152(he \231error\232 mailer)-3.652
+F 3.653(,s)-.4 G 1.153(endmail does not try ST)-3.653 F(AR)-.93 E 1.153
+(TTLS e)-.6 F -.15(ve)-.25 G 3.653(ni).15 G 3.653(fi)-3.653 G 3.653(ti)
+-3.653 G 3.653(so)-3.653 G -.25(ff)-3.653 G(ered.).25 E .486
+(This is useful to interact with MT)132 580.8 R .485(As that ha)-.93 F
+.785 -.15(ve b)-.2 H(rok).15 E .485(en ST)-.1 F(AR)-.93 E .485
+(TTLS implementations by sim-)-.6 F(ply not using it.)132 592.8 Q F0 2.5
+(5.1.4.17. authinf)117 616.8 R(o)-.25 E F1(The)157 633 Q F2(authinfo)
+3.049 E F1 .549
+(ruleset is called when sendmail tries to authenticate to another MT)
+3.049 F 3.05(A. It)-.93 F .844(should return)132 645 R F0($#)3.344 E F1
+(follo)3.344 E .844(wed by a list of tok)-.25 F .843
+(ens that are used for SMTP A)-.1 F 3.343(UTH. If)-.55 F .843
+(the return)3.343 F -.25(va)132 657 S 1.303(lue starts with an).25 F
+1.304(ything else it is silently ignored.)-.15 F 1.304(Each tok)6.304 F
+1.304(en is a tagged string of the)-.1 F
+(form: "TDstring" \(including the quotes\), where)132 669 Q 0 Cg EP
+%%Page: 45 41
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-45)195.86 E/F1 10/Times-Roman@0 SF 38.89(TT)172 96 S
+(ag which describes the item)-39.69 E 37.78(DD)172 108 S
+(elimiter: ':' simple te)-37.78 E(xt follo)-.15 E(ws)-.25 E
+('=' string is base64 encoded)217 120 Q 19.72(string V)172 132 R
+(alue of the item)-1.11 E -1.11(Va)132 148.2 S(lid v)1.11 E
+(alues for the tag are:)-.25 E 37.78(Uu)172 164.4 S
+(ser \(authorization\) id)-37.78 E 41.67(Ia)172 176.4 S
+(uthentication id)-41.67 E 39.44(Pp)172 188.4 S(assw)-39.44 E(ord)-.1 E
+38.33(Rr)172 200.4 S(ealm)-38.33 E 36.11(Ml)172 212.4 S
+(ist of mechanisms delimited by spaces)-36.11 E .324
+(If this ruleset is de\214ned, the option)132 228.6 R F0(DefaultA)2.823
+E(uthInf)-.5 E(o)-.25 E F1 .323(is ignored \(e)2.823 F -.15(ve)-.25 G
+2.823(ni).15 G 2.823(ft)-2.823 G .323(he ruleset does not)-2.823 F
+(return a `)132 240.6 Q(`useful')-.74 E 2.5('r)-.74 G(esult\).)-2.5 E F0
+2.5(5.1.4.18. queuegr)117 264.6 R(oup)-.18 E F1(The)157 280.8 Q/F2 10
+/Times-Italic@0 SF(queue)3.918 E(gr)-.4 E(oup)-.45 E F1 1.419
+(ruleset is used to map a recipient address to a queue group name.)3.918
+F 1.197
+(The input for the ruleset is a recipient address as speci\214ed by the)
+132 292.8 R/F3 9/Times-Roman@0 SF 1.196(SMTP RCPT)3.697 F F1(command.)
+3.696 E 1.306(The ruleset should return)132 304.8 R F0($#)3.807 E F1
+(follo)3.807 E 1.307(wed by the name of a queue group.)-.25 F 1.307
+(If the return v)6.307 F(alue)-.25 E 1.241(starts with an)132 316.8 R
+1.241(ything else it is silently ignored.)-.15 F 1.241
+(See the section about `)6.241 F 1.24(`Queue Groups and)-.74 F
+(Queue Directories')132 328.8 Q 2.5('f)-.74 G(or further information.)
+-2.5 E F0 2.5(5.1.4.19. gr)117 352.8 R(eet_pause)-.18 E F1(The)157 369 Q
+F2(gr)2.792 E(eet_pause)-.37 E F1 .292
+(ruleset is used to specify the amount of time to pause before sending)
+2.792 F 1.226(the initial SMTP 220 greeting.)132 381 R 1.226(If an)6.226
+F 3.726(yt)-.15 G(raf)-3.726 E 1.226(\214c is recei)-.25 F -.15(ve)-.25
+G 3.726(dd).15 G 1.226(uring that pause, an SMTP 554)-3.726 F .295
+(rejection response is gi)132 393 R -.15(ve)-.25 G 2.795(ni).15 G .295
+(nstead of the 220 greeting and all SMTP commands are rejected)-2.795 F
+1.489(during that connection.)132 405 R 1.488
+(This helps protect sites from open proxies and SMTP slammers.)6.489 F
+.521(The ruleset should return)132 417 R F0($#)3.021 E F1(follo)3.021 E
+.522(wed by the number of milliseconds \(thousandths of a sec-)-.25 F
+.729(ond\) to pause.)132 429 R .729(If the return v)5.729 F .728
+(alue starts with an)-.25 F .728(ything else or is not a number)-.15 F
+3.228(,i)-.4 G 3.228(ti)-3.228 G 3.228(ss)-3.228 G(ilently)-3.228 E
+2.702(ignored. Note:)132 441 R .202(this ruleset is not in)2.702 F -.2
+(vo)-.4 G -.1(ke).2 G 2.702(d\().1 G .202
+(and hence the feature is disabled\) when the smtps)-2.702 F 1.224
+(\(SMTP o)132 453 R -.15(ve)-.15 G 3.724(rS).15 G 1.224
+(SL\) is used, i.e., the)-3.724 F F2(s)3.724 E F1 1.224
+(modi\214er is set for the daemon via)3.724 F F0(DaemonP)3.724 E(ortOp-)
+-.2 E(tions)132 465 Q F1 2.5(,b)C(ecause in this case the SSL handshak)
+-2.5 E 2.5(ei)-.1 G 2.5(sp)-2.5 G(erformed before the greeting is sent.)
+-2.5 E F0 2.5(5.1.5. IPC)102 489 R(mailers)2.5 E F1 1.332
+(Some special processing occurs if the ruleset zero resolv)142 505.2 R
+1.333(es to an IPC mailer \(that is, a)-.15 F 1.179
+(mailer that has \231[IPC]\232 listed as the P)117 517.2 R 1.179
+(ath in the)-.15 F F0(M)3.679 E F1 1.179(con\214guration line.)3.679 F
+1.178(The host name passed)6.178 F 1.178(after \231$@\232 has MX e)117
+529.2 R 1.178(xpansion performed if not deli)-.15 F -.15(ve)-.25 G 1.178
+(ring via a named sock).15 F 1.178(et; this looks the)-.1 F
+(name up in DNS to \214nd alternate deli)117 541.2 Q -.15(ve)-.25 G
+(ry sites.).15 E .442(The host name can also be pro)142 557.4 R .442
+(vided as a dotted quad or an IPv6 address in square brack-)-.15 F
+(ets; for e)117 569.4 Q(xample:)-.15 E([128.32.149.78])157 585.6 Q(or)
+117 601.8 Q([IPv6:2002:c0a8:51d2::23f4])157 618 Q
+(This causes direct con)117 634.2 Q -.15(ve)-.4 G
+(rsion of the numeric v).15 E(alue to an IP host address.)-.25 E .214(T\
+he host name passed in after the \231$@\232 may also be a colon-separat\
+ed list of hosts.)142 650.4 R(Each)5.214 E .485(is separately MX e)117
+662.4 R .484(xpanded and the results are concatenated to mak)-.15 F
+2.984(e\()-.1 G .484(essentially\) one long MX)-2.984 F 3.464(list. The)
+117 674.4 R .964(intent here is to create \231f)3.464 F(ak)-.1 E .964
+(e\232 MX records that are not published in DNS for pri)-.1 F -.25(va)
+-.25 G(te).25 E(internal netw)117 686.4 Q(orks.)-.1 E
+(As a \214nal special case, the host name can be passed in as a te)142
+702.6 Q(xt string in square brack)-.15 E(ets:)-.1 E 0 Cg EP
+%%Page: 46 42
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-46 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF([ucb)157
+96 Q -.25(va)-.15 G(x.berk).25 E(ele)-.1 E -.65(y.)-.15 G(edu]).65 E
+.313(This form a)117 112.2 R -.2(vo)-.2 G .313(ids the MX mapping.).2 F
+F0(N.B.:)5.313 E/F2 10/Times-Italic@0 SF .312
+(This is intended only for situations wher)2.813 F 2.812(ey)-.37 G .312
+(ou have a)-2.812 F .337(network \214r)117 124.2 R -.15(ew)-.37 G .337
+(all or other host that will do special pr).15 F .337
+(ocessing for all your mail, so that your MX)-.45 F -.37(re)117 136.2 S
+(cor).37 E 3.959(dp)-.37 G 1.459(oints to a gate)-3.959 F 1.459(way mac)
+-.15 F 1.459(hine; this mac)-.15 F 1.458(hine could then do dir)-.15 F
+1.458(ect delivery to mac)-.37 F(hines)-.15 E .09
+(within your local domain.)117 148.2 R .09(Use of this featur)5.09 F
+2.59(ed)-.37 G(ir)-2.59 E .09
+(ectly violates RFC 1123 section 5.3.5: it should)-.37 F
+(not be used lightly)117 160.2 Q(.)-.55 E F0 2.5(5.2. D)87 184.2 R 2.5
+<8a44>2.5 G(e\214ne Macr)-2.5 E(o)-.18 E F1 .881
+(Macros are named with a single character or with a w)127 200.4 R .88
+(ord in {braces}.)-.1 F .88(The names `)5.88 F(`x')-.74 E 3.38('a)-.74 G
+(nd)-3.38 E -.74(``)102 212.4 S({x}').74 E 4.349('d)-.74 G 1.849
+(enote the same macro for e)-4.349 F -.15(ve)-.25 G 1.849
+(ry single character `).15 F(`x')-.74 E 4.349('. Single)-.74 F 1.85
+(character names may be)4.35 F .173
+(selected from the entire ASCII set, b)102 224.4 R .173(ut user)-.2 F
+.172(-de\214ned macros should be selected from the set of upper)-.2 F
+.031(case letters only)102 236.4 R 5.031(.L)-.65 G -.25(ow)-5.031 G .031
+(er case letters and special symbols are used internally).25 F 5.032(.L)
+-.65 G .032(ong names be)-5.032 F(ginning)-.15 E .327(with a lo)102
+248.4 R .326(wer case letter or a punctuation character are reserv)-.25
+F .326(ed for use by sendmail, so user)-.15 F(-de\214ned)-.2 E
+(long macro names should be)102 260.4 Q(gin with an upper case letter)
+-.15 E(.)-.55 E(The syntax for macro de\214nitions is:)127 276.6 Q F0(D)
+142 292.8 Q F2 1.666(xv)C(al)-1.666 E F1(where)102 309 Q F2(x)3.068 E F1
+.568(is the name of the macro \(which may be a single character or a w)
+3.068 F .569(ord in braces\) and)-.1 F F2(val)3.069 E F1(is)3.069 E .479
+(the v)102 321 R .479(alue it should ha)-.25 F -.15(ve)-.2 G 5.479(.T)
+.15 G .478(here should be no spaces gi)-5.479 F -.15(ve)-.25 G 2.978(nt)
+.15 G .478(hat do not actually belong in the macro)-2.978 F -.25(va)102
+333 S(lue.).25 E .494(Macros are interpolated using the construct)127
+349.2 R F0($)2.994 E F2(x)A F1 2.994(,w)C(here)-2.994 E F2(x)2.994 E F1
+.494(is the name of the macro to be inter)2.994 F(-)-.2 E 2.933
+(polated. This)102 361.2 R .433
+(interpolation is done when the con\214guration \214le is read, e)2.933
+F .432(xcept in)-.15 F F0(M)2.932 E F1 2.932(lines. The)2.932 F(spe-)
+2.932 E(cial construct)102 373.2 Q F0($&)2.5 E F2(x)A F1(can be used in)
+2.5 E F0(R)2.5 E F1(lines to get deferred interpolation.)2.5 E
+(Conditionals can be speci\214ed using the syntax:)127 389.4 Q($?x te)
+142 405.6 Q(xt1 $| te)-.15 E(xt2 $.)-.15 E 1.561(This interpolates)102
+421.8 R F2(te)4.061 E(xt1)-.2 E F1 1.562(if the macro)4.062 F F0($x)
+4.062 E F1 1.562(is set and non-null, and)4.062 F F2(te)4.062 E(xt2)-.2
+E F1 4.062(otherwise. The)4.062 F 1.562(\231else\232 \()4.062 F F0($|)A
+F1(\))A(clause may be omitted.)102 433.8 Q 1.303(The follo)127 450 R
+1.303(wing macros are de\214ned and/or used internally by)-.25 F F2
+(sendmail)3.802 E F1 1.302(for interpolation into)3.802 F(ar)102 464 Q
+(gv')-.18 E 2.792(sf)-.55 G .292(or mailers or for other conte)-2.792 F
+2.793(xts. The)-.15 F .293(ones mark)2.793 F .293
+(ed \207 are information passed into sendmail)-.1 F/F3 7/Times-Roman@0
+SF(16)-4 I F1(,)4 I .036(the ones mark)102 476 R .036(ed \210 are infor\
+mation passed both in and out of sendmail, and the unmark)-.1 F .035
+(ed macros are)-.1 F(passed out of sendmail b)102 488 Q
+(ut are not otherwise used internally)-.2 E 5(.T)-.65 G
+(hese macros are:)-5 E 13.06($a The)102 504.2 R
+(origination date in RFC 822 format.)2.5 E(This is e)5 E
+(xtracted from the Date: line.)-.15 E 12.5($b The)102 520.4 R
+(current date in RFC 822 format.)2.5 E 13.06($c The)102 536.6 R .002
+(hop count.)2.502 F .002(This is a count of the number of Recei)5.002 F
+-.15(ve)-.25 G .003(d: lines plus the v).15 F .003(alue of the)-.25 F F0
+<ad68>2.503 E F1(com-)2.503 E(mand line \215ag.)127 548.6 Q 12.5($d The)
+102 564.8 R(current date in UNIX \(ctime\) format.)2.5 E 8.06
+($e\207 \(Obsolete;)102 581 R 1.814
+(use SmtpGreetingMessage option instead.\))4.314 F 1.814
+(The SMTP entry message.)6.814 F 1.814(This is)6.814 F .631
+(printed out when SMTP starts up.)127 593 R .631(The \214rst w)5.631 F
+.631(ord must be the)-.1 F F0($j)3.131 E F1 .632
+(macro as speci\214ed by RFC)3.131 F 2.97(821. Def)127 605 R .47
+(aults to \231$j Sendmail $v ready at $b\232.)-.1 F .47
+(Commonly rede\214ned to include the con\214gu-)5.47 F(ration v)127 617
+Q(ersion number)-.15 E 2.5(,e)-.4 G
+(.g., \231$j Sendmail $v/$Z ready at $b\232)-2.5 E 14.17($f The)102
+633.2 R(en)2.5 E -.15(ve)-.4 G(lope sender \(from\) address.).15 E 12.5
+($g The)102 649.4 R .017(sender address relati)2.517 F .317 -.15(ve t)
+-.25 H 2.517(ot).15 G .017(he recipient.)-2.517 F -.15(Fo)5.017 G 2.517
+(re).15 G .018(xample, if)-2.667 F F0($f)2.518 E F1 .018
+(is \231foo\232,)2.518 F F0($g)2.518 E F1 .018
+(will be \231host!foo\232,)2.518 F(\231foo@host.domain\232, or whate)127
+661.4 Q -.15(ve)-.25 G 2.5(ri).15 G 2.5(sa)-2.5 G
+(ppropriate for the recei)-2.5 E(ving mailer)-.25 E(.)-.55 E .32 LW 76
+678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84
+678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL
+104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 678.8 DL 116
+678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 678.8 DL 128
+678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 678.8 DL 140
+678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 678.8 DL 152
+678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL 164
+678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 678.8 DL 176
+678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188
+678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200
+678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 678.8 DL 212
+678.8 208 678.8 DL 216 678.8 212 678.8 DL/F4 5/Times-Roman@0 SF(16)93.6
+689.2 Q/F5 8/Times-Roman@0 SF(As of v)3.2 I
+(ersion 8.6, all of these macros ha)-.12 E .24 -.12(ve r)-.16 H
+(easonable def).12 E 2(aults. Pre)-.08 F(vious v)-.2 E
+(ersions required that the)-.12 E 2(yb)-.12 G 2(ed)-2 G(e\214ned.)-2 E 0
+Cg EP
+%%Page: 47 43
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-47)195.86 E/F1 10/Times-Roman@0 SF 12.5($h The)102 96 R
+(recipient host.)2.5 E
+(This is set in ruleset 0 from the $@ \214eld of a parsed address.)5 E
+14.72($i The)102 112.2 R(queue id, e.g., \231f344MXxp018717\232.)2.5 E
+9.72($j\210 The)102 128.4 R(\231of)2.747 E .247
+(\214cial\232 domain name for this site.)-.25 F .247
+(This is fully quali\214ed if the full quali\214cation can be)5.247 F
+3.093(found. It)127 140.4 R/F2 10/Times-Italic@0 SF(must)3.093 E F1 .594
+(be rede\214ned to be the fully quali\214ed domain name if your system \
+is not con-)3.093 F
+(\214gured so that information can \214nd it automatically)127 152.4 Q
+(.)-.65 E 12.5($k The)102 168.6 R
+(UUCP node name \(from the uname system call\).)2.5 E 9.72
+($l\207 \(Obsolete;)102 184.8 R 1.282
+(use UnixFromLine option instead.\))3.782 F 1.282
+(The format of the UNIX from line.)6.282 F(Unless)6.281 E 1.409(you ha)
+127 196.8 R 1.709 -.15(ve c)-.2 H 1.409
+(hanged the UNIX mailbox format, you should not change the def).15 F
+1.41(ault, which is)-.1 F(\231From $g $d\232.)127 208.8 Q 9.72($m The)
+102 225 R .719(domain part of the)3.219 F F2 -.1(ge)3.219 G(thostname).1
+E F1 .718(return v)3.219 F 3.218(alue. Under)-.25 F .718
+(normal circumstances,)3.218 F F0($j)3.218 E F1 .718(is equi)3.218 F(v-)
+-.25 E(alent to)127 237 Q F0($w)2.5 E(.$m)-.7 E F1(.)A 7.5($n\207 The)
+102 253.2 R(name of the daemon \(for error messages\).)2.5 E(Def)5 E
+(aults to \231MAILER-D)-.1 E(AEMON\232.)-.4 E 7.5($o\207 \(Obsolete:)102
+269.4 R .65(use OperatorChars option instead.\))3.15 F .651
+(The set of \231operators\232 in addresses.)5.651 F 3.151(Al)5.651 G
+.651(ist of)-3.151 F .582(characters which will be considered tok)127
+281.4 R .581(ens and which will separate tok)-.1 F .581
+(ens when doing pars-)-.1 F 3.277(ing. F)127 293.4 R .777(or e)-.15 F
+.777(xample, if \231@\232 were in the)-.15 F F0($o)3.278 E F1 .778
+(macro, then the input \231a@b\232 w)3.278 F .778(ould be scanned as)-.1
+F .628(three tok)127 305.4 R .628(ens: \231a,)-.1 F 3.128<9a99>-.7 G(@,)
+-3.128 E 3.128<9a61>-.7 G .628(nd \231b)-3.128 F 4.527 -.7(.\232 D)-.4 H
+(ef).7 E .627
+(aults to \231.:@[]\232, which is the minimum set necessary to)-.1 F
+.856(do RFC 822 parsing; a richer set of operators is \231.:%@!/[]\232,\
+ which adds support for UUCP)127 317.4 R(,)-1.11 E
+(the %-hack, and X.400 addresses.)127 329.4 Q 12.5($p Sendmail')102
+345.6 R 2.5(sp)-.55 G(rocess id.)-2.5 E 7.5($q\207 Def)102 361.8 R .404
+(ault format of sender address.)-.1 F(The)5.404 E F0($q)2.903 E F1 .403
+(macro speci\214es ho)2.903 F 2.903(wa)-.25 G 2.903(na)-2.903 G .403
+(ddress should appear in a)-2.903 F 1.18(message when it is def)127
+373.8 R 3.681(aulted. Def)-.1 F 1.181(aults to \231<$g>\232.)-.1 F 1.181
+(It is commonly rede\214ned to be \231$?x$x)6.181 F(<$g>$|$g$.)127 385.8
+Q 5<9a6f>-.7 G 2.5<7299>-5 G($g$?x \($x\)$.)-2.5 E
+(\232, corresponding to the follo)-.7 E(wing tw)-.25 E 2.5(of)-.1 G
+(ormats:)-2.5 E(Eric Allman <eric@CS.Berk)167 402 Q(ele)-.1 E -.65(y.)
+-.15 G(EDU>).65 E(eric@CS.Berk)167 414 Q(ele)-.1 E -.65(y.)-.15 G
+(EDU \(Eric Allman\)).65 E F2(Sendmail)127 430.2 Q F1
+(properly quotes names that ha)2.5 E .3 -.15(ve s)-.2 H
+(pecial characters if the \214rst form is used.).15 E 14.17($r Protocol)
+102 446.4 R .977(used to recei)3.477 F 1.277 -.15(ve t)-.25 H .976
+(he message.).15 F .976(Set from the)5.976 F F0<ad70>3.476 E F1 .976
+(command line \215ag or by the SMTP)3.476 F(serv)127 458.4 Q(er code.)
+-.15 E 13.61($s Sender')102 474.6 R 3.946(sh)-.55 G 1.446(ost name.)
+-3.946 F 1.447(Set from the)6.447 F F0<ad70>3.947 E F1 1.447
+(command line \215ag or by the SMTP serv)3.947 F 1.447(er code \(in)-.15
+F(which case it is set to the EHLO/HELO parameter\).)127 486.6 Q 14.72
+($t A)102 502.8 R 1.607(numeric representation of the current time in t\
+he format YYYYMMDDHHmm \(4 digit)4.107 F .576(year 1900-9999, 2 digit m\
+onth 01-12, 2 digit day 01-31, 2 digit hours 00-23, 2 digit minutes)127
+514.8 R(00-59\).)127 526.8 Q 12.5($u The)102 543 R(recipient user)2.5 E
+(.)-.55 E 12.5($v The)102 559.2 R -.15(ve)2.5 G(rsion number of the).15
+E F2(sendmail)2.5 E F1(binary)2.5 E(.)-.65 E 5.28($w\210 The)102 575.4 R
+(hostname of this site.)2.5 E(This is the root name of this host \(b)5 E
+(ut see belo)-.2 E 2.5(wf)-.25 G(or ca)-2.5 E -.15(ve)-.2 G(ats\).).15 E
+12.5($x The)102 591.6 R(full name of the sender)2.5 E(.)-.55 E 13.06
+($z The)102 607.8 R(home directory of the recipient.)2.5 E 12.5($_ The)
+102 624 R -.25(va)2.5 G(lidated sender address.).25 E(See also)5 E F0
+(${client_r)2.5 E(esolv)-.18 E(e})-.1 E F1(.)A(${addr_type})102 640.2 Q
+.803(The type of the address which is currently being re)127 652.2 R
+3.303(written. This)-.25 F .802(macro contains up to three)3.302 F .392
+(characters, the \214rst is either `e' or `h' for en)127 664.2 R -.15
+(ve)-.4 G .393(lope/header address, the second is a space, and).15 F
+(the third is either `s' or `r' for sender/recipient address.)127 676.2
+Q(${alg_bits})102 692.4 Q .243(The maximum k)127 704.4 R -.15(ey)-.1 G
+.243(length \(in bits\) of the symmetric encryption algorithm used for \
+a TLS con-).15 F 2.822(nection. This)127 716.4 R .322
+(may be less than the ef)2.822 F(fecti)-.25 E .622 -.15(ve k)-.25 H -.15
+(ey).05 G .322(length, which is stored in).15 F F0(${cipher_bits})2.823
+E F1 2.823(,f)C(or)-2.823 E 0 Cg EP
+%%Page: 48 44
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-48 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF -.74(``)
+127 96 S -.15(ex).74 G(port controlled').15 E 2.5('a)-.74 G(lgorithms.)
+-2.5 E(${auth_authen})102 112.2 Q 1.223(The client')127 124.2 R 3.723
+(sa)-.55 G 1.223(uthentication credentials as determined by authenticat\
+ion \(only set if success-)-3.723 F 2.727(ful\). The)127 136.2 R .227(f\
+ormat depends on the mechanism used, it might be just `user', or `user@\
+realm', or)2.727 F(something similar \(SMTP A)127 148.2 Q(UTH only\).)
+-.55 E(${auth_author})102 164.4 Q 1.302(The authorization identity)127
+176.4 R 3.802(,i)-.65 G 1.302(.e. the A)-3.802 F 1.301
+(UTH= parameter of the)-.55 F/F2 9/Times-Roman@0 SF 1.301(SMTP MAIL)
+3.801 F F1 1.301(command if sup-)3.801 F(plied.)127 188.4 Q
+(${auth_type})102 204.6 Q
+(The mechanism used for SMTP authentication \(only set if successful\).)
+127 216.6 Q(${auth_ssf})102 232.8 Q .32(The k)127 244.8 R -.15(ey)-.1 G
+.321(length \(in bits\) of the symmetric encryption algorithm used for \
+the security layer of a).15 F(SASL mechanism.)127 256.8 Q(${bodytype})
+102 273 Q
+(The message body type \(7BIT or 8BITMIME\), as determined from the en)
+127 285 Q -.15(ve)-.4 G(lope.).15 E(${cert_issuer})102 301.2 Q .709(The\
+ DN \(distinguished name\) of the CA \(certi\214cate authority\) that s\
+igned the presented cer)127 313.2 R(-)-.2 E
+(ti\214cate \(the cert issuer\) \(ST)127 325.2 Q(AR)-.93 E(TTLS only\).)
+-.6 E(${cert_md5})102 341.4 Q
+(The MD5 hash of the presented certi\214cate \(ST)127 353.4 Q(AR)-.93 E
+(TTLS only\).)-.6 E(${cert_subject})102 369.6 Q
+(The DN of the presented certi\214cate \(called the cert subject\) \(ST)
+127 381.6 Q(AR)-.93 E(TTLS only\).)-.6 E(${cipher})102 397.8 Q .228(The\
+ cipher suite used for the connection, e.g., EDH-DSS-DES-CBC3-SHA, EDH-\
+RSA-DES-)127 409.8 R(CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA \(ST)127 421.8 Q
+(AR)-.93 E(TTLS only\).)-.6 E(${cipher_bits})102 438 Q .688(The ef)127
+450 R(fecti)-.25 E .988 -.15(ve k)-.25 H -.15(ey).05 G .688(length \(in\
+ bits\) of the symmetric encryption algorithm used for a TLS con-).15 F
+(nection.)127 462 Q(${client_addr})102 478.2 Q 2.302
+(The IP address of the SMTP client.)127 490.2 R 2.302
+(IPv6 addresses are tagged with "IPv6:" before the)7.302 F 2.5
+(address. De\214ned)127 502.2 R(in the SMTP serv)2.5 E(er only)-.15 E(.)
+-.65 E(${client_connections})102 518.4 Q
+(The number of open connections in the SMTP serv)127 530.4 Q
+(er for the client IP address.)-.15 E(${client_\215ags})102 546.6 Q
+1.524(The \215ags speci\214ed by the Modi\214er= part of)127 558.6 R F0
+(ClientP)4.024 E(ortOptions)-.2 E F1 1.524(where \215ags are separated)
+4.024 F 1.132
+(from each other by spaces and upper case \215ags are doubled.)127 570.6
+R 1.133(That is, Modi\214er=hA will be)6.133 F(represented as "h AA" in)
+127 582.6 Q F0(${client_\215ags})2.5 E F1 2.5(,w)C
+(hich is required for testing the \215ags in rulesets.)-2.5 E
+(${client_name})102 598.8 Q .241(The host name of the SMTP client.)127
+610.8 R .241(This may be the client')5.241 F 2.74(sb)-.55 G(rack)-2.74 E
+.24(eted IP address in the form)-.1 F 3.321([n)127 622.8 S .821(nn.nnn.\
+nnn.nnn ] for IPv4 and [ IPv6:nnnn:...:nnnn ] for IPv6 if the client')
+-3.321 F 3.322(sI)-.55 G 3.322(Pa)-3.322 G .822(ddress is)-3.322 F .21
+(not resolv)127 634.8 R .21(able, or if it is resolv)-.25 F .21(able b)
+-.25 F .21(ut the IP address of the resolv)-.2 F .21(ed hostname doesn')
+-.15 F 2.71(tm)-.18 G(atch)-2.71 E(the original IP address.)127 646.8 Q
+(De\214ned in the SMTP serv)5 E(er only)-.15 E 5(.S)-.65 G(ee also)-5 E
+F0(${client_r)2.5 E(esolv)-.18 E(e})-.1 E F1(.)A(${client_port})102 663
+Q(The port number of the SMTP client.)127 675 Q
+(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E(${client_ptr})
+102 691.2 Q 3.634
+(The result of the PTR lookup for the client IP address.)127 703.2 R
+3.634(Note: this is the same as)8.634 F F0(${client_name})127 715.2 Q F1
+(if and only if)2.5 E F0(${client_r)2.5 E(esolv)-.18 E(e})-.1 E F1
+(is OK.)2.5 E(De\214ned in the SMTP serv)5 E(er only)-.15 E(.)-.65 E 0
+Cg EP
+%%Page: 49 45
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-49)195.86 E/F1 10/Times-Roman@0 SF(${client_rate})102 96 Q .266
+(The number of incoming connections for the client IP address o)127 108
+R -.15(ve)-.15 G 2.765(rt).15 G .265(he time interv)-2.765 F .265
+(al speci\214ed)-.25 F(by ConnectionRateW)127 120 Q(indo)-.4 E(wSize.)
+-.25 E(${client_resolv)102 136.2 Q(e})-.15 E
+(Holds the result of the resolv)127 148.2 Q 2.5(ec)-.15 G(all for)-2.5 E
+F0(${client_name})2.5 E F1 5(.P)C(ossible v)-5 E(alues are:)-.25 E 33.06
+(OK resolv)167 164.4 R(ed successfully)-.15 E -.74(FA)167 176.4 S 26.02
+(IL permanent).74 F(lookup f)2.5 E(ailure)-.1 E 7.5(FORGED forw)167
+188.4 R(ard lookup doesn')-.1 E 2.5(tm)-.18 G(atch re)-2.5 E -.15(ve)
+-.25 G(rse lookup).15 E 20.83(TEMP temporary)167 200.4 R(lookup f)2.5 E
+(ailure)-.1 E .208(De\214ned in the SMTP serv)127 216.6 R .208(er only)
+-.15 F(.)-.65 E/F2 10/Times-Italic@0 SF(sendmail)5.208 E F1 .208
+(performs a hostname lookup on the IP address of)2.708 F .562
+(the connecting client.)127 228.6 R(Ne)5.562 E .561
+(xt the IP addresses of that hostname are look)-.15 F .561(ed up.)-.1 F
+.561(If the client IP)5.561 F .782
+(address does not appear in that list, then the hostname is maybe for)
+127 240.6 R 3.282(ged. This)-.18 F .782(is re\215ected as)3.282 F(the v)
+127 252.6 Q(alue FORGED for)-.25 E F0(${client_r)2.5 E(esolv)-.18 E(e})
+-.1 E F1(and it also sho)2.5 E(ws up in)-.25 E F0($_)2.5 E F1
+(as "\(may be for)2.5 E(ged\)".)-.18 E(${cn_issuer})102 268.8 Q(The CN \
+\(common name\) of the CA that signed the presented certi\214cate \(ST)
+127 280.8 Q(AR)-.93 E(TTLS only\).)-.6 E(${cn_subject})102 297 Q
+(The CN \(common name\) of the presented certi\214cate \(ST)127 309 Q
+(AR)-.93 E(TTLS only\).)-.6 E(${currHeader})102 325.2 Q .164(Header v)
+127 337.2 R .164(alue as quoted string \(possibly truncated to)-.25 F F0
+(MAXN)2.664 E(AME)-.2 E F1 2.664(\). This)B .163(macro is only a)2.664 F
+-.25(va)-.2 G(il-).25 E(able in header check rulesets.)127 349.2 Q
+(${daemon_addr})102 365.4 Q
+(The IP address the daemon is listening on for connections.)127 377.4 Q
+(${daemon_f)102 393.6 Q(amily})-.1 E .355(The netw)127 405.6 R .355
+(ork f)-.1 F .356(amily if the daemon is accepting netw)-.1 F .356
+(ork connections.)-.1 F .356(Possible v)5.356 F .356(alues include)-.25
+F(\231inet\232, \231inet6\232, \231iso\232, \231ns\232, \231x.25\232)127
+417.6 Q(${daemon_\215ags})102 433.8 Q .103
+(The \215ags for the daemon as speci\214ed by the Modi\214er= part of)
+127 445.8 R F0(DaemonP)2.603 E(ortOptions)-.2 E F1(whereby)2.603 E .548
+(the \215ags are separated from each other by spaces, and upper case \
+\215ags are doubled.)127 457.8 R .549(That is,)5.549 F .37
+(Modi\214er=Ea will be represented as "EE a" in)127 469.8 R F0
+(${daemon_\215ags})2.87 E F1 2.87(,w)C .37(hich is required for testing)
+-2.87 F(the \215ags in rulesets.)127 481.8 Q(${daemon_info})102 498 Q
+4.763(Some information about a daemon as a te)127 510 R 4.764
+(xt string.)-.15 F -.15(Fo)9.764 G 7.264(re).15 G 4.764
+(xample, \231SMTP+queue-)-7.414 F(ing@00:30:00\232.)127 522 Q
+(${daemon_name})102 538.2 Q .734(The name of the daemon from)127 550.2 R
+F0(DaemonP)3.234 E(ortOptions)-.2 E F1 .734(Name= suboption.)3.234 F
+.734(If this suboption is)5.734 F
+(not set, "Daemon#", where # is the daemon number)127 562.2 Q 2.5(,i)-.4
+G 2.5(su)-2.5 G(sed.)-2.5 E(${daemon_port})102 578.4 Q 1.459
+(The port the daemon is accepting connection on.)127 590.4 R(Unless)
+6.459 E F0(DaemonP)3.959 E(ortOptions)-.2 E F1 1.46(is set, this)3.959 F
+(will most lik)127 602.4 Q(ely be \23125\232.)-.1 E(${deli)102 618.6 Q
+-.15(ve)-.25 G(ryMode}).15 E .806(The current deli)127 630.6 R -.15(ve)
+-.25 G .806(ry mode sendmail is using.).15 F .806
+(It is initially set to the v)5.806 F .805(alue of the)-.25 F F0(Deli)
+3.305 E -.1(ve)-.1 G(ry-).1 E(Mode)127 642.6 Q F1(option.)2.5 E(${en)102
+658.8 Q(vid})-.4 E(The en)127 670.8 Q -.15(ve)-.4 G
+(lope id parameter \(ENVID=\) passed to sendmail as part of the en).15 E
+-.15(ve)-.4 G(lope.).15 E(${hdrlen})102 687 Q .339
+(The length of the header v)127 699 R .339
+(alue which is stored in ${currHeader} \(before possible truncation\).)
+-.25 F(If this v)127 711 Q(alue is greater than or equal to)-.25 E F0
+(MAXN)2.5 E(AME)-.2 E F1(the header has been truncated.)2.5 E 0 Cg EP
+%%Page: 50 46
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-50 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(${hdr_name})102 96 Q .167(The name of the header \214eld for which the\
+ current header check ruleset has been called.)127 108 R(This)5.166 E
+.831(is useful for a def)127 120 R .832(ault header check ruleset to ge\
+t the name of the header; the macro is only)-.1 F -.2(av)127 132 S
+(ailable in header check rulesets.)-.05 E(${if_addr})102 148.2 Q 1.194
+(The IP address of the interf)127 160.2 R 1.194
+(ace of an incoming connection unless it is in the loopback net.)-.1 F
+(IPv6 addresses are tagged with "IPv6:" before the address.)127 172.2 Q
+(${if_addr_out})102 188.4 Q 1.332(The IP address of the interf)127 200.4
+R 1.333(ace of an outgoing connection unless it is in the loopback net.)
+-.1 F(IPv6 addresses are tagged with "IPv6:" before the address.)127
+212.4 Q(${if_f)102 228.6 Q(amily})-.1 E(The IP f)127 240.6 Q
+(amily of the interf)-.1 E
+(ace of an incoming connection unless it is in the loopback net.)-.1 E
+(${if_f)102 256.8 Q(amily_out})-.1 E(The IP f)127 268.8 Q
+(amily of the interf)-.1 E
+(ace of an outgoing connection unless it is in the loopback net.)-.1 E
+(${if_name})102 285 Q 1.086(The hostname associated with the interf)127
+297 R 1.086(ace of an incoming connection.)-.1 F 1.086
+(This macro can be)6.086 F(used for SmtpGreetingMessage and HRecei)127
+309 Q -.15(ve)-.25 G 2.5(df).15 G(or virtual hosting.)-2.5 E -.15(Fo)5 G
+2.5(re).15 G(xample:)-2.65 E 2.5(OS)167 325.2 S
+(mtpGreetingMessage=$?{if_name}${if_name}$|$j$. MT)-2.5 E(A)-.93 E
+(${if_name_out})102 345.6 Q(The name of the interf)127 357.6 Q
+(ace of an outgoing connection.)-.1 E(${load_a)102 373.8 Q(vg})-.2 E
+(The current load a)127 385.8 Q -.15(ve)-.2 G(rage.).15 E(${mail_addr})
+102 402 Q 1.239(The address part of the resolv)127 414 R 1.239
+(ed triple of the address gi)-.15 F -.15(ve)-.25 G 3.739(nf).15 G 1.239
+(or the)-3.739 F/F2 9/Times-Roman@0 SF 1.24(SMTP MAIL)3.739 F F1
+(command.)3.74 E(De\214ned in the SMTP serv)127 426 Q(er only)-.15 E(.)
+-.65 E(${mail_host})102 442.2 Q .146(The host from the resolv)127 454.2
+R .146(ed triple of the address gi)-.15 F -.15(ve)-.25 G 2.646(nf).15 G
+.146(or the)-2.646 F F2 .145(SMTP MAIL)2.646 F F1 2.645
+(command. De\214ned)2.645 F(in the SMTP serv)127 466.2 Q(er only)-.15 E
+(.)-.65 E(${mail_mailer})102 482.4 Q 2.14(The mailer from the resolv)127
+494.4 R 2.14(ed triple of the address gi)-.15 F -.15(ve)-.25 G 4.641(nf)
+.15 G 2.141(or the)-4.641 F F2 2.141(SMTP MAIL)4.641 F F1(command.)4.641
+E(De\214ned in the SMTP serv)127 506.4 Q(er only)-.15 E(.)-.65 E
+(${msg_id})102 522.6 Q(The v)127 534.6 Q(alue of the Message-Id: header)
+-.25 E(.)-.55 E(${msg_size})102 550.8 Q 1.033(The v)127 562.8 R 1.033
+(alue of the SIZE= parameter)-.25 F 3.533(,i)-.4 G 1.032
+(.e., usually the size of the message \(in an ESMTP dia-)-3.533 F 1.252
+(logue\), before the message has been collected, thereafter the message\
+ size as computed by)127 574.8 R/F3 10/Times-Italic@0 SF(sendmail)127
+586.8 Q F1(\(and can be used in check_compat\).)2.5 E(${nbadrcpts})102
+603 Q(The number of bad recipients for a single message.)127 615 Q
+(${nrcpts})102 631.2 Q .049(The number of v)127 643.2 R .049
+(alidated recipients for a single message.)-.25 F .048
+(Note: since recipient v)5.048 F .048(alidation hap-)-.25 F .472
+(pens after)127 655.2 R F3 -.15(ch)2.973 G(ec).15 E(k_r)-.2 E(cpt)-.37 E
+F1 .473(has been called, the v)2.973 F .473
+(alue in this ruleset is one less than what might be)-.25 F -.15(ex)127
+667.2 S(pected.).15 E(${ntries})102 683.4 Q(The number of deli)127 695.4
+Q -.15(ve)-.25 G(ry attempts.).15 E(${opMode})102 711.6 Q
+(The current operation mode \(from the)127 723.6 Q F0<ad62>2.5 E F1
+(\215ag\).)2.5 E 0 Cg EP
+%%Page: 51 47
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-51)195.86 E/F1 10/Times-Roman@0 SF(${quarantine})102 96 Q
+(The quarantine reason for the en)127 108 Q -.15(ve)-.4 G
+(lope, if it is quarantined.).15 E(${queue_interv)102 124.2 Q(al})-.25 E
+.362(The queue run interv)127 136.2 R .362(al gi)-.25 F -.15(ve)-.25 G
+2.862(nb).15 G 2.862(yt)-2.862 G(he)-2.862 E F0<ad71>2.861 E F1 2.861
+(\215ag. F)2.861 F .361(or e)-.15 F(xample,)-.15 E F0(\255q30m)2.861 E
+F1 -.1(wo)2.861 G .361(uld set).1 F F0(${queue_inter)2.861 E(-)-.37 E
+-.1(va)127 148.2 S(l}).1 E F1(to \23100:30:00\232.)2.5 E(${rcpt_addr})
+102 164.4 Q 1.271(The address part of the resolv)127 176.4 R 1.272
+(ed triple of the address gi)-.15 F -.15(ve)-.25 G 3.772(nf).15 G 1.272
+(or the)-3.772 F/F2 9/Times-Roman@0 SF 1.272(SMTP RCPT)3.772 F F1
+(command.)3.772 E(De\214ned in the SMTP serv)127 188.4 Q
+(er only after a RCPT command.)-.15 E(${rcpt_host})102 204.6 Q .179
+(The host from the resolv)127 216.6 R .178(ed triple of the address gi)
+-.15 F -.15(ve)-.25 G 2.678(nf).15 G .178(or the)-2.678 F F2 .178
+(SMTP RCPT)2.678 F F1 2.678(command. De\214ned)2.678 F(in the SMTP serv)
+127 228.6 Q(er only after a RCPT command.)-.15 E(${rcpt_mailer})102
+244.8 Q 2.175(The mailer from the resolv)127 256.8 R 2.175
+(ed triple of the address gi)-.15 F -.15(ve)-.25 G 4.675(nf).15 G 2.175
+(or the)-4.675 F F2 2.176(SMTP RCPT)4.676 F F1(command.)4.676 E
+(De\214ned in the SMTP serv)127 268.8 Q(er only after a RCPT command.)
+-.15 E(${serv)102 285 Q(er_addr})-.15 E .515(The address of the serv)127
+297 R .514(er of the current outgoing SMTP connection.)-.15 F -.15(Fo)
+5.514 G 3.014(rL).15 G .514(MTP deli)-3.014 F -.15(ve)-.25 G .514
+(ry the).15 F(macro is set to the name of the mailer)127 309 Q(.)-.55 E
+(${serv)102 325.2 Q(er_name})-.15 E(The name of the serv)127 337.2 Q
+(er of the current outgoing SMTP or LMTP connection.)-.15 E(${time})102
+353.4 Q .006(The output of the)127 365.4 R/F3 10/Times-Italic@0 SF(time)
+2.506 E F1 .007(\(3\) function, i.e., the number of seconds since 0 hou\
+rs, 0 minutes, 0 sec-)B(onds, January 1, 1970, Coordinated Uni)127 377.4
+Q -.15(ve)-.25 G(rsal T).15 E(ime \(UTC\).)-.35 E(${tls_v)102 393.6 Q
+(ersion})-.15 E 1.755(The TLS/SSL v)127 405.6 R 1.755(ersion used for t\
+he connection, e.g., TLSv1, SSLv3, SSLv2; de\214ned after)-.15 F(ST)127
+417.6 Q(AR)-.93 E(TTLS has been used.)-.6 E(${total_rate})102 433.8 Q
+1.373(The total number of incoming connections o)127 445.8 R -.15(ve)
+-.15 G 3.873(rt).15 G 1.373(he time interv)-3.873 F 1.374
+(al speci\214ed by Connection-)-.25 F(RateW)127 457.8 Q(indo)-.4 E
+(wSize.)-.25 E(${v)102 474 Q(erify})-.15 E 1.141(The result of the v)127
+486 R 1.141
+(eri\214cation of the presented cert; only de\214ned after ST)-.15 F(AR)
+-.93 E 1.14(TTLS has been)-.6 F 2.5(used. Possible)127 498 R -.25(va)2.5
+G(lues are:).25 E 48.06(OK v)167 514.2 R(eri\214cation succeeded.)-.15 E
+48.06(NO no)167 526.2 R(cert presented.)2.5 E(NO)167 538.2 Q 44.85(Tn)
+-.4 G 2.5(oc)-44.85 G(ert requested.)-2.5 E -.74(FA)167 550.2 S 41.02
+(IL cert).74 F(presented b)2.5 E(ut could not be v)-.2 E(eri\214ed,)-.15
+E(e.g., the signing CA is missing.)232 562.2 Q 34.73(NONE ST)167 574.2 R
+(AR)-.93 E(TTLS has not been performed.)-.6 E 35.83(TEMP temporary)167
+586.2 R(error occurred.)2.5 E(PR)167 598.2 Q -1.88 -.4(OT O)-.4 H 10.7
+(COL some).4 F(protocol error occurred.)2.5 E(SOFTW)167 610.2 Q 9.81
+(ARE ST)-1.2 F(AR)-.93 E(TTLS handshak)-.6 E 2.5(ef)-.1 G(ailed,)-2.6 E
+(which is a f)232 622.2 Q(atal error for this session,)-.1 E
+(the e-mail will be queued.)232 634.2 Q .749
+(There are three types of dates that can be used.)127 654.6 R(The)5.749
+E F0($a)3.249 E F1(and)3.249 E F0($b)3.249 E F1 .749
+(macros are in RFC 822 for)3.249 F(-)-.2 E(mat;)102 666.6 Q F0($a)3.214
+E F1 .714(is the time as e)3.214 F .713
+(xtracted from the \231Date:\232 line of the message \(if there w)-.15 F
+.713(as one\), and)-.1 F F0($b)3.213 E F1(is)3.213 E .056
+(the current date and time \(used for postmarks\).)102 678.6 R .057
+(If no \231Date:\232 line is found in the incoming message,)5.056 F F0
+($a)102 690.6 Q F1 .305(is set to the current time also.)2.805 F(The)
+5.305 E F0($d)2.805 E F1 .304(macro is equi)2.805 F -.25(va)-.25 G .304
+(lent to the).25 F F0($b)2.804 E F1 .304(macro in UNIX \(ctime\) for)
+2.804 F(-)-.2 E(mat.)102 702.6 Q 0 Cg EP
+%%Page: 52 48
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-52 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .238
+(The macros)127 96 R F0($w)2.738 E F1(,)A F0($j)2.738 E F1 2.738(,a)C
+(nd)-2.738 E F0($m)2.738 E F1 .238
+(are set to the identity of this host.)2.738 F/F2 10/Times-Italic@0 SF
+(Sendmail)5.239 E F1 .239(tries to \214nd the fully)2.739 F .335(quali\
+\214ed name of the host if at all possible; it does this by calling)102
+108 R F2 -.1(ge)2.834 G(thostname).1 E F1 .334(\(2\) to get the current)
+B .457(hostname and then passing that to)102 120 R F2 -.1(ge)2.957 G
+(thostbyname).1 E F1 .457
+(\(3\) which is supposed to return the canonical v)B(er)-.15 E(-)-.2 E
+.279(sion of that host name.)102 134 R/F3 7/Times-Roman@0 SF(17)-4 I F1
+.279(Assuming this is successful,)2.779 4 N F0($j)2.778 E F1 .278
+(is set to the fully quali\214ed name and)2.778 F F0($m)2.778 E F1(is)
+2.778 E .706(set to the domain part of the name \(e)102 146 R -.15(ve)
+-.25 G .706(rything after the \214rst dot\).).15 F(The)5.706 E F0($w)
+3.206 E F1 .706(macro is set to the \214rst)3.206 F -.1(wo)102 158 S
+.359(rd \(e).1 F -.15(ve)-.25 G .358
+(rything before the \214rst dot\) if you ha).15 F .658 -.15(ve a l)-.2 H
+-2.15 -.25(ev e).15 H 2.858(l5o).25 G 2.858(rh)-2.858 G .358
+(igher con\214guration \214le; otherwise, it)-2.858 F .404
+(is set to the same v)102 170 R .405(alue as)-.25 F F0($j)2.905 E F1
+5.405(.I)C 2.905(ft)-5.405 G .405
+(he canoni\214cation is not successful, it is imperati)-2.905 F .705
+-.15(ve t)-.25 H .405(hat the con\214g).15 F(\214le set)102 184 Q F0($j)
+2.5 E F1(to the fully quali\214ed domain name)2.5 E F3(18)-4 I F1(.)4 I
+(The)127 200.2 Q F0($f)2.833 E F1 .333(macro is the id of the sender as\
+ originally determined; when mailing to a speci\214c host)2.833 F(the)
+102 212.2 Q F0($g)3.224 E F1 .724
+(macro is set to the address of the sender)3.224 F F2 -.37(re)3.225 G
+.725(lative to the r).37 F(ecipient.)-.37 E F1 -.15(Fo)5.725 G 3.225(re)
+.15 G .725(xample, if I send to)-3.375 F(\231bollard@matisse.CS.Berk)102
+224.2 Q(ele)-.1 E -.65(y.)-.15 G .425(EDU\232 from the machine \231v).65
+F(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G .424(EDU\232 the).65 F
+F0($f)2.924 E F1(macro)2.924 E(will be \231eric\232 and the)102 236.2 Q
+F0($g)2.5 E F1(macro will be \231eric@v)2.5 E(angogh.CS.Berk)-.25 E(ele)
+-.1 E -.65(y.)-.15 G(EDU.).65 E<9a>-.7 E(The)127 252.4 Q F0($x)2.562 E
+F1 .062(macro is set to the full name of the sender)2.562 F 5.062(.T)
+-.55 G .062(his can be determined in se)-5.062 F -.15(ve)-.25 G .063
+(ral w).15 F 2.563(ays. It)-.1 F .63(can be passed as \215ag to)102
+264.4 R F2(sendmail)3.13 E F1 5.629(.I)C 3.129(tc)-5.629 G .629
+(an be de\214ned in the)-3.129 F/F4 9/Times-Roman@0 SF -.315(NA)3.129 G
+(ME).315 E F1(en)3.129 E .629(vironment v)-.4 F 3.129(ariable. The)-.25
+F(third)3.129 E .948(choice is the v)102 276.4 R .948
+(alue of the \231Full-Name:\232 line in the header if it e)-.25 F .949
+(xists, and the fourth choice is the)-.15 F .526
+(comment \214eld of a \231From:\232 line.)102 288.4 R .526
+(If all of these f)5.526 F .526
+(ail, and if the message is being originated locally)-.1 F(,)-.65 E
+(the full name is look)102 300.4 Q(ed up in the)-.1 E F2(/etc/passwd)2.5
+E F1(\214le.)2.5 E 1.32(When sending, the)127 316.6 R F0($h)3.82 E F1(,)
+A F0($u)3.82 E F1 3.82(,a)C(nd)-3.82 E F0($z)3.82 E F1 1.321
+(macros get set to the host, user)3.82 F 3.821(,a)-.4 G 1.321
+(nd home directory \(if)-3.821 F .517(local\) of the recipient.)102
+328.6 R .517(The \214rst tw)5.517 F 3.016(oa)-.1 G .516(re set from the)
+-3.016 F F0($@)3.016 E F1(and)3.016 E F0($:)3.016 E F1 .516
+(part of the re)3.016 F .516(writing rules, respec-)-.25 F(ti)102 340.6
+Q -.15(ve)-.25 G(ly).15 E(.)-.65 E(The)127 356.8 Q F0($p)3.806 E F1(and)
+3.806 E F0($t)3.806 E F1 1.306(macros are used to create unique strings\
+ \(e.g., for the \231Message-Id:\232 \214eld\).)3.806 F(The)102 368.8 Q
+F0($i)3.252 E F1 .751(macro is set to the queue id on this host; if put\
+ into the timestamp line it can be e)3.252 F(xtremely)-.15 E .164
+(useful for tracking messages.)102 380.8 R(The)5.164 E F0($v)2.664 E F1
+.164(macro is set to be the v)2.664 F .165(ersion number of)-.15 F F2
+(sendmail)2.665 E F1 2.665(;t)C .165(his is nor)-2.665 F(-)-.2 E
+(mally put in timestamps and has been pro)102 392.8 Q -.15(ve)-.15 G 2.5
+(ne).15 G(xtremely useful for deb)-2.65 E(ugging.)-.2 E(The)127 409 Q F0
+($c)3.548 E F1 1.048(\214eld is set to the \231hop count,)3.548 F 3.548
+<9a69>-.7 G 1.048(.e., the number of times this message has been pro-)
+-3.548 F 2.856(cessed. This)102 421 R .356(can be determined by the)
+2.856 F F0<ad68>2.856 E F1 .357
+(\215ag on the command line or by counting the timestamps)2.856 F
+(in the message.)102 433 Q(The)127 449.2 Q F0($r)2.833 E F1(and)2.833 E
+F0($s)2.833 E F1 .333
+(\214elds are set to the protocol used to communicate with)2.833 F F2
+(sendmail)2.833 E F1 .333(and the send-)2.833 F .194(ing hostname.)102
+461.2 R(The)5.194 E 2.694(yc)-.15 G .194(an be set together using the)
+-2.694 F F0<ad70>2.694 E F1 .194
+(command line \215ag or separately using the)2.694 F F0<ad4d>2.695 E F1
+(or)102 473.2 Q F0(\255oM)2.5 E F1(\215ags.)2.5 E(The)127 489.4 Q F0($_)
+2.967 E F1 .467(is set to a v)2.967 F .467(alidated sender host name.)
+-.25 F .466(If the sender is running an RFC 1413 compli-)5.467 F .384
+(ant IDENT serv)102 501.4 R .384(er and the recei)-.15 F -.15(ve)-.25 G
+2.884(rh).15 G .384
+(as the IDENT protocol turned on, it will include the user name)-2.884 F
+(on that host.)102 513.4 Q(The)127 529.6 Q F0(${client_name})5.98 E F1
+(,)A F0(${client_addr})5.98 E F1 5.98(,a)C(nd)-5.98 E F0(${client_port})
+5.98 E F1 3.48(macros are set to the name,)5.98 F .786
+(address, and port number of the SMTP client who is in)102 541.6 R -.2
+(vo)-.4 G(king).2 E F2(sendmail)3.286 E F1 .786(as a serv)3.286 F(er)
+-.15 E 5.786(.T)-.55 G .786(hese can be)-5.786 F(used in the)102 553.6 Q
+F2 -.15(ch)2.5 G(ec).15 E(k_*)-.2 E F1(rulesets \(using the)2.5 E F0($&)
+2.5 E F1(deferred e)2.5 E -.25(va)-.25 G(luation form, of course!\).).25
+E F0 2.5(5.3. C)87 577.6 R(and F \212 De\214ne Classes)2.5 E F1 .66(Cla\
+sses of phrases may be de\214ned to match on the left hand side of re)
+127 593.8 R .659(writing rules, where a)-.25 F .464(\231phrase\232 is a\
+ sequence of characters that does not contain space characters.)102
+605.8 R -.15(Fo)5.465 G 2.965(re).15 G .465(xample a class of)-3.115 F
+.654(all local names for this site might be created so that attempts to\
+ send to oneself can be eliminated.)102 617.8 R .041(These can either b\
+e de\214ned directly in the con\214guration \214le or read in from anot\
+her \214le.)102 629.8 R .041(Classes are)5.041 F .649
+(named as a single letter or a w)102 641.8 R .649(ord in {braces}.)-.1 F
+.649(Class names be)5.649 F .649(ginning with lo)-.15 F .648
+(wer case letters and)-.25 F .638(special characters are reserv)102
+653.8 R .638(ed for system use.)-.15 F .639
+(Classes de\214ned in con\214g \214les may be gi)5.639 F -.15(ve)-.25 G
+3.139(nn).15 G(ames)-3.139 E 1.05
+(from the set of upper case letters for short names or be)102 665.8 R
+1.05(ginning with an upper case letter for long)-.15 F .32 LW 76 675.4
+72 675.4 DL 80 675.4 76 675.4 DL 84 675.4 80 675.4 DL 88 675.4 84 675.4
+DL 92 675.4 88 675.4 DL 96 675.4 92 675.4 DL 100 675.4 96 675.4 DL 104
+675.4 100 675.4 DL 108 675.4 104 675.4 DL 112 675.4 108 675.4 DL 116
+675.4 112 675.4 DL 120 675.4 116 675.4 DL 124 675.4 120 675.4 DL 128
+675.4 124 675.4 DL 132 675.4 128 675.4 DL 136 675.4 132 675.4 DL 140
+675.4 136 675.4 DL 144 675.4 140 675.4 DL 148 675.4 144 675.4 DL 152
+675.4 148 675.4 DL 156 675.4 152 675.4 DL 160 675.4 156 675.4 DL 164
+675.4 160 675.4 DL 168 675.4 164 675.4 DL 172 675.4 168 675.4 DL 176
+675.4 172 675.4 DL 180 675.4 176 675.4 DL 184 675.4 180 675.4 DL 188
+675.4 184 675.4 DL 192 675.4 188 675.4 DL 196 675.4 192 675.4 DL 200
+675.4 196 675.4 DL 204 675.4 200 675.4 DL 208 675.4 204 675.4 DL 212
+675.4 208 675.4 DL 216 675.4 212 675.4 DL/F5 5/Times-Roman@0 SF(17)93.6
+685.8 Q/F6 8/Times-Roman@0 SF -.12(Fo)3.2 K 2(re).12 G
+(xample, on some systems)-2.12 E/F7 8/Times-Italic@0 SF -.08(ge)2 G
+(thostname).08 E F6(might return \231foo\232 which w)2 E
+(ould be mapped to \231foo.bar)-.08 E(.com\232 by)-.44 E F7 -.08(ge)2 G
+(thostbyname).08 E F6(.)A F5(18)93.6 699.4 Q F6(Older v)3.2 I
+(ersions of sendmail didn')-.12 E 2(tp)-.144 G(re-de\214ne)-2 E/F8 8
+/Times-Bold@0 SF($j)2 E F6(at all, so up until 8.6, con\214g \214les)2 E
+F7(always)2 E F6(had to de\214ne)2 E F8($j)2 E F6(.)A 0 Cg EP
+%%Page: 53 49
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-53)195.86 E/F1 10/Times-Roman@0 SF(names.)102 96 Q
+(The syntax is:)127 112.2 Q F0(C)142 128.4 Q/F2 10/Times-Italic@0 SF
+1.666(cp)C(hr)-1.666 E(ase1 phr)-.15 E(ase2...)-.15 E F0(F)142 140.4 Q
+F2 1.666<638c>C(le)-1.666 E F0(F)142 152.4 Q F2 1.666(c|)C(pr)-1.666 E
+-.1(og)-.45 G -.15(ra).1 G(m).15 E F0(F)142 164.4 Q F2 1.666(c[)C(mapk)
+-1.666 E -.3(ey)-.1 G(]@mapclass:mapspec).3 E F1 .035
+(The \214rst form de\214nes the class)102 180.6 R F2(c)2.535 E F1 .035
+(to match an)2.535 F 2.535(yo)-.15 G 2.535(ft)-2.535 G .035(he named w)
+-2.535 F 2.535(ords. If)-.1 F F2(phr)2.536 E(ase1)-.15 E F1(or)2.536 E
+F2(phr)2.536 E(ase2)-.15 E F1 .036(is another)2.536 F .747(class, e.g.,)
+102 192.6 R F2($=S)3.247 E F1 3.247(,t)C .747(he contents of class)
+-3.247 F F2(S)3.246 E F1 .746(are added to class)3.246 F F2(c)3.246 E F1
+5.746(.I)C 3.246(ti)-5.746 G 3.246(sp)-3.246 G .746
+(ermissible to split them among)-3.246 F(multiple lines; for e)102 204.6
+Q(xample, the tw)-.15 E 2.5(of)-.1 G(orms:)-2.5 E(CHmonet ucbmonet)142
+220.8 Q(and)102 237 Q(CHmonet)142 253.2 Q(CHucbmonet)142 265.2 Q 1.015
+(are equi)102 281.4 R -.25(va)-.25 G 3.515(lent. The).25 F -.74(``)3.516
+G(F').74 E 3.516('f)-.74 G 1.016(orms read the elements of the class)
+-3.516 F F2(c)3.516 E F1 1.016(from the named)3.516 F F2(\214le)3.516 E
+F1(,)A F2(pr)3.516 E -.1(og)-.45 G -.15(ra).1 G(m).15 E F1 3.516(,o)C(r)
+-3.516 E F2 .162(map speci\214cation)102 293.4 R F1 5.162(.E)C .161
+(ach element should be listed on a separate line.)-5.162 F 1.761 -.8
+(To s)5.161 H .161(pecify an optional \214le, use).8 F -.74(``)102 305.4
+S(\255o').74 E 2.5('b)-.74 G
+(etween the class name and the \214le name, e.g.,)-2.5 E
+(Fc \255o /path/to/\214le)142 321.6 Q .396(If the \214le can')102 337.8
+R 2.896(tb)-.18 G 2.896(eu)-2.896 G(sed,)-2.896 E F2(sendmail)2.896 E F1
+.396(will not complain b)2.896 F .396(ut silently ignore it.)-.2 F .396
+(The map form should be)5.396 F .364(an optional map k)102 349.8 R -.15
+(ey)-.1 G 2.864(,a)-.5 G 2.864(na)-2.864 G 2.864(ts)-2.864 G .363
+(ign, and a map class follo)-2.864 F .363
+(wed by the speci\214cation for that map.)-.25 F(Exam-)5.363 E
+(ples include:)102 361.8 Q(F{V)142 378 Q(irtHosts}@ldap:\255k \(&\(obje\
+ctClass=virtHosts\)\(host=*\)\) \255v host)-.6 E
+(F{MyClass}foo@hash:/etc/mail/classes)142 390 Q .95
+(will \214ll the class)102 406.2 R F0($={V)3.45 E(irtHosts})-.37 E F1
+.951(from an LD)3.45 F .951(AP map lookup and)-.4 F F0($={MyClass})3.451
+E F1 .951(from a hash data-)3.451 F .017(base map lookup of the)102
+418.2 R F0 -.25(fo)2.517 G(o).25 E F1 5.017(.T)C .017(here is also a b)
+-5.017 F .016(uilt-in schema that can be accessed by only specifying:)
+-.2 F(F{)142 434.4 Q F2(ClassName)A F1(}@LD)A(AP)-.4 E
+(This will tell sendmail to use the def)102 450.6 Q(ault schema:)-.1 E
+(\255k \(&\(objectClass=sendmailMT)142 466.8 Q -.4(AC)-.93 G(lass\)).4 E
+(\(sendmailMT)154.5 478.8 Q -.4(AC)-.93 G(lassName=).4 E F2(ClassName)A
+F1(\))A(\(|\(sendmailMT)154.5 490.8 Q -.4(AC)-.93 G(luster=${sendmailMT)
+.4 E -.4(AC)-.93 G(luster}\)).4 E(\(sendmailMT)159.5 502.8 Q
+(AHost=$j\)\)\))-.93 E(\255v sendmailMT)142 514.8 Q -.4(AC)-.93 G(lassV)
+.4 E(alue)-1.11 E
+(Note that the lookup is only done when sendmail is initially started.)
+102 531 Q 1.339(Elements of classes can be accessed in rules using)127
+547.2 R F0($=)3.839 E F1(or)3.839 E F0($~)3.839 E F1 6.339(.T)C(he)
+-6.339 E F0($~)3.839 E F1 1.339(\(match entries not in)3.839 F
+(class\) only matches a single w)102 559.2 Q(ord; multi-w)-.1 E
+(ord entries in the class are ignored in this conte)-.1 E(xt.)-.15 E
+(Some classes ha)127 575.4 Q .3 -.15(ve i)-.2 H(nternal meaning to).15 E
+F2(sendmail)2.5 E F1(:)A 18.42($=e contains)102 591.6 R .562
+(the Content-T)3.062 F(ransfer)-.35 E .562(-Encodings that can be 8)-.2
+F/F3 10/Symbol SF<ae>A F1 3.062(7b)C .562(it encoded.)-3.062 F .561
+(It is prede\214ned to)5.561 F
+(contain \2317bit\232, \2318bit\232, and \231binary\232.)138 603.6 Q
+17.86($=k set)102 619.8 R(to be the same as)2.5 E F0($k)2.5 E F1 2.5(,t)
+C(hat is, the UUCP node name.)-2.5 E 15.08($=m set)102 636 R
+(to the set of domains by which this host is kno)2.5 E
+(wn, initially just)-.25 E F0($m)2.5 E F1(.)A 17.86($=n can)102 652.2 R
+.58(be set to the set of MIME body types that can ne)3.08 F -.15(ve)-.25
+G 3.081(rb).15 G 3.081(ee)-3.081 G .581(ight to se)-3.081 F -.15(ve)-.25
+G 3.081(nb).15 G .581(it encoded.)-3.081 F(It)5.581 E(def)138 664.2 Q
+1.81(aults to \231multipart/signed\232.)-.1 F 1.81
+(Message types \231message/*\232 and \231multipart/*\232 are ne)6.81 F
+-.15(ve)-.25 G(r).15 E 1.853(encoded directly)138 676.2 R 6.853(.M)-.65
+G 1.853(ultipart messages are al)-6.853 F -.1(wa)-.1 G 1.853
+(ys handled recursi).1 F -.15(ve)-.25 G(ly).15 E 6.853(.T)-.65 G 1.853
+(he handling of)-6.853 F(message/* messages are controlled by class)138
+688.2 Q F0($=s)2.5 E F1(.)A 17.86($=q A)102 704.4 R .712
+(set of Content-T)3.212 F .712(ypes that will ne)-.8 F -.15(ve)-.25 G
+3.212(rb).15 G 3.212(ee)-3.212 G .712(ncoded as base64 \(if the)-3.212 F
+3.212(yh)-.15 G -2.25 -.2(av e)-3.212 H .711(to be encoded,)3.412 F(the)
+138 716.4 Q 3.357(yw)-.15 G .858(ill be encoded as quoted-printable\).)
+-3.357 F .858(It can ha)5.858 F 1.158 -.15(ve p)-.2 H .858
+(rimary types \(e.g., \231te).15 F .858(xt\232\) or full)-.15 F 0 Cg EP
+%%Page: 54 50
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-54 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(types \(such as \231te)138 96 Q 2.5(xt/plain\232\). The)-.15 F
+(class is initialized to ha)2.5 E .3 -.15(ve \231)-.2 H(te).15 E
+(xt/plain\232 only)-.15 E(.)-.65 E 18.97($=s contains)102 112.2 R .648
+(the set of subtypes of message that can be treated recursi)3.148 F -.15
+(ve)-.25 G(ly).15 E 5.648(.B)-.65 G 3.148(yd)-5.648 G(ef)-3.148 E .648
+(ault it con-)-.1 F .969(tains only \231rfc822\232.)138 124.2 R .969
+(Other \231message/*\232 types cannot be 8)5.969 F/F2 10/Symbol SF<ae>A
+F1 3.469(7b)C .969(it encoded.)-3.469 F .97(If a message)5.97 F 1.045
+(containing eight bit data is sent to a se)138 136.2 R -.15(ve)-.25 G
+3.545(nb).15 G 1.045(it host, and that message cannot be encoded)-3.545
+F(into se)138 148.2 Q -.15(ve)-.25 G 2.5(nb).15 G
+(its, it will be stripped to 7 bits.)-2.5 E 20.08($=t set)102 164.4 R
+.372(to the set of trusted users by the)2.872 F F0(T)2.872 E F1 .372
+(con\214guration line.)2.872 F .372(If you w)5.372 F .373
+(ant to read trusted users)-.1 F(from a \214le, use)138 176.4 Q F0(Ft)
+2.5 E/F3 10/Times-Italic@0 SF(/\214le/name)A F1(.)A 15.64($=w set)102
+192.6 R .513(to be the set of all names this host is kno)3.013 F .513
+(wn by)-.25 F 5.513(.T)-.65 G .513(his can be used to match local host-)
+-5.513 F(names.)138 204.6 Q($={persistentMacros})102 220.8 Q 1.712
+(set to the macros that should be sa)138 232.8 R -.15(ve)-.2 G 4.212(da)
+.15 G 1.712(cross queue runs.)-4.212 F 1.712(Care should be tak)6.712 F
+1.712(en when)-.1 F(adding macro names to this class.)138 244.8 Q F3
+(Sendmail)127 261 Q F1 .183(can be compiled to allo)2.683 F 2.683(wa)
+-.25 G F3(scanf)-.001 E F1 .182(\(3\) string on the)B F0(F)2.682 E F1
+2.682(line. This)2.682 F .182(lets you do simplistic)2.682 F .554
+(parsing of te)102 273 R .554(xt \214les.)-.15 F -.15(Fo)5.554 G 3.054
+(re).15 G .554(xample, to read all the user names in your system)-3.204
+F F3(/etc/passwd)3.055 E F1 .555(\214le into a)3.055 F(class, use)102
+285 Q(FL/etc/passwd %[^:])142 301.2 Q(which reads e)102 317.4 Q -.15(ve)
+-.25 G(ry line up to the \214rst colon.).15 E F0 2.5(5.4. M)87 341.4 R
+2.5<8a44>2.5 G(e\214ne Mailer)-2.5 E F1(Programs and interf)127 357.6 Q
+(aces to mailers are de\214ned in this line.)-.1 E(The format is:)5 E F0
+(M)142 373.8 Q F3(name)A F1 2.5(,{)C F3(\214eld)-2.5 E F1(=)A F3(value)A
+F1(}*)1.666 E(where)102 390 Q F3(name)4.244 E F1 1.744(is the name of t\
+he mailer \(used internally only\) and the \231\214eld=name\232 pairs d\
+e\214ne)4.244 F(attrib)102 402 Q(utes of the mailer)-.2 E 5(.F)-.55 G
+(ields are:)-5 E -.15(Pa)142 418.2 S 51.87(th The).15 F
+(pathname of the mailer)2.5 E 47.83(Flags Special)142 430.2 R
+(\215ags for this mailer)2.5 E 41.73(Sender Re)142 442.2 R
+(writing set\(s\) for sender addresses)-.25 E 31.17(Recipient Re)142
+454.2 R(writing set\(s\) for recipient addresses)-.25 E 30.62
+(recipients Maximum)142 466.2 R(number of recipients per connection)2.5
+E(Ar)142 478.2 Q 49.13(gv An)-.18 F(ar)2.5 E(gument v)-.18 E
+(ector to pass to this mailer)-.15 E 55.61(Eol The)142 490.2 R
+(end-of-line string for this mailer)2.5 E 35.62(Maxsize The)142 502.2 R
+(maximum message length to this mailer)2.5 E 14.51(maxmessages The)142
+514.2 R(maximum message deli)2.5 E -.15(ve)-.25 G(ries per connection)
+.15 E 32.27(Linelimit The)142 526.2 R
+(maximum line length in the message body)2.5 E 31.18(Directory The)142
+538.2 R -.1(wo)2.5 G(rking directory for the mailer).1 E 42.84
+(Userid The)142 550.2 R(def)2.5 E(ault user and group id to run as)-.1 E
+50.62(Nice The)142 562.2 R(nice\(2\) increment for the mailer)2.5 E
+38.95(Charset The)142 574.2 R(def)2.5 E
+(ault character set for 8-bit characters)-.1 E -.8(Ty)142 586.2 S 49.75
+(pe T).8 F(ype information for DSN diagnostics)-.8 E -.8(Wa)142 598.2 S
+50.86(it The).8 F(maximum time to w)2.5 E(ait for the mailer)-.1 E
+(Queue)142 610.2 Q 20.22(group The)-.15 F(def)2.5 E
+(ault queue group for the mailer)-.1 E 69.22(/T)142 622.2 S
+(he root directory for the mailer)-69.22 E
+(Only the \214rst character of the \214eld name is check)102 638.4 Q
+(ed \(it')-.1 E 2.5(sc)-.55 G(ase-sensiti)-2.5 E -.15(ve)-.25 G(\).).15
+E .396(The follo)127 654.6 R .396
+(wing \215ags may be set in the mailer description.)-.25 F(An)5.396 E
+2.896(yo)-.15 G .397(ther \215ags may be used freely)-2.896 F .075(to c\
+onditionally assign headers to messages destined for particular mailers\
+.)102 666.6 R .075(Flags mark)5.075 F .075(ed with \207 are)-.1 F 1.192
+(not interpreted by the)102 678.6 R F3(sendmail)3.692 E F1 1.193
+(binary; these are the con)3.692 F -.15(ve)-.4 G 1.193
+(ntionally used to correlate to the \215ags).15 F .738(portion of the)
+102 690.6 R F0(H)3.238 E F1 3.237(line. Flags)3.238 F(mark)3.237 E .737
+(ed with \210 apply to the mailers for the sender address rather than)
+-.1 F(the usual recipient mailers.)102 702.6 Q 0 Cg EP
+%%Page: 55 51
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-55)195.86 E/F1 10/Times-Roman@0 SF 15.56(aR)102 96 S .987(un Ex\
+tended SMTP \(ESMTP\) protocol \(de\214ned in RFCs 1869, 1652, and 1870\
+\).)-15.56 F .987(This \215ag)5.987 F(def)122 108 Q
+(aults on if the SMTP greeting message includes the w)-.1 E
+(ord \231ESMTP\232.)-.1 E 12.78(AL)102 124.2 S .852
+(ook up the user \(address\) part of the resolv)-12.78 F .852
+(ed mailer triple, in the alias database.)-.15 F(Normally)5.852 E
+(this is only set for local mailers.)122 136.2 Q 15(bF)102 152.4 S .456
+(orce a blank line on the end of a message.)-15.15 F .456
+(This is intended to w)5.456 F .456(ork around some stupid v)-.1 F(er)
+-.15 E(-)-.2 E .362(sions of /bin/mail that require a blank line, b)122
+164.4 R .362(ut do not pro)-.2 F .362(vide it themselv)-.15 F 2.861
+(es. It)-.15 F -.1(wo)2.861 G .361(uld not nor).1 F(-)-.2 E
+(mally be used on netw)122 176.4 Q(ork mail.)-.1 E 13.33(BS)102 192.6 S
+.142(trip leading backslashes \(\\\) of)-13.33 F 2.643(fo)-.25 G 2.643
+(ft)-2.643 G .143
+(he address; this is a subset of the functionality of the)-2.643 F F0(s)
+2.643 E F1(\215ag.)2.643 E 15.56(cD)102 208.8 S 2.663(on)-15.56 G .163
+(ot include comments in addresses.)-2.663 F .163
+(This should only be used if you ha)5.163 F .463 -.15(ve t)-.2 H 2.663
+(ow).15 G .163(ork around a)-2.763 F 1.846
+(remote mailer that gets confused by comments.)122 220.8 R 1.846
+(This strips addresses of the form \231Phrase)6.846 F
+(<address>\232 or \231address \(Comment\)\232 do)122 232.8 Q
+(wn to just \231address\232.)-.25 E 5.83(C\210 If)102 249 R .214
+(mail is)2.714 F/F2 10/Times-Italic@0 SF -.37(re)2.714 G(ceived).37 E F1
+.213(from a mailer with this \215ag set, an)2.713 F 2.713(ya)-.15 G .213
+(ddresses in the header that do not ha)-2.713 F -.15(ve)-.2 G .97
+(an at sign \(\231@\232\) after being re)122 261 R .97
+(written by ruleset three will ha)-.25 F 1.27 -.15(ve t)-.2 H .97
+(he \231@domain\232 clause from).15 F(the sender en)122 273 Q -.15(ve)
+-.4 G(lope address tack).15 E(ed on.)-.1 E(This allo)5 E
+(ws mail with headers of the form:)-.25 E(From: usera@hosta)162 289.2 Q
+-.8(To)162 301.2 S 2.5(:u).8 G(serb@hostb, userc)-2.5 E(to be re)122
+317.4 Q(written as:)-.25 E(From: usera@hosta)162 333.6 Q -.8(To)162
+345.6 S 2.5(:u).8 G(serb@hostb, userc@hosta)-2.5 E(automatically)122
+361.8 Q 5(.H)-.65 G -.25(ow)-5 G -2.15 -.25(ev e).25 H .8 -.4(r, i).25 H
+2.5(td).4 G(oesn')-2.5 E 2.5(tr)-.18 G(eally w)-2.5 E(ork reliably)-.1 E
+(.)-.65 E 15(dD)102 378 S 2.56(on)-15 G .06(ot include angle brack)-2.56
+F .06(ets around route-address syntax addresses.)-.1 F .06
+(This is useful on mailers)5.06 F .187(that are going to pass addresses\
+ to a shell that might interpret angle brack)122 390 R .188
+(ets as I/O redirection.)-.1 F(Ho)122 402 Q(we)-.25 E -.15(ve)-.25 G
+1.621 -.4(r, i).15 H 3.321(td).4 G .821(oes not protect ag)-3.321 F .821
+(ainst other shell metacharacters.)-.05 F .821
+(Therefore, passing addresses)5.821 F
+(to a shell should not be considered secure.)122 414 Q 5.28(D\207 This)
+102 430.2 R(mailer w)2.5 E(ants a \231Date:\232 header line.)-.1 E 15.56
+(eT)102 446.4 S .173(his mailer is e)-15.56 F(xpensi)-.15 E .473 -.15
+(ve t)-.25 H 2.673(oc).15 G .173(onnect to, so try to a)-2.673 F -.2(vo)
+-.2 G .174(id connecting normally; an).2 F 2.674(yn)-.15 G .174
+(ecessary con-)-2.674 F(nection will occur during a queue run.)122 458.4
+Q(See also option)5 E F0(HoldExpensi)2.5 E -.1(ve)-.1 G F1(.).1 E 13.89
+(EE)102 474.6 S(scape lines be)-13.89 E(ginning with \231From)-.15 E 2.5
+<9a69>5 G 2.5(nt)-2.5 G(he message with a `>' sign.)-2.5 E 16.67(fT)102
+490.8 S .19(he mailer w)-16.67 F .19(ants a)-.1 F F0<ad66>2.69 E F2(fr)
+2.69 E(om)-.45 E F1 .19(\215ag, b)2.69 F .19(ut only if this is a netw)
+-.2 F .19(ork forw)-.1 F .19(ard operation \(i.e., the mailer)-.1 F
+(will gi)122 502.8 Q .3 -.15(ve a)-.25 H 2.5(ne).15 G(rror if the e)-2.5
+E -.15(xe)-.15 G(cuting user does not ha).15 E .3 -.15(ve s)-.2 H
+(pecial permissions\).).15 E 6.94(F\207 This)102 519 R(mailer w)2.5 E
+(ants a \231From:\232 header line.)-.1 E 15(gN)102 535.2 S(ormally)-15 E
+(,)-.65 E F2(sendmail)4.892 E F1 2.393(sends internally generated email\
+ \(e.g., error messages\) using the null)4.892 F 1.327
+(return address as required by RFC 1123.)122 547.2 R(Ho)6.327 E(we)-.25
+E -.15(ve)-.25 G 2.127 -.4(r, s).15 H 1.327(ome mailers don').4 F 3.827
+(ta)-.18 G 1.327(ccept a null return)-3.827 F 3.31(address. If)122 559.2
+R(necessary)3.31 E 3.31(,y)-.65 G .81(ou can set the)-3.31 F F0(g)3.311
+E F1 .811(\215ag to pre)3.311 F -.15(ve)-.25 G(nt).15 E F2(sendmail)
+3.311 E F1 .811(from obe)3.311 F .811(ying the standards;)-.15 F 1.57
+(error messages will be sent as from the MAILER-D)122 571.2 R 1.57
+(AEMON \(actually)-.4 F 4.07(,t)-.65 G 1.57(he v)-4.07 F 1.57
+(alue of the)-.25 F F0($n)4.07 E F1(macro\).)122 583.2 Q 15(hU)102 599.4
+S 1.006(pper case should be preserv)-15 F 1.007
+(ed in host names \(the $@ portion of the mailer triplet resolv)-.15 F
+(ed)-.15 E(from ruleset 0\) for this mailer)122 611.4 Q(.)-.55 E 17.22
+(iD)102 627.6 S 2.5(oU)-17.22 G(ser Database re)-2.5 E(writing on en)
+-.25 E -.15(ve)-.4 G(lope sender address.).15 E 16.67(IT)102 643.8 S
+.475(his mailer will be speaking SMTP to another)-16.67 F F2(sendmail)
+2.974 E F1 2.974<8a61>2.974 G 2.974(ss)-2.974 G .474
+(uch it can use special protocol)-2.974 F 2.642(features. This)122 655.8
+R .142(\215ag should not be used e)2.642 F .142(xcept for deb)-.15 F
+.142(ugging purposes because it uses)-.2 F F0(VERB)2.642 E F1(as)2.642 E
+(SMTP command.)122 667.8 Q 17.22(jD)102 684 S 2.5(oU)-17.22 G
+(ser Database re)-2.5 E(writing on recipients as well as senders.)-.25 E
+15(kN)102 700.2 S 1.03(ormally when)-15 F F2(sendmail)3.53 E F1 1.03
+(connects to a host via SMTP)3.53 F 3.529(,i)-1.11 G 3.529(tc)-3.529 G
+1.029(hecks to mak)-3.529 F 3.529(es)-.1 G 1.029(ure that this isn')
+-3.529 F(t)-.18 E .562(accidently the same host name as might happen if)
+122 712.2 R F2(sendmail)3.062 E F1 .562
+(is miscon\214gured or if a long-haul)3.062 F(netw)122 724.2 Q 1.074
+(ork interf)-.1 F 1.074(ace is set in loopback mode.)-.1 F 1.073
+(This \215ag disables the loopback check.)6.074 F 1.073(It should)6.073
+F 0 Cg EP
+%%Page: 56 52
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-56 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(only be used under v)122 96 Q(ery unusual circumstances.)-.15 E 12.78
+(KC)102 112.2 S(urrently unimplemented.)-12.78 E(Reserv)5 E
+(ed for chunking.)-.15 E 17.22(lT)102 128.4 S
+(his mailer is local \(i.e., \214nal deli)-17.22 E -.15(ve)-.25 G
+(ry will be performed\).).15 E 13.89(LL)102 144.6 S .598
+(imit the line lengths as speci\214ed in RFC 821.)-13.89 F .598
+(This deprecated option should be replaced by)5.598 F(the)122 156.6 Q F0
+(L=)2.5 E F1(mail declaration.)2.5 E -.15(Fo)5 G 2.5(rh).15 G
+(istoric reasons, the)-2.5 E F0(L)2.5 E F1(\215ag also sets the)2.5 E F0
+(7)2.5 E F1(\215ag.)2.5 E 12.22(mT)102 172.8 S .464(his mailer can send\
+ to multiple users on the same host in one transaction.)-12.22 F .463
+(When a)5.463 F F0($u)2.963 E F1(macro)2.963 E .731(occurs in the)122
+184.8 R/F2 10/Times-Italic@0 SF(ar)3.231 E(gv)-.37 E F1 .732(part of th\
+e mailer de\214nition, that \214eld will be repeated as necessary for a\
+ll)3.231 F .674(qualifying users.)122 196.8 R(Remo)5.674 E .674(ving th\
+is \215ag can defeat duplicate supression on a remote site as each)-.15
+F(recipient is sent in a separate transaction.)122 208.8 Q 3.61
+(M\207 This)102 225 R(mailer w)2.5 E
+(ants a \231Message-Id:\232 header line.)-.1 E 15(nD)102 241.2 S 2.5(on)
+-15 G
+(ot insert a UNIX-style \231From\232 line on the front of the message.)
+-2.5 E 15(oA)102 257.4 S -.1(lwa)-15 G .816(ys run as the o).1 F .816
+(wner of the recipient mailbox.)-.25 F(Normally)5.816 E F2(sendmail)
+3.316 E F1 .816(runs as the sender for)3.316 F .198
+(locally generated mail or as \231daemon\232 \(actually)122 269.4 R
+2.698(,t)-.65 G .198(he user speci\214ed in the)-2.698 F F0(u)2.698 E F1
+.198(option\) when deli)2.698 F(v-)-.25 E 1.337(ering netw)122 281.4 R
+1.337(ork mail.)-.1 F 1.338(The normal beha)6.338 F 1.338
+(vior is required by most local mailers, which will not)-.2 F(allo)122
+293.4 Q 2.521(wt)-.25 G .021(he en)-2.521 F -.15(ve)-.4 G .021
+(lope sender address to be set unless the mailer is running as daemon.)
+.15 F .02(This \215ag is)5.02 F(ignored if the)122 305.4 Q F0(S)2.5 E F1
+(\215ag is set.)2.5 E 15(pU)102 321.6 S .497(se the route-addr style re)
+-15 F -.15(ve)-.25 G .498(rse-path in the SMTP \231MAIL FR).15 F .498
+(OM:\232 command rather than just)-.4 F .205(the return address; althou\
+gh this is required in RFC 821 section 3.1, man)122 333.6 R 2.705(yh)
+-.15 G .205(osts do not process)-2.705 F(re)122 345.6 Q -.15(ve)-.25 G
+(rse-paths properly).15 E 5(.R)-.65 G -2.15 -.25(ev e)-5 H
+(rse-paths are of).25 E(\214cially discouraged by RFC 1123.)-.25 E 6.94
+(P\207 This)102 361.8 R(mailer w)2.5 E(ants a \231Return-P)-.1 E
+(ath:\232 line.)-.15 E 15(qW)102 378 S .068(hen an address that resolv)
+-15 F .069(es to this mailer is v)-.15 F .069
+(eri\214ed \(SMTP VRFY command\), generate 250)-.15 F
+(responses instead of 252 responses.)122 390 Q
+(This will imply that the address is local.)5 E 16.67(rS)102 406.2 S
+(ame as)-16.67 E F0(f)2.5 E F1 2.5(,b)C(ut sends a)-2.7 E F0<ad72>2.5 E
+F1(\215ag.)2.5 E 13.33(RO)102 422.4 S .67
+(pen SMTP connections from a \231secure\232 port.)-13.33 F .669
+(Secure ports aren')5.669 F 3.169(t\()-.18 G .669(secure, that is\) e)
+-3.169 F .669(xcept on)-.15 F .639
+(UNIX machines, so it is unclear that this adds an)122 434.4 R(ything.)
+-.15 E F2(sendmail)5.639 E F1 .64(must be running as root to)3.14 F
+(be able to use this \215ag.)122 446.4 Q 16.11(sS)102 462.6 S
+(trip quote characters \(" and \\\) of)-16.11 E 2.5(fo)-.25 G 2.5(ft)
+-2.5 G(he address before calling the mailer)-2.5 E(.)-.55 E 14.44(SD)102
+478.8 S(on')-14.44 E 3.332(tr)-.18 G .832
+(eset the userid before calling the mailer)-3.332 F 5.831(.T)-.55 G .831
+(his w)-5.831 F .831(ould be used in a secure en)-.1 F(vironment)-.4 E
+(where)122 490.8 Q F2(sendmail)3.317 E F1 .817(ran as root.)3.317 F .817
+(This could be used to a)5.817 F -.2(vo)-.2 G .817(id for).2 F .817
+(ged addresses.)-.18 F .817(If the)5.817 F F0(U=)3.317 E F1 .818
+(\214eld is)3.317 F(also speci\214ed, this \215ag causes the ef)122
+502.8 Q(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id to be set to that user)
+.15 E(.)-.55 E 15(uU)102 519 S .726(pper case should be preserv)-15 F
+.725(ed in user names for this mailer)-.15 F 5.725(.S)-.55 G .725
+(tandards require preserv)-5.725 F(ation)-.25 E .748
+(of case in the local part of addresses, e)122 531 R .748
+(xcept for those address for which your system accepts)-.15 F
+(responsibility)122 543 Q 5.151(.R)-.65 G .151(FC 2142 pro)-5.151 F .151
+(vides a long list of addresses which should be case insensiti)-.15 F
+-.15(ve)-.25 G 5.15(.I).15 G(f)-5.15 E .359
+(you use this \215ag, you may be violating RFC 2142.)122 555 R .36
+(Note that postmaster is al)5.359 F -.1(wa)-.1 G .36(ys treated as a).1
+F(case insensiti)122 567 Q .3 -.15(ve a)-.25 H(ddress re).15 E -.05(ga)
+-.15 G(rdless of this \215ag.).05 E 12.78(UT)102 583.2 S(his mailer w)
+-12.78 E(ants UUCP-style \231From\232 lines with the ugly \231remote fr\
+om <host>\232 on the end.)-.1 E 12.78(wT)102 599.4 S .607
+(he user must ha)-12.78 F .907 -.15(ve a v)-.2 H .606
+(alid account on this machine, i.e.,)-.1 F F2 -.1(ge)3.106 G(tpwnam).1 E
+F1 .606(must succeed.)3.106 F .606(If not, the)5.606 F 1.233
+(mail is bounced.)122 611.4 R 1.233(See also the)6.233 F F0
+(MailBoxDatabase)3.733 E F1 3.733(option. This)3.733 F 1.233
+(is required to get \231.forw)3.733 F(ard\232)-.1 E(capability)122 623.4
+Q(.)-.65 E 10.56(WI)102 639.6 S(gnore long term host status information\
+ \(see Section "Persistent Host Status Information"\).)-10.56 E 7.5
+(x\207 This)102 655.8 R(mailer w)2.5 E
+(ants a \231Full-Name:\232 header line.)-.1 E 12.78(XT)102 672 S .512
+(his mailer w)-12.78 F .512(ants to use the hidden dot algorithm as spe\
+ci\214ed in RFC 821; basically)-.1 F 3.011(,a)-.65 G .811 -.15(ny l)
+-3.011 H(ine).15 E(be)122 684 Q .796(ginning with a dot will ha)-.15 F
+1.096 -.15(ve a)-.2 H 3.296(ne).15 G .797
+(xtra dot prepended \(to be stripped at the other end\).)-3.446 F(This)
+5.797 E(insures that lines in the message containing a dot will not ter\
+minate the message prematurely)122 696 Q(.)-.65 E 15.56(zR)102 712.2 S
+.965(un Local Mail T)-15.56 F .965(ransfer Protocol \(LMTP\) between)
+-.35 F F2(sendmail)3.465 E F1 .965(and the local mailer)3.465 F 5.965
+(.T)-.55 G .965(his is a)-5.965 F -.25(va)122 724.2 S 1.752(riant on SM\
+TP de\214ned in RFC 2033 that is speci\214cally designed for deli).25 F
+-.15(ve)-.25 G 1.752(ry to a local).15 F 0 Cg EP
+%%Page: 57 53
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-57)195.86 E/F1 10/Times-Roman@0 SF(mailbox.)122 96 Q 13.89(ZA)
+102 112.2 S(pply DialDelay \(if set\) to this mailer)-13.89 E(.)-.55 E
+15(0D)102 128.4 S(on')-15 E 3.607(tl)-.18 G 1.106
+(ook up MX records for hosts sent via SMTP/LMTP)-3.607 F 6.106(.D)-1.11
+G 3.606(on)-6.106 G 1.106(ot apply)-3.606 F F0 -.25(Fa)3.606 G
+(llbackMXhost).25 E F1(either)122 140.4 Q(.)-.55 E 15(1D)102 156.6 S
+(on')-15 E 2.5(ts)-.18 G(end null characters \('\\0'\) to this mailer)
+-2.5 E(.)-.55 E 15(2D)102 172.8 S(on')-15 E 3.032(tu)-.18 G .532
+(se ESMTP e)-3.032 F -.15(ve)-.25 G 3.032(ni).15 G 3.032(fo)-3.032 G
+-.25(ff)-3.032 G .532(ered; this is useful for brok).25 F .533
+(en systems that of)-.1 F .533(fer ESMTP b)-.25 F .533(ut f)-.2 F(ail)
+-.1 E(on EHLO \(without reco)122 184.8 Q -.15(ve)-.15 G
+(ring when HELO is tried ne).15 E(xt\).)-.15 E 15(3E)102 201 S .002
+(xtend the list of characters con)-15 F -.15(ve)-.4 G .001
+(rted to =XX notation when con).15 F -.15(ve)-.4 G .001
+(rting to Quoted-Printable to).15 F .977(include those that don')122 213
+R 3.478(tm)-.18 G .978(ap cleanly between ASCII and EBCDIC.)-3.478 F
+.978(Useful if you ha)5.978 F 1.278 -.15(ve I)-.2 H(BM).15 E
+(mainframes on site.)122 225 Q 15(5I)102 241.2 S 2.717(fn)-15 G 2.717
+(oa)-2.717 G .217(liases are found for this address, pass the address t\
+hrough ruleset 5 for possible alternate)-2.717 F 2.5(resolution. This)
+122 253.2 R(is intended to forw)2.5 E(ard the mail to an alternate deli)
+-.1 E -.15(ve)-.25 G(ry spot.).15 E 15(6S)102 269.4 S
+(trip headers to se)-15 E -.15(ve)-.25 G 2.5(nb).15 G(its.)-2.5 E 15(7S)
+102 285.6 S 1.14(trip all output to se)-15 F -.15(ve)-.25 G 3.64(nb).15
+G 3.64(its. This)-3.64 F 1.14(is the def)3.64 F 1.141(ault if the)-.1 F
+F0(L)3.641 E F1 1.141(\215ag is set.)3.641 F 1.141
+(Note that clearing this)6.141 F .295(option is not suf)122 297.6 R .295
+(\214cient to get full eight bit data passed through)-.25 F/F2 10
+/Times-Italic@0 SF(sendmail)2.795 E F1 5.295(.I)C 2.795(ft)-5.295 G(he)
+-2.795 E F0(7)2.795 E F1 .295(option is set,)2.795 F .716
+(this is essentially al)122 309.6 R -.1(wa)-.1 G .717
+(ys set, since the eighth bit w).1 F .717(as stripped on input.)-.1 F
+.717(Note that this option)5.717 F(will only impact messages that didn')
+122 321.6 Q 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H(8)2.7 E/F3 10/Symbol SF
+<ae>A F1 2.5(7b)C(it MIME con)-2.5 E -.15(ve)-.4 G(rsions performed.).15
+E 15(8I)102 337.8 S 3.783(fs)-15 G 1.283(et, it is acceptable to send e\
+ight bit data to this mailer; the usual attempt to do 8)-3.783 F F3<ae>A
+F1 3.782(7b)C(it)-3.782 E(MIME con)122 349.8 Q -.15(ve)-.4 G
+(rsions will be bypassed.).15 E 15(9I)102 366 S 2.704(fs)-15 G .204
+(et, do)-2.704 F F2(limited)2.704 E F1(7)2.704 E F3<ae>A F1 2.704(8b)C
+.204(it MIME con)-2.704 F -.15(ve)-.4 G 2.704(rsions. These).15 F(con)
+2.704 E -.15(ve)-.4 G .205(rsions are limited to te).15 F .205
+(xt/plain data.)-.15 F 17.22(:C)102 382.2 S .982
+(heck addresses to see if the)-17.22 F 3.482(yb)-.15 G -.15(eg)-3.482 G
+.982(in \231:include:\232; if the).15 F 3.482(yd)-.15 G .982(o, con)
+-3.482 F -.15(ve)-.4 G .982(rt them to the \231*include*\232).15 F
+(mailer)122 394.2 Q(.)-.55 E 18(|C)102 410.4 S
+(heck addresses to see if the)-18 E 2.5(yb)-.15 G -.15(eg)-2.5 G
+(in with a `|'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G
+(rt them to the \231prog\232 mailer).15 E(.)-.55 E 17.22(/C)102 426.6 S
+(heck addresses to see if the)-17.22 E 2.5(yb)-.15 G -.15(eg)-2.5 G
+(in with a `/'; if the).15 E 2.5(yd)-.15 G(o, con)-2.5 E -.15(ve)-.4 G
+(rt them to the \231*\214le*\232 mailer).15 E(.)-.55 E 10.79(@L)102
+442.8 S(ook up addresses in the user database.)-10.79 E 11.67(%D)102 459
+S 3.382(on)-11.67 G .882(ot attempt deli)-3.382 F -.15(ve)-.25 G .883(r\
+y on initial recipient of a message or on queue runs unless the queued)
+.15 F(message is selected using one of the -qI/-qR/-qS queue run modi\
+\214ers or an ETRN request.)122 471 Q .268
+(Con\214guration \214les prior to le)127 487.2 R -.15(ve)-.25 G 2.768
+(l6a).15 G .268(ssume the `)-2.768 F -1.11(A')-.8 G 2.768(,`)1.11 G .268
+(w', `5', `:', `|', `/', and `@' options on the)-2.768 F
+(mailer named \231local\232.)102 499.2 Q .306(The mailer with the speci\
+al name \231error\232 can be used to generate a user error)127 515.4 R
+5.306(.T)-.55 G .306(he \(optional\))-5.306 F .324(host \214eld is an e)
+102 527.4 R .323(xit status to be returned, and the user \214eld is a m\
+essage to be printed.)-.15 F .323(The e)5.323 F .323(xit sta-)-.15 F
+.891(tus may be numeric or one of the v)102 539.4 R .891(alues USA)-.25
+F .891(GE, NOUSER, NOHOST)-.4 F 3.391(,U)-.74 G -.35(NA)-3.391 G -1.35
+(VA)-1 G .891(ILABLE, SOFT)1.35 F(-)-.92 E -1.2(WA)102 551.4 S 1.142
+(RE, TEMPF)1.2 F 1.142(AIL, PR)-.74 F -1.88 -.4(OT O)-.4 H 1.142
+(COL, or CONFIG to return the corresponding EX_ e).4 F 1.141
+(xit code, or an)-.15 F .288
+(enhanced error code as described in RFC 1893,)102 563.4 R F2 .288
+(Enhanced Mail System Status Codes.)2.788 F F1 -.15(Fo)5.288 G 2.788(re)
+.15 G(xample,)-2.938 E(the entry:)102 575.4 Q
+($#error $@ NOHOST $: Host unkno)142 591.6 Q(wn in this domain)-.25 E
+.145(on the RHS of a rule will cause the speci\214ed error to be genera\
+ted and the \231Host unkno)102 607.8 R .145(wn\232 e)-.25 F .145
+(xit sta-)-.15 F .491(tus to be returned if the LHS matches.)102 619.8 R
+.491(This mailer is only functional in rulesets 0, 5, or one of the)
+5.491 F 1.81(check_* rulesets.)102 631.8 R 1.81
+(The host \214eld can also contain the special tok)6.81 F(en)-.1 E F0
+(quarantine)4.31 E F1 1.81(which instructs)4.31 F
+(sendmail to quarantine the current message.)102 643.8 Q .256
+(The mailer with the special name \231discard\232 causes an)127 660 R
+2.756(ym)-.15 G .257(ail sent to it to be discarded b)-2.756 F .257
+(ut oth-)-.2 F 1.314(erwise treated as though it were successfully deli)
+102 672 R -.15(ve)-.25 G 3.813(red. This).15 F 1.313
+(mailer cannot be used in ruleset 0,)3.813 F(only in the v)102 684 Q
+(arious address checking rulesets.)-.25 E .468
+(The mailer named \231local\232)127 700.2 R F2(must)2.968 E F1 .468
+(be de\214ned in e)2.968 F -.15(ve)-.25 G .468
+(ry con\214guration \214le.).15 F .468(This is used to deli)5.468 F -.15
+(ve)-.25 G(r).15 E .25(local mail, and is treated specially in se)102
+712.2 R -.15(ve)-.25 G .25(ral w).15 F 2.75(ays. Additionally)-.1 F 2.75
+(,t)-.65 G .25(hree other mailers named \231prog\232,)-2.75 F .942(\231\
+*\214le*\232, and \231*include*\232 may be de\214ned to tune the deli)
+102 724.2 R -.15(ve)-.25 G .942
+(ry of messages to programs, \214les, and).15 F 0 Cg EP
+%%Page: 58 54
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-58 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(:include: lists respecti)102 96 Q -.15(ve)-.25 G(ly).15 E 5(.T)-.65 G
+(he)-5 E 2.5(yd)-.15 G(ef)-2.5 E(ault to:)-.1 E
+(Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh \255c $u)142
+112.2 Q
+(M*\214le*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u)142
+124.2 Q(M*include*, P=/de)142 136.2 Q(v/null, F=su, A=INCLUDE $u)-.25 E
+.466
+(Builtin pathnames are [FILE] and [IPC], the former is used for deli)127
+156.6 R -.15(ve)-.25 G .466(ry to \214les, the latter for).15 F(deli)102
+168.6 Q -.15(ve)-.25 G .12(ry via interprocess communication.).15 F -.15
+(Fo)5.12 G 2.62(rm).15 G .12(ailers that use [IPC] as pathname the ar)
+-2.62 F .12(gument v)-.18 F(ec-)-.15 E .761
+(tor \(A=\) must start with TCP or FILE for deli)102 180.6 R -.15(ve)
+-.25 G .761(ry via a TCP or a Unix domain sock).15 F 3.261(et. If)-.1 F
+.761(TCP is)3.261 F .109(used, the second ar)102 192.6 R .109
+(gument must be the name of the host to contact.)-.18 F .11
+(Optionally a third ar)5.11 F .11(gument can)-.18 F .576
+(be used to specify a port, the def)102 204.6 R .576
+(ault is smtp \(port 25\).)-.1 F .576(If FILE is used, the second ar)
+5.576 F .575(gument must)-.18 F(be the name of the Unix domain sock)102
+216.6 Q(et.)-.1 E .668(If the ar)127 232.8 R .668(gument v)-.18 F .669
+(ector does not contain $u then)-.15 F/F2 10/Times-Italic@0 SF(sendmail)
+3.169 E F1 .669(will speak SMTP \(or LMTP if the)3.169 F
+(mailer \215ag z is speci\214ed\) to the mailer)102 244.8 Q(.)-.55 E
+(If no Eol \214eld is de\214ned, then the def)127 261 Q
+(ault is "\\r\\n" for SMTP mailers and "\\n" of others.)-.1 E .616
+(The Sender and Recipient re)127 277.2 R .615
+(writing sets may either be a simple ruleset id or may be tw)-.25 F
+3.115(oi)-.1 G(ds)-3.115 E .575
+(separated by a slash; if so, the \214rst re)102 289.2 R .576
+(writing set is applied to en)-.25 F -.15(ve)-.4 G .576
+(lope addresses and the second is).15 F(applied to headers.)102 301.2 Q
+(Setting an)5 E 2.5(yv)-.15 G
+(alue to zero disables corresponding mailer)-2.75 E(-speci\214c re)-.2 E
+(writing.)-.25 E .197
+(The Directory is actually a colon-separated path of directories to try)
+127 317.4 R 5.196(.F)-.65 G .196(or e)-5.346 F .196
+(xample, the de\214ni-)-.15 F .104
+(tion \231D=$z:/\232 \214rst tries to e)102 329.4 R -.15(xe)-.15 G .104
+(cute in the recipient').15 F 2.604(sh)-.55 G .104
+(ome directory; if that is not a)-2.604 F -.25(va)-.2 G .104
+(ilable, it tries to).25 F -.15(exe)102 341.4 S .816
+(cute in the root of the \214lesystem.).15 F .816
+(This is intended to be used only on the \231prog\232 mailer)5.816 F
+3.316(,s)-.4 G(ince)-3.316 E .008(some shells \(such as)102 353.4 R F2
+(csh)2.509 E F1 2.509(\)r)C .009(efuse to e)-2.509 F -.15(xe)-.15 G .009
+(cute if the).15 F 2.509(yc)-.15 G .009
+(annot read the current directory)-2.509 F 5.009(.S)-.65 G .009
+(ince the queue)-5.009 F(directory is not normally readable by unpri)102
+365.4 Q(vile)-.25 E(ged users)-.15 E F2(csh)2.5 E F1
+(scripts as recipients can f)2.5 E(ail.)-.1 E 1.863
+(The Userid speci\214es the def)127 381.6 R 1.863
+(ault user and group id to run as, o)-.1 F -.15(ve)-.15 G 1.862
+(rriding the).15 F F0(DefaultUser)4.362 E F1 .098(option \(q.v)102 393.6
+R 2.598(.\). If)-.65 F(the)2.598 E F0(S)2.598 E F1 .098(mailer \215ag i\
+s also speci\214ed, this user and group will be set as the ef)2.598 F
+(fecti)-.25 E .398 -.15(ve u)-.25 H(id).15 E .694
+(and gid for the process.)102 405.6 R .694(This may be gi)5.694 F -.15
+(ve)-.25 G 3.194(na).15 G(s)-3.194 E F2(user:gr)3.194 E(oup)-.45 E F1
+.693(to set both the user and group id; either)3.194 F .126
+(may be an inte)102 417.6 R .127(ger or a symbolic name to be look)-.15
+F .127(ed up in the)-.1 F F2(passwd)2.627 E F1(and)2.627 E F2(gr)2.627 E
+(oup)-.45 E F1 .127(\214les respecti)2.627 F -.15(ve)-.25 G(ly).15 E
+5.127(.I)-.65 G(f)-5.127 E .782
+(only a symbolic user name is speci\214ed, the group id in the)102 429.6
+R F2(passwd)3.282 E F1 .782(\214le for that user is used as the)3.282 F
+(group id.)102 441.6 Q .545(The Charset \214eld is used when con)127
+457.8 R -.15(ve)-.4 G .545
+(rting a message to MIME; this is the character set used).15 F .466
+(in the Content-T)102 469.8 R .466(ype: header)-.8 F 5.466(.I)-.55 G
+2.966(ft)-5.466 G .466(his is not set, the)-2.966 F F0(DefaultCharset)
+2.966 E F1 .465(option is used, and if that is not)2.965 F .257
+(set, the v)102 481.8 R .257(alue \231unkno)-.25 F .257
+(wn-8bit\232 is used.)-.25 F F0 -1.2(WA)5.257 G(RNING:)1.2 E F1 .257
+(this \214eld applies to the sender')2.757 F 2.758(sm)-.55 G(ailer)
+-2.758 E 2.758(,n)-.4 G .258(ot the)-2.758 F(recipient')102 493.8 Q
+2.702(sm)-.55 G(ailer)-2.702 E 5.202(.F)-.55 G .202(or e)-5.352 F .202
+(xample, if the en)-.15 F -.15(ve)-.4 G .201
+(lope sender address lists an address on the local netw).15 F(ork)-.1 E
+.48(and the recipient is on an e)102 505.8 R .48(xternal netw)-.15 F .48
+(ork, the character set will be set from the Charset= \214eld for)-.1 F
+(the local netw)102 517.8 Q(ork mailer)-.1 E 2.5(,n)-.4 G
+(ot that of the e)-2.5 E(xternal netw)-.15 E(ork mailer)-.1 E(.)-.55 E
+.795(The T)127 534 R .795(ype= \214eld sets the type information used i\
+n MIME error messages as de\214ned by RFC)-.8 F 2.805(1894. It)102 546 R
+.305(is actually three v)2.805 F .305
+(alues separated by slashes: the MT)-.25 F .305
+(A-type \(that is, the description of ho)-.93 F(w)-.25 E .083(hosts are\
+ named\), the address type \(the description of e-mail addresses\), and\
+ the diagnostic type \(the)102 558 R .142
+(description of error diagnostic codes\).)102 570 R .142
+(Each of these must be a re)5.142 F .143(gistered v)-.15 F .143
+(alue or be)-.25 F .143(gin with \231X\255\232.)-.15 F(The def)102 582 Q
+(ault is \231dns/rfc822/smtp\232.)-.1 E 1.175(The m= \214eld speci\214e\
+s the maximum number of messages to attempt to deli)127 598.2 R -.15(ve)
+-.25 G 3.674(ro).15 G 3.674(nas)-3.674 G(ingle)-3.674 E
+(SMTP or LMTP connection.)102 610.2 Q(The def)5 E(ault is in\214nite.)
+-.1 E 1.545(The r= \214eld speci\214es the maximum number of recipients\
+ to attempt to deli)127 626.4 R -.15(ve)-.25 G 4.046(ri).15 G 4.046(nas)
+-4.046 G(ingle)-4.046 E(en)102 638.4 Q -.15(ve)-.4 G 2.5(lope. It).15 F
+(def)2.5 E(aults to 100.)-.1 E 1.052(The /= \214eld speci\214es a ne)127
+654.6 R 3.552(wr)-.25 G 1.052(oot directory for the mailer)-3.552 F
+6.052(.T)-.55 G 1.052(he path is macro e)-6.052 F 1.051(xpanded and)-.15
+F .512(then passed to the \231chroot\232 system call.)102 666.6 R .512
+(The root directory is changed before the Directory \214eld is)5.512 F
+(consulted or the uid is changed.)102 678.6 Q .561(The W)127 694.8 R
+.561(ait= \214eld speci\214es the maximum time to w)-.8 F .56
+(ait for the mailer to return after sending all)-.1 F(data to it.)102
+706.8 Q(This applies to mailers that ha)5 E .3 -.15(ve b)-.2 H(een fork)
+.15 E(ed by)-.1 E F2(sendmail)2.5 E F1(.)A 0 Cg EP
+%%Page: 59 55
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-59)195.86 E/F1 10/Times-Roman@0 SF 1.163(The Queue)127 96 R
+1.164(group= \214eld speci\214es the def)-.15 F 1.164
+(ault queue group in which recei)-.1 F -.15(ve)-.25 G 3.664(dm).15 G
+1.164(ail should be)-3.664 F 2.849(queued. This)102 108 R .349(can be o)
+2.849 F -.15(ve)-.15 G .349(rridden by other means as e).15 F .348
+(xplained in section `)-.15 F .348(`Queue Groups and Queue)-.74 F
+(Directories')102 120 Q('.)-.74 E F0 2.5(5.5. H)87 144 R 2.5<8a44>2.5 G
+(e\214ne Header)-2.5 E F1 1.135(The format of the header lines that)127
+160.2 R/F2 10/Times-Italic@0 SF(sendmail)3.636 E F1 1.136
+(inserts into the message are de\214ned by the)3.636 F F0(H)3.636 E F1
+2.5(line. The)102 172.2 R(syntax of this line is one of the follo)2.5 E
+(wing:)-.25 E F0(H)142 188.4 Q F2(hname)A F0(:)A F2(htemplate)2.5 E F0
+(H)142 208.8 Q F1([)A F0(?)A F2(m\215a)A(gs)-.1 E F0(?])A F2(hname)A F0
+(:)A F2(htemplate)2.5 E F0(H)142 229.2 Q F1([)A F0(?$)A F2({macr)A(o})
+-.45 E F0(?])A F2(hname)A F0(:)A F2(htemplate)2.5 E F1 1.058(Continuati\
+on lines in this spec are re\215ected directly into the outgoing messag\
+e.)102 245.4 R(The)6.058 E F2(htemplate)3.557 E F1(is)3.557 E(macro-e)
+102 257.4 Q 1.12(xpanded before insertion into the message.)-.15 F 1.12
+(If the)6.12 F F2(m\215a)3.62 E(gs)-.1 E F1 1.12
+(\(surrounded by question marks\))3.62 F .161(are speci\214ed, at least\
+ one of the speci\214ed \215ags must be stated in the mailer de\214niti\
+on for this header)102 269.4 R .857(to be automatically output.)102
+281.4 R .858(If a)5.858 F F2(${macr)3.358 E(o})-.45 E F1 .858
+(\(surrounded by question marks\) is speci\214ed, the header)3.358 F
+1.264(will be automatically output if the macro is set.)102 293.4 R
+1.264(The macro may be set using an)6.264 F 3.764(yo)-.15 G 3.763(ft)
+-3.764 G 1.263(he normal)-3.763 F .232(methods, including using the)102
+305.4 R F0(macr)2.732 E(o)-.18 E F1 .232(storage map in a ruleset.)2.732
+F .232(If one of these headers is in the input)5.232 F .125
+(it is re\215ected to the output re)102 317.4 R -.05(ga)-.15 G .125
+(rdless of these \215ags or macros.).05 F .124(Notice: If a)5.124 F F2
+(${macr)2.624 E(o})-.45 E F1 .124(is used to set a)2.624 F(header)102
+329.4 Q 4.308(,t)-.4 G 1.809
+(hen it is useful to add that macro to class)-4.308 F F2($={per)4.309 E
+(sistentMacr)-.1 E(os})-.45 E F1 1.809(which consists of the)4.309 F
+(macros that should be sa)102 341.4 Q -.15(ve)-.2 G 2.5(da).15 G
+(cross queue runs.)-2.5 E(Some headers ha)127 357.6 Q .3 -.15(ve s)-.2 H
+(pecial semantics that will be described later).15 E(.)-.55 E 2.711(As)
+127 373.8 S .211(econdary syntax allo)-2.711 F .211(ws v)-.25 F .211
+(alidation of headers as the)-.25 F 2.711(ya)-.15 G .211(re being read.)
+-2.711 F 1.81 -.8(To e)5.21 H .21(nable v).8 F(alidation,)-.25 E(use:)
+102 385.8 Q F0(H)142 402 Q F2(Header)A F0 2.5(:$)C(>)-2.5 E F2(Ruleset)A
+F0(H)142 414 Q F2(Header)A F0 2.5(:$)C(>+)-2.5 E F2(Ruleset)A F1 .265
+(The indicated)102 430.2 R F2(Ruleset)2.765 E F1 .265
+(is called for the speci\214ed)2.765 F F2(Header)2.765 E F1 2.765(,a)C
+.265(nd can return)-2.765 F F0($#err)2.765 E(or)-.18 E F1 .265
+(to reject or quaran-)2.765 F 1.304(tine the message or)102 442.2 R F0
+($#discard)3.804 E F1 1.304(to discard the message \(as with the other)
+3.804 F F0(check_)3.804 E F1 3.804(*r)C 3.804(ulesets\). The)-3.804 F
+3.175(ruleset recei)102 454.2 R -.15(ve)-.25 G 5.675(st).15 G 3.175
+(he header \214eld-body as ar)-5.675 F 3.176
+(gument, i.e., not the header \214eld-name; see also)-.18 F .63
+(${hdr_name} and ${currHeader}.)102 466.2 R .629
+(The header is treated as a structured \214eld, that is, te)5.63 F .629
+(xt in paren-)-.15 F .337
+(theses is deleted before processing, unless the second form)102 478.2 R
+F0($>+)2.837 E F1 .337(is used.)2.837 F .337(Note: only one ruleset can)
+5.337 F(be associated with a header;)102 490.2 Q F2(sendmail)2.5 E F1
+(will silently ignore multiple entries.)2.5 E -.15(Fo)127 506.4 S 2.5
+(re).15 G(xample, the con\214guration lines:)-2.65 E
+(HMessage-Id: $>CheckMessageId)142 522.6 Q(SCheckMessageId)142 546.6 Q
+(R< $+ @ $+)142 558.6 Q 11.06(>$)5 G 2.5(@O)-11.06 G(K)-2.5 E 52.83
+(R$* $#error)142 570.6 R($: Ille)2.5 E -.05(ga)-.15 G 2.5(lM).05 G
+(essage-Id header)-2.5 E -.1(wo)102 586.8 S(uld refuse an).1 E 2.5(ym)
+-.15 G(essage that had a Message-Id: header of an)-2.5 E 2.5(yo)-.15 G
+2.5(ft)-2.5 G(he follo)-2.5 E(wing forms:)-.25 E(Message-Id: <>)142 603
+Q(Message-Id: some te)142 615 Q(xt)-.15 E(Message-Id: <le)142 627 Q -.05
+(ga)-.15 G 2.5(lt).05 G -.15(ex)-2.5 G(t@domain> e).15 E(xtra crud)-.15
+E 3.069(Ad)102 643.2 S(ef)-3.069 E .569
+(ault ruleset that is called for headers which don')-.1 F 3.069(th)-.18
+G -2.25 -.2(av e)-3.069 H 3.069(as)3.269 G .568
+(peci\214c ruleset de\214ned for them can)-3.069 F(be speci\214ed by:)
+102 655.2 Q F0(H)142 671.4 Q F2(*)A F0 2.5(:$)C(>)-2.5 E F2(Ruleset)A F1
+(or)102 687.6 Q F0(H)142 703.8 Q F2(*)A F0 2.5(:$)C(>+)-2.5 E F2
+(Ruleset)A 0 Cg EP
+%%Page: 60 56
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-60 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(5.6. O)87 96 R 2.5<8a53>2.5
+G(et Option)-2.5 E/F1 10/Times-Roman@0 SF .962(There are a number of gl\
+obal options that can be set from a con\214guration \214le.)127 112.2 R
+.963(Options are)5.963 F .86(represented by full w)102 124.2 R .86(ords\
+; some are also representable as single characters for back compatibili\
+ty)-.1 F(.)-.65 E(The syntax of this line is:)102 136.2 Q F0(O)142 152.4
+Q/F2 10/Times-Italic@0 SF(option)7.5 E F0(=)A F2(value)A F1 .562
+(This sets option)102 168.6 R F2(option)3.062 E F1 .562(to be)3.062 F F2
+(value)3.062 E F1 5.562(.N)C .562(ote that there)-5.562 F F2(must)3.062
+E F1 .562(be a space between the letter `O' and the)3.062 F
+(name of the option.)102 180.6 Q(An older v)5 E(ersion is:)-.15 E F0(O)
+142 196.8 Q F2 1.666(ov)C(alue)-1.666 E F1 .13(where the option)102 213
+R F2(o)2.63 E F1 .13(is a single character)2.63 F 5.13(.D)-.55 G .13
+(epending on the option,)-5.13 F F2(value)2.63 E F1 .13
+(may be a string, an inte)2.63 F(ger)-.15 E(,)-.4 E 2.5(ab)102 225 S
+(oolean \(with le)-2.5 E -.05(ga)-.15 G 2.5(lv).05 G
+(alues \231t\232, \231T\232, \231f\232, or \231F\232; the def)-2.75 E
+(ault is TR)-.1 E(UE\), or a time interv)-.4 E(al.)-.25 E 1.164(All \
+\214lenames used in options should be absolute paths, i.e., starting wi\
+th '/'.)127 241.2 R(Relati)6.165 E 1.465 -.15(ve \214)-.25 H(le-).15 E
+(names most lik)102 253.2 Q
+(ely cause surprises during operation \(unless otherwise noted\).)-.1 E
+(The options supported \(with the old, one character names in brack)127
+269.4 Q(ets\) are:)-.1 E(AliasFile=)102 285.6 Q F2(spec, spec, ...)A F1
+.183([A] Specify possible alias \214le\(s\).)174 297.6 R(Each)5.182 E F2
+(spec)2.682 E F1 .182(should be in the format `)2.682 F(`)-.74 E F2
+(class)A F0(:)A F2(info)2.682 E F1 -.74('')C(where)174 309.6 Q F2(class)
+3.03 E F0(:)A F1 .531(is optional and def)3.03 F .531(aults to `)-.1 F
+(`implicit')-.74 E 3.031('. Note)-.74 F(that)3.031 E F2(info)3.031 E F1
+.531(is required for)3.031 F(all)174 321.6 Q F2(class)3.525 E F1 1.025
+(es e)B 1.025(xcept \231ldap\232.)-.15 F -.15(Fo)6.025 G 3.524(rt).15 G
+1.024(he \231ldap\232 class, if)-3.524 F F2(info)3.524 E F1 1.024
+(is not speci\214ed, a def)3.524 F(ault)-.1 E F2(info)174 333.6 Q F1
+-.25(va)2.5 G(lue is used as follo).25 E(ws:)-.25 E
+(\255k \(&\(objectClass=sendmailMT)214 349.8 Q(AAliasObject\))-.93 E
+(\(sendmailMT)226.5 361.8 Q(AAliasName=aliases\))-.93 E(\(|\(sendmailMT)
+226.5 373.8 Q -.4(AC)-.93 G(luster=${sendmailMT).4 E -.4(AC)-.93 G
+(luster}\)).4 E(\(sendmailMT)231.5 385.8 Q(AHost=$j\)\))-.93 E
+(\(sendmailMT)226.5 397.8 Q(AK)-.93 E -.15(ey)-.25 G(=%0\)\)).15 E
+(\255v sendmailMT)214 409.8 Q(AAliasV)-.93 E(alue)-1.11 E 2.305
+(Depending on ho)174 426 R(w)-.25 E F2(sendmail)4.805 E F1 2.305
+(is compiled, v)4.805 F 2.305
+(alid classes are \231implicit\232 \(search)-.25 F 1.207(through a comp\
+iled-in list of alias \214le types, for back compatibility\), \231hash\
+\232 \(if)174 438 R/F3 9/Times-Roman@0 SF(NEWDB)174 450 Q F1 .496
+(is speci\214ed\), \231btree\232 \(if)2.996 F F3(NEWDB)2.996 E F1 .496
+(is speci\214ed\), \231dbm\232 \(if)2.996 F F3(NDBM)2.996 E F1 .496
+(is speci-)2.996 F .201(\214ed\), \231stab\232 \(internal symbol table \
+\212 not normally used unless you ha)174 462 R .5 -.15(ve n)-.2 H 2.7
+(oo).15 G(ther)-2.7 E 2.785
+(database lookup\), \231sequence\232 \(use a sequence of maps pre)174
+474 R 2.786(viously declared\),)-.25 F .639(\231ldap\232 \(if)174 486 R
+F3(LD)3.139 E(APMAP)-.36 E F1 .639
+(is speci\214ed\), or \231nis\232 \(if)3.139 F F3(NIS)3.139 E F1 .638
+(is speci\214ed\).)3.139 F .638(If a list of)5.638 F F2(spec)3.138 E F1
+(s)A(are pro)174 498 Q(vided,)-.15 E F2(sendmail)2.5 E F1
+(searches them in order)2.5 E(.)-.55 E(AliasW)102 514.2 Q(ait=)-.8 E F2
+(timeout)A F1 .14([a] If set, w)174 526.2 R .14(ait up to)-.1 F F2
+(timeout)2.64 E F1 .141(\(units def)2.641 F .141
+(ault to minutes\) for an \231@:@\232 entry to e)-.1 F(xist)-.15 E .518
+(in the alias database before starting up.)174 538.2 R .517
+(If it does not appear in the)5.517 F F2(timeout)3.017 E F1(inter)3.017
+E(-)-.2 E -.25(va)174 550.2 S 2.5(li).25 G(ssue a w)-2.5 E(arning.)-.1 E
+(Allo)102 566.4 Q(wBogusHELO)-.25 E 1.104([no short name] If set, allo)
+174 578.4 R 3.604(wH)-.25 G 1.104(ELO SMTP commands that don')-3.604 F
+3.604(ti)-.18 G 1.104(nclude a host)-3.604 F 2.882(name. Setting)174
+590.4 R .382(this violates RFC 1123 section 5.2.5, b)2.882 F .381
+(ut is necessary to interoper)-.2 F(-)-.2 E .06(ate with se)174 602.4 R
+-.15(ve)-.25 G .06(ral SMTP clients.).15 F .061(If there is a v)5.06 F
+.061(alue, it is still check)-.25 F .061(ed for le)-.1 F(gitimac)-.15 E
+-.65(y.)-.15 G(AuthMaxBits=)102 618.6 Q F2(N)A F1 .698([no short name] \
+Limit the maximum encryption strength for the security layer in)5.24 F
+1.317(SMTP A)174 630.6 R 1.317(UTH \(SASL\). Def)-.55 F 1.317
+(ault is essentially unlimited.)-.1 F 1.317(This allo)6.317 F 1.318
+(ws to turn of)-.25 F(f)-.25 E .377(additional encryption in SASL if ST)
+174 642.6 R(AR)-.93 E .377(TTLS is already encrypting the communi-)-.6 F
+.179(cation, because the e)174 654.6 R .179
+(xisting encryption strength is tak)-.15 F .179
+(en into account when choos-)-.1 F .998
+(ing an algorithm for the security layer)174 666.6 R 5.998(.F)-.55 G
+.998(or e)-6.148 F .998(xample, if ST)-.15 F(AR)-.93 E .997
+(TTLS is used and)-.6 F .437
+(the symmetric cipher is 3DES, then the the k)174 678.6 R -.15(ey)-.1 G
+.437(length \(in bits\) is 168.).15 F .438(Hence set-)5.438 F(ting)174
+690.6 Q F0 -.5(Au)2.5 G(thMaxBits).5 E F1(to 168 will disable an)2.5 E
+2.5(ye)-.15 G(ncryption in SASL.)-2.5 E -1.05(AuthMechanisms [no)102
+706.8 R .687(short name] List of authentication mechanisms for A)3.188 F
+.687(UTH \(separated by spa-)-.55 F 3.048(ces\). The)174 718.8 R(adv)
+3.048 E .548
+(ertised list of authentication mechanisms will be the intersection of)
+-.15 F 0 Cg EP
+%%Page: 61 57
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-61)195.86 E/F1 10/Times-Roman@0 SF 1.126
+(this list and the list of a)174 96 R -.25(va)-.2 G 1.125
+(ilable mechanisms as determined by the Cyrus SASL).25 F(library)174 108
+Q 6.166(.I)-.65 G 3.667(fS)-6.166 G -.93(TA)-3.667 G -.6(RT).93 G 1.167
+(TLS is acti).6 F -.15(ve)-.25 G 3.667(,E).15 G(XTERN)-3.667 E 1.167
+(AL will be added to this list.)-.35 F 1.167(In that)6.167 F
+(case, the v)174 120 Q
+(alue of {cert_subject} is used as authentication id.)-.25 E 17.83
+(AuthOptions [no)102 136.2 R .836
+(short name] List of options for SMTP A)3.336 F .836
+(UTH consisting of single characters)-.55 F(with interv)174 148.2 Q
+(ening white space or commas.)-.15 E 12.78(AU)214 164.4 S(se the A)
+-12.78 E(UTH= parameter for the MAIL FR)-.55 E(OM)-.4 E
+(command only when authentication succeeded.)234 176.4 Q
+(This can be used as a w)234 188.4 Q(orkaround for brok)-.1 E(en)-.1 E
+(MT)234 200.4 Q(As that do not implement RFC 2554 correctly)-.93 E(.)
+-.65 E 15.56(ap)214 212.4 S(rotection from acti)-15.56 E .3 -.15(ve \()
+-.25 H(non-dictionary\) attacks).15 E(during authentication e)234 224.4
+Q(xchange.)-.15 E 15.56(cr)214 236.4 S
+(equire mechanisms which pass client credentials,)-15.56 E(and allo)234
+248.4 Q 2.5(wm)-.25 G(echanisms which can pass credentials)-2.5 E
+(to do so.)234 260.4 Q 15(dd)214 272.4 S(on')-15 E 2.5(tp)-.18 G
+(ermit mechanisms susceptible to passi)-2.5 E -.15(ve)-.25 G
+(dictionary attack.)234 284.4 Q 16.67(fr)214 296.4 S(equire forw)-16.67
+E(ard secrec)-.1 E 2.5(yb)-.15 G(etween sessions)-2.5 E
+(\(breaking one w)234 308.4 Q(on')-.1 E 2.5(th)-.18 G(elp break ne)-2.5
+E(xt\).)-.15 E 12.22(mr)214 320.4 S(equire mechanisms which pro)-12.22 E
+(vide mutual authentication)-.15 E(\(only a)234 332.4 Q -.25(va)-.2 G
+(ilable if using Cyrus SASL v2 or later\).).25 E 15(pd)214 344.4 S(on')
+-15 E 2.5(tp)-.18 G(ermit mechanisms susceptible to simple)-2.5 E(passi)
+234 356.4 Q .3 -.15(ve a)-.25 H(ttack \(e.g., PLAIN, LOGIN\), unless a)
+.15 E(security layer is acti)234 368.4 Q -.15(ve)-.25 G(.).15 E 15(yd)
+214 380.4 S(on')-15 E 2.5(tp)-.18 G(ermit mechanisms that allo)-2.5 E
+2.5(wa)-.25 G(non)-2.5 E(ymous login.)-.15 E(The \214rst option applies\
+ to sendmail as a client, the others to a serv)174 396.6 Q(er)-.15 E 5
+(.E)-.55 G(xample:)-5 E 2.5(OA)214 412.8 S(uthOptions=p,y)-2.5 E -.1(wo)
+174 429 S 1.346(uld disallo).1 F 3.846(wA)-.25 G 1.346(NONYMOUS as A)
+-3.846 F 1.347(UTH mechanism and w)-.55 F 1.347(ould allo)-.1 F 3.847
+(wP)-.25 G(LAIN)-3.847 E 1.789
+(and LOGIN only if a security layer \(e.g., pro)174 441 R 1.788
+(vided by ST)-.15 F(AR)-.93 E 1.788(TTLS\) is already)-.6 F(acti)174 453
+Q -.15(ve)-.25 G 5.364(.T).15 G .364(he options 'a', 'c', ')-5.364 F
+.364(d', 'f)-.5 F .364
+(', 'p', and 'y' refer to properties of the selected).55 F 1.09
+(SASL mechanisms.)174 465 R 1.089
+(Explanations of these properties can be found in the Cyrus)6.089 F
+(SASL documentation.)174 477 Q 23.39(AuthRealm [no)102 493.2 R 2.503
+(short name] The authentication realm that is passed to the Cyrus SASL)
+5.002 F(library)174 505.2 Q 5(.I)-.65 G 2.5(fn)-5 G 2.5(or)-2.5 G
+(ealm is speci\214ed,)-2.5 E F0($j)2.5 E F1(is used.)2.5 E
+(BadRcptThrottle=)102 521.4 Q/F2 10/Times-Italic@0 SF(N)A F1 1.194([no \
+short name] If set and the speci\214ed number of recipients in a single\
+ SMTP)174 533.4 R .595(transaction ha)174 545.4 R .895 -.15(ve b)-.2 H
+.596(een rejected, sleep for one second after each subsequent RCPT).15 F
+(command in that transaction.)174 557.4 Q(BlankSub=)102 573.6 Q F2(c)A
+F1 1.255([B] Set the blank substitution character to)22.47 F F2(c)3.755
+E F1 6.255(.U)C 1.255(nquoted spaces in addresses are)-6.255 F
+(replaced by this character)174 585.6 Q 5(.D)-.55 G(ef)-5 E
+(aults to space \(i.e., no change is made\).)-.1 E(CA)102 601.8 Q(CertP)
+-.4 E 21.16(ath [no)-.15 F .896(short name] P)3.396 F .897
+(ath to directory with certi\214cates of CAs.)-.15 F .897
+(This directory direc-)5.897 F 1.234(tory must contain the hashes of ea\
+ch CA certi\214cate as \214lenames \(or as links to)174 613.8 R(them\).)
+174 625.8 Q(CA)102 642 Q 23.23(CertFile [no)-.4 F 1.439(short name] Fil\
+e containing one or more CA certi\214cates; see section about)3.939 F
+(ST)174 654 Q(AR)-.93 E(TTLS for more information.)-.6 E 14.51
+(CheckAliases [n])102 670.2 R -1.11(Va)2.5 G
+(lidate the RHS of aliases when reb)1.11 E(uilding the alias database.)
+-.2 E(CheckpointInterv)102 686.4 Q(al=)-.25 E F2(N)A F1 1.297
+([C] Checkpoints the queue e)174 698.4 R -.15(ve)-.25 G(ry).15 E F2(N)
+3.797 E F1(\(def)3.797 E 1.297(ault 10\) addresses sent.)-.1 F 1.296
+(If your system)6.296 F .746(crashes during deli)174 710.4 R -.15(ve)
+-.25 G .746(ry to a lar).15 F .746(ge list, this pre)-.18 F -.15(ve)-.25
+G .746(nts retransmission to an).15 F 3.247(yb)-.15 G .747(ut the)-3.447
+F(last)174 722.4 Q F2(N)2.5 E F1(recipients.)2.5 E 0 Cg EP
+%%Page: 62 58
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-62 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(ClassF)
+102 96 Q(actor=)-.15 E/F2 10/Times-Italic@0 SF(fact)A F1 1.625
+([z] The indicated)4.29 F F2(fact)4.124 E F1 1.624
+(or is multiplied by the message class \(determined by the)B .718
+(Precedence: \214eld in the user header and the)174 108 R F0(P)3.219 E
+F1 .719(lines in the con\214guration \214le\) and)3.219 F 2.638
+(subtracted from the priority)174 120 R 7.637(.T)-.65 G 2.637
+(hus, messages with a higher Priority: will be)-7.637 F -.1(fa)174 132 S
+-.2(vo)-.1 G 2.5(red. Def).2 F(aults to 1800.)-.1 E 12.27
+(ClientCertFile [no)102 148.2 R .708(short name] File containing the ce\
+rti\214cate of the client, i.e., this certi\214cate is)3.208 F
+(used when)174 160.2 Q F2(sendmail)2.5 E F1(acts as client \(for ST)2.5
+E(AR)-.93 E(TTLS\).)-.6 E(ClientK)102 176.4 Q -.15(ey)-.25 G 13.23
+(File [no).15 F .714(short name] File containing the pri)3.215 F -.25
+(va)-.25 G .714(te k).25 F 1.014 -.15(ey b)-.1 H .714
+(elonging to the client certi\214cate).15 F(\(for ST)174 188.4 Q(AR)-.93
+E(TTLS if)-.6 E F2(sendmail)2.5 E F1(runs as client\).)2.5 E
+(ClientPortOptions=)102 204.6 Q F2(options)A F1 .355
+([O] Set client SMTP options.)174 216.6 R .355(The options are)5.355 F
+F2 -.1(ke)2.855 G(y=value)-.2 E F1 .355(pairs separated by com-)2.855 F
+2.5(mas. Kno)174 228.6 R(wn k)-.25 E -.15(ey)-.1 G 2.5(sa).15 G(re:)-2.5
+E 52.83(Port Name/number)214 244.8 R
+(of source port for connection \(def)2.5 E(aults to an)-.1 E 2.5(yf)-.15
+G(ree port\))-2.5 E 48.95(Addr Address)214 256.8 R(mask \(def)2.5 E
+(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 268.8 S 41.31
+(mily Address).15 F -.1(fa)2.5 G(mily \(def).1 E(aults to INET\))-.1 E
+21.72(SndBufSize Size)214 280.8 R(of TCP send b)2.5 E(uf)-.2 E(fer)-.25
+E 21.17(RcvBufSize Size)214 292.8 R(of TCP recei)2.5 E .3 -.15(ve b)-.25
+H(uf)-.05 E(fer)-.25 E 34.5(Modi\214er Options)214 304.8 R
+(\(\215ags\) for the client)2.5 E(The)174 321 Q F2(Addr)3.166 E F1 .666
+(ess mask may be a numeric address in dot notation or a netw)B .665
+(ork name.)-.1 F F2(Modi\214er)174 333 Q F1(can be the follo)2.5 E
+(wing character:)-.25 E 67(hu)214 349.2 S(se name of interf)-67 E
+(ace for HELO command)-.1 E 64.78(Ad)214 361.2 S(on')-64.78 E 2.5(tu)
+-.18 G(se A)-2.5 E(UTH when sending e-mail)-.55 E 66.44(Sd)214 373.2 S
+(on')-66.44 E 2.5(tu)-.18 G(se ST)-2.5 E(AR)-.93 E
+(TTLS when sending e-mail)-.6 E .763(If `)174 389.4 R(`h')-.74 E 3.263
+('i)-.74 G 3.263(ss)-3.263 G .763
+(et, the name corresponding to the outgoing interf)-3.263 F .764
+(ace address \(whether)-.1 F .431
+(chosen via the Connection parameter or the def)174 401.4 R .431
+(ault\) is used for the HELO/EHLO)-.1 F 3.617(command. Ho)174 413.4 R
+(we)-.25 E -.15(ve)-.25 G 1.917 -.4(r, t).15 H 1.118
+(he name must not start with a square brack).4 F 1.118(et and it must)
+-.1 F 1.842(contain at least one dot.)174 425.4 R 1.842
+(This is a simple test whether the name is not an IP)6.842 F .712
+(address \(in square brack)174 437.4 R .713(ets\) b)-.1 F .713
+(ut a quali\214ed hostname.)-.2 F .713(Note that multiple Client-)5.713
+F .344(PortOptions settings are allo)174 449.4 R .343
+(wed in order to gi)-.25 F .643 -.15(ve s)-.25 H .343
+(ettings for each protocol f).15 F(amily)-.1 E .315(\(e.g., one for F)
+174 461.4 R .316(amily=inet and one for F)-.15 F 2.816(amily=inet6\). A)
+-.15 F .316(restriction placed on one)2.816 F -.1(fa)174 473.4 S
+(mily only af).1 E(fects outgoing connections on that particular f)-.25
+E(amily)-.1 E(.)-.65 E 3.95(ColonOkInAddr [no)102 489.6 R 4.679
+(short name] If set, colons are acceptable in e-mail addresses \(e.g.,)
+7.18 F 3.54(\231host:user\232\). If)174 501.6 R 1.04
+(not set, colons indicate the be)3.54 F 1.04
+(ginning of a RFC 822 group con-)-.15 F 1.988
+(struct \(\231groupname: member1, member2, ... memberN;\232\).)174 513.6
+R 1.987(Doubled colons are)6.987 F(al)174 525.6 Q -.1(wa)-.1 G 2.215(ys\
+ acceptable \(\231nodename::user\232\) and proper route-addr nesting is\
+ under).1 F(-)-.2 E 1.037(stood \(\231<@relay:user@host>\232\).)174
+537.6 R 1.037(Furthermore, this option def)6.037 F 1.036
+(aults on if the con-)-.1 F .853(\214guration v)174 549.6 R .853
+(ersion le)-.15 F -.15(ve)-.25 G 3.353(li).15 G 3.353(sl)-3.353 G .853
+(ess than 6 \(for back compatibility\).)-3.353 F(Ho)5.854 E(we)-.25 E
+-.15(ve)-.25 G 1.654 -.4(r, i).15 H 3.354(tm).4 G(ust)-3.354 E(be of)174
+561.6 Q 2.5(ff)-.25 G(or full compatibility with RFC 822.)-2.5 E
+(ConnectionCacheSize=)102 577.8 Q F2(N)A F1 .242([k] The maximum number\
+ of open connections that will be cached at a time.)174 589.8 R(The)
+5.242 E(def)174 601.8 Q .385(ault is one.)-.1 F .386
+(This delays closing the current connection until either this in)5.386 F
+-.2(vo)-.4 G(ca-).2 E 1.192(tion of)174 613.8 R F2(sendmail)3.692 E F1
+1.191(needs to connect to another host or it terminates.)3.692 F 1.191
+(Setting it to)6.191 F 2.046(zero def)174 625.8 R 2.046
+(aults to the old beha)-.1 F(vior)-.2 E 4.546(,t)-.4 G 2.047
+(hat is, connections are closed immediately)-4.546 F(.)-.65 E .266(Sinc\
+e this consumes \214le descriptors, the connection cache should be k)174
+637.8 R .265(ept small: 4)-.1 F(is probably a practical maximum.)174
+649.8 Q(ConnectionCacheT)102 666 Q(imeout=)-.35 E F2(timeout)A F1 .708(\
+[K] The maximum amount of time a cached connection will be permitted to\
+ idle)174 678 R 1.083(without acti)174 690 R(vity)-.25 E 6.083(.I)-.65 G
+3.583(ft)-6.083 G 1.083(his time is e)-3.583 F 1.082
+(xceeded, the connection is immediately closed.)-.15 F .417(This v)174
+702 R .418(alue should be small \(on the order of ten minutes\).)-.25 F
+(Before)5.418 E F2(sendmail)2.918 E F1 .418(uses a)2.918 F .508
+(cached connection, it al)174 714 R -.1(wa)-.1 G .507
+(ys sends a RSET command to check the connection; if).1 F 0 Cg EP
+%%Page: 63 59
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-63)195.86 E/F1 10/Times-Roman@0 SF .401(this f)174 96 R .401
+(ails, it reopens the connection.)-.1 F .401(This k)5.401 F .402
+(eeps your end from f)-.1 F .402(ailing if the other)-.1 F 1.545
+(end times out.)174 108 R 1.545
+(The point of this option is to be a good netw)6.545 F 1.544
+(ork neighbor and)-.1 F -.2(avo)174 120 S(id using up e).2 E(xcessi)-.15
+E .3 -.15(ve r)-.25 H(esources on the other end.).15 E(The def)5 E
+(ault is \214v)-.1 E 2.5(em)-.15 G(inutes.)-2.5 E(ConnectOnlyT)102 136.2
+Q(o=)-.8 E/F2 10/Times-Italic@0 SF(addr)A(ess)-.37 E F1 .861
+([no short name] This can be used to o)174 148.2 R -.15(ve)-.15 G .862
+(rride the connection address \(for testing).15 F(purposes\).)174 160.2
+Q(ConnectionRateThrottle=)102 176.4 Q F2(N)A F1 .212
+([no short name] If set to a positi)174 188.4 R .511 -.15(ve v)-.25 H
+.211(alue, allo)-.1 F 2.711(wn)-.25 G 2.711(om)-2.711 G .211(ore than)
+-2.711 F F2(N)2.711 E F1 .211(incoming connec-)2.711 F .132
+(tions in a one second period per daemon.)174 200.4 R .132
+(This is intended to \215atten out peaks and)5.132 F(allo)174 212.4 Q
+2.5(wt)-.25 G(he load a)-2.5 E -.15(ve)-.2 G(rage checking to cut in.)
+.15 E(Def)5 E(aults to zero \(no limits\).)-.1 E(ConnectionRateW)102
+228.6 Q(indo)-.4 E(wSize=)-.25 E F2(N)A F1 .459
+([no short name] De\214ne the length of the interv)174 240.6 R .458
+(al for which the number of incom-)-.25 F
+(ing connections is maintained.)174 252.6 Q(The def)5 E
+(ault is 60 seconds.)-.1 E(ControlSock)102 268.8 Q(etName=)-.1 E F2
+(name)A F1 .476([no short name] Name of the control sock)174 280.8 R
+.477(et for daemon management.)-.1 F 2.977(Ar)5.477 G(unning)-2.977 E F2
+(sendmail)174 292.8 Q F1 1.225
+(daemon can be controlled through this named sock)3.725 F 3.725(et. A)
+-.1 F -.25(va)-.74 G 1.225(ilable com-).25 F 2.926(mands are:)174 304.8
+R F2 2.926(help, mstat, r)5.426 F 2.926(estart, shutdown,)-.37 F F1(and)
+5.426 E F2(status.)5.426 E F1(The)7.926 E F2(status)5.426 E F1(command)
+5.426 E .46(returns the current number of daemon children, the maximum \
+number of daemon)174 316.8 R .449
+(children, the free disk space \(in blocks\) of the queue directory)174
+328.8 R 2.95(,a)-.65 G .45(nd the load a)-2.95 F -.15(ve)-.2 G -.2(r-)
+.15 G .883(age of the machine e)174 340.8 R .883(xpressed as an inte)
+-.15 F(ger)-.15 E 5.883(.I)-.55 G 3.383(fn)-5.883 G .882
+(ot set, no control sock)-3.383 F .882(et will be)-.1 F -.2(av)174 352.8
+S 5.029(ailable. Solaris)-.05 F 2.529(and pre-4.4BSD k)5.029 F 2.529
+(ernel users should see the note in send-)-.1 F(mail/README .)174 364.8
+Q(CRLFile=)102 381 Q F2(name)A F1 .483
+([no short name] Name of \214le that contains certi\214cate re)9.69 F
+-.2(vo)-.25 G .482(cation status, useful for).2 F .792
+(X.509v3 authentication.)174 393 R .792
+(CRL checking requires at least OpenSSL v)5.792 F .793(ersion 0.9.7.)
+-.15 F(Note: if a CRLFile is speci\214ed b)174 405 Q
+(ut the \214le is unusable, ST)-.2 E(AR)-.93 E(TTLS is disabled.)-.6 E
+(DHP)102 421.2 Q 10.78(arameters File)-.15 F 1.149
+(with DH parameters for ST)3.65 F(AR)-.93 E 3.649(TTLS. This)-.6 F 1.149
+(is only required if a ciphersuite)3.649 F 1.025
+(containing DSA/DH is used.)174 433.2 R 1.025
+(This is only for people with a good kno)6.025 F 1.026(wledge of)-.25 F
+(TLS, all others can ignore this option.)174 445.2 Q(DaemonPortOptions=)
+102 461.4 Q F2(options)A F1 .364([O] Set serv)174 473.4 R .364
+(er SMTP options.)-.15 F .364(Each instance of)5.364 F F0(DaemonP)2.863
+E(ortOptions)-.2 E F1 .363(leads to an)2.863 F(additional incoming sock)
+174 485.4 Q 2.5(et. The)-.1 F(options are)2.5 E F2 -.1(ke)2.5 G(y=value)
+-.2 E F1 2.5(pairs. Kno)2.5 F(wn k)-.25 E -.15(ey)-.1 G 2.5(sa).15 G
+(re:)-2.5 E 45.62(Name User)214 501.6 R
+(-de\214nable name for the daemon \(def)-.2 E(aults to "Daemon#"\))-.1 E
+52.83(Port Name/number)214 513.6 R(of listening port \(def)2.5 E
+(aults to "smtp"\))-.1 E 48.95(Addr Address)214 525.6 R(mask \(def)2.5 E
+(aults IN)-.1 E(ADDR_ANY\))-.35 E -.15(Fa)214 537.6 S 41.31
+(mily Address).15 F -.1(fa)2.5 G(mily \(def).1 E(aults to INET\))-.1 E
+3.94(InputMailFilters List)214 549.6 R
+(of input mail \214lters for the daemon)2.5 E 44.5(Listen Size)214 561.6
+R(of listen queue \(def)2.5 E(aults to 10\))-.1 E 34.5
+(Modi\214er Options)214 573.6 R(\(\215ags\) for the daemon)2.5 E 21.72
+(SndBufSize Size)214 585.6 R(of TCP send b)2.5 E(uf)-.2 E(fer)-.25 E
+21.17(RcvBufSize Size)214 597.6 R(of TCP recei)2.5 E .3 -.15(ve b)-.25 H
+(uf)-.05 E(fer)-.25 E 36.73(children maximum)214 609.6 R
+(number of children per daemon, see)2.5 E F0(MaxDaemonChildr)2.5 E(en)
+-.18 E F1(.)A(Deli)214 621.6 Q -.15(ve)-.25 G 11.58(ryMode Deli).15 F
+-.15(ve)-.25 G(ry mode per daemon, see).15 E F0(Deli)2.5 E -.1(ve)-.1 G
+(ryMode).1 E F1(.)A 31.74(refuseLA RefuseLA)214 633.6 R(per daemon)2.5 E
+34.51(delayLA DelayLA)214 645.6 R(per daemon)2.5 E 32.29
+(queueLA QueueLA)214 657.6 R(per daemon)2.5 E(The)174 673.8 Q F2(Name)
+2.68 E F1 -.1(ke)2.68 G 2.68(yi)-.05 G 2.68(su)-2.68 G .181
+(sed for error messages and logging.)-2.68 F(The)5.181 E F2(Addr)2.681 E
+F1 .181(ess mask may be)B 2.908(an)174 685.8 S .407
+(umeric address in dot notation or a netw)-2.908 F .407(ork name.)-.1 F
+(The)5.407 E F2 -.75(Fa)2.907 G(mily).75 E F1 -.1(ke)2.907 G 2.907(yd)
+-.05 G(ef)-2.907 E .407(aults to)-.1 F 1.16(INET \(IPv4\).)174 697.8 R
+1.161(IPv6 users who wish to also accept IPv6 connections should add)
+6.16 F 2.215(additional F)174 709.8 R(amily=inet6)-.15 E F0(DaemonP)
+4.715 E(ortOptions)-.2 E F1 4.715(lines. The)4.715 F F2(InputMailF)4.715
+E(ilter)-.45 E(s)-.1 E F1 -.1(ke)4.715 G(y)-.05 E -.15(ove)174 721.8 S
+.01(rrides the def).15 F .01
+(ault list of input mail \214lters listed in the)-.1 F F0
+(InputMailFilters)2.51 E F1(option.)2.51 E 0 Cg EP
+%%Page: 64 60
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-64 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.011
+(If multiple input mail \214lters are required, the)174 96 R 3.511(ym)
+-.15 G 1.011(ust be separated by semicolons)-3.511 F .177
+(\(not commas\).)174 108 R/F2 10/Times-Italic@0 SF(Modi\214er)5.177 E F1
+.177(can be a sequence \(without an)2.677 F 2.678(yd)-.15 G .178
+(elimiters\) of the follo)-2.678 F(w-)-.25 E(ing characters:)174 120 Q
+67.56(aa)214 136.2 S -.1(lwa)-67.56 G(ys require authentication).1 E 67
+(bb)214 148.2 S(ind to interf)-67 E
+(ace through which mail has been recei)-.1 E -.15(ve)-.25 G(d).15 E
+67.56(cp)214 160.2 S(erform hostname canoni\214cation \(.cf\))-67.56 E
+68.67(fr)214 172.2 S(equire fully quali\214ed hostname \(.cf\))-68.67 E
+68.11(sR)214 184.2 S(un smtps \(SMTP o)-68.11 E -.15(ve)-.15 G 2.5(rS)
+.15 G(SL\) instead of smtp)-2.5 E 67(ua)214 196.2 S(llo)-67 E 2.5(wu)
+-.25 G(nquali\214ed addresses \(.cf\))-2.5 E 64.78(Ad)214 208.2 S
+(isable A)-64.78 E(UTH \(o)-.55 E -.15(ve)-.15 G
+(rrides 'a' modi\214er\)).15 E 65.33(Cd)214 220.2 S(on')-65.33 E 2.5(tp)
+-.18 G(erform hostname canoni\214cation)-2.5 E 65.89(Ed)214 232.2 S
+(isallo)-65.89 E 2.5(wE)-.25 G(TRN \(see RFC 2476\))-2.5 E 64.78(Oo)214
+244.2 S(ptional; if opening the sock)-64.78 E(et f)-.1 E(ails ignore it)
+-.1 E 66.44(Sd)214 256.2 S(on')-66.44 E 2.5(to)-.18 G -.25(ff)-2.5 G
+(er ST).25 E(AR)-.93 E(TTLS)-.6 E 2.413(That is, one w)174 272.4 R 2.412
+(ay to specify a message submission agent \(MSA\) that al)-.1 F -.1(wa)
+-.1 G(ys).1 E(requires authentication is:)174 284.4 Q 2.5(OD)214 300.6 S
+(aemonPortOptions=Name=MSA, Port=587, M=Ea)-2.5 E .243
+(The modi\214ers that are mark)174 316.8 R .244(ed with "\(.cf\)" ha)-.1
+F .544 -.15(ve o)-.2 H .244(nly ef).15 F .244
+(fect in the standard con\214g-)-.25 F .16(uration \214le, in which the)
+174 328.8 R 2.66(ya)-.15 G .16(re a)-2.66 F -.25(va)-.2 G .16
+(ilable via).25 F F0(${daemon_\215ags})2.66 E F1 5.16(.N)C .16
+(otice: Do)-5.16 F F0(not)2.66 E F1(use)2.66 E .46(the `)174 340.8 R
+(`a')-.74 E 2.96('m)-.74 G .46(odi\214er on a public accessible MT)-2.96
+F 2.961(A! It)-.93 F .461(should only be used for a MSA)2.961 F 2.553
+(that is accessed by authorized users for initial mail submission.)174
+352.8 R 2.552(Users must)7.552 F 1.141
+(authenticate to use a MSA which has this option turned on.)174 364.8 R
+1.141(The \215ags `)6.141 F(`c')-.74 E 3.641('a)-.74 G(nd)-3.641 E -.74
+(``)174 376.8 S(C').74 E 3.786('c)-.74 G 1.286(an change the def)-3.786
+F 1.285(ault for hostname canoni\214cation in the)-.1 F F2(sendmail.cf)
+3.785 E F1(\214le.)3.785 E .764(See the rele)174 388.8 R -.25(va)-.25 G
+.765(nt documentation for).25 F/F3 9/Times-Roman@0 SF(FEA)3.265 E
+(TURE\(nocanonify\))-.999 E F1 5.765(.T)C .765(he modi\214er `)-5.765 F
+-1.95(`f ')-.74 F 3.265('d)-.74 G(is-)-3.265 E(allo)174 400.8 Q .795
+(ws addresses of the form)-.25 F F0(user@host)3.295 E F1 .794
+(unless the)3.295 F 3.294(ya)-.15 G .794(re submitted directly)-3.294 F
+5.794(.T)-.65 G(he)-5.794 E 2.127(\215ag `)174 412.8 R(`u')-.74 E 4.627
+('a)-.74 G(llo)-4.627 E 2.127
+(ws unquali\214ed sender addresses, i.e., those without @host.)-.25 F
+-.74(``)7.127 G(b').74 E(')-.74 E 2.791
+(forces sendmail to bind to the interf)174 424.8 R 2.791
+(ace through which the e-mail has been)-.1 F(recei)174 436.8 Q -.15(ve)
+-.25 G 4.369(df).15 G 1.869(or the outgoing connection.)-4.369 F F0 -1.2
+(WA)6.869 G(RNING:)1.2 E F1 1.869(Use `)4.369 F(`b')-.74 E 4.369('o)-.74
+G 1.869(nly if outgoing)-4.369 F .517
+(mail can be routed through the incoming connection')174 448.8 R 3.017
+(si)-.55 G(nterf)-3.017 E .517(ace to its destination.)-.1 F .119(No at\
+tempt is made to catch problems due to a miscon\214guration of this par\
+ameter)174 460.8 R(,)-.4 E 1.177
+(use it only for virtual hosting where each virtual interf)174 472.8 R
+1.177(ace can connect to e)-.1 F -.15(ve)-.25 G(ry).15 E 2.001
+(possible location.)174 484.8 R 2.001(This will also o)7.001 F -.15(ve)
+-.15 G 2.001(rride possible settings via).15 F F0(ClientP)4.502 E
+(ortOp-)-.2 E(tions.)174 496.8 Q F1(Note,)5.487 E F2(sendmail)2.987 E F1
+.487(will listen on a ne)2.987 F 2.986(ws)-.25 G(ock)-2.986 E .486
+(et for each occurence of the)-.1 F F0(Dae-)2.986 E(monP)174 508.8 Q
+(ortOptions)-.2 E F1 .838(option in a con\214guration \214le.)3.338 F
+.838(The modi\214er `)5.838 F(`O')-.74 E 3.338('c)-.74 G .838
+(auses send-)-3.338 F 1.418(mail to ignore a sock)174 520.8 R 1.417
+(et if it can')-.1 F 3.917(tb)-.18 G 3.917(eo)-3.917 G 3.917
+(pened. This)-3.917 F 1.417(applies to f)3.917 F 1.417(ailures from the)
+-.1 F(sock)174 532.8 Q(et\(2\) and bind\(2\) calls.)-.1 E(Def)102 549 Q
+2.95(aultAuthInfo [no)-.1 F .181(short name] Filename that contains def)
+2.681 F .181(ault authentication information for out-)-.1 F 1.738(going\
+ connections. This \214le must contain the user id, the authorization i\
+d, the)174 561 R(passw)174 573 Q 1.561(ord \(plain te)-.1 F 1.562
+(xt\), the realm and the list of mechanisms to use on separate)-.15 F
+.288(lines and must be readable by root \(or the trusted user\) only)174
+585 R 5.287(.I)-.65 G 2.787(fn)-5.287 G 2.787(or)-2.787 G .287
+(ealm is speci-)-2.787 F(\214ed,)174 597 Q F0($j)3.704 E F1 1.204
+(is used.)3.704 F 1.205(If no mechanisms are speci\214ed, the list gi)
+6.204 F -.15(ve)-.25 G 3.705(nb).15 G(y)-3.705 E F0 -.5(Au)3.705 G
+(thMecha-).5 E(nisms)174 609 Q F1 1.372(is used.)3.872 F 1.372
+(Notice: this option is deprecated and will be remo)6.372 F -.15(ve)-.15
+G 3.871(di).15 G 3.871(nf)-3.871 G(uture)-3.871 E -.15(ve)174 621 S 3.41
+(rsions. Moreo).15 F -.15(ve)-.15 G 1.71 -.4(r, i).15 H 3.41(td).4 G
+(oesn')-3.41 E 3.41(tw)-.18 G .911(ork for the MSP since it can')-3.51 F
+3.411(tr)-.18 G .911(ead the \214le \(the)-3.411 F .014
+(\214le must not be group/w)174 633 R .014(orld-readable otherwise)-.1 F
+F2(sendmail)2.514 E F1 .014(will complain\).)2.514 F .014(Use the)5.014
+F 1.2(authinfo ruleset instead which pro)174 645 R 1.2
+(vides more control o)-.15 F -.15(ve)-.15 G 3.7(rt).15 G 1.2
+(he usage of the data)-3.7 F(an)174 657 Q(yw)-.15 E(ay)-.1 E(.)-.65 E
+(Def)102 673.2 Q(aultCharSet=)-.1 E F2 -.15(ch)C(ar).15 E(set)-.1 E F1
+.161([no short name] When a message that has 8-bit characters b)174
+685.2 R .16(ut is not in MIME for)-.2 F(-)-.2 E .494(mat is con)174
+697.2 R -.15(ve)-.4 G .495
+(rted to MIME \(see the EightBitMode option\) a character set must be)
+.15 F .488(included in the Content-T)174 709.2 R .488(ype: header)-.8 F
+5.488(.T)-.55 G .487(his character set is normally set from the)-5.488 F
+.133(Charset= \214eld of the mailer descriptor)174 721.2 R 5.133(.I)-.55
+G 2.633(ft)-5.133 G .133(hat is not set, the v)-2.633 F .133
+(alue of this option is)-.25 F 0 Cg EP
+%%Page: 65 61
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-65)195.86 E/F1 10/Times-Roman@0 SF 2.5(used. If)174 96 R
+(this option is not set, the v)2.5 E(alue \231unkno)-.25 E
+(wn-8bit\232 is used.)-.25 E(DataFileBuf)102 112.2 Q(ferSize=)-.25 E/F2
+10/Times-Italic@0 SF(thr)A(eshold)-.37 E F1 .012
+([no short name] Set the)174 124.2 R F2(thr)2.512 E(eshold)-.37 E F1
+2.512(,i)C 2.512(nb)-2.512 G .011
+(ytes, before a memory-based queue data \214le)-2.512 F
+(becomes disk-based.)174 136.2 Q(The def)5 E(ault is 4096 bytes.)-.1 E
+(DeadLetterDrop=)102 152.4 Q F2(\214le)A F1 .535([no short name] De\214\
+nes the location of the system-wide dead.letter \214le, formerly)174
+164.4 R .744(hardcoded to /usr/tmp/dead.letter)174 176.4 R 5.744(.I)-.55
+G 3.244(ft)-5.744 G .744(his option is not set \(the def)-3.244 F .743
+(ault\), sendmail)-.1 F 1.464(will not attempt to sa)174 188.4 R 1.764
+-.15(ve t)-.2 H 3.964(oas).15 G 1.464
+(ystem-wide dead.letter \214le in the e)-3.964 F -.15(ve)-.25 G 1.465
+(nt it cannot).15 F .575(bounce the mail to the user or postmaster)174
+200.4 R 5.575(.I)-.55 G .575(nstead, it will rename the qf \214le as it)
+-5.575 F
+(has in the past when the dead.letter \214le could not be opened.)174
+212.4 Q(Def)102 228.6 Q(aultUser=)-.1 E F2(user:gr)A(oup)-.45 E F1 .013
+([u] Set the def)174 240.6 R .013(ault userid for mailers to)-.1 F F2
+(user:gr)2.513 E(oup)-.45 E F1 5.013(.I)C(f)-5.013 E F2(gr)2.513 E(oup)
+-.45 E F1 .014(is omitted and)2.514 F F2(user)2.514 E F1(is)2.514 E
+4.307(au)174 252.6 S 1.807
+(ser name \(as opposed to a numeric user id\) the def)-4.307 F 1.806
+(ault group listed in the)-.1 F 1.153
+(/etc/passwd \214le for that user is used as the def)174 264.6 R 1.153
+(ault group.)-.1 F(Both)6.153 E F2(user)3.653 E F1(and)3.653 E F2(gr)
+3.653 E(oup)-.45 E F1 1.153(may be numeric.)174 276.6 R 1.152
+(Mailers without the)6.152 F F2(S)3.652 E F1 1.152
+(\215ag in the mailer de\214nition will run as)3.652 F .142(this user)
+174 290.6 R 5.142(.D)-.55 G(ef)-5.142 E .142(aults to 1:1.)-.1 F .142
+(The v)5.142 F .142(alue can also be gi)-.25 F -.15(ve)-.25 G 2.642(na)
+.15 G 2.642(sas)-2.642 G .142(ymbolic user name.)-2.642 F/F3 7
+/Times-Roman@0 SF(19)-4 I F1(DelayLA=)102 306.8 Q F2(LA)A F1 .996
+([no short name] When the system load a)17.48 F -.15(ve)-.2 G .996
+(rage e).15 F(xceeds)-.15 E F2(LA)3.496 E F1(,)A F2(sendmail)3.496 E F1
+.995(will sleep)3.495 F
+(for one second on most SMTP commands and before accepting connections.)
+174 318.8 Q(Deli)102 335 Q -.15(ve)-.25 G(rByMin=).15 E F2(time)A F1
+.202([0] Set minimum time for Deli)174 347 R -.15(ve)-.25 G 2.702(rB).15
+G 2.702(yS)-2.702 G .202(MTP Service Extension \(RFC 2852\).)-2.702 F
+.203(If 0,)5.203 F .487(no time is listed, if less than 0, the e)174 359
+R .487(xtension is not of)-.15 F .486(fered, if greater than 0, it is)
+-.25 F(listed as minimum time for the EHLO k)174 371 Q -.15(ey)-.1 G -.1
+(wo).15 G(rd DELIVERBY).1 E(.)-1.29 E(Deli)102 387.2 Q -.15(ve)-.25 G
+(ryMode=).15 E F2(x)A F1([d] Deli)4 E -.15(ve)-.25 G 2.5(ri).15 G 2.5
+(nm)-2.5 G(ode)-2.5 E F2(x)2.5 E F1 5(.L)C -2.25 -.15(eg a)-5 H 2.5(lm)
+.15 G(odes are:)-2.5 E 17.22(iD)214 403.4 S(eli)-17.22 E -.15(ve)-.25 G
+2.5(ri).15 G(nteracti)-2.5 E -.15(ve)-.25 G(ly \(synchronously\)).15 E
+15(bD)214 415.4 S(eli)-15 E -.15(ve)-.25 G 2.5(ri).15 G 2.5(nb)-2.5 G
+(ackground \(asynchronously\))-2.5 E 15(qJ)214 427.4 S
+(ust queue the message \(deli)-15 E -.15(ve)-.25 G 2.5(rd).15 G
+(uring queue run\))-2.5 E 15(dD)214 439.4 S(efer deli)-15 E -.15(ve)-.25
+G(ry and all map lookups \(deli).15 E -.15(ve)-.25 G 2.5(rd).15 G
+(uring queue run\))-2.5 E(Def)174 455.6 Q .711(aults to `)-.1 F(`b')-.74
+E 3.211('i)-.74 G 3.211(fn)-3.211 G 3.211(oo)-3.211 G .711
+(ption is speci\214ed, `)-3.211 F(`i')-.74 E 3.211('i)-.74 G 3.211(fi)
+-3.211 G 3.211(ti)-3.211 G 3.211(ss)-3.211 G .712(peci\214ed b)-3.211 F
+.712(ut gi)-.2 F -.15(ve)-.25 G 3.212(nn).15 G 3.212(oa)-3.212 G -.18
+(rg)-3.212 G(u-).18 E .094(ment \(i.e., `)174 467.6 R(`Od')-.74 E 2.594
+('i)-.74 G 2.594(se)-2.594 G(qui)-2.594 E -.25(va)-.25 G .094(lent to `)
+.25 F(`Odi')-.74 E 2.594('\). The)-.74 F F0<ad76>2.594 E F1 .094
+(command line \215ag sets this to)2.594 F F0(i)2.594 E F1(.)A 1.526
+(Note: for internal reasons, `)174 479.6 R(`i')-.74 E 4.026('d)-.74 G
+1.526(oes not w)-4.026 F 1.527(ork if a milter is enabled which can)-.1
+F(reject or delete recipients.)174 491.6 Q
+(In that case the mode will be changed to `)5 E(`b')-.74 E('.)-.74 E
+(DialDelay=)102 507.8 Q F2(sleeptime)A F1 .799
+([no short name] Dial-on-demand netw)174 519.8 R .798
+(ork connections can see timeouts if a con-)-.1 F .665
+(nection is opened before the call is set up.)174 531.8 R .665
+(If this is set to an interv)5.665 F .665(al and a con-)-.25 F .743
+(nection times out on the \214rst connection being attempted)174 543.8 R
+F2(sendmail)3.242 E F1 .742(will sleep for)3.242 F .31
+(this amount of time and try ag)174 555.8 R 2.81(ain. This)-.05 F .31
+(should gi)2.81 F .61 -.15(ve y)-.25 H .31(our system time to establish)
+.15 F 1.543(the connection to your service pro)174 567.8 R(vider)-.15 E
+6.543(.U)-.55 G 1.543(nits def)-6.543 F 1.542
+(ault to seconds, so \231DialDe-)-.1 F 1.798(lay=5\232 uses a \214v)174
+579.8 R 4.298(es)-.15 G 1.798(econd delay)-4.298 F 6.798(.D)-.65 G(ef)
+-6.798 E 1.799(aults to zero \(no retry\).)-.1 F 1.799(This delay only)
+6.799 F(applies to mailers which ha)174 591.8 Q .3 -.15(ve t)-.2 H
+(he Z \215ag set.).15 E(DirectSubmissionModi\214ers=)102 608 Q F2
+(modi\214er)A(s)-.1 E F1(De\214nes)174 620 Q F0(${daemon_\215ags})5.084
+E F1 2.583(for direct \(command line\) submissions.)5.084 F 2.583
+(If not set,)7.583 F F0(${daemon_\215ags})174 632 Q F1 1.416
+(is either "CC f" if the option)3.916 F F0<ad47>3.916 E F1 1.417
+(is used or "c u" otherwise.)3.917 F
+(Note that only the the "CC", "c", "f", and "u" \215ags are check)174
+644 Q(ed.)-.1 E(DontBlameSendmail=)102 660.2 Q F2(option,option,...)A F1
+.065([no short name] In order to a)174 672.2 R -.2(vo)-.2 G .064
+(id possible cracking attempts caused by w).2 F .064(orld- and)-.1 F .32
+LW 76 681.8 72 681.8 DL 80 681.8 76 681.8 DL 84 681.8 80 681.8 DL 88
+681.8 84 681.8 DL 92 681.8 88 681.8 DL 96 681.8 92 681.8 DL 100 681.8 96
+681.8 DL 104 681.8 100 681.8 DL 108 681.8 104 681.8 DL 112 681.8 108
+681.8 DL 116 681.8 112 681.8 DL 120 681.8 116 681.8 DL 124 681.8 120
+681.8 DL 128 681.8 124 681.8 DL 132 681.8 128 681.8 DL 136 681.8 132
+681.8 DL 140 681.8 136 681.8 DL 144 681.8 140 681.8 DL 148 681.8 144
+681.8 DL 152 681.8 148 681.8 DL 156 681.8 152 681.8 DL 160 681.8 156
+681.8 DL 164 681.8 160 681.8 DL 168 681.8 164 681.8 DL 172 681.8 168
+681.8 DL 176 681.8 172 681.8 DL 180 681.8 176 681.8 DL 184 681.8 180
+681.8 DL 188 681.8 184 681.8 DL 192 681.8 188 681.8 DL 196 681.8 192
+681.8 DL 200 681.8 196 681.8 DL 204 681.8 200 681.8 DL 208 681.8 204
+681.8 DL 212 681.8 208 681.8 DL 216 681.8 212 681.8 DL/F4 5
+/Times-Roman@0 SF(19)93.6 692.2 Q/F5 8/Times-Roman@0 SF(The old)3.2 I/F6
+8/Times-Bold@0 SF(g)2 E F5(option has been combined into the)2 E F6
+(DefaultUser)2 E F5(option.)2 E 0 Cg EP
+%%Page: 66 62
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-66 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .254
+(group-writable \214les and directories,)174 96 R/F2 10/Times-Italic@0
+SF(sendmail)2.754 E F1 .255(does paranoid checking when open-)2.754 F
+.298(ing most of its support \214les.)174 108 R .297
+(If for some reason you absolutely must run with, for)5.297 F -.15(ex)
+174 120 S .176(ample, a group-writable).15 F F2(/etc)2.677 E F1
+(directory)2.677 E 2.677(,t)-.65 G .177(hen you will ha)-2.677 F .477
+-.15(ve t)-.2 H 2.677(ot).15 G .177(urn of)-2.677 F 2.677(ft)-.25 G .177
+(his check-)-2.677 F .794
+(ing \(at the cost of making your system more vulnerable to attack\).)
+174 132 R .793(The possible)5.793 F(ar)174 144 Q 1.394(guments ha)-.18 F
+1.694 -.15(ve b)-.2 H 1.394(een described earlier).15 F 6.394(.T)-.55 G
+1.395(he details of these \215ags are described)-6.394 F(abo)174 156 Q
+-.15(ve)-.15 G(.).15 E F0(Use of this option is not r)5 E(ecommended.)
+-.18 E F1(DontExpandCnames)102 172.2 Q .559([no short name] The standar\
+ds say that all host addresses used in a mail message)174 184.2 R 1.407
+(must be fully canonical.)174 196.2 R -.15(Fo)6.407 G 3.907(re).15 G
+1.407(xample, if your host is named \231Cruft.F)-4.057 F(oo.ORG\232)-.15
+E 1.462(and also has an alias of \231FTP)174 208.2 R(.F)-1.11 E 1.462
+(oo.ORG\232, the former name must be used at all)-.15 F 2.63
+(times. This)174 220.2 R .131
+(is enforced during host name canoni\214cation \($[ ... $] lookups\).)
+2.63 F .131(If this)5.131 F .662(option is set, the protocols are ignor\
+ed and the \231wrong\232 thing is done.)174 232.2 R(Ho)5.661 E(we)-.25 E
+-.15(ve)-.25 G -.4(r,).15 G .871(the IETF is mo)174 244.2 R .871
+(ving to)-.15 F -.1(wa)-.25 G .872
+(rd changing this standard, so the beha).1 F .872(vior may become)-.2 F
+3.01(acceptable. Please)174 256.2 R .509(note that hosts do)3.01 F .509
+(wnstream may still re)-.25 F .509(write the address to be)-.25 F
+(the true canonical name ho)174 268.2 Q(we)-.25 E -.15(ve)-.25 G -.55
+(r.).15 G 6.17(DontInitGroups [no)102 284.4 R .25(short name] If set,)
+2.75 F F2(sendmail)2.75 E F1 .25(will a)2.75 F -.2(vo)-.2 G .25
+(id using the initgroups\(3\) call.).2 F .25(If you are)5.25 F .583(run\
+ning NIS, this causes a sequential scan of the groups.byname map, which\
+ can)174 296.4 R .435(cause your NIS serv)174 308.4 R .435
+(er to be badly o)-.15 F -.15(ve)-.15 G .435(rloaded in a lar).15 F .436
+(ge domain.)-.18 F .436(The cost of this)5.436 F .697(is that the only \
+group found for users will be their primary group \(the one in the)174
+320.4 R(passw)174 332.4 Q 1.189(ord \214le\), which will mak)-.1 F 3.689
+<658c>-.1 G 1.189(le access permissions some)-3.689 F 1.189
+(what more restric-)-.25 F(ti)174 344.4 Q -.15(ve)-.25 G 5(.H).15 G
+(as no ef)-5 E(fect on systems that don')-.25 E 2.5(th)-.18 G -2.25 -.2
+(av e)-2.5 H(group lists.)2.7 E(DontProbeInterf)102 360.6 Q(aces)-.1 E
+1.713([no short name])174 372.6 R F2(Sendmail)4.213 E F1 1.712
+(normally \214nds the names of all interf)4.213 F 1.712(aces acti)-.1 F
+2.012 -.15(ve o)-.25 H(n).15 E 1.103
+(your machine when it starts up and adds their name to the)174 384.6 R
+F0($=w)3.603 E F1 1.103(class of kno)3.603 F(wn)-.25 E 1.836
+(host aliases.)174 396.6 R 1.836(If you ha)6.836 F 2.136 -.15(ve a l)-.2
+H(ar).15 E 1.836(ge number of virtual interf)-.18 F 1.835
+(aces or if your DNS)-.1 F(in)174 408.6 Q -.15(ve)-.4 G .958
+(rse lookups are slo).15 F 3.458(wt)-.25 G .958
+(his can be time consuming.)-3.458 F .959(This option turns of)5.959 F
+3.459(ft)-.25 G(hat)-3.459 E 2.974(probing. Ho)174 420.6 R(we)-.25 E
+-.15(ve)-.25 G 1.274 -.4(r, y).15 H .474
+(ou will need to be certain to include all v).4 F .473
+(ariant names in the)-.25 F F0($=w)174 432.6 Q F1 1.868
+(class by some other mechanism.)4.368 F 1.868(If set to)6.868 F F0
+(loopback)4.368 E F1 4.369(,l)C 1.869(oopback interf)-4.369 F(aces)-.1 E
+(\(e.g., lo0\) will not be probed.)174 444.6 Q -1.61
+(DontPruneRoutes [R])102 460.8 R(Normally)3.905 E(,)-.65 E F2(sendmail)
+3.905 E F1 1.405(tries to eliminate an)3.905 F 3.905(yu)-.15 G 1.405
+(nnecessary e)-3.905 F 1.405(xplicit routes when)-.15 F .154
+(sending an error message \(as discussed in RFC 1123 \247 5.2.6\).)174
+472.8 R -.15(Fo)5.155 G 2.655(re).15 G .155(xample, when)-2.805 F
+(sending an error message to)174 484.8 Q(<@kno)214 501 Q(wn1,@kno)-.25 E
+(wn2,@kno)-.25 E(wn3:user@unkno)-.25 E(wn>)-.25 E F2(sendmail)174 517.2
+Q F1 1.155(will strip of)3.655 F 3.655(ft)-.25 G 1.155(he \231@kno)
+-3.655 F(wn1,@kno)-.25 E 1.155(wn2\232 in order to mak)-.25 F 3.655(et)
+-.1 G 1.155(he route as)-3.655 F .812(direct as possible.)174 529.2 R
+(Ho)5.812 E(we)-.25 E -.15(ve)-.25 G 1.612 -.4(r, i).15 H 3.312(ft).4 G
+(he)-3.312 E F0(R)3.313 E F1 .813
+(option is set, this will be disabled, and the)3.313 F .01
+(mail will be sent to the \214rst address in the route, e)174 541.2 R
+-.15(ve)-.25 G 2.509(ni).15 G 2.509(fl)-2.509 G .009
+(ater addresses are kno)-2.509 F(wn.)-.25 E
+(This may be useful if you are caught behind a \214re)174 553.2 Q -.1
+(wa)-.25 G(ll.).1 E(DoubleBounceAddress=)102 569.4 Q F2(err)A(or)-.45 E
+(-addr)-.2 E(ess)-.37 E F1 .504([no short name] If an error occurs when\
+ sending an error message, send the error)174 581.4 R 1.999(report \(te\
+rmed a \231double bounce\232 because it is an error \231bounce\232 that\
+ occurs)174 593.4 R .053(when trying to send another error \231bounce\
+\232\) to the indicated address.)174 605.4 R .054(The address)5.054 F
+.475(is macro e)174 617.4 R .474(xpanded at the time of deli)-.15 F -.15
+(ve)-.25 G(ry).15 E 5.474(.I)-.65 G 2.974(fn)-5.474 G .474(ot set, def)
+-2.974 F .474(aults to \231postmaster\232.)-.1 F(If)5.474 E
+(set to an empty string, double bounces are dropped.)174 629.4 Q
+(EightBitMode=)102 645.6 Q F2(action)A F1 1.955
+([8] Set handling of eight-bit data.)174 657.6 R 1.955(There are tw)
+6.955 F 4.456(ok)-.1 G 1.956(inds of eight-bit data: that)-4.456 F 3.335
+(declared as such using the)174 669.6 R F0(BOD)5.834 E(Y=8BITMIME)-.4 E
+F1 3.334(ESMTP declaration or the)5.834 F F0(\255B8BITMIME)174 681.6 Q
+F1 .948
+(command line \215ag, and undeclared 8-bit data, that is, input that)
+3.448 F 1.18(just happens to be eight bits.)174 693.6 R 1.18
+(There are three basic operations that can happen:)6.18 F .995
+(undeclared 8-bit data can be automatically con)174 705.6 R -.15(ve)-.4
+G .996(rted to 8BITMIME, undeclared).15 F .887
+(8-bit data can be passed as-is without con)174 717.6 R -.15(ve)-.4 G
+.887(rsion to MIME \(`).15 F .887(`just send 8')-.74 F .886('\), and)
+-.74 F 0 Cg EP
+%%Page: 67 63
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-67)195.86 E/F1 10/Times-Roman@0 SF 1.794
+(declared 8-bit data can be con)174 96 R -.15(ve)-.4 G 1.794
+(rted to 7-bits for transmission to a non-8BIT).15 F(-)-.92 E
+(MIME mailer)174 108 Q 5(.T)-.55 G(he possible)-5 E/F2 10/Times-Italic@0
+SF(action)2.5 E F1 2.5(sa)C(re:)-2.5 E 11.11(sR)219 124.2 S
+(eject undeclared 8-bit data \(`)-11.11 E(`strict')-.74 E('\))-.74 E
+7.22(mC)219 136.2 S(on)-7.22 E -.15(ve)-.4 G
+(rt undeclared 8-bit data to MIME \(`).15 E(`mime')-.74 E('\))-.74 E 10
+(pP)219 148.2 S(ass undeclared 8-bit data \(`)-10.15 E(`pass')-.74 E
+('\))-.74 E 2.228
+(In all cases properly declared 8BITMIME data will be con)174 164.4 R
+-.15(ve)-.4 G 2.227(rted to 7BIT as).15 F(needed.)174 176.4 Q
+(ErrorHeader=)102 192.6 Q F2(\214le-or)A(-messa)-.2 E -.1(ge)-.1 G F1
+.486([E] Prepend error messages with the indicated message.)174 204.6 R
+.486(If it be)5.486 F .487(gins with a slash,)-.15 F .246(it is assumed\
+ to be the pathname of a \214le containing a message \(this is the reco\
+m-)174 216.6 R .86(mended setting\).)174 228.6 R .86
+(Otherwise, it is a literal message.)5.86 F .86
+(The error \214le might contain)5.86 F 1.116(the name, email address, a\
+nd/or phone number of a local postmaster who could)174 240.6 R(pro)174
+252.6 Q .826(vide assistance to end users.)-.15 F .827
+(If the option is missing or null, or if it names a)5.827 F
+(\214le which does not e)174 264.6 Q
+(xist or which is not readable, no message is printed.)-.15 E
+(ErrorMode=)102 280.8 Q F2(x)A F1([e] Dispose of errors using mode)17.49
+E F2(x)2.5 E F1 5(.T)C(he v)-5 E(alues for)-.25 E F2(x)2.5 E F1(are:)2.5
+E 15(pP)214 297 S(rint error messages \(def)-15 E(ault\))-.1 E 15(qN)214
+309 S 2.5(om)-15 G(essages, just gi)-2.5 E .3 -.15(ve ex)-.25 H
+(it status).15 E 12.22(mM)214 321 S(ail back errors)-12.22 E 12.78(wW)
+214 333 S(rite back errors \(mail if user not logged in\))-12.78 E 15.56
+(eM)214 345 S(ail back errors \(when applicable\) and gi)-15.56 E .3
+-.15(ve z)-.25 H(ero e).15 E(xit stat al)-.15 E -.1(wa)-.1 G(ys).1 E
+1.314(Note that the last mode, \231e\232, is for Berknet error processi\
+ng and should not be)174 361.2 R 1.323(used in normal circumstances.)174
+373.2 R 1.323(Note, too, that mode \231q\232, only applies to errors)
+6.323 F(recognized before sendmail forks for background deli)174 385.2 Q
+-.15(ve)-.25 G(ry).15 E(.)-.65 E -.15(Fa)102 401.4 S(llbackMXhost=).15 E
+F2(fallbac)A(khost)-.2 E F1 .797([V] If speci\214ed, the)174 413.4 R F2
+(fallbac)3.297 E(khost)-.2 E F1 .797(acts lik)3.297 F 3.296(eav)-.1 G
+.796(ery lo)-3.446 F 3.296(wp)-.25 G .796(riority MX on e)-3.296 F -.15
+(ve)-.25 G .796(ry host.).15 F 1.537(MX records will be look)174 425.4 R
+1.537(ed up for this host, unless the name is surrounded by)-.1 F .017
+(square brack)174 437.4 R 2.517(ets. This)-.1 F .017
+(is intended to be used by sites with poor netw)2.517 F .016
+(ork connecti)-.1 F(v-)-.25 E(ity)174 449.4 Q 6.706(.M)-.65 G 1.706
+(essages which are undeli)-6.706 F -.15(ve)-.25 G 1.706
+(rable due to temporary address f).15 F 1.706(ailures \(e.g.,)-.1 F
+(DNS f)174 461.4 Q(ailure\) also go to the F)-.1 E(allbackMXhost.)-.15 E
+-.15(Fa)102 477.6 S(llBackSmartHost=).15 E F2(hostname)A F1 1.656
+(If speci\214ed, the)174 489.6 R F2 -.75(Fa)4.156 G(llBac).75 E
+(kSmartHost)-.2 E F1 1.656(will be used in a last-ditch ef)4.156 F 1.655
+(fort for each)-.25 F 3.212(host. This)174 501.6 R .712
+(is intended to be used by sites with "f)3.212 F(ak)-.1 E 3.212(ei)-.1 G
+.712(nternal DNS", e.g., a com-)-3.212 F(pan)174 513.6 Q 3.19(yw)-.15 G
+.69(hose DNS accurately re\215ects the w)-3.19 F .69
+(orld inside that compan)-.1 F(y')-.15 E 3.19(sd)-.55 G .69(omain b)
+-3.19 F(ut)-.2 E(not outside.)174 525.6 Q -.15(Fa)102 541.8 S 34.08
+(stSplit [no).15 F 1.572(short name] If set to a v)4.071 F 1.572
+(alue greater than zero \(the def)-.25 F 1.572(ault is one\), it sup-)
+-.1 F .977(presses the MX lookups on addresses when the)174 553.8 R
+3.477(ya)-.15 G .977(re initially sorted, i.e., for the)-3.477 F 1.03
+(\214rst deli)174 565.8 R -.15(ve)-.25 G 1.031(ry attempt.).15 F 1.031
+(This usually results in f)6.031 F 1.031(aster en)-.1 F -.15(ve)-.4 G
+1.031(lope splitting unless the).15 F .423(MX records are readily a)174
+577.8 R -.25(va)-.2 G .423(ilable in a local DNS cache.).25 F 2.023 -.8
+(To e)5.423 H .423(nforce initial sorting).8 F .337
+(based on MX records set)174 589.8 R F0 -.25(Fa)2.838 G(stSplit).25 E F1
+.338(to zero.)2.838 F .338(If the mail is submitted directly from)5.338
+F 1.079(the command line, then the v)174 601.8 R 1.078
+(alue also limits the number of processes to deli)-.25 F -.15(ve)-.25 G
+(r).15 E .293(the en)174 613.8 R -.15(ve)-.4 G .293(lopes; if more en)
+.15 F -.15(ve)-.4 G .293(lopes are created the).15 F 2.794(ya)-.15 G
+.294(re only queued up and must be)-2.794 F(tak)174 625.8 Q .692
+(en care of by a queue run.)-.1 F .691(Since the def)5.691 F .691
+(ault submission method is via SMTP)-.1 F 1.284(\(either from a MU)174
+637.8 R 3.784(Ao)-.4 G 3.784(rv)-3.784 G 1.284(ia the MSP\), the v)
+-3.784 F 1.284(alue of)-.25 F F0 -.25(Fa)3.784 G(stSplit).25 E F1 1.284
+(is seldom used to)3.784 F(limit the number of processes to deli)174
+649.8 Q -.15(ve)-.25 G 2.5(rt).15 G(he en)-2.5 E -.15(ve)-.4 G(lopes.)
+.15 E -.15(Fo)102 666 S 16.88(rkEachJob [Y]).15 F(If set, deli)2.5 E
+-.15(ve)-.25 G 2.5(re).15 G
+(ach job that is run from the queue in a separate process.)-2.5 E -.15
+(Fo)102 682.2 S(rw).15 E(ardP)-.1 E(ath=)-.15 E F2(path)A F1 1.512
+([J] Set the path for searching for users' .forw)174 694.2 R 1.511
+(ard \214les.)-.1 F 1.511(The def)6.511 F 1.511(ault is \231$z/.for)-.1
+F(-)-.2 E -.1(wa)174 706.2 S 5.799(rd\232. Some).1 F 3.299
+(sites that use the automounter may prefer to change this to)5.799 F
+(\231/v)174 718.2 Q(ar/forw)-.25 E 1.696(ard/$u\232 to search a \214le \
+with the same name as the user in a system)-.1 F 0 Cg EP
+%%Page: 68 64
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-68 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(directory)174 96 Q 5.487(.I)-.65 G 2.987(tc)-5.487 G .488
+(an also be set to a sequence of paths separated by colons;)-2.987 F/F2
+10/Times-Italic@0 SF(sendmail)2.988 E F1 .831
+(stops at the \214rst \214le it can successfully and safely open.)174
+108 R -.15(Fo)5.83 G 3.33(re).15 G .83(xample, \231/v)-3.48 F(ar/for)
+-.25 E(-)-.2 E -.1(wa)174 120 S(rd/$u:$z/.forw).1 E .276
+(ard\232 will search \214rst in /v)-.1 F(ar/forw)-.25 E(ard/)-.1 E F2
+(username)A F1 .277(and then in)2.777 F F2(~user)2.777 E(-)-.2 E(name)
+174 132 Q F1(/.forw)A(ard \(b)-.1 E
+(ut only if the \214rst \214le does not e)-.2 E(xist\).)-.15 E
+(HeloName=)102 148.2 Q F2(name)A F1([no short name] Set the name to be \
+used for HELO/EHLO \(instead of $j\).)1.38 E(HoldExpensi)102 164.4 Q
+8.54 -.15(ve [)-.25 H 1.394(c] If an outgoing mailer is mark).15 F 1.393
+(ed as being e)-.1 F(xpensi)-.15 E -.15(ve)-.25 G 3.893(,d).15 G(on')
+-3.893 E 3.893(tc)-.18 G 1.393(onnect immedi-)-3.893 F(ately)174 176.4 Q
+(.)-.65 E(HostsFile=)102 192.6 Q F2(path)A F1 .026([no short name] The \
+path to the hosts database, normally \231/etc/hosts\232.)10.24 F .026
+(This option)5.026 F 1.417(is only consulted when sendmail is canonifyi\
+ng addresses, and then only when)174 204.6 R .783
+(\231\214les\232 is in the \231hosts\232 service switch entry)174 216.6
+R 5.784(.I)-.65 G 3.284(np)-5.784 G(articular)-3.284 E 3.284(,t)-.4 G
+.784(his \214le is)-3.284 F F2(ne)3.284 E(ver)-.15 E F1(used)3.284 E
+.202(when looking up host addresses; that is under the control of the s\
+ystem)174 228.6 R F2 -.1(ge)2.702 G(thostby-).1 E(name)174 240.6 Q F1
+(\(3\) routine.)A(HostStatusDirectory=)102 256.8 Q F2(path)A F1 .43
+([no short name] The location of the long term host status information.)
+174 268.8 R .43(When set,)5.43 F 1.39
+(information about the status of hosts \(e.g., host do)174 280.8 R 1.39
+(wn or not accepting connec-)-.25 F .162
+(tions\) will be shared between all)174 292.8 R F2(sendmail)2.663 E F1
+.163(processes; normally)2.663 F 2.663(,t)-.65 G .163
+(his information is)-2.663 F .123(only held within a single queue run.)
+174 304.8 R .123(This option requires a connection cache of at)5.123 F
+.688(least 1 to function.)174 316.8 R .688(If the option be)5.688 F .688
+(gins with a leading `/', it is an absolute path-)-.15 F .617
+(name; otherwise, it is relati)174 328.8 R .917 -.15(ve t)-.25 H 3.117
+(ot).15 G .617(he mail queue directory)-3.117 F 5.617(.A)-.65 G .617
+(suggested v)-2.5 F .616(alue for)-.25 F .558(sites desiring persistent\
+ host status is \231.hoststat\232 \(i.e., a subdirectory of the queue)
+174 340.8 R(directory\).)174 352.8 Q 24.51(IgnoreDots [i])102 369 R
+1.172(Ignore dots in incoming messages.)3.672 F 1.172(This is al)6.172 F
+-.1(wa)-.1 G 1.171(ys disabled \(that is, dots are).1 F(al)174 381 Q -.1
+(wa)-.1 G(ys accepted\) when reading SMTP mail.).1 E(InputMailFilters=)
+102 397.2 Q F2(name)A(,name)-.1 E(,...)-.1 E F1 3.621(Ac)174 409.2 S
+1.122(omma separated list of \214lters which determines which \214lters\
+ \(see the "X \212)-3.621 F 1.768
+(Mail Filter \(Milter\) De\214nitions" section\) and the in)174 421.2 R
+-.2(vo)-.4 G 1.768(cation sequence are con-).2 F .367
+(tacted for incoming SMTP messages.)174 433.2 R .367
+(If none are set, no \214lters will be contacted.)5.367 F(LD)102 449.4 Q
+(APDef)-.4 E(aultSpec=)-.1 E F2(spec)A F1 2.058
+([no short name] Sets a def)174 461.4 R 2.057
+(ault map speci\214cation for LD)-.1 F 2.057(AP maps.)-.4 F 2.057(The v)
+7.057 F(alue)-.25 E .673(should only contain LD)174 473.4 R .674
+(AP speci\214c settings such as \231-h host -p port -d bindDN\232.)-.4 F
+.501(The settings will be used for all LD)174 485.4 R .501
+(AP maps unless the indi)-.4 F .5(vidual map speci\214ca-)-.25 F 1.5
+(tion o)174 497.4 R -.15(ve)-.15 G 1.5(rrides a setting.).15 F 1.5
+(This option should be set before an)6.5 F 4(yL)-.15 G -.4(DA)-4 G 4(Pm)
+.4 G 1.5(aps are)-4 F(de\214ned.)174 509.4 Q(LogLe)102 525.6 Q -.15(ve)
+-.25 G(l=).15 E F2(n)A F1([L] Set the log le)22.88 E -.15(ve)-.25 G 2.5
+(lt).15 G(o)-2.5 E F2(n)2.5 E F1 5(.D)C(ef)-5 E(aults to 9.)-.1 E(M)102
+541.8 Q F2 1.666(xv)C(alue)-1.666 E F1 .255([no long v)35.344 F .255
+(ersion] Set the macro)-.15 F F2(x)2.755 E F1(to)2.755 E F2(value)2.755
+E F1 5.255(.T)C .255(his is intended only for use from the)-5.255 F
+(command line.)174 553.8 Q(The)5 E F0<ad4d>2.5 E F1
+(\215ag is preferred.)2.5 E -1.04(MailboxDatabase [no)102 570 R 2.967
+(short name] T)5.467 F 2.967
+(ype of lookup to \214nd information about local mailbox)-.8 F(es,)-.15
+E(def)174 582 Q .145(aults to `)-.1 F(`pw')-.74 E 2.645('w)-.74 G .145
+(hich uses)-2.645 F F2 -.1(ge)2.645 G(tpwnam).1 E F1 5.145(.O)C .145
+(ther types can be introduced by adding)-5.145 F
+(them to the source code, see libsm/mbdb)174 594 Q(.c for details.)-.4 E
+33.94(UseMSP [no)102 610.2 R .163
+(short name] Use as mail submission program, i.e., allo)2.663 F 2.664
+(wg)-.25 G .164(roup writable queue)-2.664 F .954(\214les if the group \
+is the same as that of a set-group-ID sendmail binary)174 622.2 R 5.954
+(.S)-.65 G .954(ee the)-5.954 F(\214le)174 634.2 Q F0(sendmail/SECURITY)
+2.5 E F1(in the distrib)2.5 E(ution tarball.)-.2 E 11.17(MatchGECOS [G])
+102 650.4 R(Allo)3.333 E 3.333(wf)-.25 G .833
+(uzzy matching on the GECOS \214eld.)-3.333 F .834
+(If this \215ag is set, and the usual)5.833 F .868(user name lookups f)
+174 662.4 R .867(ail \(that is, there is no alias with this name and a)
+-.1 F F2 -.1(ge)3.367 G(tpwnam).1 E F1 -.1(fa)174 674.4 S 1.155
+(ils\), sequentially search the passw).1 F 1.155
+(ord \214le for a matching entry in the GECOS)-.1 F 3.696(\214eld. This)
+174 686.4 R 1.196(also requires that MA)3.696 F 1.196
+(TCHGECOS be turned on during compilation.)-1.11 F
+(This option is not recommended.)174 698.4 Q 0 Cg EP
+%%Page: 69 65
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-69)195.86 E/F1 10/Times-Roman@0 SF(MaxAliasRecursion=)102 96 Q
+/F2 10/Times-Italic@0 SF(N)A F1
+([no short name] The maximum depth of alias recursion \(def)174 108 Q
+(ault: 10\).)-.1 E(MaxDaemonChildren=)102 124.2 Q F2(N)A F1 .539
+([no short name] If set,)174 136.2 R F2(sendmail)3.039 E F1 .539
+(will refuse connections when it has more than)3.039 F F2(N)3.04 E F1
+.886(children processing incoming mail or automatic queue runs.)174
+148.2 R .885(This does not limit)5.885 F .812
+(the number of outgoing connections.)174 160.2 R .812(If the def)5.812 F
+(ault)-.1 E F0(Deli)3.313 E -.1(ve)-.1 G(ryMode).1 E F1(\(background\))
+3.313 E 3.135(is used, then)174 172.2 R F2(sendmail)5.635 E F1 3.134
+(may create an almost unlimited number of children)5.635 F .294
+(\(depending on the number of transactions and the relati)174 184.2 R
+.594 -.15(ve exe)-.25 H .295(cution times of mail).15 F 1.236
+(receiption and mail deli)174 196.2 R -.15(ve)-.25 G 3.736(ry\). If).15
+F 1.236(the limit should be enforced, then a)3.736 F F0(Deli)3.735 E -.1
+(ve)-.1 G(ry-).1 E(Mode)174 208.2 Q F1 1.483
+(other than background must be used.)3.983 F 1.484
+(If not set, there is no limit to the)6.483 F
+(number of children -- that is, the system load a)174 220.2 Q -.15(ve)
+-.2 G(rage controls this.).15 E(MaxHeadersLength=)102 236.4 Q F2(N)A F1
+.17([no short name] The maximum length of the sum of all headers.)174
+248.4 R .17(This can be used)5.17 F(to pre)174 260.4 Q -.15(ve)-.25 G
+(nt a denial of service attack.).15 E(The def)5 E(ault is no limit.)-.1
+E(MaxHopCount=)102 276.6 Q F2(N)A F1 1.237([h] The maximum hop count.)
+174 288.6 R 1.237(Messages that ha)6.237 F 1.538 -.15(ve b)-.2 H 1.238
+(een processed more than).15 F F2(N)3.738 E F1
+(times are assumed to be in a loop and are rejected.)174 300.6 Q(Def)5 E
+(aults to 25.)-.1 E(MaxMessageSize=)102 316.8 Q F2(N)A F1 2.563
+([no short name] Specify the maximum message size to be adv)174 328.8 R
+2.562(ertised in the)-.15 F 1.022(ESMTP EHLO response.)174 340.8 R 1.022
+(Messages lar)6.022 F 1.022(ger than this will be rejected.)-.18 F 1.023
+(If set to a)6.023 F -.25(va)174 352.8 S .834
+(lue greater than zero, that v).25 F .834
+(alue will be listed in the SIZE response, otherwise)-.25 F(SIZE is adv)
+174 364.8 Q(ertised in the ESMTP EHLO response without a parameter)-.15
+E(.)-.55 E(MaxMimeHeaderLength=)102 381 Q F2(N[/M])A F1 .343([no short \
+name] Sets the maximum length of certain MIME header \214eld v)174 393 R
+.344(alues to)-.25 F F2(N)174 405 Q F1 3.619(characters. These)3.619 F
+1.118(MIME header \214elds are determined by being a member of)3.619 F
+.895(class {checkMIMET)174 417 R -.15(ex)-.7 G .895
+(tHeaders}, which currently contains only the header Con-).15 F 2.559
+(tent-Description. F)174 429 R .059(or some of these headers which tak)
+-.15 F 2.559(ep)-.1 G .059(arameters, the maximum)-2.559 F .101
+(length of each parameter is set to)174 441 R F2(M)2.602 E F1 .102
+(if speci\214ed.)2.602 F(If)5.102 E F2(/M)2.602 E F1 .102
+(is not speci\214ed, one half of)2.602 F F2(N)174 453 Q F1 1.776
+(will be used.)4.276 F 1.776(By def)6.776 F 1.775(ault, these v)-.1 F
+1.775(alues are 2048 and 1024, respecti)-.25 F -.15(ve)-.25 G(ly).15 E
+6.775(.T)-.65 G(o)-7.575 E(allo)174 465 Q 2.5(wa)-.25 G .3 -.15(ny l)
+-2.5 H(ength, a v).15 E(alue of 0 can be speci\214ed.)-.25 E
+(MaxNOOPCommands=)102 481.2 Q F2(N)A F1(Ov)174 493.2 Q 2.103
+(erride the def)-.15 F 2.103(ault of)-.1 F F0(MAXNOOPCOMMANDS)4.603 E F1
+2.104(for the number of)4.603 F F2(useless)4.604 E F1
+(commands, see Section "Measures ag)174 505.2 Q
+(ainst Denial of Service Attacks".)-.05 E(MaxQueueChildren=)102 521.4 Q
+F2(N)A F1 .304([no short name] When set, this limits the number of conc\
+urrent queue runner pro-)174 533.4 R .201(cesses to)174 545.4 R F2(N.)
+2.701 E F1 .202
+(This helps to control the amount of system resources used when pro-)
+5.201 F 1.255(cessing the queue.)174 557.4 R 1.255
+(When there are multiple queue groups de\214ned and the total)6.255 F
+1.2(number of queue runners for these queue groups w)174 569.4 R 1.2
+(ould e)-.1 F(xceed)-.15 E F2(MaxQueueChil-)3.7 E(dr)174 581.4 Q(en)-.37
+E F1 .472(then the queue groups will not all run concurrently)2.973 F
+2.972(.T)-.65 G .472(hat is, some portion of)-2.972 F .871
+(the queue groups will run concurrently such that)174 593.4 R F2
+(MaxQueueChildr)3.371 E(en)-.37 E F1 .871(will not be)3.371 F -.15(ex)
+174 605.4 S 1.893(ceeded, while the remaining queue groups will be run \
+later \(in round robin).15 F 1.3(order\). See also)174 617.4 R F2
+(MaxRunner)3.8 E(sP)-.1 E(erQueue)-.8 E F1 1.3(and the section)3.8 F F0
+1.3(Queue Gr)3.8 F 1.3(oup Declara-)-.18 F(tion)174 629.4 Q F1 5.757(.N)
+C(otice:)-5.757 E F2(sendmail)3.257 E F1 .757(does not count indi)3.257
+F .757(vidual queue runners, b)-.25 F .756(ut only sets of)-.2 F 1.451
+(processes that act on a w)174 641.4 R 3.951(orkgroup. Hence)-.1 F 1.451
+(the actual number of queue runners)3.951 F 1.414(may be lo)174 653.4 R
+1.414(wer than the limit imposed by)-.25 F F2(MaxQueueChildr)3.914 E(en)
+-.37 E F1 6.414(.T)C 1.414(his discrepanc)-6.414 F(y)-.15 E 1.423
+(can be lar)174 665.4 R 1.424(ge if some queue runners ha)-.18 F 1.724
+-.15(ve t)-.2 H 3.924(ow).15 G 1.424(ait for a slo)-4.024 F 3.924(ws)
+-.25 G(erv)-3.924 E 1.424(er and if short)-.15 F(interv)174 677.4 Q
+(als are used.)-.25 E(MaxQueueRunSize=)102 693.6 Q F2(N)A F1 .677([no s\
+hort name] The maximum number of jobs that will be processed in a singl\
+e)174 705.6 R .501(queue run.)174 717.6 R .501
+(If not set, there is no limit on the size.)5.501 F .501(If you ha)5.501
+F .802 -.15(ve ve)-.2 H .502(ry lar).15 F .502(ge queues)-.18 F 0 Cg EP
+%%Page: 70 66
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-70 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .445
+(or a v)174 96 R .445(ery short queue run interv)-.15 F .445
+(al this could be unstable.)-.25 F(Ho)5.445 E(we)-.25 E -.15(ve)-.25 G
+1.245 -.4(r, s).15 H .445(ince the \214rst).4 F/F2 10/Times-Italic@0 SF
+(N)174 108 Q F1 1.115
+(jobs in queue directory order are run \(rather than the)3.615 F F2(N)
+3.615 E F1 1.115(highest priority jobs\))3.615 F .136
+(this should be set as high as possible to a)174 120 R -.2(vo)-.2 G .136
+(id \231losing\232 jobs that happen to f).2 F .136(all late)-.1 F 2.325
+(in the queue directory)174 132 R 7.326(.N)-.65 G 2.326
+(ote: this option also restricts the number of entries)-7.326 F 1.443
+(printed by)174 144 R F2(mailq)3.943 E F1 6.443(.T)C 1.443(hat is, if)
+-6.443 F F2(MaxQueueRunSize)3.943 E F1 1.443(is set to a v)3.943 F(alue)
+-.25 E F0(N)3.943 E F1(lar)3.942 E 1.442(ger than)-.18 F
+(zero, then only)174 156 Q F0(N)2.5 E F1
+(entries are printed per queue group.)2.5 E(MaxRecipientsPerMessage=)102
+172.2 Q F2(N)A F1 1.672([no short name] The maximum number of recipient\
+s that will be accepted per)174 184.2 R 1.459
+(message in an SMTP transaction.)174 196.2 R 1.458
+(Note: setting this too lo)6.458 F 3.958(wc)-.25 G 1.458
+(an interfere with)-3.958 F .048(sending mail from MU)174 208.2 R .048
+(As that use SMTP for initial submission.)-.4 F .049
+(If not set, there is)5.049 F
+(no limit on the number of recipients per en)174 220.2 Q -.15(ve)-.4 G
+(lope.).15 E(MaxRunnersPerQueue=)102 236.4 Q F2(N)A F1 2.004
+([no short name] This sets the def)174 248.4 R 2.003
+(ault maximum number of queue runners for)-.1 F 1.161(queue groups.)174
+260.4 R 1.161(Up to)6.161 F F2(N)3.661 E F1 1.161(queue runners will w)
+3.661 F 1.162(ork in parallel on a queue group')-.1 F(s)-.55 E 3.466
+(messages. This)174 272.4 R .965
+(is useful where the processing of a message in the queue might)3.466 F
+.945(delay the processing of subsequent messages. Such a delay may be t\
+he result of)174 284.4 R .116(non-erroneous situations such as a lo)174
+296.4 R 2.616(wb)-.25 G .116(andwidth connection.)-2.616 F .116
+(May be o)5.116 F -.15(ve)-.15 G(rridden).15 E .644
+(on a per queue group basis by setting the)174 308.4 R F2(Runner)3.144 E
+(s)-.1 E F1 .645(option; see the section)3.144 F F0(Queue)3.145 E(Gr)174
+320.4 Q(oup Declaration)-.18 E F1 5(.T)C(he def)-5 E
+(ault is 1 when not set.)-.1 E(MeT)102 336.6 Q 40.86(oo [m])-.8 F .367
+(Send to me too, e)2.867 F -.15(ve)-.25 G 2.867(ni).15 G 2.867(fIa)
+-2.867 G 2.867(mi)-2.867 G 2.867(na)-2.867 G 2.867(na)-2.867 G .367
+(lias e)-2.867 F 2.867(xpansion. This)-.15 F .366(option is deprecated)
+2.867 F(and will be remo)174 348.6 Q -.15(ve)-.15 G 2.5(df).15 G
+(rom a future v)-2.5 E(ersion.)-.15 E 44.5(Milter [no)102 364.8 R .777
+(short name] This option has se)3.277 F -.15(ve)-.25 G .778
+(ral sub\(sub\)options.).15 F .778(The names of the sub-)5.778 F 1.135
+(options are separated by dots.)174 376.8 R 1.135(At the \214rst le)
+6.135 F -.15(ve)-.25 G 3.634(lt).15 G 1.134(he follo)-3.634 F 1.134
+(wing options are a)-.25 F -.25(va)-.2 G(il-).25 E(able:)174 388.8 Q
+(LogLe)214 405 Q -.15(ve)-.25 G 15(lL).15 G(og le)-15 E -.15(ve)-.25 G
+2.5(lf).15 G(or input mail \214lter actions, def)-2.5 E(aults to LogLe)
+-.1 E -.15(ve)-.25 G(l.).15 E 22.1(macros Speci\214es)214 417 R
+(list of macro to transmit to \214lters.)2.5 E(See list belo)267.48 429
+Q -.65(w.)-.25 G 2.458(The `)174 445.2 R(`macros')-.74 E 4.958('o)-.74 G
+2.458(ption has the follo)-4.958 F 2.458
+(wing suboptions which specify the list of)-.25 F
+(macro to transmit to milters after a certain e)174 457.2 Q -.15(ve)-.25
+G(nt occurred.).15 E 14.88(connect After)214 473.4 R
+(session connection start)2.5 E 28.76(helo After)214 485.4 R
+(EHLO/HELO command)2.5 E(en)214 497.4 Q 12.5(vfrom After)-.4 F
+(MAIL From command)2.5 E(en)214 509.4 Q 16.39(vrcpt After)-.4 F(RCPT T)
+2.5 E 2.5(oc)-.8 G(ommand)-2.5 E 29.32(data After)214 521.4 R -.4(DA)2.5
+G 1.86 -.93(TA c)-.71 H(ommand.).93 E 31.54(eoh After)214 533.4 R -.4
+(DA)2.5 G 1.86 -.93(TA c)-.71 H(ommand and header).93 E 28.76(eom After)
+214 545.4 R -.4(DA)2.5 G 1.86 -.93(TA c)-.71 H(ommand and terminating `)
+.93 E(`.)-.74 E -.74('')-.7 G(By def)174 561.6 Q
+(ault the lists of macros are empty)-.1 E 5(.E)-.65 G(xample:)-5 E 2.5
+(OM)214 577.8 S(ilter)-2.5 E(.LogLe)-.55 E -.15(ve)-.25 G(l=12).15 E 2.5
+(OM)214 589.8 S(ilter)-2.5 E(.macros.connect=j, _, {daemon_name})-.55 E
+(MinFreeBlocks=)102 610.2 Q F2(N)A F1 1.539([b] Insist on at least)174
+622.2 R F2(N)4.039 E F1 1.538
+(blocks free on the \214lesystem that holds the queue \214les)4.039 F
+.845(before accepting email via SMTP)174 634.2 R 5.846(.I)-1.11 G 3.346
+(ft)-5.846 G .846(here is insuf)-3.346 F .846(\214cient space)-.25 F F2
+(sendmail)3.346 E F1(gi)3.346 E -.15(ve)-.25 G 3.346(sa).15 G
+(452 response to the MAIL command.)174 646.2 Q(This in)5 E
+(vites the sender to try ag)-.4 E(ain later)-.05 E(.)-.55 E
+(MinQueueAge=)102 662.4 Q F2 -.1(age)C F1 .887([no short name] Don')174
+674.4 R 3.387(tp)-.18 G .887(rocess an)-3.387 F 3.387(yq)-.15 G .886
+(ueued jobs that ha)-3.387 F 1.186 -.15(ve b)-.2 H .886
+(een in the queue less).15 F 1.899(than the indicated time interv)174
+686.4 R 4.399(al. This)-.25 F 1.899(is intended to allo)4.399 F 4.399
+(wy)-.25 G 1.9(ou to get respon-)-4.399 F(si)174 698.4 Q -.15(ve)-.25 G
+.665(ness by processing the queue f).15 F .665
+(airly frequently without thrashing your system)-.1 F
+(by trying jobs too often.)174 710.4 Q(The def)5 E
+(ault units are minutes.)-.1 E 0 Cg EP
+%%Page: 71 67
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-71)195.86 E/F1 10/Times-Roman@0 SF(MustQuoteChars=)102 96 Q/F2
+10/Times-Italic@0 SF(s)A F1 1.252([no short name] Sets the list of char\
+acters that must be quoted if used in a full)174 108 R 1.217
+(name that is in the phrase part of a `)174 120 R 1.217
+(`phrase <address>')-.74 F 3.717('s)-.74 G 3.717(yntax. The)-3.717 F
+(def)3.717 E 1.217(ault is)-.1 F -.74(``)174 132 S<b42e>.74 E -.74('')
+-.7 G 5(.T).74 G(he characters `)-5 E(`@,;:\\\(\)[]')-.74 E 2.5('a)-.74
+G(re al)-2.5 E -.1(wa)-.1 G(ys added to this list.).1 E 7.85
+(NiceQueueRun [no)102 148.2 R 2.156
+(short name] The priority of queue runners \(nice\(3\)\).)4.655 F 2.156
+(This v)7.156 F 2.156(alue must be)-.25 F(greater or equal zero.)174
+160.2 Q(NoRecipientAction)102 176.4 Q .555
+([no short name] The action to tak)174 188.4 R 3.055(ew)-.1 G .555
+(hen you recei)-3.055 F .855 -.15(ve a m)-.25 H .554
+(essage that has no v).15 F(alid)-.25 E .625(recipient headers \(T)174
+200.4 R .625(o:, Cc:, Bcc:, or Apparently-T)-.8 F .625
+(o: \212 the last included for back)-.8 F .109(compatibility with old)
+174 212.4 R F2(sendmail)2.609 E F1 2.609(s\). It)B .109(can be)2.609 F
+F0(None)2.608 E F1 .108(to pass the message on unmod-)2.608 F .296
+(i\214ed, which violates the protocol,)174 224.4 R F0(Add-T)2.796 E(o)
+-.92 E F1 .296(to add a T)2.796 F .296(o: header with an)-.8 F 2.797(yr)
+-.15 G(ecipients)-2.797 E 1.638(it can \214nd in the en)174 236.4 R -.15
+(ve)-.4 G 1.638(lope \(which might e).15 F 1.638
+(xpose Bcc: recipients\),)-.15 F F0(Add-A)4.138 E(ppar)-.25 E(-)-.37 E
+(ently-T)174 248.4 Q(o)-.92 E F1 .337(to add an Apparently-T)2.837 F
+.337(o: header \(this is only for back-compatibility and)-.8 F .842
+(is of)174 260.4 R .841(\214cially deprecated\),)-.25 F F0(Add-T)3.341 E
+(o-Undisclosed)-.92 E F1 .841(to add a header \231T)3.341 F .841
+(o: undisclosed-)-.8 F .397(recipients:;\232 to mak)174 272.4 R 2.897
+(et)-.1 G .397(he header le)-2.897 F -.05(ga)-.15 G 2.897(lw).05 G .397
+(ithout disclosing an)-2.897 F .398(ything, or)-.15 F F0(Add-Bcc)2.898 E
+F1(to)2.898 E(add an empty Bcc: header)174 284.4 Q(.)-.55 E 1.18
+(OldStyleHeaders [o])102 300.6 R 1.713(Assume that the headers may be i\
+n old format, i.e., spaces delimit names.)4.214 F 1.068
+(This actually turns on an adapti)174 312.6 R 1.368 -.15(ve a)-.25 H
+1.068(lgorithm: if an).15 F 3.569(yr)-.15 G 1.069
+(ecipient address contains a)-3.569 F 1.681
+(comma, parenthesis, or angle brack)174 324.6 R 1.681
+(et, it will be assumed that commas already)-.1 F -.15(ex)174 336.6 S
+2.825(ist. If).15 F .325
+(this \215ag is not on, only commas delimit names.)2.825 F .325
+(Headers are al)5.325 F -.1(wa)-.1 G .325(ys out-).1 F
+(put with commas between the names.)174 348.6 Q(Def)5 E(aults to of)-.1
+E(f.)-.25 E(OperatorChars=)102 364.8 Q F2 -.15(ch)C(arlist).15 E F1
+1.438([$o macro] The list of characters that are considered to be \231o\
+perators\232, that is,)174 376.8 R .82(characters that delimit tok)174
+388.8 R 3.32(ens. All)-.1 F .82(operator characters are tok)3.32 F .82
+(ens by themselv)-.1 F(es;)-.15 E .078
+(sequences of non-operator characters are also tok)174 400.8 R 2.578
+(ens. White)-.1 F .078(space characters sep-)2.578 F .269(arate tok)174
+412.8 R .269(ens b)-.1 F .269(ut are not tok)-.2 F .269(ens themselv)-.1
+F .269(es \212 for e)-.15 F .269(xample, \231)-.15 F .27
+(AAA.BBB\232 has three)-.8 F(tok)174 424.8 Q .433(ens, b)-.1 F .433
+(ut \231)-.2 F .433(AAA BBB\232 has tw)-.8 F 2.933(o. If)-.1 F .433
+(not set, OperatorChars def)2.933 F .433(aults to \231.)-.1 F 1.666
+(:@[])1.666 G<9a3b>-1.666 E(additionally)174 436.8 Q 3.565(,t)-.65 G
+1.065(he characters \231\()-3.565 F 1.666(\)<>,;)1.666 G 3.565<9a61>
+-1.666 G 1.066(re al)-3.565 F -.1(wa)-.1 G 1.066(ys operators.).1 F
+1.066(Note that Operator)6.066 F(-)-.2 E
+(Chars must be set in the con\214guration \214le before an)174 448.8 Q
+2.5(yr)-.15 G(ulesets.)-2.5 E(PidFile=)102 465 Q F2(\214lename)A F1 1.3
+([no short name] Filename of the pid \214le.)3.58 F(\(def)6.3 E 1.3
+(ault is _P)-.1 F -1.11(AT)-.92 G(H_SENDMAILPID\).)1.11 E(The)174 477 Q
+F2(\214lename)2.831 E F1 .332(is macro-e)2.831 F .332
+(xpanded before it is opened, and unlink)-.15 F .332(ed when)-.1 F F2
+(sendmail)2.832 E F1 -.15(ex)174 489 S(its.).15 E(PostmasterCop)102
+505.2 Q(y=)-.1 E F2(postmaster)A F1 .003
+([P] If set, copies of error messages will be sent to the named)174
+517.2 R F2(postmaster)2.503 E F1 5.003(.O)C .003(nly the)-5.003 F .687
+(header of the f)174 529.2 R .687(ailed message is sent.)-.1 F .687
+(Errors resulting from messages with a ne)5.687 F(g-)-.15 E(ati)174
+541.2 Q 1.831 -.15(ve p)-.25 H 1.531(recedence will not be sent.).15 F
+1.531(Since most errors are user problems, this is)6.531 F .453
+(probably not a good idea on lar)174 553.2 R .453(ge sites, and ar)-.18
+F .453(guably contains all sorts of pri)-.18 F -.25(va)-.25 G -.15(cy)
+.25 G .101(violations, b)174 565.2 R .101
+(ut it seems to be popular with certain operating systems v)-.2 F 2.6
+(endors. The)-.15 F 1.918(address is macro e)174 577.2 R 1.918
+(xpanded at the time of deli)-.15 F -.15(ve)-.25 G(ry).15 E 6.919(.D)
+-.65 G(ef)-6.919 E 1.919(aults to no postmaster)-.1 F(copies.)174 589.2
+Q(Pri)102 605.4 Q -.25(va)-.25 G -.15(cy).25 G(Options=).15 E F2
+(opt,opt,...)1.666 E F1 1.192([p] Set the pri)174 617.4 R -.25(va)-.25 G
+-.15(cy).25 G F2(opt)3.842 E F1 3.692(ions. `)B(`Pri)-.74 E -.25(va)-.25
+G -.15(cy).25 G 2.672 -.74('' i).15 H 3.692(sr).74 G 1.191
+(eally a misnomer; man)-3.692 F 3.691(yo)-.15 G 3.691(ft)-3.691 G 1.191
+(hese are)-3.691 F .928(just a w)174 629.4 R .928
+(ay of insisting on stricter adherence to the SMTP protocol.)-.1 F(The)
+5.929 E F2(opt)3.429 E F1(ions)A(can be selected from:)174 641.4 Q 0 Cg
+EP
+%%Page: 72 68
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-72 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 56.37
+(public Allo)214 96 R 2.5(wo)-.25 G(pen access)-2.5 E 27.49
+(needmailhelo Insist)214 108 R(on HELO or EHLO command before MAIL)2.5 E
+(neede)214 120 Q 25.98(xpnhelo Insist)-.15 F
+(on HELO or EHLO command before EXPN)2.5 E(noe)214 132 Q 52.08
+(xpn Disallo)-.15 F 2.5(wE)-.25 G(XPN entirely)-2.5 E 2.5(,i)-.65 G
+(mplies no)-2.5 E -.15(ve)-.15 G(rb).15 E(.)-.4 E 28.61
+(needvrfyhelo Insist)214 144 R(on HELO or EHLO command before VRFY)2.5 E
+(no)214 156 Q 54.86(vrfy Disallo)-.15 F 2.5(wV)-.25 G(RFY entirely)-2.5
+E 55.82(noetrn Disallo)214 168 R 2.5(wE)-.25 G(TRN entirely)-2.5 E(no)
+214 180 Q -.15(ve)-.15 G 53.9(rb Disallo).15 F 2.5(wV)-.25 G
+(ERB entirely)-2.5 E 30.82(restrictmailq Restrict)214 192 R
+(mailq command)2.5 E 35.27(restrictqrun Restrict)214 204 R
+(\255q command line \215ag)2.5 E(restricte)214 216 Q 24.87
+(xpand Restrict)-.15 F<ad62>2.5 E 2.5(va)-.15 G
+(nd \255v command line \215ags)-2.5 E 40.27(noreceipts Don')214 230 R
+2.5(tr)-.18 G(eturn success DSNs)-2.5 E/F2 7/Times-Roman@0 SF(20)-4 I F1
+27.49(nobodyreturn Don')214 242 R 2.5(tr)-.18 G
+(eturn the body of a message with DSNs)-2.5 E(goa)214 254 Q -.1(wa)-.15
+G 53.02(yD).1 G(isallo)-53.02 E 2.5(we)-.25 G
+(ssentially all SMTP status queries)-2.5 E(authw)214 266 Q 27.59
+(arnings Put)-.1 F(X-Authentication-W)2.5 E(arning: headers in messages)
+-.8 E(and log w)297.87 278 Q(arnings)-.1 E 12.5(noactualrecipient Don')
+214 290 R 2.5(tp)-.18 G(ut X-Actual-Recipient lines in DSNs)-2.5 E
+(which re)297.87 302 Q -.15(ve)-.25 G
+(al the actual account that addresses map to.).15 E 2.977(The \231goa)
+174 318.2 R -.1(wa)-.15 G 2.976(y\232 pseudo-\215ag sets all \215ags e)
+.1 F 2.976(xcept \231noreceipts\232, \231restrictmailq\232,)-.15 F 4.557
+(\231restrictqrun\232, \231restricte)174 330.2 R 4.557
+(xpand\232, \231noetrn\232, and \231nobodyreturn\232.)-.15 F 4.557
+(If mailq is)9.557 F 1.842(restricted, only people in the same group as\
+ the queue directory can print the)174 342.2 R 2.544(queue. If)174 354.2
+R .044(queue runs are restricted, only root and the o)2.544 F .045
+(wner of the queue directory)-.25 F 1.299(can run the queue.)174 366.2 R
+1.299(The \231restricte)6.299 F 1.299(xpand\232 pseudo-\215ag instructs)
+-.15 F/F3 10/Times-Italic@0 SF(sendmail)3.799 E F1 1.299(to drop)3.799 F
+(pri)174 378.2 Q(vile)-.25 E 1.607(ges when the)-.15 F F0<ad62>4.108 E
+(v)-.15 E F1 1.608(option is gi)4.108 F -.15(ve)-.25 G 4.108(nb).15 G
+4.108(yu)-4.108 G 1.608(sers who are neither root nor the)-4.108 F -.35
+(Tr)174 390.2 S 1.33(ustedUser so users cannot read pri).35 F -.25(va)
+-.25 G 1.33(te aliases, forw).25 F 1.33(ards, or :include: \214les.)-.1
+F(It)6.33 E .634(will add the \231NonRootSafeAddr\232 to the \231DontBl\
+ameSendmail\232 option to pre)174 402.2 R -.15(ve)-.25 G(nt).15 E .436
+(misleading unsafe address w)174 414.2 R 2.936(arnings. It)-.1 F .436
+(also o)2.936 F -.15(ve)-.15 G .436(rrides the).15 F F0<ad76>2.936 E F1
+(\(v)2.936 E .436(erbose\) command)-.15 F 1.292(line option to pre)174
+426.2 R -.15(ve)-.25 G 1.292(nt information leakage.).15 F 1.292
+(Authentication W)6.292 F 1.293(arnings add w)-.8 F(arn-)-.1 E .184
+(ings about v)174 438.2 R .183
+(arious conditions that may indicate attempts to spoof the mail system,)
+-.25 F(such as using a non-standard queue directory)174 450.2 Q(.)-.65 E
+(ProcessT)102 466.4 Q(itlePre\214x=)-.35 E F3(string)A F1 1.195
+([no short name] Pre\214x the process title sho)174 478.4 R 1.196
+(wn on 'ps' listings with)-.25 F F3(string)3.696 E F1 6.196(.T)C(he)
+-6.196 E F3(string)174 490.4 Q F1(will be macro processed.)2.5 E
+(QueueDirectory=)102 506.6 Q F3(dir)A F1 .584
+([Q] The QueueDirectory option serv)174 518.6 R .584(es tw)-.15 F 3.084
+(op)-.1 G 3.084(urposes. First,)-3.084 F .583(it speci\214es the direc-)
+3.083 F .482(tory or set of directories that comprise the def)174 530.6
+R .482(ault queue group.)-.1 F .483(Second, it speci-)5.483 F .104(\214\
+es the directory D which is the ancestor of all queue directories, and \
+which send-)174 542.6 R .721(mail uses as its current w)174 554.6 R .721
+(orking directory)-.1 F 5.721(.W)-.65 G .721
+(hen sendmail dumps core, it lea)-5.721 F -.15(ve)-.2 G(s).15 E 2.873
+(its core \214les in D.)174 566.6 R 2.873(There are tw)7.873 F 5.373(oc)
+-.1 G 5.373(ases. If)-5.373 F F3(dir)5.373 E F1 2.872
+(ends with an asterisk \(e)5.372 F(g,)-.15 E F3(/var/spool/mqueue/qd*)
+174 578.6 Q F1 .253
+(\), then all of the directories or symbolic links to directories)B(be)
+174 590.6 Q .433(ginning with `qd' in)-.15 F F3(/var/spool/mqueue)2.933
+E F1 .432(will be used as queue directories of the)2.933 F(def)174 602.6
+Q .275(ault queue group, and)-.1 F F3(/var/spool/mqueue)2.775 E F1 .276
+(will be used as the w)2.775 F .276(orking directory)-.1 F 2.82
+(D. Otherwise,)174 614.6 R F3(dir)2.82 E F1 .32
+(must name a directory \(usually)2.82 F F3(/var/spool/mqueue)2.82 E F1
+.32(\): the def)B(ault)-.1 E .545
+(queue group consists of the single queue directory)174 626.6 R F3(dir)
+3.045 E F1 3.045(,a)C .545(nd the w)-3.045 F .545(orking directory)-.1 F
+2.501(Di)174 638.6 S 2.501(ss)-2.501 G .001(et to)-2.501 F F3(dir)2.501
+E F1 5.001(.T)C 2.501(od)-5.801 G .001
+(e\214ne additional groups of queue directories, use the con\214gura-)
+-2.501 F .745(tion \214le `Q' command.)174 650.6 R .746
+(Do not change the queue directory structure while send-)5.746 F
+(mail is running.)174 662.6 Q .32 LW 76 678.8 72 678.8 DL 80 678.8 76
+678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL
+96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108
+678.8 104 678.8 DL 112 678.8 108 678.8 DL 116 678.8 112 678.8 DL 120
+678.8 116 678.8 DL 124 678.8 120 678.8 DL 128 678.8 124 678.8 DL 132
+678.8 128 678.8 DL 136 678.8 132 678.8 DL 140 678.8 136 678.8 DL 144
+678.8 140 678.8 DL 148 678.8 144 678.8 DL 152 678.8 148 678.8 DL 156
+678.8 152 678.8 DL 160 678.8 156 678.8 DL 164 678.8 160 678.8 DL 168
+678.8 164 678.8 DL 172 678.8 168 678.8 DL 176 678.8 172 678.8 DL 180
+678.8 176 678.8 DL 184 678.8 180 678.8 DL 188 678.8 184 678.8 DL 192
+678.8 188 678.8 DL 196 678.8 192 678.8 DL 200 678.8 196 678.8 DL 204
+678.8 200 678.8 DL 208 678.8 204 678.8 DL 212 678.8 208 678.8 DL 216
+678.8 212 678.8 DL/F4 5/Times-Roman@0 SF(20)93.6 689.2 Q/F5 8
+/Times-Roman@0 SF(N.B.: the)3.2 I/F6 8/Times-Bold@0 SF(nor)2 E(eceipts)
+-.144 E F5(\215ag turns of)2 E 2(fs)-.2 G(upport for RFC 1891 \(Deli)-2
+E -.12(ve)-.2 G(ry Status Noti\214cation\).).12 E 0 Cg EP
+%%Page: 73 69
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-73)195.86 E/F1 10/Times-Roman@0 SF(QueueF)102 96 Q(actor=)-.15 E
+/F2 10/Times-Italic@0 SF(factor)A F1 .614([q] Use)174 108 R F2(factor)
+3.114 E F1 .613
+(as the multiplier in the map function to decide when to just queue)
+3.114 F .415(up jobs rather than run them.)174 120 R .415(This v)5.415 F
+.415(alue is di)-.25 F .415(vided by the dif)-.25 F .415
+(ference between the)-.25 F 1.004(current load a)174 132 R -.15(ve)-.2 G
+1.004(rage and the load a).15 F -.15(ve)-.2 G 1.004(rage limit \().15 F
+F0(QueueLA)A F1 1.003(option\) to determine)3.503 F
+(the maximum message priority that will be sent.)174 144 Q(Def)5 E
+(aults to 600000.)-.1 E(QueueLA=)102 160.2 Q F2(LA)A F1 1.086
+([x] When the system load a)15.26 F -.15(ve)-.2 G 1.087(rage e).15 F
+(xceeds)-.15 E F2(LA)3.587 E F1 1.087(and the)3.587 F F0(QueueF)3.587 E
+(actor)-.25 E F1(\()3.587 E F0(q)A F1 3.587(\)o)C(ption)-3.587 E(di)174
+172.2 Q 1.465(vided by the dif)-.25 F 1.465
+(ference in the current load a)-.25 F -.15(ve)-.2 G 1.465(rage and the)
+.15 F F0(QueueLA)3.965 E F1(option)3.965 E .769(plus one is less than t\
+he priority of the message, just queue messages \(i.e., don')174 184.2 R
+(t)-.18 E .248(try to send them\).)174 196.2 R(Def)5.247 E .247
+(aults to 8 multiplied by the number of processors online on)-.1 F
+(the system \(if that can be determined\).)174 208.2 Q(QueueFileMode=)
+102 224.4 Q F2(mode)A F1 .961([no short name] Def)174 236.4 R .962
+(ault permissions for queue \214les \(octal\).)-.1 F .962
+(If not set, sendmail)5.962 F .213(uses 0600 unless its real and ef)174
+248.4 R(fecti)-.25 E .513 -.15(ve u)-.25 H .213(id are dif).15 F .212
+(ferent in which case it uses 0644.)-.25 F(QueueSortOrder=)102 264.6 Q
+F2(algorithm)A F1 .096([no short name] Sets the)174 276.6 R F2
+(algorithm)2.596 E F1 .096(used for sorting the queue.)2.596 F .097
+(Only the \214rst char)5.097 F(-)-.2 E 1.022(acter of the v)174 288.6 R
+1.022(alue is used.)-.25 F(Le)6.021 E -.05(ga)-.15 G 3.521(lv).05 G
+1.021(alues are \231host\232 \(to order by the name of the)-3.771 F 1.73
+(\214rst host name of the \214rst recipient\), \231\214lename\232 \(to \
+order by the name of the)174 300.6 R .283(queue \214le name\), \231time\
+\232 \(to order by the submission/creation time\), \231random\232 \(to)
+174 312.6 R .906(order randomly\), \231modi\214cation\232 \(to order by\
+ the modi\214cation time of the qf \214le)174 324.6 R 1.349(\(older ent\
+ries \214rst\)\), \231none\232 \(to not order\), and \231priority\232 \
+\(to order by message)174 336.6 R 2.527(priority\). Host)174 348.6 R
+.027(ordering mak)2.527 F .028(es better use of the connection cache, b)
+-.1 F .028(ut may tend to)-.2 F .323(process lo)174 360.6 R 2.823(wp)
+-.25 G .322(riority messages that go to a single host o)-2.823 F -.15
+(ve)-.15 G 2.822(rh).15 G .322(igh priority messages)-2.822 F 1.824
+(that go to se)174 372.6 R -.15(ve)-.25 G 1.824
+(ral hosts; it probably shouldn').15 F 4.325(tb)-.18 G 4.325(eu)-4.325 G
+1.825(sed on slo)-4.325 F 4.325(wn)-.25 G(etw)-4.325 E 1.825(ork links.)
+-.1 F .614(Filename and modi\214cation time ordering sa)174 384.6 R -.15
+(ve)-.2 G 3.114(st).15 G .614(he o)-3.114 F -.15(ve)-.15 G .614
+(rhead of reading all of the).15 F .671
+(queued items before starting the queue run.)174 396.6 R .671
+(Creation \(submission\) time ordering)5.671 F 1.854(is almost al)174
+408.6 R -.1(wa)-.1 G 1.854(ys a bad idea, since it allo).1 F 1.854
+(ws lar)-.25 F 1.854(ge, b)-.18 F 1.854(ulk mail to go out before)-.2 F
+(smaller)174 420.6 Q 3.713(,p)-.4 G 1.213(ersonal mail, b)-3.713 F 1.213
+(ut may ha)-.2 F 1.513 -.15(ve a)-.2 H 1.214
+(pplicability on some hosts with v).15 F 1.214(ery f)-.15 F(ast)-.1 E
+2.632(connections. Random)174 432.6 R .132(is useful if se)2.632 F -.15
+(ve)-.25 G .131(ral queue runners are started by hand which).15 F .389
+(try to drain the same queue since odds are the)174 444.6 R 2.889(yw)
+-.15 G .39(ill be w)-2.889 F .39(orking on dif)-.1 F .39(ferent parts)
+-.25 F(of the queue at the same time.)174 456.6 Q
+(Priority ordering is the def)5 E(ault.)-.1 E(QueueT)102 472.8 Q
+(imeout=)-.35 E F2(timeout)A F1 .356([T] A synon)174 484.8 R .356
+(ym for \231T)-.15 F 2.856(imeout.queuereturn\232. Use)-.35 F .355
+(that form instead of the \231Queue-)2.855 F -.35(Ti)174 496.8 S
+(meout\232 form.).35 E 32.83(RandFile [no)102 513 R 1.036(short name] N\
+ame of \214le containing random data or the name of the UNIX)3.536 F
+(sock)174 525 Q 1.631(et if EGD is used.)-.1 F 4.131(A\()6.631 G 1.631
+(required\) pre\214x "e)-4.131 F 1.63
+(gd:" or "\214le:" speci\214es the type.)-.15 F(ST)174 537 Q(AR)-.93 E
+1.561
+(TTLS requires this \214lename if the compile \215ag HASURANDOMDEV is)
+-.6 F(not set \(see sendmail/README\).)174 549 Q(Resolv)102 565.2 Q
+(erOptions=)-.15 E F2(options)A F1 .128([I] Set resolv)174 577.2 R .127
+(er options.)-.15 F -1.11(Va)5.127 G .127(lues can be set using)1.11 F
+F0(+)2.627 E F2<8d61>A(g)-.1 E F1 .127(and cleared using)2.627 F F0<ad>
+2.627 E F2<8d61>A(g)-.1 E F1 2.627(;t)C(he)-2.627 E F2<8d61>174 589.2 Q
+(g)-.1 E F1 5.013(sc)C 2.513(an be \231deb)-5.013 F 2.513
+(ug\232, \231aaonly\232, \231use)-.2 F 2.514
+(vc\232, \231primary\232, \231igntc\232, \231recurse\232, \231def-)-.25
+F 2.689
+(names\232, \231stayopen\232, \231use_inet6\232, or \231dnsrch\232.)174
+601.2 R 2.688(The string \231HasW)7.688 F(ildcardMX\232)-.4 E .282
+(\(without a)174 613.2 R F0(+)2.782 E F1(or)2.782 E F0<ad>2.782 E F1
+2.782(\)c)C .283(an be speci\214ed to turn of)-2.782 F 2.783(fm)-.25 G
+.283(atching ag)-2.783 F .283(ainst MX records when)-.05 F .89
+(doing name canoni\214cations.)174 625.2 R .89(The string \231W)5.89 F
+(orkAroundBrok)-.8 E .89(enAAAA\232 \(without a)-.1 F F0(+)174 637.2 Q
+F1(or)3.472 E F0<ad>3.472 E F1 3.472(\)c)C .972(an be speci\214ed to w)
+-3.472 F .972(ork around some brok)-.1 F .973(en nameserv)-.1 F .973
+(ers which return)-.15 F(SER)174 649.2 Q(VF)-.8 E 1.001
+(AIL \(a temporary f)-.74 F 1.001(ailure\) on T_AAAA \(IPv6\) lookups.)
+-.1 F 1.001(Notice: it might)6.001 F
+(be necessary to apply the same \(or similar\) options to)174 661.2 Q F2
+(submit.cf)2.5 E F1(too.)2.5 E -1.04(RequiresDirfsync [no)102 677.4 R
+2.782(short name] This option can be used to o)5.282 F -.15(ve)-.15 G
+2.783(rride the compile time \215ag).15 F F0(REQ)174 689.4 Q
+(UIRES_DIR_FSYNC)-.1 E F1 .872(at runtime by setting it to)3.372 F/F3 9
+/Times-Roman@0 SF -.09(fa)3.372 G(lse).09 E F1 5.871(.I)C 3.371(ft)
+-5.871 G .871(he compile time)-3.371 F .017
+(\215ag is not set, the option is ignored.)174 701.4 R .018
+(The \215ag turns on support for \214le systems that)5.017 F .21
+(require to call)174 713.4 R F2(fsync\(\))2.71 E F1 .209
+(for a directory if the meta-data in it has been changed.)2.71 F(This)
+5.209 E .074(should be turned on at least for older v)174 725.4 R .075
+(ersions of ReiserFS; it is enabled by def)-.15 F(ault)-.1 E 0 Cg EP
+%%Page: 74 70
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-74 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.451
+(for Linux.)174 96 R 1.451
+(According to some information this \215ag is not needed an)6.451 F 1.45
+(ymore for)-.15 F -.1(ke)174 108 S(rnel 2.4.16 and ne).1 E(wer)-.25 E(.)
+-.55 E 10.61(RrtImpliesDsn [R])102 124.2 R 1.52
+(If this option is set, a \231Return-Receipt-T)4.02 F 1.52
+(o:\232 header causes the request of a)-.8 F 1.02
+(DSN, which is sent to the en)174 136.2 R -.15(ve)-.4 G 1.02
+(lope sender as required by RFC 1891, not to the).15 F(address gi)174
+148.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(nt)-2.5 G(he header)-2.5 E(.)
+-.55 E(RunAsUser=)102 164.4 Q/F2 10/Times-Italic@0 SF(user)A F1 3.752
+([no short name] The)2.48 F F2(user)6.252 E F1 3.752
+(parameter may be a user name \(look)6.252 F 3.753(ed up in)-.1 F F2
+(/etc/passwd)174 176.4 Q F1 3.046(\)o)C 3.046(ran)-3.046 G .546
+(umeric user id; either form can ha)-3.046 F .846 -.15(ve \231)-.2 H
+.545(:group\232 attached \(where).15 F .965
+(group can be numeric or symbolic\).)174 188.4 R .966
+(If set to a non-zero \(non-root\) v)5.965 F(alue,)-.25 E F2(send-)3.466
+E(mail)174 202.4 Q F1 .484
+(will change to this user id shortly after startup)2.984 F/F3 7
+/Times-Roman@0 SF(21)-4 I F1 5.483(.T)4 K .483(his a)-5.483 F -.2(vo)-.2
+G .483(ids a certain class).2 F 1.844(of security problems.)174 214.4 R
+(Ho)6.844 E(we)-.25 E -.15(ve)-.25 G 2.644 -.4(r, t).15 H 1.844
+(his means that all \231.forw).4 F 1.844(ard\232 and \231:include:\232)
+-.1 F 1.428(\214les must be readable by the indicated)174 226.4 R F2
+(user)3.928 E F1 1.428(and all \214les to be written must be)3.928 F
+.042(writable by)174 238.4 R F2(user)2.542 E F1 .042
+(Also, all \214le and program deli)2.542 F -.15(ve)-.25 G .043
+(ries will be mark).15 F .043(ed unsafe unless)-.1 F 2.102(the option)
+174 250.4 R F0(DontBlameSendmail=NonRootSafeAddr)4.602 E F1 2.101
+(is set, in which case the)4.601 F(deli)174 262.4 Q -.15(ve)-.25 G .777
+(ry will be done as).15 F F2(user)3.277 E F1 5.777(.I)C 3.278(ti)-5.777
+G 3.278(sa)-3.278 G .778(lso incompatible with the)-3.278 F F0
+(SafeFileEn)3.278 E(vir)-.4 E(on-)-.18 E(ment)174 274.4 Q F1 2.621
+(option. In)2.621 F .121(other w)2.621 F .121
+(ords, it may not actually add much to security on an a)-.1 F -.15(ve)
+-.2 G -.2(r-).15 G .592(age system, and may in f)174 286.4 R .593
+(act detract from security \(because other \214le permissions)-.1 F 1.58
+(must be loosened\).)174 298.4 R(Ho)6.579 E(we)-.25 E -.15(ve)-.25 G
+2.379 -.4(r, i).15 H 4.079(ts).4 G 1.579(hould be useful on \214re)
+-4.079 F -.1(wa)-.25 G 1.579(lls and other places).1 F(where users don')
+174 310.4 Q 2.5(th)-.18 G -2.25 -.2(av e)-2.5 H
+(accounts and the aliases \214le is well constrained.)2.7 E(RecipientF)
+102 326.6 Q(actor=)-.15 E F2(fact)A F1 .637([y] The indicated)174 338.6
+R F2(fact)3.137 E F1 .637(or is added to the priority \(thus)B F2
+(lowering)3.137 E F1 .638(the priority of the)3.137 F .231
+(job\) for each recipient, i.e., this v)174 350.6 R .231
+(alue penalizes jobs with lar)-.25 F .23(ge numbers of recipi-)-.18 F
+2.5(ents. Def)174 362.6 R(aults to 30000.)-.1 E(RefuseLA=)102 378.8 Q F2
+(LA)A F1 1.012([X] When the system load a)13.59 F -.15(ve)-.2 G 1.012
+(rage e).15 F(xceeds)-.15 E F2(LA)3.512 E F1 3.512(,r)C 1.012
+(efuse incoming SMTP connec-)-3.512 F 2.659(tions. Def)174 390.8 R .158
+(aults to 12 multiplied by the number of processors online on the syste\
+m)-.1 F(\(if that can be determined\).)174 402.8 Q(RejectLogInterv)102
+419 Q(al=)-.25 E F2(timeout)A F1 1.627([no short name] Log interv)174
+431 R 1.627(al when refusing connections for this long \(def)-.25 F
+(ault:)-.1 E(3h\).)174 443 Q(RetryF)102 459.2 Q(actor=)-.15 E F2(fact)A
+F1 .772([Z] The)3.74 F F2(fact)3.272 E F1 .772
+(or is added to the priority e)B -.15(ve)-.25 G .771
+(ry time a job is processed.).15 F .771(Thus, each)5.771 F .994(time a \
+job is processed, its priority will be decreased by the indicated v)174
+471.2 R 3.494(alue. In)-.25 F 1.108(most en)174 483.2 R 1.108
+(vironments this should be positi)-.4 F -.15(ve)-.25 G 3.608(,s).15 G
+1.108(ince hosts that are do)-3.608 F 1.107(wn are all too)-.25 F
+(often do)174 495.2 Q(wn for a long time.)-.25 E(Def)5 E
+(aults to 90000.)-.1 E(SafeFileEn)102 511.4 Q(vironment=)-.4 E F2(dir)A
+F1 .021([no short name] If this option is set,)174 523.4 R F2(sendmail)
+2.521 E F1 .021(will do a)2.521 F F2 -.15(ch)2.521 G -.45(ro).15 G(ot)
+.45 E F1 .022(\(2\) call into the indi-)B(cated)174 535.4 Q F2(dir)2.833
+E F1 .333(ectory before doing an)B 2.833<798c>-.15 G .333(le writes.)
+-2.833 F .333(If the \214le name speci\214ed by the user)5.333 F(be)174
+547.4 Q .587(gins with)-.15 F F2(dir)3.087 E F1 3.087(,t)C .587
+(hat partial path name will be stripped of)-3.087 F 3.087(fb)-.25 G .588
+(efore writing, so \(for)-3.087 F -.15(ex)174 559.4 S 2.225
+(ample\) if the SafeFileEn).15 F 2.225(vironment v)-.4 F 2.224
+(ariable is set to \231/safe\232 then aliases of)-.25 F 1.557(\231/safe\
+/logs/\214le\232 and \231/logs/\214le\232 actually indicate the same \
+\214le.)174 571.4 R(Additionally)6.557 E 4.057(,i)-.65 G(f)-4.057 E
+(this option is set,)174 583.4 Q F2(sendmail)2.5 E F1(refuses to deli)
+2.5 E -.15(ve)-.25 G 2.5(rt).15 G 2.5(os)-2.5 G(ymbolic links.)-2.5 E
+(Sa)102 599.6 Q -.15(ve)-.2 G 10.41(FromLine [f]).15 F(Sa)4.493 E 2.293
+-.15(ve U)-.2 H 1.993
+(NIX-style \231From\232 lines at the front of headers.).15 F 1.992
+(Normally the)6.992 F 4.492(ya)-.15 G(re)-4.492 E
+(assumed redundant and discarded.)174 611.6 Q .62(SendMimeErrors [j])102
+627.8 R .373(If set, send error messages in MIME format \(see RFC 2045 \
+and RFC 1344 for)2.873 F 2.915(details\). If)174 639.8 R(disabled,)2.915
+E F2(sendmail)2.915 E F1 .415(will not return the DSN k)2.915 F -.15(ey)
+-.1 G -.1(wo).15 G .414(rd in response to an).1 F 1.731
+(EHLO and will not do Deli)174 651.8 R -.15(ve)-.25 G 1.731
+(ry Status Noti\214cation processing as described in).15 F(RFC 1891.)174
+663.8 Q .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80
+678.8 DL 88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL
+100 678.8 96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112
+678.8 108 678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8 DL 124
+678.8 120 678.8 DL 128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136
+678.8 132 678.8 DL 140 678.8 136 678.8 DL 144 678.8 140 678.8 DL 148
+678.8 144 678.8 DL 152 678.8 148 678.8 DL 156 678.8 152 678.8 DL 160
+678.8 156 678.8 DL 164 678.8 160 678.8 DL 168 678.8 164 678.8 DL 172
+678.8 168 678.8 DL 176 678.8 172 678.8 DL 180 678.8 176 678.8 DL 184
+678.8 180 678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL 196
+678.8 192 678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208
+678.8 204 678.8 DL 212 678.8 208 678.8 DL 216 678.8 212 678.8 DL/F4 5
+/Times-Roman@0 SF(21)93.6 689.2 Q/F5 8/Times-Roman@0 SF(When running as\
+ a daemon, it changes to this user after accepting a connection b)3.2 I
+(ut before reading an)-.16 E(y)-.12 E F3(SMTP)2 E F5(commands.)2 E 0 Cg
+EP
+%%Page: 75 71
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-75)195.86 E/F1 10/Times-Roman@0 SF(Serv)102 96 Q 10.77
+(erCertFile [no)-.15 F .581
+(short name] File containing the certi\214cate of the serv)3.081 F(er)
+-.15 E 3.081(,i)-.4 G .58(.e., this certi\214cate is)-3.081 F
+(used when sendmail acts as serv)174 108 Q(er \(used for ST)-.15 E(AR)
+-.93 E(TTLS\).)-.6 E(Serv)102 124.2 Q(erK)-.15 E -.15(ey)-.25 G 11.73
+(File [no).15 F .542(short name] File containing the pri)3.042 F -.25
+(va)-.25 G .543(te k).25 F .843 -.15(ey b)-.1 H .543
+(elonging to the serv).15 F .543(er certi\214cate)-.15 F(\(used for ST)
+174 136.2 Q(AR)-.93 E(TTLS\).)-.6 E(ServiceSwitchFile=)102 152.4 Q/F2 10
+/Times-Italic@0 SF(\214lename)A F1 1.533([no short name] If your host o\
+perating system has a service switch abstraction)174 164.4 R .003(\(e.g\
+., /etc/nsswitch.conf on Solaris or /etc/svc.conf on Ultrix and DEC OSF\
+/1\) that)174 176.4 R .814
+(service will be consulted and this option is ignored.)174 188.4 R .814
+(Otherwise, this is the name)5.814 F 1.082(of a \214le that pro)174
+200.4 R 1.082
+(vides the list of methods used to implement particular services.)-.15 F
+1.069(The syntax is a series of lines, each of which is a sequence of w)
+174 212.4 R 3.569(ords. The)-.1 F(\214rst)3.569 E -.1(wo)174 224.4 S
+1.363(rd is the service name, and follo).1 F 1.363(wing w)-.25 F 1.364
+(ords are service types.)-.1 F 1.364(The services)6.364 F(that)174 236.4
+Q F2(sendmail)4.11 E F1 1.61
+(consults directly are \231aliases\232 and \231hosts.)4.11 F 6.61<9a53>
+-.7 G 1.61(ervice types can be)-6.61 F 1.754(\231dns\232, \231nis\232, \
+\231nisplus\232, or \231\214les\232 \(with the ca)174 248.4 R -.15(ve)
+-.2 G 1.755(at that the appropriate support).15 F .791
+(must be compiled in before the service can be referenced\).)174 260.4 R
+.79(If ServiceSwitchFile)5.791 F .925(is not speci\214ed, it def)174
+272.4 R .925(aults to /etc/mail/service.switch.)-.1 F .925
+(If that \214le does not e)5.925 F(xist,)-.15 E(the def)174 284.4 Q
+(ault switch is:)-.1 E 54.71(aliases \214les)214 300.6 R 60.81
+(hosts dns)214 312.6 R(nis \214les)2.5 E(The def)174 328.8 Q
+(ault \214le is \231/etc/mail/service.switch\232.)-.1 E(Se)102 345 Q
+-.15(ve)-.25 G 12.12(nBitInput [7]).15 F .322(Strip input to se)2.822 F
+-.15(ve)-.25 G 2.822(nb).15 G .321
+(its for compatibility with old systems.)-2.822 F .321(This shouldn')
+5.321 F 2.821(tb)-.18 G(e)-2.821 E(necessary)174 357 Q(.)-.65 E
+(SharedMemoryK)102 373.2 Q -.15(ey)-.25 G .744([no short name] K)174
+385.2 R 1.044 -.15(ey t)-.25 H 3.244(ou).15 G .745
+(se for shared memory se)-3.244 F .745
+(gment; if not set \(or 0\), shared)-.15 F 1.16
+(memory will not be used.)174 397.2 R 1.159(If set to -1)6.16 F F2
+(sendmail)3.659 E F1 1.159(can select a k)3.659 F 1.459 -.15(ey i)-.1 H
+1.159(tself pro).15 F(vided)-.15 E .658(that also)174 409.2 R F0(Shar)
+3.158 E(edMemoryK)-.18 E(eyFile)-.25 E F1 .658(is set.)3.158 F .658
+(Requires support for shared memory to)5.658 F 1.413(be compiled into)
+174 421.2 R F2(sendmail)3.913 E F1 6.413(.I)C 3.912(ft)-6.413 G 1.412
+(his option is set,)-3.912 F F2(sendmail)3.912 E F1 1.412
+(can share some data)3.912 F .307(between dif)174 433.2 R .307
+(ferent instances.)-.25 F -.15(Fo)5.307 G 2.807(re).15 G .308
+(xample, the number of entries in a queue direc-)-2.957 F .033
+(tory or the a)174 445.2 R -.25(va)-.2 G .032
+(ilable space in a \214le system.).25 F .032(This allo)5.032 F .032
+(ws for more ef)-.25 F .032(\214cient program)-.25 F -.15(exe)174 457.2
+S .09(cution, since only one process needs to update the data instead o\
+f each indi).15 F(vid-)-.25 E(ual process g)174 469.2 Q
+(athering the data each time it is required.)-.05 E(SharedMemoryK)102
+485.4 Q -.15(ey)-.25 G(File).15 E .087([no short name] If)174 497.4 R F0
+(Shar)2.587 E(edMemoryK)-.18 E(ey)-.25 E F1 .086
+(is set to -1 then the automatically selected)2.587 F(shared memory k)
+174 509.4 Q .3 -.15(ey w)-.1 H(ill be stored in the speci\214ed \214le.)
+.15 E(SingleLineFromHeader)102 525.6 Q .958
+([no short name] If set, From: lines that ha)174 537.6 R 1.259 -.15
+(ve e)-.2 H .959(mbedded ne).15 F .959(wlines are unwrapped)-.25 F .243
+(onto one line.)174 549.6 R .243
+(This is to get around a botch in Lotus Notes that apparently cannot)
+5.243 F(understand le)174 561.6 Q -.05(ga)-.15 G
+(lly wrapped RFC 822 headers.).05 E(SingleThreadDeli)102 577.8 Q -.15
+(ve)-.25 G(ry).15 E .333
+([no short name] If set, a client machine will ne)174 589.8 R -.15(ve)
+-.25 G 2.833(rt).15 G .334(ry to open tw)-2.833 F 2.834(oS)-.1 G .334
+(MTP connec-)-2.834 F 1.712(tions to a single serv)174 601.8 R 1.712
+(er machine at the same time, e)-.15 F -.15(ve)-.25 G 4.211(ni).15 G
+4.211(nd)-4.211 G(if)-4.211 E 1.711(ferent processes.)-.25 F .952
+(That is, if another)174 613.8 R F2(sendmail)3.452 E F1 .952
+(is already talking to some host a ne)3.452 F(w)-.25 E F2(sendmail)3.453
+E F1(will)3.453 E 2.388(not open another connection.)174 625.8 R 2.387
+(This property is of mix)7.387 F 2.387(ed v)-.15 F 2.387
+(alue; although this)-.25 F .386(reduces the load on the other machine,\
+ it can cause mail to be delayed \(for e)174 637.8 R(xam-)-.15 E .719
+(ple, if one)174 649.8 R F2(sendmail)3.219 E F1 .719(is deli)3.219 F
+-.15(ve)-.25 G .718(ring a huge message, other).15 F F2(sendmail)3.218 E
+F1 3.218(sw)C(on')-3.318 E 3.218(tb)-.18 G 3.218(ea)-3.218 G(ble)-3.218
+E 1.542(to send e)174 661.8 R -.15(ve)-.25 G 4.042(ns).15 G 1.542
+(mall messages\).)-4.042 F 1.543
+(Also, it requires another \214le descriptor \(for the)6.542 F .997
+(lock \214le\) per connection, so you may ha)174 673.8 R 1.296 -.15
+(ve t)-.2 H 3.496(or).15 G .996(educe the)-3.496 F F0
+(ConnectionCacheSize)3.496 E F1 .234(option to a)174 685.8 R -.2(vo)-.2
+G .234(id running out of per).2 F .235(-process \214le descriptors.)-.2
+F .235(Requires the)5.235 F F0(HostSta-)2.735 E(tusDir)174 697.8 Q
+(ectory)-.18 E F1(option.)2.5 E 0 Cg EP
+%%Page: 76 72
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-76 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(SmtpGreetingMessage=)102 96 Q/F2 10/Times-Italic@0 SF(messa)A -.1(ge)
+-.1 G F1 .345([$e macro] The message printed when the SMTP serv)174 108
+R .344(er starts up.)-.15 F(Def)5.344 E .344(aults to \231$j)-.1 F
+(Sendmail $v ready at $b\232.)174 120 Q 22.28(SoftBounce If)102 136.2 R
+.092(set, issue temporary errors \(4xy\) instead of permanent errors \(\
+5xy\).)2.592 F .093(This can be)5.093 F .127
+(useful during testing of a ne)174 148.2 R 2.627(wc)-.25 G .127
+(on\214guration to a)-2.627 F -.2(vo)-.2 G .126
+(id erroneous bouncing of mails.).2 F(StatusFile=)102 164.4 Q F2(\214le)
+A F1 .523([S] Log summary statistics in the named)14.13 F F2(\214le)
+3.024 E F1 5.524(.I)C 3.024(fn)-5.524 G 3.024<6f8c>-3.024 G .524
+(le name is speci\214ed, "statis-)-3.024 F .548(tics" is used.)174 176.4
+R .547(If not set, no summary statistics are sa)5.548 F -.15(ve)-.2 G
+3.047(d. This).15 F .547(\214le does not gro)3.047 F(w)-.25 E(in size.)
+174 188.4 Q(It can be printed using the)5 E F2(mailstats)2.5 E F1
+(\(8\) program.)A 28.4(SuperSafe [s])102 204.6 R .364
+(This option can be set to T)2.864 F .364(rue, F)-.35 F .364
+(alse, Interacti)-.15 F -.15(ve)-.25 G 2.864(,o).15 G 2.864(rP)-2.864 G
+(ostMilter)-2.864 E 5.364(.I)-.55 G 2.864(fs)-5.364 G .364(et to T)
+-2.864 F(rue,)-.35 E F2(sendmail)174 216.6 Q F1 .117(will be super)2.617
+F .116(-safe when running things, i.e., al)-.2 F -.1(wa)-.1 G .116
+(ys instantiate the queue).1 F .117(\214le, e)174 228.6 R -.15(ve)-.25 G
+2.617(ni).15 G 2.617(fy)-2.617 G .117
+(ou are going to attempt immediate deli)-2.617 F -.15(ve)-.25 G(ry).15 E
+(.)-.65 E F2(Sendmail)5.118 E F1(al)2.618 E -.1(wa)-.1 G .118
+(ys instan-).1 F .088(tiates the queue \214le before returning control \
+to the client under an)174 240.6 R 2.587(yc)-.15 G(ircumstances.)-2.587
+E 1.299(This should really)174 252.6 R F2(always)3.799 E F1 1.299
+(be set to T)3.799 F 3.799(rue. The)-.35 F(Interacti)3.799 E 1.599 -.15
+(ve v)-.25 H 1.3(alue has been intro-)-.1 F .222
+(duced in 8.12 and can be used together with)174 264.6 R F0(Deli)2.721 E
+-.1(ve)-.1 G(ryMode=i).1 E F1 5.221(.I)C 2.721(ts)-5.221 G .221
+(kips some syn-)-2.721 F 1.532(chronization calls which are ef)174 276.6
+R(fecti)-.25 E -.15(ve)-.25 G 1.533(ly doubled in the code e).15 F -.15
+(xe)-.15 G 1.533(cution path for).15 F .336(this mode.)174 288.6 R .336
+(If set to PostMilter)5.336 F(,)-.4 E F2(sendmail)2.836 E F1 .336
+(defers synchronizing the queue \214le until)2.836 F(an)174 300.6 Q
+3.787(ym)-.15 G 1.287(ilters ha)-3.787 F 1.587 -.15(ve s)-.2 H 1.287
+(ignaled acceptance of the message.).15 F 1.288
+(PostMilter is useful only)6.287 F(when)174 312.6 Q F2(sendmail)3.822 E
+F1 1.322(is running as an SMTP serv)3.822 F 1.321
+(er; in all other situations it acts the)-.15 F(same as T)174 324.6 Q
+(rue.)-.35 E 6.16(TLSSrvOptions [no)102 340.8 R .238
+(short name] List of options for SMTP ST)2.737 F(AR)-.93 E .238
+(TTLS for the serv)-.6 F .238(er consisting of)-.15 F .18
+(single characters with interv)174 352.8 R .18
+(ening white space or commas.)-.15 F .18(The \215ag `)5.18 F(`V')-.74 E
+2.68('d)-.74 G(isables)-2.68 E .51(client v)174 364.8 R .511(eri\214cat\
+ion, and hence it is not possible to use a client certi\214cate for rel\
+ay-)-.15 F 2.5(ing. Currently)174 376.8 R(there are no other \215ags a)
+2.5 E -.25(va)-.2 G(ilable.).25 E -.7(Te)102 393 S(mpFileMode=).7 E F2
+(mode)A F1 .062
+([F] The \214le mode for transcript \214les, \214les to which)174 405 R
+F2(sendmail)2.561 E F1(deli)2.561 E -.15(ve)-.25 G .061(rs directly).15
+F 2.561<2c8c>-.65 G(les)-2.561 E .61(in the)174 417 R F0(HostStatusDir)
+3.11 E(ectory)-.18 E F1 3.11(,a)C(nd)-3.11 E F0(StatusFile)3.11 E F1
+5.61(.I)C 3.11(ti)-5.61 G 3.11(si)-3.11 G .61
+(nterpreted in octal by def)-3.11 F(ault.)-.1 E(Def)174 429 Q
+(aults to 0600.)-.1 E -.35(Ti)102 445.2 S(meout.).35 E F2(type)A F1(=)A
+F2(timeout)1.666 E F1 .417
+([r; subsumes old T option as well] Set timeout v)174 457.2 R 2.917
+(alues. F)-.25 F .417(or more information, see)-.15 F(section 4.1.)174
+469.2 Q -.35(Ti)102 485.4 S(meZoneSpec=).35 E F2(tzinfo)A F1 .218
+([t] Set the local time zone info to)174 497.4 R F2(tzinfo)2.718 E F1
+2.718<8a66>2.718 G .218(or e)-2.718 F .218(xample, \231PST8PDT\232.)-.15
+F(Actually)5.218 E 2.718(,i)-.65 G(f)-2.718 E 1.346
+(this is not set, the TZ en)174 509.4 R 1.346(vironment v)-.4 F 1.346
+(ariable is cleared \(so the system def)-.25 F 1.345(ault is)-.1 F .208
+(used\); if set b)174 521.4 R .208(ut null, the user')-.2 F 2.708(sT)
+-.55 G 2.708(Zv)-2.708 G .208
+(ariable is used, and if set and non-null the TZ)-2.958 F -.25(va)174
+533.4 S(riable is set to this v).25 E(alue.)-.25 E -.35(Tr)102 549.6 S
+(ustedUser=).35 E F2(user)A F1 3.753([no short name] The).06 F F2(user)
+6.253 E F1 3.752(parameter may be a user name \(look)6.252 F 3.752
+(ed up in)-.1 F F2(/etc/passwd)174 561.6 Q F1 2.742(\)o)C 2.742(ran)
+-2.742 G .242(umeric user id.)-2.742 F -.35(Tr)5.242 G .242
+(usted user for \214le o).35 F .243(wnership and starting the)-.25 F
+3.78(daemon. If)174 573.6 R 1.279
+(set, generated alias databases and the control sock)3.779 F 1.279
+(et \(if con\214gured\))-.1 F(will automatically be o)174 585.6 Q
+(wned by this user)-.25 E(.)-.55 E -.35(Tr)102 601.8 S 5.96
+(yNullMXList [w]).35 F .114
+(If this system is the \231best\232 \(that is, lo)2.613 F .114
+(west preference\) MX for a gi)-.25 F -.15(ve)-.25 G 2.614(nh).15 G .114
+(ost, its)-2.614 F 1.168(con\214guration rules should normally detect t\
+his situation and treat that condition)174 613.8 R .257
+(specially by forw)174 625.8 R .258
+(arding the mail to a UUCP feed, treating it as local, or whate)-.1 F
+-.15(ve)-.25 G -.55(r.).15 G(Ho)174 637.8 Q(we)-.25 E -.15(ve)-.25 G
+1.686 -.4(r, i).15 H 3.386(ns).4 G .886
+(ome cases \(such as Internet \214re)-3.386 F -.1(wa)-.25 G .886
+(lls\) you may w).1 F .885(ant to try to con-)-.1 F .07
+(nect directly to that host as though it had no MX records at all.)174
+649.8 R .07(Setting this option)5.07 F(causes)174 661.8 Q F2(sendmail)
+3.014 E F1 .514(to try this.)3.014 F .514(The do)5.514 F .514
+(wnside is that errors in your con\214guration are)-.25 F(lik)174 673.8
+Q 2.116(ely to be diagnosed as \231host unkno)-.1 F 2.116
+(wn\232 or \231message timed out\232 instead of)-.25 F
+(something more meaningful.)174 685.8 Q(This option is disrecommended.)5
+E(UnixFromLine=)102 702 Q F2(fr)A(omline)-.45 E F1 .236
+([$l macro] De\214nes the format used when)174 714 R F2(sendmail)2.736 E
+F1 .236(must add a UNIX-style From_)2.736 F 0 Cg EP
+%%Page: 77 73
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-77)195.86 E/F1 10/Times-Roman@0 SF 1.324
+(line \(that is, a line be)174 96 R 1.325
+(ginning \231From<space>user\232\).)-.15 F(Def)6.325 E 1.325
+(aults to \231From $g)-.1 F($d\232.)6.325 E(Don')174 108 Q 2.646(tc)-.18
+G .146(hange this unless your system uses a dif)-2.646 F .146
+(ferent UNIX mailbox format \(v)-.25 F(ery)-.15 E(unlik)174 120 Q
+(ely\).)-.1 E(UnsafeGroupWrites)102 136.2 Q .085
+([no short name] If set \(def)174 148.2 R .085
+(ault\), :include: and .forw)-.1 F .086
+(ard \214les that are group writable)-.1 F .655
+(are considered \231unsafe\232, that is, the)174 160.2 R 3.155(yc)-.15 G
+.654(annot reference programs or write directly)-3.155 F .536
+(to \214les.)174 172.2 R -.8(Wo)5.536 G .536
+(rld writable :include: and .forw).8 F .537(ard \214les are al)-.1 F -.1
+(wa)-.1 G .537(ys unsafe.).1 F .537(Note: use)5.537 F F0
+(DontBlameSendmail)174 184.2 Q F1(instead; this option is deprecated.)
+2.5 E(UseErrorsT)102 200.4 Q 21.15(o[)-.8 G .826
+(l] If there is an \231Errors-T)-21.15 F .826(o:\232 header)-.8 F 3.326
+(,s)-.4 G .826(end error messages to the addresses listed)-3.326 F 3.134
+(there. The)174 212.4 R 3.134(yn)-.15 G .634(ormally go to the en)-3.134
+F -.15(ve)-.4 G .635(lope sender).15 F 5.635(.U)-.55 G .635
+(se of this option causes)-5.635 F/F2 10/Times-Italic@0 SF(send-)3.135 E
+(mail)174 224.4 Q F1(to violate RFC 1123.)2.5 E
+(This option is disrecommended and deprecated.)5 E(UserDatabaseSpec=)102
+240.6 Q F2(udbspec)A F1([U] The user database speci\214cation.)174 252.6
+Q -1.11(Ve)102 268.8 S 37.29(rbose [v])1.11 F .561(Run in v)3.061 F .561
+(erbose mode.)-.15 F .561(If this is set,)5.561 F F2(sendmail)3.061 E F1
+.56(adjusts options)3.061 F F0(HoldExpensi)3.06 E -.1(ve)-.1 G F1(\(old)
+174 280.8 Q F0(c)2.635 E F1 2.635(\)a)C(nd)-2.635 E F0(Deli)2.635 E -.1
+(ve)-.1 G(ryMode).1 E F1(\(old)2.635 E F0(d)2.635 E F1 2.635(\)s)C 2.635
+(ot)-2.635 G .135(hat all mail is deli)-2.635 F -.15(ve)-.25 G .136
+(red completely in a sin-).15 F 1.244
+(gle job so that you can see the entire deli)174 292.8 R -.15(ve)-.25 G
+1.244(ry process.).15 F(Option)6.244 E F0 -1(Ve)3.743 G(rbose)1 E F1
+(should)3.743 E F2(ne)174 304.8 Q(ver)-.15 E F1 1.269(be set in the con\
+\214guration \214le; it is intended for command line use only)3.769 F(.)
+-.65 E .435(Note that the use of option)174 316.8 R F0 -1(Ve)2.935 G
+(rbose)1 E F1 .435(can cause authentication information to leak,)2.935 F
+.015(if you use a sendmail client to authenticate to a serv)174 328.8 R
+(er)-.15 E 5.015(.I)-.55 G 2.515(ft)-5.015 G .015
+(he authentication mech-)-2.515 F .936(anism uses plain te)174 340.8 R
+.936(xt passw)-.15 F .936
+(ords \(as with LOGIN or PLAIN\), then the passw)-.1 F(ord)-.1 E 1.417
+(could be compromised.)174 352.8 R 3.017 -.8(To a)6.417 H -.2(vo).6 G
+1.417(id this, do not install sendmail set-user).2 F 1.418(-ID root,)-.2
+F(and disable the)174 364.8 Q F0(VERB)2.5 E F1
+(SMTP command with a suitable)2.5 E F0(Pri)2.5 E -.1(va)-.1 G(cyOptions)
+.1 E F1(setting.)2.5 E(XscriptFileBuf)102 381 Q(ferSize=)-.25 E F2(thr)A
+(eshold)-.37 E F1 1.101([no short name] Set the)174 393 R F2(thr)3.601 E
+(eshold)-.37 E F1 3.601(,i)C 3.601(nb)-3.601 G 1.101
+(ytes, before a memory-based queue tran-)-3.601 F
+(script \214le becomes disk-based.)174 405 Q(The def)5 E
+(ault is 4096 bytes.)-.1 E .108(All options can be speci\214ed on the c\
+ommand line using the \255O or \255o \215ag, b)102 421.2 R .109
+(ut most will cause)-.2 F F2(send-)2.609 E(mail)102 433.2 Q F1 .664
+(to relinquish its set-user)3.164 F .664(-ID permissions.)-.2 F .663
+(The options that will not cause this are Se)5.664 F -.15(ve)-.25 G
+(nBitIn-).15 E 1.319
+(put [7], EightBitMode [8], MinFreeBlocks [b], CheckpointInterv)102
+445.2 R 1.319(al [C], Deli)-.25 F -.15(ve)-.25 G 1.319
+(ryMode [d], Error).15 F(-)-.2 E .043
+(Mode [e], IgnoreDots [i], SendMimeErrors [j], LogLe)102 457.2 R -.15
+(ve)-.25 G 2.542(l[).15 G .042(L], MeT)-2.542 F .042
+(oo [m], OldStyleHeaders [o], Pri-)-.8 F -.25(va)102 469.2 S -.15(cy).25
+G .302(Options [p], SuperSafe [s], V).15 F .302
+(erbose [v], QueueSortOrder)-1.11 F 2.802(,M)-.4 G .303(inQueueAge, Def)
+-2.802 F .303(aultCharSet, Dial)-.1 F(Delay)102 481.2 Q 7.312(,N)-.65 G
+4.812(oRecipientAction, ColonOkInAddr)-7.312 F 7.312(,M)-.4 G 4.812
+(axQueueRunSize, SingleLineFromHeader)-7.312 F 7.312(,a)-.4 G(nd)-7.312
+E(Allo)102 493.2 Q 3.92(wBogusHELO. Actually)-.25 F 3.92(,P)-.65 G(ri)
+-3.92 E -.25(va)-.25 G -.15(cy).25 G 1.421(Options [p] gi).15 F -.15(ve)
+-.25 G 3.921(no).15 G 3.921(nt)-3.921 G 1.421
+(he command line are added to those)-3.921 F 1.698
+(already speci\214ed in the)102 505.2 R F2(sendmail.cf)4.198 E F1 1.697
+(\214le, i.e., the)4.198 F 4.197(yc)-.15 G(an')-4.197 E 4.197(tb)-.18 G
+4.197(er)-4.197 G 4.197(eset. Also,)-4.197 F 4.197(M\()4.197 G 1.697
+(de\214ne macro\) when)-4.197 F
+(de\214ning the r or s macros is also considered \231safe\232.)102 517.2
+Q F0 2.5(5.7. P)87 541.2 R 2.5<8a50>2.5 G -.18(re)-2.5 G
+(cedence De\214nitions).18 E F1 -1.11(Va)127 557.4 S .164
+(lues for the \231Precedence:\232 \214eld may be de\214ned using the)
+1.11 F F0(P)2.664 E F1 .164(control line.)2.664 F .164
+(The syntax of this)5.164 F(\214eld is:)102 569.4 Q F0(P)142 585.6 Q F2
+(name)A F0(=)A F2(num)A F1 .384(When the)102 601.8 R F2(name)2.884 E F1
+.384
+(is found in a \231Precedence:\232 \214eld, the message class is set to)
+2.884 F F2(num)2.883 E F1 5.383(.H)C .383(igher numbers)-5.383 F .85
+(mean higher precedence.)102 613.8 R .85(Numbers less than zero ha)5.85
+F 1.15 -.15(ve t)-.2 H .85(he special property that if an error occurs)
+.15 F 1.551(during processing the body of the message will not be retur\
+ned; this is e)102 625.8 R 1.551(xpected to be used for)-.15 F<9962>102
+637.8 Q .461(ulk\232 mail such as through mailing lists.)-.2 F .461
+(The def)5.461 F .461(ault precedence is zero.)-.1 F -.15(Fo)5.461 G
+2.962(re).15 G .462(xample, our list of)-3.112 F(precedences is:)102
+649.8 Q(P\214rst-class=0)142 666 Q(Pspecial-deli)142 678 Q -.15(ve)-.25
+G(ry=100).15 E(Plist=\25530)142 690 Q(Pb)142 702 Q(ulk=\25560)-.2 E
+(Pjunk=\255100)142 714 Q 0 Cg EP
+%%Page: 78 74
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-78 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.059
+(People writing mailing list e)102 96 R 1.058
+(xploders are encouraged to use \231Precedence: list\232.)-.15 F 1.058
+(Older v)6.058 F 1.058(ersions of)-.15 F/F2 10/Times-Italic@0 SF
+(sendmail)102 108 Q F1 1.19(\(which discarded all error returns for ne)
+3.69 F -.05(ga)-.15 G(ti).05 E 1.49 -.15(ve p)-.25 H 1.19
+(recedences\) didn').15 F 3.69(tr)-.18 G 1.19(ecognize this name,)-3.69
+F(gi)102 120 Q .599(ving it a def)-.25 F .598(ault precedence of zero.)
+-.1 F .598(This allo)5.598 F .598
+(ws list maintainers to see error returns on both old)-.25 F(and ne)102
+132 Q 2.5(wv)-.25 G(ersions of)-2.65 E F2(sendmail)2.5 E F1(.)A F0 2.5
+(5.8. V)87 156 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E(ersion Le)-1 E
+-.1(ve)-.15 G(l).1 E F1 3.181 -.8(To p)127 172.2 T(ro).8 E 1.581
+(vide compatibility with old con\214guration \214les, the)-.15 F F0(V)
+4.081 E F1 1.582(line has been added to de\214ne)4.082 F 1.11(some v)102
+184.2 R 1.11(ery basic semantics of the con\214guration \214le.)-.15 F
+1.11(These are not intended to be long term sup-)6.11 F .033
+(ports; rather)102 196.2 R 2.533(,t)-.4 G(he)-2.533 E 2.533(yd)-.15 G
+.033(escribe compatibility features which will probably be remo)-2.533 F
+-.15(ve)-.15 G 2.533(di).15 G 2.533(nf)-2.533 G .034(uture releases.)
+-2.533 F F0(N.B.:)127 212.4 Q F1 .197(these v)2.697 F(ersion)-.15 E F2
+(le)2.697 E(vels)-.15 E F1(ha)2.697 E .496 -.15(ve n)-.2 H .196
+(othing to do with the v).15 F(ersion)-.15 E F2(number)2.696 E F1 .196
+(on the \214les.)2.696 F -.15(Fo)5.196 G 2.696(re).15 G(xam-)-2.846 E
+(ple, as of this writing v)102 224.4 Q
+(ersion 10 con\214g \214les \(speci\214cally)-.15 E 2.5(,8)-.65 G
+(.10\) used v)-2.5 E(ersion le)-.15 E -.15(ve)-.25 G 2.5(l9c).15 G
+(on\214gurations.)-2.5 E 1.102
+(\231Old\232 con\214guration \214les are de\214ned as v)127 240.6 R
+1.102(ersion le)-.15 F -.15(ve)-.25 G 3.602(lo).15 G 3.602(ne. V)-3.602
+F 1.102(ersion le)-1.11 F -.15(ve)-.25 G 3.602(lt).15 G 1.302 -.1
+(wo \214)-3.602 H 1.103(les mak).1 F 3.603(et)-.1 G(he)-3.603 E(follo)
+102 252.6 Q(wing changes:)-.25 E 12.5(\(1\) Host)107 268.8 R .727(name \
+canoni\214cation \($[ ... $]\) appends a dot if the name is recognized;\
+ this gi)3.227 F -.15(ve)-.25 G 3.226(st).15 G(he)-3.226 E 1.974
+(con\214g \214le a w)133.66 280.8 R 1.974(ay of \214nding out if an)-.1
+F 1.974(ything matched.)-.15 F(\(Actually)6.974 E 4.475(,t)-.65 G 1.975
+(his just initializes the)-4.475 F .739
+(\231host\232 map with the \231\255a.)133.66 292.8 R 5.739<9a8d>-.7 G
+.739(ag \212 you can reset it to an)-5.739 F .738
+(ything you prefer by declaring the)-.15 F(map e)133.66 304.8 Q
+(xplicitly)-.15 E(.\))-.65 E 12.5(\(2\) Def)107 321 R .384
+(ault host name e)-.1 F .385
+(xtension is consistent throughout processing; v)-.15 F .385(ersion le)
+-.15 F -.15(ve)-.25 G 2.885(lo).15 G .385(ne con\214gu-)-2.885 F .83
+(rations turned of)133.66 333 R 3.33(fd)-.25 G .83(omain e)-3.33 F .83
+(xtension \(that is, adding the local domain name\) during certain)-.15
+F .4(points in processing.)133.66 345 R -1.11(Ve)5.4 G .4(rsion le)1.11
+F -.15(ve)-.25 G 2.9(lt).15 G .6 -.1(wo c)-2.9 H .4
+(on\214gurations are e).1 F .4(xpected to include a trailing dot)-.15 F
+(to indicate that the name is already canonical.)133.66 357 Q 12.5
+(\(3\) Local)107 373.2 R .072
+(names that are not aliases are passed through a ne)2.572 F 2.572(wd)
+-.25 G .072(istinguished ruleset \214v)-2.572 F .072(e; this can)-.15 F
+.139(be used to append a local relay)133.66 385.2 R 5.139(.T)-.65 G .139
+(his beha)-5.139 F .139(vior can be pre)-.2 F -.15(ve)-.25 G .14
+(nted by resolving the local name).15 F .993(with an initial `@'.)133.66
+397.2 R .993(That is, something that resolv)5.993 F .993
+(es to a local mailer and a user name of)-.15 F .601
+(\231vikki\232 will be passed through ruleset \214v)133.66 409.2 R .601
+(e, b)-.15 F .601(ut a user name of \231@vikki\232 will ha)-.2 F .902
+-.15(ve t)-.2 H .602(he `@').15 F .92
+(stripped, will not be passed through ruleset \214v)133.66 421.2 R .919
+(e, b)-.15 F .919(ut will otherwise be treated the same as)-.2 F .629
+(the prior e)133.66 433.2 R 3.129(xample. The)-.15 F -.15(ex)3.129 G
+.629(pectation is that this might be used to implement a polic).15 F
+3.13(yw)-.15 G(here)-3.13 E .734(mail sent to \231vikki\232 w)133.66
+445.2 R .734(as handled by a central hub, b)-.1 F .734
+(ut mail sent to \231vikki@localhost\232 w)-.2 F(as)-.1 E(deli)133.66
+457.2 Q -.15(ve)-.25 G(red directly).15 E(.)-.65 E -1.11(Ve)127 473.4 S
+1.382(rsion le)1.11 F -.15(ve)-.25 G 3.882(lt).15 G 1.382
+(hree \214les allo)-3.882 F 3.882(w#i)-.25 G 1.382
+(nitiated comments on all lines.)-3.882 F 1.383
+(Exceptions are backslash)6.383 F(escaped # marks and the $# syntax.)102
+485.4 Q -1.11(Ve)127 501.6 S 1.208(rsion le)1.11 F -.15(ve)-.25 G 3.708
+(lf).15 G 1.208(our con\214gurations are completely equi)-3.708 F -.25
+(va)-.25 G 1.207(lent to le).25 F -.15(ve)-.25 G 3.707(lt).15 G 1.207
+(hree for historical rea-)-3.707 F(sons.)102 513.6 Q -1.11(Ve)127 529.8
+S 1.234(rsion le)1.11 F -.15(ve)-.25 G 3.734<6c8c>.15 G 1.534 -.15(ve c)
+-3.734 H 1.234(on\214guration \214les change the def).15 F 1.234
+(ault de\214nition of)-.1 F F0($w)3.734 E F1 1.234
+(to be just the \214rst)3.734 F(component of the hostname.)102 541.8 Q
+-1.11(Ve)127 558 S 1.589(rsion le)1.11 F -.15(ve)-.25 G 4.089(ls).15 G
+1.589(ix con\214guration \214les change man)-4.089 F 4.088(yo)-.15 G
+4.088(ft)-4.088 G 1.588(he local processing options \(such as)-4.088 F
+.48(aliasing and matching the be)102 570 R .481(ginning of the address \
+for `|' characters\) to be mailer \215ags; this allo)-.15 F(ws)-.25 E
+1.345(\214ne-grained control o)102 582 R -.15(ve)-.15 G 3.845(rt).15 G
+1.345(he special local processing.)-3.845 F(Le)6.345 E -.15(ve)-.25 G
+3.845(ls).15 G 1.344(ix con\214guration \214les may also use)-3.845 F
+1.221(long option names.)102 594 R(The)6.221 E F0(ColonOkInAddr)3.721 E
+F1 1.221(option \(to allo)3.721 F 3.722(wc)-.25 G 1.222
+(olons in the local-part of addresses\))-3.722 F(def)102 606 Q(aults)-.1
+E F0(on)3.44 E F1 .94(for lo)3.44 F .94(wer numbered con\214guration \
+\214les; the con\214guration \214le requires some additional)-.25 F
+(intelligence to properly handle the RFC 822 group construct.)102 618 Q
+-1.11(Ve)127 634.2 S 1.97(rsion le)1.11 F -.15(ve)-.25 G 4.47(ls).15 G
+-2.15 -.25(ev e)-4.47 H 4.47(nc).25 G 1.97
+(on\214guration \214les used ne)-4.47 F 4.47(wo)-.25 G 1.97
+(ption names to replace old macros \()-4.47 F F0($e)A F1(became)102
+646.2 Q F0(SmtpGr)5.548 E(eetingMessage)-.18 E F1(,)A F0($l)5.548 E F1
+(became)5.548 E F0(UnixFr)5.548 E(omLine)-.18 E F1 5.547(,a)C(nd)-5.547
+E F0($o)5.547 E F1(became)5.547 E F0(OperatorChars)5.547 E F1(.)A .086
+(Also, prior to v)102 658.2 R .086(ersion se)-.15 F -.15(ve)-.25 G .086
+(n, the).15 F F0(F=q)2.586 E F1 .087
+(\215ag \(use 250 instead of 252 return v)2.586 F .087(alue for)-.25 F
+/F3 9/Times-Roman@0 SF .087(SMTP VRFY)2.587 F F1(com-)2.587 E(mands\) w)
+102 670.2 Q(as assumed.)-.1 E -1.11(Ve)127 686.4 S(rsion le)1.11 E -.15
+(ve)-.25 G 2.5(le).15 G(ight con\214guration \214les allo)-2.5 E(w)-.25
+E F0($#)2.5 E F1(on the left hand side of ruleset lines.)2.5 E -1.11(Ve)
+127 702.6 S .423(rsion le)1.11 F -.15(ve)-.25 G 2.923(ln).15 G .423
+(ine con\214guration \214les allo)-2.923 F 2.923(wp)-.25 G .423
+(arentheses in rulesets, i.e. the)-2.923 F 2.923(ya)-.15 G .422
+(re not treated as)-2.923 F(comments and hence remo)102 714.6 Q -.15(ve)
+-.15 G(d.).15 E 0 Cg EP
+%%Page: 79 75
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-79)195.86 E/F1 10/Times-Roman@0 SF -1.11(Ve)127 96 S(rsion le)
+1.11 E -.15(ve)-.25 G 2.5(lt).15 G(en con\214guration \214les allo)-2.5
+E 2.5(wq)-.25 G(ueue group de\214nitions.)-2.5 E(The)127 112.2 Q F0(V)
+2.677 E F1 .177(line may ha)2.677 F .477 -.15(ve a)-.2 H 2.677(no).15 G
+(ptional)-2.677 E F0(/)2.677 E/F2 10/Times-Italic@0 SF(vendor)A F1 .178
+(to indicate that this con\214guration \214le uses modi\214ca-)2.677 F
+.865(tions speci\214c to a particular v)102 126.2 R(endor)-.15 E/F3 7
+/Times-Roman@0 SF(22)-4 I F1 5.866(.Y)4 K .866(ou may use \231/Berk)
+-6.966 F(ele)-.1 E .866(y\232 to emphasize that this con\214gura-)-.15 F
+(tion \214le uses the Berk)102 138.2 Q(ele)-.1 E 2.5(yd)-.15 G
+(ialect of)-2.5 E F2(sendmail)2.5 E F1(.)A F0 2.5(5.9. K)87 162.2 R 2.5
+<8a4b>2.5 G(ey File Declaration)-2.75 E F1
+(Special maps can be de\214ned using the line:)127 178.4 Q
+(Kmapname mapclass ar)142 194.6 Q(guments)-.18 E(The)102 210.8 Q F2
+(mapname)2.751 E F1 .251
+(is the handle by which this map is referenced in the re)2.751 F .25
+(writing rules.)-.25 F(The)5.25 E F2(mapclass)2.75 E F1(is)2.75 E 1.889
+(the name of a type of map; these are compiled in to)102 222.8 R F2
+(sendmail)4.389 E F1 6.889(.T)C(he)-6.889 E F2(ar)4.389 E(guments)-.37 E
+F1 1.889(are interpreted)4.389 F .791(depending on the class; typically)
+102 234.8 R 3.291(,t)-.65 G .791(here w)-3.291 F .791
+(ould be a single ar)-.1 F .79(gument naming the \214le containing the)
+-.18 F(map.)102 246.8 Q(Maps are referenced using the syntax:)127 263 Q
+($\()142 279.2 Q F2(map k)2.5 E -.3(ey)-.1 G F1($@)2.8 E F2(ar)2.5 E
+(guments)-.37 E F1($:)2.5 E F2(default)2.5 E F1($\))2.5 E .64
+(where either or both of the)102 295.4 R F2(ar)3.14 E(guments)-.37 E F1
+(or)3.141 E F2(default)3.141 E F1 .641(portion may be omitted.)3.141 F
+(The)5.641 E F2 .641($@ ar)3.141 F(guments)-.37 E F1(may)3.141 E 1.277
+(appear more than once.)102 307.4 R 1.277(The indicated)6.277 F F2 -.1
+(ke)3.777 G(y)-.2 E F1(and)3.776 E F2(ar)3.776 E(guments)-.37 E F1 1.276
+(are passed to the appropriate mapping)3.776 F 3.253(function. If)102
+319.4 R .753(it returns a v)3.253 F .753(alue, it replaces the input.)
+-.25 F .753(If it does not return a v)5.753 F .753(alue and the)-.25 F
+F2(default)3.253 E F1(is)3.253 E(speci\214ed, the)102 331.4 Q F2
+(default)2.5 E F1(replaces the input.)2.5 E
+(Otherwise, the input is unchanged.)5 E(The)127 347.6 Q F2(ar)4.064 E
+(guments)-.37 E F1 1.564(are passed to the map for arbitrary use.)4.064
+F 1.563(Most map classes can interpolate)6.563 F .882(these ar)102 359.6
+R .882(guments into their v)-.18 F .882(alues using the syntax \231%)
+-.25 F F2(n)A F1 3.382<9a28>C(where)-3.382 E F2(n)3.382 E F1 .883
+(is a digit\) to indicate the corre-)3.382 F(sponding)102 371.6 Q F2(ar)
+2.5 E(gument)-.37 E F1 5(.A)C -.18(rg)-5 G
+(ument \231%0\232 indicates the database k).18 E -.15(ey)-.1 G 5(.F)-.5
+G(or e)-5.15 E(xample, the rule)-.15 E(R$\255 ! $+)142 387.8 Q
+($: $\(uucp $1 $@ $2 $: $2 @ $1 . UUCP $\))71.72 E 1.269(Looks up the U\
+UCP name in a \(user de\214ned\) UUCP map; if not found it turns it int\
+o \231.UUCP\232)102 404 R 2.5(form. The)102 416 R
+(database might contain records lik)2.5 E(e:)-.1 E(decv)142 432.2 Q
+77.43(ax %1@%0.DEC.COM)-.25 F 72.19(research %1@%0.A)142 444.2 R(TT)
+-1.11 E(.COM)-.74 E(Note that)102 460.4 Q F2(default)2.5 E F1
+(clauses ne)2.5 E -.15(ve)-.25 G 2.5(rd).15 G 2.5(ot)-2.5 G
+(his mapping.)-2.5 E .735(The b)127 476.6 R .735(uilt-in map with both \
+name and class \231host\232 is the host name canonicalization lookup.)
+-.2 F(Thus, the syntax:)102 488.6 Q($\(host)142 504.8 Q F2(hostname)2.5
+E F1($\))A(is equi)102 521 Q -.25(va)-.25 G(lent to:).25 E($[)142 537.2
+Q F2(hostname)A F1($])A(There are man)127 557.6 Q 2.5(yd)-.15 G
+(e\214ned classes.)-2.5 E 51.72(dbm Database)102 573.8 R 1.623
+(lookups using the ndbm\(3\) library)4.123 F(.)-.65 E F2(Sendmail)6.623
+E F1 1.623(must be compiled with)4.123 F F0(NDBM)174 585.8 Q F1
+(de\214ned.)2.5 E 49.51(btree Database)102 602 R .677
+(lookups using the btree interf)3.177 F .677(ace to the Berk)-.1 F(ele)
+-.1 E 3.178(yD)-.15 G 3.178(Bl)-3.178 G(ibrary)-3.178 E(.)-.65 E F2
+(Sendmail)5.678 E F1(must be compiled with)174 614 Q F0(NEWDB)2.5 E F1
+(de\214ned.)2.5 E 51.17(hash Database)102 630.2 R .828
+(lookups using the hash interf)3.329 F .828(ace to the Berk)-.1 F(ele)
+-.1 E 3.328(yD)-.15 G 3.328(Bl)-3.328 G(ibrary)-3.328 E(.)-.65 E F2
+(Sendmail)5.828 E F1(must be compiled with)174 642.2 Q F0(NEWDB)2.5 E F1
+(de\214ned.)2.5 E 57.83(nis NIS)102 658.4 R(lookups.)2.5 E F2(Sendmail)5
+E F1(must be compiled with)2.5 E F0(NIS)2.5 E F1(de\214ned.)2.5 E .32 LW
+76 669.2 72 669.2 DL 80 669.2 76 669.2 DL 84 669.2 80 669.2 DL 88 669.2
+84 669.2 DL 92 669.2 88 669.2 DL 96 669.2 92 669.2 DL 100 669.2 96 669.2
+DL 104 669.2 100 669.2 DL 108 669.2 104 669.2 DL 112 669.2 108 669.2 DL
+116 669.2 112 669.2 DL 120 669.2 116 669.2 DL 124 669.2 120 669.2 DL 128
+669.2 124 669.2 DL 132 669.2 128 669.2 DL 136 669.2 132 669.2 DL 140
+669.2 136 669.2 DL 144 669.2 140 669.2 DL 148 669.2 144 669.2 DL 152
+669.2 148 669.2 DL 156 669.2 152 669.2 DL 160 669.2 156 669.2 DL 164
+669.2 160 669.2 DL 168 669.2 164 669.2 DL 172 669.2 168 669.2 DL 176
+669.2 172 669.2 DL 180 669.2 176 669.2 DL 184 669.2 180 669.2 DL 188
+669.2 184 669.2 DL 192 669.2 188 669.2 DL 196 669.2 192 669.2 DL 200
+669.2 196 669.2 DL 204 669.2 200 669.2 DL 208 669.2 204 669.2 DL 212
+669.2 208 669.2 DL 216 669.2 212 669.2 DL/F4 5/Times-Roman@0 SF(22)93.6
+679.6 Q/F5 8/Times-Roman@0 SF .214(And of course, v)3.2 J .214
+(endors are encouraged to add themselv)-.12 F .214
+(es to the list of recognized v)-.12 F .214
+(endors by editing the routine)-.12 F/F6 8/Times-Italic@0 SF(setvendor)
+2.214 E F5(in)2.214 E F6(conf)72 692.4 Q(.c)-.12 E F5 4(.P)C
+(lease send e-mail to sendmail@Sendmail.ORG to re)-4 E(gister your v)
+-.12 E(endor dialect.)-.12 E 0 Cg EP
+%%Page: 80 76
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-80 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 41.16
+(nisplus NIS+)102 96 R(lookups.)3.733 E/F2 10/Times-Italic@0 SF
+(Sendmail)6.233 E F1 1.233(must be compiled with)3.733 F F0(NISPLUS)
+3.733 E F1 3.733(de\214ned. The)3.733 F(ar)3.733 E(gu-)-.18 E .495
+(ment is the name of the table to use for lookups, and the)174 108 R F0
+<ad6b>2.995 E F1(and)2.995 E F0<ad76>2.995 E F1 .495(\215ags may be)
+2.995 F(used to set the k)174 120 Q .3 -.15(ey a)-.1 H(nd v).15 E
+(alue columns respecti)-.25 E -.15(ve)-.25 G(ly).15 E(.)-.65 E 43.39
+(hesiod Hesiod)102 136.2 R(lookups.)2.5 E F2(Sendmail)5 E F1
+(must be compiled with)2.5 E F0(HESIOD)2.5 E F1(de\214ned.)2.5 E 52.28
+(ldap LD)102 152.4 R 1.783(AP X500 directory lookups.)-.4 F F2(Sendmail)
+6.783 E F1 1.784(must be compiled with)4.283 F F0(LD)4.284 E(APMAP)-.35
+E F1 2.966(de\214ned. The)174 164.4 R .466
+(map supports most of the standard ar)2.966 F .465
+(guments and most of the com-)-.18 F .3(mand line ar)174 176.4 R .3
+(guments of the)-.18 F F2(ldapsear)2.8 E -.15(ch)-.37 G F1 2.8
+(program. Note)2.95 F .3(that, by def)2.8 F .3(ault, if a single)-.1 F
+.629(query matches multiple v)174 188.4 R .629
+(alues, only the \214rst v)-.25 F .628(alue will be returned unless the)
+-.25 F F0<ad7a>3.128 E F1(\(v)174 200.4 Q .248
+(alue separator\) map \215ag is set.)-.25 F .249(Also, the)5.249 F F0
+<ad31>2.749 E F1 .249(map \215ag will treat a multiple v)2.749 F(alue)
+-.25 E(return as if there were no matches.)174 212.4 Q 41.17
+(netinfo NeXT)102 228.6 R(NetInfo lookups.)2.5 E F2(Sendmail)5 E F1
+(must be compiled with)2.5 E F0(NETINFO)2.5 E F1(de\214ned.)2.5 E(te)102
+244.8 Q 54.65(xt T)-.15 F -.15(ex)-.7 G 2.918<748c>.15 G .418
+(le lookups.)-2.918 F .418(The format of the te)5.418 F .417
+(xt \214le is de\214ned by the)-.15 F F0<ad6b>2.917 E F1(\(k)2.917 E
+.717 -.15(ey \214)-.1 H .417(eld num-).15 F(ber\),)174 256.8 Q F0<ad76>
+2.5 E F1(\(v)2.5 E(alue \214eld number\), and)-.25 E F0<ad7a>2.5 E F1
+(\(\214eld delimiter\) \215ags.)2.5 E 59.5(ph PH)102 273 R 1.394
+(query map.)3.894 F(Contrib)6.394 E 1.394
+(uted and supported by Mark Roth, roth@uiuc.edu.)-.2 F -.15(Fo)6.394 G
+(r).15 E .017(more information, consult the web site \231http://www-de)
+174 285 R -.65(v.)-.25 G(cites.uiuc.edu/sendmail/\232.).65 E 55.61
+(nsd nsd)102 301.2 R 1.599(map for IRIX 6.5 and later)4.099 F 6.599(.C)
+-.55 G(ontrib)-6.599 E 1.599(uted and supported by Bob Mende of)-.2 F
+(SGI, mende@sgi.com.)174 313.2 Q 53.39(stab Internal)102 329.4 R
+(symbol table lookups.)2.5 E(Used internally for aliasing.)5 E 38.38
+(implicit Really)102 345.6 R .546
+(should be called \231alias\232 \212 this is used to get the def)3.046 F
+.546(ault lookups for alias)-.1 F(\214les, and is the def)174 357.6 Q
+(ault if no class is speci\214ed for alias \214les.)-.1 E 52.84
+(user Looks)102 373.8 R .476(up users using)2.976 F F2 -.1(ge)2.976 G
+(tpwnam).1 E F1 2.976(\(3\). The)B F0<ad76>2.976 E F1 .477
+(\215ag can be used to specify the name)2.976 F .142(of the \214eld to \
+return \(although this is normally used only to check the e)174 385.8 R
+.142(xistence of)-.15 F 2.5(au)174 397.8 S(ser\).)-2.5 E 52.83
+(host Canoni\214es)102 414 R .2(host domain names.)2.7 F(Gi)5.2 E -.15
+(ve)-.25 G 2.7(nah).15 G .2(ost name it calls the name serv)-2.7 F .2
+(er to \214nd)-.15 F(the canonical name for that host.)174 426 Q 40.61
+(bestmx Returns)102 442.2 R 2.479(the best MX record for a host name gi)
+4.979 F -.15(ve)-.25 G 4.978(na).15 G 4.978(st)-4.978 G 2.478(he k)
+-4.978 F -.15(ey)-.1 G 7.478(.T)-.5 G 2.478(he current)-7.478 F .721
+(machine is al)174 454.2 R -.1(wa)-.1 G .721
+(ys preferred \212 that is, if the current machine is one of the hosts)
+.1 F .219(listed as a lo)174 466.2 R .218
+(west-preference MX record, then it will be guaranteed to be returned.)
+-.25 F .961(This can be used to \214nd out if this machine is the tar)
+174 478.2 R .962(get for an MX record, and)-.18 F .313
+(mail can be accepted on that basis.)174 490.2 R .313(If the)5.313 F F0
+<ad7a>2.813 E F1 .313(\215ag is gi)2.813 F -.15(ve)-.25 G .313
+(n, then all MX names are).15 F(returned, separated by the gi)174 502.2
+Q -.15(ve)-.25 G 2.5(nd).15 G(elimiter)-2.5 E(.)-.55 E 55.61(dns This)
+102 518.4 R 2.248
+(map requires the option -R to specify the DNS resource record type to)
+4.747 F 1.229(lookup. The follo)174 530.4 R 1.229
+(wing types are supported: A, AAAA, AFSDB, CN)-.25 F 1.229(AME, MX,)-.35
+F .661(NS, PTR, SR)174 542.4 R 3.241 -1.29(V, a)-.8 H .661(nd TXT)1.29 F
+5.661(.A)-.74 G .662(map lookup will return only one record.)-2.5 F .662
+(Hence for)5.662 F .558(some types, e.g., MX records, the return v)174
+554.4 R .558(alue might be a random element of the)-.25 F
+(list due to randomizing in the DNS resolv)174 566.4 Q(er)-.15 E(.)-.55
+E 32.85(sequence The)102 582.6 R(ar)3.349 E .849(guments on the `K' lin\
+e are a list of maps; the resulting map searches the)-.18 F(ar)174 594.6
+Q .439
+(gument maps in order until it \214nds a match for the indicated k)-.18
+F -.15(ey)-.1 G 5.438(.F)-.5 G .438(or e)-5.588 F(xample,)-.15 E
+(if the k)174 606.6 Q .3 -.15(ey d)-.1 H(e\214nition is:).15 E
+(Kmap1 ...)214 622.8 Q(Kmap2 ...)214 634.8 Q(Kseqmap sequence map1 map2)
+214 646.8 Q .968(then a lookup ag)174 663 R .968
+(ainst \231seqmap\232 \214rst does a lookup in map1.)-.05 F .968
+(If that is found, it)5.968 F(returns immediately)174 675 Q 5(.O)-.65 G
+(therwise, the same k)-5 E .3 -.15(ey i)-.1 H 2.5(su).15 G
+(sed for map2.)-2.5 E 43.94(syslog the)102 691.2 R -.1(ke)2.5 G 2.5(yi)
+-.05 G 2.5(sl)-2.5 G(ogged via)-2.5 E F2(syslo)2.5 E(gd)-.1 E F1 2.5
+(\(8\). The)1.666 F(lookup returns the empty string.)2.5 E 43.39
+(switch Much)102 707.4 R(lik)2.801 E 2.801(et)-.1 G .301
+(he \231sequence\232 map e)-2.801 F .301
+(xcept that the order of maps is determined by the)-.15 F 1.69
+(service switch.)174 719.4 R 1.69(The ar)6.69 F 1.691
+(gument is the name of the service to be look)-.18 F 1.691(ed up; the)
+-.1 F 0 Cg EP
+%%Page: 81 77
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-81)195.86 E/F1 10/Times-Roman@0 SF -.25(va)174 96 S .637
+(lues from the service switch are appended to the map name to create ne)
+.25 F 3.137(wm)-.25 G(ap)-3.137 E 2.5(names. F)174 108 R(or e)-.15 E
+(xample, consider the k)-.15 E .3 -.15(ey d)-.1 H(e\214nition:).15 E
+(Kali switch aliases)214 124.2 Q
+(together with the service switch entry:)174 140.4 Q 78.84(aliases nis)
+214 156.6 R(\214les)2.5 E 1.633(This causes a query ag)174 172.8 R 1.633
+(ainst the map \231ali\232 to search maps named \231ali.nis\232 and)-.05
+F(\231ali.\214les\232 in that order)174 184.8 Q(.)-.55 E 37.84
+(dequote Strip)102 201 R .961(double quotes \("\) from a name.)3.461 F
+.96(It does not strip backslashes, and will not)5.961 F .172
+(strip quotes if the resulting string w)174 213 R .173
+(ould contain unscannable syntax \(that is, basic)-.1 F .386(errors lik)
+174 225 R 2.886(eu)-.1 G .386(nbalanced angle brack)-2.886 F .386
+(ets; more sophisticated errors such as unkno)-.1 F(wn)-.25 E .251
+(hosts are not check)174 237 R 2.751(ed\). The)-.1 F .251
+(intent is for use when trying to accept mail from sys-)2.751 F
+(tems such as DECnet that routinely quote odd syntax such as)174 249 Q
+("49ers::ubell")214 265.2 Q 2.5(At)174 281.4 S
+(ypical usage is probably something lik)-2.5 E(e:)-.1 E
+(Kdequote dequote)214 297.6 Q(...)214 321.6 Q 88.19(R$\255 $:)214 345.6
+R($\(dequote $1 $\))2.5 E(R$\255 $+)214 357.6 Q($: $>3 $1 $2)77.55 E
+(Care must be tak)174 373.8 Q(en to pre)-.1 E -.15(ve)-.25 G(nt une).15
+E(xpected results; for e)-.15 E(xample,)-.15 E
+("|someprogram < input > output")214 390 Q 1.31(will ha)174 406.2 R 1.61
+-.15(ve q)-.2 H 1.31(uotes stripped, b).15 F 1.31
+(ut the result is probably not what you had in mind.)-.2 F -.15(Fo)174
+418.2 S(rtunately these cases are rare.).15 E(re)102 434.4 Q(ge)-.15 E
+50.09(xT)-.15 G .488(he map de\214nition on the)-50.09 F F0(K)2.988 E F1
+.489(line contains a re)2.988 F .489(gular e)-.15 F 2.989(xpression. An)
+-.15 F 2.989(yk)-.15 G .789 -.15(ey i)-3.089 H .489(nput is).15 F 1.454
+(compared to that e)174 446.4 R 1.454(xpression using the POSIX re)-.15
+F 1.454(gular e)-.15 F 1.454(xpressions routines re)-.15 F(g-)-.15 E .29
+(comp\(\), re)174 458.4 R .291(gerr\(\), and re)-.15 F(ge)-.15 E -.15
+(xe)-.15 G 2.791(c\(\). Refer).15 F .291
+(to the documentation for those routines for)2.791 F .356
+(more information about the re)174 470.4 R .356(gular e)-.15 F .355
+(xpression matching.)-.15 F .355(No re)5.355 F .355(writing of the k)
+-.25 F -.15(ey)-.1 G .074(is done if the)174 482.4 R F0<ad6d>2.574 E F1
+.074(\215ag is used.)2.574 F -.4(Wi)5.074 G .074(thout it, the k).4 F
+.375 -.15(ey i)-.1 H 2.575(sd).15 G .075(iscarded or if)-2.575 F F0
+<ad73>2.575 E F1 .075(if used, it is)2.575 F .905
+(substituted by the substring matches, delimited by)174 494.4 R F0($|)
+3.405 E F1 .905(or the string speci\214ed with)3.405 F(the the)174 506.4
+Q F0<ad64>2.5 E F1 2.5(\215ag. The)2.5 F(\215ags a)2.5 E -.25(va)-.2 G
+(ilable for the map are).25 E 9.17(-n not)214 522.6 R 10.84(-f case)214
+534.6 R(sensiti)2.5 E -.15(ve)-.25 G 9.17(-b basic)214 546.6 R(re)2.5 E
+(gular e)-.15 E(xpressions \(def)-.15 E(ault is e)-.1 E(xtended\))-.15 E
+10.28(-s substring)214 558.6 R(match)2.5 E 9.17(-d set)214 570.6 R
+(the delimiter used for -s)2.5 E 9.73(-a append)214 582.6 R(string to k)
+2.5 E -.15(ey)-.1 G 6.39(-m match)214 594.6 R(only)2.5 E 2.5(,d)-.65 G
+2.5(on)-2.5 G(ot replace/discard v)-2.5 E(alue)-.25 E 6.95(-D perform)
+214 606.6 R(no lookup in deferred deli)2.5 E -.15(ve)-.25 G(ry mode.).15
+E(The)174 622.8 Q F0<ad73>2.55 E F1 .051(\215ag can include an optional\
+ parameter which can be used to select the sub-)2.55 F
+(strings in the result of the lookup.)174 634.8 Q -.15(Fo)5 G 2.5(re).15
+G(xample,)-2.65 E(-s1,3,4)214 651 Q .697(Notes: to match a)174 667.2 R
+F0($)3.197 E F1 .697(in a string, \\$$ must be used.)3.197 F .697
+(If the pattern contains spaces,)5.697 F(the)174 679.2 Q 4.424(ym)-.15 G
+1.924(ust be replaced with the blank substitution character)-4.424 F
+4.424(,u)-.4 G 1.925(nless it is space)-4.424 F(itself.)174 691.2 Q
+35.62(program The)102 707.4 R(ar)2.545 E .045(guments on the)-.18 F F0
+(K)2.545 E F1 .045(line are the pathname to a program and an)2.545 F
+2.544(yi)-.15 G .044(nitial param-)-2.544 F 2.538(eters to be passed.)
+174 719.4 R 2.538(When the map is called, the k)7.538 F 2.838 -.15(ey i)
+-.1 H 5.038(sa).15 G 2.538(dded to the initial)-5.038 F 0 Cg EP
+%%Page: 82 78
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-82 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF .386
+(parameters and the program is in)174 96 R -.2(vo)-.4 G -.1(ke).2 G
+2.886(da).1 G 2.886(st)-2.886 G .386(he def)-2.886 F .386
+(ault user/group id.)-.1 F .386(The \214rst line)5.386 F .269
+(of standard output is returned as the v)174 108 R .269
+(alue of the lookup.)-.25 F .27(This has man)5.27 F 2.77(yp)-.15 G
+(otential)-2.77 E 1.975(security problems, and has terrible performance\
+; it should be used only when)174 120 R(absolutely necessary)174 132 Q
+(.)-.65 E 44.51(macro Set)102 148.2 R .32(or clear a macro v)2.82 F 2.82
+(alue. T)-.25 F 2.82(os)-.8 G .32(et a macro, pass the v)-2.82 F .32
+(alue as the \214rst ar)-.25 F .32(gument in)-.18 F .939
+(the map lookup.)174 160.2 R 2.539 -.8(To c)5.939 H .939
+(lear a macro, do not pass an ar).8 F .938(gument in the map lookup.)
+-.18 F(The map al)174 172.2 Q -.1(wa)-.1 G(ys returns the empty string.)
+.1 E(Example of typical usage include:)5 E(Kstorage macro)214 188.4 Q
+(...)214 212.4 Q 2.5(#s)214 236.4 S
+(et macro ${MyMacro} to the ruleset match)-2.5 E .19(R$+ $:)214 248.4 R
+($\(storage {MyMacro} $@ $1 $\) $1)2.5 E 2.5(#s)214 260.4 S
+(et macro ${MyMacro} to an empty string)-2.5 E .83(R$* $:)214 272.4 R
+($\(storage {MyMacro} $@ $\) $1)2.5 E 2.5(#c)214 284.4 S
+(lear macro ${MyMacro})-2.5 E .19(R$\255 $:)214 296.4 R
+($\(storage {MyMacro} $\) $1)2.5 E 51.17(arith Perform)102 316.8 R .493
+(simple arithmetic operations.)2.993 F .494(The operation is gi)5.493 F
+-.15(ve)-.25 G 2.994(na).15 G 2.994(sk)-2.994 G -.15(ey)-3.094 G 2.994
+(,c)-.5 G .494(urrently +,)-2.994 F .245(-, *, /, %, |, & \(bitwise OR,\
+ AND\), l \(for less than\), =, and r \(for random\) are sup-)174 328.8
+R 3.21(ported. The)174 340.8 R(tw)3.21 E 3.21(oo)-.1 G .71
+(perands are gi)-3.21 F -.15(ve)-.25 G 3.21(na).15 G 3.21(sa)-3.21 G
+-.18(rg)-3.21 G 3.21(uments. The).18 F .71(lookup returns the result)
+3.21 F 1.374(of the computation, i.e.,)174 352.8 R/F2 9/Times-Roman@0 SF
+(TR)3.874 E(UE)-.36 E F1(or)3.874 E F2 -.666(FA)3.874 G(LSE).666 E F1
+1.374(for comparisons, inte)3.874 F 1.374(ger v)-.15 F 1.373
+(alues other)-.25 F(-)-.2 E 3.211(wise. The)174 364.8 R 3.212(ro)3.211 G
+.712(perator returns a pseudo-random number whose v)-3.212 F .712
+(alue lies between)-.25 F .538(the \214rst and second operand \(which r\
+equires that the \214rst operand is smaller than)174 376.8 R 2.133
+(the second\).)174 388.8 R 2.133
+(All options which are possible for maps are ignored.)7.133 F 4.634(As)
+7.134 G(imple)-4.634 E -.15(ex)174 400.8 S(ample is:).15 E(Kcomp arith)
+214 417 Q(...)214 441 Q(Scheck_etrn)214 465 Q .83(R$* $:)214 477 R
+($\(comp l $@ $&{load_a)2.5 E(vg} $@ 7 $\) $1)-.2 E(RF)214 489 Q
+(ALSE$# error ...)-.74 E(sock)102 509.4 Q 44.05(et The)-.1 F(sock)3.232
+E .732(et map uses a simple request/reply protocol o)-.1 F -.15(ve)-.15
+G 3.231(rT).15 G .731(CP or UNIX domain)-3.231 F(sock)174 521.4 Q .753
+(ets to query an e)-.1 F .753(xternal serv)-.15 F(er)-.15 E 5.753(.B)
+-.55 G .753(oth requests and replies are te)-5.753 F .753(xt based and)
+-.15 F(encoded as netstrings, i.e., a string "hello there" becomes:)174
+533.4 Q(11:hello there,)214 549.6 Q
+(Note: neither requests nor replies end with CRLF)174 565.8 Q(.)-.8 E
+.301(The request consists of the database map name and the lookup k)174
+589.8 R .6 -.15(ey s)-.1 H .3(eparated by a).15 F(space character:)174
+601.8 Q(<mapname> ' ' <k)214 630 Q -.15(ey)-.1 G(>).15 E(The serv)174
+658.2 Q(er responds with a status indicator and the result \(if an)-.15
+E(y\):)-.15 E(<status> ' ' <result>)214 686.4 Q .161(The status indicat\
+or speci\214es the result of the lookup operation itself and is one of)
+174 714.6 R 0 Cg EP
+%%Page: 83 79
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-83)195.86 E/F1 10/Times-Roman@0 SF(the follo)174 96 Q
+(wing upper case w)-.25 E(ords:)-.1 E 28.06(OK the)214 112.2 R -.1(ke)
+2.5 G 2.5(yw)-.05 G(as found, result contains the look)-2.6 E(ed up v)
+-.1 E(alue)-.25 E(NO)214 124.2 Q(TFOUNDthe k)-.4 E .3 -.15(ey w)-.1 H
+(as not found, the result is empty).05 E 15.83(TEMP a)214 136.2 R
+(temporary f)2.5 E(ailure occured)-.1 E -2.49(TIMEOUT a)214 148.2 R
+(timeout occured on the serv)2.5 E(er side)-.15 E 15.27(PERM a)214 160.2
+R(permanent f)2.5 E(ailure occured)-.1 E .26
+(In case of errors \(status TEMP)174 188.4 R 2.76(,T)-1.11 G .26
+(IMEOUT or PERM\) the result \214eld may contain)-2.76 F .818(an e)174
+200.4 R .818(xplanatory message.)-.15 F(Ho)5.818 E(we)-.25 E -.15(ve)
+-.25 G 1.618 -.4(r, t).15 H .818(he e).4 F .818
+(xplanatory message is not used an)-.15 F 3.319(yf)-.15 G(ur)-3.319 E(-)
+-.2 E(ther by)174 212.4 Q/F2 10/Times-Italic@0 SF(sendmail)2.5 E F1(.)A
+(Example replies:)174 236.4 Q(31:OK resolv)214 252.6 Q(ed.address@e)-.15
+E(xample.com,)-.15 E
+(56:OK error:550 5.7.1 User does not accept mail from sender)214 285 Q
+(,)-.4 E(in case of successful lookups, or:)174 313.2 Q(8:NO)214 329.4 Q
+(TFOUND,)-.4 E(in case the k)174 357.6 Q .3 -.15(ey w)-.1 H
+(as not found, or:).05 E(55:TEMP this te)214 373.8 Q(xt e)-.15 E
+(xplains that we had a temporary f)-.15 E(ailure,)-.1 E
+(in case of a temporary map lookup f)174 402 Q(ailure.)-.1 E 1.187
+(The sock)174 426 R 1.186(et map uses the same syntax as milters \(see \
+Section "X \212 Mail Filter)-.1 F
+(\(Milter\) De\214nitions"\) to specify the remote endpoint, e.g.,)174
+438 Q(Ksock)214 454.2 Q(et mySock)-.1 E(etMap inet:12345@127.0.0.1)-.1 E
+.492(If multiple sock)174 482.4 R .492
+(et maps de\214ne the same remote endpoint, the)-.1 F 2.993(yw)-.15 G
+.493(ill share a single)-2.993 F(connection to this endpoint.)174 494.4
+Q .488(Most of these accept as ar)127 510.6 R .488
+(guments the same optional \215ags and a \214lename \(or a mapname for)
+-.18 F .31(NIS; the \214lename is the root of the database path, so tha\
+t \231.db\232 or some other e)102 522.6 R .31(xtension appropriate)-.15
+F
+(for the database type will be added to get the actual database name\).)
+102 534.6 Q(Kno)5 E(wn \215ags are:)-.25 E 58.86(\255o Indicates)102
+550.8 R 1.147(that this map is optional \212 that is, if it cannot be o\
+pened, no error is)3.648 F(produced, and)174 562.8 Q F2(sendmail)2.5 E
+F1(will beha)2.5 E .3 -.15(ve a)-.2 H 2.5(si).15 G 2.5(ft)-2.5 G
+(he map e)-2.5 E(xisted b)-.15 E(ut w)-.2 E(as empty)-.1 E(.)-.65 E
+(\255N, \255O)102 579 Q .696(If neither)41.28 F F0<ad4e>3.197 E F1(or)
+3.197 E F0<ad4f>3.197 E F1 .697(are speci\214ed,)3.197 F F2(sendmail)
+3.197 E F1 .697(uses an adapti)3.197 F .997 -.15(ve a)-.25 H .697
+(lgorithm to decide).15 F .108
+(whether or not to look for null bytes on the end of k)174 591 R -.15
+(ey)-.1 G 2.608(s. It).15 F .107(starts by trying both; if)2.608 F .819
+(it \214nds an)174 603 R 3.319(yk)-.15 G 1.119 -.15(ey w)-3.419 H .819
+(ith a null byte it ne).15 F -.15(ve)-.25 G 3.319(rt).15 G .82(ries ag)
+-3.319 F .82(ain without a null byte and vice)-.05 F -.15(ve)174 615 S
+2.828(rsa. If).15 F F0<ad4e>2.828 E F1 .328(is speci\214ed it ne)2.828 F
+-.15(ve)-.25 G 2.828(rt).15 G .328(ries without a null byte and if)
+-2.828 F F0<ad4f>2.827 E F1 .327(is speci\214ed it)2.827 F(ne)174 627 Q
+-.15(ve)-.25 G 2.886(rt).15 G .386(ries with a null byte.)-2.886 F .386
+(Setting one of these can speed matches b)5.386 F .386(ut are ne)-.2 F
+-.15(ve)-.25 G(r).15 E(necessary)174 639 Q 5.546(.I)-.65 G 3.046(fb)
+-5.546 G(oth)-3.046 E F0<ad4e>3.046 E F1(and)3.046 E F0<ad4f>3.046 E F1
+.545(are speci\214ed,)3.045 F F2(sendmail)3.045 E F1 .545(will ne)3.045
+F -.15(ve)-.25 G 3.045(rt).15 G .545(ry an)-3.045 F 3.045(ym)-.15 G
+(atches)-3.045 E(at all \212 that is, e)174 651 Q -.15(ve)-.25 G
+(rything will appear to f).15 E(ail.)-.1 E<ad61>102 667.2 Q F2(x)A F1
+1.356(Append the string)57.48 F F2(x)3.856 E F1 1.357
+(on successful matches.)3.856 F -.15(Fo)6.357 G 3.857(re).15 G 1.357
+(xample, the def)-4.007 F(ault)-.1 E F2(host)3.857 E F1(map)3.857 E
+(appends a dot on successful matches.)174 679.2 Q<ad54>102 695.4 Q F2(x)
+A F1 .021(Append the string)55.81 F F2(x)2.521 E F1 .021(on temporary f)
+2.521 F 2.521(ailures. F)-.1 F .021(or e)-.15 F(xample,)-.15 E F2(x)
+2.521 E F1 -.1(wo)2.521 G .02(uld be appended if a).1 F .72
+(DNS lookup returned \231serv)174 707.4 R .72(er f)-.15 F .72
+(ailed\232 or an NIS lookup could not locate a serv)-.1 F(er)-.15 E(.)
+-.55 E(See also the)174 719.4 Q F0<ad74>2.5 E F1(\215ag.)2.5 E 0 Cg EP
+%%Page: 84 80
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-84 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 60.53
+(\255f Do)102 96 R(not fold upper to lo)2.5 E
+(wer case before looking up the k)-.25 E -.15(ey)-.1 G(.)-.5 E 56.08
+(\255m Match)102 112.2 R .4(only \(without replacing the v)2.9 F 2.899
+(alue\). If)-.25 F .399(you only care about the e)2.899 F .399
+(xistence of)-.15 F 7.306(ak)174 124.2 S 5.107 -.15(ey a)-7.406 H 4.807
+(nd not the v).15 F 4.807
+(alue \(as you might when searching the NIS map)-.25 F 1.947
+(\231hosts.byname\232 for e)174 136.2 R 1.947(xample\), this \215ag pre)
+-.15 F -.15(ve)-.25 G 1.947(nts the map from substituting the).15 F -.25
+(va)174 148.2 S 2.849(lue. Ho).25 F(we)-.25 E -.15(ve)-.25 G 1.149 -.4
+(r, T).15 H .349(he \255a ar).4 F .349
+(gument is still appended on a match, and the def)-.18 F .35(ault is)-.1
+F(still tak)174 160.2 Q(en if the match f)-.1 E(ails.)-.1 E<ad6b>102
+176.4 Q/F2 10/Times-Italic@0 SF -.1(ke)C(ycol)-.2 E F1 .52(The k)36.22 F
+.82 -.15(ey c)-.1 H .519(olumn name \(for NIS+\) or number \(for te).15
+F .519(xt lookups\).)-.15 F -.15(Fo)5.519 G 3.019(rL).15 G -.4(DA)-3.019
+G 3.019(Pm).4 G(aps)-3.019 E .972(this is an LD)174 188.4 R .973(AP \
+\214lter string in which %s is replaced with the literal contents of)-.4
+F .249(the lookup k)174 200.4 R .549 -.15(ey a)-.1 H .249
+(nd %0 is replaced with the LD).15 F .248
+(AP escaped contents of the lookup)-.4 F -.1(ke)174 212.4 S 4.176(ya)
+-.05 G 1.676(ccording to RFC 2254.)-4.176 F 1.676(If the \215ag)6.676 F
+F0<ad4b>4.176 E F1 1.676(is used, then %1 through %9 are)4.176 F .887
+(replaced with the LD)174 224.4 R .887(AP escaped contents of the ar)-.4
+F .886(guments speci\214ed in the map)-.18 F(lookup.)174 236.4 Q<ad76>
+102 252.6 Q F2(valcol)A F1 1.928(The v)36.92 F 1.928
+(alue column name \(for NIS+\) or number \(for te)-.25 F 1.929
+(xt lookups\).)-.15 F -.15(Fo)6.929 G 4.429(rL).15 G -.4(DA)-4.429 G(P)
+.4 E .467(maps this is the name of one or more attrib)174 264.6 R .467
+(utes to be returned; multiple attrib)-.2 F(utes)-.2 E 1.216
+(can be separated by commas.)174 276.6 R 1.216
+(If not speci\214ed, all attrib)6.216 F 1.216(utes found in the match)
+-.2 F 1.328(will be returned.)174 288.6 R 1.328(The attrib)6.328 F 1.328
+(utes listed can also include a type and one or more)-.2 F
+(objectClass v)174 300.6 Q(alues for matching as described in the LD)
+-.25 E(AP section.)-.4 E<ad7a>102 316.8 Q F2(delim)A F1 .218
+(The column delimiter \(for te)39.7 F .218(xt lookups\).)-.15 F .219
+(It can be a single character or one of the)5.219 F 1.826
+(special strings \231)174 328.8 R 1.826(\\n\232 or \231)1.666 F 1.826
+(\\t\232 to indicate ne)1.666 F 1.825(wline or tab respecti)-.25 F -.15
+(ve)-.25 G(ly).15 E 6.825(.I)-.65 G 4.325(fo)-6.825 G(mitted)-4.325 E
+(entirely)174 340.8 Q 3.566(,t)-.65 G 1.066(he column separator is an)
+-3.566 F 3.567(ys)-.15 G 1.067(equence of white space.)-3.567 F -.15(Fo)
+6.067 G 3.567(rL).15 G -.4(DA)-3.567 G 3.567(Pm).4 G(aps)-3.567 E 2.062
+(this is the separator character to combine multiple v)174 352.8 R 2.061
+(alues into a single return)-.25 F 3.71(string. If)174 364.8 R 1.21
+(not set, the LD)3.71 F 1.211
+(AP lookup will only return the \214rst match found.)-.4 F -.15(Fo)6.211
+G(r).15 E .101(DNS maps this is the separator character at which the re\
+sult of a query is cut of)174 376.8 R 2.6(fi)-.25 G(f)-2.6 E
+(is too long.)174 388.8 Q 61.08(\255t Normally)102 405 R 2.726(,w)-.65 G
+.226(hen a map attempts to do a lookup and the serv)-2.726 F .227(er f)
+-.15 F .227(ails \(e.g.,)-.1 F F2(sendmail)2.727 E F1(couldn')174 417 Q
+2.776(tc)-.18 G .276(ontact an)-2.776 F 2.776(yn)-.15 G .276(ame serv)
+-2.776 F .276(er; this is)-.15 F F2(not)2.776 E F1 .276
+(the same as an entry not being found)2.776 F .251(in the map\), the me\
+ssage being processed is queued for future processing.)174 429 R(The)
+5.251 E F0<ad74>2.751 E F1 2.04(\215ag turns of)174 441 R 4.539(ft)-.25
+G 2.039(his beha)-4.539 F(vior)-.2 E 4.539(,l)-.4 G 2.039
+(etting the temporary f)-4.539 F 2.039(ailure \(serv)-.1 F 2.039(er do)
+-.15 F 2.039(wn\) act as)-.25 F .675(though it were a permanent f)174
+453 R .675(ailure \(entry not found\).)-.1 F .676
+(It is particularly useful for)5.676 F .772
+(DNS lookups, where someone else')174 465 R 3.272(sm)-.55 G .772
+(iscon\214gured name serv)-3.272 F .772(er can cause prob-)-.15 F 1.645
+(lems on your machine.)174 477 R(Ho)6.645 E(we)-.25 E -.15(ve)-.25 G
+2.445 -.4(r, c).15 H 1.645(are must be tak).4 F 1.646
+(en to ensure that you don')-.1 F(t)-.18 E .263(bounce mail that w)174
+489 R .263(ould be resolv)-.1 F .262(ed correctly if you tried ag)-.15 F
+2.762(ain. A)-.05 F .262(common strat-)2.762 F -.15(eg)174 501 S 2.5(yi)
+.15 G 2.5(st)-2.5 G 2.5(of)-2.5 G(orw)-2.5 E(ard such mail to another)
+-.1 E 2.5(,p)-.4 G(ossibly better connected, mail serv)-2.5 E(er)-.15 E
+(.)-.55 E 56.64(\255D Perform)102 517.2 R .833
+(no lookup in deferred deli)3.332 F -.15(ve)-.25 G .833(ry mode.).15 F
+.833(This \215ag is set by def)5.833 F .833(ault for the)-.1 F F2(host)
+174 529.2 Q F1(map.)2.5 E<ad53>102 545.4 Q F2(spacesub)A F1 1.538(The c\
+haracter to use to replace space characters after a successful map look\
+up)24.14 F(\(esp. useful for re)174 557.4 Q(ge)-.15 E 2.5(xa)-.15 G
+(nd syslog maps\).)-2.5 E<ad73>102 573.6 Q F2(spacesub)A F1 -.15(Fo)
+25.81 G 3.1(rt).15 G .6(he dequote map only)-3.1 F 3.101(,t)-.65 G .601
+(he character to use to replace space characters after a)-3.101 F
+(successful dequote.)174 585.6 Q 58.86(\255q Don')102 601.8 R 2.5(td)
+-.18 G(equote the k)-2.5 E .3 -.15(ey b)-.1 H(efore lookup.).15 E<ad4c>
+102 618 Q F2(le)A(vel)-.15 E F1 -.15(Fo)41.52 G 2.5(rt).15 G
+(he syslog map only)-2.5 E 2.5(,i)-.65 G 2.5(ts)-2.5 G
+(peci\214es the le)-2.5 E -.15(ve)-.25 G 2.5(lt).15 G 2.5(ou)-2.5 G
+(se for the syslog call.)-2.5 E 56.64(\255A When)102 634.2 R(reb)3 E .5
+(uilding an alias \214le, the)-.2 F F0<ad41>3 E F1 .5
+(\215ag causes duplicate entries in the te)3 F .5(xt v)-.15 F(er)-.15 E
+(-)-.2 E(sion to be mer)174 646.2 Q 2.5(ged. F)-.18 F(or e)-.15 E
+(xample, tw)-.15 E 2.5(oe)-.1 G(ntries:)-2.5 E 27.49(list: user1,)214
+662.4 R(user2)2.5 E 27.49(list: user3)214 674.4 R -.1(wo)174 690.6 S
+(uld be treated as though it were the single entry).1 E 27.49
+(list: user1,)214 706.8 R(user2, user3)2.5 E(in the presence of the)174
+723 Q F0<ad41>2.5 E F1(\215ag.)2.5 E 0 Cg EP
+%%Page: 85 81
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-85)195.86 E/F1 10/Times-Roman@0 SF
+(Some additional \215ags are a)127 96 Q -.25(va)-.2 G
+(ilable for the host and dns maps:).25 E 58.86(\255d delay:)102 112.2 R
+(specify the resolv)2.5 E(er')-.15 E 2.5(sr)-.55 G
+(etransmission time interv)-2.5 E(al \(in seconds\).)-.25 E 60.53
+(\255r retry:)102 128.4 R
+(specify the number of times to retransmit a resolv)2.5 E(er query)-.15
+E(.)-.65 E(The dns map has another \215ag:)127 144.6 Q 57.19
+(\255B basedomain:)102 160.8 R(specify a domain that is al)2.5 E -.1(wa)
+-.1 G(ys appended to queries.).1 E(The follo)127 177 Q
+(wing additional \215ags are present in the ldap map only:)-.25 E 57.19
+(\255R Do)102 193.2 R .025(not auto chase referrals.)2.525 F .025
+(sendmail must be compiled with)5.025 F F0(\255DLD)2.525 E(AP_REFER-)
+-.35 E(RALS)174 205.2 Q F1(to use this \215ag.)2.5 E 58.86(\255n Retrie)
+102 221.4 R .3 -.15(ve a)-.25 H(ttrib).15 E(ute names only)-.2 E(.)-.65
+E<ad56>102 237.6 Q/F2 10/Times-Italic@0 SF(sep)A F1(Retrie)45.81 E .3
+-.15(ve b)-.25 H(oth attrib).15 E(utes name and v)-.2 E
+(alue\(s\), separated by)-.25 E F2(sep)2.5 E F1(.)A<ad72>102 253.8 Q F2
+(der)A(ef)-.37 E F1(Set the alias dereference option to one of ne)42.85
+E -.15(ve)-.25 G .8 -.4(r, a).15 H -.1(lwa).4 G(ys, search, or \214nd.)
+.1 E<ad73>102 270 Q F2(scope)A F1
+(Set search scope to one of base, one \(one le)39.7 E -.15(ve)-.25 G
+(l\), or sub \(subtree\).).15 E<ad68>102 286.2 Q F2(host)A F1(LD)44.69 E
+2.095(AP serv)-.4 F 2.095(er hostname.)-.15 F 2.095(Some LD)7.095 F
+2.095(AP libraries allo)-.4 F 4.595(wy)-.25 G 2.095
+(ou to specify multiple,)-4.595 F .466
+(space-separated hosts for redundanc)174 298.2 R 4.266 -.65(y. I)-.15 H
+2.967(na).65 G .467(ddition, each of the hosts listed can be)-2.967 F
+(follo)174 310.2 Q(wed by a colon and a port number to o)-.25 E -.15(ve)
+-.15 G(rride the def).15 E(ault LD)-.1 E(AP port.)-.4 E<ad70>102 326.4 Q
+F2(port)A F1(LD)44.69 E(AP service port.)-.4 E<ad48>102 342.6 Q F2(LD)
+2.5 E(APURI)-.35 E F1 1.103(Use the speci\214ed LD)15.33 F 1.102
+(AP URI instead of specifying the hostname and port sepa-)-.4 F
+(rately with the the)174 354.6 Q F0<ad68>2.5 E F1(and)2.5 E F0<ad70>2.5
+E F1(options sho)2.5 E(wn abo)-.25 E -.15(ve)-.15 G 5(.F).15 G(or e)
+-5.15 E(xample,)-.15 E(-h serv)214 370.8 Q(er)-.15 E(.e)-.55 E
+(xample.com -p 389 -b dc=e)-.15 E(xample,dc=com)-.15 E(is equi)174 387 Q
+-.25(va)-.25 G(lent to).25 E(-H ldap://serv)214 403.2 Q(er)-.15 E(.e)
+-.55 E(xample.com:389 -b dc=e)-.15 E(xample,dc=com)-.15 E .756
+(If the LD)174 419.4 R .757(AP library supports it, the LD)-.4 F .757
+(AP URI format ho)-.4 F(we)-.25 E -.15(ve)-.25 G 3.257(rc).15 G .757
+(an also request)-3.257 F(LD)174 431.4 Q(AP o)-.4 E -.15(ve)-.15 G 2.5
+(rS).15 G(SL by using)-2.5 E F0(ldaps://)2.5 E F1(instead of)2.5 E F0
+(ldap://)2.5 E F1 5(.F)C(or e)-5.15 E(xample:)-.15 E 2.5(OL)214 447.6 S
+-.4(DA)-2.5 G(PDef).4 E(aultSpec=-H ldaps://ldap.e)-.1 E
+(xample.com -b dc=e)-.15 E(xample,dc=com)-.15 E(Similarly)174 463.8 Q
+3.221(,i)-.65 G 3.221(ft)-3.221 G .721(he LD)-3.221 F .721
+(AP library supports it, It can also be used to specify a UNIX)-.4 F
+(domain sock)174 475.8 Q(et using)-.1 E F0(ldapi://)2.5 E F1(:)A 2.5(OL)
+214 492 S -.4(DA)-2.5 G(PDef).4 E(aultSpec=-H ldapi://sock)-.1 E
+(et\214le -b dc=e)-.1 E(xample,dc=com)-.15 E<ad62>102 512.4 Q F2(base)A
+F1(LD)43.03 E(AP search base.)-.4 E<ad6c>102 528.6 Q F2(timelimit)A F1
+-.35(Ti)28.02 G(me limit for LD).35 E(AP queries.)-.4 E<ad5a>102 544.8 Q
+F2(sizelimit)A F1(Size \(number of matches\) limit for LD)26.91 E
+(AP or DNS queries.)-.4 E<ad64>102 561 Q F2(distinguished_name)A F1
+(The distinguished name to use to login to the LD)174 573 Q(AP serv)-.4
+E(er)-.15 E(.)-.55 E<ad4d>102 589.2 Q F2(method)A F1 5.987
+(The method to authenticate to the LD)28.03 F 5.987(AP serv)-.4 F(er)
+-.15 E 10.987(.S)-.55 G 5.988(hould be one of)-10.987 F F0(LD)174 601.2
+Q(AP_A)-.35 E(UTH_NONE)-.5 E F1(,)A F0(LD)2.5 E(AP_A)-.35 E(UTH_SIMPLE)
+-.5 E F1 2.5(,o)C(r)-2.5 E F0(LD)2.5 E(AP_A)-.35 E(UTH_KRBV4)-.5 E F1(.)
+A<ad50>102 617.4 Q F2(passwor)A(d\214le)-.37 E F1 .342
+(The \214le containing the secret k)10.61 F .642 -.15(ey f)-.1 H .342
+(or the).15 F F0(LD)2.842 E(AP_A)-.35 E(UTH_SIMPLE)-.5 E F1
+(authentication)2.842 E(method or the name of the K)174 629.4 Q
+(erberos tick)-.25 E(et \214le for)-.1 E F0(LD)2.5 E(AP_A)-.35 E
+(UTH_KRBV4)-.5 E F1(.)A 58.86(\2551 F)102 645.6 R .457(orce LD)-.15 F
+.458(AP searches to only succeed if a single match is found.)-.4 F .458
+(If multiple v)5.458 F(al-)-.25 E
+(ues are found, the search is treated as if no match w)174 657.6 Q
+(as found.)-.1 E<ad77>102 673.8 Q F2(ver)A(sion)-.1 E F1 1.48
+(Set the LD)29.8 F 1.479(AP API/protocol v)-.4 F 1.479(ersion to use.)
+-.15 F 1.479(The def)6.479 F 1.479(ault depends on the LD)-.1 F(AP)-.4 E
+1.37(client libraries in use.)174 685.8 R -.15(Fo)6.37 G 3.87(re).15 G
+(xample,)-4.02 E F0 1.37(\255w 3)3.87 F F1 1.37(will cause)3.87 F F2
+(sendmail)3.87 E F1 1.37(to use LD)3.87 F(APv3)-.4 E
+(when communicating with the LD)174 697.8 Q(AP serv)-.4 E(er)-.15 E(.)
+-.55 E 0 Cg EP
+%%Page: 86 82
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-86 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 56.64
+(\255K T)102 96 R .588(reat the LD)-.35 F .588(AP search k)-.4 F .888
+-.15(ey a)-.1 H 3.088(sm).15 G(ulti-ar)-3.088 E .587
+(gument and replace %1 through %9 in the)-.18 F -.1(ke)174 108 S 2.503
+(yw)-.05 G .003(ith the LD)-2.503 F .003
+(AP escaped contents of the lookup ar)-.4 F .003
+(guments speci\214ed in the map)-.18 F(lookup.)174 120 Q(The)127 136.2 Q
+/F2 10/Times-Italic@0 SF(dbm)2.99 E F1 .489
+(map appends the strings \231.pag\232 and \231.dir\232 to the gi)2.99 F
+-.15(ve)-.25 G 2.989<6e8c>.15 G .489(lename; the)-2.989 F F2(hash)2.989
+E F1(and)2.989 E F2(btr)2.989 E(ee)-.37 E F1(maps append \231.db\232.)
+102 148.2 Q -.15(Fo)5 G 2.5(re).15 G(xample, the map speci\214cation)
+-2.65 E -.15(Ku)142 164.4 S(ucp dbm \255o \255N /etc/mail/uucpmap).15 E
+.21(speci\214es an optional map named \231uucp\232 of class \231dbm\232\
+; it al)102 180.6 R -.1(wa)-.1 G .21(ys has null bytes at the end of e)
+.1 F -.15(ve)-.25 G(ry).15 E
+(string, and the data is located in /etc/mail/uucpmap.{dir)102 192.6 Q
+(,pag}.)-.4 E 1.095(The program)127 208.8 R F2(mak)3.595 E(emap)-.1 E F1
+1.094(\(8\) can be used to b)B 1.094(uild an)-.2 F 3.594(yo)-.15 G 3.594
+(ft)-3.594 G 1.094(he three database-oriented maps.)-3.594 F(It)6.094 E
+(tak)102 220.8 Q(es the follo)-.1 E(wing \215ags:)-.25 E 60.53(\255f Do)
+102 237 R(not fold upper to lo)2.5 E(wer case in the map.)-.25 E 56.64
+(\255N Include)102 253.2 R(null bytes in k)2.5 E -.15(ey)-.1 G(s.).15 E
+58.86(\255o Append)102 269.4 R(to an e)2.5 E(xisting \(old\) \214le.)
+-.15 E 60.53(\255r Allo)102 285.6 R 3.668(wr)-.25 G 1.168
+(eplacement of e)-3.668 F 1.168(xisting k)-.15 F -.15(ey)-.1 G 1.168
+(s; normally).15 F 3.668(,r)-.65 G 1.168(e-inserting an e)-3.668 F 1.168
+(xisting k)-.15 F 1.469 -.15(ey i)-.1 H 3.669(sa).15 G(n)-3.669 E(error)
+174 297.6 Q(.)-.55 E 58.86(\255v Print)102 313.8 R(what is happening.)
+2.5 E(The)102 330 Q F2(sendmail)3.606 E F1 1.106(daemon does not ha)
+3.606 F 1.406 -.15(ve t)-.2 H 3.606(ob).15 G 3.606(er)-3.606 G 1.106
+(estarted to read the ne)-3.606 F 3.605(wm)-.25 G 1.105
+(aps as long as you change)-3.605 F
+(them in place; \214le locking is used so that the maps w)102 342 Q(on')
+-.1 E 2.5(tb)-.18 G 2.5(er)-2.5 G(ead while the)-2.5 E 2.5(ya)-.15 G
+(re being updated.)-2.5 E(Ne)127 358.2 Q 2.5(wc)-.25 G
+(lasses can be added in the routine)-2.5 E F0(setupmaps)2.5 E F1
+(in \214le)2.5 E F0(conf)2.5 E(.c)-.15 E F1(.)A F0 2.5(5.10. Q)87 382.2
+R 2.5<8a51>2.5 G(ueue Gr)-2.5 E(oup Declaration)-.18 E F1 .71
+(In addition to the option)127 398.4 R F2(QueueDir)3.21 E(ectory)-.37 E
+(,)-.55 E F1 .71(queue groups can be declared that de\214ne a \(group)
+3.21 F(of\) queue directories under a common name.)102 410.4 Q
+(The syntax is as follo)5 E(ws:)-.25 E F0(Q)142 426.6 Q F2(name)A F1({,)
+2.5 E F2(\214eld)2.5 E F1(=)A F2(value)A F1(}+)1.666 E(where)102 442.8 Q
+F2(name)3.276 E F1 .775(is the symbolic name of the queue group under w\
+hich it can be referenced in v)3.276 F(arious)-.25 E .217
+(places and the \231\214eld=v)102 454.8 R .217
+(alue\232 pairs de\214ne attrib)-.25 F .217(utes of the queue group.)-.2
+F .218(The name must only consist)5.218 F(of alphanumeric characters.)
+102 466.8 Q(Fields are:)5 E 47.83(Flags Flags)102 483 R
+(for this queue group.)2.5 E 50.62(Nice The)102 499.2 R .902
+(nice\(2\) increment for the queue group.)3.402 F .901(This v)5.902 F
+.901(alue must be greater or equal)-.25 F(zero.)174 511.2 Q(Interv)102
+527.4 Q 38.65(al The)-.25 F(time between tw)2.5 E 2.5(oq)-.1 G
+(ueue runs.)-2.5 E -.15(Pa)102 543.6 S 51.87(th The).15 F
+(queue directory of the group \(required\).)2.5 E 36.17(Runners The)102
+559.8 R .073(number of parallel runners processing the queue.)2.573 F
+.074(Note that)5.074 F F0(F=f)2.574 E F1 .074(must be set if)2.574 F
+(this v)174 571.8 Q(alue is greater than one.)-.25 E 51.72(Jobs The)102
+588 R(maximum number of jobs \(messages deli)2.5 E -.15(ve)-.25 G
+(red\) per queue run.).15 E 30.62(recipients The)102 604.2 R .382
+(maximum number of recipients per en)2.882 F -.15(ve)-.4 G 2.882
+(lope. En).15 F -.15(ve)-.4 G .382(lopes with more than this).15 F .109
+(number of recipients will be split into multiple en)174 616.2 R -.15
+(ve)-.4 G .11(lopes in the same queue direc-).15 F(tory)174 628.2 Q 5
+(.T)-.65 G(he def)-5 E(ault v)-.1 E(alue 0 means no limit.)-.25 E
+(Only the \214rst character of the \214eld name is check)102 644.4 Q
+(ed.)-.1 E .076(By def)127 660.6 R .076(ault, a queue group named)-.1 F
+F2(mqueue)2.575 E F1 .075(is de\214ned that uses the v)2.575 F .075
+(alue of the)-.25 F F2(QueueDir)2.575 E(ectory)-.37 E F1 .268
+(option as path.)102 672.6 R .268(Notice: all paths that are used for q\
+ueue groups must be subdirectories of)5.268 F F2(QueueDi-)2.769 E -.37
+(re)102 684.6 S(ctory).37 E F1 6.487(.S)C 1.487(ince the)-6.487 F 3.987
+(yc)-.15 G 1.487(an be symbolic links, this isn')-3.987 F 3.987(tar)-.18
+G 1.486(eal restriction, If)-3.987 F F2(QueueDir)3.986 E(ectory)-.37 E
+F1 1.486(uses a)3.986 F .746(wildcard, then the directory one le)102
+696.6 R -.15(ve)-.25 G 3.247(lu).15 G 3.247(pi)-3.247 G 3.247(sc)-3.247
+G .747(onsidered the `)-3.247 F(`base')-.74 E 3.247('d)-.74 G .747
+(irectory which all other queue)-3.247 F .086(directories must share.)
+102 708.6 R .086(Please mak)5.086 F 2.586(es)-.1 G .086
+(ure that the queue directories do not o)-2.586 F -.15(ve)-.15 G .085
+(rlap, e.g., do not spec-).15 F(ify)102 720.6 Q 0 Cg EP
+%%Page: 87 83
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-87)195.86 E/F1 10/Times-Roman@0 SF 2.5(OQ)142 96 S
+(ueueDirectory=/v)-2.5 E(ar/spool/mqueue/*)-.25 E(Qone, P=/v)142 108 Q
+(ar/spool/mqueue/dir1)-.25 E(Qtw)142 120 Q(o, P=/v)-.1 E
+(ar/spool/mqueue/dir2)-.25 E
+(because this also includes \231dir1\232 and \231dir2\232 in the def)102
+136.2 Q(ault queue group.)-.1 E(Ho)5 E(we)-.25 E -.15(ve)-.25 G -.4(r,)
+.15 G 2.5(OQ)142 152.4 S(ueueDirectory=/v)-2.5 E(ar/spool/mqueue/main*)
+-.25 E(Qone, P=/v)142 164.4 Q(ar/spool/mqueue/dir)-.25 E(Qtw)142 176.4 Q
+(o, P=/v)-.1 E(ar/spool/mqueue/other*)-.25 E(is a v)102 192.6 Q
+(alid queue group speci\214cation.)-.25 E .235(Options listed in the `)
+127 208.8 R(`Flags')-.74 E 2.736<278c>-.74 G .236
+(eld can be used to modify the beha)-2.736 F .236
+(vior of a queue group.)-.2 F(The)5.236 E -.74(``)102 220.8 S .55(f').74
+G 2.605<278d>-1.29 G .105
+(ag must be set if multiple queue runners are supposed to w)-2.605 F
+.104(ork on the entries in a queue group.)-.1 F(Otherwise)102 232.8 Q/F2
+10/Times-Italic@0 SF(sendmail)2.5 E F1(will w)2.5 E
+(ork on the entries strictly sequentially)-.1 E(.)-.65 E .511(The `)127
+249 R(`Interv)-.74 E(al')-.25 E 3.011<278c>-.74 G .511
+(eld sets the time between queue runs.)-3.011 F .512
+(If no queue group speci\214c interv)5.511 F .512(al is)-.25 F
+(set, then the parameter of the)102 261 Q F0(-q)2.5 E F1
+(option from the command line is used.)2.5 E 7.657 -.8(To c)127 277.2 T
+6.057(ontrol the o).8 F -.15(ve)-.15 G 6.056
+(rall number of concurrently acti).15 F 6.356 -.15(ve q)-.25 H 6.056
+(ueue runners the option).15 F F0(MaxQueueChildr)102 289.2 Q(en)-.18 E
+F1 .055(can be set.)2.555 F .055
+(This limits the number of processes used for running the queues to)
+5.055 F F0(MaxQueueChildr)102 301.2 Q(en)-.18 E F1 3.63(,t)C 1.13
+(hough at an)-3.63 F 3.63(yo)-.15 G 1.13(ne time fe)-3.63 F 1.129
+(wer processes may be acti)-.25 F 1.429 -.15(ve a)-.25 H 3.629(sar).15 G
+1.129(esult of queue)-3.629 F
+(options, completed queue runs, system load, etc.)102 313.2 Q .602
+(The maximum number of queue runners for an indi)127 329.4 R .602
+(vidual queue group can be controlled via)-.25 F(the)102 341.4 Q F0
+(Runners)2.585 E F1 2.585(option. If)2.585 F .084(set to 0, entries in \
+the queue will not be processed, which is useful to `)2.585 F(`quar)-.74
+E(-)-.2 E(antine')102 353.4 Q 4.515('q)-.74 G 2.015(ueue \214les.)-4.515
+F 2.016
+(The number of runners per queue group may also be set with the option)
+7.015 F F0(MaxRunnersP)102 365.4 Q(erQueue)-.2 E F1 3.209(,w)C .709
+(hich applies to queue groups that ha)-3.209 F 1.008 -.15(ve n)-.2 H
+3.208(oi).15 G(ndi)-3.208 E .708(vidual limit.)-.25 F .708(That is, the)
+5.708 F(def)102 377.4 Q(ault v)-.1 E(alue for)-.25 E F0(Runners)2.5 E F1
+(is)2.5 E F0(MaxRunnersP)2.5 E(erQueue)-.2 E F1(if set, otherwise 1.)2.5
+E 1.087
+(The \214eld Jobs describes the maximum number of jobs \(messages deli)
+127 393.6 R -.15(ve)-.25 G 1.087(red\) per queue run,).15 F
+(which is the queue group speci\214c v)102 405.6 Q(alue of)-.25 E F0
+(MaxQueueRunSize)2.5 E F1(.)A .175(Notice: queue groups should be decla\
+red after all queue related options ha)127 421.8 R .475 -.15(ve b)-.2 H
+.175(een set because).15 F .314(queue groups tak)102 433.8 R 2.814(et)
+-.1 G .314(heir def)-2.814 F .314(aults from those options.)-.1 F .314
+(If an option is set after a queue group declara-)5.314 F .188
+(tion, the v)102 445.8 R .187
+(alues of options in the queue group are set to the def)-.25 F .187
+(aults of)-.1 F F2(sendmail)2.687 E F1 .187(unless e)2.687 F .187
+(xplicitly set)-.15 F(in the declaration.)102 457.8 Q 1.972(Each en)127
+474 R -.15(ve)-.4 G 1.972(lope is assigned to a queue group based on th\
+e algorithm described in section).15 F -.74(``)102 486 S
+(Queue Groups and Queue Directories').74 E('.)-.74 E F0 2.5(5.11. X)87
+510 R 2.5<8a4d>2.5 G(ail Filter \(Milter\) De\214nitions)-2.5 E F1(The)
+127 526.2 Q F2(sendmail)3.937 E F1 1.437
+(Mail Filter API \(Milter\) is designed to allo)3.937 F 3.937(wt)-.25 G
+1.437(hird-party programs access to)-3.937 F .177(mail messages as the)
+102 538.2 R 2.677(ya)-.15 G .177
+(re being processed in order to \214lter meta-information and content.)
+-2.677 F(The)5.178 E 2.678(ya)-.15 G(re)-2.678 E
+(declared in the con\214guration \214le as:)102 550.2 Q F0(X)142 566.4 Q
+F2(name)A F1({,)2.5 E F2(\214eld)2.5 E F1(=)A F2(value)A F1(}*)1.666 E
+(where)102 582.6 Q F2(name)4.688 E F1 2.188(is the name of the \214lter\
+ \(used internally only\) and the \231\214eld=name\232 pairs de\214ne)
+4.688 F(attrib)102 594.6 Q .491(utes of the \214lter)-.2 F 5.491(.A)-.55
+G .491(lso see the documentation for the)-5.491 F F0(InputMailFilters)
+2.992 E F1 .492(option for more infor)2.992 F(-)-.2 E(mation.)102 606.6
+Q(Fields are:)127 622.8 Q(Sock)142 639 Q 42.38(et The)-.1 F(sock)2.5 E
+(et speci\214cation)-.1 E 47.83(Flags Special)142 651 R
+(\215ags for this \214lter)2.5 E -.35(Ti)142 663 S 32.07(meouts T).35 F
+(imeouts for this \214lter)-.35 E
+(Only the \214rst character of the \214eld name is check)102 679.2 Q
+(ed \(it')-.1 E 2.5(sc)-.55 G(ase-sensiti)-2.5 E -.15(ve)-.25 G(\).).15
+E(The sock)127 695.4 Q(et speci\214cation is one of the follo)-.1 E
+(wing forms:)-.25 E F0(S=inet:)142 711.6 Q F2(port)2.5 E F0(@)2.5 E F2
+(host)2.5 E 0 Cg EP
+%%Page: 88 84
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-88 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E(S=inet6:)142 96 Q/F1 10
+/Times-Italic@0 SF(port)2.5 E F0(@)2.5 E F1(host)2.5 E F0(S=local:)142
+116.4 Q F1(path)2.5 E/F2 10/Times-Roman@0 SF 1.792(The \214rst tw)102
+132.6 R 4.291(od)-.1 G 1.791(escribe an IPv4 or IPv6 sock)-4.291 F 1.791
+(et listening on a certain)-.1 F F1(port)4.291 E F2 1.791(at a gi)4.291
+F -.15(ve)-.25 G(n).15 E F1(host)4.291 E F2 1.791(or IP)4.291 F 2.5
+(address. The)102 144.6 R(\214nal form describes a named sock)2.5 E
+(et on the \214lesystem at the gi)-.1 E -.15(ve)-.25 G(n).15 E F1(path)
+2.5 E F2(.)A(The follo)127 160.8 Q
+(wing \215ags may be set in the \214lter description.)-.25 E 13.33(RR)
+102 177 S(eject connection if \214lter una)-13.33 E -.25(va)-.2 G
+(ilable.).25 E 13.89(TT)102 193.2 S(emporary f)-14.59 E
+(ail connection if \214lter una)-.1 E -.25(va)-.2 G(ilable.).25 E .655
+(If neither F=R nor F=T is speci\214ed, the message is passed through)
+127 209.4 R F1(sendmail)3.155 E F2 .655(in case of \214lter)3.155 F
+(errors as if the f)102 221.4 Q(ailing \214lters were not present.)-.1 E
+(The timeouts can be set using the four \214elds inside of the)127 237.6
+Q F0(T=)2.5 E F2(equate:)2.5 E 13.33(CT)102 253.8 S
+(imeout for connecting to a \214lter)-13.68 E 5(.I)-.55 G 2.5(fs)-5 G
+(et to 0, the system')-2.5 E(s)-.55 E F1(connect\(\))2.5 E F2
+(timeout will be used.)2.5 E 14.44(ST)102 270 S
+(imeout for sending information from the MT)-14.79 E 2.5(At)-.93 G 2.5
+(oa\214)-2.5 G(lter)-2.5 E(.)-.55 E 13.33(RT)102 286.2 S
+(imeout for reading reply from the \214lter)-13.68 E(.)-.55 E 13.89(EO)
+102 302.4 S -.15(ve)-13.89 G 1.186
+(rall timeout between sending end-of-message to \214lter and w).15 F
+1.186(aiting for the \214nal ackno)-.1 F(wl-)-.25 E(edgment.)122 314.4 Q
+1.402(Note the separator between each timeout \214eld is a)127 330.6 R
+F0(';')3.903 E F2 6.403(.T)C 1.403(he def)-6.403 F 1.403(ault v)-.1 F
+1.403(alues \(if not set\) are:)-.25 F F0(T=C:5m;S:10s;R:10s;E:5m)102
+342.6 Q F2(where)2.5 E F0(s)2.5 E F2(is seconds and)2.5 E F0(m)2.5 E F2
+(is minutes.)2.5 E(Examples:)127 358.8 Q(X\214lter1, S=local:/v)142 375
+Q(ar/run/f1.sock, F=R)-.25 E(X\214lter2, S=inet6:999@localhost, F=T)142
+387 Q 2.5(,T)-.74 G(=S:1s;R:1s;E:5m)-2.5 E
+(X\214lter3, S=inet:3333@localhost, T=C:2m)142 399 Q F0 2.5(5.12. The)87
+427.2 R(User Database)2.5 E F2 .479
+(The user database is deprecated in f)127 443.4 R -.2(avo)-.1 G 2.978
+(ro).2 G 2.978(f`)-2.978 G(`virtusertable')-3.718 E 2.978('a)-.74 G .478
+(nd `)-2.978 F(`genericstable')-.74 E 2.978('a)-.74 G 2.978(se)-2.978 G
+(xplained)-3.128 E 1.029(in the \214le)102 455.4 R F0(cf/README)3.529 E
+F2 6.029(.I)C 3.529(fy)-6.029 G 1.029(ou ha)-3.529 F 1.329 -.15(ve a ve)
+-.2 H 1.029(rsion of).15 F F1(sendmail)3.529 E F2 1.03
+(with the user database package com-)3.53 F(piled in, the handling of s\
+ender and recipient addresses is modi\214ed.)102 467.4 Q
+(The location of this database is controlled with the)127 483.6 Q F0
+(UserDatabaseSpec)2.5 E F2(option.)2.5 E F0 2.5(5.12.1. Structur)102
+507.6 R 2.5(eo)-.18 G 2.5(ft)-2.5 G(he user database)-2.5 E F2
+(The database is a sorted \(BT)142 523.8 Q(ree-based\) structure.)-.35 E
+(User records are stored with the k)5 E -.15(ey)-.1 G(:).15 E F1(user)
+157 540 Q(-name)-.2 E F0(:)A F1(\214eld-name)A F2 .128(The sorted datab\
+ase format ensures that user records are clustered together)117 556.2 R
+5.128(.M)-.55 G .128(eta-information is)-5.128 F(al)117 568.2 Q -.1(wa)
+-.1 G(ys stored with a leading colon.).1 E
+(Field names de\214ne both the syntax and semantics of the v)142 584.4 Q
+2.5(alue. De\214ned)-.25 F(\214elds include:)2.5 E 33.39(maildrop The)
+117 600.6 R(deli)4.872 E -.15(ve)-.25 G 2.372(ry address for this user)
+.15 F 7.372(.T)-.55 G 2.373(here may be multiple v)-7.372 F 2.373
+(alues of this)-.25 F 2.675(record. In)189 612.6 R(particular)2.675 E
+2.675(,m)-.4 G .175(ailing lists will ha)-2.675 F .475 -.15(ve o)-.2 H
+(ne).15 E F1(maildr)2.675 E(op)-.45 E F2 .175(record for each user)2.675
+F(on the list.)189 624.6 Q 30.06(mailname The)117 640.8 R 1.026
+(outgoing mailname for this user)3.526 F 6.026(.F)-.55 G 1.027
+(or each outgoing name, there should)-6.176 F .08(be an appropriate)189
+652.8 R F1(maildr)2.58 E(op)-.45 E F2 .08(record for that name to allo)
+2.58 F 2.58(wr)-.25 G .08(eturn mail.)-2.58 F .08(See also)5.08 F F1
+(:default:mailname)189 664.8 Q F2(.)A 25.62(mailsender Changes)117 681 R
+(an)3.447 E 3.447(ym)-.15 G .947(ail sent to this address to ha)-3.447 F
+1.248 -.15(ve t)-.2 H .948(he indicated en).15 F -.15(ve)-.4 G .948
+(lope sender).15 F(.)-.55 E .498(This is intended for mailing lists, an\
+d will normally be the name of an appro-)189 693 R .754
+(priate -request address.)189 705 R .754(It is v)5.754 F .755
+(ery similar to the o)-.15 F(wner)-.25 E(-)-.2 E F1(list)A F2 .755
+(syntax in the alias)3.255 F(\214le.)189 717 Q 0 Cg EP
+%%Page: 89 85
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-89)195.86 E/F1 10/Times-Roman@0 SF 33.95(fullname The)117 96 R
+(full name of the user)2.5 E(.)-.55 E(of)117 112.2 Q 13.66
+(\214ce-address The)-.25 F(of)2.5 E(\214ce address for this user)-.25 E
+(.)-.55 E(of)117 128.4 Q 19.21(\214ce-phone The)-.25 F(of)2.5 E
+(\214ce phone number for this user)-.25 E(.)-.55 E(of)117 144.6 Q
+(\214ce-f)-.25 E 30.98(ax The)-.1 F(of)2.5 E(\214ce F)-.25 E
+(AX number for this user)-.74 E(.)-.55 E 13.96(home-address The)117
+160.8 R(home address for this user)2.5 E(.)-.55 E 19.51(home-phone The)
+117 177 R(home phone number for this user)2.5 E(.)-.55 E(home-f)117
+193.2 Q 31.28(ax The)-.1 F(home F)2.5 E(AX number for this user)-.74 E
+(.)-.55 E 41.73(project A)117 209.4 R .856
+(\(short\) description of the project this person is af)3.356 F .855
+(\214liated with.)-.25 F .855(In the Uni-)5.855 F -.15(ve)189 221.4 S
+(rsity this is often just the name of their graduate advisor).15 E(.)
+-.55 E 52.28(plan A)117 237.6 R
+(pointer to a \214le from which plan information can be g)2.5 E
+(athered.)-.05 E .924(As of this writing, only a fe)142 253.8 R 3.424
+(wo)-.25 G 3.424(ft)-3.424 G .925
+(hese \214elds are actually being used by)-3.424 F/F2 10/Times-Italic@0
+SF(sendmail)3.425 E F1(:)A F2(mail-)3.425 E(dr)117 265.8 Q(op)-.45 E F1
+(and)2.5 E F2(mailname)2.5 E F1 5(.A)C F2(\214ng)-2.5 E(er)-.1 E F1
+(program that uses the other \214elds is planned.)2.5 E F0 2.5
+(5.12.2. User)102 289.8 R(database semantics)2.5 E F1 .996(When the re)
+142 306 R .995(writing rules submit an address to the local mailer)-.25
+F 3.495(,t)-.4 G .995(he user name is passed)-3.495 F .78
+(through the alias \214le.)117 318 R .781(If no alias is found \(or if \
+the alias points back to the same address\), the)5.78 F 1.778
+(name \(with \231:maildrop\232 appended\) is then used as a k)117 330 R
+2.077 -.15(ey i)-.1 H 4.277(nt).15 G 1.777(he user database.)-4.277 F
+1.777(If no match)6.777 F
+(occurs \(or if the maildrop points at the same address\), forw)117 342
+Q(arding is tried.)-.1 E .55(If the \214rst tok)142 358.2 R .551(en of \
+the user name returned by ruleset 0 is an \231@\232 sign, the user data\
+base)-.1 F .626(lookup is skipped.)117 370.2 R .625
+(The intent is that the user database will act as a set of def)5.626 F
+.625(aults for a cluster)-.1 F 1.533
+(\(in our case, the Computer Science Di)117 382.2 R 1.533
+(vision\); mail sent to a speci\214c machine should ignore)-.25 F
+(these def)117 394.2 Q(aults.)-.1 E .351
+(When mail is sent, the name of the sending user is look)142 410.4 R
+.351(ed up in the database.)-.1 F .351(If that user)5.351 F .04
+(has a \231mailname\232 record, the v)117 422.4 R .041
+(alue of that record is used as their outgoing name.)-.25 F -.15(Fo)
+5.041 G 2.541(re).15 G .041(xample, I)-2.691 F(might ha)117 434.4 Q .3
+-.15(ve a r)-.2 H(ecord:).15 E 12.29(eric:mailname Eric.Allman@CS.Berk)
+157 450.6 R(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(This w)117 466.8 Q
+(ould cause my outgoing mail to be sent as Eric.Allman.)-.1 E .52
+(If a \231maildrop\232 is found for the user)142 483 R 3.019(,b)-.4 G
+.519(ut no corresponding \231mailname\232 record e)-3.219 F .519
+(xists, the)-.15 F 1.127(record \231:def)117 495 R 1.127
+(ault:mailname\232 is consulted.)-.1 F 1.127
+(If present, this is the name of a host to o)6.127 F -.15(ve)-.15 G
+1.128(rride the).15 F .625(local host.)117 507 R -.15(Fo)5.625 G 3.125
+(re).15 G .625(xample, in our case we w)-3.275 F .625
+(ould set it to \231CS.Berk)-.1 F(ele)-.1 E -.65(y.)-.15 G 3.125
+(EDU\232. The).65 F(ef)3.125 E .625(fect is that)-.25 F(an)117 519 Q
+.881(yone kno)-.15 F .882(wn in the database gets their outgoing mail s\
+tamped as \231user@CS.Berk)-.25 F(ele)-.1 E -.65(y.)-.15 G(EDU\232,).65
+E -.2(bu)117 531 S 2.5(tp).2 G
+(eople not listed in the database use the local hostname.)-2.5 E F0 2.5
+(5.12.3. Cr)102 557 R(eating the database)-.18 E/F3 7/Times-Bold@0 SF
+(23)-4 I F1 .375(The user database is b)142 573.2 R .375(uilt from a te)
+-.2 F .375(xt \214le using the)-.15 F F2(mak)2.875 E(emap)-.1 E F1 .375
+(utility \(in the distrib)2.875 F .375(ution in)-.2 F 1.039(the mak)117
+585.2 R 1.039(emap subdirectory\).)-.1 F 1.039(The te)6.039 F 1.038
+(xt \214le is a series of lines corresponding to userdb records;)-.15 F
+1.588(each line has a k)117 597.2 R 1.889 -.15(ey a)-.1 H 1.589(nd a v)
+.15 F 1.589(alue separated by white space.)-.25 F 1.589(The k)6.589 F
+1.889 -.15(ey i)-.1 H 4.089(sa).15 G -.1(lwa)-4.089 G 1.589
+(ys in the format).1 F(described abo)117 609.2 Q .3 -.15(ve \212 f)-.15
+H(or e).15 E(xample:)-.15 E(eric:maildrop)157 625.4 Q 3.984
+(This \214le is normally installed in a system directory; for e)117
+641.6 R 3.984(xample, it might be called)-.15 F F2(/etc/mail/user)117
+653.6 Q(db)-.37 E F1 5(.T)C 2.5(om)-5.8 G(ak)-2.5 E 2.5(et)-.1 G
+(he database v)-2.5 E(ersion of the map, run the program:)-.15 E .32 LW
+76 669.2 72 669.2 DL 80 669.2 76 669.2 DL 84 669.2 80 669.2 DL 88 669.2
+84 669.2 DL 92 669.2 88 669.2 DL 96 669.2 92 669.2 DL 100 669.2 96 669.2
+DL 104 669.2 100 669.2 DL 108 669.2 104 669.2 DL 112 669.2 108 669.2 DL
+116 669.2 112 669.2 DL 120 669.2 116 669.2 DL 124 669.2 120 669.2 DL 128
+669.2 124 669.2 DL 132 669.2 128 669.2 DL 136 669.2 132 669.2 DL 140
+669.2 136 669.2 DL 144 669.2 140 669.2 DL 148 669.2 144 669.2 DL 152
+669.2 148 669.2 DL 156 669.2 152 669.2 DL 160 669.2 156 669.2 DL 164
+669.2 160 669.2 DL 168 669.2 164 669.2 DL 172 669.2 168 669.2 DL 176
+669.2 172 669.2 DL 180 669.2 176 669.2 DL 184 669.2 180 669.2 DL 188
+669.2 184 669.2 DL 192 669.2 188 669.2 DL 196 669.2 192 669.2 DL 200
+669.2 196 669.2 DL 204 669.2 200 669.2 DL 208 669.2 204 669.2 DL 212
+669.2 208 669.2 DL 216 669.2 212 669.2 DL/F4 5/Times-Roman@0 SF(23)93.6
+679.6 Q/F5 8/Times-Roman@0 SF .473(These instructions are kno)3.2 J .473
+(wn to be incomplete.)-.2 F .472(Other features are a)4.473 F -.2(va)
+-.16 G .472(ilable which pro).2 F .472(vide similar functionality)-.12 F
+2.472(,e)-.52 G .472(.g., virtual)-2.472 F
+(hosting and mapping local addresses into a generic form as e)72 692.4 Q
+(xplained in cf/README.)-.12 E 0 Cg EP
+%%Page: 90 86
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-90 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(mak)157
+96 Q(emap btree /etc/mail/userdb < /etc/mail/userdb)-.1 E .077
+(Then create a con\214g \214le that uses this.)117 112.2 R -.15(Fo)5.077
+G 2.577(re).15 G .077
+(xample, using the V8 M4 con\214guration, include the)-2.727 F(follo)117
+124.2 Q(wing line in your .mc \214le:)-.25 E
+(de\214ne\(\222confUSERDB_SPEC\264, /etc/mail/userdb\))157 140.4 Q F0
+2.5(6. O)72 168.6 R(THER CONFIGURA)-.4 E(TION)-.95 E F1 .907
+(There are some con\214guration changes that can be made by recompiling)
+112 184.8 R/F2 10/Times-Italic@0 SF(sendmail)3.407 E F1 5.907(.T)C .906
+(his section)-5.907 F 1.139(describes what changes can be made and what\
+ has to be modi\214ed to mak)87 196.8 R 3.639(et)-.1 G 3.639(hem. In)
+-3.639 F 1.139(most cases this)3.639 F
+(should be unnecessary unless you are porting)87 208.8 Q F2(sendmail)2.5
+E F1(to a ne)2.5 E 2.5(we)-.25 G -.4(nv)-2.5 G(ironment.).4 E F0 2.5
+(6.1. P)87 232.8 R(arameters in de)-.1 E(vtools/OS/$oscf)-.15 E F1 .92
+(These parameters are intended to describe the compilation en)127 249 R
+.92(vironment, not site polic)-.4 F 2.22 -.65(y, a)-.15 H(nd).65 E .739
+(should normally be de\214ned in the operating system con\214guration \
+\214le.)102 261 R F0 .74(This section needs a com-)5.739 F(plete r)102
+273 Q(ewrite.)-.18 E F1 39.5(NDBM If)102 289.2 R .665(set, the ne)3.165
+F 3.165(wv)-.25 G .664(ersion of the DBM library that allo)-3.315 F .664
+(ws multiple databases will be)-.25 F 2.542(used. If)174 301.2 R .042
+(neither NDBM nor NEWDB are set, a much less ef)2.542 F .043
+(\214cient method of alias)-.25 F(lookup is used.)174 313.2 Q 32.84
+(NEWDB If)102 329.4 R .142(set, use the ne)2.642 F 2.642(wd)-.25 G .142
+(atabase package from Berk)-2.642 F(ele)-.1 E 2.641(y\()-.15 G .141
+(from 4.4BSD\).)-2.641 F .141(This package)5.141 F .266
+(is substantially f)174 341.4 R .267(aster than DBM or NDBM.)-.1 F .267
+(If NEWDB and NDBM are both set,)5.267 F F2(sendmail)174 353.4 Q F1
+(will read DBM \214les, b)2.5 E(ut will create and use NEWDB \214les.)
+-.2 E 53.39(NIS Include)102 369.6 R .12(support for NIS.)2.62 F .119
+(If set together with)5.119 F F2(both)2.619 E F1 .119(NEWDB and NDBM,)
+2.619 F F2(sendmail)2.619 E F1 .947(will create both DBM and NEWDB \214\
+les if and only if an alias \214le includes the)174 381.6 R 3.409
+(substring \231/yp/\232 in the name.)174 393.6 R 3.409
+(This is intended for compatibility with Sun)8.409 F(Microsystems')174
+405.6 Q F2(mkalias)2.5 E F1(program used on YP masters.)2.5 E 28.94
+(NISPLUS Compile)102 421.8 R(in support for NIS+.)2.5 E 26.73
+(NETINFO Compile)102 438 R(in support for NetInfo \(NeXT stations\).)2.5
+E(LD)102 454.2 Q 22.12(APMAP Compile)-.4 F 1.225(in support for LD)3.725
+F 1.225(AP X500 queries.)-.4 F 1.226(Requires libldap and liblber from)
+6.226 F 2.799(the Umich LD)174 466.2 R 2.798
+(AP 3.2 or 3.3 release or equi)-.4 F -.25(va)-.25 G 2.798
+(lent libraries for other LD).25 F(AP)-.4 E(libraries such as OpenLD)174
+478.2 Q(AP)-.4 E(.)-1.11 E 32.84(HESIOD Compile)102 494.4 R
+(in support for Hesiod.)2.5 E 22.83(MAP_NSD Compile)102 510.6 R
+(in support for IRIX NSD lookups.)2.5 E 9.5(MAP_REGEX Compile)102 526.8
+R(in support for re)2.5 E(gular e)-.15 E(xpression matching.)-.15 E
+27.83(DNSMAP Compile)102 543 R(in support for DNS map lookups in the)2.5
+E F2(sendmail.cf)2.5 E F1(\214le.)2.5 E 30.05(PH_MAP Compile)102 559.2 R
+(in support for ph lookups.)2.5 E 45.05(SASL Compile)102 575.4 R 1.474
+(in support for SASL, a required component for SMTP Authentication)3.974
+F(support.)174 587.4 Q(ST)102 603.6 Q(AR)-.93 E 21.58(TTLS Compile)-.6 F
+(in support for ST)2.5 E(AR)-.93 E(TTLS.)-.6 E 48.95(EGD Compile)102
+619.8 R .068(in support for the "Entrop)2.568 F 2.567(yG)-.1 G .067
+(athering Daemon" to pro)-2.567 F .067(vide better random)-.15 F
+(data for TLS.)174 631.8 Q -1.63(TCPWRAPPERS Compile)102 648 R
+(in support for TCP Wrappers.)2.5 E(_P)102 664.2 Q -1.11(AT)-.92 G
+(H_SENDMAILCF)1.11 E(The pathname of the sendmail.cf \214le.)174 676.2 Q
+(_P)102 692.4 Q -1.11(AT)-.92 G(H_SENDMAILPID)1.11 E
+(The pathname of the sendmail.pid \214le.)174 704.4 Q 0 Cg EP
+%%Page: 91 87
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-91)195.86 E/F1 10/Times-Roman@0 SF(SM_CONF_SHM)102 96 Q
+(Compile in support for shared memory)174 108 Q 2.5(,s)-.65 G
+(ee section about "/v)-2.5 E(ar/spool/mqueue".)-.25 E(MIL)102 124.2 Q
+33.2(TER Compile)-.92 F(in support for contacting e)2.5 E
+(xternal mail \214lters b)-.15 E(uilt with the Milter API.)-.2 E 1.439
+(There are also se)127 140.4 R -.15(ve)-.25 G 1.439
+(ral compilation \215ags to indicate the en).15 F 1.44
+(vironment such as \231_AIX3\232 and)-.4 F 2.5(\231_SCO_unix_\232. See)
+102 152.4 R
+(the sendmail/README \214le for the latest scoop on these \215ags.)2.5 E
+F0 2.5(6.2. P)87 176.4 R(arameters in sendmail/conf)-.1 E(.h)-.15 E F1
+-.15(Pa)127 192.6 S .896
+(rameters and compilation options are de\214ned in conf.h.).15 F .895
+(Most of these need not normally)5.895 F .192(be tweak)102 204.6 R .192
+(ed; common parameters are all in sendmail.cf.)-.1 F(Ho)5.192 E(we)-.25
+E -.15(ve)-.25 G .992 -.4(r, t).15 H .192(he sizes of certain primiti).4
+F .493 -.15(ve ve)-.25 H(c-).15 E
+(tors, etc., are included in this \214le.)102 216.6 Q(The numbers follo)
+5 E(wing the parameters are their def)-.25 E(ault v)-.1 E(alue.)-.25 E
+1.247(This document is not the best source of information for compilati\
+on \215ags in conf.h \212 see)127 232.8 R
+(sendmail/README or sendmail/conf.h itself.)102 244.8 Q(MAXLINE [2048])
+102 261 Q 2.068(The maximum line length of an)11.14 F 4.568(yi)-.15 G
+2.068(nput line.)-4.568 F 2.069(If message lines e)7.068 F 2.069
+(xceed this)-.15 F .575(length the)188.4 273 R 3.075(yw)-.15 G .575
+(ill still be processed correctly; ho)-3.075 F(we)-.25 E -.15(ve)-.25 G
+1.375 -.4(r, h).15 H .575(eader lines, con\214gura-).4 F
+(tion \214le lines, alias lines, etc., must \214t within this limit.)
+188.4 285 Q(MAXN)102 301.2 Q(AME [256])-.35 E(The maximum length of an)
+9.82 E 2.5(yn)-.15 G(ame, such as a host or a user name.)-2.5 E
+(MAXPV [256])102 317.4 Q .25(The maximum number of parameters to an)
+26.13 F 2.75(ym)-.15 G(ailer)-2.75 E 5.25(.T)-.55 G .25
+(his limits the number of)-5.25 F .376
+(recipients that may be passed in one transaction.)188.4 329.4 R .375
+(It can be set to an)5.376 F 2.875(ya)-.15 G(rbitrary)-2.875 E .875
+(number abo)188.4 341.4 R 1.175 -.15(ve a)-.15 H .876(bout 10, since).15
+F/F2 10/Times-Italic@0 SF(sendmail)3.376 E F1 .876(will break up a deli)
+3.376 F -.15(ve)-.25 G .876(ry into smaller).15 F .887
+(batches as needed.)188.4 353.4 R 3.387(Ah)5.887 G .887
+(igher number may reduce load on your system, ho)-3.387 F(w-)-.25 E
+-2.15 -.25(ev e)188.4 365.4 T -.55(r.).25 G(MAXQ)102 381.6 Q(UEUEGR)-.1
+E(OUPS [50])-.4 E(The maximum number of queue groups.)188.4 393.6 Q
+(MAXA)102 409.8 Q -.18(TO)-1.11 G 2.5(M[).18 G 3.26(1000] The)-2.5 F
+.063(maximum number of atoms \(tok)2.563 F .063
+(ens\) in a single address.)-.1 F -.15(Fo)5.064 G 2.564(re).15 G .064
+(xample, the)-2.714 F(address \231eric@CS.Berk)188.4 421.8 Q(ele)-.1 E
+-.65(y.)-.15 G(EDU\232 is se).65 E -.15(ve)-.25 G 2.5(na).15 G(toms.)
+-2.5 E(MAXMAILERS [25])102 438 Q .122(The maximum number of mailers tha\
+t may be de\214ned in the con\214guration \214le.).02 F(This v)188.4 450
+Q(alue is de\214ned in include/sendmail/sendmail.h.)-.25 E(MAXR)102
+466.2 Q(WSETS [200])-.55 E .431(The maximum number of re).01 F .432
+(writing sets that may be de\214ned.)-.25 F .432(The \214rst half of)
+5.432 F .035(these are reserv)188.4 478.2 R .035
+(ed for numeric speci\214cation \(e.g., `)-.15 F(`S92')-.74 E .034
+('\), while the upper half)-.74 F .491(are reserv)188.4 490.2 R .491
+(ed for auto-numbering \(e.g., `)-.15 F(`Sfoo')-.74 E 2.992('\). Thus,)
+-.74 F .492(with a v)2.992 F .492(alue of 200 an)-.25 F
+(attempt to use `)188.4 502.2 Q(`S99')-.74 E 2.5('w)-.74 G
+(ill succeed, b)-2.5 E(ut `)-.2 E(`S100')-.74 E 2.5('w)-.74 G(ill f)-2.5
+E(ail.)-.1 E(MAXPRIORITIES [25])102 518.4 Q 2.482
+(The maximum number of v)188.4 530.4 R 2.482
+(alues for the \231Precedence:\232 \214eld that may be)-.25 F
+(de\214ned \(using the)188.4 542.4 Q F0(P)2.5 E F1
+(line in sendmail.cf\).)2.5 E(MAXUSERENVIR)102 558.6 Q(ON [100])-.4 E
+.399(The maximum number of items in the user en)188.4 570.6 R .4
+(vironment that will be passed to)-.4 F(subordinate mailers.)188.4 582.6
+Q(MAXMXHOSTS [100])102 598.8 Q
+(The maximum number of MX records we will accept for an)188.4 610.8 Q
+2.5(ys)-.15 G(ingle host.)-2.5 E(MAXMAPST)102 627 Q -.4(AC)-.93 G 2.5
+(K[).4 G(12])-2.5 E 1.65(The maximum number of maps that may be "stack)
+188.4 639 R 1.65(ed" in a)-.1 F F0(sequence)4.15 E F1(class)4.15 E(map.)
+188.4 651 Q(MAXMIMEARGS [20])102 667.2 Q .718(The maximum number of ar)
+188.4 679.2 R .718(guments in a MIME Content-T)-.18 F .718
+(ype: header; addi-)-.8 F(tional ar)188.4 691.2 Q
+(guments will be ignored.)-.18 E(MAXMIMENESTING [20])102 707.4 Q .4(The\
+ maximum depth to which MIME messages may be nested \(that is, nested)
+188.4 719.4 R 0 Cg EP
+%%Page: 92 88
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-92 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 1.344(Me\
+ssage or Multipart documents; this does not limit the number of compo-)
+188.4 96 R(nents in a single Multipart document\).)188.4 108 Q(MAXD)102
+124.2 Q(AEMONS [10])-.4 E 1.353(The maximum number of sock)188.4 136.2 R
+1.353(ets sendmail will open for accepting connec-)-.1 F(tions on dif)
+188.4 148.2 Q(ferent ports.)-.25 E(MAXMA)102 164.4 Q(CN)-.4 E
+(AMELEN [25])-.35 E(The maximum length of a macro name.)188.4 176.4 Q
+2.85(An)102 192.6 S .35(umber of other compilation options e)-2.85 F
+2.851(xist. These)-.15 F .351
+(specify whether or not speci\214c code should be)2.851 F(compiled in.)
+102 204.6 Q(Ones mark)5 E(ed with \207 are 0/1 v)-.1 E(alued.)-.25 E
+36.69(NETINET\207 If)102 220.8 R .829
+(set, support for Internet protocol netw)3.33 F .829
+(orking is compiled in.)-.1 F(Pre)5.829 E .829(vious v)-.25 F(er)-.15 E
+(-)-.2 E .177(sions of)188.4 232.8 R/F2 10/Times-Italic@0 SF(sendmail)
+2.677 E F1 .177(referred to this as)2.677 F/F3 9/Times-Roman@0 SF -.36
+(DA)2.678 G(EMON).36 E F1 2.678(;t)C .178(his old usage is no)-2.678 F
+2.678(wi)-.25 G(ncorrect.)-2.678 E(Def)188.4 244.8 Q 1.87
+(aults on; turn it of)-.1 F 4.37(fi)-.25 G 4.37(nt)-4.37 G 1.87(he Mak)
+-4.37 F 1.87(e\214le if your system doesn')-.1 F 4.37(ts)-.18 G 1.87
+(upport the)-4.37 F(Internet protocols.)188.4 256.8 Q 31.69
+(NETINET6\207 If)102 273 R 2.26(set, support for IPv6 netw)4.76 F 2.26
+(orking is compiled in.)-.1 F 2.26(It must be separately)7.26 F
+(enabled by adding)188.4 285 Q F0(DaemonP)2.5 E(ortOptions)-.2 E F1
+(settings.)2.5 E 43.35(NETISO\207 If)102 301.2 R .143
+(set, support for ISO protocol netw)2.643 F .142
+(orking is compiled in \(it may be appropri-)-.1 F
+(ate to #de\214ne this in the Mak)188.4 313.2 Q
+(e\214le instead of conf.h\).)-.1 E 34.47(NETUNIX\207 If)102 329.4 R .39
+(set, support for UNIX domain sock)2.89 F .39(ets is compiled in.)-.1 F
+.39(This is used for con-)5.39 F(trol sock)188.4 341.4 Q(et support.)-.1
+E 63.35(LOG If)102 357.6 R .5(set, the)3 F F2(syslo)3 E(g)-.1 E F1 .5
+(routine in use at some sites is used.)3 F .5(This mak)5.5 F .5
+(es an informa-)-.1 F .504
+(tional log record for each message processed, and mak)188.4 369.6 R
+.504(es a higher priority log)-.1 F .053
+(record for internal system errors.)188.4 381.6 R F0(STR)5.052 E(ONGL)
+-.3 E 2.552(YR)-.92 G(ECOMMENDED)-2.552 E F1 2.552<8a69>2.552 G 2.552
+(fy)-2.552 G(ou)-2.552 E -.1(wa)188.4 393.6 S(nt no logging, turn it of)
+.1 E 2.5(fi)-.25 G 2.5(nt)-2.5 G(he con\214guration \214le.)-2.5 E(MA)
+102 409.8 Q 11.12(TCHGECOS\207 Compile)-1.11 F 3.555
+(in the code to do `)6.055 F 3.555(`fuzzy matching')-.74 F 6.055('o)-.74
+G 6.055(nt)-6.055 G 3.555(he GECOS \214eld in)-6.055 F 2.5
+(/etc/passwd. This)188.4 421.8 R(also requires that the)2.5 E F0
+(MatchGECOS)2.5 E F1(option be turned on.)2.5 E -.35(NA)102 438 S 13.15
+(MED_BIND\207 Compile).35 F .413(in code to use the Berk)2.913 F(ele)-.1
+E 2.912(yI)-.15 G .412(nternet Name Domain \(BIND\) serv)-2.912 F .412
+(er to)-.15 F(resolv)188.4 450 Q 2.5(eT)-.15 G(CP/IP host names.)-2.5 E
+(NO)102 466.2 Q 38.76(TUNIX If)-.4 F .247(you are using a non-UNIX mail\
+ format, you can set this \215ag to turn of)2.747 F 2.748(fs)-.25 G(pe-)
+-2.748 E(cial processing of UNIX-style \231From \232 lines.)188.4 478.2
+Q 39.45(USERDB\207 Include)102 494.4 R(the)3.449 E F0(experimental)3.449
+E F1(Berk)3.449 E(ele)-.1 E 3.449(yu)-.15 G .949
+(ser information database package.)-3.449 F(This)5.948 E .27(adds a ne)
+188.4 506.4 R 2.77(wl)-.25 G -2.15 -.25(ev e)-2.77 H 2.77(lo).25 G 2.77
+(fl)-2.77 G .27(ocal name e)-2.77 F .27
+(xpansion between aliasing and forw)-.15 F 2.77(arding. It)-.1 F
+(also uses the NEWDB package.)188.4 518.4 Q
+(This may change in future releases.)5 E(The follo)102 534.6 Q
+(wing options are normally turned on in per)-.25 E
+(-operating-system clauses in conf.h.)-.2 E(IDENTPR)102 550.8 Q -1.88
+-.4(OT O)-.4 H 19.61<8743>.4 G .376
+(ompile in the IDENT protocol as de\214ned in RFC 1413.)-19.61 F .375
+(This def)5.375 F .375(aults on for)-.1 F 1.053(all systems e)188.4
+562.8 R 1.053(xcept Ultrix, which apparently has the interesting \231fe\
+ature\232 that)-.15 F .83(when it recei)188.4 574.8 R -.15(ve)-.25 G
+3.33(sa\231).15 G .83
+(host unreachable\232 message it closes all open connections)-3.33 F
+1.921(to that host.)188.4 586.8 R 1.921(Since some \214re)6.921 F -.1
+(wa)-.25 G 1.922(ll g).1 F(ate)-.05 E -.1(wa)-.25 G 1.922
+(ys send this error code when you).1 F 2.055(access an unauthorized por\
+t \(such as 113, used by IDENT\), Ultrix cannot)188.4 598.8 R(recei)
+188.4 610.8 Q .3 -.15(ve e)-.25 H(mail from such hosts.).15 E 39.45
+(SYSTEM5 Set)102 627 R
+(all of the compilation parameters appropriate for System V)2.5 E(.)
+-1.29 E 26.12(HASFLOCK\207 Use)102 643.2 R(Berk)2.844 E(ele)-.1 E
+(y-style)-.15 E F0(\215ock)2.844 E F1 .344(instead of System V)2.844 F
+F0(lockf)2.845 E F1 .345(to do \214le locking.)2.845 F .345(Due to)5.345
+F .184(the highly unusual semantics of locks across forks in)188.4 655.2
+R F0(lockf)2.684 E F1 2.684(,t)C .184(his should al)-2.684 F -.1(wa)-.1
+G(ys).1 E(be used if at all possible.)188.4 667.2 Q(HASINITGR)102 683.4
+Q 4.86(OUPS Set)-.4 F 1.284(this if your system has the)3.783 F F2
+(initgr)3.784 E(oups\(\))-.45 E F1 1.284(call \(if you ha)3.784 F 1.584
+-.15(ve m)-.2 H 1.284(ultiple group).15 F 4.417(support\). This)188.4
+695.4 R 1.917(is the def)4.417 F 1.917(ault if SYSTEM5 is)-.1 F F2(not)
+4.416 E F1 1.916(de\214ned or if you are on)4.416 F(HPUX.)188.4 707.4 Q
+0 Cg EP
+%%Page: 93 89
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-93)195.86 E/F1 10/Times-Roman@0 SF(HASUN)102 96 Q 27.59(AME Set)
+-.35 F 1.148(this if you ha)3.648 F 1.448 -.15(ve t)-.2 H(he).15 E/F2 10
+/Times-Italic@0 SF(uname)3.648 E F1 1.149
+(\(2\) system call \(or corresponding library rou-)B 2.5(tine\). Set)
+188.4 108 R(by def)2.5 E(ault if SYSTEM5 is set.)-.1 E(HASGETDT)102
+124.2 Q(ABLESIZE)-.93 E(Set this if you ha)188.4 136.2 Q .3 -.15(ve t)
+-.2 H(he).15 E F2 -.1(ge)2.5 G(tdtablesize).1 E F1(\(2\) system call.)A
+(HASW)102 152.4 Q 22.89(AITPID Set)-1.2 F(this if you ha)2.5 E .3 -.15
+(ve t)-.2 H(he).15 E F2(haswaitpid)2.5 E F1(\(2\) system call.)A -.74
+(FA)102 168.6 S(ST_PID_RECYCLE).74 E .542(Set this if your system can p\
+ossibly reuse the same pid in the same second of)188.4 180.6 R(time.)
+188.4 192.6 Q 37.22(SFS_TYPE The)102 208.8 R .517
+(mechanism that can be used to get \214le system capacity information.)
+3.016 F(The)5.517 E -.25(va)188.4 220.8 S .215
+(lues can be one of SFS_UST).25 F 2.435 -1.11(AT \()-.93 H .214
+(use the ustat\(2\) syscall\), SFS_4ARGS \(use)1.11 F .415(the four ar)
+188.4 232.8 R .415(gument statfs\(2\) syscall\), SFS_VFS \(use the tw)
+-.18 F 2.915(oa)-.1 G -.18(rg)-2.915 G .415(ument statfs\(2\)).18 F .716
+(syscall including <sys/vfs.h>\), SFS_MOUNT \(use the tw)188.4 244.8 R
+3.216(oa)-.1 G -.18(rg)-3.216 G .716(ument statfs\(2\)).18 F 4.32
+(syscall including <sys/mount.h>\), SFS_ST)188.4 256.8 R -1.11(AT)-.93 G
+4.32(FS \(use the tw)1.11 F 6.82(oa)-.1 G -.18(rg)-6.82 G(ument).18 E
+1.109(statfs\(2\) syscall including <sys/statfs.h>\), SFS_ST)188.4 268.8
+R -1.11(AT)-.93 G 1.109(VFS \(use the tw)1.11 F 3.608(oa)-.1 G -.18(rg)
+-3.608 G(u-).18 E 1.511(ment statfs\(2\) syscall including <sys/statvfs\
+.h>\), or SFS_NONE \(no w)188.4 280.8 R 1.512(ay to)-.1 F
+(get this information\).)188.4 292.8 Q 40.57(LA_TYPE The)102 309 R
+(load a)2.5 E -.15(ve)-.2 G(rage type.).15 E(Details are described belo)
+5 E -.65(w.)-.25 G .343(The are se)102 325.2 R -.15(ve)-.25 G .342
+(ral b).15 F .342(uilt-in w)-.2 F .342(ays of computing the load a)-.1 F
+-.15(ve)-.2 G(rage.).15 E F2(Sendmail)5.342 E F1 .342
+(tries to auto-con\214gure them)2.842 F .266
+(based on imperfect guesses; you can select one using the)102 337.2 R F2
+(cc)2.767 E F1(option)2.767 E F0(\255DLA_TYPE=)2.767 E F2(type)A F1
+2.767(,w)C(here)-2.767 E F2(type)2.767 E F1(is:)102 349.2 Q 48.91
+(LA_INT The)102 365.4 R -.1(ke)3.453 G .952(rnel stores the load a).1 F
+-.15(ve)-.2 G .952(rage in the k).15 F .952
+(ernel as an array of long inte)-.1 F(gers.)-.15 E(The actual v)188.4
+377.4 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E
+(ault 256\).)-.1 E(LA_SHOR)102 393.6 Q 35.89(TT)-.6 G .793(he k)-35.89 F
+.793(ernel stores the load a)-.1 F -.15(ve)-.2 G .794(rage in the k).15
+F .794(ernel as an array of short inte)-.1 F(gers.)-.15 E(The actual v)
+188.4 405.6 Q(alues are scaled by a f)-.25 E(actor FSCALE \(def)-.1 E
+(ault 256\).)-.1 E(LA_FLO)102 421.8 Q 37.03 -1.11(AT T)-.35 H .089(he k)
+1.11 F .089(ernel stores the load a)-.1 F -.15(ve)-.2 G .089
+(rage in the k).15 F .088(ernel as an array of double precision)-.1 F
+(\215oats.)188.4 433.8 Q(LA_MA)102 450 Q 35.97(CH Use)-.4 F(MA)2.5 E
+(CH-style load a)-.4 E -.15(ve)-.2 G(rages.).15 E 39.45(LA_SUBR Call)102
+466.2 R(the)2.5 E F2 -.1(ge)2.5 G(tloadavg).1 E F1
+(routine to get the load a)2.5 E -.15(ve)-.2 G
+(rage as an array of doubles.).15 E(LA_ZER)102 482.4 Q 42.36(OA)-.4 G
+-.1(lwa)-42.36 G(ys return zero as the load a).1 E -.15(ve)-.2 G 2.5
+(rage. This).15 F(is the f)2.5 E(allback case.)-.1 E .493(If type)102
+498.6 R/F3 9/Times-Roman@0 SF(LA_INT)2.993 E F1(,)A F3(LA_SHOR)2.993 E
+(T)-.54 E F1 2.993(,o)C(r)-2.993 E F3(LA_FLO)2.993 E -.999(AT)-.315 G F1
+.493(is speci\214ed, you may also need to specify)3.992 F F3(_P)2.994 E
+-.999(AT)-.828 G(H_UNIX).999 E F1 .949
+(\(the path to your system binary\) and)102 510.6 R F3(LA_A)3.448 E
+(VENR)-1.215 E(UN)-.36 E F1 .948(\(the name of the v)3.448 F .948
+(ariable containing the load)-.25 F -2.25 -.2(av e)102 522.6 T
+(rage in the k).2 E(ernel; usually \231_a)-.1 E -.15(ve)-.2 G
+(nrun\232 or \231a).15 E -.15(ve)-.2 G(nrun\232\).).15 E F0 2.5
+(6.3. Con\214guration)87 546.6 R(in sendmail/conf)2.5 E(.c)-.15 E F1
+(The follo)127 562.8 Q(wing changes can be made in conf.c.)-.25 E F0 2.5
+(6.3.1. Built-in)102 586.8 R(Header Semantics)2.5 E F1 1.248
+(Not all header semantics are de\214ned in the con\214guration \214le.)
+142 603 R 1.248(Header lines that should)6.248 F .305(only be included \
+by certain mailers \(as well as other more obscure semantics\) must be \
+speci\214ed)117 615 R .046(in the)117 627 R F2(HdrInfo)2.546 E F1 .046
+(table in)2.546 F F2(conf)2.546 E(.c)-.15 E F1 5.046(.T)C .047
+(his table contains the header name \(which should be in all lo)-5.046 F
+(wer)-.25 E(case\) and a set of header control \215ags \(described belo)
+117 639 Q(w\), The \215ags are:)-.25 E(H_A)117 655.2 Q 30.97
+(CHECK Normally)-.4 F .007
+(when the check is made to see if a header line is compatible with)2.508
+F 2.94(am)203.4 667.2 S(ailer)-2.94 E(,)-.4 E F2(sendmail)2.94 E F1 .441
+(will not delete an e)2.94 F .441(xisting line.)-.15 F .441
+(If this \215ag is set,)5.441 F F2(send-)2.941 E(mail)203.4 679.2 Q F1
+.152(will delete e)2.652 F -.15(ve)-.25 G 2.652(ne).15 G .152
+(xisting header lines.)-2.802 F .152
+(That is, if this bit is set and the)5.152 F 1.425(mailer does not ha)
+203.4 691.2 R 1.725 -.15(ve \215)-.2 H 1.425
+(ag bits set that intersect with the required mailer).15 F 2.204
+(\215ags in the header de\214nition in sendmail.cf, the header line is)
+203.4 703.2 R F2(always)4.703 E F1(deleted.)203.4 715.2 Q 0 Cg EP
+%%Page: 94 90
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-94 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 51.13
+(H_EOH If)117 96 R .206(this header \214eld is set, treat it lik)2.705 F
+2.706(eab)-.1 G .206(lank line, i.e., it will signal the end)-2.706 F
+(of the header and the be)203.4 108 Q(ginning of the message te)-.15 E
+(xt.)-.15 E 39.45(H_FORCE Add)117 124.2 R 2.039(this header entry e)
+4.539 F -.15(ve)-.25 G 4.539(ni).15 G 4.539(fo)-4.539 G 2.038(ne e)
+-4.539 F 2.038(xisted in the message before.)-.15 F 2.038(If a)7.038 F
+2.188(header entry does not ha)203.4 136.2 R 2.488 -.15(ve t)-.2 H 2.188
+(his bit set,).15 F/F2 10/Times-Italic@0 SF(sendmail)4.688 E F1 2.189
+(will not add another)4.689 F .62
+(header line if a header line of this name already e)203.4 148.2 R 3.12
+(xisted. This)-.15 F -.1(wo)3.12 G .62(uld nor).1 F(-)-.2 E
+(mally be used to stamp the message by e)203.4 160.2 Q -.15(ve)-.25 G
+(ryone who handled it.).15 E(H_TRA)117 176.4 Q 39.3(CE If)-.4 F 1.043
+(set, this is a timestamp \(trace\) \214eld.)3.543 F 1.044
+(If the number of trace \214elds in a)6.043 F .706(message e)203.4 188.4
+R .705(xceeds a preset amount the message is returned on the assump-)
+-.15 F(tion that it has an aliasing loop.)203.4 200.4 Q 46.67(H_RCPT If)
+117 216.6 R .332(set, this \214eld contains recipient addresses.)2.832 F
+.332(This is used by the)5.332 F F0<ad74>2.832 E F1 .333(\215ag to)2.833
+F 1.349(determine who to send to when it is collecting recipients from \
+the mes-)203.4 228.6 R(sage.)203.4 240.6 Q(H_FR)117 256.8 Q 43.74
+(OM This)-.4 F 1.673
+(\215ag indicates that this \214eld speci\214es a sender)4.173 F 6.674
+(.T)-.55 G 1.674(he order of these)-6.674 F .898(\214elds in the)203.4
+268.8 R F2(HdrInfo)3.398 E F1 .898(table speci\214es)3.398 F F2
+(sendmail)3.398 E F1 1.998 -.55('s p)D .898(reference for which \214eld)
+.55 F(to return error messages to.)203.4 280.8 Q(H_ERR)117 297 Q(ORST)
+-.4 E 22.53(OA)-.18 G(ddresses in this header should recei)-22.53 E .3
+-.15(ve e)-.25 H(rror messages.).15 E 52.79(H_CTE This)117 313.2 R
+(header is a Content-T)2.5 E(ransfer)-.35 E(-Encoding header)-.2 E(.)
+-.55 E 40.01(H_CTYPE This)117 329.4 R(header is a Content-T)2.5 E
+(ype header)-.8 E(.)-.55 E(H_STRIPV)117 345.6 Q 25.25(AL Strip)-1.35 F
+(the v)2.5 E(alue from the header \(for Bcc:\).)-.25 E(Let')117 361.8 Q
+2.5(sl)-.55 G(ook at a sample)-2.5 E F2(HdrInfo)2.5 E F1
+(speci\214cation:)2.5 E(struct hdrinfo)157 378 Q(HdrInfo[] =)84.6 E({)
+157 390 Q(/* originator \214elds, most to least signi\214cant)189.5 402
+Q(*/)5 E 52.29("resent-sender", H_FR)177 414 R(OM,)-.4 E 58.95
+("resent-from", H_FR)177 426 R(OM,)-.4 E 79.5("sender", H_FR)177 438 R
+(OM,)-.4 E 86.16("from", H_FR)177 450 R(OM,)-.4 E 66.72
+("full-name", H_A)177 462 R(CHECK,)-.4 E 71.17("errors-to", H_FR)177 474
+R -1.667(OM | H_ERR)-.4 F(ORST)-.4 E(O,)-.18 E
+(/* destination \214elds */)189.5 486 Q 97.82("to", H_RCPT)177 498 R(,)
+-.74 E 70.61("resent-to", H_RCPT)177 510 R(,)-.74 E 96.72("cc", H_RCPT)
+177 522 R(,)-.74 E 91.72("bcc", H_RCPT)177 534 R .833(|H).833 G(_STRIPV)
+-.833 E(AL,)-1.35 E(/* message identi\214cation and control */)189.5 546
+Q 71.72("message", H_EOH,)177 558 R("te)177 570 Q 90.75(xt", H_EOH,)-.15
+F(/* trace \214elds */)189.5 582 Q("recei)177 594 Q -.15(ve)-.25 G 72.13
+(d", H_TRA).15 F -1.667(CE | H_FORCE,)-.4 F
+(/* miscellaneous \214elds */)189.5 606 Q("content-transfer)177 618 Q
+2.5(-encoding", H_CTE,)-.2 F 55.61("content-type", H_CTYPE,)177 630 R
+87.1(NULL, 0,)177 654 R(};)157 666 Q 2.435
+(This structure indicates that the \231T)117 682.2 R 2.435
+(o:\232, \231Resent-T)-.8 F 2.435
+(o:\232, and \231Cc:\232 \214elds all specify recipient)-.8 F 3.162
+(addresses. An)117 694.2 R 3.162<7999>-.15 G .661(Full-Name:\232 \214el\
+d will be deleted unless the required mailer \215ag \(indicated in)
+-3.162 F .245(the con\214guration \214le\) is speci\214ed.)117 706.2 R
+.245(The \231Message:\232 and \231T)5.245 F -.15(ex)-.7 G .246
+(t:\232 \214elds will terminate the header;).15 F 1.936
+(these are used by random dissenters around the netw)117 718.2 R 1.936
+(ork w)-.1 F 4.436(orld. The)-.1 F(\231Recei)4.436 E -.15(ve)-.25 G
+1.936(d:\232 \214eld will).15 F 0 Cg EP
+%%Page: 95 91
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-95)195.86 E/F1 10/Times-Roman@0 SF(al)117 96 Q -.1(wa)-.1 G
+(ys be added, and can be used to trace messages.).1 E .445
+(There are a number of important points here.)142 112.2 R .446
+(First, header \214elds are not added automati-)5.446 F .657
+(cally just because the)117 124.2 R 3.157(ya)-.15 G .657(re in the)
+-3.157 F/F2 10/Times-Italic@0 SF(HdrInfo)3.157 E F1 .657(structure; the)
+3.157 F 3.157(ym)-.15 G .656(ust be speci\214ed in the con\214guration)
+-3.157 F .727(\214le in order to be added to the message.)117 136.2 R
+(An)5.728 E 3.228(yh)-.15 G .728
+(eader \214elds mentioned in the con\214guration \214le)-3.228 F -.2(bu)
+117 148.2 S 3.24(tn).2 G .74(ot mentioned in the)-3.24 F F2(HdrInfo)3.24
+E F1 .74(structure ha)3.24 F 1.04 -.15(ve d)-.2 H(ef).15 E .74
+(ault processing performed; that is, the)-.1 F 3.24(ya)-.15 G(re)-3.24 E
+1.374(added unless the)117 160.2 R 3.874(yw)-.15 G 1.374
+(ere in the message already)-3.874 F 6.375(.S)-.65 G 1.375(econd, the)
+-6.375 F F2(HdrInfo)3.875 E F1 1.375(structure only speci\214es)3.875 F
+.324(cliched processing; certain headers are processed specially by ad \
+hoc code re)117 172.2 R -.05(ga)-.15 G .324(rdless of the sta-).05 F .48
+(tus speci\214ed in)117 184.2 R F2(HdrInfo)2.98 E F1 5.48(.F)C .481
+(or e)-5.63 F .481
+(xample, the \231Sender:\232 and \231From:\232 \214elds are al)-.15 F
+-.1(wa)-.1 G .481(ys scanned on).1 F(ARP)117 198.2 Q .75
+(ANET mail to determine the sender)-.92 F/F3 7/Times-Roman@0 SF(24)-4 I
+F1 3.251(;t)4 K .751
+(his is used to perform the \231return to sender\232 func-)-3.251 F
+2.977(tion. The)117 210.2 R .476(\231From:\232 and \231Full-Name:\232 \
+\214elds are used to determine the full name of the sender if)2.977 F
+(possible; this is stored in the macro)117 222.2 Q F0($x)2.5 E F1
+(and used in a number of w)2.5 E(ays.)-.1 E F0 2.5(6.3.2. Restricting)
+102 246.2 R(Use of Email)2.5 E F1 .149
+(If it is necessary to restrict mail through a relay)142 262.4 R 2.649
+(,t)-.65 G(he)-2.649 E F2 -.15(ch)2.65 G(ec).15 E(kcompat)-.2 E F1 .15
+(routine can be modi\214ed.)2.65 F .163(This routine is called for e)117
+274.4 R -.15(ve)-.25 G .163(ry recipient address.).15 F .163
+(It returns an e)5.163 F .163(xit status indicating the status of)-.15 F
+.895(the message.)117 286.4 R .895(The status)5.895 F/F4 9/Times-Roman@0
+SF(EX_OK)3.395 E F1 .895(accepts the address,)3.395 F F4(EX_TEMPF)3.395
+E(AIL)-.666 E F1 .895(queues the message for a)3.395 F .264(later try)
+117 298.4 R 2.764(,a)-.65 G .264(nd other v)-2.764 F .264
+(alues \(commonly)-.25 F F4(EX_UN)2.764 E -1.215(AVA)-.315 G(ILABLE)
+1.215 E F1 2.764(\)r)C .264(eject the message.)-2.764 F .263
+(It is up to)5.264 F F2 -.15(ch)2.763 G(ec).15 E(k-)-.2 E(compat)117
+310.4 Q F1 .429(to print an error message \(using)2.929 F F2(usr)2.929 E
+(err)-.37 E F1 2.929(\)i)C 2.929(ft)-2.929 G .43
+(he message is rejected.)-2.929 F -.15(Fo)5.43 G 2.93(re).15 G(xample,)
+-3.08 E F2 -.15(ch)2.93 G(ec).15 E(k-)-.2 E(compat)117 322.4 Q F1
+(could read:)2.5 E F4(int)157 337.4 Q(checkcompat\(to, e\))157 348.2 Q
+(re)175 359 Q(gister ADDRESS *to;)-.135 E(re)175 369.8 Q
+(gister ENVELOPE *e;)-.135 E({)157 380.6 Q(re)175 391.4 Q(gister ST)
+-.135 E(AB *s;)-.837 E 2.25(s=s)175 413 S(tab\("pri)-2.25 E -.225(va)
+-.225 G(te", ST_MAILER, ST_FIND\);).225 E
+(if \(s != NULL && e\255>e_from.q_mailer != LocalMailer &&)175 423.8 Q
+(to->q_mailer == s->s_mailer\))184 434.6 Q({)175 445.4 Q
+(usrerr\("No pri)193 456.2 Q -.225(va)-.225 G(te net mail allo).225 E
+(wed through this machine"\);)-.225 E(return \(EX_UN)193 467 Q -1.215
+(AVA)-.315 G(ILABLE\);)1.215 E(})175 477.8 Q
+(if \(MsgSize > 50000 && bitnset\(M_LOCALMAILER, to\255>q_mailer\)\))175
+488.6 Q({)175 499.4 Q(usrerr\("Message too lar)193 510.2 Q
+(ge for non-local deli)-.162 E -.135(ve)-.225 G(ry"\);).135 E
+(e\255>e_\215ags |= EF_NORETURN;)193 521 Q(return \(EX_UN)193 531.8 Q
+-1.215(AVA)-.315 G(ILABLE\);)1.215 E(})175 542.6 Q(return \(EX_OK\);)175
+553.4 Q(})157 564.2 Q F1 .97(This w)117 580.4 R .969
+(ould reject messages greater than 50000 bytes unless the)-.1 F 3.469
+(yw)-.15 G .969(ere local.)-3.469 F(The)5.969 E F2(EF_NORE-)3.469 E
+(TURN)117 592.4 Q F1 .651(\215ag can be set in)3.151 F F2(e)3.151 E/F5
+10/Symbol SF<ae>A F2(e_\215a)A(gs)-.1 E F1 .652
+(to suppress the return of the actual body of the message in)3.152 F
+.656(the error return.)117 604.4 R .655(The actual use of this routine \
+is highly dependent on the implementation, and)5.656 F
+(use should be limited.)117 616.4 Q F0 2.5(6.3.3. New)102 640.4 R
+(Database Map Classes)2.5 E F1(Ne)142 656.6 Q 2.875(wk)-.25 G .675 -.15
+(ey m)-2.975 H .375(aps can be added by creating a class initialization\
+ function and a lookup func-).15 F 2.5(tion. These)117 668.6 R
+(are then added to the routine)2.5 E F2(setupmaps.)2.5 E .32 LW 76 678.2
+72 678.2 DL 80 678.2 76 678.2 DL 84 678.2 80 678.2 DL 88 678.2 84 678.2
+DL 92 678.2 88 678.2 DL 96 678.2 92 678.2 DL 100 678.2 96 678.2 DL 104
+678.2 100 678.2 DL 108 678.2 104 678.2 DL 112 678.2 108 678.2 DL 116
+678.2 112 678.2 DL 120 678.2 116 678.2 DL 124 678.2 120 678.2 DL 128
+678.2 124 678.2 DL 132 678.2 128 678.2 DL 136 678.2 132 678.2 DL 140
+678.2 136 678.2 DL 144 678.2 140 678.2 DL 148 678.2 144 678.2 DL 152
+678.2 148 678.2 DL 156 678.2 152 678.2 DL 160 678.2 156 678.2 DL 164
+678.2 160 678.2 DL 168 678.2 164 678.2 DL 172 678.2 168 678.2 DL 176
+678.2 172 678.2 DL 180 678.2 176 678.2 DL 184 678.2 180 678.2 DL 188
+678.2 184 678.2 DL 192 678.2 188 678.2 DL 196 678.2 192 678.2 DL 200
+678.2 196 678.2 DL 204 678.2 200 678.2 DL 208 678.2 204 678.2 DL 212
+678.2 208 678.2 DL 216 678.2 212 678.2 DL/F6 5/Times-Roman@0 SF(24)93.6
+688.6 Q/F7 8/Times-Roman@0 SF(Actually)3.2 I 2.632(,t)-.52 G .632
+(his is no longer true in SMTP; this information is contained in the en)
+-2.632 F -.12(ve)-.32 G 2.631(lope. The).12 F .631(older ARP)2.631 F
+.631(ANET protocols did)-.736 F(not completely distinguish en)72 701.4 Q
+-.12(ve)-.32 G(lope from header).12 E(.)-.44 E 0 Cg EP
+%%Page: 96 92
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-96 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(The initialization function is called as)142 96 Q/F2 10/Times-Italic@0
+SF(xxx)157 112.2 Q F1(_map_init\(MAP *map, char *ar)A(gs\))-.18 E(The)
+117 128.4 Q F2(map)3.28 E F1 .78(is an internal data structure.)3.28 F
+(The)5.78 E F2(ar)3.279 E(gs)-.37 E F1 .779
+(is a pointer to the portion of the con\214guration)3.279 F .396
+(\214le line follo)117 140.4 R .396
+(wing the map class name; \215ags and \214lenames can be e)-.25 F .397
+(xtracted from this line.)-.15 F(The)5.397 E
+(initialization function must return)117 152.4 Q/F3 9/Times-Roman@0 SF
+(true)2.5 E F1(if it successfully opened the map,)2.5 E F3 -.09(fa)2.5 G
+(lse).09 E F1(otherwise.)2.5 E(The lookup function is called as)142
+168.6 Q F2(xxx)157 184.8 Q F1(_map_lookup\(MAP *map, char b)A
+(uf[], char **a)-.2 E 1.3 -.65(v, i)-.2 H(nt *statp\)).65 E(The)117 201
+Q F2(map)2.773 E F1 .273(de\214nes the map internally)2.773 F 5.273(.T)
+-.65 G(he)-5.273 E F2 -.2(bu)2.773 G(f).2 E F1 .273(has the input k)
+2.773 F -.15(ey)-.1 G 5.273(.T)-.5 G .272
+(his may be \(and often is\) used)-5.273 F(destructi)117 213 Q -.15(ve)
+-.25 G(ly).15 E 5.151(.T)-.65 G(he)-5.151 E F2(av)2.651 E F1 .151
+(is a list of ar)2.651 F .151(guments passed in from the re)-.18 F .152
+(write line.)-.25 F .152(The lookup function)5.152 F .322
+(should return a pointer to the ne)117 225 R 2.822(wv)-.25 G 2.822
+(alue. If)-3.072 F .322(the map lookup f)2.822 F(ails,)-.1 E F2(*statp)
+2.822 E F1 .322(should be set to an e)2.822 F(xit)-.15 E .301
+(status code; in particular)117 237 R 2.801(,i)-.4 G 2.801(ts)-2.801 G
+.302(hould be set to)-2.801 F F3(EX_TEMPF)2.802 E(AIL)-.666 E F1 .302
+(if reco)2.802 F -.15(ve)-.15 G .302(ry is to be attempted by the).15 F
+(higher le)117 249 Q -.15(ve)-.25 G 2.5(lc).15 G(ode.)-2.5 E F0 2.5
+(6.3.4. Queueing)102 273 R(Function)2.5 E F1 .783(The routine)142 289.2
+R F2(shouldqueue)3.283 E F1 .783
+(is called to decide if a message should be queued or processed)3.283 F
+(immediately)117 301.2 Q 6.618(.T)-.65 G 1.618
+(ypically this compares the message priority to the current load a)
+-7.418 F -.15(ve)-.2 G 4.119(rage. The).15 F(def)117 313.2 Q
+(ault de\214nition is:)-.1 E(bool)157 329.4 Q(shouldqueue\(pri, ctime\))
+157 341.4 Q(long pri;)175 353.4 Q(time_t ctime;)175 365.4 Q({)157 377.4
+Q(if \(CurrentLA < QueueLA\))175 389.4 Q(return f)193 401.4 Q(alse;)-.1
+E(return \(pri > \(QueueF)175 413.4 Q
+(actor / \(CurrentLA \255 QueueLA + 1\)\)\);)-.15 E(})157 425.4 Q 2.063
+(If the current load a)117 441.6 R -.15(ve)-.2 G 2.062(rage \(global v)
+.15 F(ariable)-.25 E F2(Curr)4.562 E(entLA)-.37 E F1 4.562(,w)C 2.062
+(hich is set before this function is)-4.562 F 1.057
+(called\) is less than the lo)117 453.6 R 3.558(wt)-.25 G 1.058
+(hreshold load a)-3.558 F -.15(ve)-.2 G 1.058(rage \(option).15 F F0(x)
+3.558 E F1 3.558(,v)C(ariable)-3.808 E F2(QueueLA)3.558 E F1(\),)A F2
+(shouldqueue)3.558 E F1(returns)117 465.6 Q F3 -.09(fa)3.249 G(lse).09 E
+F1 .749(immediately \(that is, it should)3.249 F F2(not)3.249 E F1 3.248
+(queue\). If)3.249 F .748(the current load a)3.248 F -.15(ve)-.2 G .748
+(rage e).15 F .748(xceeds the)-.15 F 1.418(high threshold load a)117
+477.6 R -.15(ve)-.2 G 1.418(rage \(option).15 F F0(X)3.919 E F1 3.919
+(,v)C(ariable)-4.169 E F2(RefuseLA)3.919 E F1(\),)A F2(shouldqueue)3.919
+E F1(returns)3.919 E F3(true)3.919 E F1(immedi-)3.919 E(ately)117 489.6
+Q 7.126(.O)-.65 G 2.125
+(therwise, it computes the function based on the message priority)-7.126
+F 4.625(,t)-.65 G 2.125(he queue f)-4.625 F(actor)-.1 E(\(option)117
+501.6 Q F0(q)2.5 E F1 2.5(,g)C(lobal v)-2.5 E(ariable)-.25 E F2(QueueF)
+2.5 E(actor)-.75 E F1(\), and the current and threshold load a)A -.15
+(ve)-.2 G(rages.).15 E 1.066(An implementation wishing to tak)142 517.8
+R 3.566(et)-.1 G 1.067
+(he actual age of the message into account can also)-3.566 F 1.41
+(use the)117 529.8 R F2(ctime)3.91 E F1(parameter)3.91 E 3.91(,w)-.4 G
+1.41(hich is the time that the message w)-3.91 F 1.41
+(as \214rst submitted to)-.1 F F2(sendmail)3.91 E F1(.)A .928
+(Note that the)117 541.8 R F2(pri)3.428 E F1 .928(parameter is already \
+weighted by the number of times the message has been)3.428 F .395
+(tried \(although this tends to lo)117 553.8 R .395
+(wer the priority of the message with time\); the e)-.25 F .395
+(xpectation is that)-.15 F(the)117 565.8 Q F2(ctime)2.674 E F1 -.1(wo)
+2.674 G .174
+(uld be used as an \231escape clause\232 to ensure that messages are e)
+.1 F -.15(ve)-.25 G .174(ntually processed.).15 F F0 2.5
+(6.3.5. Refusing)102 589.8 R(Incoming SMTP Connections)2.5 E F1 2.063
+(The function)142 606 R F2 -.37(re)4.563 G(fuseconnections).37 E F1
+(returns)4.563 E F3(true)4.563 E F1 2.062
+(if incoming SMTP connections should be)4.563 F 3.563(refused. The)117
+618 R 1.063(current implementation is based e)3.563 F(xclusi)-.15 E -.15
+(ve)-.25 G 1.063(ly on the current load a).15 F -.15(ve)-.2 G 1.063
+(rage and the).15 F(refuse load a)117 630 Q -.15(ve)-.2 G
+(rage option \(option).15 E F0(X)2.5 E F1 2.5(,g)C(lobal v)-2.5 E
+(ariable)-.25 E F2(RefuseLA)2.5 E F1(\):)A(bool)157 646.2 Q
+(refuseconnections\(\))157 658.2 Q({)157 670.2 Q
+(return \(RefuseLA > 0 && CurrentLA >= RefuseLA\);)175 682.2 Q(})157
+694.2 Q 2.5(Am)117 710.4 S(ore cle)-2.5 E -.15(ve)-.25 G 2.5(ri).15 G
+(mplementation could look at more system resources.)-2.5 E 0 Cg EP
+%%Page: 97 93
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-97)195.86 E 2.5(6.3.6. Load)102 96 R -.6 -1(Av e)2.5 H
+(rage Computation)1 E/F1 10/Times-Roman@0 SF .244(The routine)142 112.2
+R/F2 10/Times-Italic@0 SF -.1(ge)2.743 G(tla).1 E F1 .243
+(returns the current load a)2.743 F -.15(ve)-.2 G .243
+(rage \(as a rounded inte).15 F 2.743(ger\). The)-.15 F(distrib)2.743 E
+(ution)-.2 E 1.156(includes se)117 124.2 R -.15(ve)-.25 G 1.157
+(ral possible implementations.).15 F 1.157(If you are porting to a ne)
+6.157 F 3.657(we)-.25 G -.4(nv)-3.657 G 1.157(ironment you may).4 F
+(need to add some ne)117 138.2 Q 2.5(wt)-.25 G(weaks.)-2.5 E/F3 7
+/Times-Roman@0 SF(25)-4 I F0 2.5(6.4. Con\214guration)87 162.2 R
+(in sendmail/daemon.c)2.5 E F1 .128(The \214le)127 178.4 R F2
+(sendmail/daemon.c)2.628 E F1 .128
+(contains a number of routines that are dependent on the local net-)
+2.628 F -.1(wo)102 190.4 S(rking en).1 E 2.5(vironment. The)-.4 F -.15
+(ve)2.5 G(rsion supplied assumes you ha).15 E .3 -.15(ve B)-.2 H
+(SD style sock).15 E(ets.)-.1 E 2.16(In pre)127 206.6 R 2.16
+(vious releases, we recommended that you modify the routine)-.25 F F2
+(maphostname)4.66 E F1 2.16(if you)4.66 F -.1(wa)102 218.6 S 1.919
+(nted to generalize).1 F F0($[)4.418 E F1(...)4.418 E F0($])4.418 E F1
+4.418(lookups. W)4.418 F 4.418(en)-.8 G 2.418 -.25(ow r)-4.418 H 1.918
+(ecommend that you create a ne).25 F 4.418(wk)-.25 G -.15(ey)-4.518 G
+1.918(ed map).15 F(instead.)102 230.6 Q F0 2.5(6.5. LD)87 254.6 R(AP)
+-.35 E F1(In this section we assume that)127 270.8 Q F2(sendmail)2.5 E
+F1(has been compiled with support for LD)2.5 E(AP)-.4 E(.)-1.11 E F0 2.5
+(6.5.1. LD)102 294.8 R(AP Recursion)-.35 E F1(LD)142 311 Q .349
+(AP Recursion allo)-.4 F .349(ws you to add types to the search attrib)
+-.25 F .35(utes on an LD)-.2 F .35(AP map speci-)-.4 F 2.5
+(\214cation. The)117 323 R(syntax is:)2.5 E<ad76>117 339.2 Q F2 -.37(AT)
+2.5 G(TRIB).37 E(UTE)-.1 E F1([:)A F2(TYPE)A F1([:)A F2(OBJECTCLASS)A F1
+([|)A F2(OBJECTCLASS)A F1(|...]]])A(The ne)142 355.4 Q(w)-.25 E F2(TYPE)
+2.5 E F1 2.5(sa)C(re:)-2.5 E 26.17(NORMAL This)117 371.6 R(attrib)3.579
+E 1.079(ute type speci\214es the attrib)-.2 F 1.078
+(ute to add to the results string.)-.2 F 1.078(This is)6.078 F(the def)
+189 383.6 Q(ault.)-.1 E 55.06(DN An)117 399.8 R 2.821(ym)-.15 G .321
+(atches for this attrib)-2.821 F .321(ute are e)-.2 F .321
+(xpected to ha)-.15 F .622 -.15(ve a v)-.2 H .322
+(alue of a fully quali\214ed)-.1 F 1.521(distinguished name.)189 411.8 R
+F2(sendmail)6.521 E F1 1.521(will lookup that DN and apply the attrib)
+4.021 F(utes)-.2 E(requested to the returned DN record.)189 423.8 Q(FIL)
+117 440 Q 36.53(TER An)-.92 F 2.652(ym)-.15 G .153
+(atches for this attrib)-2.652 F .153(ute are e)-.2 F .153
+(xpected to ha)-.15 F .453 -.15(ve a v)-.2 H .153(alue of an LD)-.1 F
+.153(AP search)-.4 F(\214lter)189 452 Q(.)-.55 E F2(sendmail)5.698 E F1
+.697(will perform a lookup with the same parameters as the origi-)3.198
+F(nal search b)189 464 Q
+(ut replaces the search \214lter with the one speci\214ed here.)-.2 E
+49.5(URL An)117 480.2 R 2.87(ym)-.15 G .37(atches for this attrib)-2.87
+F .37(ute are e)-.2 F .37(xpected to ha)-.15 F .67 -.15(ve a v)-.2 H .37
+(alue of an LD)-.1 F .37(AP URL.)-.4 F F2(sendmail)189 492.2 Q F1 1.947
+(will perform a lookup of that URL and use the results from the)4.447 F
+(attrib)189 504.2 Q .389(utes named in that URL.)-.2 F .389(Note ho)
+5.389 F(we)-.25 E -.15(ve)-.25 G 2.889(rt).15 G .389
+(hat the search is done using the)-2.889 F 2.622(current LD)189 516.2 R
+2.622(AP connection, re)-.4 F -.05(ga)-.15 G 2.622
+(rdless of what is speci\214ed as the scheme,).05 F(LD)189 528.2 Q
+(AP host, and LD)-.4 E(AP port in the LD)-.4 E(AP URL.)-.4 E(An)117
+544.4 Q 2.5(yu)-.15 G(ntyped attrib)-2.5 E(utes are considered)-.2 E/F4
+9/Times-Roman@0 SF(NORMAL)2.5 E F1(attrib)2.5 E(utes as described abo)
+-.2 E -.15(ve)-.15 G(.).15 E .91(The optional)142 560.6 R F2
+(OBJECTCLASS)3.41 E F1 .91
+(\(| separated\) list contains the objectClass v)3.41 F .91
+(alues for which)-.25 F 1.399(that attrib)117 572.6 R 1.399
+(ute applies.)-.2 F 1.399(If the list is gi)6.399 F -.15(ve)-.25 G 1.399
+(n, the attrib).15 F 1.399(ute named will only be used if the LD)-.2 F
+(AP)-.4 E 1.111(record being returned is a member of that object class.)
+117 584.6 R 1.111(Note that if these ne)6.111 F 3.612(wv)-.25 G 1.112
+(alue attrib)-3.862 F(ute)-.2 E F2(TYPE)117 596.6 Q F1 2.937(sa)C .436(\
+re used in an AliasFile option setting, it will need to be double quote\
+d to pre)-2.937 F -.15(ve)-.25 G(nt).15 E F2(send-)2.936 E(mail)117
+608.6 Q F1(from misparsing the colons.)2.5 E .257(Note that LD)142 624.8
+R .257(AP recursion attrib)-.4 F .257
+(utes which do not ultimately point to an LD)-.2 F .258(AP record are)
+-.4 F(not considered an error)117 636.8 Q(.)-.55 E .32 LW 76 678.8 72
+678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL 88 678.8 84 678.8 DL
+92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8 96 678.8 DL 104
+678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108 678.8 DL 116
+678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120 678.8 DL 128
+678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132 678.8 DL 140
+678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144 678.8 DL 152
+678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156 678.8 DL 164
+678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168 678.8 DL 176
+678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180 678.8 DL 188
+678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192 678.8 DL 200
+678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204 678.8 DL 212
+678.8 208 678.8 DL 216 678.8 212 678.8 DL/F5 5/Times-Roman@0 SF(25)93.6
+689.2 Q/F6 8/Times-Roman@0 SF
+(If you do, please send updates to sendmail@Sendmail.ORG.)3.2 I 0 Cg EP
+%%Page: 98 94
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 193.36(SMM:08-98 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E 2.5(6.5.1.1. Example)117 96 R/F1
+10/Times-Roman@0 SF .218(Since e)157 112.2 R .218
+(xamples usually help clarify)-.15 F 2.718(,h)-.65 G .218(ere is an e)
+-2.718 F .218(xample which uses all four of the ne)-.15 F(w)-.25 E
+(types:)132 124.2 Q 2.5(OL)172 140.4 S -.4(DA)-2.5 G(PDef).4 E
+(aultSpec=-h ldap.e)-.1 E(xample.com -b dc=e)-.15 E(xample,dc=com)-.15 E
+-2.15 -.25(Ke x)172 164.4 T(ample ldap).25 E(-z,)194.5 176.4 Q
+(-k \(&\(objectClass=sendmailMT)194.5 188.4 Q
+(AAliasObject\)\(sendmailMT)-.93 E(AK)-.93 E -.15(ey)-.25 G(=%0\)\)).15
+E(-v sendmailMT)194.5 200.4 Q(AAliasV)-.93 E(alue,mail:NORMAL:inetOr)
+-1.11 E(gPerson,)-.18 E(uniqueMember:DN:groupOfUniqueNames,)202 212.4 Q
+(sendmailMT)202 224.4 Q(AAliasSearch:FIL)-.93 E(TER:sendmailMT)-.92 E
+(AAliasObject,)-.93 E(sendmailMT)202 236.4 Q(AAliasURL:URL:sendmailMT)
+-.93 E(AAliasObject)-.93 E(That de\214nition speci\214es that:)157 256.8
+Q 5<8341>137 273 S .951 -.15(ny v)-5 H .651(alue in a)-.1 F/F2 9
+/Times-Roman@0 SF(sendmailMT)3.151 E(AAliasV)-.837 E(alue)-.999 E F1
+(attrib)3.151 E .652(ute will be added to the result string re)-.2 F
+-.05(ga)-.15 G(rd-).05 E(less of object class.)145.5 285 Q 5<8354>137
+297 S(he)-5 E F2(mail)2.552 E F1(attrib)2.552 E .052
+(ute will be added to the result string if the LD)-.2 F .051
+(AP record is a member of the)-.4 F F2(inetOr)145.5 309 Q(gPerson)-.162
+E F1(object class.)2.5 E 5<8354>137 321 S(he)-5 E F2(uniqueMember)4.596
+E F1(attrib)4.597 E 2.097(ute is a recursi)-.2 F 2.397 -.15(ve a)-.25 H
+(ttrib).15 E 2.097(ute, used only in)-.2 F F2(groupOfUniqueNames)4.597 E
+F1 .55(records, and should contain an LD)145.5 333 R .549
+(AP DN pointing to another LD)-.4 F .549(AP record.)-.4 F .549
+(The desire)5.549 F(here is to return the)145.5 345 Q F2(mail)2.5 E F1
+(attrib)2.5 E(ute from those DNs.)-.2 E 5<8354>137 357 S(he)-5 E F2
+(sendmailMT)4.373 E(AAliasSearch)-.837 E F1(attrib)4.373 E 1.873
+(ute and)-.2 F F2(sendmailMT)4.374 E(AAliasURL)-.837 E F1 1.874
+(are both used only if)4.374 F 2.084(referenced in a)145.5 369 R F2
+(sendmailMT)4.584 E(AAliasObject)-.837 E F1 7.084(.T)C(he)-7.084 E 4.584
+(ya)-.15 G 2.084(re both recursi)-4.584 F -.15(ve)-.25 G 4.584(,t).15 G
+2.084(he \214rst for a ne)-4.584 F(w)-.25 E(LD)145.5 381 Q
+(AP search string and the latter for an LD)-.4 E(AP URL.)-.4 E F0 2.5
+(6.6. ST)87 405 R(AR)-.9 E(TTLS)-.4 E F1 .47
+(In this section we assume that)127 421.2 R/F3 10/Times-Italic@0 SF
+(sendmail)2.97 E F1 .47(has been compiled with support for ST)2.97 F(AR)
+-.93 E 2.97(TTLS. T)-.6 F(o)-.8 E .609
+(properly understand the use of ST)102 433.2 R(AR)-.93 E .609(TTLS in)
+-.6 F F3(sendmail)3.109 E F1 3.109(,i)C 3.109(ti)-3.109 G 3.109(sn)
+-3.109 G .608(ecessary to understand at least some)-3.109 F 1.855
+(basics about X.509 certi\214cates and public k)102 445.2 R 2.155 -.15
+(ey c)-.1 H(ryptograph).15 E 5.655 -.65(y. T)-.05 H 1.856
+(his information can be found in).65 F
+(books about SSL/TLS or on WWW sites, e.g., \231http://www)102 457.2 Q
+(.OpenSSL.or)-.65 E(g/\232.)-.18 E F0 2.5(6.6.1. Certi\214cates)102
+481.2 R -.25(fo)2.5 G 2.5(rS).25 G -.9(TA)-2.5 G -.4(RT).9 G(TLS).4 E F1
+.438(When acting as a serv)142 497.4 R(er)-.15 E(,)-.4 E F3(sendmail)
+2.938 E F1 .437(requires X.509 certi\214cates to support ST)2.938 F(AR)
+-.93 E .437(TTLS: one)-.6 F 1.45(as certi\214cate for the serv)117 509.4
+R 1.45(er \(Serv)-.15 F 1.45(erCertFile and corresponding pri)-.15 F
+-.25(va)-.25 G 1.45(te Serv).25 F(erK)-.15 E -.15(ey)-.25 G 1.45
+(File\) at least).15 F .245(one root CA \(CA)117 521.4 R .244(CertFile\
+\), i.e., a certi\214cate that is used to sign other certi\214cates, an\
+d a path to a)-.4 F .898(directory which contains other CAs \(CA)117
+533.4 R(CertP)-.4 E 3.398(ath\). The)-.15 F .899
+(\214le speci\214ed via CA)3.398 F .899(CertFile can con-)-.4 F .919
+(tain se)117 545.4 R -.15(ve)-.25 G .919(ral certi\214cates of CAs.).15
+F .919
+(The DNs of these certi\214cates are sent to the client during the)5.919
+F .925(TLS handshak)117 557.4 R 3.425(e\()-.1 G .925
+(as part of the Certi\214cateRequest\) as the list of acceptable CAs.)
+-3.425 F(Ho)5.925 E(we)-.25 E -.15(ve)-.25 G 1.725 -.4(r, d).15 H(o).4 E
+(not list too man)117 569.4 Q 2.5(yr)-.15 G
+(oot CAs in that \214le, otherwise the TLS handshak)-2.5 E 2.5(em)-.1 G
+(ay f)-2.5 E(ail; e.g.,)-.1 E
+(error:14094417:SSL routines:SSL3_READ_BYTES:)157 585.6 Q
+(sslv3 alert ille)157 597.6 Q -.05(ga)-.15 G 2.5(lp).05 G
+(arameter:s3_pkt.c:964:SSL alert number 47)-2.5 E -1.1(Yo)117 613.8 S
+3.074(us)1.1 G .574(hould probably put only the CA cert into that \214l\
+e that signed your o)-3.074 F .574(wn cert\(s\), or at least)-.25 F .542
+(only those you trust.)117 625.8 R .543(The CA)5.543 F(CertP)-.4 E .543
+(ath directory must contain the hashes of each CA certi\214cate)-.15 F
+1.585(as \214lenames \(or as links to them\).)117 637.8 R 1.584
+(Symbolic links can be generated with the follo)6.585 F 1.584(wing tw)
+-.25 F(o)-.1 E(\(Bourne\) shell commands:)117 649.8 Q
+(C=FileName_of_CA_Certi\214cate)157 666 Q
+(ln -s $C `openssl x509 -noout -hash < $C`.0)157 678 Q .202(An X.509 ce\
+rti\214cate is also required for authentication in client mode \(Client\
+CertFile and corre-)117 694.2 R .931(sponding pri)117 706.2 R -.25(va)
+-.25 G .931(te ClientK).25 F -.15(ey)-.25 G .931(File\), ho).15 F(we)
+-.25 E -.15(ve)-.25 G -.4(r,).15 G F3(sendmail)3.831 E F1 .931(will al)
+3.431 F -.1(wa)-.1 G .931(ys use ST).1 F(AR)-.93 E .931(TTLS when of)-.6
+F(fered)-.25 E .067(by a serv)117 718.2 R(er)-.15 E 5.067(.T)-.55 G .067
+(he client and serv)-5.067 F .067(er certi\214cates can be identical.)
+-.15 F .068(Certi\214cates can be obtained from)5.068 F 0 Cg EP
+%%Page: 99 95
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-99)195.86 E/F1 10/Times-Roman@0 SF 2.848(ac)117 96 S .348
+(erti\214cate authority or created with the help of OpenSSL.)-2.848 F
+.348(The required format for certi\214cates)5.348 F 4.583(and pri)117
+108 R -.25(va)-.25 G 4.583(te k).25 F -.15(ey)-.1 G 7.084(si).15 G 7.084
+(sP)-7.084 G 7.084(EM. T)-7.084 F 7.084(oa)-.8 G(llo)-7.084 E 7.084(wf)
+-.25 G 4.584(or automatic startup of sendmail, pri)-7.084 F -.25(va)-.25
+G 4.584(te k).25 F -.15(ey)-.1 G(s).15 E(\(Serv)117 120 Q(erK)-.15 E
+-.15(ey)-.25 G .25(File, ClientK).15 F -.15(ey)-.25 G .249
+(File\) must be stored unencrypted.).15 F .249(The k)5.249 F -.15(ey)-.1
+G 2.749(sa).15 G .249(re only protected by the)-2.749 F
+(permissions of the \214le system.)117 132 Q(Ne)5 E -.15(ve)-.25 G 2.5
+(rm).15 G(ak)-2.5 E 2.5(eap)-.1 G(ri)-2.5 E -.25(va)-.25 G(te k).25 E .3
+-.15(ey a)-.1 H -.25(va)-.05 G(ilable to a third party).25 E(.)-.65 E F0
+2.5(6.6.2. PRNG)102 156 R -.25(fo)2.5 G 2.5(rS).25 G -.9(TA)-2.5 G -.4
+(RT).9 G(TLS).4 E F1(ST)142 172.2 Q(AR)-.93 E .504(TTLS requires a stro\
+ng pseudo random number generator \(PRNG\) to operate prop-)-.6 F(erly)
+117 184.2 Q 5.056(.D)-.65 G .056
+(epending on the TLS library you use, it may be required to e)-5.056 F
+.055(xplicitly initialize the PRNG)-.15 F 1.154(with random data.)117
+196.2 R 1.154(OpenSSL mak)6.154 F 1.154(es use of)-.1 F F0(/de)3.654 E
+(v/urandom\(4\))-.15 E F1 1.154(if a)3.654 F -.25(va)-.2 G 1.155
+(ilable \(this corresponds to).25 F 1.443
+(the compile \215ag HASURANDOMDEV\).)117 208.2 R 1.442
+(On systems which lack this support, a random \214le)6.443 F .223
+(must be speci\214ed in the)117 220.2 R/F2 10/Times-Italic@0 SF
+(sendmail.cf)2.723 E F1 .223(\214le using the option RandFile.)2.723 F
+.223(It is)5.223 F F0(str)2.723 E(ongly)-.18 E F1 .224(advised to use)
+2.723 F .873(the "Entrop)117 232.2 R 3.373(yG)-.1 G .872
+(athering Daemon" EGD from Brian W)-3.373 F .872
+(arner on those systems to pro)-.8 F .872(vide useful)-.15 F 1.413
+(random data.)117 244.2 R 1.413(In this case,)6.413 F F2(sendmail)3.913
+E F1 1.414(must be compiled with the \215ag EGD, and the RandFile)3.913
+F .732(option must point to the EGD sock)117 256.2 R 3.231(et. If)-.1 F
+(neither)3.231 E F0(/de)3.231 E(v/urandom\(4\))-.15 E F1 .731
+(nor EGD are a)3.231 F -.25(va)-.2 G .731(ilable, you).25 F(ha)117 268.2
+Q .473 -.15(ve t)-.2 H 2.673(om).15 G(ak)-2.673 E 2.674(es)-.1 G .174
+(ure that useful random data is a)-2.674 F -.25(va)-.2 G .174
+(ilable all the time in RandFile.).25 F .174(If the \214le hasn')5.174 F
+(t)-.18 E .39(been modi\214ed in the last 10 minutes before it is suppo\
+sed to be used by)117 280.2 R F2(sendmail)2.89 E F1 .39(the content is)
+2.89 F(considered obsolete.)117 292.2 Q
+(One method for generating this \214le is:)5 E
+(openssl rand -out /etc/mail/rand\214le -rand)157 308.4 Q F2
+(/path/to/\214le:...)2.5 E F1(256)A .32
+(See the OpenSSL documentation for more information.)117 324.6 R .321
+(In this case, the PRNG for TLS is only)5.321 F .957
+(seeded with other random data if the)117 336.6 R F0(DontBlameSendmail)
+3.456 E F1(option)3.456 E F0(Insuf\214cientEntr)3.456 E(opy)-.18 E F1
+.956(is set.)3.456 F(This is most lik)117 348.6 Q(ely not suf)-.1 E
+(\214cient for certain actions, e.g., generation of \(temporary\) k)-.25
+E -.15(ey)-.1 G(s.).15 E .051(Please see the OpenSSL documentation or o\
+ther sources for further information about cer)142 364.8 R(-)-.2 E 1.064
+(ti\214cates, their creation and their usage, the importance of a good \
+PRNG, and other aspects of)117 376.8 R(TLS.)117 388.8 Q F0 2.5
+(6.7. Encoding)87 412.8 R(of ST)2.5 E(AR)-.9 E(TTLS and A)-.4 E(UTH r)
+-.5 E(elated Macr)-.18 E(os)-.18 E F1 .692(Macros that contain ST)127
+429 R(AR)-.93 E .692(TTLS and A)-.6 F .693
+(UTH related data which comes from outside sources,)-.55 F .809(e.g., a\
+ll macros containing information from certi\214cates, are encoded to a)
+102 441 R -.2(vo)-.2 G .809(id problems with non-).2 F .192
+(printable or special characters.)102 453 R .192
+(The latter are '\\', '<', '>', '\(', '\)', '"', '+', and ' '.)5.192 F
+.193(All of these char)5.193 F(-)-.2 E(acters are replaced by their v)
+102 465 Q(alue in he)-.25 E(xadecimal with a leading '+'.)-.15 E -.15
+(Fo)5 G 2.5(re).15 G(xample:)-2.65 E(/C=US/ST=California/O=endmail.or)
+142 481.2 Q(g/OU=pri)-.18 E -.25(va)-.25 G(te/CN=Darth Mail \(Cert\)/)
+.25 E(Email=darth+cert@endmail.or)142 493.2 Q(g)-.18 E(is encoded as:)
+102 509.4 Q(/C=US/ST=California/O=endmail.or)142 525.6 Q(g/OU=pri)-.18 E
+-.25(va)-.25 G(te/).25 E
+(CN=Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.or)142 537.6 Q
+(g)-.18 E .516(\(line breaks ha)102 553.8 R .816 -.15(ve b)-.2 H .516
+(een inserted for readability\).).15 F .515
+(The macros which are subject to this encoding are)5.515 F 6.827({cert_\
+subject}, {cert_issuer}, {cn_subject}, {cn_issuer}, as well as {auth_au\
+then} and)102 565.8 R({auth_author}.)102 577.8 Q F0 2.5(7. A)72 601.8 R
+(CKNO)-.55 E(WLEDGEMENTS)-.5 E F1(I')112 618 Q 2.037 -.15(ve w)-.5 H
+(ork).05 E 1.737(ed on)-.1 F F2(sendmail)4.237 E F1 1.737(for man)4.237
+F 4.237(yy)-.15 G 1.737(ears, and man)-4.237 F 4.237(ye)-.15 G(mplo)
+-4.237 E 1.737(yers ha)-.1 F 2.037 -.15(ve b)-.2 H 1.737
+(een remarkably patient).15 F .403(about letting me w)87 630 R .403
+(ork on a lar)-.1 F .403(ge project that w)-.18 F .404
+(as not part of my of)-.1 F .404(\214cial job)-.25 F 5.404(.T)-.4 G .404
+(his includes time on the)-5.404 F .282(INGRES Project at the Uni)87 642
+R -.15(ve)-.25 G .282(rsity of California at Berk).15 F(ele)-.1 E 1.582
+-.65(y, a)-.15 H 2.782(tB).65 G .282(ritton Lee, and ag)-2.782 F .281
+(ain on the Mammoth)-.05 F(and T)87 654 Q(itan Projects at Berk)-.35 E
+(ele)-.1 E -.65(y.)-.15 G .789(Much of the second w)112 670.2 R -2.25
+-.2(av e)-.1 H .789(of impro)3.489 F -.15(ve)-.15 G .789
+(ments resulting in v).15 F .79(ersion 8.1 should be credited to Bryan)
+-.15 F .545(Costales of the International Computer Science Institute.)87
+682.2 R .545(As he passed me drafts of his book on)5.545 F F2(send-)
+3.045 E(mail)87 694.2 Q F1 2.5(Iw)2.5 G(as inspired to start w)-2.6 E
+(orking on things ag)-.1 E 2.5(ain. Bryan)-.05 F -.1(wa)2.5 G 2.5(sa).1
+G(lso a)-2.5 E -.25(va)-.2 G(ilable to bounce ideas of).25 E 2.5(fo)-.25
+G(f.)-2.5 E(Gre)112 710.4 Q .167(gory Neil Shapiro of W)-.15 F .168(orc\
+ester Polytechnic Institute has become instrumental in all phases of)-.8
+F F2(sendmail)87 722.4 Q F1 .34(support and de)2.84 F -.15(ve)-.25 G .34
+(lopment, and w).15 F .34(as lar)-.1 F .34
+(gely responsible for getting v)-.18 F .34(ersions 8.8 and 8.9 out the)
+-.15 F 0 Cg EP
+%%Page: 100 96
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 188.36(SMM:08-100 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF(door)87
+96 Q(.)-.55 E(Man)112 112.2 Q 2.856 -.65(y, m)-.15 H(an).65 E 4.056(yp)
+-.15 G 1.556(eople contrib)-4.056 F 1.556
+(uted chunks of code and ideas to)-.2 F/F2 10/Times-Italic@0 SF
+(sendmail)4.056 E F1 6.556(.I)C 4.056(th)-6.556 G 1.557(as pro)-4.056 F
+-.15(ve)-.15 G 4.057(nt).15 G 4.057(ob)-4.057 G 4.057(ea)-4.057 G .406
+(group netw)87 124.2 R .406(ork ef)-.1 F 2.906(fort. V)-.25 F .406
+(ersion 8 in particular w)-1.11 F .405(as a group project.)-.1 F .405
+(The follo)5.405 F .405(wing people and or)-.25 F -.05(ga)-.18 G(niza-)
+.05 E(tions made notable contrib)87 136.2 Q(utions:)-.2 E(Claus Assmann)
+127 152.4 Q(John Beck, He)127 164.4 Q(wlett-P)-.25 E
+(ackard & Sun Microsystems)-.15 E -.25(Ke)127 176.4 S
+(ith Bostic, CSRG, Uni).25 E -.15(ve)-.25 G(rsity of California, Berk)
+.15 E(ele)-.1 E(y)-.15 E(Andre)127 188.4 Q 2.5(wC)-.25 G
+(heng, Sun Microsystems)-2.5 E(Michael J. Corrig)127 200.4 Q(an, Uni)
+-.05 E -.15(ve)-.25 G(rsity of California, San Die).15 E(go)-.15 E
+(Bryan Costales, International Computer Science Institute & InfoBeat)127
+212.4 Q -.15(Pa)127 224.4 S -.5(..)-4.402 -6 O 2.5(r\().552 6 O
+(Pell\) Emanuelsson)-2.5 E(Craig Ev)127 236.4 Q(erhart, T)-.15 E
+(ransarc Corporation)-.35 E(Per Hedeland, Ericsson)127 248.4 Q -.8(To)
+127 260.4 S 2.5(mI).8 G -.25(va)-2.5 G 2.5(rH).25 G(elbekkmo, Norwe)-2.5
+E(gian School of Economics)-.15 E
+(Kari Hurtta, Finnish Meteorological Institute)127 272.4 Q
+(Allan E. Johannesen, WPI)127 284.4 Q(Jonathan Kamens, OpenV)127 296.4 Q
+(ision T)-.6 E(echnologies, Inc.)-.7 E -.8(Ta)127 308.4 S
+(kahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.).8 E
+(Brian Kantor)127 320.4 Q 2.5(,U)-.4 G(ni)-2.5 E -.15(ve)-.25 G
+(rsity of California, San Die).15 E(go)-.15 E(John K)127 332.4 Q(ennedy)
+-.25 E 2.5(,C)-.65 G(al State Uni)-2.5 E -.15(ve)-.25 G(rsity).15 E 2.5
+(,C)-.65 G(hico)-2.5 E(Murray S. K)127 344.4 Q(uchera)-.15 E(wy)-.15 E
+2.5(,H)-.65 G(ookUp Communication Corp.)-2.5 E(Bruce Lilly)127 356.4 Q
+2.5(,S)-.65 G(on)-2.5 E 2.5(yU)-.15 G(.S.)-2.5 E(Karl London)127 368.4 Q
+(Motonori Nakamura, Ritsumeikan Uni)127 380.4 Q -.15(ve)-.25 G
+(rsity & K).15 E(yoto Uni)-.25 E -.15(ve)-.25 G(rsity).15 E
+(John Gardiner Myers, Carne)127 392.4 Q(gie Mellon Uni)-.15 E -.15(ve)
+-.25 G(rsity).15 E(Neil Rick)127 404.4 Q(ert, Northern Illinois Uni)-.1
+E -.15(ve)-.25 G(rsity).15 E(Gre)127 416.4 Q(gory Neil Shapiro, WPI)-.15
+E(Eric Schnoebelen, Con)127 428.4 Q .3 -.15(vex C)-.4 H(omputer Corp.)
+.15 E(Eric W)127 440.4 Q(assenaar)-.8 E 2.5(,N)-.4 G
+(ational Institute for Nuclear and High Ener)-2.5 E(gy Ph)-.18 E
+(ysics, Amsterdam)-.05 E(Randall W)127 452.4 Q(inchester)-.4 E 2.5(,U)
+-.4 G(ni)-2.5 E -.15(ve)-.25 G(rsity of Maryland).15 E(Christophe W)127
+464.4 Q(olfhugel, P)-.8 E(asteur Institute & Herv)-.15 E 2.5(eS)-.15 G
+(chauer Consultants \(P)-2.5 E(aris\))-.15 E(Exactis.com, Inc.)127 476.4
+Q 3.219(Ia)87 492.6 S .719(pologize for an)-3.219 F .719(yone I ha)-.15
+F 1.019 -.15(ve o)-.2 H .719(mitted, misspelled, misattrib).15 F .719
+(uted, or otherwise missed.)-.2 F .72(At this point, I)5.72 F 1.093
+(suspect that at least a hundred people ha)87 504.6 R 1.393 -.15(ve c)
+-.2 H(ontrib).15 E 1.093(uted code, and man)-.2 F 3.592(ym)-.15 G 1.092
+(ore ha)-3.592 F 1.392 -.15(ve c)-.2 H(ontrib).15 E 1.092(uted ideas,)
+-.2 F 1.533(comments, and encouragement.)87 516.6 R(I')6.534 E 1.834
+-.15(ve t)-.5 H 1.534(ried to list them in the RELEASE_NO).15 F 1.534
+(TES in the distrib)-.4 F(ution)-.2 E(directory)87 528.6 Q 5(.I)-.65 G
+(appreciate their contrib)-2.5 E(ution as well.)-.2 E .743
+(Special thanks are reserv)112 544.8 R .743(ed for Michael Corrig)-.15 F
+.742(an and Christophe W)-.05 F .742(olfhugel, who besides being)-.8 F
+-.1(wo)87 556.8 S 2.1(nderful guinea pigs and contrib).1 F 2.1(utors ha)
+-.2 F 2.4 -.15(ve a)-.2 H 2.1(lso consented to be added to the `).15 F
+(`sendmail@Send-)-.74 E(mail.ORG')87 568.8 Q 3.611('l)-.74 G 1.111
+(ist and, by answering the b)-3.611 F 1.111
+(ulk of the questions sent to that list, ha)-.2 F 1.41 -.15(ve f)-.2 H
+1.11(reed me up to do).15 F(other w)87 580.8 Q(ork.)-.1 E 0 Cg EP
+%%Page: 101 97
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF 3(APPENDIX A)257.172 98.4 R(COMMAND LINE FLA)
+224.832 141.6 Q(GS)-.66 E/F1 10/Times-Roman@0 SF(Ar)97 201 Q
+(guments must be presented with \215ags before addresses.)-.18 E
+(The \215ags are:)5 E<ad41>72 217.2 Q/F2 10/Times-Italic@0 SF(x)A F1
+.048(Select an alternati)54.7 F .348 -.15(ve .)-.25 H .048
+(cf \214le which is either).15 F F2(sendmail.cf)2.549 E F1(for)2.549 E
+/F3 10/Times-Bold@0 SF(\255Am)2.549 E F1(or)2.549 E F2(submit.cf)2.549 E
+F1(for)2.549 E F3(\255Ac)2.549 E F1 5.049(.B)C(y)-5.049 E(def)144 229.2
+Q .024(ault the .cf \214le is chosen based on the operation mode.)-.1 F
+-.15(Fo)5.024 G(r).15 E F3(-bm)2.524 E F1(\(def)2.524 E(ault\),)-.1 E F3
+(-bs)2.524 E F1 2.524(,a)C(nd)-2.524 E F3(-t)2.524 E F1(it)2.524 E(is)
+144 241.2 Q F2(submit.cf)2.5 E F1(if it e)2.5 E
+(xists, for all others it is)-.15 E F2(sendmail.cf)2.5 E F1(.)A<ad62>72
+257.4 Q F2(x)A F1(Set operation mode to)56.92 E F2(x)2.5 E F1 5(.O)C
+(peration modes are:)-5 E 12.22(mD)184 273.6 S(eli)-12.22 E -.15(ve)-.25
+G 2.5(rm).15 G(ail \(def)-2.5 E(ault\))-.1 E 16.11(sS)184 285.6 S
+(peak SMTP on input side)-16.11 E 8.06(a\207 `)184 297.6 R -.8(`A)-.74 G
+(rpanet').8 E 2.5('m)-.74 G(ode \(get en)-2.5 E -.15(ve)-.4 G
+(lope sender information from header\)).15 E 15(dR)184 309.6 S
+(un as a daemon in background)-15 E 12.78(DR)184 321.6 S
+(un as a daemon in fore)-12.78 E(ground)-.15 E 17.22(tR)184 333.6 S
+(un in test mode)-17.22 E 15(vJ)184 345.6 S(ust v)-15 E
+(erify addresses, don')-.15 E 2.5(tc)-.18 G(ollect or deli)-2.5 E -.15
+(ve)-.25 G(r).15 E 17.22(iI)184 357.6 S(nitialize the alias database)
+-17.22 E 15(pP)184 369.6 S(rint the mail queue)-15 E 14.44(PP)184 381.6
+S(rint o)-14.44 E -.15(ve)-.15 G(rvie).15 E 2.5(wo)-.25 G -.15(ve)-2.65
+G 2.5(rt).15 G(he mail queue \(requires shared memory\))-2.5 E 15(hP)184
+393.6 S(rint the persistent host status database)-15 E 12.78(HP)184
+405.6 S(ur)-12.78 E(ge e)-.18 E
+(xpired entries from the persistent host status database)-.15 E<ad42>72
+426 Q F2(type)A F1(Indicate body type.)43.03 E<ad43>72 442.2 Q F2
+(\214le)A F1 .946(Use a dif)47.47 F .946(ferent con\214guration \214le.)
+-.25 F F2(Sendmail)5.946 E F1 .946(runs as the in)3.446 F -.2(vo)-.4 G
+.946(king user \(rather than root\)).2 F
+(when this \215ag is speci\214ed.)144 454.2 Q<ad44>72 470.4 Q F2(lo)2.5
+E(g\214le)-.1 E F1(Send deb)31.74 E(ugging output to the indicated)-.2 E
+F2(lo)2.5 E(g\214le)-.1 E F1(instead of stdout.)2.5 E<ad64>72 486.6 Q F2
+(le)A(vel)-.15 E F1(Set deb)42.63 E(ugging le)-.2 E -.15(ve)-.25 G(l.)
+.15 E<ad66>72 502.8 Q F2(addr)2.5 E F1 .628(The en)41.64 F -.15(ve)-.4 G
+.628(lope sender address is set to).15 F F2(addr)3.128 E F1 5.628(.T)C
+.627(his address may also be used in the From:)-5.628 F .152
+(header if that header is missing during initial submission.)144 514.8 R
+.153(The en)5.152 F -.15(ve)-.4 G .153(lope sender address is).15 F
+1.263(used as the recipient for deli)144 526.8 R -.15(ve)-.25 G 1.263
+(ry status noti\214cations and may also appear in a Return-).15 F -.15
+(Pa)144 538.8 S(th: header).15 E(.)-.55 E<ad46>72 555 Q F2(name)2.5 E F1
+(Sets the full name of this user to)36.64 E F2(name)2.5 E F1(.)A 56.64
+(\255G When)72 571.2 R 1.176
+(accepting messages via the command line, indicate that the)3.676 F
+3.676(ya)-.15 G 1.177(re for relay \(g)-3.676 F(ate-)-.05 E -.1(wa)144
+583.2 S 2.216(y\) submission.).1 F 2.216
+(sendmail may complain about syntactically in)7.216 F -.25(va)-.4 G
+2.215(lid messages, e.g.,).25 F .037(unquali\214ed host names, rather t\
+han \214xing them when this \215ag is set.)144 595.2 R .038
+(sendmail will not do)5.038 F(an)144 607.2 Q 2.5(yc)-.15 G
+(anonicalization in this mode.)-2.5 E<ad68>72 623.4 Q F2(cnt)2.5 E F1
+.726(Sets the \231hop count\232 to)46.64 F F2(cnt)3.226 E F1 5.725(.T)C
+.725(his represents the number of times this message has been)-5.725 F
+.02(processed by)144 635.4 R F2(sendmail)2.52 E F1 .02(\(to the e)2.52 F
+.02(xtent that it is supported by the underlying netw)-.15 F(orks\).)-.1
+E F2(Cnt)5.02 E F1 1.521(is incremented during processing, and if it re\
+aches MAXHOP \(currently 25\))144 647.4 R F2(sendmail)4.02 E F1(thro)144
+659.4 Q(ws a)-.25 E -.1(wa)-.15 G 2.5(yt).1 G(he message with an error)
+-2.5 E(.)-.55 E .32 LW 76 680.4 72 680.4 DL 80 680.4 76 680.4 DL 84
+680.4 80 680.4 DL 88 680.4 84 680.4 DL 92 680.4 88 680.4 DL 96 680.4 92
+680.4 DL 100 680.4 96 680.4 DL 104 680.4 100 680.4 DL 108 680.4 104
+680.4 DL 112 680.4 108 680.4 DL 116 680.4 112 680.4 DL 120 680.4 116
+680.4 DL 124 680.4 120 680.4 DL 128 680.4 124 680.4 DL 132 680.4 128
+680.4 DL 136 680.4 132 680.4 DL 140 680.4 136 680.4 DL 144 680.4 140
+680.4 DL 148 680.4 144 680.4 DL 152 680.4 148 680.4 DL 156 680.4 152
+680.4 DL 160 680.4 156 680.4 DL 164 680.4 160 680.4 DL 168 680.4 164
+680.4 DL 172 680.4 168 680.4 DL 176 680.4 172 680.4 DL 180 680.4 176
+680.4 DL 184 680.4 180 680.4 DL 188 680.4 184 680.4 DL 192 680.4 188
+680.4 DL 196 680.4 192 680.4 DL 200 680.4 196 680.4 DL 204 680.4 200
+680.4 DL 208 680.4 204 680.4 DL 212 680.4 208 680.4 DL 216 680.4 212
+680.4 DL/F4 8/Times-Roman@0 SF(\207Deprecated.)93.6 692.4 Q F3
+(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-101)190.86 E
+0 Cg EP
+%%Page: 102 98
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 188.36(SMM:08-102 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF<ad4c>72
+96 Q/F2 10/Times-Italic@0 SF(ta)2.5 E(g)-.1 E F1 1.482
+(Sets the identi\214er used for syslog.)45.07 F 1.483
+(Note that this identi\214er is set as early as possible.)6.483 F(Ho)144
+108 Q(we)-.25 E -.15(ve)-.25 G -.4(r,).15 G F2(sendmail)2.916 E F1 .015
+(may be used if problems arise before the command line ar)2.516 F .015
+(guments are)-.18 F(processed.)144 120 Q 58.86(\255n Don')72 136.2 R 2.5
+(td)-.18 G 2.5(oa)-2.5 G(liasing or forw)-2.5 E(arding.)-.1 E<ad4e>72
+152.4 Q F2(noti\214cations)2.5 E F1 -.8(Ta)7.19 G 3.127(ga).8 G .627
+(ll addresses being sent as w)-3.127 F .628(anting the indicated)-.1 F
+F2(noti\214cations)3.128 E F1 3.128(,w)C .628(hich consists of the)
+-3.128 F -.1(wo)144 164.4 S .474
+(rd \231NEVER\232 or a comma-separated list of \231SUCCESS\232, \231F).1
+F .474(AILURE\232, and \231DELA)-.74 F<599a>-1.05 E .86
+(for successful deli)144 176.4 R -.15(ve)-.25 G(ry).15 E 3.36(,f)-.65 G
+.86(ailure, and a message that is stuck in a queue some)-3.46 F 3.36
+(where. The)-.25 F(def)144 188.4 Q(ault is \231F)-.1 E(AILURE,DELA)-.74
+E(Y\232.)-1.05 E<ad72>72 204.6 Q F2(addr)2.5 E F1(An obsolete form of)
+41.64 E F0<ad66>2.5 E F1(.)A<ad6f>72 220.8 Q F2 1.666(xv)C(alue)-1.666 E
+F1(Set option)33.594 E F2(x)2.5 E F1(to the speci\214ed)2.5 E F2(value)
+2.5 E F1 5(.T)C(hese options are described in Section 5.6.)-5 E<ad4f>72
+237 Q F2(option)A F0(=)A F2(value)A F1(Set)6.22 E F2(option)5.174 E F1
+2.674(to the speci\214ed)5.174 F F2(value)5.174 E F1 2.674
+(\(for long form option names\).)5.174 F 2.673(These options are)7.674 F
+(described in Section 5.6.)144 249 Q<ad4d>72 265.2 Q F2 1.666(xv)C(alue)
+-1.666 E F1(Set macro)29.704 E F2(x)2.5 E F1(to the speci\214ed)2.5 E F2
+(value)2.5 E F1(.)A<ad70>72 281.4 Q F2(pr)A(otocol)-.45 E F1 .4
+(Set the sending protocol.)27.92 F .401
+(Programs are encouraged to set this.)5.4 F .401
+(The protocol \214eld can be)5.401 F .115(in the form)144 293.4 R F2(pr)
+2.615 E(otocol)-.45 E F0(:)A F2(host)A F1 .114
+(to set both the sending protocol and sending host.)2.615 F -.15(Fo)
+5.114 G 2.614(re).15 G(xample,)-2.764 E 2.147(\231\255pUUCP:uunet\232 s\
+ets the sending protocol to UUCP and the sending host to uunet.)144
+305.4 R .974(\(Some e)144 317.4 R .974
+(xisting programs use \255oM to set the r and s macros; this is equi)
+-.15 F -.25(va)-.25 G .973(lent to using).25 F(\255p.\))144 329.4 Q
+<ad71>72 345.6 Q F2(time)A F1 -.35(Tr)44.14 G 2.775(yt).35 G 2.775(op)
+-2.775 G .275(rocess the queued up mail.)-2.775 F .276
+(If the time is gi)5.275 F -.15(ve)-.25 G .276(n, a).15 F F2(sendmail)
+2.776 E F1 .276(will start one or more)2.776 F .011
+(processes to run through the queue\(s\) at the speci\214ed time interv)
+144 357.6 R .01(al to deli)-.25 F -.15(ve)-.25 G 2.51(rq).15 G .01
+(ueued mail;)-2.51 F .905(otherwise, it only runs once.)144 369.6 R .906
+(Each of these processes acts on a w)5.906 F 3.406(orkgroup. These)-.1 F
+(pro-)3.406 E .96(cesses are also kno)144 381.6 R .959(wn as w)-.25 F
+.959(orkgroup processes or WGP')-.1 F 3.459(sf)-.55 G .959(or short.)
+-3.459 F .959(Each w)5.959 F .959(orkgroup is)-.1 F .522
+(responsible for controlling the processing of one or more queues; w)144
+393.6 R .523(orkgroups help man-)-.1 F 1.268
+(age the use of system resources by sendmail.)144 405.6 R 1.268(Each w)
+6.268 F 1.268(orkgroup may ha)-.1 F 1.568 -.15(ve o)-.2 H 1.267
+(ne or more).15 F .357
+(children concurrently processing queues depending on the setting of)144
+417.6 R F2(MaxQueueChildr)2.857 E(en)-.37 E F1(.)A(\255qp)72 433.8 Q F2
+(time)A F1 1.175(Similar to \255q with a time ar)39.14 F 1.175
+(gument, e)-.18 F 1.174
+(xcept that instead of periodically starting WGP')-.15 F(s)-.55 E .7
+(sendmail starts persistent WGP')144 445.8 R 3.2(st)-.55 G .7
+(hat alternate between processing queues and sleeping.)-3.2 F 1.123
+(The sleep time is speci\214ed by the time ar)144 457.8 R 1.123
+(gument; it def)-.18 F 1.123(aults to 1 second, e)-.1 F 1.123
+(xcept that a)-.15 F 1.293(WGP al)144 469.8 R -.1(wa)-.1 G 1.293
+(ys sleeps at least 5 seconds if their queues were empty in the pre).1 F
+1.294(vious run.)-.25 F .139
+(Persistent processes are managed by a queue control process \(QCP\).)
+144 481.8 R .138(The QCP is the par)5.138 F(-)-.2 E .179
+(ent process of the WGP')144 493.8 R 2.679(s. T)-.55 F .179
+(ypically the QCP will be the sendmail daemon \(when started)-.8 F .424
+(with \255bd or \255bD\) or a special process \(named Queue control\) \
+\(when started without \255bd)144 505.8 R .719(or \255bD\).)144 517.8 R
+.719(If a persistent WGP ceases to be acti)5.719 F 1.019 -.15(ve f)-.25
+H .72(or some reason another WGP will be).15 F .862
+(started by the QCP for the same w)144 529.8 R .862
+(orkgroup in most cases. When a persistent WGP has)-.1 F 1.007
+(core dumped, the deb)144 541.8 R 1.007(ug \215ag)-.2 F F2(no_per)3.507
+E(sistent_r)-.1 E(estart)-.37 E F1 1.008
+(is set or the speci\214c persistent WGP)3.507 F .677
+(has been restarted too man)144 553.8 R 3.176(yt)-.15 G .676
+(imes already then the WGP will not be started ag)-3.176 F .676
+(ain and a)-.05 F .875(message will be logged to this ef)144 565.8 R
+3.375(fect. T)-.25 F 3.375(os)-.8 G .876
+(top \(SIGTERM\) or restart \(SIGHUP\) persis-)-3.375 F .116(tent WGP')
+144 577.8 R 2.616(st)-.55 G .116
+(he appropriate signal should be sent to the QCP)-2.616 F 2.616(.T)-1.11
+G .116(he QCP will propag)-2.616 F .116(ate the)-.05 F
+(signal to all of the WGP')144 589.8 Q 2.5(sa)-.55 G
+(nd if appropriate restart the persistent WGP')-2.5 E(s.)-.55 E<ad71>72
+606 Q F2(Gname)A F1(Run the jobs in the queue group)32.48 E F2(name)2.5
+E F1(once.)2.5 E(\255q[!])72 622.2 Q F2(Xstring)A F1 .312
+(Run the queue once, limiting the jobs to those matching)21.92 F F2
+(Xstring)2.813 E F1 5.313(.T)C .313(he k)-5.313 F .613 -.15(ey l)-.1 H
+(etter).15 E F2(X)2.813 E F1 .313(can be)2.813 F F0(I)144 634.2 Q F1
+1.347(to limit based on queue identi\214er)3.848 F(,)-.4 E F0(R)3.847 E
+F1 1.347(to limit based on recipient,)3.847 F F0(S)3.847 E F1 1.347
+(to limit based on)3.847 F(sender)144 646.2 Q 4.757(,o)-.4 G(r)-4.757 E
+F0(Q)4.757 E F1 2.258
+(to limit based on quarantine reason for quarantined jobs.)4.757 F 4.758
+(Ap)7.258 G(articular)-4.758 E .062
+(queued job is accepted if one of the corresponding attrib)144 658.2 R
+.062(utes contains the indicated)-.2 F F2(string)2.562 E F1(.)A .778
+(The optional ! character ne)144 670.2 R -.05(ga)-.15 G .778
+(tes the condition tested.).05 F(Multiple)5.778 E F2(\255qX)3.279 E F1
+.779(\215ags are permitted,)3.279 F .622(with items with the same k)144
+682.2 R .922 -.15(ey l)-.1 H .622(etter \231or'ed\232 together).15 F
+3.122(,a)-.4 G .622(nd items with dif)-3.122 F .622(ferent k)-.25 F .922
+-.15(ey l)-.1 H(etters).15 E(\231and'ed\232 together)144 694.2 Q(.)-.55
+E 23.88(\255Q[reason] Quarantine)72 710.4 R 4.689(an)4.689 G 2.189
+(ormal queue items with the gi)-4.689 F -.15(ve)-.25 G 4.689(nr).15 G
+2.189(eason or unquarantine quarantined)-4.689 F 1.797
+(queue items if no reason is gi)144 722.4 R -.15(ve)-.25 G 4.297
+(n. This).15 F 1.797(should only be used with some sort of item)4.297 F
+0 Cg EP
+%%Page: 103 99
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-103)190.86 E/F1 10/Times-Roman@0 SF(matching using)144 96 Q F0
+(\255q[!])2.5 E/F2 10/Times-Italic@0 SF(Xstring)A F1(as described abo)
+2.5 E -.15(ve)-.15 G(.).15 E(\255R ret)72 112.2 Q 1.687
+(What information you w)46.64 F 1.687
+(ant returned if the message bounces;)-.1 F F2 -.37(re)4.187 G(t).37 E
+F1 1.687(can be \231HDRS\232 for)4.187 F .878
+(headers only or \231FULL\232 for headers plus body)144 124.2 R 5.878
+(.T)-.65 G .877(his is a request only; the other end is)-5.878 F 1.308
+(not required to honor the parameter)144 136.2 R 6.308(.I)-.55 G 3.808
+<6699>-6.308 G 1.309(HDRS\232 is speci\214ed local bounces also return)
+-3.808 F(only the headers.)144 148.2 Q 61.08(\255t Read)72 164.4 R .752
+(the header for \231T)3.252 F .752
+(o:\232, \231Cc:\232, and \231Bcc:\232 lines, and send to e)-.8 F -.15
+(ve)-.25 G .752(ryone listed in those).15 F 2.539(lists. The)144 176.4 R
+.039(\231Bcc:\232 line will be deleted before sending.)2.539 F(An)5.039
+E 2.539(ya)-.15 G .04(ddresses in the ar)-2.539 F .04(gument v)-.18 F
+(ec-)-.15 E(tor will be deleted from the send list.)144 188.4 Q
+(\255V en)72 204.6 Q 32.32(vid The)-.4 F(indicated)3.18 E F2(en)3.18 E
+(vid)-.4 E F1 .68(is passed with the en)3.18 F -.15(ve)-.4 G .679
+(lope of the message and returned if the mes-).15 F(sage bounces.)144
+216.6 Q<ad58>72 232.8 Q F2(lo)2.5 E(g\214le)-.1 E F1 .724(Log all traf)
+31.74 F .724(\214c in and out of)-.25 F F2(sendmail)3.225 E F1 .725
+(in the indicated)3.225 F F2(lo)3.225 E(g\214le)-.1 E F1 .725(for deb)
+3.225 F .725(ugging mailer prob-)-.2 F 2.5(lems. This)144 244.8 R
+(produces a lot of data v)2.5 E
+(ery quickly and should be used sparingly)-.15 E(.)-.65 E .638
+(There are a number of options that may be speci\214ed as primiti)97 261
+R .937 -.15(ve \215)-.25 H 3.137(ags. These).15 F .637
+(are the e, i, m, and v)3.137 F 3.784(options. Also,)72 273 R 1.284
+(the f option may be speci\214ed as the)3.784 F F0<ad73>3.784 E F1 3.785
+(\215ag. The)3.785 F 1.285
+(DSN related options \231\255N\232, \231\255R\232, and)3.785 F
+<99ad569a206861>72 285 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G
+(ects on).25 E F2(sendmail)2.5 E F1(running as daemon.)2.5 E 0 Cg EP
+%%Page: 104 100
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF 3(APPENDIX B)250.002 98.4 R -.12(QU)220.29 141.6
+S(EUE FILE FORMA).12 E(TS)-1.14 E/F1 10/Times-Roman@0 SF .102
+(This appendix describes the format of the queue \214les.)97 201 R .102
+(These \214les li)5.102 F .402 -.15(ve i)-.25 H 2.602(na).15 G .101
+(queue directory)-.001 F 5.101(.T)-.65 G .101(he indi-)-5.101 F .331
+(vidual qf, hf, Qf, df, and xf \214les may be stored in separate)72 213
+R/F2 10/Times-Italic@0 SF(qf/)2.831 E F1(,)A F2(df/)2.831 E F1 2.831(,a)
+C(nd)-2.831 E F2(xf/)2.831 E F1 .331(subdirectories if the)2.831 F 2.831
+(ya)-.15 G .331(re present)-2.831 F(in the queue directory)72 225 Q(.)
+-.65 E .924(All queue \214les ha)97 241.2 R 1.224 -.15(ve t)-.2 H .924
+(he name).15 F F2(ttYMDhmsNNppppp)3.424 E F1(where)3.424 E F2
+(YMDhmsNNppppp)3.424 E F1 .923(is the)3.423 F F2(id)3.423 E F1 .923
+(for this mes-)3.423 F(sage and the)72 253.2 Q F2(tt)2.5 E F1
+(is a type.)2.5 E(The indi)5 E(vidual letters in the)-.25 E F2(id)2.5 E
+F1(are:)2.5 E 28.78(YE)72 269.4 S(ncoded year)-28.78 E 27.11(ME)72 285.6
+S(ncoded month)-27.11 E 28.78(DE)72 301.8 S(ncoded day)-28.78 E 31(hE)72
+318 S(ncoded hour)-31 E 28.22(mE)72 334.2 S(ncoded minute)-28.22 E 32.11
+(sE)72 350.4 S(ncoded second)-32.11 E 19.06(NN Encoded)72 366.6 R(en)2.5
+E -.15(ve)-.4 G(lope number).15 E 8.5(ppppp At)72 382.8 R(least \214v)
+2.5 E 2.5(ed)-.15 G(ecimal digits of the process ID)-2.5 E .477
+(All \214les with the same id collecti)97 399 R -.15(ve)-.25 G .477
+(ly de\214ne one message.).15 F .477(Due to the use of memory-b)5.477 F
+(uf)-.2 E .477(fered \214les,)-.25 F(some of these \214les may ne)72 411
+Q -.15(ve)-.25 G 2.5(ra).15 G(ppear on disk.)-2.5 E(The types are:)97
+427.2 Q 25.17(qf The)72 443.4 R(queue control \214le.)2.5 E
+(This \214le contains the information necessary to process the job)5 E
+(.)-.4 E 25.17(hf The)72 459.6 R(same as a queue control \214le, b)2.5 E
+(ut for a quarantined queue job)-.2 E(.)-.4 E 25.17(df The)72 475.8 R
+.452(data \214le.)2.952 F .452(The message body \(e)5.452 F .452
+(xcluding the header\) is k)-.15 F .452(ept in this \214le.)-.1 F .451
+(Sometimes the df \214le)5.451 F .183(is not stored in the same directo\
+ry as the qf \214le; in this case, the qf \214le contains a `d' record \
+which)108 487.8 R
+(names the queue directory that contains the df \214le.)108 499.8 Q
+27.39(tf A)72 516 R .046(temporary \214le.)2.546 F .046
+(This is an image of the)5.046 F/F3 10/Times-Bold@0 SF(qf)2.546 E F1
+.046(\214le when it is being reb)2.546 F 2.545(uilt. It)-.2 F .045
+(should be renamed to a)2.545 F F3(qf)108 528 Q F1(\214le v)2.5 E
+(ery quickly)-.15 E(.)-.65 E 25.17(xf A)72 544.2 R .566
+(transcript \214le, e)3.066 F .567
+(xisting during the life of a session sho)-.15 F .567(wing e)-.25 F -.15
+(ve)-.25 G .567(rything that happens during that).15 F 3.122
+(session. Sometimes)108 556.2 R .622(the xf \214le must be generated be\
+fore a queue group has been selected; in this)3.122 F
+(case, the xf \214le will be stored in a directory of the def)108 568.2
+Q(ault queue group.)-.1 E 22.95(Qf A)72 584.4 R -.74(``)3.278 G(lost')
+.74 E 3.278('q)-.74 G .778(ueue control \214le.)-3.278 F F2(sendmail)
+5.778 E F1 .778(renames a)3.278 F F3(qf)3.278 E F1 .778(\214le to)3.278
+F F3(Qf)3.278 E F1 .779(if there is a se)3.278 F -.15(ve)-.25 G .779
+(re \(con\214guration\)).15 F .256(problem that cannot be solv)108 596.4
+R .256(ed without human interv)-.15 F 2.756(ention. Search)-.15 F .256
+(the log\214le for the queue \214le id)2.756 F .052
+(to \214gure out what happened.)108 608.4 R .052(After you resolv)5.052
+F .052(ed the problem, you can rename the)-.15 F F3(Qf)2.552 E F1 .053
+(\214le to)2.553 F F3(qf)2.553 E F1(and)2.553 E(send it ag)108 620.4 Q
+(ain.)-.05 E .741
+(The queue control \214le is structured as a series of lines each be)97
+636.6 R .74(ginning with a code letter)-.15 F 5.74(.T)-.55 G .74
+(he lines)-5.74 F(are as follo)72 648.6 Q(ws:)-.25 E 28.78(VT)72 664.8 S
+.819(he v)-28.78 F .819
+(ersion number of the queue \214le format, used to allo)-.15 F 3.32(wn)
+-.25 G -.25(ew)-3.32 G F2(sendmail)3.57 E F1 .82(binaries to read queue)
+3.32 F .004(\214les created by older v)108 676.8 R 2.504(ersions. Def)
+-.15 F .004(aults to v)-.1 F .004(ersion zero.)-.15 F .004
+(Must be the \214rst line of the \214le if present.)5.004 F -.15(Fo)108
+688.8 S 2.5(r8).15 G(.12 the v)-2.5 E(ersion number is 6.)-.15 E 28.78
+(AT)72 705 S 1.175(he information gi)-28.78 F -.15(ve)-.25 G 3.675(nb)
+.15 G 3.675(yt)-3.675 G 1.175(he A)-3.675 F 1.175
+(UTH= parameter of the \231MAIL FR)-.55 F 1.175
+(OM:\232 command or $f@$j if)-.4 F(sendmail has been called directly)108
+717 Q(.)-.65 E F3 188.36(SMM:08-104 Sendmail)72 756 R
+(Installation and Operation Guide)2.5 E 0 Cg EP
+%%Page: 105 101
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-105)190.86 E/F1 10/Times-Roman@0 SF 28.78(HA)72 96 S .33
+(header de\214nition.)-25.95 F .33(There may be an)5.33 F 2.829(yn)-.15
+G .329(umber of these lines.)-2.829 F .329(The order is important: the)
+5.329 F 2.829(yr)-.15 G(epre-)-2.829 E .046
+(sent the order in the \214nal message.)108 108 R .046
+(These use the same syntax as header de\214nitions in the con\214gu-)
+5.046 F(ration \214le.)108 120 Q 29.33(CT)72 136.2 S .575
+(he controlling address.)-29.33 F .575
+(The syntax is \231localuser:aliasname\232.)5.575 F .575
+(Recipient addresses follo)5.575 F .575(wing this)-.25 F 2.814
+(line will be \215agged so that deli)108 148.2 R -.15(ve)-.25 G 2.814
+(ries will be run as the).15 F/F2 10/Times-Italic@0 SF(localuser)5.314 E
+F1 2.814(\(a user name from the)5.314 F .562(/etc/passwd \214le\);)108
+160.2 R F2(aliasname)3.062 E F1 .561(is the name of the alias that e)
+3.062 F .561(xpanded to this address \(used for print-)-.15 F
+(ing messages\).)108 172.2 Q 31(qT)72 188.4 S
+(he quarantine reason for quarantined queue items.)-31 E 28.78(QT)72
+204.6 S .797(he `)-28.78 F .797(`original recipient')-.74 F .798
+(', speci\214ed by the ORCPT= \214eld in an ESMTP transaction.)-.74 F
+.798(Used e)5.798 F(xclu-)-.15 E(si)108 216.6 Q -.15(ve)-.25 G
+(ly for Deli).15 E -.15(ve)-.25 G(ry Status Noti\214cations.).15 E
+(It applies only to the follo)5 E(wing `R' line.)-.25 E 32.67(rT)72
+232.8 S .783(he `)-32.67 F .783(`\214nal recipient')-.74 F 3.282('u)-.74
+G .782(sed for Deli)-3.282 F -.15(ve)-.25 G .782
+(ry Status Noti\214cations.).15 F .782(It applies only to the follo)
+5.782 F .782(wing `R')-.25 F(line.)108 244.8 Q 29.33(RA)72 261 S .705
+(recipient address.)-26.125 F .705
+(This will normally be completely aliased, b)5.705 F .705
+(ut is actually realiased when the)-.2 F .493(job is processed.)108 273
+R .492(There will be one line for each recipient.)5.493 F -1.11(Ve)5.492
+G .492(rsion 1 qf \214les also include a lead-)1.11 F .689(ing colon-te\
+rminated list of \215ags, which can be `S' to return a message on succe\
+ssful \214nal deli)108 285 R(v-)-.25 E(ery)108 297 Q 3.328(,`)-.65 G
+.828(F' to return a message on f)-3.328 F .828
+(ailure, `D' to return a message if the message is delayed, `B' to)-.1 F
+.94(indicate that the body should be returned, `N' to suppress returnin\
+g the body)108 309 R 3.441(,a)-.65 G .941(nd `P' to declare)-3.441 F
+(this as a `)108 321 Q(`primary')-.74 E 2.5('\()-.74 G
+(command line or SMTP-session\) address.)-2.5 E 30.44(ST)72 337.2 S
+(he sender address.)-30.44 E(There may only be one of these lines.)5 E
+29.89(TT)72 353.4 S(he job creation time.)-29.89 E
+(This is used to compute when to time out the job)5 E(.)-.4 E 30.44(PT)
+72 369.6 S .114(he current message priority)-30.44 F 5.114(.T)-.65 G
+.113(his is used to order the queue.)-5.114 F .113
+(Higher numbers mean lo)5.113 F .113(wer priori-)-.25 F 3.676(ties. The)
+108 381.6 R 1.176(priority changes as the message sits in the queue.)
+3.676 F 1.177(The initial priority depends on the)6.176 F
+(message class and the size of the message.)108 393.6 Q 27.11(MA)72
+409.8 S 2.704(message. This)-24.406 F .204(line is printed by the)2.704
+F F2(mailq)2.704 E F1 .203
+(command, and is generally used to store status infor)2.704 F(-)-.2 E
+2.5(mation. It)108 421.8 R(can contain an)2.5 E 2.5(yt)-.15 G -.15(ex)
+-2.5 G(t.).15 E 30.44(FF)72 438 S .043
+(lag bits, represented as one letter per \215ag.)-30.44 F .043
+(De\214ned \215ag bits are)5.043 F F0(r)2.543 E F1 .044
+(indicating that this is a response)2.544 F .143(message and)108 450 R
+F0(w)2.643 E F1 .143(indicating that a w)2.643 F .142
+(arning message has been sent announcing that the mail has been)-.1 F
+2.513(delayed. Other)108 462 R .013(\215ag bits are:)2.513 F F0(8)2.513
+E F1 2.513(:t)C .013(he body contains 8bit data,)-2.513 F F0(b)2.513 E
+F1 -5.012 2.513(:a B)D .014(cc: header should be remo)-2.513 F -.15(ve)
+-.15 G(d,).15 E F0(d)2.514 E F1(:)A .552
+(the mail has RET parameters \(see RFC 1894\),)108 474 R F0(n)3.052 E F1
+3.052(:t)C .552(he body of the message should not be returned)-3.052 F
+(in case of an error)108 486 Q(,)-.4 E F0(s)2.5 E F1 2.5(:t)C(he en)-2.5
+E -.15(ve)-.4 G(lope has been split.).15 E 28.78(NT)72 502.2 S
+(he total number of deli)-28.78 E -.15(ve)-.25 G(ry attempts.).15 E
+28.78(KT)72 518.4 S
+(he time \(as seconds since January 1, 1970\) of the last deli)-28.78 E
+-.15(ve)-.25 G(ry attempt.).15 E 31(dI)72 534.6 S 3.15(ft)-31 G .65
+(he df \214le is in a dif)-3.15 F .65(ferent directory than the qf \214\
+le, then a `d' record is present, specifying the)-.25 F
+(directory in which the df \214le resides.)108 546.6 Q 32.67(IT)72 562.8
+S .725(he i-number of the data \214le; this can be used to reco)-32.67 F
+-.15(ve)-.15 G 3.224(ry).15 G .724
+(our mail queue after a disastrous disk)-3.224 F(crash.)108 574.8 Q 31
+($A)72 591 S(macro de\214nition.)-28.5 E(The v)5 E
+(alues of certain macros are passed through to the queue run phase.)-.25
+E 29.33(BT)72 607.2 S .924(he body type.)-29.33 F .925
+(The remainder of the line is a te)5.924 F .925
+(xt string de\214ning the body type.)-.15 F .925(If this \214eld is)
+5.925 F .009(missing, the body type is assumed to be \231unde\214ned\
+\232 and no special processing is attempted.)108 619.2 R(Le)5.008 E -.05
+(ga)-.15 G(l).05 E -.25(va)108 631.2 S
+(lues are \2317BIT\232 and \2318BITMIME\232.).25 E 29.89(ZT)72 647.4 S
+(he original en)-29.89 E -.15(ve)-.4 G
+(lope id \(from the ESMTP transaction\).).15 E -.15(Fo)5 G 2.5(rD).15 G
+(eli)-2.5 E -.15(ve)-.25 G 2.5(rS).15 G(tatus Noti\214cations only)-2.5
+E(.)-.65 E 4.072(As an e)97 663.6 R 4.072(xample, the follo)-.15 F 4.073
+(wing is a queue \214le sent to \231eric@mammoth.Berk)-.25 F(ele)-.1 E
+-.65(y.)-.15 G 4.073(EDU\232 and).65 F 0 Cg EP
+%%Page: 106 102
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 188.36(SMM:08-106 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(\231bostic@ok)72 98 Q(eef)-.1 E(fe.CS.Berk)-.25 E(ele)-.1 E -.65(y.)
+-.15 G(EDU\232).65 E/F2 7/Times-Roman@0 SF(1)-4 I F1(:)4 I(V4)112 114.2
+Q(T711358135)112 126.2 Q(K904446490)112 138.2 Q(N0)112 150.2 Q(P2100941)
+112 162.2 Q($_eric@localhost)112 174.2 Q(${daemon_\215ags})112 186.2 Q
+(Seric)112 198.2 Q(Ceric:100:1000:sendmail@v)112 210.2 Q(angogh.CS.Berk)
+-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(RPFD:eric@mammoth.Berk)112
+222.2 Q(ele)-.1 E -.65(y.)-.15 G(EDU).65 E(RPFD:bostic@ok)112 234.2 Q
+(eef)-.1 E(fe.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G(EDU).65 E
+(H?P?Return-path: <^g>)112 246.2 Q(H??Recei)112 258.2 Q -.15(ve)-.25 G
+(d: by v).15 E(angogh.CS.Berk)-.25 E(ele)-.1 E -.65(y.)-.15 G
+(EDU \(5.108/2.7\) id AAA06703;).65 E(Fri, 17 Jul 1992 00:28:55 -0700)
+132 270.2 Q(H??Recei)112 282.2 Q -.15(ve)-.25 G(d: from mail.CS.Berk).15
+E(ele)-.1 E -.65(y.)-.15 G(EDU by v).65 E(angogh.CS.Berk)-.25 E(ele)-.1
+E -.65(y.)-.15 G(EDU \(5.108/2.7\)).65 E
+(id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700)132 294.2 Q(H??Recei)112
+306.2 Q -.15(ve)-.25 G(d: from [128.32.31.21] by mail.CS.Berk).15 E(ele)
+-.1 E -.65(y.)-.15 G(EDU \(5.96/2.5\)).65 E
+(id AA22777; Fri, 17 Jul 1992 03:29:14 -0400)132 318.2 Q(H??Recei)112
+330.2 Q -.15(ve)-.25 G(d: by foo.bar).15 E(.baz.de \(5.57/Ultrix3.0-C\))
+-.55 E(id AA22757; Fri, 17 Jul 1992 09:31:25 GMT)132 342.2 Q
+(H?F?From: eric@foo.bar)112 354.2 Q(.baz.de \(Eric Allman\))-.55 E
+(H?x?Full-name: Eric Allman)112 366.2 Q
+(H??Message-id: <9207170931.AA22757@foo.bar)112 378.2 Q(.baz.de>)-.55 E
+(H??T)112 390.2 Q(o: sendmail@v)-.8 E(angogh.CS.Berk)-.25 E(ele)-.1 E
+-.65(y.)-.15 G(EDU).65 E(H??Subject: this is an e)112 402.2 Q
+(xample message)-.15 E .657(This sho)72 418.4 R .658(ws the person who \
+sent the message, the submission time \(in seconds since January 1, 197\
+0\), the)-.25 F(message priority)72 430.4 Q 2.5(,t)-.65 G
+(he message class, the recipients, and the headers for the message.)-2.5
+E .32 LW 76 678.8 72 678.8 DL 80 678.8 76 678.8 DL 84 678.8 80 678.8 DL
+88 678.8 84 678.8 DL 92 678.8 88 678.8 DL 96 678.8 92 678.8 DL 100 678.8
+96 678.8 DL 104 678.8 100 678.8 DL 108 678.8 104 678.8 DL 112 678.8 108
+678.8 DL 116 678.8 112 678.8 DL 120 678.8 116 678.8 DL 124 678.8 120
+678.8 DL 128 678.8 124 678.8 DL 132 678.8 128 678.8 DL 136 678.8 132
+678.8 DL 140 678.8 136 678.8 DL 144 678.8 140 678.8 DL 148 678.8 144
+678.8 DL 152 678.8 148 678.8 DL 156 678.8 152 678.8 DL 160 678.8 156
+678.8 DL 164 678.8 160 678.8 DL 168 678.8 164 678.8 DL 172 678.8 168
+678.8 DL 176 678.8 172 678.8 DL 180 678.8 176 678.8 DL 184 678.8 180
+678.8 DL 188 678.8 184 678.8 DL 192 678.8 188 678.8 DL 196 678.8 192
+678.8 DL 200 678.8 196 678.8 DL 204 678.8 200 678.8 DL 208 678.8 204
+678.8 DL 212 678.8 208 678.8 DL 216 678.8 212 678.8 DL/F3 5
+/Times-Roman@0 SF(1)93.6 689.2 Q/F4 8/Times-Roman@0 SF .719(This e)3.2 J
+.719(xample is contri)-.12 F -.12(ve)-.2 G 2.719(da).12 G .719
+(nd probably inaccurate for your en)-2.719 F 2.719(vironment. Glance)
+-.32 F -.12(ove)2.718 G 2.718(ri).12 G 2.718(tt)-2.718 G 2.718(og)-2.718
+G .718(et an idea; nothing can replace)-2.718 F(looking at what your o)
+72 702 Q(wn system generates.)-.2 E 0 Cg EP
+%%Page: 107 103
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 12/Times-Bold@0 SF 3(APPENDIX C)249.672 98.4 R(SUMMAR)198.282 141.6
+Q 3(YO)-.42 G 3(FS)-3 G(UPPOR)-3 E 3(TF)-.48 G(ILES)-3 E/F1 10
+/Times-Roman@0 SF 1.52(This is a summary of the support \214les that)97
+201 R/F2 10/Times-Italic@0 SF(sendmail)4.019 E F1 1.519
+(creates or generates.)4.019 F(Man)6.519 E 4.019(yo)-.15 G 4.019(ft)
+-4.019 G 1.519(hese can be)-4.019 F(changed by editing the sendmail.cf \
+\214le; check there to \214nd the actual pathnames.)72 213 Q
+(/usr/sbin/sendmail)72 229.2 Q(The binary of)144 241.2 Q F2(sendmail)2.5
+E F1(.)A(/usr/bin/ne)72 257.4 Q -.1(wa)-.25 G(liases).1 E 3.734(Al)144
+269.4 S 1.235
+(ink to /usr/sbin/sendmail; causes the alias database to be reb)-3.734 F
+3.735(uilt. Running)-.2 F 1.235(this pro-)3.735 F
+(gram is completely equi)144 281.4 Q -.25(va)-.25 G(lent to gi).25 E
+(ving)-.25 E F2(sendmail)2.5 E F1(the)2.5 E/F3 10/Times-Bold@0 SF
+(\255bi)2.5 E F1(\215ag.)2.5 E 13.38(/usr/bin/mailq Prints)72 297.6 R
+3.703(al)3.703 G 1.203(isting of the mail queue.)-3.703 F 1.202
+(This program is equi)6.203 F -.25(va)-.25 G 1.202(lent to using the).25
+F F3(\255bp)3.702 E F1 1.202(\215ag to)3.702 F F2(sendmail)144 309.6 Q
+F1(.)A(/etc/mail/sendmail.cf)72 325.8 Q
+(The con\214guration \214le, in te)144 337.8 Q(xtual form.)-.15 E 1.72
+(/etc/mail/help\214le The)72 354 R(SMTP help \214le.)2.5 E
+(/etc/mail/statistics)72 370.2 Q 2.5(As)144 382.2 S
+(tatistics \214le; need not be present.)-2.5 E(/etc/mail/sendmail.pid)72
+398.4 Q .318(Created in daemon mode; it contains the process id of the \
+current SMTP daemon.)144 410.4 R .318(If you)5.318 F 1.048
+(use this in scripts; use `)144 422.4 R 1.048(`head \2551')-.74 F 3.548
+('t)-.74 G 3.548(og)-3.548 G 1.047
+(et just the \214rst line; the second line contains the)-3.548 F .679
+(command line used to in)144 434.4 R -.2(vo)-.4 G .879 -.1(ke t).2 H
+.679(he daemon, and later v).1 F .679(ersions of)-.15 F F2(sendmail)3.18
+E F1 .68(may add more)3.18 F(information to subsequent lines.)144 446.4
+Q 5.06(/etc/mail/aliases The)72 462.6 R(te)2.5 E(xtual v)-.15 E
+(ersion of the alias \214le.)-.15 E(/etc/mail/aliases.db)72 478.8 Q
+(The alias \214le in)144 490.8 Q F2(hash)2.5 E F1(\(3\) format.)1.666 E
+(/etc/mail/aliases.{pag,dir})72 507 Q(The alias \214le in)144 519 Q F2
+(ndbm)2.5 E F1(\(3\) format.)1.666 E(/v)72 535.2 Q(ar/spool/mqueue)-.25
+E(The directory in which the mail queue\(s\) and temporary \214les resi\
+de.)144 547.2 Q(/v)72 563.4 Q(ar/spool/mqueue/qf*)-.25 E
+(Control \(queue\) \214les for messages.)144 575.4 Q(/v)72 591.6 Q
+(ar/spool/mqueue/df*)-.25 E(Data \214les.)144 603.6 Q(/v)72 619.8 Q
+(ar/spool/mqueue/tf*)-.25 E -.7(Te)144 631.8 S(mporary v).7 E
+(ersions of the qf \214les, used during queue \214le reb)-.15 E(uild.)
+-.2 E(/v)72 648 Q(ar/spool/mqueue/xf*)-.25 E 2.5(At)144 660 S
+(ranscript of the current session.)-2.5 E F3
+(Sendmail Installation and Operation Guide)72 756 Q(SMM:08-107)190.86 E
+0 Cg EP
+%%Page: 108 104
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 188.36(SMM:08-108 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF
+(This page intentionally left blank;)256.225 300 Q
+(replace it with a blank sheet for double-sided output.)218.6 312 Q 0 Cg
+EP
+%%Page: 3 105
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-3)200.86 E/F1 12/Times-Roman@0 SF -1.116(TA)263.226 98.4 S
+(BLE OF CONTENTS)1.116 E/F2 10/Times-Roman@0 SF 2.5(1. B)72 124.8 R
+(ASIC INST)-.35 E(ALLA)-.93 E 1.18(TION ...............................\
+.......................................................................\
+.........)-1.11 F(7)31 E 2.5(1.1. Compiling)87 139.2 R .43(Sendmail ...\
+.......................................................................\
+....................................)2.5 F(7)31 E 2.5(1.1.1. T)102 153.6
+R(weaking the Build In)-.8 E -.2(vo)-.4 G .19(cation ..................\
+...................................................................).2 F
+(7)31 E 2.5(1.1.2. Creating)102 168 R 2.5(aS)2.5 G
+(ite Con\214guration File)-2.5 E 28.5(.................................\
+............................................... 7)2.94 F 2.5(1.1.3. T)
+102 182.4 R(weaking the Mak)-.8 E 1.64(e\214le ........................\
+.......................................................................\
+..)-.1 F(8)31 E 2.5(1.1.4. Compilation)102 196.8 R(and installation)2.5
+E 28.5(................................................................\
+........................ 8)4.6 F 2.5(1.2. Con\214guration)87 211.2 R .99
+(Files ................................................................\
+................................................)2.5 F(8)31 E 2.5
+(1.3. Details)87 225.6 R(of Installation Files)2.5 E 28.5(.............\
+.......................................................................\
+............... 9)4.89 F 2.5(1.3.1. /usr/sbin/sendmail)102 240 R 23.5(.\
+.......................................................................\
+................................. 10)2.66 F 2.5
+(1.3.2. /etc/mail/sendmail.cf)102 254.4 R 23.5(........................\
+.......................................................................\
+..... 10)4.34 F 2.5(1.3.3. /etc/mail/submit.cf)102 268.8 R 23.5(.......\
+.......................................................................\
+.......................... 10)3.22 F 2.5(1.3.4. /usr/bin/ne)102 283.2 R
+-.1(wa)-.25 G 2.19(liases .............................................\
+..........................................................).1 F(10)26 E
+2.5(1.3.5. /usr/bin/hoststat)102 297.6 R 23.5(.........................\
+.......................................................................\
+............ 10)4.6 F 2.5(1.3.6. /usr/bin/pur)102 312 R 1.18(gestat ...\
+.......................................................................\
+................................)-.18 F(10)26 E 2.5(1.3.7. /v)102 326.4
+R 1.81(ar/spool/mqueue ................................................\
+........................................................)-.25 F(11)26 E
+2.5(1.3.8. /v)102 340.8 R 2.09(ar/spool/clientmqueue ..................\
+.......................................................................\
+......)-.25 F(11)26 E 2.5(1.3.9. /v)102 355.2 R .97(ar/spool/mqueue/.ho\
+ststat ................................................................\
+..........................)-.25 F(11)26 E 2.5
+(1.3.10. /etc/mail/aliases*)102 369.6 R 23.5(..........................\
+.......................................................................\
+....... 11)4.06 F 2.5(1.3.11. /etc/rc)102 384 R(or /etc/init.d/sendmail)
+2.5 E 23.5(............................................................\
+.......................... 12)3.23 F 2.5(1.3.12. /etc/mail/help\214le)
+102 398.4 R 23.5(......................................................\
+................................................... 12)3.22 F 2.5
+(1.3.13. /etc/mail/statistics)102 412.8 R 23.5(........................\
+.......................................................................\
+........ 12)3.77 F 2.5(1.3.14. /usr/bin/mailq)102 427.2 R 23.5(........\
+.......................................................................\
+.............................. 12)4.88 F 2.5(1.3.15. sendmail.pid)102
+441.6 R 23.5(..........................................................\
+..................................................... 12)4.61 F 2.5
+(1.3.16. Map)102 456 R .72(Files ......................................\
+.......................................................................\
+.......)2.5 F(14)26 E 2.5(2. NORMAL)72 470.4 R(OPERA)2.5 E 1.56(TIONS .\
+.......................................................................\
+.....................................)-1.11 F(14)26 E 2.5(2.1. The)87
+484.8 R(System Log)2.5 E 23.5(.........................................\
+.......................................................................\
+.... 14)4.89 F 2.5(2.1.1. F)102 499.2 R 2.26(ormat ....................\
+.......................................................................\
+...............................)-.15 F(14)26 E 2.5(2.1.2. Le)102 513.6 R
+-.15(ve)-.25 G 2.24(ls ................................................\
+.......................................................................\
+....).15 F(15)26 E 2.5(2.2. Dumping)87 528 R .72(State ................\
+.......................................................................\
+................................)2.5 F(15)26 E 2.5(2.3. The)87 542.4 R
+(Mail Queues)2.5 E 23.5(...............................................\
+.................................................................... 15)
+4.07 F 2.5(2.3.1. Queue)102 556.8 R(Groups and Queue Directories)2.5 E
+23.5(..................................................................\
+........ 16)2.99 F 2.5(2.3.2. Queue)102 571.2 R 1.84(Runs .............\
+.......................................................................\
+..............................)2.5 F(16)26 E 2.5(2.3.3. Manual)102 585.6
+R(Interv)2.5 E 1.72(ention ............................................\
+.........................................................)-.15 F(17)26 E
+2.5(2.3.4. Printing)102 600 R(the queue)2.5 E 23.5(....................\
+.......................................................................\
+.............. 17)2.67 F 2.5(2.3.5. F)102 614.4 R(orcing the queue)-.15
+E 23.5(................................................................\
+......................................... 17)3.94 F 2.5
+(2.3.6. Quarantined)102 628.8 R(Queue Items)2.5 E 23.5(................\
+.......................................................................\
+...... 18)3.25 F 2.5(2.4. Disk)87 643.2 R(Based Connection Information)
+2.5 E 23.5(............................................................\
+......................... 18)3.79 F 2.5(2.5. The)87 657.6 R
+(Service Switch)2.5 E 23.5(............................................\
+.................................................................... 19)
+2.68 F 2.5(2.6. The)87 672 R(Alias Database)2.5 E 23.5(................\
+.......................................................................\
+......................... 19)2.69 F 2.5(2.6.1. Reb)102 686.4 R
+(uilding the alias database)-.2 E 23.5(................................\
+....................................................... 21)4.27 F 2.5
+(2.6.2. Potential)102 700.8 R .72(problems ............................\
+.......................................................................\
+.....)2.5 F(21)26 E 2.5(2.6.3. List)102 715.2 R -.25(ow)2.5 G 1.81(ners\
+ ......................................................................\
+.............................................).25 F(21)26 E 0 Cg EP
+%%Page: 4 106
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 198.36(SMM:08-4 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 2.5
+(2.7. User)87 96 R(Information Database)2.5 E 23.5(....................\
+.......................................................................\
+......... 21)2.7 F 2.5(2.8. Per)87 110.4 R(-User F)-.2 E(orw)-.15 E
+(arding \(.forw)-.1 E(ard Files\))-.1 E 23.5(..........................\
+......................................................... 22)4.09 F 2.5
+(2.9. Special)87 124.8 R(Header Lines)2.5 E 23.5(......................\
+.......................................................................\
+................ 22)2.97 F 2.5(2.9.1. Errors-T)102 139.2 R 2.09(o: ....\
+.......................................................................\
+..........................................)-.8 F(22)26 E 2.5
+(2.9.2. Apparently-T)102 153.6 R 2.09(o: ..............................\
+.......................................................................\
+........)-.8 F(22)26 E 2.5(2.9.3. Precedence)102 168 R 23.5(...........\
+.......................................................................\
+.................................. 22)2.97 F 2.5(2.10. IDENT)87 182.4 R
+(Protocol Support)2.5 E 23.5(..........................................\
+........................................................... 22)2.95 F
+2.5(3. ARGUMENTS)72 196.8 R 23.5(......................................\
+.......................................................................\
+.................. 23)3.78 F 2.5(3.1. Queue)87 211.2 R(Interv)2.5 E 1.55
+(al ...................................................................\
+....................................................)-.25 F(23)26 E 2.5
+(3.2. Daemon)87 225.6 R 1.29(Mode .....................................\
+.......................................................................\
+...........)2.5 F(23)26 E 2.5(3.3. F)87 240 R(orcing the Queue)-.15 E
+23.5(..................................................................\
+............................................... 24)4.22 F 2.5(3.4. Deb)
+87 254.4 R 1.76(ugging ................................................\
+.......................................................................\
+......)-.2 F(24)26 E 2.5(3.5. Changing)87 268.8 R(the V)2.5 E
+(alues of Options)-1.11 E 23.5(........................................\
+.................................................... 25)3.23 F 2.5
+(3.6. T)87 283.2 R(rying a Dif)-.35 E(ferent Con\214guration File)-.25 E
+23.5(..................................................................\
+................. 25)4.67 F 2.5(3.7. Logging)87 297.6 R -.35(Tr)2.5 G
+(af).35 E .5(\214c ....................................................\
+..................................................................)-.25
+F(25)26 E 2.5(3.8. T)87 312 R(esting Con\214guration Files)-.7 E 23.5(.\
+.......................................................................\
+........................... 26)4.19 F 2.5(3.9. Persistent)87 326.4 R
+(Host Status Information)2.5 E 23.5(...................................\
+..................................................... 27)3.5 F 2.5
+(4. TUNING)72 340.8 R 23.5(............................................\
+.......................................................................\
+...................... 27)2.68 F 2.5(4.1. T)87 355.2 R 1.07(imeouts ...\
+.......................................................................\
+......................................................)-.35 F(27)26 E
+2.5(4.1.1. Queue)102 369.6 R(interv)2.5 E 2.1(al ......................\
+.......................................................................\
+.................)-.25 F(27)26 E 2.5(4.1.2. Read)102 384 R 1(timeouts .\
+.......................................................................\
+.......................................)2.5 F(27)26 E 2.5
+(4.1.3. Message)102 398.4 R 1.56(timeouts .............................\
+.......................................................................\
+.....)2.5 F(29)26 E 2.5(4.2. F)87 412.8 R(orking During Queue Runs)-.15
+E 23.5(................................................................\
+................................. 30)4.49 F 2.5(4.3. Queue)87 427.2 R
+.73(Priorities ........................................................\
+.............................................................)2.5 F(30)
+26 E 2.5(4.4. Load)87 441.6 R .44(Limiting ............................\
+.......................................................................\
+.....................)2.5 F(30)26 E 2.5(4.5. Resource)87 456 R .17(Limi\
+ts ....................................................................\
+.................................................)2.5 F(31)26 E 2.5
+(4.6. Measures)87 470.4 R(ag)2.5 E(ainst Denial of Service Attacks)-.05
+E 23.5(................................................................\
+......... 31)3.87 F 2.5(4.7. Deli)87 484.8 R -.15(ve)-.25 G(ry Mode).15
+E 23.5(................................................................\
+....................................................... 31)3.08 F 2.5
+(4.8. Log)87 499.2 R(Le)2.5 E -.15(ve)-.25 G 2.52(l.).15 G 23.5(.......\
+.......................................................................\
+................................................ 32)-2.52 F 2.5
+(4.9. File)87 513.6 R .72(Modes .......................................\
+.......................................................................\
+...............)2.5 F(32)26 E 2.5(4.9.1. T)102 528 R 2.5(os)-.8 G
+(uid or not to suid?)-2.5 E 23.5(......................................\
+........................................................... 32)6.52 F
+2.5(4.9.2. T)102 542.4 R(urning of)-.45 E 2.5(fs)-.25 G(ecurity checks)
+-2.5 E 23.5(...........................................................\
+............................... 33)3.95 F 2.5(4.10. Connection)87 556.8
+R 1.56(Caching ........................................................\
+....................................................)2.5 F(35)26 E 2.5
+(4.11. Name)87 571.2 R(Serv)2.5 E(er Access)-.15 E 23.5(...............\
+.......................................................................\
+...................... 36)2.85 F 2.5(4.12. Mo)87 585.6 R(ving the Per)
+-.15 E(-User F)-.2 E(orw)-.15 E(ard Files)-.1 E 23.5(..................\
+.................................................................. 37)
+3.84 F 2.5(4.13. Free)87 600 R 1.85(Space .............................\
+.......................................................................\
+.......................)2.5 F(37)26 E 2.5(4.14. Maximum)87 614.4 R
+(Message Size)2.5 E 23.5(..............................................\
+....................................................... 37)4.62 F 2.5
+(4.15. Pri)87 628.8 R -.25(va)-.25 G .3 -.15(cy F).25 H 1.93(lags .....\
+.......................................................................\
+...........................................).15 F(37)26 E 2.5
+(4.16. Send)87 643.2 R(to Me T)2.5 E 2.08(oo ..........................\
+.......................................................................\
+..................)-.8 F(37)26 E 2.5(5. THE)72 657.6 R
+(WHOLE SCOOP ON THE CONFIGURA)2.5 E(TION FILE)-1.11 E 23.5
+(........................................................ 38)4.64 F 2.5
+(5.1. R)87 672 R(and S \212 Re)2.5 E(writing Rules)-.25 E 23.5(........\
+.......................................................................\
+................... 38)4.3 F 2.5(5.1.1. The)102 686.4 R(left hand side)
+2.5 E 23.5(............................................................\
+............................................. 38)4.07 F 2.5(5.1.2. The)
+102 700.8 R(right hand side)2.5 E 23.5(................................\
+.......................................................................\
+ 39)3.51 F 2.5(5.1.3. Semantics)102 715.2 R(of re)2.5 E
+(writing rule sets)-.25 E 23.5(........................................\
+........................................... 40)4.6 F 0 Cg EP
+%%Page: 5 107
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF(Sendmail Installation and Operation Guide)72 60 Q
+(SMM:08-5)200.86 E/F1 10/Times-Roman@0 SF 2.5(5.1.4. Ruleset)102 96 R
+2.11(hooks ............................................................\
+...................................................)2.5 F(41)26 E 2.5
+(5.1.4.1. check_relay)117 110.4 R 23.5(................................\
+.......................................................................\
+... 41)2.69 F 2.5(5.1.4.2. check_mail)117 124.8 R 23.5(................\
+.......................................................................\
+................... 41)4.9 F 2.5(5.1.4.3. check_rcpt)117 139.2 R 23.5(.\
+.......................................................................\
+................................... 42)4.63 F 2.5(5.1.4.4. check_data)
+117 153.6 R 23.5(......................................................\
+..................................................... 42)3.52 F 2.5
+(5.1.4.5. check_compat)117 168 R 23.5(.................................\
+..................................................................... 4\
+2)3.24 F 2.5(5.1.4.6. check_eoh)117 182.4 R 23.5(......................\
+.......................................................................\
+............... 42)3.24 F 2.5(5.1.4.7. check_eom)117 196.8 R 23.5(.....\
+.......................................................................\
+............................... 43)2.96 F 2.5(5.1.4.8. check_etrn)117
+211.2 R 23.5(..........................................................\
+................................................. 43)4.63 F 2.5
+(5.1.4.9. check_e)117 225.6 R .89(xpn .................................\
+.......................................................................\
+..)-.15 F(43)26 E 2.5(5.1.4.10. check_vrfy)117 240 R 23.5(.............\
+.......................................................................\
+..................... 43)3.52 F 2.5(5.1.4.11. trust_auth)117 254.4 R
+23.5(..................................................................\
+......................................... 43)3.5 F 2.5
+(5.1.4.12. tls_client)117 268.8 R 23.5(................................\
+.......................................................................\
+..... 43)4.33 F 2.5(5.1.4.13. tls_serv)117 283.2 R 2.27(er ............\
+.......................................................................\
+........................)-.15 F(43)26 E 2.5(5.1.4.14. tls_rcpt)117 297.6
+R 23.5(................................................................\
+............................................... 43)3.5 F 2.5
+(5.1.4.15. srv_features)117 312 R 23.5(................................\
+.......................................................................\
+ 43)4.63 F 2.5(5.1.4.16. try_tls)117 326.4 R 23.5(.....................\
+.......................................................................\
+..................... 44)2.94 F 2.5(5.1.4.17. authinfo)117 340.8 R 23.5
+(......................................................................\
+........................................ 44)2.67 F 2.5(5.1.4.18. queue)
+117 355.2 R 1.44(group ................................................\
+........................................................)-.15 F(45)26 E
+2.5(5.1.4.19. greet_pause)117 369.6 R 23.5(............................\
+.......................................................................\
+..... 45)3.24 F 2.5(5.1.5. IPC)102 384 R 1(mailers ....................\
+.......................................................................\
+........................)2.5 F(45)26 E 2.5(5.2. D)87 398.4 R 2.5<8a44>
+2.5 G(e\214ne Macro)-2.5 E 23.5(.......................................\
+.......................................................................\
+.. 46)3.52 F 2.5(5.3. C)87 412.8 R(and F \212 De\214ne Classes)2.5 E
+23.5(..................................................................\
+................................... 52)2.67 F 2.5(5.4. M)87 427.2 R 2.5
+<8a44>2.5 G(e\214ne Mailer)-2.5 E 23.5(................................\
+.......................................................................\
+........ 54)3.79 F 2.5(5.5. H)87 441.6 R 2.5<8a44>2.5 G(e\214ne Header)
+-2.5 E 23.5(...........................................................\
+.................................................... 59)3.25 F 2.5
+(5.6. O)87 456 R 2.5<8a53>2.5 G(et Option)-2.5 E 23.5(.................\
+.......................................................................\
+............................. 60)3.22 F 2.5(5.7. P)87 470.4 R 2.5<8a50>
+2.5 G(recedence De\214nitions)-2.5 E 23.5(.............................\
+..................................................................... 7\
+7)2.96 F 2.5(5.8. V)87 484.8 R 2.5<8a43>2.5 G(on\214guration V)-2.5 E
+(ersion Le)-1.11 E -.15(ve)-.25 G 2.8(l.).15 G 23.5(...................\
+..................................................................... 7\
+8)-2.8 F 2.5(5.9. K)87 499.2 R 2.5<8a4b>2.5 G .3 -.15(ey F)-2.75 H
+(ile Declaration).15 E 23.5(...........................................\
+.......................................................... 79)2.81 F 2.5
+(5.10. Q)87 513.6 R 2.5<8a51>2.5 G(ueue Group Declaration)-2.5 E 23.5(.\
+.......................................................................\
+................... 86)2.98 F 2.5(5.11. X)87 528 R 2.5<8a4d>2.5 G
+(ail Filter \(Milter\) De\214nitions)-2.5 E 23.5(......................\
+............................................................ 87)4.61 F
+2.5(5.12. The)87 542.4 R(User Database)2.5 E 23.5(.....................\
+.......................................................................\
+.................. 88)4.92 F 2.5(5.12.1. Structure)102 556.8 R
+(of the user database)2.5 E 23.5(......................................\
+............................................... 88)2.7 F 2.5
+(5.12.2. User)102 571.2 R(database semantics)2.5 E 23.5(...............\
+.......................................................................\
+....... 89)3.25 F 2.5(5.12.3. Creating)102 587.6 R(the database)2.5 E/F2
+7/Times-Roman@0 SF(23)-4 I F1 23.5(....................................\
+........................................................... 89)2.91 4 N
+2.5(6. O)72 602 R(THER CONFIGURA)-.4 E 1.97(TION ......................\
+.......................................................................\
+............)-1.11 F(90)26 E 2.5(6.1. P)87 616.4 R(arameters in de)-.15
+E .3(vtools/OS/$oscf ..................................................\
+.........................................)-.25 F(90)26 E 2.5(6.2. P)87
+630.8 R(arameters in sendmail/conf.h)-.15 E 23.5(......................\
+.......................................................................\
+. 91)4.78 F 2.5(6.3. Con\214guration)87 645.2 R(in sendmail/conf.c)2.5 E
+23.5(..................................................................\
+........................ 93)4.06 F 2.5(6.3.1. Built-in)102 659.6 R
+(Header Semantics)2.5 E 23.5(..........................................\
+................................................. 93)4.9 F 2.5
+(6.3.2. Restricting)102 674 R(Use of Email)2.5 E 23.5(.................\
+.......................................................................\
+...... 95)4.34 F 2.5(6.3.3. Ne)102 688.4 R 2.5(wD)-.25 G
+(atabase Map Classes)-2.5 E 23.5(......................................\
+................................................... 95)4.89 F 2.5
+(6.3.4. Queueing)102 702.8 R 1.56(Function ............................\
+.......................................................................\
+....)2.5 F(96)26 E 2.5(6.3.5. Refusing)102 717.2 R
+(Incoming SMTP Connections)2.5 E 23.5(.................................\
+...................................... 96)2.94 F 0 Cg EP
+%%Page: 6 108
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Bold@0 SF 198.36(SMM:08-6 Sendmail)72 60 R
+(Installation and Operation Guide)2.5 E/F1 10/Times-Roman@0 SF 2.5
+(6.3.6. Load)102 96 R -1.17 -.74(Av e)2.5 H(rage Computation).74 E 23.5
+(......................................................................\
+.................... 97)2.74 F 2.5(6.4. Con\214guration)87 110.4 R
+(in sendmail/daemon.c)2.5 E 23.5(......................................\
+............................................... 97)2.67 F 2.5(6.5. LD)87
+124.8 R .29(AP ........................................................\
+.......................................................................\
+......)-.4 F(97)26 E 2.5(6.5.1. LD)102 139.2 R(AP Recursion)-.4 E 23.5(\
+.......................................................................\
+................................... 97)4.74 F 2.5(6.5.1.1. Example)117
+153.6 R 23.5(..........................................................\
+..................................................... 98)2.95 F 2.5
+(6.6. ST)87 168 R(AR)-.93 E .58(TTLS ..................................\
+.......................................................................\
+...................)-.6 F(98)26 E 2.5(6.6.1. Certi\214cates)102 182.4 R
+(for ST)2.5 E(AR)-.93 E .87(TTLS ......................................\
+....................................................)-.6 F(98)26 E 2.5
+(6.6.2. PRNG)102 196.8 R(for ST)2.5 E(AR)-.93 E 2.25(TTLS .............\
+.......................................................................\
+.............)-.6 F(99)26 E 2.5(6.7. Encoding)87 211.2 R(of ST)2.5 E(AR)
+-.93 E(TTLS and A)-.6 E(UTH related Macros)-.55 E 23.5
+(............................................................ 99)2.56 F
+2.5(7. A)72 225.6 R(CKNO)-.4 E .1(WLEDGEMENTS .........................\
+.......................................................................\
+............)-.35 F(99)26 E(Appendix A.)72 240 Q(COMMAND LINE FLA)5 E
+1.97(GS ...............................................................\
+..........................)-.4 F(101)21 E(Appendix B.)72 254.4 Q -.1(QU)
+5 G(EUE FILE FORMA).1 E 1.38(TS .......................................\
+.....................................................)-1.11 F(104)21 E
+(Appendix C.)72 268.8 Q(SUMMAR)5 E 2.5(YO)-.65 G 2.5(FS)-2.5 G(UPPOR)
+-2.5 E 2.5(TF)-.6 G 1.12(ILES .........................................\
+.....................................)-2.5 F(107)21 E 0 Cg EP
+%%Trailer
+end
+%%EOF
diff --git a/editmap/Build b/editmap/Build
new file mode 100755
index 000000000000..28a2565e982c
--- /dev/null
+++ b/editmap/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 1.2 2000/09/17 17:30:02 gshapiro Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/editmap/editmap.0 b/editmap/editmap.0
new file mode 100644
index 000000000000..f4723b2c7102
--- /dev/null
+++ b/editmap/editmap.0
@@ -0,0 +1,62 @@
+EDITMAP(8) EDITMAP(8)
+
+
+
+NNAAMMEE
+ eeddiittmmaapp - query and edit single records in database maps for sendmail
+
+SSYYNNOOPPSSIISS
+ eeddiittmmaapp [--CC _f_i_l_e] [--NN] [--ff] [--qq||--uu||--xx] maptype mapname key [ "value
+ ..." ]
+
+DDEESSCCRRIIPPTTIIOONN
+ EEddiittmmaapp queries or edits one record in database maps used by the keyed
+ map lookups in sendmail(8). Arguments are passed on the command line
+ and output (for queries) is directed to standard output.
+
+ Depending on how it is compiled, eeddiittmmaapp handles up to three different
+ database formats, selected using the _m_a_p_t_y_p_e parameter. They may be
+
+ dbm DBM format maps. This requires the ndbm(3) library.
+
+ btree B-Tree format maps. This requires the new Berkeley DB library.
+
+ hash Hash format maps. This also requires the Berkeley DB library.
+
+ If the _T_r_u_s_t_e_d_U_s_e_r option is set in the sendmail configuration file and
+ eeddiittmmaapp is invoked as root, the generated files will be owned by the
+ specified _T_r_u_s_t_e_d_U_s_e_r_.
+
+ FFllaaggss
+ --CC Use the specified sseennddmmaaiill configuration file for looking up the
+ TrustedUser option.
+
+ --NN Include the null byte that terminates strings in the map (for
+ alias maps).
+
+ --ff Normally all upper case letters in the key are folded to lower
+ case. This flag disables that behaviour. This is intended to
+ mesh with the -f flag in the KK line in sendmail.cf. The value
+ is never case folded.
+
+ --qq Query the map for the specified key. If found, print value to
+ standard output and exit with 0. If not found then print an
+ error message to stdout and exit with EX_UNAVAILABLE.
+
+ --uu Update the record for _k_e_y with _v_a_l_u_e or inserts a new record if
+ one doesn't exist. Exits with 0 on success or EX_IOERR on fail-
+ ure.
+
+ --xx Deletes the specific key from the map. Exits with 0 on success
+ or EX_IOERR on failure.
+
+
+ SSEEEE AALLSSOO
+ sendmail(8), makemap(8)
+
+HHIISSTTOORRYY
+ The eeddiittmmaapp command has no history.
+
+
+
+ $Date: 2003/02/01 17:07:42 $ EDITMAP(8)
diff --git a/include/libmilter/mfapi.h b/include/libmilter/mfapi.h
index 4338645dc85a..7d7fb1d99f57 100644
--- a/include/libmilter/mfapi.h
+++ b/include/libmilter/mfapi.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2004, 2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2004, 2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -7,7 +7,7 @@
* the sendmail distribution.
*
*
- * $Id: mfapi.h,v 8.77 2006/11/02 02:44:07 ca Exp $
+ * $Id: mfapi.h,v 8.78 2008/02/27 22:30:34 ca Exp $
*/
/*
@@ -18,7 +18,7 @@
# define _LIBMILTER_MFAPI_H 1
#ifndef SMFI_VERSION
-# define SMFI_VERSION 0x01000000 /* libmilter version number */
+# define SMFI_VERSION 0x01000001 /* libmilter version number */
#endif /* ! SMFI_VERSION */
#define SM_LM_VRS_MAJOR(v) (((v) & 0x7f000000) >> 24)
diff --git a/libmilter/Build b/libmilter/Build
new file mode 100755
index 000000000000..02ad95170793
--- /dev/null
+++ b/libmilter/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 2000/09/17 17:30:03 gshapiro Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/libmilter/Makefile.m4 b/libmilter/Makefile.m4
index 7902c2f600b1..929ec7519ef7 100644
--- a/libmilter/Makefile.m4
+++ b/libmilter/Makefile.m4
@@ -1,4 +1,4 @@
-dnl $Id: Makefile.m4,v 8.78 2007/02/05 19:21:29 ca Exp $
+dnl $Id: Makefile.m4,v 8.80 2008/04/08 05:23:44 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
dnl only required for compilation of EXTRAS
diff --git a/libmilter/docs/smfi_opensocket.html b/libmilter/docs/smfi_opensocket.html
index 151af07a91ae..53ea62b1094b 100644
--- a/libmilter/docs/smfi_opensocket.html
+++ b/libmilter/docs/smfi_opensocket.html
@@ -2,7 +2,7 @@
<HEAD><TITLE>smfi_opensocket</TITLE></HEAD>
<BODY>
<!--
-$Id: smfi_opensocket.html,v 1.6 2006/12/21 18:30:35 ca Exp $
+$Id: smfi_opensocket.html,v 1.7 2008/01/31 17:29:33 ca Exp $
-->
<H1>smfi_opensocket</H1>
@@ -24,16 +24,21 @@ filter.
<TABLE border="1" cellspacing=1 cellpadding=4>
<TR align="left" valign=top>
<TH width="80">Called When</TH>
-<TD>Called only from program mainline, before calling
-<TT>smfi_main()</TT>.</TD>
+<TD>Called only from program mainline,
+after calling <TT>smfi_setconn()</TT> and <TT>smfi_register()</TT>,
+but before calling <TT>smfi_main()</TT>.
+</TD>
</TR>
<TR align="left" valign=top>
<TH width="80">Effects</TH>
<TD>smfi_opensocket attempts to create the socket specified previously by
a call to <TT>smfi_setconn()</TT> which will be the interface between MTAs
-and the filter. This allows the calling application to ensure that the
-socket can be created. If this is not called, <TT>smfi_main()</TT> will
-do so implicitly. </TD>
+and the filter.
+This allows the calling application to ensure that the
+socket can be created.
+If this is not called,
+<TT>smfi_main()</TT> will do so implicitly.
+</TD>
</TR>
</TABLE>
@@ -58,7 +63,8 @@ do so implicitly. </TD>
<LI>The interface socket could not be created for any reason.
<LI><TT>rmsocket</TT> was <TT>true</TT>, and either the socket could
not be examined, or exists and could not be removed.
- <LI><TT>smfi_setconn()</TT> has not been called.
+ <LI><TT>smfi_setconn()</TT> or <TT>smfi_register()</TT>
+ have not been called.
</UL>
Otherwise, it will return MI_SUCCESS
</TD>
@@ -68,7 +74,7 @@ Otherwise, it will return MI_SUCCESS
<HR size="1">
<FONT size="-1">
-Copyright (c) 2003 Sendmail, Inc. and its suppliers.
+Copyright (c) 2003, 2008 Sendmail, Inc. and its suppliers.
All rights reserved.
<BR>
By using this file, you agree to the terms and conditions set
diff --git a/libmilter/docs/smfi_version.html b/libmilter/docs/smfi_version.html
index 3c1fc0520a23..6dd451d152ee 100644
--- a/libmilter/docs/smfi_version.html
+++ b/libmilter/docs/smfi_version.html
@@ -2,7 +2,7 @@
<HEAD><TITLE>smfi_version()</TITLE></HEAD>
<BODY>
<!--
-$Id: smfi_version.html,v 1.5 2007/03/22 17:30:57 ca Exp $
+$Id: smfi_version.html,v 1.6 2008/05/02 23:06:26 ca Exp $
-->
<H1>smfi_version()</H1>
@@ -59,24 +59,30 @@ Get the (runtime) version of libmilter.
Note: the compile time version of libmilter is available in the macro
<CODE>SMFI_VERSION</CODE>.
-A milter can check this macro to determine which functions to use
-(at compile time via C preprocessor statements).
-Using this macro and the
-<CODE>smfi_version()</CODE>
-function,
-a milter can determine at runtime whether it has been (dynamically)
-linked against the expected libmilter version.
To extract the major and minor version as well as the current patch level
from this macro, the macros
<CODE>SM_LM_VRS_MAJOR(v)</CODE>,
<CODE>SM_LM_VRS_MINOR(v)</CODE>, and
<CODE>SM_LM_VRS_PLVL(v)</CODE>
can be used, respectively.
+A milter can check the
+<CODE>SMFI_VERSION</CODE>
+macro to determine which functions to use
+(at compile time via C preprocessor statements).
+Using this macro and the
+<CODE>smfi_version()</CODE>
+function,
+a milter can determine at runtime whether it has been (dynamically)
+linked against the expected libmilter version.
+Such a function should only compare the major and minor version,
+not the patch level,
+i.e., the libmilter library will be compatible despite
+different patch levels.
<HR SIZE="1">
<FONT SIZE="-1">
-Copyright (c) 2006, 2007 Sendmail, Inc. and its suppliers.
+Copyright (c) 2006-2008 Sendmail, Inc. and its suppliers.
All rights reserved.
<BR>
By using this file, you agree to the terms and conditions set
diff --git a/libmilter/engine.c b/libmilter/engine.c
index a02431215103..9002a0bab96f 100644
--- a/libmilter/engine.c
+++ b/libmilter/engine.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2004, 2006, 2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2004, 2006-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: engine.c,v 8.159 2007/04/23 22:22:50 ca Exp $")
+SM_RCSID("@(#)$Id: engine.c,v 8.162 2008/02/27 01:34:14 ca Exp $")
#include "libmilter.h"
@@ -1001,6 +1001,7 @@ st_optionneg(g)
(long) ctx->ctx_id, ctx->ctx_mta_pflags, i);
return _SMFIS_ABORT;
}
+ fix_stm(ctx);
if (ctx->ctx_dbg > 3)
sm_dprintf("[%ld] milter_negotiate:"
@@ -1725,9 +1726,9 @@ mi_rd_socket_ready (sd)
int n;
int nerr = 0;
#if SM_CONF_POLL
- struct pollfd pfd;
+ struct pollfd pfd;
#else /* SM_CONF_POLL */
- fd_set rd_set, exc_set;
+ fd_set rd_set, exc_set;
#endif /* SM_CONF_POLL */
do
diff --git a/libmilter/worker.c b/libmilter/worker.c
index 04026783f32a..fd4b66ec741d 100644
--- a/libmilter/worker.c
+++ b/libmilter/worker.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003-2004, 2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 2003-2004, 2007 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -11,7 +11,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: worker.c,v 8.9 2006/12/18 18:26:51 ca Exp $")
+SM_RCSID("@(#)$Id: worker.c,v 8.10 2007/12/03 22:06:05 ca Exp $")
#include "libmilter.h"
@@ -263,8 +263,6 @@ mi_pool_controller_init()
return MI_FAILURE;
}
- POOL_LEV_DPRINTF(4, ("PIPE r=[%d] w=[%d]", RD_PIPE, WR_PIPE));
-
(void) smutex_init(&Tskmgr.tm_w_mutex);
(void) scond_init(&Tskmgr.tm_w_cond);
diff --git a/libsm/Build b/libsm/Build
new file mode 100755
index 000000000000..7e15c3571a1b
--- /dev/null
+++ b/libsm/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# $Id: Build,v 1.4 2001/02/14 04:39:46 gshapiro Exp $
+
+exec sh ../devtools/bin/Build $*
diff --git a/libsmdb/Build b/libsmdb/Build
new file mode 100755
index 000000000000..8b32695a1f1f
--- /dev/null
+++ b/libsmdb/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.3 2000/04/10 06:32:52 gshapiro Exp $
+
+exec sh ../devtools/bin/Build $*
diff --git a/libsmutil/Build b/libsmutil/Build
new file mode 100755
index 000000000000..8b32695a1f1f
--- /dev/null
+++ b/libsmutil/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.3 2000/04/10 06:32:52 gshapiro Exp $
+
+exec sh ../devtools/bin/Build $*
diff --git a/mail.local/Build b/mail.local/Build
new file mode 100755
index 000000000000..65ccd71ec6db
--- /dev/null
+++ b/mail.local/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 1999/03/02 02:32:28 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/mail.local/mail.local.0 b/mail.local/mail.local.0
new file mode 100644
index 000000000000..aee0585fb6bf
--- /dev/null
+++ b/mail.local/mail.local.0
@@ -0,0 +1,97 @@
+MAIL.LOCAL(8) MAIL.LOCAL(8)
+
+
+
+NNAAMMEE
+ mail.local - store mail in a mailbox
+
+SSYYNNOOPPSSIISS
+ mmaaiill..llooccaall [--77] [--bb] [--dd] [--DD _m_b_d_b] [--ll] [--ff _f_r_o_m|--rr _f_r_o_m] [--hh _f_i_l_e_n_a_m_e
+ ] _u_s_e_r _._._.
+
+DDEESSCCRRIIPPTTIIOONN
+ MMaaiill..llooccaall reads the standard input up to an end-of-file and appends it
+ to each _u_s_e_r_'_s mmaaiill file. The _u_s_e_r must be a valid user name.
+
+ The options are as follows:
+
+ --77 Do not advertise 8BITMIME support in LMTP mode.
+
+ --bb Return a permanent error instead of a temporary error if a
+ mailbox exceeds quota.
+
+ --dd Specify this is a delivery (for backward compatibility).
+ This option has no effect.
+
+ --DD _m_b_d_b Specify the name of the mailbox database which is used to
+ look up local recipient names. This option defaults to "pw",
+ which means use getpwnam().
+
+ --ff _f_r_o_m Specify the sender's name.
+
+ --ll Turn on LMTP mode.
+
+ --rr _f_r_o_m Specify the sender's name (for backward compatibility). Same
+ as -f.
+
+ --hh _f_i_l_e_n_a_m_e
+ Store incoming mail in _f_i_l_e_n_a_m_e in the user's home directory
+ instead of a system mail spool directory.
+
+ The next options are only available if mmaaiill..llooccaall has been compiled
+ with -DHASHSPOOL.
+
+ --HH _h_a_s_h_t_y_p_e_h_a_s_h_d_e_p_t_h
+ Select hashed mail directories. Valid hash types are uu for user
+ name and mm for MD5 (requires compilation with -DHASHSPOOLMD5).
+ Example: --HH _u_2 selects user name hashing with a hash depth of 2.
+ Note: there must be no space between the hash type and the
+ depth.
+
+ --pp _p_a_t_h
+ Specify an alternate mail spool path.
+
+ --nn Specify that the domain part of recipient addresses in LMTP mode
+ should not be stripped.
+
+ Individual mail messages in the mailbox are delimited by an empty line
+ followed by a line beginning with the string ``From ''. A line con-
+ taining the string ``From '', the sender's name and a time stamp is
+ prepended to each delivered mail message. A blank line is appended to
+ each message. A greater-than character (``>'') is prepended to any
+ line in the message which could be mistaken for a ``From '' delimiter
+ line (that is, a line beginning with the five characters ``From '' fol-
+ lowing a blank line).
+
+ The mail files are exclusively locked with flock(2) while mail is
+ appended, and a uusseerr..lloocckk file also is created while the mailbox is
+ locked for compatibility with older MUAs.
+
+ If the ``biff'' service is returned by getservbyname(3), the biff
+ server is notified of delivered mail.
+
+ The mmaaiill..llooccaall utility exits 0 on success, and >0 if an error occurs.
+
+EENNVVIIRROONNMMEENNTT
+ TZ Used to set the appropriate time zone on the timestamp.
+
+FFIILLEESS
+ /tmp/local.XXXXXX temporary files
+ /var/mail/user user's default mailbox directory
+ /var/mail/user.lock lock file for a user's default mailbox
+
+SSEEEE AALLSSOO
+ mail(1), xsend(1), flock(2), getservbyname(3), comsat(8), sendmail(8)
+
+WWAARRNNIINNGG
+ mmaaiill..llooccaall escapes only "^From " lines that follow an empty line. If
+ all lines starting with "From " should be escaped, use the 'E' flag for
+ the local mailer in the sendmail.cf file.
+
+HHIISSTTOORRYY
+ A superset of mmaaiill..llooccaall (handling mailbox reading as well as mail
+ delivery) appeared in Version 7 AT&T UNIX as the program mmaaiill.
+
+
+
+ $Date: 2003/10/20 20:26:51 $ MAIL.LOCAL(8)
diff --git a/mail.local/mail.local.c b/mail.local/mail.local.c
index 492e115404f7..dd31069041de 100644
--- a/mail.local/mail.local.c
+++ b/mail.local/mail.local.c
@@ -18,7 +18,7 @@ SM_IDSTR(copyright,
Copyright (c) 1990, 1993, 1994\n\
The Regents of the University of California. All rights reserved.\n")
-SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.254 2006/10/12 22:23:45 ca Exp $")
+SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.256 2008/02/19 07:13:30 gshapiro Exp $")
#include <stdlib.h>
#include <sm/errstring.h>
@@ -79,6 +79,15 @@ SM_IDSTR(id, "@(#)$Id: mail.local.c,v 8.254 2006/10/12 22:23:45 ca Exp $")
# endif /* HASHSPOOLMD5 */
#endif /* HASHSPOOL */
+#if _FFR_SPOOL_PATH
+ /*
+ ** Override path to mail store at run time (using -p).
+ ** From: Eugene Grosbein of Svyaz Service JSC
+ ** See: http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/114195
+ ** NOTE: Update man page before adding this to a release.
+ */
+#endif /* _FFR_SPOOL_PATH */
+
#ifndef LOCKTO_RM
# define LOCKTO_RM 300 /* timeout for stale lockfile removal */
@@ -227,7 +236,11 @@ main(argc, argv)
#if HASHSPOOL
while ((ch = getopt(argc, argv, "7bdD:f:h:r:lH:p:n")) != -1)
#else /* HASHSPOOL */
+# if _FFR_SPOOL_PATH
+ while ((ch = getopt(argc, argv, "7bdD:f:h:r:lp:")) != -1)
+# else /* _FFR_SPOOL_PATH */
while ((ch = getopt(argc, argv, "7bdD:f:h:r:l")) != -1)
+# endif /* _FFR_SPOOL_PATH */
#endif /* HASHSPOOL */
{
switch(ch)
@@ -308,6 +321,12 @@ main(argc, argv)
}
break;
+ case 'n':
+ StripRcptDomain = false;
+ break;
+#endif /* HASHSPOOL */
+
+#if HASHSPOOL || _FFR_SPOOL_PATH
case 'p':
if (optarg == NULL || *optarg == '\0')
{
@@ -321,11 +340,7 @@ main(argc, argv)
usage();
}
break;
-
- case 'n':
- StripRcptDomain = false;
- break;
-#endif /* HASHSPOOL */
+#endif /* HASHSPOOL || _FFR_SPOOL_PATH */
case '?':
default:
@@ -1566,7 +1581,11 @@ void
usage()
{
ExitVal = EX_USAGE;
+# if _FFR_SPOOL_PATH
+ mailerr(NULL, "usage: mail.local [-7] [-b] [-d] [-l] [-f from|-r from] [-h filename] [-p path] user ...");
+# else /* _FFR_SPOOL_PATH */
mailerr(NULL, "usage: mail.local [-7] [-b] [-d] [-l] [-f from|-r from] [-h filename] user ...");
+# endif /* _FFR_SPOOL_PATH */
sm_exit(ExitVal);
}
diff --git a/mailstats/Build b/mailstats/Build
new file mode 100755
index 000000000000..3c8e03f12439
--- /dev/null
+++ b/mailstats/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 1999/03/02 02:33:27 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/mailstats/mailstats.0 b/mailstats/mailstats.0
new file mode 100644
index 000000000000..64703f37bc6b
--- /dev/null
+++ b/mailstats/mailstats.0
@@ -0,0 +1,64 @@
+MAILSTATS(8) MAILSTATS(8)
+
+
+
+NNAAMMEE
+ mailstats - display mail statistics
+
+SSYYNNOOPPSSIISS
+ mmaaiillssttaattss [--cc] [--oo] [--pp] [--PP] [--CC _c_f_f_i_l_e] [--ff _s_t_f_i_l_e]
+
+DDEESSCCRRIIPPTTIIOONN
+ The mmaaiillssttaattss utility displays the current mail statistics.
+
+ First, the time at which statistics started being kept is displayed, in
+ the format specified by ctime(3). Then, the statistics for each mailer
+ are displayed on a single line, each with the following white space
+ separated fields:
+
+ MM The mailer number.
+ mmssggssffrr Number of messages from the mailer.
+ bbyytteess__ffrroomm Kbytes from the mailer.
+ mmssggssttoo Number of messages to the mailer.
+ bbyytteess__ttoo Kbytes to the mailer.
+ mmssggssrreejj Number of messages rejected.
+ mmssggssddiiss Number of messages discarded.
+ mmssggssqquurr Number of messages quarantined.
+ MMaaiilleerr The name of the mailer.
+
+ After this display, a line totaling the values for all of the mailers
+ is displayed (preceded with a ``T''), separated from the previous
+ information by a line containing only equals (``='') characters.
+ Another line preceded with a ``C'' lists the number of TCP connections.
+
+ The options are as follows:
+
+ --CC Read the specified file instead of the default sseennddmmaaiill configu-
+ ration file.
+
+ --cc Try to use submit.cf instead of the default sseennddmmaaiill configura-
+ tion file.
+
+ --ff Read the specified statistics file instead of the statistics
+ file specified in the sseennddmmaaiill configuration file.
+
+ --PP Output information in program-readable mode without clearing
+ statistics.
+
+ --pp Output information in program-readable mode and clear statis-
+ tics.
+
+ --oo Don't display the name of the mailer in the output.
+
+ The mmaaiillssttaattss utility exits 0 on success, and >0 if an error occurs.
+
+FFIILLEESS
+ /etc/mail/sendmail.cf The default sseennddmmaaiill configuration file.
+ /etc/mail/statistics The default sseennddmmaaiill statistics file.
+
+SSEEEE AALLSSOO
+ mailq(1), sendmail(8)
+
+
+
+ $Date: 2002/06/27 22:47:29 $ MAILSTATS(8)
diff --git a/makemap/Build b/makemap/Build
new file mode 100755
index 000000000000..3bb6e8539529
--- /dev/null
+++ b/makemap/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 1999/03/02 02:33:50 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/makemap/makemap.0 b/makemap/makemap.0
new file mode 100644
index 000000000000..5e30b72014e8
--- /dev/null
+++ b/makemap/makemap.0
@@ -0,0 +1,90 @@
+MAKEMAP(8) MAKEMAP(8)
+
+
+
+NNAAMMEE
+ makemap - create database maps for sendmail
+
+SSYYNNOOPPSSIISS
+ mmaakkeemmaapp [--CC _f_i_l_e] [--NN] [--cc _c_a_c_h_e_s_i_z_e] [--dd] [--DD _c_o_m_m_e_n_t_c_h_a_r] [--ee] [--ff]
+ [--ll] [--oo] [--rr] [--ss] [--tt _d_e_l_i_m] [--uu] [--vv] _m_a_p_t_y_p_e _m_a_p_n_a_m
+
+DDEESSCCRRIIPPTTIIOONN
+ MMaakkeemmaapp creates the database maps used by the keyed map lookups in
+ sendmail(8). It reads input from the standard input and outputs them
+ to the indicated _m_a_p_n_a_m_e_.
+
+ Depending on how it is compiled, mmaakkeemmaapp handles up to three different
+ database formats, selected using the _m_a_p_t_y_p_e parameter. They may be
+
+ dbm DBM format maps. This requires the ndbm(3) library.
+
+ btree B-Tree format maps. This requires the new Berkeley DB library.
+
+ hash Hash format maps. This also requires the Berkeley DB library.
+
+ In all cases, mmaakkeemmaapp reads lines from the standard input consisting of
+ two words separated by white space. The first is the database key, the
+ second is the value. The value may contain ``%_n'' strings to indicate
+ parameter substitution. Literal percents should be doubled (``%%'').
+ Blank lines and lines beginning with ``#'' are ignored.
+
+ Notice: do nnoott use mmaakkeemmaapp to create the aliases data base, but
+ nneewwaalliiaasseess which puts a special token into the data base that is
+ required by sseennddmmaaiill..
+
+ If the _T_r_u_s_t_e_d_U_s_e_r option is set in the sendmail configuration file and
+ mmaakkeemmaapp is invoked as root, the generated files will be owned by the
+ specified _T_r_u_s_t_e_d_U_s_e_r_.
+
+ FFllaaggss
+ --CC Use the specified sseennddmmaaiill configuration file for looking up the
+ TrustedUser option.
+
+ --NN Include the null byte that terminates strings in the map. This
+ must match the -N flag in the sendmail.cf ``K'' line.
+
+ --cc Use the specified hash and B-Tree cache size.
+
+ --DD Use to specify the character to use to indicate a comment (which
+ is ignored) instead of the default of '#'.
+
+ --dd Allow duplicate keys in the map. This is only allowed on B-Tree
+ format maps. If two identical keys are read, they will both be
+ inserted into the map.
+
+ --ee Allow empty value (right hand side).
+
+ --ff Normally all upper case letters in the key are folded to lower
+ case. This flag disables that behaviour. This is intended to
+ mesh with the -f flag in the KK line in sendmail.cf. The value
+ is never case folded.
+
+ --ll List supported map types.
+
+ --oo Append to an old file. This allows you to augment an existing
+ file.
+
+ --rr Allow replacement of existing keys. Normally mmaakkeemmaapp complains
+ if you repeat a key, and does not do the insert.
+
+ --ss Ignore safety checks on maps being created. This includes
+ checking for hard or symbolic links in world writable directo-
+ ries.
+
+ --tt Use the specified delimiter instead of white space (also for
+ dumping a map).
+
+ --uu dump (unmap) the content of the database to standard output.
+
+ --vv Verbosely print what it is doing.
+
+SSEEEE AALLSSOO
+ sendmail(8), newaliases(1)
+
+HHIISSTTOORRYY
+ The mmaakkeemmaapp command appeared in 4.4BSD.
+
+
+
+ $Date: 2008/05/02 23:07:48 $ MAKEMAP(8)
diff --git a/makemap/makemap.8 b/makemap/makemap.8
index 96338e79cb0f..ca8a949de863 100644
--- a/makemap/makemap.8
+++ b/makemap/makemap.8
@@ -8,9 +8,9 @@
.\" the sendmail distribution.
.\"
.\"
-.\" $Id: makemap.8,v 8.30 2002/06/27 23:41:04 gshapiro Exp $
+.\" $Id: makemap.8,v 8.31 2008/05/02 23:07:48 ca Exp $
.\"
-.TH MAKEMAP 8 "$Date: 2002/06/27 23:41:04 $"
+.TH MAKEMAP 8 "$Date: 2008/05/02 23:07:48 $"
.SH NAME
makemap
\- create database maps for sendmail
@@ -156,7 +156,8 @@ This includes checking for hard or symbolic
links in world writable directories.
.TP
.B \-t
-Use the specified delimiter instead of white space.
+Use the specified delimiter instead of white space
+(also for dumping a map).
.TP
.B \-u
dump (unmap) the content of the database to standard output.
diff --git a/makemap/makemap.c b/makemap/makemap.c
index 730274848a7b..cacec001e768 100644
--- a/makemap/makemap.c
+++ b/makemap/makemap.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2002, 2004 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2002, 2004, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1992 Eric P. Allman. All rights reserved.
* Copyright (c) 1992, 1993
@@ -20,7 +20,7 @@ SM_IDSTR(copyright,
Copyright (c) 1992, 1993\n\
The Regents of the University of California. All rights reserved.\n")
-SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.178 2007/05/11 18:45:39 ca Exp $")
+SM_IDSTR(id, "@(#)$Id: makemap.c,v 8.179 2008/04/14 02:06:16 ca Exp $")
#include <sys/types.h>
@@ -378,9 +378,10 @@ main(argc, argv)
break;
(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
- "%.*s\t%.*s\n",
+ "%.*s%c%.*s\n",
(int) db_key.size,
(char *) db_key.data,
+ (sep != '\0') ? sep : '\t',
(int) db_val.size,
(char *)db_val.data);
diff --git a/praliases/Build b/praliases/Build
new file mode 100755
index 000000000000..543779cb3e6e
--- /dev/null
+++ b/praliases/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 1999/03/02 02:34:32 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/praliases/praliases.0 b/praliases/praliases.0
new file mode 100644
index 000000000000..03047014c848
--- /dev/null
+++ b/praliases/praliases.0
@@ -0,0 +1,37 @@
+PRALIASES(8) PRALIASES(8)
+
+
+
+NNAAMMEE
+ praliases - display system mail aliases
+
+SSYYNNOOPPSSIISS
+ pprraalliiaasseess [--CC _f_i_l_e] [--ff _f_i_l_e] [_k_e_y _._._.]
+
+DDEESSCCRRIIPPTTIIOONN
+ The pprraalliiaasseess utility displays the current system aliases, one per
+ line, in no particular order. The special internal @:@ alias will be
+ displayed if present.
+
+ The options are as follows:
+
+ --CC Read the specified sendmail configuration file instead of the
+ default sseennddmmaaiill configuration file.
+
+ --ff Read the specified file instead of the configured sseennddmmaaiill sys-
+ tem aliases file(s).
+
+ If one or more keys are specified on the command line, only entries
+ which match those keys are displayed.
+
+ The pprraalliiaasseess utility exits 0 on success, and >0 if an error occurs.
+
+FFIILLEESS
+ /etc/mail/sendmail.cf The default sseennddmmaaiill configuration file.
+
+SSEEEE AALLSSOO
+ mailq(1), sendmail(8)
+
+
+
+ $Date: 2000/12/15 19:53:45 $ PRALIASES(8)
diff --git a/rmail/Build b/rmail/Build
new file mode 100755
index 000000000000..ffc3997819ef
--- /dev/null
+++ b/rmail/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 1999/03/02 02:34:45 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/rmail/rmail.0 b/rmail/rmail.0
new file mode 100644
index 000000000000..95ce9ba7af6e
--- /dev/null
+++ b/rmail/rmail.0
@@ -0,0 +1,36 @@
+RMAIL(8) RMAIL(8)
+
+
+
+NNAAMMEE
+ rmail - handle remote mail received via uucp
+
+SSYYNNOOPPSSIISS
+ rrmmaaiill [--DD _d_o_m_a_i_n] [--TT] _u_s_e_r _._._.
+
+DDEESSCCRRIIPPTTIIOONN
+ RRmmaaiill interprets incoming mail received via uucp(1), collapsing
+ ``From'' lines in the form generated by mail.local(8) into a single
+ line of the form ``return-path!sender'', and passing the processed mail
+ on to sendmail(8).
+
+ RRmmaaiill is explicitly designed for use with uucp and sendmail.
+
+ FFllaaggss
+ --DD Use the specified _d_o_m_a_i_n instead of the default domain of
+ ``UUCP''.
+
+ --TT Turn on debugging.
+
+SSEEEE AALLSSOO
+ uucp(1), mail.local(8), sendmail(8)
+
+HHIISSTTOORRYY
+ The rrmmaaiill program appeared in 4.2BSD.
+
+BBUUGGSS
+ RRmmaaiill should not reside in /bin.
+
+
+
+ $Date: 2001/04/03 01:53:16 $ RMAIL(8)
diff --git a/smrsh/Build b/smrsh/Build
new file mode 100755
index 000000000000..c402815f655b
--- /dev/null
+++ b/smrsh/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.4 1999/03/02 02:34:57 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/smrsh/README b/smrsh/README
index 0719a3f506c9..452b208ea264 100644
--- a/smrsh/README
+++ b/smrsh/README
@@ -24,7 +24,7 @@ Unix C compilers.
smrsh should build on most systems with the enclosed Build script:
- host.domain% sh Build
+ host.domain% sh ./Build
To compile smrsh.c by hand, use the following command:
@@ -36,13 +36,13 @@ compiler, you should compile with the -Bstatic option.
host.domain% cc -Bstatic -o smrsh smrsh.c
or
- host.domain% sh Build LDOPTS=-Bstatic
+ host.domain% sh ./Build LDOPTS=-Bstatic
With gcc, the GNU C compiler, use the -static option.
host.domain% cc -static -o smrsh smrsh.c
or
- host.domain% sh Build LDOPTS=-static
+ host.domain% sh ./Build LDOPTS=-static
The following C defines can be set defined to change the search path and
the bin directory used by smrsh.
@@ -58,7 +58,7 @@ conf_smrsh_ENVDEF.
As root, install smrsh in /usr/libexec. Using the Build script:
- host.domain# sh Build install
+ host.domain# sh ./Build install
For manual installation: install smrsh in the /usr/libexec
directory, with mode 511.
@@ -163,4 +163,4 @@ a typical system follows:
host.domain# /usr/sbin/sendmail -bd -q30m
-$Revision: 8.9 $, Last updated $Date: 2003/05/26 04:30:58 $
+$Revision: 8.10 $, Last updated $Date: 2008/02/12 16:40:06 $
diff --git a/smrsh/smrsh.0 b/smrsh/smrsh.0
new file mode 100644
index 000000000000..65fc2f09981f
--- /dev/null
+++ b/smrsh/smrsh.0
@@ -0,0 +1,65 @@
+SMRSH(8) SMRSH(8)
+
+
+
+NNAAMMEE
+ smrsh - restricted shell for sendmail
+
+SSYYNNOOPPSSIISS
+ ssmmrrsshh --cc command
+
+DDEESSCCRRIIPPTTIIOONN
+ The _s_m_r_s_h program is intended as a replacement for _s_h for use in the
+ ``prog'' mailer in _s_e_n_d_m_a_i_l(8) configuration files. It sharply limits
+ the commands that can be run using the ``|program'' syntax of _s_e_n_d_m_a_i_l
+ in order to improve the over all security of your system. Briefly,
+ even if a ``bad guy'' can get sendmail to run a program without going
+ through an alias or forward file, _s_m_r_s_h limits the set of programs that
+ he or she can execute.
+
+ Briefly, _s_m_r_s_h limits programs to be in a single directory, by default
+ /usr/adm/sm.bin, allowing the system administrator to choose the set of
+ acceptable commands, and to the shell builtin commands ``exec'',
+ ``exit'', and ``echo''. It also rejects any commands with the charac-
+ ters ``', `<', `>', `;', `$', `(', `)', `\r' (carriage return), or `\n'
+ (newline) on the command line to prevent ``end run'' attacks. It
+ allows ``||'' and ``&&'' to enable commands like: ``"|exec
+ /usr/local/bin/filter || exit 75"''
+
+ Initial pathnames on programs are stripped, so forwarding to
+ ``/usr/ucb/vacation'', ``/usr/bin/vacation'',
+ ``/home/server/mydir/bin/vacation'', and ``vacation'' all actually for-
+ ward to ``/usr/adm/sm.bin/vacation''.
+
+ System administrators should be conservative about populating the
+ sm.bin directory. For example, a reasonable additions is _v_a_c_a_t_i_o_n(1),
+ and the like. No matter how brow-beaten you may be, never include any
+ shell or shell-like program (such as _p_e_r_l(1)) in the sm.bin directory.
+ Note that this does not restrict the use of shell or perl scripts in
+ the sm.bin directory (using the ``#!'' syntax); it simply disallows
+ execution of arbitrary programs. Also, including mail filtering pro-
+ grams such as _p_r_o_c_m_a_i_l(1) is a very bad idea. _p_r_o_c_m_a_i_l(1) allows users
+ to run arbitrary programs in their _p_r_o_c_m_a_i_l_r_c(5).
+
+CCOOMMPPIILLAATTIIOONN
+ Compilation should be trivial on most systems. You may need to use
+ -DSMRSH_PATH=\"_p_a_t_h\" to adjust the default search path (defaults to
+ ``/bin:/usr/bin:/usr/ucb'') and/or -DSMRSH_CMDDIR=\"_d_i_r\" to change the
+ default program directory (defaults to ``/usr/adm/sm.bin'').
+
+FFIILLEESS
+ /usr/adm/sm.bin - default directory for restricted programs on most OSs
+
+ /var/adm/sm.bin - directory for restricted programs on HP UX and
+ Solaris
+
+ /usr/libexec/sm.bin - directory for restricted programs on FreeBSD (>=
+ 3.3) and DragonFly BSD
+
+
+SSEEEE AALLSSOO
+ sendmail(8)
+
+
+
+ $Date: 2004/08/06 03:55:35 $ SMRSH(8)
diff --git a/src/Build b/src/Build
new file mode 100755
index 000000000000..620a814f87e5
--- /dev/null
+++ b/src/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.6 2000/04/10 06:32:53 gshapiro Exp $
+
+exec sh ../devtools/bin/Build $*
diff --git a/src/Makefile.m4 b/src/Makefile.m4
index b2bfa1a8d25a..fd015b4937a3 100644
--- a/src/Makefile.m4
+++ b/src/Makefile.m4
@@ -1,4 +1,4 @@
-dnl $Id: Makefile.m4,v 8.112 2007/10/17 21:29:43 ca Exp $
+dnl $Id: Makefile.m4,v 8.115 2008/03/27 16:13:33 ca Exp $
include(confBUILDTOOLSDIR`/M4/switch.m4')
define(`confREQUIRE_LIBSM', `true')
diff --git a/src/README b/src/README
index 2039674381d8..34313fc8506c 100644
--- a/src/README
+++ b/src/README
@@ -9,7 +9,7 @@
# the sendmail distribution.
#
#
-# $Id: README,v 8.390 2006/11/13 22:27:27 ca Exp $
+# $Id: README,v 8.391 2008/02/12 16:38:21 ca Exp $
#
This directory contains the source files for sendmail(TM).
@@ -41,7 +41,7 @@ Sendmail is a trademark of Sendmail, Inc.
By far, the easiest way to compile sendmail is to use the "Build"
script:
- sh Build
+ sh ./Build
This uses the "uname" command to figure out what architecture you are
on and creates a proper Makefile accordingly. It also creates a
@@ -52,7 +52,7 @@ read the note below in the OPERATING SYSTEM AND COMPILE QUIRKS section.
If you need to look at other include or library directories, use the
-I or -L flags on the command line, e.g.,
- sh Build -I/usr/sww/include -L/usr/sww/lib
+ sh ./Build -I/usr/sww/include -L/usr/sww/lib
It's also possible to create local site configuration in the file
site.config.m4 (or another file settable with the -f flag). This
@@ -1847,4 +1847,4 @@ util.c Some general purpose routines used by sendmail.
version.c The version number and information about this
version of sendmail.
-(Version $Revision: 8.390 $, last update $Date: 2006/11/13 22:27:27 $ )
+(Version $Revision: 8.391 $, last update $Date: 2008/02/12 16:38:21 $ )
diff --git a/src/aliases.0 b/src/aliases.0
new file mode 100644
index 000000000000..60510303dd6c
--- /dev/null
+++ b/src/aliases.0
@@ -0,0 +1,89 @@
+ALIASES(5) ALIASES(5)
+
+
+
+NNAAMMEE
+ aliases - aliases file for sendmail
+
+SSYYNNOOPPSSIISS
+ aalliiaasseess
+
+DDEESSCCRRIIPPTTIIOONN
+ This file describes user ID aliases used by sendmail. The file resides
+ in /etc/mail and is formatted as a series of lines of the form
+
+ name: addr_1, addr_2, addr_3, . . .
+
+ The _n_a_m_e is the name to alias, and the _a_d_d_r___n are the aliases for that
+ name. _a_d_d_r___n can be another alias, a local username, a local filename,
+ a command, an include file, or an external address.
+
+ LLooccaall UUsseerrnnaammee
+ username
+
+ The username must be available via getpwnam(3).
+
+ LLooccaall FFiilleennaammee
+ /path/name
+
+ Messages are appended to the file specified by the full pathname
+ (starting with a slash (/))
+
+ CCoommmmaanndd
+ |command
+
+ A command starts with a pipe symbol (|), it receives messages
+ via standard input.
+
+ IInncclluuddee FFiillee
+ :include: /path/name
+
+ The aliases in pathname are added to the aliases for _n_a_m_e_.
+
+ EE--MMaaiill AAddddrreessss
+ user@domain
+
+ An e-mail address in RFC 822 format.
+
+ Lines beginning with white space are continuation lines. Another way
+ to continue lines is by placing a backslash directly before a newline.
+ Lines beginning with # are comments.
+
+ Aliasing occurs only on local names. Loops can not occur, since no
+ message will be sent to any person more than once.
+
+ If an alias is found for _n_a_m_e, sendmail then checks for an alias for
+ _o_w_n_e_r_-_n_a_m_e. If it is found and the result of the lookup expands to a
+ single address, the envelope sender address of the message is rewritten
+ to that address. If it is found and the result expands to more than
+ one address, the envelope sender address is changed to _o_w_n_e_r_-_n_a_m_e.
+
+ After aliasing has been done, local and valid recipients who have a
+ ``.forward'' file in their home directory have messages forwarded to
+ the list of users defined in that file.
+
+ This is only the raw data file; the actual aliasing information is
+ placed into a binary format in the file /etc/mail/aliases.db using the
+ program newaliases(1). A newaliases command should be executed each
+ time the aliases file is changed for the change to take effect.
+
+SSEEEE AALLSSOO
+ newaliases(1), dbm(3), dbopen(3), db_open(3), sendmail(8)
+
+ _S_E_N_D_M_A_I_L _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e_.
+
+ _S_E_N_D_M_A_I_L _A_n _I_n_t_e_r_n_e_t_w_o_r_k _M_a_i_l _R_o_u_t_e_r_.
+
+BBUUGGSS
+ If you have compiled sendmail with DBM support instead of NEWDB, you
+ may have encountered problems in dbm(3) restricting a single alias to
+ about 1000 bytes of information. You can get longer aliases by
+ ``chaining''; that is, make the last name in the alias be a dummy name
+ which is a continuation alias.
+
+HHIISSTTOORRYY
+ The aalliiaasseess file format appeared in 4.0BSD.
+
+
+
+ $Date: 2004/07/12 05:39:21 $ ALIASES(5)
diff --git a/src/collect.c b/src/collect.c
index 56fed0a66476..0a2cdaba83eb 100644
--- a/src/collect.c
+++ b/src/collect.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: collect.c,v 8.280 2006/11/29 00:20:40 ca Exp $")
+SM_RCSID("@(#)$Id: collect.c,v 8.282 2008/01/31 18:48:29 ca Exp $")
static void eatfrom __P((char *volatile, ENVELOPE *));
static void collect_doheader __P((ENVELOPE *));
@@ -308,6 +308,7 @@ collect(fp, smtpmode, hdrp, e, rsetsize)
dbto = smtpmode ? ((int) TimeOuts.to_datablock * 1000)
: SM_TIME_FOREVER;
sm_io_setinfo(fp, SM_IO_WHAT_TIMEOUT, &dbto);
+ set_tls_rd_tmo(TimeOuts.to_datablock);
c = SM_IO_EOF;
inputerr = false;
headeronly = hdrp != NULL;
diff --git a/src/conf.c b/src/conf.c
index 0cbb88e34ddf..bf9705712c44 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: conf.c,v 8.1136 2007/10/10 00:06:45 ca Exp $")
+SM_RCSID("@(#)$Id: conf.c,v 8.1141 2008/04/14 02:09:35 ca Exp $")
#include <sm/sendmail.h>
#include <sendmail/pathnames.h>
@@ -1513,7 +1513,7 @@ getla()
sm_dprintf("getla: symbol address = %#lx\n",
(unsigned long) Nl[X_AVENRUN].n_value);
if (lseek(kmem, (off_t) Nl[X_AVENRUN].n_value, SEEK_SET) == -1 ||
- read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun))
+ read(kmem, (char *) avenrun, sizeof(avenrun)) != sizeof(avenrun))
{
/* thank you Ian */
if (tTd(3, 1))
@@ -1835,7 +1835,7 @@ getla(void)
if (lseek(kmem, CAST_SYSMP(sysmp(MP_KERNADDR, MPKA_AVENRUN)), SEEK_SET)
== -1 ||
- read(kmem, (char *) avenrun, sizeof(avenrun)) < sizeof(avenrun))
+ read(kmem, (char *) avenrun, sizeof(avenrun)) != sizeof(avenrun))
{
if (tTd(3, 1))
sm_dprintf("getla: lseek or read: %s\n",
@@ -1943,6 +1943,13 @@ getla()
}
r = read(afd, &avenrun, sizeof(avenrun));
+ if (r != sizeof(avenrun))
+ {
+ sm_syslog(LOG_ERR, NOQID,
+ "can't read %s: %s", _PATH_AVENRUN,
+ r == -1 ? sm_errstring(errno) : "short read");
+ return -1;
+ }
if (tTd(3, 5))
sm_dprintf("getla: avenrun = %d\n", avenrun);
@@ -6024,6 +6031,10 @@ char *FFRCompileOptions[] =
/* DefaultAuthInfo doesn't really work in 8.13 anymore. */
"_FFR_ALLOW_SASLINFO",
#endif /* _FFR_ALLOW_SASLINFO */
+#if _FFR_BADRCPT_SHUTDOWN
+ /* shut down connection (421) if there are too many bad RCPTs */
+ "_FFR_BADRCPT_SHUTDOWN",
+#endif /* _FFR_BADRCPT_SHUTDOWN */
#if _FFR_BESTMX_BETTER_TRUNCATION
/* Better truncation of list of MX records for dns map. */
"_FFR_BESTMX_BETTER_TRUNCATION",
@@ -6164,6 +6175,10 @@ char *FFRCompileOptions[] =
/* Ignore extensions offered in response to HELO */
"_FFR_IGNORE_EXT_ON_HELO",
#endif /* _FFR_IGNORE_EXT_ON_HELO */
+#if _FFR_LOCAL_DAEMON
+ /* Local daemon mode (-bl) which only accepts loopback connections */
+ "_FFR_LOCAL_DAEMON",
+#endif /* _FFR_LOCAL_DAEMON */
#if _FFR_MAXDATASIZE
/*
** It is possible that a header is larger than MILTER_CHUNK_SIZE,
diff --git a/src/daemon.c b/src/daemon.c
index 76b5b582607a..06a36c7e6487 100644
--- a/src/daemon.c
+++ b/src/daemon.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include "map.h"
-SM_RCSID("@(#)$Id: daemon.c,v 8.678 2007/03/08 00:33:40 ca Exp $")
+SM_RCSID("@(#)$Id: daemon.c,v 8.680 2008/02/14 00:20:26 ca Exp $")
#if defined(SOCK_STREAM) || defined(__GNU_LIBRARY__)
# define USE_SOCK_STREAM 1
@@ -1257,7 +1257,8 @@ setupdaemon(daemonaddr)
#if NETINET
case AF_INET:
if (daemonaddr->sin.sin_addr.s_addr == 0)
- daemonaddr->sin.sin_addr.s_addr = INADDR_ANY;
+ daemonaddr->sin.sin_addr.s_addr =
+ LocalDaemon ? htonl(INADDR_LOOPBACK) : INADDR_ANY;
port = daemonaddr->sin.sin_port;
break;
#endif /* NETINET */
@@ -1265,7 +1266,8 @@ setupdaemon(daemonaddr)
#if NETINET6
case AF_INET6:
if (IN6_IS_ADDR_UNSPECIFIED(&daemonaddr->sin6.sin6_addr))
- daemonaddr->sin6.sin6_addr = in6addr_any;
+ daemonaddr->sin6.sin6_addr =
+ LocalDaemon ? in6addr_loopback : in6addr_any;
port = daemonaddr->sin6.sin6_port;
break;
#endif /* NETINET6 */
@@ -2204,7 +2206,8 @@ makeconnection(host, port, mci, e, enough)
#if NETINET
case AF_INET:
if (clt_addr.sin.sin_addr.s_addr == 0)
- clt_addr.sin.sin_addr.s_addr = INADDR_ANY;
+ clt_addr.sin.sin_addr.s_addr = LocalDaemon ?
+ htonl(INADDR_LOOPBACK) : INADDR_ANY;
else
clt_bind = true;
if (clt_addr.sin.sin_port != 0)
@@ -2215,7 +2218,8 @@ makeconnection(host, port, mci, e, enough)
#if NETINET6
case AF_INET6:
if (IN6_IS_ADDR_UNSPECIFIED(&clt_addr.sin6.sin6_addr))
- clt_addr.sin6.sin6_addr = in6addr_any;
+ clt_addr.sin6.sin6_addr = LocalDaemon ?
+ in6addr_loopback : in6addr_any;
else
clt_bind = true;
socksize = sizeof(struct sockaddr_in6);
@@ -3274,7 +3278,7 @@ myhostname(hostbuf, size)
if (strchr(hostbuf, '.') == NULL &&
!getcanonname(hostbuf, size, true, NULL))
{
- sm_syslog(LOG_CRIT, NOQID,
+ sm_syslog(LocalDaemon ? LOG_WARNING : LOG_CRIT, NOQID,
"My unqualified host name (%s) unknown; sleeping for retry",
hostbuf);
message("My unqualified host name (%s) unknown; sleeping for retry",
@@ -3282,7 +3286,7 @@ myhostname(hostbuf, size)
(void) sleep(60);
if (!getcanonname(hostbuf, size, true, NULL))
{
- sm_syslog(LOG_ALERT, NOQID,
+ sm_syslog(LocalDaemon ? LOG_WARNING : LOG_ALERT, NOQID,
"unable to qualify my own domain name (%s) -- using short name",
hostbuf);
message("WARNING: unable to qualify my own domain name (%s) -- using short name",
diff --git a/src/envelope.c b/src/envelope.c
index 20b0ba22b0c6..641c621a416c 100644
--- a/src/envelope.c
+++ b/src/envelope.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: envelope.c,v 8.304 2007/04/18 17:15:49 ca Exp $")
+SM_RCSID("@(#)$Id: envelope.c,v 8.305 2008/03/31 16:32:13 ca Exp $")
/*
** CLRSESSENVELOPE -- clear session oriented data in an envelope
@@ -75,7 +75,7 @@ newenvelope(e, parent, rpool)
register ENVELOPE *parent;
SM_RPOOL_T *rpool;
{
- int sendmode, dm;
+ int sendmode;
/*
** This code used to read:
@@ -86,16 +86,8 @@ newenvelope(e, parent, rpool)
** This meant macvalue() could go into an infinite loop.
*/
- dm = DM_NOTSET;
if (parent != NULL)
- {
- char *str;
-
sendmode = parent->e_sendmode;
- str = macvalue(macid("{deliveryMode}"), parent);
- if (str != NULL)
- dm = (int) str[0];
- }
else
sendmode = DM_NOTSET;
@@ -144,9 +136,7 @@ newenvelope(e, parent, rpool)
if (CurEnv->e_xfp != NULL)
(void) sm_io_flush(CurEnv->e_xfp, SM_TIME_DEFAULT);
if (sendmode != DM_NOTSET)
- e->e_sendmode = sendmode;
- if (dm != DM_NOTSET)
- set_delivery_mode(dm, e);
+ set_delivery_mode(sendmode, e);
return e;
}
diff --git a/src/mailq.0 b/src/mailq.0
new file mode 100644
index 000000000000..1a76dd418286
--- /dev/null
+++ b/src/mailq.0
@@ -0,0 +1,81 @@
+MAILQ(1) MAILQ(1)
+
+
+
+NNAAMMEE
+ mailq - print the mail queue
+
+SSYYNNOOPPSSIISS
+ mmaaiillqq [--AAcc] [--qq......] [--vv]
+
+DDEESSCCRRIIPPTTIIOONN
+ MMaaiillqq prints a summary of the mail messages queued for future delivery.
+
+ The first line printed for each message shows the internal identifier
+ used on this host for the message with a possible status character, the
+ size of the message in bytes, the date and time the message was
+ accepted into the queue, and the envelope sender of the message. The
+ second line shows the error message that caused this message to be
+ retained in the queue; it will not be present if the message is being
+ processed for the first time. The status characters are either ** to
+ indicate the job is being processed; XX to indicate that the load is too
+ high to process the job; and -- to indicate that the job is too young to
+ process. The following lines show message recipients, one per line.
+
+ MMaaiillqq is identical to ``sendmail -bp''.
+
+ The relevant options are as follows:
+
+ --AAcc Show the mail submission queue specified in _/_e_t_c_/_m_a_i_l_/_s_u_b_m_i_t_._c_f
+ instead of the MTA queue specified in _/_e_t_c_/_m_a_i_l_/_s_e_n_d_m_a_i_l_._c_f.
+
+ --qqLL Show the "lost" items in the mail queue instead of the normal
+ queue items.
+
+ --qqQQ Show the quarantined items in the mail queue instead of the nor-
+ mal queue items.
+
+ --qq[_!]I substr
+ Limit processed jobs to those containing _s_u_b_s_t_r as a substring
+ of the queue id or not when _! is specified.
+
+ --qq[_!]Q substr
+ Limit processed jobs to quarantined jobs containing _s_u_b_s_t_r as a
+ substring of the quarantine reason or not when _! is specified.
+
+ --qq[_!]R substr
+ Limit processed jobs to those containing _s_u_b_s_t_r as a substring
+ of one of the recipients or not when _! is specified.
+
+ --qq[_!]S substr
+ Limit processed jobs to those containing _s_u_b_s_t_r as a substring
+ of the sender or not when _! is specified.
+
+ --vv Print verbose information. This adds the priority of the mes-
+ sage and a single character indicator (``+'' or blank) indicat-
+ ing whether a warning message has been sent on the first line of
+ the message. Additionally, extra lines may be intermixed with
+ the recipients indicating the ``controlling user'' information;
+ this shows who will own any programs that are executed on behalf
+ of this message and the name of the alias this command expanded
+ from, if any. Moreover, status messages for each recipient are
+ printed if available.
+
+ Several sendmail.cf options influence the behavior of the mmaaiillqq util-
+ ity: The number of items printed per queue group is restricted by
+ MMaaxxQQuueeuueeRRuunnSSiizzee if that value is set. The status character ** is not
+ printed for some values of QQuueeuueeSSoorrttOOrrddeerr,, e.g., filename, random, mod-
+ ification, and none, unless a --qq option is used to limit the processed
+ jobs.
+
+ The mmaaiillqq utility exits 0 on success, and >0 if an error occurs.
+
+SSEEEE AALLSSOO
+ sendmail(8)
+
+HHIISSTTOORRYY
+ The mmaaiillqq command appeared in 4.0BSD.
+
+
+
+ $Date: 2007/03/22 18:21:27 $ MAILQ(1)
diff --git a/src/main.c b/src/main.c
index 8680add40b0b..d68d5b590d6b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -26,7 +26,7 @@ SM_UNUSED(static char copyright[]) =
The Regents of the University of California. All rights reserved.\n";
#endif /* ! lint */
-SM_RCSID("@(#)$Id: main.c,v 8.963 2007/06/29 20:07:37 ca Exp $")
+SM_RCSID("@(#)$Id: main.c,v 8.967 2008/03/31 16:32:13 ca Exp $")
#if NETINET || NETINET6
@@ -302,6 +302,9 @@ main(argc, argv, envp)
ExitStat = EX_OK;
SubmitMode = SUBMIT_UNKNOWN;
+#if _FFR_LOCAL_DAEMON
+ LocalDaemon = false;
+#endif /* _FFR_LOCAL_DAEMON */
#if XDEBUG
checkfd012("after openlog");
#endif /* XDEBUG */
@@ -401,6 +404,13 @@ main(argc, argv, envp)
OpMode = j;
break;
+#if _FFR_LOCAL_DAEMON
+ case MD_LOCAL:
+ OpMode = MD_DAEMON;
+ LocalDaemon = true;
+ break;
+#endif /* _FFR_LOCAL_DAEMON */
+
case MD_FREEZE:
(void) sm_io_fprintf(smioout, SM_TIME_DEFAULT,
"Frozen configurations unsupported\n");
diff --git a/src/makesendmail b/src/makesendmail
new file mode 100755
index 000000000000..9ca35206710f
--- /dev/null
+++ b/src/makesendmail
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: makesendmail,v 8.4 1999/04/04 07:01:42 gshapiro Exp $
+
+exec ./Build $*
diff --git a/src/mci.c b/src/mci.c
index ae33f66ce30b..277011770be7 100644
--- a/src/mci.c
+++ b/src/mci.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: mci.c,v 8.218 2006/08/15 23:24:57 ca Exp $")
+SM_RCSID("@(#)$Id: mci.c,v 8.221 2007/11/13 23:44:25 gshapiro Exp $")
#if NETINET || NETINET6
# include <arpa/inet.h>
@@ -1143,16 +1143,27 @@ mci_traverse_persistent(action, pathname)
pathname, sm_errstring(errno));
return -1;
}
- len = sizeof(newpath) - MAXNAMLEN - 3;
+
+ /*
+ ** Reserve space for trailing '/', at least one
+ ** character, and '\0'
+ */
+
+ len = sizeof(newpath) - 3;
if (sm_strlcpy(newpath, pathname, len) >= len)
{
+ int save_errno = errno;
+
if (tTd(56, 2))
sm_dprintf("mci_traverse: path \"%s\" too long",
pathname);
+ (void) closedir(d);
+ errno = save_errno;
return -1;
}
newptr = newpath + strlen(newpath);
*newptr++ = '/';
+ len = sizeof(newpath) - (newptr - newpath);
/*
** repeat until no file has been removed
@@ -1169,9 +1180,17 @@ mci_traverse_persistent(action, pathname)
if (e->d_name[0] == '.')
continue;
- (void) sm_strlcpy(newptr, e->d_name,
- sizeof(newpath) -
- (newptr - newpath));
+ if (sm_strlcpy(newptr, e->d_name, len) >= len)
+ {
+ /* Skip truncated copies */
+ if (tTd(56, 4))
+ {
+ *newptr = '\0';
+ sm_dprintf("mci_traverse: path \"%s%s\" too long",
+ newpath, e->d_name);
+ }
+ continue;
+ }
if (StopRequest)
stop_sendmail();
diff --git a/src/newaliases.0 b/src/newaliases.0
new file mode 100644
index 000000000000..540c7d8df5b5
--- /dev/null
+++ b/src/newaliases.0
@@ -0,0 +1,35 @@
+NEWALIASES(1) NEWALIASES(1)
+
+
+
+NNAAMMEE
+ newaliases - rebuild the data base for the mail aliases file
+
+SSYYNNOOPPSSIISS
+ nneewwaalliiaasseess
+
+DDEESSCCRRIIPPTTIIOONN
+ NNeewwaalliiaasseess rebuilds the random access data base for the mail aliases
+ file /etc/mail/aliases. It must be run each time this file is changed
+ in order for the change to take effect.
+
+ NNeewwaalliiaasseess is identical to ``sendmail -bi''.
+
+ The nneewwaalliiaasseess utility exits 0 on success, and >0 if an error occurs.
+
+ Notice: do nnoott use mmaakkeemmaapp to create the aliases data base, because
+ nneewwaalliiaasseess puts a special token into the data base that is required by
+ sseennddmmaaiill..
+
+FFIILLEESS
+ /etc/mail/aliases The mail aliases file
+
+SSEEEE AALLSSOO
+ aliases(5), sendmail(8)
+
+HHIISSTTOORRYY
+ The nneewwaalliiaasseess command appeared in 4.0BSD.
+
+
+
+ $Date: 2001/10/10 03:23:17 $ NEWALIASES(1)
diff --git a/src/parseaddr.c b/src/parseaddr.c
index eca60f984c48..19bcf739bd91 100644
--- a/src/parseaddr.c
+++ b/src/parseaddr.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: parseaddr.c,v 8.401 2007/09/27 23:33:59 ca Exp $")
+SM_RCSID("@(#)$Id: parseaddr.c,v 8.403 2008/02/08 02:27:35 ca Exp $")
#include <sm/sendmail.h>
#include "map.h"
@@ -1460,6 +1460,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
size_t trsize;
char *replac;
int endtoken;
+ bool external;
STAB *map;
char *mapname;
char **key_rvp;
@@ -1575,6 +1576,7 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
true);
argvect[0] = cbuf;
replac = map_lookup(map, cbuf, argvect, &rstat, e);
+ external = replac != NULL;
/* if no replacement, use default */
if (replac == NULL && default_rvp != NULL)
@@ -1599,7 +1601,8 @@ rewrite(pvp, ruleset, reclevel, e, maxatom)
{
/* scan the new replacement */
xpvp = prescan(replac, '\0', pvpbuf,
- sizeof(pvpbuf), NULL, NULL,
+ sizeof(pvpbuf), NULL,
+ external ? NULL : IntTokenTab,
false);
if (xpvp == NULL)
{
@@ -2263,7 +2266,7 @@ cataddr(pvp, evp, buf, sz, spacesub, external)
{
char *q;
- natomtok = (ExtTokenTab[**pvp & 0xff] == ATM);
+ natomtok = (IntTokenTab[**pvp & 0xff] == ATM);
if (oatomtok && natomtok)
{
*p++ = spacesub;
diff --git a/src/queue.c b/src/queue.c
index e80a0357b9e9..d4c6369d0e6a 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/sem.h>
-SM_RCSID("@(#)$Id: queue.c,v 8.975 2007/06/18 20:08:40 ca Exp $")
+SM_RCSID("@(#)$Id: queue.c,v 8.977 2008/02/15 23:19:58 ca Exp $")
#include <dirent.h>
@@ -4514,7 +4514,7 @@ readqf(e, openonly)
(void) sm_io_close(qfp, SM_TIME_DEFAULT);
return false;
}
-
+
#if _FFR_QF_PARANOIA
/* Check to make sure key fields were read */
if (e->e_from.q_mailer == NULL)
@@ -6596,8 +6596,8 @@ init_sem(owner)
if (SemId < 0)
{
sm_syslog(LOG_ERR, NOQID,
- "func=init_sem, sem_key=%ld, sm_sem_start=%d",
- (long) SemKey, SemId);
+ "func=init_sem, sem_key=%ld, sm_sem_start=%d, error=%s",
+ (long) SemKey, SemId, sm_errstring(-SemId));
return;
}
#endif /* SM_CONF_SEM */
diff --git a/src/ratectrl.c b/src/ratectrl.c
index 22f9803efb5f..8b95b3753df0 100644
--- a/src/ratectrl.c
+++ b/src/ratectrl.c
@@ -45,7 +45,7 @@
*/
#include <sendmail.h>
-SM_RCSID("@(#)$Id: ratectrl.c,v 8.11 2006/08/15 23:24:57 ca Exp $")
+SM_RCSID("@(#)$Id: ratectrl.c,v 8.12 2008/02/11 22:56:05 ca Exp $")
/*
** stuff included - given some warnings (inet_ntoa)
@@ -114,7 +114,7 @@ connection_rate_check(hostaddr, e)
/* update server connection rate */
totalrate = total_rate(now, e == NULL);
#if RATECTL_DEBUG
- sm_syslog(LOG_INFO, NOQID, "global connection rate: %d", globalRate);
+ sm_syslog(LOG_INFO, NOQID, "global connection rate: %d", totalrate);
#endif /* RATECTL_DEBUG */
/* update client connection rate */
diff --git a/src/readcf.c b/src/readcf.c
index 0d0849b18d25..445df9e10686 100644
--- a/src/readcf.c
+++ b/src/readcf.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -14,7 +14,7 @@
#include <sendmail.h>
#include <sm/sendmail.h>
-SM_RCSID("@(#)$Id: readcf.c,v 8.664 2007/07/10 17:01:22 ca Exp $")
+SM_RCSID("@(#)$Id: readcf.c,v 8.666 2008/02/14 17:25:14 ca Exp $")
#if NETINET || NETINET6
# include <arpa/inet.h>
@@ -2249,6 +2249,12 @@ static struct optioninfo
# define O_ADDR_TYPE_MODES 0xe0
{ "AddrTypeModes", O_ADDR_TYPE_MODES, OI_NONE },
#endif /* _FFR_ADDR_TYPE_MODES */
+#if _FFR_BADRCPT_SHUTDOWN
+# define O_RCPTSHUTD 0xe1
+ { "BadRcptShutdown", O_RCPTSHUTD, OI_SAFE },
+# define O_RCPTSHUTDG 0xe2
+ { "BadRcptShutdownGood", O_RCPTSHUTDG, OI_SAFE },
+#endif /* _FFR_BADRCPT_SHUTDOWN */
{ NULL, '\0', OI_NONE }
};
@@ -3817,6 +3823,16 @@ setoption(opt, val, safe, sticky, e)
break;
#endif /* _FFR_ADDR_TYPE_MODES */
+#if _FFR_BADRCPT_SHUTDOWN
+ case O_RCPTSHUTD:
+ BadRcptShutdown = atoi(val);
+ break;
+
+ case O_RCPTSHUTDG:
+ BadRcptShutdownGood = atoi(val);
+ break;
+#endif /* _FFR_BADRCPT_SHUTDOWN */
+
default:
if (tTd(37, 1))
{
diff --git a/src/sendmail.0 b/src/sendmail.0
new file mode 100644
index 000000000000..060ed242f616
--- /dev/null
+++ b/src/sendmail.0
@@ -0,0 +1,465 @@
+SENDMAIL(8) SENDMAIL(8)
+
+
+
+NNAAMMEE
+ sendmail - an electronic mail transport agent
+
+SSYYNNOOPPSSIISS
+ sseennddmmaaiill [_f_l_a_g_s] [_a_d_d_r_e_s_s _._._.]
+ nneewwaalliiaasseess
+ mmaaiillqq [--vv]
+ hhoossttssttaatt
+ ppuurrggeessttaatt
+ ssmmttppdd
+
+DDEESSCCRRIIPPTTIIOONN
+ SSeennddmmaaiill sends a message to one or more _r_e_c_i_p_i_e_n_t_s_, routing the message
+ over whatever networks are necessary. SSeennddmmaaiill does internetwork for-
+ warding as necessary to deliver the message to the correct place.
+
+ SSeennddmmaaiill is not intended as a user interface routine; other programs
+ provide user-friendly front ends; sseennddmmaaiill is used only to deliver pre-
+ formatted messages.
+
+ With no flags, sseennddmmaaiill reads its standard input up to an end-of-file
+ or a line consisting only of a single dot and sends a copy of the mes-
+ sage found there to all of the addresses listed. It determines the
+ network(s) to use based on the syntax and contents of the addresses.
+
+ Local addresses are looked up in a file and aliased appropriately.
+ Aliasing can be prevented by preceding the address with a backslash.
+ Beginning with 8.10, the sender is included in any alias expansions,
+ e.g., if `john' sends to `group', and `group' includes `john' in the
+ expansion, then the letter will also be delivered to `john'.
+
+ PPaarraammeetteerrss
+ --AAcc Use submit.cf even if the operation mode does not indicate an
+ initial mail submission.
+
+ --AAmm Use sendmail.cf even if the operation mode indicates an initial
+ mail submission.
+
+ --BB_t_y_p_e Set the body type to _t_y_p_e. Current legal values are 7BIT or
+ 8BITMIME.
+
+ --bbaa Go into ARPANET mode. All input lines must end with a CR-LF,
+ and all messages will be generated with a CR-LF at the end.
+ Also, the ``From:'' and ``Sender:'' fields are examined for the
+ name of the sender.
+
+ --bbdd Run as a daemon. SSeennddmmaaiill will fork and run in background lis-
+ tening on socket 25 for incoming SMTP connections. This is nor-
+ mally run from /etc/rc.
+
+ --bbDD Same as --bbdd except runs in foreground.
+
+ --bbhh Print the persistent host status database.
+
+ --bbHH Purge expired entries from the persistent host status database.
+
+ --bbii Initialize the alias database.
+
+ --bbmm Deliver mail in the usual way (default).
+
+ --bbpp Print a listing of the queue(s).
+
+ --bbPP Print number of entries in the queue(s); only available with
+ shared memory support.
+
+ --bbss Use the SMTP protocol as described in RFC821 on standard input
+ and output. This flag implies all the operations of the --bbaa
+ flag that are compatible with SMTP.
+
+ --bbtt Run in address test mode. This mode reads addresses and shows
+ the steps in parsing; it is used for debugging configuration
+ tables.
+
+ --bbvv Verify names only - do not try to collect or deliver a message.
+ Verify mode is normally used for validating users or mailing
+ lists.
+
+ --CC_f_i_l_e Use alternate configuration file. SSeennddmmaaiill gives up any
+ enhanced (set-user-ID or set-group-ID) privileges if an alter-
+ nate configuration file is specified.
+
+ --DD _l_o_g_f_i_l_e
+ Send debugging output to the indicated log file instead of std-
+ out.
+
+ --dd_c_a_t_e_g_o_r_y.._l_e_v_e_l_._._.
+ Set the debugging flag for _c_a_t_e_g_o_r_y to _l_e_v_e_l. _C_a_t_e_g_o_r_y is
+ either an integer or a name specifying the topic, and _l_e_v_e_l an
+ integer specifying the level of debugging output desired.
+ Higher levels generally mean more output. More than one flag
+ can be specified by separating them with commas. A list of
+ numeric debugging categories can be found in the TRACEFLAGS file
+ in the sendmail source distribution.
+ The option --dd00..11 prints the version of sseennddmmaaiill and the options
+ it was compiled with.
+ Most other categories are only useful with, and documented in,
+ sseennddmmaaiill's source code.
+
+ --FF_f_u_l_l_n_a_m_e
+ Set the full name of the sender.
+
+ --ff_n_a_m_e Sets the name of the ``from'' person (i.e., the envelope sender
+ of the mail). This address may also be used in the From: header
+ if that header is missing during initial submission. The enve-
+ lope sender address is used as the recipient for delivery status
+ notifications and may also appear in a Return-Path: header. --ff
+ should only be used by ``trusted'' users (normally _r_o_o_t, _d_a_e_m_o_n,
+ and _n_e_t_w_o_r_k) or if the person you are trying to become is the
+ same as the person you are. Otherwise, an X-Authentication-
+ Warning header will be added to the message.
+
+ --GG Relay (gateway) submission of a message, e.g., when rrmmaaiill calls
+ sseennddmmaaiill ..
+
+ --hh_N Set the hop count to _N. The hop count is incremented every time
+ the mail is processed. When it reaches a limit, the mail is
+ returned with an error message, the victim of an aliasing loop.
+ If not specified, ``Received:'' lines in the message are
+ counted.
+
+ --ii Ignore dots alone on lines by themselves in incoming messages.
+ This should be set if you are reading data from a file.
+
+ --LL _t_a_g Set the identifier used in syslog messages to the supplied _t_a_g.
+
+ --NN _d_s_n Set delivery status notification conditions to _d_s_n, which can be
+ `never' for no notifications or a comma separated list of the
+ values `failure' to be notified if delivery failed, `delay' to
+ be notified if delivery is delayed, and `success' to be notified
+ when the message is successfully delivered.
+
+ --nn Don't do aliasing.
+
+ --OO _o_p_t_i_o_n=_v_a_l_u_e
+ Set option _o_p_t_i_o_n to the specified _v_a_l_u_e. This form uses long
+ names. See below for more details.
+
+ --oo_x _v_a_l_u_e
+ Set option _x to the specified _v_a_l_u_e. This form uses single
+ character names only. The short names are not described in this
+ manual page; see the _S_e_n_d_m_a_i_l _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e
+ for details.
+
+ --pp_p_r_o_t_o_c_o_l
+ Set the name of the protocol used to receive the message. This
+ can be a simple protocol name such as ``UUCP'' or a protocol and
+ hostname, such as ``UUCP:ucbvax''.
+
+ --qq[_t_i_m_e]
+ Process saved messages in the queue at given intervals. If _t_i_m_e
+ is omitted, process the queue once. _T_i_m_e is given as a tagged
+ number, with `s' being seconds, `m' being minutes (default), `h'
+ being hours, `d' being days, and `w' being weeks. For example,
+ `-q1h30m' or `-q90m' would both set the timeout to one hour
+ thirty minutes. By default, sseennddmmaaiill will run in the back-
+ ground. This option can be used safely with --bbdd.
+
+ --qqpp[_t_i_m_e]
+ Similar to --qq_t_i_m_e, except that instead of periodically forking a
+ child to process the queue, sendmail forks a single persistent
+ child for each queue that alternates between processing the
+ queue and sleeping. The sleep time is given as the argument; it
+ defaults to 1 second. The process will always sleep at least 5
+ seconds if the queue was empty in the previous queue run.
+
+ --qqf Process saved messages in the queue once and do not fork(), but
+ run in the foreground.
+
+ --qqG_n_a_m_e
+ Process jobs in queue group called _n_a_m_e only.
+
+ --qq[_!]I_s_u_b_s_t_r
+ Limit processed jobs to those containing _s_u_b_s_t_r as a substring
+ of the queue id or not when _! is specified.
+
+ --qq[_!]Q_s_u_b_s_t_r
+ Limit processed jobs to quarantined jobs containing _s_u_b_s_t_r as a
+ substring of the quarantine reason or not when _! is specified.
+
+ --qq[_!]R_s_u_b_s_t_r
+ Limit processed jobs to those containing _s_u_b_s_t_r as a substring
+ of one of the recipients or not when _! is specified.
+
+ --qq[_!]S_s_u_b_s_t_r
+ Limit processed jobs to those containing _s_u_b_s_t_r as a substring
+ of the sender or not when _! is specified.
+
+ --QQ[reason]
+ Quarantine a normal queue items with the given reason or unquar-
+ antine quarantined queue items if no reason is given. This
+ should only be used with some sort of item matching using as
+ described above.
+
+ --RR _r_e_t_u_r_n
+ Set the amount of the message to be returned if the message
+ bounces. The _r_e_t_u_r_n parameter can be `full' to return the
+ entire message or `hdrs' to return only the headers. In the
+ latter case also local bounces return only the headers.
+
+ --rr_n_a_m_e An alternate and obsolete form of the --ff flag.
+
+ --tt Read message for recipients. To:, Cc:, and Bcc: lines will be
+ scanned for recipient addresses. The Bcc: line will be deleted
+ before transmission.
+
+ --VV _e_n_v_i_d
+ Set the original envelope id. This is propagated across SMTP to
+ servers that support DSNs and is returned in DSN-compliant error
+ messages.
+
+ --vv Go into verbose mode. Alias expansions will be announced, etc.
+
+ --XX _l_o_g_f_i_l_e
+ Log all traffic in and out of mailers in the indicated log file.
+ This should only be used as a last resort for debugging mailer
+ bugs. It will log a lot of data very quickly.
+
+ ---- Stop processing command flags and use the rest of the arguments
+ as addresses.
+
+ OOppttiioonnss
+ There are also a number of processing options that may be set. Nor-
+ mally these will only be used by a system administrator. Options may
+ be set either on the command line using the --oo flag (for short names),
+ the --OO flag (for long names), or in the configuration file. This is a
+ partial list limited to those options that are likely to be useful on
+ the command line and only shows the long names; for a complete list
+ (and details), consult the _S_e_n_d_m_a_i_l _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e.
+ The options are:
+
+ AliasFile=_f_i_l_e
+ Use alternate alias file.
+
+ HoldExpensive
+ On mailers that are considered ``expensive'' to connect to,
+ don't initiate immediate connection. This requires queueing.
+
+ CheckpointInterval=_N
+ Checkpoint the queue file after every _N successful deliveries
+ (default 10). This avoids excessive duplicate deliveries when
+ sending to long mailing lists interrupted by system crashes.
+
+ DeliveryMode=_x
+ Set the delivery mode to _x. Delivery modes are `i' for interac-
+ tive (synchronous) delivery, `b' for background (asynchronous)
+ delivery, `q' for queue only - i.e., actual delivery is done the
+ next time the queue is run, and `d' for deferred - the same as
+ `q' except that database lookups for maps which have set the -D
+ option (default for the host map) are avoided.
+
+ ErrorMode=_x
+ Set error processing to mode _x. Valid modes are `m' to mail
+ back the error message, `w' to ``write'' back the error message
+ (or mail it back if the sender is not logged in), `p' to print
+ the errors on the terminal (default), `q' to throw away error
+ messages (only exit status is returned), and `e' to do special
+ processing for the BerkNet. If the text of the message is not
+ mailed back by modes `m' or `w' and if the sender is local to
+ this machine, a copy of the message is appended to the file
+ _d_e_a_d_._l_e_t_t_e_r in the sender's home directory.
+
+ SaveFromLine
+ Save UNIX-style From lines at the front of messages.
+
+ MaxHopCount=_N
+ The maximum number of times a message is allowed to ``hop''
+ before we decide it is in a loop.
+
+ IgnoreDots
+ Do not take dots on a line by themselves as a message termina-
+ tor.
+
+ SendMimeErrors
+ Send error messages in MIME format. If not set, the DSN (Deliv-
+ ery Status Notification) SMTP extension is disabled.
+
+ ConnectionCacheTimeout=_t_i_m_e_o_u_t
+ Set connection cache timeout.
+
+ ConnectionCacheSize=_N
+ Set connection cache size.
+
+ LogLevel=_n
+ The log level.
+
+ MeToo=_F_a_l_s_e
+ Don't send to ``me'' (the sender) if I am in an alias expansion.
+
+ CheckAliases
+ Validate the right hand side of aliases during a newaliases(1)
+ command.
+
+ OldStyleHeaders
+ If set, this message may have old style headers. If not set,
+ this message is guaranteed to have new style headers (i.e., com-
+ mas instead of spaces between addresses). If set, an adaptive
+ algorithm is used that will correctly determine the header for-
+ mat in most cases.
+
+ QueueDirectory=_q_u_e_u_e_d_i_r
+ Select the directory in which to queue messages.
+
+ StatusFile=_f_i_l_e
+ Save statistics in the named file.
+
+ Timeout.queuereturn=_t_i_m_e
+ Set the timeout on undelivered messages in the queue to the
+ specified time. After delivery has failed (e.g., because of a
+ host being down) for this amount of time, failed messages will
+ be returned to the sender. The default is five days.
+
+ UserDatabaseSpec=_u_s_e_r_d_a_t_a_b_a_s_e
+ If set, a user database is consulted to get forwarding informa-
+ tion. You can consider this an adjunct to the aliasing mecha-
+ nism, except that the database is intended to be distributed;
+ aliases are local to a particular host. This may not be avail-
+ able if your sendmail does not have the USERDB option compiled
+ in.
+
+ ForkEachJob
+ Fork each job during queue runs. May be convenient on memory-
+ poor machines.
+
+ SevenBitInput
+ Strip incoming messages to seven bits.
+
+ EightBitMode=_m_o_d_e
+ Set the handling of eight bit input to seven bit destinations to
+ _m_o_d_e: m (mimefy) will convert to seven-bit MIME format, p (pass)
+ will pass it as eight bits (but violates protocols), and s
+ (strict) will bounce the message.
+
+ MinQueueAge=_t_i_m_e_o_u_t
+ Sets how long a job must ferment in the queue between attempts
+ to send it.
+
+ DefaultCharSet=_c_h_a_r_s_e_t
+ Sets the default character set used to label 8-bit data that is
+ not otherwise labelled.
+
+ DialDelay=_s_l_e_e_p_t_i_m_e
+ If opening a connection fails, sleep for _s_l_e_e_p_t_i_m_e seconds and
+ try again. Useful on dial-on-demand sites.
+
+ NoRecipientAction=_a_c_t_i_o_n
+ Set the behaviour when there are no recipient headers (To:, Cc:
+ or Bcc:) in the message to _a_c_t_i_o_n: none leaves the message
+ unchanged, add-to adds a To: header with the envelope recipi-
+ ents, add-apparently-to adds an Apparently-To: header with the
+ envelope recipients, add-bcc adds an empty Bcc: header, and add-
+ to-undisclosed adds a header reading `To: undisclosed-recipi-
+ ents:;'.
+
+ MaxDaemonChildren=_N
+ Sets the maximum number of children that an incoming SMTP daemon
+ will allow to spawn at any time to _N.
+
+ ConnectionRateThrottle=_N
+ Sets the maximum number of connections per second to the SMTP
+ port to _N.
+
+ In aliases, the first character of a name may be a vertical bar to
+ cause interpretation of the rest of the name as a command to pipe the
+ mail to. It may be necessary to quote the name to keep sseennddmmaaiill from
+ suppressing the blanks from between arguments. For example, a common
+ alias is:
+
+ msgs: "|/usr/bin/msgs -s"
+
+ Aliases may also have the syntax ``:include:_f_i_l_e_n_a_m_e'' to ask sseennddmmaaiill
+ to read the named file for a list of recipients. For example, an alias
+ such as:
+
+ poets: ":include:/usr/local/lib/poets.list"
+
+ would read _/_u_s_r_/_l_o_c_a_l_/_l_i_b_/_p_o_e_t_s_._l_i_s_t for the list of addresses making
+ up the group.
+
+ SSeennddmmaaiill returns an exit status describing what it did. The codes are
+ defined in <_s_y_s_e_x_i_t_s_._h>:
+
+ EX_OK Successful completion on all addresses.
+
+ EX_NOUSER
+ User name not recognized.
+
+ EX_UNAVAILABLE
+ Catchall meaning necessary resources were not available.
+
+ EX_SYNTAX
+ Syntax error in address.
+
+ EX_SOFTWARE
+ Internal software error, including bad arguments.
+
+ EX_OSERR
+ Temporary operating system error, such as ``cannot fork''.
+
+ EX_NOHOST
+ Host name not recognized.
+
+ EX_TEMPFAIL
+ Message could not be sent immediately, but was queued.
+
+ If invoked as nneewwaalliiaasseess, sseennddmmaaiill will rebuild the alias database. If
+ invoked as mmaaiillqq, sseennddmmaaiill will print the contents of the mail queue.
+ If invoked as hhoossttssttaatt, sseennddmmaaiill will print the persistent host status
+ database. If invoked as ppuurrggeessttaatt, sseennddmmaaiill will purge expired entries
+ from the persistent host status database. If invoked as ssmmttppdd, sseenndd--
+ mmaaiill will act as a daemon, as if the --bbdd option were specified.
+
+NNOOTTEESS
+ sseennddmmaaiill often gets blamed for many problems that are actually the
+ result of other problems, such as overly permissive modes on directo-
+ ries. For this reason, sseennddmmaaiill checks the modes on system directories
+ and files to determine if they can be trusted. Although these checks
+ can be turned off and your system security reduced by setting the DDoonntt--
+ BBllaammeeSSeennddmmaaiill option, the permission problems should be fixed. For
+ more information, see:
+
+ _h_t_t_p_:_/_/_w_w_w_._s_e_n_d_m_a_i_l_._o_r_g_/_t_i_p_s_/_D_o_n_t_B_l_a_m_e_S_e_n_d_m_a_i_l_._h_t_m_l
+
+FFIILLEESS
+ Except for the file _/_e_t_c_/_m_a_i_l_/_s_e_n_d_m_a_i_l_._c_f itself the following path-
+ names are all specified in _/_e_t_c_/_m_a_i_l_/_s_e_n_d_m_a_i_l_._c_f. Thus, these values
+ are only approximations.
+
+
+ /etc/mail/aliases
+ raw data for alias names
+
+ /etc/mail/aliases.db
+ data base of alias names
+
+ /etc/mail/sendmail.cf
+ configuration file
+
+ /etc/mail/helpfile
+ help file
+
+ /etc/mail/statistics
+ collected statistics
+
+ /var/spool/mqueue/*
+ temp files
+
+SSEEEE AALLSSOO
+ binmail(1), mail(1), rmail(1), syslog(3), aliases(5), mailaddr(7),
+ rc(8)
+
+ DARPA Internet Request For Comments _R_F_C_8_1_9, _R_F_C_8_2_1, _R_F_C_8_2_2. _S_e_n_d_m_a_i_l
+ _I_n_s_t_a_l_l_a_t_i_o_n _a_n_d _O_p_e_r_a_t_i_o_n _G_u_i_d_e, No. 8, SMM.
+
+ http://www.sendmail.org/
+
+HHIISSTTOORRYY
+ The sseennddmmaaiill command appeared in 4.2BSD.
+
+
+
+ $Date: 2007/08/02 05:42:33 $ SENDMAIL(8)
diff --git a/src/sendmail.h b/src/sendmail.h
index 82ab6a9d9312..88607e684ae0 100644
--- a/src/sendmail.h
+++ b/src/sendmail.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -52,7 +52,7 @@
#ifdef _DEFINE
# ifndef lint
-SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1052 2007/10/05 23:06:30 ca Exp $";
+SM_UNUSED(static char SmailId[]) = "@(#)$Id: sendmail.h,v 8.1059 2008/02/15 23:19:58 ca Exp $";
# endif /* ! lint */
#endif /* _DEFINE */
@@ -1551,6 +1551,7 @@ extern void stabapply __P((void (*)(STAB *, int), int));
#define MD_ARPAFTP 'a' /* obsolete ARPANET mode (Grey Book) */
#define MD_DAEMON 'd' /* run as a daemon */
#define MD_FGDAEMON 'D' /* run daemon in foreground */
+#define MD_LOCAL 'l' /* like daemon, but localhost only */
#define MD_VERIFY 'v' /* verify: don't collect or deliver */
#define MD_TEST 't' /* test mode: resolve addrs only */
#define MD_INITALIAS 'i' /* initialize alias database */
@@ -1561,6 +1562,12 @@ extern void stabapply __P((void (*)(STAB *, int), int));
#define MD_PURGESTAT 'H' /* purge persistent host stat info */
#define MD_QUEUERUN 'q' /* queue run */
+#if _FFR_LOCAL_DAEMON
+EXTERN bool LocalDaemon;
+#else /* _FFR_LOCAL_DAEMON */
+# define LocalDaemon false
+#endif /* _FFR_LOCAL_DAEMON */
+
/* Note: see also include/sendmail/pathnames.h: GET_CLIENT_CF */
/* values for e_sendmode -- send modes */
@@ -2229,6 +2236,10 @@ EXTERN char InetMode; /* default network for daemon mode */
EXTERN char OpMode; /* operation mode, see below */
EXTERN char SpaceSub; /* substitution for <lwsp> */
EXTERN int BadRcptThrottle; /* Throttle rejected RCPTs per SMTP message */
+#if _FFR_BADRCPT_SHUTDOWN
+EXTERN int BadRcptShutdown; /* Shutdown connection for rejected RCPTs */
+EXTERN int BadRcptShutdownGood; /* above even when there are good RCPTs */
+#endif /* _FFR_BADRCPT_SHUTDOWN */
EXTERN int CheckpointInterval; /* queue file checkpoint interval */
EXTERN int ConfigLevel; /* config file level */
EXTERN int ConnRateThrottle; /* throttle for SMTP connection rate */
@@ -2590,6 +2601,11 @@ extern void setoption __P((int, char *, bool, bool, ENVELOPE *));
extern sigfunc_t setsignal __P((int, sigfunc_t));
extern void sm_setuserenv __P((const char *, const char *));
extern void settime __P((ENVELOPE *));
+#if STARTTLS
+extern void set_tls_rd_tmo __P((int));
+#else /* STARTTLS */
+#define set_tls_rd_tmo(rd_tmo)
+#endif /* STARTTLS */
extern char *sfgets __P((char *, int, SM_FILE_T *, time_t, char *));
extern char *shortenstring __P((const char *, size_t));
extern char *shorten_hostname __P((char []));
diff --git a/src/sfsasl.c b/src/sfsasl.c
index 216d87ef0a60..67e919f34df3 100644
--- a/src/sfsasl.c
+++ b/src/sfsasl.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1999-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1999-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
*
* By using this file, you agree to the terms and conditions set
@@ -9,7 +9,7 @@
*/
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: sfsasl.c,v 8.115 2006/04/18 21:34:07 ca Exp $")
+SM_RCSID("@(#)$Id: sfsasl.c,v 8.117 2008/01/31 18:48:29 ca Exp $")
#include <stdlib.h>
#include <sendmail.h>
#include <sm/time.h>
@@ -675,6 +675,26 @@ tls_retry(ssl, rfd, wfd, tlsstart, timeout, err, where)
#endif /* ETIMEDOUT */
/*
+** SET_TLS_RD_TMO -- read secured information for the caller
+**
+** Parameters:
+** rd_tmo -- read timeout
+**
+** Results:
+** none
+** This is a hack: there is no way to pass it in
+*/
+
+static int tls_rd_tmo = -1;
+
+void
+set_tls_rd_tmo(rd_tmo)
+ int rd_tmo;
+{
+ tls_rd_tmo = rd_tmo;
+}
+
+/*
** TLS_READ -- read secured information for the caller
**
** Parameters:
@@ -725,7 +745,9 @@ tls_read(fp, buf, size)
rfd = SSL_get_rfd(so->con);
wfd = SSL_get_wfd(so->con);
try = tls_retry(so->con, rfd, wfd, tlsstart,
- TimeOuts.to_datablock, ssl_err, "read");
+ (tls_rd_tmo < 0) ? TimeOuts.to_datablock
+ : tls_rd_tmo,
+ ssl_err, "read");
if (try > 0)
goto retry;
errno = SM_ERR_TIMEOUT;
diff --git a/src/sm_resolve.c b/src/sm_resolve.c
index 035a9e51bad8..6d9c28d73fa1 100644
--- a/src/sm_resolve.c
+++ b/src/sm_resolve.c
@@ -46,7 +46,7 @@
# if NAMED_BIND
# include "sm_resolve.h"
-SM_RCSID("$Id: sm_resolve.c,v 8.35 2007/06/25 16:20:14 ca Exp $")
+SM_RCSID("$Id: sm_resolve.c,v 8.36 2008/02/11 23:04:16 ca Exp $")
static struct stot
{
@@ -168,7 +168,7 @@ parse_dns_reply(data, len)
int len;
{
unsigned char *p;
- ushort ans_cnt, ui;
+ unsigned short ans_cnt, ui;
int status;
size_t l;
char host[MAXHOSTNAMELEN];
@@ -198,7 +198,7 @@ parse_dns_reply(data, len)
return NULL;
}
- ans_cnt = ntohs((ushort) r->dns_r_h.ancount);
+ ans_cnt = ntohs((unsigned short) r->dns_r_h.ancount);
p += status;
GETSHORT(r->dns_r_q.dns_q_type, p);
diff --git a/src/srvrsmtp.c b/src/srvrsmtp.c
index 514a5e6310b8..fffcd0d37ab7 100644
--- a/src/srvrsmtp.c
+++ b/src/srvrsmtp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -17,7 +17,7 @@
# include <libmilter/mfdef.h>
#endif /* MILTER */
-SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.967 2007/10/01 16:22:14 ca Exp $")
+SM_RCSID("@(#)$Id: srvrsmtp.c,v 8.975 2008/03/31 16:32:13 ca Exp $")
#include <sm/time.h>
#include <sm/fdset.h>
@@ -637,6 +637,9 @@ smtp(nullserver, d_flags, e)
# define p_addr_st NULL
#endif /* MILTER */
size_t inplen;
+#if _FFR_BADRCPT_SHUTDOWN
+ int n_badrcpts_adj;
+#endif /* _FFR_BADRCPT_SHUTDOWN */
SevenBitInput_Saved = SevenBitInput;
smtp.sm_nrcpts = 0;
@@ -903,6 +906,8 @@ smtp(nullserver, d_flags, e)
#endif /* SASL */
#if STARTTLS
+
+ set_tls_rd_tmo(TimeOuts.to_nextcommand);
#endif /* STARTTLS */
#if MILTER
@@ -942,6 +947,7 @@ smtp(nullserver, d_flags, e)
/* arrange to ignore send list */
e->e_sendqueue = NULL;
+ lognullconnection = false;
goto doquit;
}
}
@@ -1054,10 +1060,10 @@ smtp(nullserver, d_flags, e)
if (select(fd + 1, FDSET_CAST &readfds,
NULL, NULL, &timeout) > 0 &&
FD_ISSET(fd, &readfds) &&
- (eoftest = sm_io_getc(InChannel, SM_TIME_DEFAULT))
+ (eoftest = sm_io_getc(InChannel, SM_TIME_DEFAULT))
!= SM_IO_EOF)
{
- sm_io_ungetc(InChannel, SM_TIME_DEFAULT,
+ sm_io_ungetc(InChannel, SM_TIME_DEFAULT,
eoftest);
gettimeofday(&ep, NULL);
timersub(&ep, &bp, &tp);
@@ -2523,6 +2529,36 @@ smtp(nullserver, d_flags, e)
milter_rcpt_added = false;
smtp.sm_e_nrcpts_orig = e->e_nrcpts;
#endif
+#if _FFR_BADRCPT_SHUTDOWN
+ /*
+ ** hack to deal with hack, see below:
+ ** n_badrcpts is increased is limit is reached.
+ */
+
+ n_badrcpts_adj = (BadRcptThrottle > 0 &&
+ n_badrcpts > BadRcptThrottle &&
+ LogLevel > 5)
+ ? n_badrcpts - 1 : n_badrcpts;
+ if (BadRcptShutdown > 0 &&
+ n_badrcpts_adj >= BadRcptShutdown &&
+ (BadRcptShutdownGood == 0 ||
+ smtp.sm_nrcpts == 0 ||
+ (n_badrcpts_adj * 100 /
+ (smtp.sm_nrcpts + n_badrcpts) >=
+ BadRcptShutdownGood)))
+ {
+ if (LogLevel > 5)
+ sm_syslog(LOG_INFO, e->e_id,
+ "%s: Possible SMTP RCPT flood, shutting down connection.",
+ CurSmtpClient);
+ message("421 4.7.0 %s Too many bad recipients; closing connection",
+ MyHostName);
+
+ /* arrange to ignore any current send list */
+ e->e_sendqueue = NULL;
+ goto doquit;
+ }
+#endif /* _FFR_BADRCPT_SHUTDOWN */
if (BadRcptThrottle > 0 &&
n_badrcpts >= BadRcptThrottle)
{
@@ -3775,17 +3811,10 @@ smtp_data(smtp, e)
dropenvelope(ee, true, false);
}
}
- sm_rpool_free(e->e_rpool);
-
- /*
- ** At this point, e == &MainEnvelope, but if we did splitting,
- ** then CurEnv may point to an envelope structure that was just
- ** freed with the rpool. So reset CurEnv *before* calling
- ** newenvelope.
- */
CurEnv = e;
features = e->e_features;
+ sm_rpool_free(e->e_rpool);
newenvelope(e, e, sm_rpool_new_x(NULL));
e->e_flags = BlankEnvelope.e_flags;
e->e_features = features;
diff --git a/src/sysexits.h b/src/sysexits.h
new file mode 100644
index 000000000000..99fe9372021c
--- /dev/null
+++ b/src/sysexits.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 1987, 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.
+ *
+ * $Id: sysexits.h,v 8.5 2000/11/26 02:13:20 ca Exp $
+ * @(#)sysexits.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSEXITS_H_
+# define _SYSEXITS_H_
+
+/*
+** SYSEXITS.H -- Exit status codes for system programs.
+**
+** This include file attempts to categorize possible error
+** exit statuses for system programs, notably delivermail
+** and the Berkeley network.
+**
+** Error numbers begin at EX__BASE to reduce the possibility of
+** clashing with other exit statuses that random programs may
+** already return. The meaning of the codes is approximately
+** as follows:
+**
+** EX_USAGE -- The command was used incorrectly, e.g., with
+** the wrong number of arguments, a bad flag, a bad
+** syntax in a parameter, or whatever.
+** EX_DATAERR -- The input data was incorrect in some way.
+** This should only be used for user's data & not
+** system files.
+** EX_NOINPUT -- An input file (not a system file) did not
+** exist or was not readable. This could also include
+** errors like "No message" to a mailer (if it cared
+** to catch it).
+** EX_NOUSER -- The user specified did not exist. This might
+** be used for mail addresses or remote logins.
+** EX_NOHOST -- The host specified did not exist. This is used
+** in mail addresses or network requests.
+** EX_UNAVAILABLE -- A service is unavailable. This can occur
+** if a support program or file does not exist. This
+** can also be used as a catchall message when something
+** you wanted to do doesn't work, but you don't know
+** why.
+** EX_SOFTWARE -- An internal software error has been detected.
+** This should be limited to non-operating system related
+** errors as possible.
+** EX_OSERR -- An operating system error has been detected.
+** This is intended to be used for such things as "cannot
+** fork", "cannot create pipe", or the like. It includes
+** things like getuid returning a user that does not
+** exist in the passwd file.
+** EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp,
+** etc.) does not exist, cannot be opened, or has some
+** sort of error (e.g., syntax error).
+** EX_CANTCREAT -- A (user specified) output file cannot be
+** created.
+** EX_IOERR -- An error occurred while doing I/O on some file.
+** EX_TEMPFAIL -- temporary failure, indicating something that
+** is not really an error. In sendmail, this means
+** that a mailer (e.g.) could not create a connection,
+** and the request should be reattempted later.
+** EX_PROTOCOL -- the remote system returned something that
+** was "not possible" during a protocol exchange.
+** EX_NOPERM -- You did not have sufficient permission to
+** perform the operation. This is not intended for
+** file system problems, which should use NOINPUT or
+** CANTCREAT, but rather for higher level permissions.
+*/
+
+# define EX_OK 0 /* successful termination */
+
+# define EX__BASE 64 /* base value for error messages */
+
+# define EX_USAGE 64 /* command line usage error */
+# define EX_DATAERR 65 /* data format error */
+# define EX_NOINPUT 66 /* cannot open input */
+# define EX_NOUSER 67 /* addressee unknown */
+# define EX_NOHOST 68 /* host name unknown */
+# define EX_UNAVAILABLE 69 /* service unavailable */
+# define EX_SOFTWARE 70 /* internal software error */
+# define EX_OSERR 71 /* system error (e.g., can't fork) */
+# define EX_OSFILE 72 /* critical OS file missing */
+# define EX_CANTCREAT 73 /* can't create (user) output file */
+# define EX_IOERR 74 /* input/output error */
+# define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
+# define EX_PROTOCOL 76 /* remote error in protocol */
+# define EX_NOPERM 77 /* permission denied */
+# define EX_CONFIG 78 /* configuration error */
+
+# define EX__MAX 78 /* maximum listed value */
+
+#endif /* ! _SYSEXITS_H_ */
diff --git a/src/usersmtp.c b/src/usersmtp.c
index 724f10c90df7..b29495c3ae7f 100644
--- a/src/usersmtp.c
+++ b/src/usersmtp.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2006 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2006, 2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983, 1995-1997 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: usersmtp.c,v 8.470 2007/10/17 21:35:30 ca Exp $")
+SM_RCSID("@(#)$Id: usersmtp.c,v 8.472 2008/01/31 18:48:29 ca Exp $")
#include <sysexits.h>
@@ -3077,6 +3077,7 @@ reply(m, mci, e, timeout, pfunc, enhstat, rtype)
*/
bufp = SmtpReplyBuffer;
+ set_tls_rd_tmo(timeout);
for (;;)
{
register char *p;
diff --git a/src/util.c b/src/util.c
index 95d2f9a4138a..dab596130500 100644
--- a/src/util.c
+++ b/src/util.c
@@ -13,7 +13,7 @@
#include <sendmail.h>
-SM_RCSID("@(#)$Id: util.c,v 8.413 2007/09/26 23:29:11 ca Exp $")
+SM_RCSID("@(#)$Id: util.c,v 8.414 2007/11/02 17:30:38 ca Exp $")
#include <sm/sendmail.h>
#include <sysexits.h>
@@ -2823,9 +2823,10 @@ count_open_connections(hostaddr)
return 0;
/*
- ** Initialize to 1 instead of 0 because this code gets called
- ** before proc_list_add() gets called, so we (the daemon child
- ** for this connection) don't count ourselves.
+ ** This code gets called before proc_list_add() gets called,
+ ** so we (the daemon child for this connection) have not yet
+ ** counted ourselves. Hence initialize the counter to 1
+ ** instead of 0 to compensate.
*/
n = 1;
diff --git a/src/version.c b/src/version.c
index ee09fc93a2d4..3e5ee8e6fdcc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1998-2007 Sendmail, Inc. and its suppliers.
+ * Copyright (c) 1998-2008 Sendmail, Inc. and its suppliers.
* All rights reserved.
* Copyright (c) 1983 Eric P. Allman. All rights reserved.
* Copyright (c) 1988, 1993
@@ -13,6 +13,6 @@
#include <sm/gen.h>
-SM_RCSID("@(#)$Id: version.c,v 8.199 2007/10/31 16:04:12 ca Exp $")
+SM_RCSID("@(#)$Id: version.c,v 8.208 2008/04/17 17:04:30 ca Exp $")
-char Version[] = "8.14.2";
+char Version[] = "8.14.3";
diff --git a/test/Build b/test/Build
new file mode 100755
index 000000000000..91535e64302d
--- /dev/null
+++ b/test/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Copyright (c) 2001 Sendmail, Inc. and its suppliers.
+# All rights reserved.
+#
+# By using this file, you agree to the terms and conditions set
+# forth in the LICENSE file which can be found at the top level of
+# the sendmail distribution.
+#
+#
+# $Id: Build,v 1.1 2001/09/23 22:39:24 ca Exp $
+
+exec sh ../devtools/bin/Build $*
diff --git a/vacation/Build b/vacation/Build
new file mode 100755
index 000000000000..fbd060c27f2d
--- /dev/null
+++ b/vacation/Build
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# 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.
+#
+#
+# $Id: Build,v 8.2 1999/03/02 02:35:21 peterh Exp $
+
+exec ../devtools/bin/Build $*
diff --git a/vacation/vacation.0 b/vacation/vacation.0
new file mode 100644
index 000000000000..04ddadbeabd5
--- /dev/null
+++ b/vacation/vacation.0
@@ -0,0 +1,149 @@
+VACATION(1) VACATION(1)
+
+
+
+NNAAMMEE
+ vacation - E-mail auto-responder
+
+SSYYNNOOPPSSIISS
+ vvaaccaattiioonn [--aa _a_l_i_a_s] [--CC _c_f_f_i_l_e] [--dd] [--ff _d_a_t_a_b_a_s_e] [--ii] [--II] [--jj] [--ll]
+ [--mm _m_e_s_s_a_g_e] [--RR _r_e_t_u_r_n_a_d_d_r] [--rr _i_n_t_e_r_v_a_l] [--ss _a_d_d_r_e_s_s] [--tt _t_i_m_e] [--UU]
+ [--xx] [--zz] _l_o_g_i_n
+
+DDEESSCCRRIIPPTTIIOONN
+ VVaaccaattiioonn returns a message, _~_/_._v_a_c_a_t_i_o_n_._m_s_g by default, to the sender
+ informing them that you are currently not reading your mail. The mes-
+ sage is only sent to each sender once per reply interval (see --rr
+ below). The intended use is in a _._f_o_r_w_a_r_d file. For example, your
+ _._f_o_r_w_a_r_d file might have:
+
+ \eric, "|/usr/bin/vacation -a allman eric"
+
+ which would send messages to you (assuming your login name was eric)
+ and reply to any messages for ``eric'' or ``allman''.
+
+ Available options:
+
+ --aa _a_l_i_a_s
+ Handle messages for _a_l_i_a_s in the same manner as those received
+ for the user's login name.
+
+ --CC _c_f_p_a_t_h
+ Specify pathname of the sendmail configuration file. This
+ option is ignored if --UU is specified. This option defaults to
+ the standard sendmail configuration file, located at
+ /etc/mail/sendmail.cf on most systems.
+
+ --dd Send error/debug messages to stderr instead of syslog. Other-
+ wise, fatal errors, such as calling vvaaccaattiioonn with incorrect
+ arguments, or with non-existent _l_o_g_i_ns, are logged in the system
+ log file, using syslog(8). This should only be used on the com-
+ mand line, not in your _._f_o_r_w_a_r_d file.
+
+ --ff _f_i_l_e_n_a_m_e
+ Use _f_i_l_e_n_a_m_e as name of the database instead of _~_/_._v_a_c_a_t_i_o_n_._d_b
+ or _~_/_._v_a_c_a_t_i_o_n_._{_d_i_r_,_p_a_g_}. Unless the _f_i_l_e_n_a_m_e starts with / it
+ is relative to ~.
+
+ --ii Initialize the vacation database files. It should be used
+ before you modify your _._f_o_r_w_a_r_d file. This should only be used
+ on the command line, not in your _._f_o_r_w_a_r_d file.
+
+ --II Same as --ii (for backwards compatibility). This should only be
+ used on the command line, not in your _._f_o_r_w_a_r_d file.
+
+ --jj Respond to the message regardless of whether the login is listed
+ as a recipient for the message. Do not use this flag unless you
+ are sure of the consequences. For example, this will cause to
+ reply to mailing list messages which may result in removing you
+ from the list.
+
+ --ll List the content of the vacation database file including the
+ address and the associated time of the last auto-response to
+ that address. This should only be used on the command line, not
+ in your _._f_o_r_w_a_r_d file.
+
+ --mm _f_i_l_e_n_a_m_e
+ Use _f_i_l_e_n_a_m_e as name of the file containing the message to send
+ instead of _~_/_._v_a_c_a_t_i_o_n_._m_s_g. Unless the _f_i_l_e_n_a_m_e starts with /
+ it is relative to ~.
+
+ --RR _r_e_t_u_r_n_a_d_d_r
+ Set the reply envelope sender address
+
+ --rr _i_n_t_e_r_v_a_l
+ Set the reply interval to _i_n_t_e_r_v_a_l days. The default is one
+ week. An interval of ``0'' or ``infinite'' (actually, any non-
+ numeric character) will never send more than one reply. The --rr
+ option should only be used when the vacation database is ini-
+ tialized (see --ii above).
+
+ --ss _a_d_d_r_e_s_s
+ Use _a_d_d_r_e_s_s instead of the incoming message sender address on
+ the _F_r_o_m line as the recipient for the vacation message.
+
+ --tt _t_i_m_e
+ Ignored, available only for compatibility with Sun's vacation
+ program.
+
+ --UU Do not attempt to lookup _l_o_g_i_n in the password file. The -f and
+ -m options must be used to specify the database and message file
+ since there is no home directory for the default settings for
+ these options.
+
+ --xx Reads an exclusion list from stdin (one address per line).
+ Mails coming from an address in this exclusion list won't get a
+ reply by vvaaccaattiioonn. It is possible to exclude complete domains
+ by specifying ``@domain'' as element of the exclusion list.
+ This should only be used on the command line, not in your _._f_o_r_-
+ _w_a_r_d file.
+
+ --zz Set the sender of the vacation message to ``<>'' instead of the
+ user. This probably violates the RFCs since vacation messages
+ are not required by a standards-track RFC to have a null
+ reverse-path.
+
+ VVaaccaattiioonn reads the first line from the standard input for a UNIX
+ ``From'' line to determine the sender. Sendmail(8) includes this
+ ``From'' line automatically.
+
+ No message will be sent unless _l_o_g_i_n (or an _a_l_i_a_s supplied using the --aa
+ option) is part of either the ``To:'' or ``Cc:'' headers of the mail.
+ No messages from ``???-REQUEST'', ``???-RELAY'', ``???-OWNER'',
+ ``OWNER-???'', ``Postmaster'', ``UUCP'', ``MAILER'', or ``MAILER-DAE-
+ MON'' will be replied to (where these strings are case insensitive) nor
+ is a notification sent if a ``Precedence: bulk'' or ``Precedence:
+ junk'' line is included in the mail headers. The people who have sent
+ you messages are maintained as a db(3) or dbm(3) database in the file
+ _._v_a_c_a_t_i_o_n_._d_b or _._v_a_c_a_t_i_o_n_._{_d_i_r_,_p_a_g_} in your home directory.
+
+ VVaaccaattiioonn expects a file _._v_a_c_a_t_i_o_n_._m_s_g, in your home directory, contain-
+ ing a message to be sent back to each sender. It should be an entire
+ message (including headers). For example, it might contain:
+
+ From: eric@CS.Berkeley.EDU (Eric Allman)
+ Subject: I am on vacation
+ Delivered-By-The-Graces-Of: The Vacation program
+ Precedence: bulk
+
+ I am on vacation until July 22. If you have something urgent,
+ please contact Keith Bostic <bostic@CS.Berkeley.EDU>.
+ --eric
+
+FFIILLEESS
+ ~/.vacation.db default database file for db(3)
+
+ ~/.vacation.{dir,pag}
+ default database file for dbm(3)
+
+ ~/.vacation.msg default message to send
+
+SSEEEE AALLSSOO
+ sendmail(8), syslog(8)
+
+HHIISSTTOORRYY
+ The vvaaccaattiioonn command appeared in 4.3BSD.
+
+
+
+ $Date: 2002/06/27 23:51:52 $ VACATION(1)