diff options
author | Gregory Neil Shapiro <gshapiro@FreeBSD.org> | 2008-08-28 04:33:50 +0000 |
---|---|---|
committer | Gregory Neil Shapiro <gshapiro@FreeBSD.org> | 2008-08-28 04:33:50 +0000 |
commit | e8e0e5823adff1aed6bf456d75e58353e6dcf68e (patch) | |
tree | 366be2f317b4d052916d4861096c4a53ba6f9a26 | |
parent | aa651f666c6d33d54b6572c19534539ed5ae7637 (diff) |
Import sendmail 8.14.3 and clean up svn properties as documented in:vendor/sendmail/8.14.3
Notes
Notes:
svn path=/vendor/sendmail/dist/; revision=182329
svn path=/vendor/sendmail/8.14.3/; revision=182330; tag=vendor/sendmail/8.14.3
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 $ @@ -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 $ @@ -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) |