1c2aa98e2SPeter Wemm 206f25ae9SGregory Neil Shapiro SENDMAIL CONFIGURATION FILES 3c2aa98e2SPeter Wemm 440266059SGregory Neil ShapiroThis document describes the sendmail configuration files. It 540266059SGregory Neil Shapiroexplains how to create a sendmail.cf file for use with sendmail. 640266059SGregory Neil ShapiroIt also describes how to set options for sendmail which are explained 740266059SGregory Neil Shapiroin the Sendmail Installation and Operation guide (doc/op/op.me). 8c2aa98e2SPeter Wemm 940266059SGregory Neil ShapiroTo get started, you may want to look at tcpproto.mc (for TCP-only 1040266059SGregory Neil Shapirosites) and clientproto.mc (for clusters of clients using a single 1140266059SGregory Neil Shapiromail host), or the generic-*.mc files as operating system-specific 1240266059SGregory Neil Shapiroexamples. 13c2aa98e2SPeter Wemm 1440266059SGregory Neil ShapiroTable of Content: 1540266059SGregory Neil Shapiro 1640266059SGregory Neil ShapiroINTRODUCTION AND EXAMPLE 1740266059SGregory Neil ShapiroA BRIEF INTRODUCTION TO M4 1840266059SGregory Neil ShapiroFILE LOCATIONS 1940266059SGregory Neil ShapiroOSTYPE 2040266059SGregory Neil ShapiroDOMAINS 2140266059SGregory Neil ShapiroMAILERS 2240266059SGregory Neil ShapiroFEATURES 2340266059SGregory Neil ShapiroHACKS 2440266059SGregory Neil ShapiroSITE CONFIGURATION 2540266059SGregory Neil ShapiroUSING UUCP MAILERS 2640266059SGregory Neil ShapiroTWEAKING RULESETS 2740266059SGregory Neil ShapiroMASQUERADING AND RELAYING 2840266059SGregory Neil ShapiroUSING LDAP FOR ALIASES, MAPS, AND CLASSES 2940266059SGregory Neil ShapiroLDAP ROUTING 3040266059SGregory Neil ShapiroANTI-SPAM CONFIGURATION CONTROL 31e92d3f3fSGregory Neil ShapiroCONNECTION CONTROL 3240266059SGregory Neil ShapiroSTARTTLS 3340266059SGregory Neil ShapiroSMTP AUTHENTICATION 3440266059SGregory Neil ShapiroADDING NEW MAILERS OR RULESETS 3540266059SGregory Neil ShapiroADDING NEW MAIL FILTERS 3640266059SGregory Neil ShapiroQUEUE GROUP DEFINITIONS 3740266059SGregory Neil ShapiroNON-SMTP BASED CONFIGURATIONS 3840266059SGregory Neil ShapiroWHO AM I? 3940266059SGregory Neil ShapiroACCEPTING MAIL FOR MULTIPLE NAMES 4040266059SGregory Neil ShapiroUSING MAILERTABLES 4140266059SGregory Neil ShapiroUSING USERDB TO MAP FULL NAMES 4240266059SGregory Neil ShapiroMISCELLANEOUS SPECIAL FEATURES 4340266059SGregory Neil ShapiroSECURITY NOTES 4440266059SGregory Neil ShapiroTWEAKING CONFIGURATION OPTIONS 4540266059SGregory Neil ShapiroMESSAGE SUBMISSION PROGRAM 4640266059SGregory Neil ShapiroFORMAT OF FILES AND MAPS 4740266059SGregory Neil ShapiroDIRECTORY LAYOUT 4840266059SGregory Neil ShapiroADMINISTRATIVE DETAILS 49c2aa98e2SPeter Wemm 50c2aa98e2SPeter Wemm 51c2aa98e2SPeter Wemm+--------------------------+ 52c2aa98e2SPeter Wemm| INTRODUCTION AND EXAMPLE | 53c2aa98e2SPeter Wemm+--------------------------+ 54c2aa98e2SPeter Wemm 55c2aa98e2SPeter WemmConfiguration files are contained in the subdirectory "cf", with a 56c2aa98e2SPeter Wemmsuffix ".mc". They must be run through "m4" to produce a ".cf" file. 57c2aa98e2SPeter WemmYou must pre-load "cf.m4": 58c2aa98e2SPeter Wemm 59c2aa98e2SPeter Wemm m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf 60c2aa98e2SPeter Wemm 6106f25ae9SGregory Neil ShapiroAlternatively, you can simply: 6206f25ae9SGregory Neil Shapiro 6306f25ae9SGregory Neil Shapiro cd ${CFDIR}/cf 6406f25ae9SGregory Neil Shapiro ./Build config.cf 6506f25ae9SGregory Neil Shapiro 66c2aa98e2SPeter Wemmwhere ${CFDIR} is the root of the cf directory and config.mc is the 67c2aa98e2SPeter Wemmname of your configuration file. If you are running a version of M4 68c2aa98e2SPeter Wemmthat understands the __file__ builtin (versions of GNU m4 >= 0.75 do 69c2aa98e2SPeter Wemmthis, but the versions distributed with 4.4BSD and derivatives do not) 70c2aa98e2SPeter Wemmor the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory. 71c2aa98e2SPeter WemmFor "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST 72c2aa98e2SPeter Wemmuse -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash! For example: 73c2aa98e2SPeter Wemm 74c2aa98e2SPeter Wemm m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf 75c2aa98e2SPeter Wemm 76c2aa98e2SPeter WemmLet's examine a typical .mc file: 77c2aa98e2SPeter Wemm 78c2aa98e2SPeter Wemm divert(-1) 79c2aa98e2SPeter Wemm # 805dd76dd0SGregory Neil Shapiro # Copyright (c) 1998-2005 Proofpoint, Inc. and its suppliers. 8106f25ae9SGregory Neil Shapiro # All rights reserved. 82c2aa98e2SPeter Wemm # Copyright (c) 1983 Eric P. Allman. All rights reserved. 83c2aa98e2SPeter Wemm # Copyright (c) 1988, 1993 84c2aa98e2SPeter Wemm # The Regents of the University of California. All rights reserved. 85c2aa98e2SPeter Wemm # 86c2aa98e2SPeter Wemm # By using this file, you agree to the terms and conditions set 87c2aa98e2SPeter Wemm # forth in the LICENSE file which can be found at the top level of 88c2aa98e2SPeter Wemm # the sendmail distribution. 89c2aa98e2SPeter Wemm # 90c2aa98e2SPeter Wemm 91c2aa98e2SPeter Wemm # 92c2aa98e2SPeter Wemm # This is a Berkeley-specific configuration file for HP-UX 9.x. 93c2aa98e2SPeter Wemm # It applies only to the Computer Science Division at Berkeley, 94c2aa98e2SPeter Wemm # and should not be used elsewhere. It is provided on the sendmail 95c2aa98e2SPeter Wemm # distribution as a sample only. To create your own configuration 96c2aa98e2SPeter Wemm # file, create an appropriate domain file in ../domain, change the 97c2aa98e2SPeter Wemm # `DOMAIN' macro below to reference that file, and copy the result 98c2aa98e2SPeter Wemm # to a name of your own choosing. 99c2aa98e2SPeter Wemm # 100c2aa98e2SPeter Wemm divert(0) 101c2aa98e2SPeter Wemm 102c2aa98e2SPeter WemmThe divert(-1) will delete the crud in the resulting output file. 103c2aa98e2SPeter WemmThe copyright notice can be replaced by whatever your lawyers require; 10406f25ae9SGregory Neil Shapiroour lawyers require the one that is included in these files. A copyleft 105c2aa98e2SPeter Wemmis a copyright by another name. The divert(0) restores regular output. 106c2aa98e2SPeter Wemm 107c2aa98e2SPeter Wemm VERSIONID(`<SCCS or RCS version id>') 108c2aa98e2SPeter Wemm 109c2aa98e2SPeter WemmVERSIONID is a macro that stuffs the version information into the 11006f25ae9SGregory Neil Shapiroresulting file. You could use SCCS, RCS, CVS, something else, or 111c2aa98e2SPeter Wemmomit it completely. This is not the same as the version id included 112c2aa98e2SPeter Wemmin SMTP greeting messages -- this is defined in m4/version.m4. 113c2aa98e2SPeter Wemm 11406f25ae9SGregory Neil Shapiro OSTYPE(`hpux9')dnl 115c2aa98e2SPeter Wemm 116c2aa98e2SPeter WemmYou must specify an OSTYPE to properly configure things such as the 117c2aa98e2SPeter Wemmpathname of the help and status files, the flags needed for the local 118c2aa98e2SPeter Wemmmailer, and other important things. If you omit it, you will get an 119c2aa98e2SPeter Wemmerror when you try to build the configuration. Look at the ostype 120c2aa98e2SPeter Wemmdirectory for the list of known operating system types. 121c2aa98e2SPeter Wemm 12206f25ae9SGregory Neil Shapiro DOMAIN(`CS.Berkeley.EDU')dnl 123c2aa98e2SPeter Wemm 124c2aa98e2SPeter WemmThis example is specific to the Computer Science Division at Berkeley. 12506f25ae9SGregory Neil ShapiroYou can use "DOMAIN(`generic')" to get a sufficiently bland definition 126c2aa98e2SPeter Wemmthat may well work for you, or you can create a customized domain 127c2aa98e2SPeter Wemmdefinition appropriate for your environment. 128c2aa98e2SPeter Wemm 12906f25ae9SGregory Neil Shapiro MAILER(`local') 13006f25ae9SGregory Neil Shapiro MAILER(`smtp') 131c2aa98e2SPeter Wemm 13240266059SGregory Neil ShapiroThese describe the mailers used at the default CS site. The local 13340266059SGregory Neil Shapiromailer is always included automatically. Beware: MAILER declarations 134e92d3f3fSGregory Neil Shapiroshould only be followed by LOCAL_* sections. The general rules are 135e92d3f3fSGregory Neil Shapirothat the order should be: 136c2aa98e2SPeter Wemm 137c2aa98e2SPeter Wemm VERSIONID 138c2aa98e2SPeter Wemm OSTYPE 139c2aa98e2SPeter Wemm DOMAIN 140c2aa98e2SPeter Wemm FEATURE 141c2aa98e2SPeter Wemm local macro definitions 142c2aa98e2SPeter Wemm MAILER 14340266059SGregory Neil Shapiro LOCAL_CONFIG 14406f25ae9SGregory Neil Shapiro LOCAL_RULE_* 14506f25ae9SGregory Neil Shapiro LOCAL_RULESETS 14606f25ae9SGregory Neil Shapiro 14706f25ae9SGregory Neil ShapiroThere are a few exceptions to this rule. Local macro definitions which 14806f25ae9SGregory Neil Shapiroinfluence a FEATURE() should be done before that feature. For example, 14906f25ae9SGregory Neil Shapiroa define(`PROCMAIL_MAILER_PATH', ...) should be done before 15006f25ae9SGregory Neil ShapiroFEATURE(`local_procmail'). 151c2aa98e2SPeter Wemm 15240266059SGregory Neil Shapiro******************************************************************* 15340266059SGregory Neil Shapiro*** BE SURE YOU CUSTOMIZE THESE FILES! They have some *** 15440266059SGregory Neil Shapiro*** Berkeley-specific assumptions built in, such as the name *** 15540266059SGregory Neil Shapiro*** of their UUCP-relay. You'll want to create your own *** 15640266059SGregory Neil Shapiro*** domain description, and use that in place of *** 15740266059SGregory Neil Shapiro*** domain/Berkeley.EDU.m4. *** 15840266059SGregory Neil Shapiro******************************************************************* 15940266059SGregory Neil Shapiro 160c2aa98e2SPeter Wemm 161da7d7b9cSGregory Neil ShapiroNote: 162da7d7b9cSGregory Neil ShapiroSome rulesets, features, and options are only useful if the sendmail 163da7d7b9cSGregory Neil Shapirobinary has been compiled with the appropriate options, e.g., the 164da7d7b9cSGregory Neil Shapiroruleset tls_server is only invoked if sendmail has been compiled 165da7d7b9cSGregory Neil Shapirowith STARTTLS. This is usually obvious from the context and hence 166da7d7b9cSGregory Neil Shapironot further specified here. 167da7d7b9cSGregory Neil ShapiroThere are also so called "For Future Releases" (FFR) compile time 168da7d7b9cSGregory Neil Shapirooptions which might be included in a subsequent version or might 169da7d7b9cSGregory Neil Shapirosimply be removed as they turned out not to be really useful. 170da7d7b9cSGregory Neil ShapiroThese are generally not documented but if they are, then the required 171da7d7b9cSGregory Neil Shapirocompile time options are listed in doc/op/op.* for rulesets and 172da7d7b9cSGregory Neil Shapiromacros, and for mc/cf specific options they are usually listed here. 173da7d7b9cSGregory Neil ShapiroIn addition to compile time options for the sendmail binary, there 174da7d7b9cSGregory Neil Shapirocan also be FFRs for mc/cf which in general can be enabled when the 175da7d7b9cSGregory Neil Shapiroconfiguration file is generated by defining them at the top of your 176da7d7b9cSGregory Neil Shapiro.mc file: 177da7d7b9cSGregory Neil Shapiro 178da7d7b9cSGregory Neil Shapirodefine(`_FFR_NAME_HERE', 1) 179da7d7b9cSGregory Neil Shapiro 180da7d7b9cSGregory Neil Shapiro 181c2aa98e2SPeter Wemm+----------------------------+ 182c2aa98e2SPeter Wemm| A BRIEF INTRODUCTION TO M4 | 183c2aa98e2SPeter Wemm+----------------------------+ 184c2aa98e2SPeter Wemm 185c2aa98e2SPeter WemmSendmail uses the M4 macro processor to ``compile'' the configuration 186c2aa98e2SPeter Wemmfiles. The most important thing to know is that M4 is stream-based, 187c2aa98e2SPeter Wemmthat is, it doesn't understand about lines. For this reason, in some 188c2aa98e2SPeter Wemmplaces you may see the word ``dnl'', which stands for ``delete 189c2aa98e2SPeter Wemmthrough newline''; essentially, it deletes all characters starting 190c2aa98e2SPeter Wemmat the ``dnl'' up to and including the next newline character. In 191c2aa98e2SPeter Wemmmost cases sendmail uses this only to avoid lots of unnecessary 192c2aa98e2SPeter Wemmblank lines in the output. 193c2aa98e2SPeter Wemm 194c2aa98e2SPeter WemmOther important directives are define(A, B) which defines the macro 195c2aa98e2SPeter Wemm``A'' to have value ``B''. Macros are expanded as they are read, so 196c2aa98e2SPeter Wemmone normally quotes both values to prevent expansion. For example, 197c2aa98e2SPeter Wemm 198c2aa98e2SPeter Wemm define(`SMART_HOST', `smart.foo.com') 199c2aa98e2SPeter Wemm 200c2aa98e2SPeter WemmOne word of warning: M4 macros are expanded even in lines that appear 201c2aa98e2SPeter Wemmto be comments. For example, if you have 202c2aa98e2SPeter Wemm 20306f25ae9SGregory Neil Shapiro # See FEATURE(`foo') above 204c2aa98e2SPeter Wemm 20506f25ae9SGregory Neil Shapiroit will not do what you expect, because the FEATURE(`foo') will be 206c2aa98e2SPeter Wemmexpanded. This also applies to 207c2aa98e2SPeter Wemm 208c2aa98e2SPeter Wemm # And then define the $X macro to be the return address 209c2aa98e2SPeter Wemm 210c2aa98e2SPeter Wemmbecause ``define'' is an M4 keyword. If you want to use them, surround 211c2aa98e2SPeter Wemmthem with directed quotes, `like this'. 212c2aa98e2SPeter Wemm 21313bd1963SGregory Neil ShapiroSince m4 uses single quotes (opening "`" and closing "'") to quote 21413bd1963SGregory Neil Shapiroarguments, those quotes can't be used in arguments. For example, 21513bd1963SGregory Neil Shapiroit is not possible to define a rejection message containing a single 21613bd1963SGregory Neil Shapiroquote. Usually there are simple workarounds by changing those 21713bd1963SGregory Neil Shapiromessages; in the worst case it might be ok to change the value 21813bd1963SGregory Neil Shapirodirectly in the generated .cf file, which however is not advised. 21913bd1963SGregory Neil Shapiro 22040266059SGregory Neil Shapiro 22140266059SGregory Neil ShapiroNotice: 22240266059SGregory Neil Shapiro------- 22340266059SGregory Neil Shapiro 22440266059SGregory Neil ShapiroThis package requires a post-V7 version of m4; if you are running the 22540266059SGregory Neil Shapiro4.2bsd, SysV.2, or 7th Edition version. SunOS's /usr/5bin/m4 or 22640266059SGregory Neil ShapiroBSD-Net/2's m4 both work. GNU m4 version 1.1 or later also works. 22740266059SGregory Neil ShapiroUnfortunately, the M4 on BSDI 1.0 doesn't work -- you'll have to use a 22840266059SGregory Neil ShapiroNet/2 or GNU version. GNU m4 is available from 22940266059SGregory Neil Shapiroftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the latest version). 23040266059SGregory Neil ShapiroEXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x is fine). Use GNU 23140266059SGregory Neil Shapirom4 on this platform. 23240266059SGregory Neil Shapiro 23340266059SGregory Neil Shapiro 234c2aa98e2SPeter Wemm+----------------+ 235c2aa98e2SPeter Wemm| FILE LOCATIONS | 236c2aa98e2SPeter Wemm+----------------+ 237c2aa98e2SPeter Wemm 238c2aa98e2SPeter Wemmsendmail 8.9 has introduced a new configuration directory for sendmail 239c2aa98e2SPeter Wemmrelated files, /etc/mail. The new files available for sendmail 8.9 -- 24006f25ae9SGregory Neil Shapirothe class {R} /etc/mail/relay-domains and the access database 24106f25ae9SGregory Neil Shapiro/etc/mail/access -- take advantage of this new directory. Beginning with 24206f25ae9SGregory Neil Shapiro8.10, all files will use this directory by default (some options may be 24306f25ae9SGregory Neil Shapiroset by OSTYPE() files). This new directory should help to restore 24406f25ae9SGregory Neil Shapirouniformity to sendmail's file locations. 24506f25ae9SGregory Neil Shapiro 24606f25ae9SGregory Neil ShapiroBelow is a table of some of the common changes: 24706f25ae9SGregory Neil Shapiro 24806f25ae9SGregory Neil ShapiroOld filename New filename 24906f25ae9SGregory Neil Shapiro------------ ------------ 25006f25ae9SGregory Neil Shapiro/etc/bitdomain /etc/mail/bitdomain 25106f25ae9SGregory Neil Shapiro/etc/domaintable /etc/mail/domaintable 25206f25ae9SGregory Neil Shapiro/etc/genericstable /etc/mail/genericstable 25306f25ae9SGregory Neil Shapiro/etc/uudomain /etc/mail/uudomain 25406f25ae9SGregory Neil Shapiro/etc/virtusertable /etc/mail/virtusertable 25506f25ae9SGregory Neil Shapiro/etc/userdb /etc/mail/userdb 25606f25ae9SGregory Neil Shapiro 25706f25ae9SGregory Neil Shapiro/etc/aliases /etc/mail/aliases 25806f25ae9SGregory Neil Shapiro/etc/sendmail/aliases /etc/mail/aliases 25906f25ae9SGregory Neil Shapiro/etc/ucbmail/aliases /etc/mail/aliases 26006f25ae9SGregory Neil Shapiro/usr/adm/sendmail/aliases /etc/mail/aliases 26106f25ae9SGregory Neil Shapiro/usr/lib/aliases /etc/mail/aliases 26206f25ae9SGregory Neil Shapiro/usr/lib/mail/aliases /etc/mail/aliases 26306f25ae9SGregory Neil Shapiro/usr/ucblib/aliases /etc/mail/aliases 26406f25ae9SGregory Neil Shapiro 26506f25ae9SGregory Neil Shapiro/etc/sendmail.cw /etc/mail/local-host-names 26606f25ae9SGregory Neil Shapiro/etc/mail/sendmail.cw /etc/mail/local-host-names 26706f25ae9SGregory Neil Shapiro/etc/sendmail/sendmail.cw /etc/mail/local-host-names 26806f25ae9SGregory Neil Shapiro 26906f25ae9SGregory Neil Shapiro/etc/sendmail.ct /etc/mail/trusted-users 27006f25ae9SGregory Neil Shapiro 27106f25ae9SGregory Neil Shapiro/etc/sendmail.oE /etc/mail/error-header 27206f25ae9SGregory Neil Shapiro 27306f25ae9SGregory Neil Shapiro/etc/sendmail.hf /etc/mail/helpfile 27406f25ae9SGregory Neil Shapiro/etc/mail/sendmail.hf /etc/mail/helpfile 27506f25ae9SGregory Neil Shapiro/usr/ucblib/sendmail.hf /etc/mail/helpfile 27606f25ae9SGregory Neil Shapiro/etc/ucbmail/sendmail.hf /etc/mail/helpfile 27706f25ae9SGregory Neil Shapiro/usr/lib/sendmail.hf /etc/mail/helpfile 27806f25ae9SGregory Neil Shapiro/usr/share/lib/sendmail.hf /etc/mail/helpfile 27906f25ae9SGregory Neil Shapiro/usr/share/misc/sendmail.hf /etc/mail/helpfile 28006f25ae9SGregory Neil Shapiro/share/misc/sendmail.hf /etc/mail/helpfile 28106f25ae9SGregory Neil Shapiro 28206f25ae9SGregory Neil Shapiro/etc/service.switch /etc/mail/service.switch 28306f25ae9SGregory Neil Shapiro 28406f25ae9SGregory Neil Shapiro/etc/sendmail.st /etc/mail/statistics 28506f25ae9SGregory Neil Shapiro/etc/mail/sendmail.st /etc/mail/statistics 28606f25ae9SGregory Neil Shapiro/etc/mailer/sendmail.st /etc/mail/statistics 28706f25ae9SGregory Neil Shapiro/etc/sendmail/sendmail.st /etc/mail/statistics 28806f25ae9SGregory Neil Shapiro/usr/lib/sendmail.st /etc/mail/statistics 28906f25ae9SGregory Neil Shapiro/usr/ucblib/sendmail.st /etc/mail/statistics 29006f25ae9SGregory Neil Shapiro 29106f25ae9SGregory Neil ShapiroNote that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR 29206f25ae9SGregory Neil Shapiroto create the pathnames. The default value of this variable is 29306f25ae9SGregory Neil Shapiro`/etc/mail/'. If you set this macro to a different value, you MUST include 29406f25ae9SGregory Neil Shapiroa trailing slash. 295c2aa98e2SPeter Wemm 29613058a91SGregory Neil ShapiroNotice: all filenames used in a .mc (or .cf) file should be absolute 29713058a91SGregory Neil Shapiro(starting at the root, i.e., with '/'). Relative filenames most 29813058a91SGregory Neil Shapirolikely cause surprises during operations (unless otherwise noted). 29913058a91SGregory Neil Shapiro 30013058a91SGregory Neil Shapiro 301c2aa98e2SPeter Wemm+--------+ 302c2aa98e2SPeter Wemm| OSTYPE | 303c2aa98e2SPeter Wemm+--------+ 304c2aa98e2SPeter Wemm 305c2aa98e2SPeter WemmYou MUST define an operating system environment, or the configuration 306c2aa98e2SPeter Wemmfile build will puke. There are several environments available; look 307c2aa98e2SPeter Wemmat the "ostype" directory for the current list. This macro changes 308c2aa98e2SPeter Wemmthings like the location of the alias file and queue directory. Some 309c2aa98e2SPeter Wemmof these files are identical to one another. 310c2aa98e2SPeter Wemm 311c2aa98e2SPeter WemmIt is IMPERATIVE that the OSTYPE occur before any MAILER definitions. 312c2aa98e2SPeter WemmIn general, the OSTYPE macro should go immediately after any version 313c2aa98e2SPeter Wemminformation, and MAILER definitions should always go last. 314c2aa98e2SPeter Wemm 315c2aa98e2SPeter WemmOperating system definitions are usually easy to write. They may define 316c2aa98e2SPeter Wemmthe following variables (everything defaults, so an ostype file may be 317c2aa98e2SPeter Wemmempty). Unfortunately, the list of configuration-supported systems is 318c2aa98e2SPeter Wemmnot as broad as the list of source-supported systems, since many of 319c2aa98e2SPeter Wemmthe source contributors do not include corresponding ostype files. 320c2aa98e2SPeter Wemm 32106f25ae9SGregory Neil ShapiroALIAS_FILE [/etc/mail/aliases] The location of the text version 322c2aa98e2SPeter Wemm of the alias file(s). It can be a comma-separated 323c2aa98e2SPeter Wemm list of names (but be sure you quote values with 324c2aa98e2SPeter Wemm commas in them -- for example, use 325c2aa98e2SPeter Wemm define(`ALIAS_FILE', `a,b') 326c2aa98e2SPeter Wemm to get "a" and "b" both listed as alias files; 327c2aa98e2SPeter Wemm otherwise the define() primitive only sees "a"). 32806f25ae9SGregory Neil ShapiroHELP_FILE [/etc/mail/helpfile] The name of the file 329c2aa98e2SPeter Wemm containing information printed in response to 330c2aa98e2SPeter Wemm the SMTP HELP command. 331c2aa98e2SPeter WemmQUEUE_DIR [/var/spool/mqueue] The directory containing 33206f25ae9SGregory Neil Shapiro queue files. To use multiple queues, supply 33306f25ae9SGregory Neil Shapiro a value ending with an asterisk. For 334602a2b1bSGregory Neil Shapiro example, /var/spool/mqueue/qd* will use all of the 33506f25ae9SGregory Neil Shapiro directories or symbolic links to directories 336602a2b1bSGregory Neil Shapiro beginning with 'qd' in /var/spool/mqueue as queue 33706f25ae9SGregory Neil Shapiro directories. The names 'qf', 'df', and 'xf' are 338602a2b1bSGregory Neil Shapiro reserved as specific subdirectories for the 339602a2b1bSGregory Neil Shapiro corresponding queue file types as explained in 34040266059SGregory Neil Shapiro doc/op/op.me. See also QUEUE GROUP DEFINITIONS. 34140266059SGregory Neil ShapiroMSP_QUEUE_DIR [/var/spool/clientmqueue] The directory containing 34240266059SGregory Neil Shapiro queue files for the MSP (Mail Submission Program, 34340266059SGregory Neil Shapiro see sendmail/SECURITY). 34406f25ae9SGregory Neil ShapiroSTATUS_FILE [/etc/mail/statistics] The file containing status 345c2aa98e2SPeter Wemm information. 346c2aa98e2SPeter WemmLOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail. 34706f25ae9SGregory Neil ShapiroLOCAL_MAILER_FLAGS [Prmn9] The flags used by the local mailer. The 34806f25ae9SGregory Neil Shapiro flags lsDFMAw5:/|@q are always included. 349c2aa98e2SPeter WemmLOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local 350c2aa98e2SPeter Wemm mail. 351c2aa98e2SPeter WemmLOCAL_MAILER_MAX [undefined] If defined, the maximum size of local 352c2aa98e2SPeter Wemm mail that you are willing to accept. 35306f25ae9SGregory Neil ShapiroLOCAL_MAILER_MAXMSGS [undefined] If defined, the maximum number of 35406f25ae9SGregory Neil Shapiro messages to deliver in a single connection. Only 35506f25ae9SGregory Neil Shapiro useful for LMTP local mailers. 356c2aa98e2SPeter WemmLOCAL_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 357c2aa98e2SPeter Wemm that ARRIVE from an address that resolves to the 358c2aa98e2SPeter Wemm local mailer and which are converted to MIME will be 359c2aa98e2SPeter Wemm labeled with this character set. 36006f25ae9SGregory Neil ShapiroLOCAL_MAILER_EOL [undefined] If defined, the string to use as the 36106f25ae9SGregory Neil Shapiro end of line for the local mailer. 36206f25ae9SGregory Neil ShapiroLOCAL_MAILER_DSN_DIAGNOSTIC_CODE 36306f25ae9SGregory Neil Shapiro [X-Unix] The DSN Diagnostic-Code value for the 36406f25ae9SGregory Neil Shapiro local mailer. This should be changed with care. 365c2aa98e2SPeter WemmLOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email. 366c2aa98e2SPeter WemmLOCAL_SHELL_FLAGS [eu9] The flags used by the shell mailer. The 367c2aa98e2SPeter Wemm flags lsDFM are always included. 368c2aa98e2SPeter WemmLOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog" 369c2aa98e2SPeter Wemm mail. 370c2aa98e2SPeter WemmLOCAL_SHELL_DIR [$z:/] The directory search path in which the 371c2aa98e2SPeter Wemm shell should run. 37240266059SGregory Neil ShapiroLOCAL_MAILER_QGRP [undefined] The queue group for the local mailer. 373c2aa98e2SPeter WemmUSENET_MAILER_PATH [/usr/lib/news/inews] The name of the program 374c2aa98e2SPeter Wemm used to submit news. 37506f25ae9SGregory Neil ShapiroUSENET_MAILER_FLAGS [rsDFMmn] The mailer flags for the usenet mailer. 376c2aa98e2SPeter WemmUSENET_MAILER_ARGS [-m -h -n] The command line arguments for the 37740266059SGregory Neil Shapiro usenet mailer. NOTE: Some versions of inews 37840266059SGregory Neil Shapiro (such as those shipped with newer versions of INN) 37940266059SGregory Neil Shapiro use different flags. Double check the defaults 38040266059SGregory Neil Shapiro against the inews man page. 381959366dcSGregory Neil ShapiroUSENET_MAILER_MAX [undefined] The maximum size of messages that will 382c2aa98e2SPeter Wemm be accepted by the usenet mailer. 38340266059SGregory Neil ShapiroUSENET_MAILER_QGRP [undefined] The queue group for the usenet mailer. 384c2aa98e2SPeter WemmSMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default 38506f25ae9SGregory Neil Shapiro flags are `mDFMuX' for all SMTP-based mailers; the 38606f25ae9SGregory Neil Shapiro "esmtp" mailer adds `a'; "smtp8" adds `8'; and 38706f25ae9SGregory Neil Shapiro "dsmtp" adds `%'. 38806f25ae9SGregory Neil ShapiroRELAY_MAILER_FLAGS [undefined] Flags added to the relay mailer. Default 38906f25ae9SGregory Neil Shapiro flags are `mDFMuX' for all SMTP-based mailers; the 39006f25ae9SGregory Neil Shapiro relay mailer adds `a8'. If this is not defined, 39106f25ae9SGregory Neil Shapiro then SMTP_MAILER_FLAGS is used. 392c2aa98e2SPeter WemmSMTP_MAILER_MAX [undefined] The maximum size of messages that will 39306f25ae9SGregory Neil Shapiro be transported using the smtp, smtp8, esmtp, or dsmtp 394c2aa98e2SPeter Wemm mailers. 39506f25ae9SGregory Neil ShapiroSMTP_MAILER_MAXMSGS [undefined] If defined, the maximum number of 39606f25ae9SGregory Neil Shapiro messages to deliver in a single connection for the 39706f25ae9SGregory Neil Shapiro smtp, smtp8, esmtp, or dsmtp mailers. 398605302a5SGregory Neil ShapiroSMTP_MAILER_MAXRCPTS [undefined] If defined, the maximum number of 3995b0945b5SGregory Neil Shapiro recipients to deliver in a single envelope for the 400605302a5SGregory Neil Shapiro smtp, smtp8, esmtp, or dsmtp mailers. 40142e5d165SGregory Neil ShapiroSMTP_MAILER_ARGS [TCP $h] The arguments passed to the smtp mailer. 402c2aa98e2SPeter Wemm About the only reason you would want to change this 403c2aa98e2SPeter Wemm would be to change the default port. 40442e5d165SGregory Neil ShapiroESMTP_MAILER_ARGS [TCP $h] The arguments passed to the esmtp mailer. 40542e5d165SGregory Neil ShapiroSMTP8_MAILER_ARGS [TCP $h] The arguments passed to the smtp8 mailer. 40642e5d165SGregory Neil ShapiroDSMTP_MAILER_ARGS [TCP $h] The arguments passed to the dsmtp mailer. 40742e5d165SGregory Neil ShapiroRELAY_MAILER_ARGS [TCP $h] The arguments passed to the relay mailer. 40840266059SGregory Neil ShapiroSMTP_MAILER_QGRP [undefined] The queue group for the smtp mailer. 40940266059SGregory Neil ShapiroESMTP_MAILER_QGRP [undefined] The queue group for the esmtp mailer. 41040266059SGregory Neil ShapiroSMTP8_MAILER_QGRP [undefined] The queue group for the smtp8 mailer. 41140266059SGregory Neil ShapiroDSMTP_MAILER_QGRP [undefined] The queue group for the dsmtp mailer. 41240266059SGregory Neil ShapiroRELAY_MAILER_QGRP [undefined] The queue group for the relay mailer. 41306f25ae9SGregory Neil ShapiroRELAY_MAILER_MAXMSGS [undefined] If defined, the maximum number of 41406f25ae9SGregory Neil Shapiro messages to deliver in a single connection for the 41506f25ae9SGregory Neil Shapiro relay mailer. 416c2aa98e2SPeter WemmSMTP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 417c2aa98e2SPeter Wemm that ARRIVE from an address that resolves to one of 418c2aa98e2SPeter Wemm the SMTP mailers and which are converted to MIME will 419c2aa98e2SPeter Wemm be labeled with this character set. 420da7d7b9cSGregory Neil ShapiroRELAY_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 421da7d7b9cSGregory Neil Shapiro that ARRIVE from an address that resolves to the 422da7d7b9cSGregory Neil Shapiro relay mailers and which are converted to MIME will 423da7d7b9cSGregory Neil Shapiro be labeled with this character set. 424d0cef73dSGregory Neil ShapiroSMTP_MAILER_LL [990] The maximum line length for SMTP mailers 425d0cef73dSGregory Neil Shapiro (except the relay mailer). 426d0cef73dSGregory Neil ShapiroRELAY_MAILER_LL [2040] The maximum line length for the relay mailer. 427c2aa98e2SPeter WemmUUCP_MAILER_PATH [/usr/bin/uux] The program used to send UUCP mail. 428c2aa98e2SPeter WemmUUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default 429c2aa98e2SPeter Wemm flags are `DFMhuU' (and `m' for uucp-new mailer, 430c2aa98e2SPeter Wemm minus `U' for uucp-dom mailer). 431c2aa98e2SPeter WemmUUCP_MAILER_ARGS [uux - -r -z -a$g -gC $h!rmail ($u)] The arguments 432c2aa98e2SPeter Wemm passed to the UUCP mailer. 433c2aa98e2SPeter WemmUUCP_MAILER_MAX [100000] The maximum size message accepted for 434c2aa98e2SPeter Wemm transmission by the UUCP mailers. 435c2aa98e2SPeter WemmUUCP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 436c2aa98e2SPeter Wemm that ARRIVE from an address that resolves to one of 437c2aa98e2SPeter Wemm the UUCP mailers and which are converted to MIME will 438c2aa98e2SPeter Wemm be labeled with this character set. 43940266059SGregory Neil ShapiroUUCP_MAILER_QGRP [undefined] The queue group for the UUCP mailers. 440c2aa98e2SPeter WemmFAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to 441c2aa98e2SPeter Wemm submit FAX messages. 442c2aa98e2SPeter WemmFAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX 443c2aa98e2SPeter Wemm mailer. 444c2aa98e2SPeter WemmFAX_MAILER_MAX [100000] The maximum size message accepted for 445c2aa98e2SPeter Wemm transmission by FAX. 446c2aa98e2SPeter WemmPOP_MAILER_PATH [/usr/lib/mh/spop] The pathname of the POP mailer. 44706f25ae9SGregory Neil ShapiroPOP_MAILER_FLAGS [Penu] Flags added to POP mailer. Flags lsDFMq 448c2aa98e2SPeter Wemm are always added. 449c2aa98e2SPeter WemmPOP_MAILER_ARGS [pop $u] The arguments passed to the POP mailer. 45040266059SGregory Neil ShapiroPOP_MAILER_QGRP [undefined] The queue group for the pop mailer. 451c2aa98e2SPeter WemmPROCMAIL_MAILER_PATH [/usr/local/bin/procmail] The path to the procmail 4522e43090eSPeter Wemm program. This is also used by 4532e43090eSPeter Wemm FEATURE(`local_procmail'). 454c2aa98e2SPeter WemmPROCMAIL_MAILER_FLAGS [SPhnu9] Flags added to Procmail mailer. Flags 45506f25ae9SGregory Neil Shapiro DFM are always set. This is NOT used by 4562e43090eSPeter Wemm FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS 457c2aa98e2SPeter Wemm instead. 458c2aa98e2SPeter WemmPROCMAIL_MAILER_ARGS [procmail -Y -m $h $f $u] The arguments passed to 459c2aa98e2SPeter Wemm the Procmail mailer. This is NOT used by 4602e43090eSPeter Wemm FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS 461c2aa98e2SPeter Wemm instead. 462c2aa98e2SPeter WemmPROCMAIL_MAILER_MAX [undefined] If set, the maximum size message that 463c2aa98e2SPeter Wemm will be accepted by the procmail mailer. 46440266059SGregory Neil ShapiroPROCMAIL_MAILER_QGRP [undefined] The queue group for the procmail mailer. 465c2aa98e2SPeter WemmMAIL11_MAILER_PATH [/usr/etc/mail11] The path to the mail11 mailer. 466c2aa98e2SPeter WemmMAIL11_MAILER_FLAGS [nsFx] Flags for the mail11 mailer. 467c2aa98e2SPeter WemmMAIL11_MAILER_ARGS [mail11 $g $x $h $u] Arguments passed to the mail11 468c2aa98e2SPeter Wemm mailer. 46940266059SGregory Neil ShapiroMAIL11_MAILER_QGRP [undefined] The queue group for the mail11 mailer. 470c2aa98e2SPeter WemmPH_MAILER_PATH [/usr/local/etc/phquery] The path to the phquery 471c2aa98e2SPeter Wemm program. 47206f25ae9SGregory Neil ShapiroPH_MAILER_FLAGS [ehmu] Flags for the phquery mailer. Flags nrDFM 47306f25ae9SGregory Neil Shapiro are always set. 474c2aa98e2SPeter WemmPH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer. 47540266059SGregory Neil ShapiroPH_MAILER_QGRP [undefined] The queue group for the ph mailer. 47606f25ae9SGregory Neil ShapiroCYRUS_MAILER_FLAGS [Ah5@/:|] The flags used by the cyrus mailer. The 477c2aa98e2SPeter Wemm flags lsDFMnPq are always included. 478c2aa98e2SPeter WemmCYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The program used to deliver 479c2aa98e2SPeter Wemm cyrus mail. 480c2aa98e2SPeter WemmCYRUS_MAILER_ARGS [deliver -e -m $h -- $u] The arguments passed 481c2aa98e2SPeter Wemm to deliver cyrus mail. 482c2aa98e2SPeter WemmCYRUS_MAILER_MAX [undefined] If set, the maximum size message that 483c2aa98e2SPeter Wemm will be accepted by the cyrus mailer. 484c2aa98e2SPeter WemmCYRUS_MAILER_USER [cyrus:mail] The user and group to become when 485c2aa98e2SPeter Wemm running the cyrus mailer. 48640266059SGregory Neil ShapiroCYRUS_MAILER_QGRP [undefined] The queue group for the cyrus mailer. 48706f25ae9SGregory Neil ShapiroCYRUS_BB_MAILER_FLAGS [u] The flags used by the cyrusbb mailer. 48806f25ae9SGregory Neil Shapiro The flags lsDFMnP are always included. 489c2aa98e2SPeter WemmCYRUS_BB_MAILER_ARGS [deliver -e -m $u] The arguments passed 490c2aa98e2SPeter Wemm to deliver cyrusbb mail. 49194c01205SGregory Neil ShapiroCYRUSV2_MAILER_FLAGS [A@/:|m] The flags used by the cyrusv2 mailer. The 49294c01205SGregory Neil Shapiro flags lsDFMnqXz are always included. 49394c01205SGregory Neil ShapiroCYRUSV2_MAILER_MAXMSGS [undefined] If defined, the maximum number of 49494c01205SGregory Neil Shapiro messages to deliver in a single connection for the 49594c01205SGregory Neil Shapiro cyrusv2 mailer. 49694c01205SGregory Neil ShapiroCYRUSV2_MAILER_MAXRCPTS [undefined] If defined, the maximum number of 49794c01205SGregory Neil Shapiro recipients to deliver in a single connection for the 49894c01205SGregory Neil Shapiro cyrusv2 mailer. 49994c01205SGregory Neil ShapiroCYRUSV2_MAILER_ARGS [FILE /var/imap/socket/lmtp] The arguments passed 50094c01205SGregory Neil Shapiro to the cyrusv2 mailer. This can be used to 50194c01205SGregory Neil Shapiro change the name of the Unix domain socket, or 50294c01205SGregory Neil Shapiro to switch to delivery via TCP (e.g., `TCP $h lmtp') 50394c01205SGregory Neil ShapiroCYRUSV2_MAILER_QGRP [undefined] The queue group for the cyrusv2 mailer. 50413bd1963SGregory Neil ShapiroCYRUSV2_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 50513bd1963SGregory Neil Shapiro that ARRIVE from an address that resolves to one the 50613bd1963SGregory Neil Shapiro Cyrus mailer and which are converted to MIME will 50713bd1963SGregory Neil Shapiro be labeled with this character set. 508c2aa98e2SPeter WemmconfEBINDIR [/usr/libexec] The directory for executables. 5092e43090eSPeter Wemm Currently used for FEATURE(`local_lmtp') and 5102e43090eSPeter Wemm FEATURE(`smrsh'). 51106f25ae9SGregory Neil ShapiroQPAGE_MAILER_FLAGS [mDFMs] The flags used by the qpage mailer. 51206f25ae9SGregory Neil ShapiroQPAGE_MAILER_PATH [/usr/local/bin/qpage] The program used to deliver 51306f25ae9SGregory Neil Shapiro qpage mail. 51406f25ae9SGregory Neil ShapiroQPAGE_MAILER_ARGS [qpage -l0 -m -P$u] The arguments passed 51506f25ae9SGregory Neil Shapiro to deliver qpage mail. 51606f25ae9SGregory Neil ShapiroQPAGE_MAILER_MAX [4096] If set, the maximum size message that 51706f25ae9SGregory Neil Shapiro will be accepted by the qpage mailer. 51840266059SGregory Neil ShapiroQPAGE_MAILER_QGRP [undefined] The queue group for the qpage mailer. 51940266059SGregory Neil ShapiroLOCAL_PROG_QGRP [undefined] The queue group for the prog mailer. 520c2aa98e2SPeter Wemm 52106f25ae9SGregory Neil ShapiroNote: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS: 5224e4196cbSGregory Neil ShapiroMODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part 5234e4196cbSGregory Neil Shapiroof the macro Name_MAILER_FLAGS (note: that means Name is entirely in 5244e4196cbSGregory Neil Shapiroupper case) and change can be: flags that should be used directly 5254e4196cbSGregory Neil Shapiro(thus overriding the default value), or if it starts with `+' (`-') 5264e4196cbSGregory Neil Shapirothen those flags are added to (removed from) the default value. 5274e4196cbSGregory Neil ShapiroExample: 52806f25ae9SGregory Neil Shapiro 52906f25ae9SGregory Neil Shapiro MODIFY_MAILER_FLAGS(`LOCAL', `+e') 53006f25ae9SGregory Neil Shapiro 53140266059SGregory Neil Shapirowill add the flag `e' to LOCAL_MAILER_FLAGS. Notice: there are 53240266059SGregory Neil Shapiroseveral smtp mailers all of which are manipulated individually. 53340266059SGregory Neil ShapiroSee the section MAILERS for the available mailer names. 53406f25ae9SGregory Neil ShapiroWARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS 53506f25ae9SGregory Neil Shapirounconditionally, i.e., without respecting any definitions in an 53606f25ae9SGregory Neil ShapiroOSTYPE setting. 537c2aa98e2SPeter Wemm 538c2aa98e2SPeter Wemm 539c2aa98e2SPeter Wemm+---------+ 540c2aa98e2SPeter Wemm| DOMAINS | 541c2aa98e2SPeter Wemm+---------+ 542c2aa98e2SPeter Wemm 543c2aa98e2SPeter WemmYou will probably want to collect domain-dependent defines into one 54406f25ae9SGregory Neil Shapirofile, referenced by the DOMAIN macro. For example, the Berkeley 545c2aa98e2SPeter Wemmdomain file includes definitions for several internal distinguished 546c2aa98e2SPeter Wemmhosts: 547c2aa98e2SPeter Wemm 548c2aa98e2SPeter WemmUUCP_RELAY The host that will accept UUCP-addressed email. 549c2aa98e2SPeter Wemm If not defined, all UUCP sites must be directly 550c2aa98e2SPeter Wemm connected. 551c2aa98e2SPeter WemmBITNET_RELAY The host that will accept BITNET-addressed email. 552c2aa98e2SPeter Wemm If not defined, the .BITNET pseudo-domain won't work. 553c2aa98e2SPeter WemmDECNET_RELAY The host that will accept DECNET-addressed email. 554c2aa98e2SPeter Wemm If not defined, the .DECNET pseudo-domain and addresses 555c2aa98e2SPeter Wemm of the form node::user will not work. 556c2aa98e2SPeter WemmFAX_RELAY The host that will accept mail to the .FAX pseudo-domain. 557c2aa98e2SPeter Wemm The "fax" mailer overrides this value. 558193538b7SGregory Neil ShapiroLOCAL_RELAY The site that will handle unqualified names -- that 559193538b7SGregory Neil Shapiro is, names without an @domain extension. 560193538b7SGregory Neil Shapiro Normally MAIL_HUB is preferred for this function. 561193538b7SGregory Neil Shapiro LOCAL_RELAY is mostly useful in conjunction with 56240266059SGregory Neil Shapiro FEATURE(`stickyhost') -- see the discussion of 563193538b7SGregory Neil Shapiro stickyhost below. If not set, they are assumed to 564193538b7SGregory Neil Shapiro belong on this machine. This allows you to have a 565193538b7SGregory Neil Shapiro central site to store a company- or department-wide 566193538b7SGregory Neil Shapiro alias database. This only works at small sites, 567193538b7SGregory Neil Shapiro and only with some user agents. 568c2aa98e2SPeter WemmLUSER_RELAY The site that will handle lusers -- that is, apparently 56906f25ae9SGregory Neil Shapiro local names that aren't local accounts or aliases. To 57006f25ae9SGregory Neil Shapiro specify a local user instead of a site, set this to 57106f25ae9SGregory Neil Shapiro ``local:username''. 572c2aa98e2SPeter Wemm 573c2aa98e2SPeter WemmAny of these can be either ``mailer:hostname'' (in which case the 574c2aa98e2SPeter Wemmmailer is the internal mailer name, such as ``uucp-new'' and the hostname 575c2aa98e2SPeter Wemmis the name of the host as appropriate for that mailer) or just a 576c2aa98e2SPeter Wemm``hostname'', in which case a default mailer type (usually ``relay'', 577c2aa98e2SPeter Wemma variant on SMTP) is used. WARNING: if you have a wildcard MX 578c2aa98e2SPeter Wemmrecord matching your domain, you probably want to define these to 579c2aa98e2SPeter Wemmhave a trailing dot so that you won't get the mail diverted back 580c2aa98e2SPeter Wemmto yourself. 581c2aa98e2SPeter Wemm 582c2aa98e2SPeter WemmThe domain file can also be used to define a domain name, if needed 583c2aa98e2SPeter Wemm(using "DD<domain>") and set certain site-wide features. If all hosts 584c2aa98e2SPeter Wemmat your site masquerade behind one email name, you could also use 585c2aa98e2SPeter WemmMASQUERADE_AS here. 586c2aa98e2SPeter Wemm 587c2aa98e2SPeter WemmYou do not have to define a domain -- in particular, if you are a 588c2aa98e2SPeter Wemmsingle machine sitting off somewhere, it is probably more work than 589c2aa98e2SPeter Wemmit's worth. This is just a mechanism for combining "domain dependent 590c2aa98e2SPeter Wemmknowledge" into one place. 591c2aa98e2SPeter Wemm 59240266059SGregory Neil Shapiro 593c2aa98e2SPeter Wemm+---------+ 594c2aa98e2SPeter Wemm| MAILERS | 595c2aa98e2SPeter Wemm+---------+ 596c2aa98e2SPeter Wemm 597c2aa98e2SPeter WemmThere are fewer mailers supported in this version than the previous 598c2aa98e2SPeter Wemmversion, owing mostly to a simpler world. As a general rule, put the 59940266059SGregory Neil ShapiroMAILER definitions last in your .mc file. 600c2aa98e2SPeter Wemm 601c2aa98e2SPeter Wemmlocal The local and prog mailers. You will almost always 602c2aa98e2SPeter Wemm need these; the only exception is if you relay ALL 603c2aa98e2SPeter Wemm your mail to another site. This mailer is included 604c2aa98e2SPeter Wemm automatically. 605c2aa98e2SPeter Wemm 606c2aa98e2SPeter Wemmsmtp The Simple Mail Transport Protocol mailer. This does 607c2aa98e2SPeter Wemm not hide hosts behind a gateway or another other 608c2aa98e2SPeter Wemm such hack; it assumes a world where everyone is 609c2aa98e2SPeter Wemm running the name server. This file actually defines 61006f25ae9SGregory Neil Shapiro five mailers: "smtp" for regular (old-style) SMTP to 611c2aa98e2SPeter Wemm other servers, "esmtp" for extended SMTP to other 612c2aa98e2SPeter Wemm servers, "smtp8" to do SMTP to other servers without 613c2aa98e2SPeter Wemm converting 8-bit data to MIME (essentially, this is 614c2aa98e2SPeter Wemm your statement that you know the other end is 8-bit 61506f25ae9SGregory Neil Shapiro clean even if it doesn't say so), "dsmtp" to do on 61606f25ae9SGregory Neil Shapiro demand delivery, and "relay" for transmission to the 61706f25ae9SGregory Neil Shapiro RELAY_HOST, LUSER_RELAY, or MAIL_HUB. 618c2aa98e2SPeter Wemm 61942e5d165SGregory Neil Shapirouucp The UNIX-to-UNIX Copy Program mailer. Actually, this 620c2aa98e2SPeter Wemm defines two mailers, "uucp-old" (a.k.a. "uucp") and 621c2aa98e2SPeter Wemm "uucp-new" (a.k.a. "suucp"). The latter is for when you 622c2aa98e2SPeter Wemm know that the UUCP mailer at the other end can handle 623c2aa98e2SPeter Wemm multiple recipients in one transfer. If the smtp mailer 62440266059SGregory Neil Shapiro is included in your configuration, two other mailers 62540266059SGregory Neil Shapiro ("uucp-dom" and "uucp-uudom") are also defined [warning: you 62640266059SGregory Neil Shapiro MUST specify MAILER(`smtp') before MAILER(`uucp')]. When you 627c2aa98e2SPeter Wemm include the uucp mailer, sendmail looks for all names in 62806f25ae9SGregory Neil Shapiro class {U} and sends them to the uucp-old mailer; all 62906f25ae9SGregory Neil Shapiro names in class {Y} are sent to uucp-new; and all 63006f25ae9SGregory Neil Shapiro names in class {Z} are sent to uucp-uudom. Note that 631c2aa98e2SPeter Wemm this is a function of what version of rmail runs on 632c2aa98e2SPeter Wemm the receiving end, and hence may be out of your control. 633c2aa98e2SPeter Wemm See the section below describing UUCP mailers in more 634c2aa98e2SPeter Wemm detail. 635c2aa98e2SPeter Wemm 636c2aa98e2SPeter Wemmusenet Usenet (network news) delivery. If this is specified, 637c2aa98e2SPeter Wemm an extra rule is added to ruleset 0 that forwards all 638c2aa98e2SPeter Wemm local email for users named ``group.usenet'' to the 639c2aa98e2SPeter Wemm ``inews'' program. Note that this works for all groups, 640c2aa98e2SPeter Wemm and may be considered a security problem. 641c2aa98e2SPeter Wemm 642c2aa98e2SPeter Wemmfax Facsimile transmission. This is experimental and based 643c2aa98e2SPeter Wemm on Sam Leffler's HylaFAX software. For more information, 644193538b7SGregory Neil Shapiro see http://www.hylafax.org/. 645c2aa98e2SPeter Wemm 646c2aa98e2SPeter Wemmpop Post Office Protocol. 647c2aa98e2SPeter Wemm 648c2aa98e2SPeter Wemmprocmail An interface to procmail (does not come with sendmail). 649c2aa98e2SPeter Wemm This is designed to be used in mailertables. For example, 650c2aa98e2SPeter Wemm a common question is "how do I forward all mail for a given 651c2aa98e2SPeter Wemm domain to a single person?". If you have this mailer 652c2aa98e2SPeter Wemm defined, you could set up a mailertable reading: 653c2aa98e2SPeter Wemm 654c2aa98e2SPeter Wemm host.com procmail:/etc/procmailrcs/host.com 655c2aa98e2SPeter Wemm 656c2aa98e2SPeter Wemm with the file /etc/procmailrcs/host.com reading: 657c2aa98e2SPeter Wemm 658c2aa98e2SPeter Wemm :0 # forward mail for host.com 659c2aa98e2SPeter Wemm ! -oi -f $1 person@other.host 660c2aa98e2SPeter Wemm 661c2aa98e2SPeter Wemm This would arrange for (anything)@host.com to be sent 662d9986b26SGregory Neil Shapiro to person@other.host. In a procmail script, $1 is the 663d9986b26SGregory Neil Shapiro name of the sender and $2 is the name of the recipient. 6642e43090eSPeter Wemm If you use this with FEATURE(`local_procmail'), the FEATURE 665c2aa98e2SPeter Wemm should be listed first. 666c2aa98e2SPeter Wemm 66740266059SGregory Neil Shapiro Of course there are other ways to solve this particular 66840266059SGregory Neil Shapiro problem, e.g., a catch-all entry in a virtusertable. 66940266059SGregory Neil Shapiro 670c2aa98e2SPeter Wemmmail11 The DECnet mail11 mailer, useful only if you have the mail11 671c2aa98e2SPeter Wemm program from gatekeeper.dec.com:/pub/DEC/gwtools (and 672c2aa98e2SPeter Wemm DECnet, of course). This is for Phase IV DECnet support; 673c2aa98e2SPeter Wemm if you have Phase V at your site you may have additional 674c2aa98e2SPeter Wemm problems. 675c2aa98e2SPeter Wemm 676c2aa98e2SPeter Wemmphquery The phquery program. This is somewhat counterintuitively 677c2aa98e2SPeter Wemm referenced as the "ph" mailer internally. It can be used 678c2aa98e2SPeter Wemm to do CCSO name server lookups. The phquery program, which 679c2aa98e2SPeter Wemm this mailer uses, is distributed with the ph client. 680c2aa98e2SPeter Wemm 681c2aa98e2SPeter Wemmcyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to 682c2aa98e2SPeter Wemm a local cyrus user. this mailer can make use of the 68340266059SGregory Neil Shapiro "user+detail@local.host" syntax (see 68440266059SGregory Neil Shapiro FEATURE(`preserve_local_plus_detail')); it will deliver the 68540266059SGregory Neil Shapiro mail to the user's "detail" mailbox if the mailbox's ACL 68640266059SGregory Neil Shapiro permits. The cyrusbb mailer delivers to a system-wide 68740266059SGregory Neil Shapiro cyrus mailbox if the mailbox's ACL permits. The cyrus 68840266059SGregory Neil Shapiro mailer must be defined after the local mailer. 689c2aa98e2SPeter Wemm 69094c01205SGregory Neil Shapirocyrusv2 The mailer for Cyrus v2.x. The cyrusv2 mailer delivers to 69194c01205SGregory Neil Shapiro local cyrus users via LMTP. This mailer can make use of the 69294c01205SGregory Neil Shapiro "user+detail@local.host" syntax (see 69394c01205SGregory Neil Shapiro FEATURE(`preserve_local_plus_detail')); it will deliver the 69494c01205SGregory Neil Shapiro mail to the user's "detail" mailbox if the mailbox's ACL 69594c01205SGregory Neil Shapiro permits. The cyrusv2 mailer must be defined after the 69694c01205SGregory Neil Shapiro local mailer. 69794c01205SGregory Neil Shapiro 69806f25ae9SGregory Neil Shapiroqpage A mailer for QuickPage, a pager interface. See 69906f25ae9SGregory Neil Shapiro http://www.qpage.org/ for further information. 700c2aa98e2SPeter Wemm 701c2aa98e2SPeter WemmThe local mailer accepts addresses of the form "user+detail", where 702c2aa98e2SPeter Wemmthe "+detail" is not used for mailbox matching but is available 7032e43090eSPeter Wemmto certain local mail programs (in particular, see 7042e43090eSPeter WemmFEATURE(`local_procmail')). For example, "eric", "eric+sendmail", and 7052e43090eSPeter Wemm"eric+sww" all indicate the same user, but additional arguments <null>, 7062e43090eSPeter Wemm"sendmail", and "sww" may be provided for use in sorting mail. 707c2aa98e2SPeter Wemm 708c2aa98e2SPeter Wemm 709c2aa98e2SPeter Wemm+----------+ 710c2aa98e2SPeter Wemm| FEATURES | 711c2aa98e2SPeter Wemm+----------+ 712c2aa98e2SPeter Wemm 713c2aa98e2SPeter WemmSpecial features can be requested using the "FEATURE" macro. For 714c2aa98e2SPeter Wemmexample, the .mc line: 715c2aa98e2SPeter Wemm 7162e43090eSPeter Wemm FEATURE(`use_cw_file') 717c2aa98e2SPeter Wemm 71806f25ae9SGregory Neil Shapirotells sendmail that you want to have it read an /etc/mail/local-host-names 71940266059SGregory Neil Shapirofile to get values for class {w}. A FEATURE may contain up to 9 72006f25ae9SGregory Neil Shapirooptional parameters -- for example: 721c2aa98e2SPeter Wemm 7222e43090eSPeter Wemm FEATURE(`mailertable', `dbm /usr/lib/mailertable') 723c2aa98e2SPeter Wemm 724c2aa98e2SPeter WemmThe default database map type for the table features can be set with 725c2aa98e2SPeter Wemm 726c2aa98e2SPeter Wemm define(`DATABASE_MAP_TYPE', `dbm') 727c2aa98e2SPeter Wemm 728c2aa98e2SPeter Wemmwhich would set it to use ndbm databases. The default is the Berkeley DB 729c2aa98e2SPeter Wemmhash database format. Note that you must still declare a database map type 730c2aa98e2SPeter Wemmif you specify an argument to a FEATURE. DATABASE_MAP_TYPE is only used 73106f25ae9SGregory Neil Shapiroif no argument is given for the FEATURE. It must be specified before any 73206f25ae9SGregory Neil Shapirofeature that uses a map. 733c2aa98e2SPeter Wemm 73440266059SGregory Neil ShapiroAlso, features which can take a map definition as an argument can also take 73540266059SGregory Neil Shapirothe special keyword `LDAP'. If that keyword is used, the map will use the 73640266059SGregory Neil ShapiroLDAP definition described in the ``USING LDAP FOR ALIASES, MAPS, AND 73740266059SGregory Neil ShapiroCLASSES'' section below. 73840266059SGregory Neil Shapiro 739c2aa98e2SPeter WemmAvailable features are: 740c2aa98e2SPeter Wemm 74106f25ae9SGregory Neil Shapirouse_cw_file Read the file /etc/mail/local-host-names file to get 74206f25ae9SGregory Neil Shapiro alternate names for this host. This might be used if you 74306f25ae9SGregory Neil Shapiro were on a host that MXed for a dynamic set of other hosts. 74406f25ae9SGregory Neil Shapiro If the set is static, just including the line "Cw<name1> 74506f25ae9SGregory Neil Shapiro <name2> ..." (where the names are fully qualified domain 74606f25ae9SGregory Neil Shapiro names) is probably superior. The actual filename can be 74706f25ae9SGregory Neil Shapiro overridden by redefining confCW_FILE. 748c2aa98e2SPeter Wemm 74906f25ae9SGregory Neil Shapirouse_ct_file Read the file /etc/mail/trusted-users file to get the 75006f25ae9SGregory Neil Shapiro names of users that will be ``trusted'', that is, able to 75106f25ae9SGregory Neil Shapiro set their envelope from address using -f without generating 75206f25ae9SGregory Neil Shapiro a warning message. The actual filename can be overridden 75306f25ae9SGregory Neil Shapiro by redefining confCT_FILE. 754c2aa98e2SPeter Wemm 755c2aa98e2SPeter Wemmredirect Reject all mail addressed to "address.REDIRECT" with 75606f25ae9SGregory Neil Shapiro a ``551 User has moved; please try <address>'' message. 757c2aa98e2SPeter Wemm If this is set, you can alias people who have left 758c2aa98e2SPeter Wemm to their new address with ".REDIRECT" appended. 759c2aa98e2SPeter Wemm 76006f25ae9SGregory Neil Shapironouucp Don't route UUCP addresses. This feature takes one 76106f25ae9SGregory Neil Shapiro parameter: 76206f25ae9SGregory Neil Shapiro `reject': reject addresses which have "!" in the local 76306f25ae9SGregory Neil Shapiro part unless it originates from a system 76406f25ae9SGregory Neil Shapiro that is allowed to relay. 76506f25ae9SGregory Neil Shapiro `nospecial': don't do anything special with "!". 76640266059SGregory Neil Shapiro Warnings: 1. See the notice in the anti-spam section. 76706f25ae9SGregory Neil Shapiro 2. don't remove "!" from OperatorChars if `reject' is 76806f25ae9SGregory Neil Shapiro given as parameter. 769c2aa98e2SPeter Wemm 770da7d7b9cSGregory Neil Shapironopercenthack Don't treat % as routing character. This feature takes one 771da7d7b9cSGregory Neil Shapiro parameter: 772da7d7b9cSGregory Neil Shapiro `reject': reject addresses which have % in the local 773da7d7b9cSGregory Neil Shapiro part unless it originates from a system 774da7d7b9cSGregory Neil Shapiro that is allowed to relay. 775da7d7b9cSGregory Neil Shapiro `nospecial': don't do anything special with %. 776da7d7b9cSGregory Neil Shapiro Warnings: 1. See the notice in the anti-spam section. 777da7d7b9cSGregory Neil Shapiro 2. Don't remove % from OperatorChars if `reject' is 778da7d7b9cSGregory Neil Shapiro given as parameter. 779da7d7b9cSGregory Neil Shapiro 78006f25ae9SGregory Neil Shapironocanonify Don't pass addresses to $[ ... $] for canonification 781193538b7SGregory Neil Shapiro by default, i.e., host/domain names are considered canonical, 782193538b7SGregory Neil Shapiro except for unqualified names, which must not be used in this 783193538b7SGregory Neil Shapiro mode (violation of the standard). It can be changed by 784193538b7SGregory Neil Shapiro setting the DaemonPortOptions modifiers (M=). That is, 78506f25ae9SGregory Neil Shapiro FEATURE(`nocanonify') will be overridden by setting the 78606f25ae9SGregory Neil Shapiro 'c' flag. Conversely, if FEATURE(`nocanonify') is not used, 78706f25ae9SGregory Neil Shapiro it can be emulated by setting the 'C' flag 78806f25ae9SGregory Neil Shapiro (DaemonPortOptions=Modifiers=C). This would generally only 78906f25ae9SGregory Neil Shapiro be used by sites that only act as mail gateways or which have 79006f25ae9SGregory Neil Shapiro user agents that do full canonification themselves. You may 79106f25ae9SGregory Neil Shapiro also want to use 79206f25ae9SGregory Neil Shapiro "define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off 79306f25ae9SGregory Neil Shapiro the usual resolver options that do a similar thing. 79406f25ae9SGregory Neil Shapiro 79506f25ae9SGregory Neil Shapiro An exception list for FEATURE(`nocanonify') can be 79606f25ae9SGregory Neil Shapiro specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE, 79706f25ae9SGregory Neil Shapiro i.e., a list of domains which are nevertheless passed to 79806f25ae9SGregory Neil Shapiro $[ ... $] for canonification. This is useful to turn on 79906f25ae9SGregory Neil Shapiro canonification for local domains, e.g., use 80006f25ae9SGregory Neil Shapiro CANONIFY_DOMAIN(`my.domain my') to canonify addresses 80106f25ae9SGregory Neil Shapiro which end in "my.domain" or "my". 80206f25ae9SGregory Neil Shapiro Another way to require canonification in the local 80306f25ae9SGregory Neil Shapiro domain is CANONIFY_DOMAIN(`$=m'). 80406f25ae9SGregory Neil Shapiro 80506f25ae9SGregory Neil Shapiro A trailing dot is added to addresses with more than 80606f25ae9SGregory Neil Shapiro one component in it such that other features which 80706f25ae9SGregory Neil Shapiro expect a trailing dot (e.g., virtusertable) will 80806f25ae9SGregory Neil Shapiro still work. 80906f25ae9SGregory Neil Shapiro 81006f25ae9SGregory Neil Shapiro If `canonify_hosts' is specified as parameter, i.e., 81106f25ae9SGregory Neil Shapiro FEATURE(`nocanonify', `canonify_hosts'), then 81206f25ae9SGregory Neil Shapiro addresses which have only a hostname, e.g., 81306f25ae9SGregory Neil Shapiro <user@host>, will be canonified (and hopefully fully 81406f25ae9SGregory Neil Shapiro qualified), too. 815c2aa98e2SPeter Wemm 816193538b7SGregory Neil Shapirostickyhost This feature is sometimes used with LOCAL_RELAY, 817193538b7SGregory Neil Shapiro although it can be used for a different effect with 818193538b7SGregory Neil Shapiro MAIL_HUB. 819193538b7SGregory Neil Shapiro 820602a2b1bSGregory Neil Shapiro When used without MAIL_HUB, email sent to 821193538b7SGregory Neil Shapiro "user@local.host" are marked as "sticky" -- that 822193538b7SGregory Neil Shapiro is, the local addresses aren't matched against UDB, 823193538b7SGregory Neil Shapiro don't go through ruleset 5, and are not forwarded to 824193538b7SGregory Neil Shapiro the LOCAL_RELAY (if defined). 825193538b7SGregory Neil Shapiro 826193538b7SGregory Neil Shapiro With MAIL_HUB, mail addressed to "user@local.host" 827193538b7SGregory Neil Shapiro is forwarded to the mail hub, with the envelope 828193538b7SGregory Neil Shapiro address still remaining "user@local.host". 829193538b7SGregory Neil Shapiro Without stickyhost, the envelope would be changed 830193538b7SGregory Neil Shapiro to "user@mail_hub", in order to protect against 831193538b7SGregory Neil Shapiro mailing loops. 832c2aa98e2SPeter Wemm 833c2aa98e2SPeter Wemmmailertable Include a "mailer table" which can be used to override 83406f25ae9SGregory Neil Shapiro routing for particular domains (which are not in class {w}, 83506f25ae9SGregory Neil Shapiro i.e. local host names). The argument of the FEATURE may be 83606f25ae9SGregory Neil Shapiro the key definition. If none is specified, the definition 83706f25ae9SGregory Neil Shapiro used is: 8382e43090eSPeter Wemm 83906f25ae9SGregory Neil Shapiro hash /etc/mail/mailertable 8402e43090eSPeter Wemm 841c2aa98e2SPeter Wemm Keys in this database are fully qualified domain names 842c2aa98e2SPeter Wemm or partial domains preceded by a dot -- for example, 84306f25ae9SGregory Neil Shapiro "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU". As a 84406f25ae9SGregory Neil Shapiro special case of the latter, "." matches any domain not 84506f25ae9SGregory Neil Shapiro covered by other keys. Values must be of the form: 846c2aa98e2SPeter Wemm mailer:domain 847c2aa98e2SPeter Wemm where "mailer" is the internal mailer name, and "domain" 848c2aa98e2SPeter Wemm is where to send the message. These maps are not 849c2aa98e2SPeter Wemm reflected into the message header. As a special case, 850c2aa98e2SPeter Wemm the forms: 851c2aa98e2SPeter Wemm local:user 852c2aa98e2SPeter Wemm will forward to the indicated user using the local mailer, 853c2aa98e2SPeter Wemm local: 854c2aa98e2SPeter Wemm will forward to the original user in the e-mail address 855c2aa98e2SPeter Wemm using the local mailer, and 856c2aa98e2SPeter Wemm error:code message 85706f25ae9SGregory Neil Shapiro error:D.S.N:code message 85806f25ae9SGregory Neil Shapiro will give an error message with the indicated SMTP reply 85906f25ae9SGregory Neil Shapiro code and message, where D.S.N is an RFC 1893 compliant 86006f25ae9SGregory Neil Shapiro error code. 861c2aa98e2SPeter Wemm 862c2aa98e2SPeter Wemmdomaintable Include a "domain table" which can be used to provide 863c2aa98e2SPeter Wemm domain name mapping. Use of this should really be 864c2aa98e2SPeter Wemm limited to your own domains. It may be useful if you 865c2aa98e2SPeter Wemm change names (e.g., your company changes names from 866c2aa98e2SPeter Wemm oldname.com to newname.com). The argument of the 867c2aa98e2SPeter Wemm FEATURE may be the key definition. If none is specified, 868c2aa98e2SPeter Wemm the definition used is: 8692e43090eSPeter Wemm 87006f25ae9SGregory Neil Shapiro hash /etc/mail/domaintable 8712e43090eSPeter Wemm 872c2aa98e2SPeter Wemm The key in this table is the domain name; the value is 873c2aa98e2SPeter Wemm the new (fully qualified) domain. Anything in the 874c2aa98e2SPeter Wemm domaintable is reflected into headers; that is, this 875c2aa98e2SPeter Wemm is done in ruleset 3. 876c2aa98e2SPeter Wemm 877c2aa98e2SPeter Wemmbitdomain Look up bitnet hosts in a table to try to turn them into 878c2aa98e2SPeter Wemm internet addresses. The table can be built using the 879c2aa98e2SPeter Wemm bitdomain program contributed by John Gardiner Myers. 880c2aa98e2SPeter Wemm The argument of the FEATURE may be the key definition; if 881c2aa98e2SPeter Wemm none is specified, the definition used is: 8822e43090eSPeter Wemm 88306f25ae9SGregory Neil Shapiro hash /etc/mail/bitdomain 8842e43090eSPeter Wemm 885c2aa98e2SPeter Wemm Keys are the bitnet hostname; values are the corresponding 886c2aa98e2SPeter Wemm internet hostname. 887c2aa98e2SPeter Wemm 888c2aa98e2SPeter Wemmuucpdomain Similar feature for UUCP hosts. The default map definition 889c2aa98e2SPeter Wemm is: 8902e43090eSPeter Wemm 89106f25ae9SGregory Neil Shapiro hash /etc/mail/uudomain 8922e43090eSPeter Wemm 893c2aa98e2SPeter Wemm At the moment there is no automagic tool to build this 894c2aa98e2SPeter Wemm database. 895c2aa98e2SPeter Wemm 896c2aa98e2SPeter Wemmalways_add_domain 897c2aa98e2SPeter Wemm Include the local host domain even on locally delivered 898c2aa98e2SPeter Wemm mail. Normally it is not added on unqualified names. 899c2aa98e2SPeter Wemm However, if you use a shared message store but do not use 900c2aa98e2SPeter Wemm the same user name space everywhere, you may need the host 90140266059SGregory Neil Shapiro name on local names. An optional argument specifies 90240266059SGregory Neil Shapiro another domain to be added than the local. 903c2aa98e2SPeter Wemm 904c2aa98e2SPeter Wemmallmasquerade If masquerading is enabled (using MASQUERADE_AS), this 905c2aa98e2SPeter Wemm feature will cause recipient addresses to also masquerade 906c2aa98e2SPeter Wemm as being from the masquerade host. Normally they get 907c2aa98e2SPeter Wemm the local hostname. Although this may be right for 908c2aa98e2SPeter Wemm ordinary users, it can break local aliases. For example, 909c2aa98e2SPeter Wemm if you send to "localalias", the originating sendmail will 910c2aa98e2SPeter Wemm find that alias and send to all members, but send the 911c2aa98e2SPeter Wemm message with "To: localalias@masqueradehost". Since that 912c2aa98e2SPeter Wemm alias likely does not exist, replies will fail. Use this 913c2aa98e2SPeter Wemm feature ONLY if you can guarantee that the ENTIRE 914c2aa98e2SPeter Wemm namespace on your masquerade host supersets all the 915c2aa98e2SPeter Wemm local entries. 916c2aa98e2SPeter Wemm 917c2aa98e2SPeter Wemmlimited_masquerade 91806f25ae9SGregory Neil Shapiro Normally, any hosts listed in class {w} are masqueraded. If 91906f25ae9SGregory Neil Shapiro this feature is given, only the hosts listed in class {M} (see 92006f25ae9SGregory Neil Shapiro below: MASQUERADE_DOMAIN) are masqueraded. This is useful 92106f25ae9SGregory Neil Shapiro if you have several domains with disjoint namespaces hosted 92206f25ae9SGregory Neil Shapiro on the same machine. 923c2aa98e2SPeter Wemm 924c2aa98e2SPeter Wemmmasquerade_entire_domain 925c2aa98e2SPeter Wemm If masquerading is enabled (using MASQUERADE_AS) and 926c2aa98e2SPeter Wemm MASQUERADE_DOMAIN (see below) is set, this feature will 927c2aa98e2SPeter Wemm cause addresses to be rewritten such that the masquerading 928c2aa98e2SPeter Wemm domains are actually entire domains to be hidden. All 929c2aa98e2SPeter Wemm hosts within the masquerading domains will be rewritten 930c2aa98e2SPeter Wemm to the masquerade name (used in MASQUERADE_AS). For example, 931c2aa98e2SPeter Wemm if you have: 932c2aa98e2SPeter Wemm 93306f25ae9SGregory Neil Shapiro MASQUERADE_AS(`masq.com') 93406f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN(`foo.org') 93506f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN(`bar.com') 936c2aa98e2SPeter Wemm 937c2aa98e2SPeter Wemm then *foo.org and *bar.com are converted to masq.com. Without 938c2aa98e2SPeter Wemm this feature, only foo.org and bar.com are masqueraded. 939c2aa98e2SPeter Wemm 940c2aa98e2SPeter Wemm NOTE: only domains within your jurisdiction and 941c2aa98e2SPeter Wemm current hierarchy should be masqueraded using this. 942c2aa98e2SPeter Wemm 94340266059SGregory Neil Shapirolocal_no_masquerade 94440266059SGregory Neil Shapiro This feature prevents the local mailer from masquerading even 94540266059SGregory Neil Shapiro if MASQUERADE_AS is used. MASQUERADE_AS will only have effect 94640266059SGregory Neil Shapiro on addresses of mail going outside the local domain. 94740266059SGregory Neil Shapiro 94813bd1963SGregory Neil Shapiromasquerade_envelope 94913bd1963SGregory Neil Shapiro If masquerading is enabled (using MASQUERADE_AS) or the 95013bd1963SGregory Neil Shapiro genericstable is in use, this feature will cause envelope 95113bd1963SGregory Neil Shapiro addresses to also masquerade as being from the masquerade 95213bd1963SGregory Neil Shapiro host. Normally only the header addresses are masqueraded. 95313bd1963SGregory Neil Shapiro 95406f25ae9SGregory Neil Shapirogenericstable This feature will cause unqualified addresses (i.e., without 95506f25ae9SGregory Neil Shapiro a domain) and addresses with a domain listed in class {G} 95606f25ae9SGregory Neil Shapiro to be looked up in a map and turned into another ("generic") 95706f25ae9SGregory Neil Shapiro form, which can change both the domain name and the user name. 95840266059SGregory Neil Shapiro Notice: if you use an MSP (as it is default starting with 95940266059SGregory Neil Shapiro 8.12), the MTA will only receive qualified addresses from the 96040266059SGregory Neil Shapiro MSP (as required by the RFCs). Hence you need to add your 96140266059SGregory Neil Shapiro domain to class {G}. This feature is similar to the userdb 96240266059SGregory Neil Shapiro functionality. The same types of addresses as for 96340266059SGregory Neil Shapiro masquerading are looked up, i.e., only header sender 96440266059SGregory Neil Shapiro addresses unless the allmasquerade and/or masquerade_envelope 96540266059SGregory Neil Shapiro features are given. Qualified addresses must have the domain 96640266059SGregory Neil Shapiro part in class {G}; entries can be added to this class by the 96740266059SGregory Neil Shapiro macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE (analogously 96840266059SGregory Neil Shapiro to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE, see below). 969c2aa98e2SPeter Wemm 9702e43090eSPeter Wemm The argument of FEATURE(`genericstable') may be the map 971c2aa98e2SPeter Wemm definition; the default map definition is: 972c2aa98e2SPeter Wemm 97306f25ae9SGregory Neil Shapiro hash /etc/mail/genericstable 974c2aa98e2SPeter Wemm 97506f25ae9SGregory Neil Shapiro The key for this table is either the full address, the domain 97606f25ae9SGregory Neil Shapiro (with a leading @; the localpart is passed as first argument) 97706f25ae9SGregory Neil Shapiro or the unqualified username (tried in the order mentioned); 97806f25ae9SGregory Neil Shapiro the value is the new user address. If the new user address 97906f25ae9SGregory Neil Shapiro does not include a domain, it will be qualified in the standard 98006f25ae9SGregory Neil Shapiro manner, i.e., using $j or the masquerade name. Note that the 981c2aa98e2SPeter Wemm address being looked up must be fully qualified. For local 9822e43090eSPeter Wemm mail, it is necessary to use FEATURE(`always_add_domain') 9832e43090eSPeter Wemm for the addresses to be qualified. 98406f25ae9SGregory Neil Shapiro The "+detail" of an address is passed as %1, so entries like 98506f25ae9SGregory Neil Shapiro 98606f25ae9SGregory Neil Shapiro old+*@foo.org new+%1@example.com 98706f25ae9SGregory Neil Shapiro gen+*@foo.org %1@example.com 98806f25ae9SGregory Neil Shapiro 98906f25ae9SGregory Neil Shapiro and other forms are possible. 99006f25ae9SGregory Neil Shapiro 99106f25ae9SGregory Neil Shapirogenerics_entire_domain 99206f25ae9SGregory Neil Shapiro If the genericstable is enabled and GENERICS_DOMAIN or 99306f25ae9SGregory Neil Shapiro GENERICS_DOMAIN_FILE is used, this feature will cause 99406f25ae9SGregory Neil Shapiro addresses to be searched in the map if their domain 99506f25ae9SGregory Neil Shapiro parts are subdomains of elements in class {G}. 996c2aa98e2SPeter Wemm 997c2aa98e2SPeter Wemmvirtusertable A domain-specific form of aliasing, allowing multiple 998c2aa98e2SPeter Wemm virtual domains to be hosted on one machine. For example, 9994e4196cbSGregory Neil Shapiro if the virtuser table contains: 1000c2aa98e2SPeter Wemm 1001c2aa98e2SPeter Wemm info@foo.com foo-info 1002c2aa98e2SPeter Wemm info@bar.com bar-info 100340266059SGregory Neil Shapiro joe@bar.com error:nouser 550 No such user here 100440266059SGregory Neil Shapiro jax@bar.com error:5.7.0:550 Address invalid 100506f25ae9SGregory Neil Shapiro @baz.org jane@example.net 1006c2aa98e2SPeter Wemm 1007c2aa98e2SPeter Wemm then mail addressed to info@foo.com will be sent to the 1008c2aa98e2SPeter Wemm address foo-info, mail addressed to info@bar.com will be 100906f25ae9SGregory Neil Shapiro delivered to bar-info, and mail addressed to anyone at baz.org 101006f25ae9SGregory Neil Shapiro will be sent to jane@example.net, mail to joe@bar.com will 101106f25ae9SGregory Neil Shapiro be rejected with the specified error message, and mail to 101206f25ae9SGregory Neil Shapiro jax@bar.com will also have a RFC 1893 compliant error code 101340266059SGregory Neil Shapiro 5.7.0. 1014c2aa98e2SPeter Wemm 101506f25ae9SGregory Neil Shapiro The username from the original address is passed 101606f25ae9SGregory Neil Shapiro as %1 allowing: 1017c2aa98e2SPeter Wemm 101806f25ae9SGregory Neil Shapiro @foo.org %1@example.com 101906f25ae9SGregory Neil Shapiro 102006f25ae9SGregory Neil Shapiro meaning someone@foo.org will be sent to someone@example.com. 102106f25ae9SGregory Neil Shapiro Additionally, if the local part consists of "user+detail" 102240266059SGregory Neil Shapiro then "detail" is passed as %2 and "+detail" is passed as %3 102340266059SGregory Neil Shapiro when a match against user+* is attempted, so entries like 102406f25ae9SGregory Neil Shapiro 102506f25ae9SGregory Neil Shapiro old+*@foo.org new+%2@example.com 102606f25ae9SGregory Neil Shapiro gen+*@foo.org %2@example.com 102740266059SGregory Neil Shapiro +*@foo.org %1%3@example.com 102840266059SGregory Neil Shapiro X++@foo.org Z%3@example.com 102940266059SGregory Neil Shapiro @bar.org %1%3 103006f25ae9SGregory Neil Shapiro 103106f25ae9SGregory Neil Shapiro and other forms are possible. Note: to preserve "+detail" 103240266059SGregory Neil Shapiro for a default case (@domain) %1%3 must be used as RHS. 103340266059SGregory Neil Shapiro There are two wildcards after "+": "+" matches only a non-empty 103440266059SGregory Neil Shapiro detail, "*" matches also empty details, e.g., user+@foo.org 103540266059SGregory Neil Shapiro matches +*@foo.org but not ++@foo.org. This can be used 103640266059SGregory Neil Shapiro to ensure that the parameters %2 and %3 are not empty. 1037c2aa98e2SPeter Wemm 1038c2aa98e2SPeter Wemm All the host names on the left hand side (foo.com, bar.com, 103940266059SGregory Neil Shapiro and baz.org) must be in class {w} or class {VirtHost}. The 104006f25ae9SGregory Neil Shapiro latter can be defined by the macros VIRTUSER_DOMAIN or 104106f25ae9SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 104206f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE, see below). If VIRTUSER_DOMAIN or 104306f25ae9SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE is used, then the entries of class 104406f25ae9SGregory Neil Shapiro {VirtHost} are added to class {R}, i.e., relaying is allowed 1045e3793f76SGregory Neil Shapiro to (and from) those domains, which by default includes also 1046e3793f76SGregory Neil Shapiro all subdomains (see relay_hosts_only). The default map 1047e3793f76SGregory Neil Shapiro definition is: 1048c2aa98e2SPeter Wemm 104906f25ae9SGregory Neil Shapiro hash /etc/mail/virtusertable 1050c2aa98e2SPeter Wemm 1051c2aa98e2SPeter Wemm A new definition can be specified as the second argument of 1052c2aa98e2SPeter Wemm the FEATURE macro, such as 1053c2aa98e2SPeter Wemm 105406f25ae9SGregory Neil Shapiro FEATURE(`virtusertable', `dbm /etc/mail/virtusers') 1055c2aa98e2SPeter Wemm 105606f25ae9SGregory Neil Shapirovirtuser_entire_domain 105706f25ae9SGregory Neil Shapiro If the virtusertable is enabled and VIRTUSER_DOMAIN or 105806f25ae9SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE is used, this feature will cause 105906f25ae9SGregory Neil Shapiro addresses to be searched in the map if their domain 106006f25ae9SGregory Neil Shapiro parts are subdomains of elements in class {VirtHost}. 106106f25ae9SGregory Neil Shapiro 106206f25ae9SGregory Neil Shapiroldap_routing Implement LDAP-based e-mail recipient routing according to 106306f25ae9SGregory Neil Shapiro the Internet Draft draft-lachman-laser-ldap-mail-routing-01. 106406f25ae9SGregory Neil Shapiro This provides a method to re-route addresses with a 106506f25ae9SGregory Neil Shapiro domain portion in class {LDAPRoute} to either a 106606f25ae9SGregory Neil Shapiro different mail host or a different address. Hosts can 106706f25ae9SGregory Neil Shapiro be added to this class using LDAPROUTE_DOMAIN and 106806f25ae9SGregory Neil Shapiro LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 106906f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE, see below). 107006f25ae9SGregory Neil Shapiro 107106f25ae9SGregory Neil Shapiro See the LDAP ROUTING section below for more information. 107206f25ae9SGregory Neil Shapiro 107306f25ae9SGregory Neil Shapironullclient This is a special case -- it creates a configuration file 107406f25ae9SGregory Neil Shapiro containing nothing but support for forwarding all mail to a 107506f25ae9SGregory Neil Shapiro central hub via a local SMTP-based network. The argument 107606f25ae9SGregory Neil Shapiro is the name of that hub. 1077c2aa98e2SPeter Wemm 1078c2aa98e2SPeter Wemm The only other feature that should be used in conjunction 107906f25ae9SGregory Neil Shapiro with this one is FEATURE(`nocanonify'). No mailers 1080c2aa98e2SPeter Wemm should be defined. No aliasing or forwarding is done. 1081c2aa98e2SPeter Wemm 1082c2aa98e2SPeter Wemmlocal_lmtp Use an LMTP capable local mailer. The argument to this 1083c2aa98e2SPeter Wemm feature is the pathname of an LMTP capable mailer. By 1084c2aa98e2SPeter Wemm default, mail.local is used. This is expected to be the 1085c2aa98e2SPeter Wemm mail.local which came with the 8.9 distribution which is 1086c2aa98e2SPeter Wemm LMTP capable. The path to mail.local is set by the 1087c2aa98e2SPeter Wemm confEBINDIR m4 variable -- making the default 1088c2aa98e2SPeter Wemm LOCAL_MAILER_PATH /usr/libexec/mail.local. 1089e92d3f3fSGregory Neil Shapiro If a different LMTP capable mailer is used, its pathname 1090e92d3f3fSGregory Neil Shapiro can be specified as second parameter and the arguments 1091e92d3f3fSGregory Neil Shapiro passed to it (A=) as third parameter, e.g., 1092e92d3f3fSGregory Neil Shapiro 1093e92d3f3fSGregory Neil Shapiro FEATURE(`local_lmtp', `/usr/local/bin/lmtp', `lmtp') 1094e92d3f3fSGregory Neil Shapiro 109506f25ae9SGregory Neil Shapiro WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, 109606f25ae9SGregory Neil Shapiro i.e., without respecting any definitions in an OSTYPE setting. 1097c2aa98e2SPeter Wemm 109806f25ae9SGregory Neil Shapirolocal_procmail Use procmail or another delivery agent as the local mailer. 109906f25ae9SGregory Neil Shapiro The argument to this feature is the pathname of the 110006f25ae9SGregory Neil Shapiro delivery agent, which defaults to PROCMAIL_MAILER_PATH. 110106f25ae9SGregory Neil Shapiro Note that this does NOT use PROCMAIL_MAILER_FLAGS or 110206f25ae9SGregory Neil Shapiro PROCMAIL_MAILER_ARGS for the local mailer; tweak 110306f25ae9SGregory Neil Shapiro LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or 110406f25ae9SGregory Neil Shapiro specify the appropriate parameters. When procmail is used, 110506f25ae9SGregory Neil Shapiro the local mailer can make use of the 110606f25ae9SGregory Neil Shapiro "user+indicator@local.host" syntax; normally the +indicator 110706f25ae9SGregory Neil Shapiro is just tossed, but by default it is passed as the -a 110806f25ae9SGregory Neil Shapiro argument to procmail. 110906f25ae9SGregory Neil Shapiro 111006f25ae9SGregory Neil Shapiro This feature can take up to three arguments: 111106f25ae9SGregory Neil Shapiro 111206f25ae9SGregory Neil Shapiro 1. Path to the mailer program 111306f25ae9SGregory Neil Shapiro [default: /usr/local/bin/procmail] 111406f25ae9SGregory Neil Shapiro 2. Argument vector including name of the program 111506f25ae9SGregory Neil Shapiro [default: procmail -Y -a $h -d $u] 111606f25ae9SGregory Neil Shapiro 3. Flags for the mailer [default: SPfhn9] 111706f25ae9SGregory Neil Shapiro 111806f25ae9SGregory Neil Shapiro Empty arguments cause the defaults to be taken. 111913bd1963SGregory Neil Shapiro Note that if you are on a system with a broken 112013bd1963SGregory Neil Shapiro setreuid() call, you may need to add -f $f to the procmail 112113bd1963SGregory Neil Shapiro argument vector to pass the proper sender to procmail. 112206f25ae9SGregory Neil Shapiro 11232fb4f839SGregory Neil Shapiro For example, this allows it to use the maildrop mailer 11242fb4f839SGregory Neil Shapiro instead by specifying: 112506f25ae9SGregory Neil Shapiro 112606f25ae9SGregory Neil Shapiro FEATURE(`local_procmail', `/usr/local/bin/maildrop', 112706f25ae9SGregory Neil Shapiro `maildrop -d $u') 112806f25ae9SGregory Neil Shapiro 112906f25ae9SGregory Neil Shapiro or scanmails using: 113006f25ae9SGregory Neil Shapiro 113106f25ae9SGregory Neil Shapiro FEATURE(`local_procmail', `/usr/local/bin/scanmails') 113206f25ae9SGregory Neil Shapiro 113306f25ae9SGregory Neil Shapiro WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, 113406f25ae9SGregory Neil Shapiro i.e., without respecting any definitions in an OSTYPE setting. 1135c2aa98e2SPeter Wemm 1136c2aa98e2SPeter Wemmbestmx_is_local Accept mail as though locally addressed for any host that 1137c2aa98e2SPeter Wemm lists us as the best possible MX record. This generates 1138c2aa98e2SPeter Wemm additional DNS traffic, but should be OK for low to 1139c2aa98e2SPeter Wemm medium traffic hosts. The argument may be a set of 1140c2aa98e2SPeter Wemm domains, which will limit the feature to only apply to 1141c2aa98e2SPeter Wemm these domains -- this will reduce unnecessary DNS 1142c2aa98e2SPeter Wemm traffic. THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH 1143c2aa98e2SPeter Wemm WILDCARD MX RECORDS!!! If you have a wildcard MX record 1144c2aa98e2SPeter Wemm that matches your domain, you cannot use this feature. 1145c2aa98e2SPeter Wemm 1146c2aa98e2SPeter Wemmsmrsh Use the SendMail Restricted SHell (smrsh) provided 1147c2aa98e2SPeter Wemm with the distribution instead of /bin/sh for mailing 1148c2aa98e2SPeter Wemm to programs. This improves the ability of the local 1149c2aa98e2SPeter Wemm system administrator to control what gets run via 1150c2aa98e2SPeter Wemm e-mail. If an argument is provided it is used as the 1151c2aa98e2SPeter Wemm pathname to smrsh; otherwise, the path defined by 1152c2aa98e2SPeter Wemm confEBINDIR is used for the smrsh binary -- by default, 1153c2aa98e2SPeter Wemm /usr/libexec/smrsh is assumed. 1154c2aa98e2SPeter Wemm 1155c2aa98e2SPeter Wemmpromiscuous_relay 1156c2aa98e2SPeter Wemm By default, the sendmail configuration files do not permit 1157c2aa98e2SPeter Wemm mail relaying (that is, accepting mail from outside your 115806f25ae9SGregory Neil Shapiro local host (class {w}) and sending it to another host than 115906f25ae9SGregory Neil Shapiro your local host). This option sets your site to allow 116006f25ae9SGregory Neil Shapiro mail relaying from any site to any site. In almost all 116106f25ae9SGregory Neil Shapiro cases, it is better to control relaying more carefully 116206f25ae9SGregory Neil Shapiro with the access map, class {R}, or authentication. Domains 116306f25ae9SGregory Neil Shapiro can be added to class {R} by the macros RELAY_DOMAIN or 116406f25ae9SGregory Neil Shapiro RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 116506f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE, see below). 1166c2aa98e2SPeter Wemm 1167c2aa98e2SPeter Wemmrelay_entire_domain 116894c01205SGregory Neil Shapiro This option allows any host in your domain as defined by 116994c01205SGregory Neil Shapiro class {m} to use your server for relaying. Notice: make 117094c01205SGregory Neil Shapiro sure that your domain is not just a top level domain, 117194c01205SGregory Neil Shapiro e.g., com. This can happen if you give your host a name 117294c01205SGregory Neil Shapiro like example.com instead of host.example.com. 1173c2aa98e2SPeter Wemm 1174c2aa98e2SPeter Wemmrelay_hosts_only 1175c2aa98e2SPeter Wemm By default, names that are listed as RELAY in the access 117694c01205SGregory Neil Shapiro db and class {R} are treated as domain names, not host names. 1177c2aa98e2SPeter Wemm For example, if you specify ``foo.com'', then mail to or 1178c2aa98e2SPeter Wemm from foo.com, abc.foo.com, or a.very.deep.domain.foo.com 1179c2aa98e2SPeter Wemm will all be accepted for relaying. This feature changes 1180c2aa98e2SPeter Wemm the behaviour to look up individual host names only. 1181c2aa98e2SPeter Wemm 1182c2aa98e2SPeter Wemmrelay_based_on_MX 1183c2aa98e2SPeter Wemm Turns on the ability to allow relaying based on the MX 1184065a643dSPeter Wemm records of the host portion of an incoming recipient; that 1185065a643dSPeter Wemm is, if an MX record for host foo.com points to your site, 1186065a643dSPeter Wemm you will accept and relay mail addressed to foo.com. See 1187c2aa98e2SPeter Wemm description below for more information before using this 1188065a643dSPeter Wemm feature. Also, see the KNOWNBUGS entry regarding bestmx 1189065a643dSPeter Wemm map lookups. 1190065a643dSPeter Wemm 11912e43090eSPeter Wemm FEATURE(`relay_based_on_MX') does not necessarily allow 1192065a643dSPeter Wemm routing of these messages which you expect to be allowed, 1193065a643dSPeter Wemm if route address syntax (or %-hack syntax) is used. If 1194065a643dSPeter Wemm this is a problem, add entries to the access-table or use 11952e43090eSPeter Wemm FEATURE(`loose_relay_check'). 1196c2aa98e2SPeter Wemm 119706f25ae9SGregory Neil Shapirorelay_mail_from 119806f25ae9SGregory Neil Shapiro Allows relaying if the mail sender is listed as RELAY in 119913bd1963SGregory Neil Shapiro the access map. If an optional argument `domain' (this 120013bd1963SGregory Neil Shapiro is the literal word `domain', not a placeholder) is given, 120140266059SGregory Neil Shapiro relaying can be allowed just based on the domain portion 120240266059SGregory Neil Shapiro of the sender address. This feature should only be used if 120340266059SGregory Neil Shapiro absolutely necessary as the sender address can be easily 120494c01205SGregory Neil Shapiro forged. Use of this feature requires the "From:" tag to 120594c01205SGregory Neil Shapiro be used for the key in the access map; see the discussion 120640266059SGregory Neil Shapiro of tags and FEATURE(`relay_mail_from') in the section on 120740266059SGregory Neil Shapiro anti-spam configuration control. 120806f25ae9SGregory Neil Shapiro 1209c2aa98e2SPeter Wemmrelay_local_from 1210c2aa98e2SPeter Wemm Allows relaying if the domain portion of the mail sender 1211c2aa98e2SPeter Wemm is a local host. This should only be used if absolutely 1212065a643dSPeter Wemm necessary as it opens a window for spammers. Specifically, 1213065a643dSPeter Wemm they can send mail to your mail server that claims to be 1214065a643dSPeter Wemm from your domain (either directly or via a routed address), 1215065a643dSPeter Wemm and you will go ahead and relay it out to arbitrary hosts 1216065a643dSPeter Wemm on the Internet. 1217c2aa98e2SPeter Wemm 1218c2aa98e2SPeter Wemmaccept_unqualified_senders 1219c2aa98e2SPeter Wemm Normally, MAIL FROM: commands in the SMTP session will be 1220c2aa98e2SPeter Wemm refused if the connection is a network connection and the 1221c2aa98e2SPeter Wemm sender address does not include a domain name. If your 122206f25ae9SGregory Neil Shapiro setup sends local mail unqualified (i.e., MAIL FROM:<joe>), 1223c2aa98e2SPeter Wemm you will need to use this feature to accept unqualified 122406f25ae9SGregory Neil Shapiro sender addresses. Setting the DaemonPortOptions modifier 122506f25ae9SGregory Neil Shapiro 'u' overrides the default behavior, i.e., unqualified 122606f25ae9SGregory Neil Shapiro addresses are accepted even without this FEATURE. 122706f25ae9SGregory Neil Shapiro If this FEATURE is not used, the DaemonPortOptions modifier 122806f25ae9SGregory Neil Shapiro 'f' can be used to enforce fully qualified addresses. 1229c2aa98e2SPeter Wemm 1230c2aa98e2SPeter Wemmaccept_unresolvable_domains 1231c2aa98e2SPeter Wemm Normally, MAIL FROM: commands in the SMTP session will be 123206f25ae9SGregory Neil Shapiro refused if the host part of the argument to MAIL FROM: 123306f25ae9SGregory Neil Shapiro cannot be located in the host name service (e.g., an A or 123406f25ae9SGregory Neil Shapiro MX record in DNS). If you are inside a firewall that has 123506f25ae9SGregory Neil Shapiro only a limited view of the Internet host name space, this 123606f25ae9SGregory Neil Shapiro could cause problems. In this case you probably want to 123706f25ae9SGregory Neil Shapiro use this feature to accept all domains on input, even if 123806f25ae9SGregory Neil Shapiro they are unresolvable. 1239c2aa98e2SPeter Wemm 1240c2aa98e2SPeter Wemmaccess_db Turns on the access database feature. The access db gives 1241c2aa98e2SPeter Wemm you the ability to allow or refuse to accept mail from 124240266059SGregory Neil Shapiro specified domains for administrative reasons. Moreover, 124340266059SGregory Neil Shapiro it can control the behavior of sendmail in various situations. 124440266059SGregory Neil Shapiro By default, the access database specification is: 12452e43090eSPeter Wemm 124640266059SGregory Neil Shapiro hash -T<TMPF> /etc/mail/access 12472e43090eSPeter Wemm 124840266059SGregory Neil Shapiro See the anti-spam configuration control section for further 124940266059SGregory Neil Shapiro important information about this feature. Notice: 125040266059SGregory Neil Shapiro "-T<TMPF>" is meant literal, do not replace it by anything. 1251c2aa98e2SPeter Wemm 12525b0945b5SGregory Neil Shapiroblocklist_recipients 1253c2aa98e2SPeter Wemm Turns on the ability to block incoming mail for certain 1254c2aa98e2SPeter Wemm recipient usernames, hostnames, or addresses. For 1255c2aa98e2SPeter Wemm example, you can block incoming mail to user nobody, 1256c2aa98e2SPeter Wemm host foo.mydomain.com, or guest@bar.mydomain.com. 1257c2aa98e2SPeter Wemm These specifications are put in the access db as 125806f25ae9SGregory Neil Shapiro described in the anti-spam configuration control section 125906f25ae9SGregory Neil Shapiro later in this document. 1260c2aa98e2SPeter Wemm 1261193538b7SGregory Neil Shapirodelay_checks The rulesets check_mail and check_relay will not be called 1262193538b7SGregory Neil Shapiro when a client connects or issues a MAIL command, respectively. 1263193538b7SGregory Neil Shapiro Instead, those rulesets will be called by the check_rcpt 1264193538b7SGregory Neil Shapiro ruleset; they will be skipped under certain circumstances. 126540266059SGregory Neil Shapiro See "Delay all checks" in the anti-spam configuration control 126640266059SGregory Neil Shapiro section. Note: this feature is incompatible to the versions 126740266059SGregory Neil Shapiro in 8.10 and 8.11. 1268c2aa98e2SPeter Wemm 12692fb4f839SGregory Neil Shapirocheck_other Enable a default check_other ruleset which terminates 12702fb4f839SGregory Neil Shapiro an SMTP session when it encounters a command which matches 12712fb4f839SGregory Neil Shapiro a regular expression given as argument. If no argument 12722fb4f839SGregory Neil Shapiro is given, then the default (to match potential headers) is: 12732fb4f839SGregory Neil Shapiro ^[[:print:]]+ *: 12742fb4f839SGregory Neil Shapiro 1275e92d3f3fSGregory Neil Shapirouse_client_ptr If this feature is enabled then check_relay will override 1276e92d3f3fSGregory Neil Shapiro its first argument with $&{client_ptr}. This is useful for 1277e92d3f3fSGregory Neil Shapiro rejections based on the unverified hostname of client, 1278e92d3f3fSGregory Neil Shapiro which turns on the same behavior as in earlier sendmail 1279e92d3f3fSGregory Neil Shapiro versions when delay_checks was not in use. See doc/op/op.* 1280e92d3f3fSGregory Neil Shapiro about check_relay, {client_name}, and {client_ptr}. 1281e92d3f3fSGregory Neil Shapiro 1282d0cef73dSGregory Neil Shapirodnsbl Turns on rejection, discarding, or quarantining of hosts 1283d0cef73dSGregory Neil Shapiro found in a DNS based list. The first argument is used as 1284d0cef73dSGregory Neil Shapiro the domain in which blocked hosts are listed. A second 1285d0cef73dSGregory Neil Shapiro argument can be used to change the default error message, 1286d0cef73dSGregory Neil Shapiro or select one of the operations `discard' and `quarantine'. 1287d0cef73dSGregory Neil Shapiro Without that second argument, the error message will be 1288d0cef73dSGregory Neil Shapiro 1289739ac4d4SGregory Neil Shapiro Rejected: IP-ADDRESS listed at SERVER 1290d0cef73dSGregory Neil Shapiro 129140266059SGregory Neil Shapiro where IP-ADDRESS and SERVER are replaced by the appropriate 129240266059SGregory Neil Shapiro information. By default, temporary lookup failures are 129340266059SGregory Neil Shapiro ignored. This behavior can be changed by specifying a 129440266059SGregory Neil Shapiro third argument, which must be either `t' or a full error 129540266059SGregory Neil Shapiro message. See the anti-spam configuration control section for 129640266059SGregory Neil Shapiro an example. The dnsbl feature can be included several times 129740266059SGregory Neil Shapiro to query different DNS based rejection lists. See also 129840266059SGregory Neil Shapiro enhdnsbl for an enhanced version. 129906f25ae9SGregory Neil Shapiro 130013bd1963SGregory Neil Shapiro Set the DNSBL_MAP mc option to change the default map 130113bd1963SGregory Neil Shapiro definition from `host'. Set the DNSBL_MAP_OPT mc option 130213bd1963SGregory Neil Shapiro to add additional options to the map specification used. 130313bd1963SGregory Neil Shapiro 1304*d39bd2c1SGregory Neil Shapiro Note: currently only IPv4 addresses are checked. 1305*d39bd2c1SGregory Neil Shapiro 130694c01205SGregory Neil Shapiro Some DNS based rejection lists cause failures if asked 130794c01205SGregory Neil Shapiro for AAAA records. If your sendmail version is compiled 130894c01205SGregory Neil Shapiro with IPv6 support (NETINET6) and you experience this 130994c01205SGregory Neil Shapiro problem, add 131094c01205SGregory Neil Shapiro 131194c01205SGregory Neil Shapiro define(`DNSBL_MAP', `dns -R A') 131294c01205SGregory Neil Shapiro 131394c01205SGregory Neil Shapiro before the first use of this feature. Alternatively you 1314d9986b26SGregory Neil Shapiro can use enhdnsbl instead (see below). Moreover, this 1315d9986b26SGregory Neil Shapiro statement can be used to reduce the number of DNS retries, 1316d9986b26SGregory Neil Shapiro e.g., 1317d9986b26SGregory Neil Shapiro 1318d9986b26SGregory Neil Shapiro define(`DNSBL_MAP', `dns -R A -r2') 1319d9986b26SGregory Neil Shapiro 1320d9986b26SGregory Neil Shapiro See below (EDNSBL_TO) for an explanation. 132194c01205SGregory Neil Shapiro 132240266059SGregory Neil Shapiroenhdnsbl Enhanced version of dnsbl (see above). Further arguments 132340266059SGregory Neil Shapiro (up to 5) can be used to specify specific return values 132440266059SGregory Neil Shapiro from lookups. Temporary lookup failures are ignored unless 132540266059SGregory Neil Shapiro a third argument is given, which must be either `t' or a full 132640266059SGregory Neil Shapiro error message. By default, any successful lookup will 132740266059SGregory Neil Shapiro generate an error. Otherwise the result of the lookup is 132840266059SGregory Neil Shapiro compared with the supplied argument(s), and only if a match 132940266059SGregory Neil Shapiro occurs an error is generated. For example, 133040266059SGregory Neil Shapiro 1331*d39bd2c1SGregory Neil Shapiro FEATURE(`enhdnsbl', `dnsbl.example.com', `', `t', `127.0.0.2') 133240266059SGregory Neil Shapiro 133340266059SGregory Neil Shapiro will reject the e-mail if the lookup returns the value 1334*d39bd2c1SGregory Neil Shapiro ``127.0.0.2'', or generate a 451 response if the lookup 133540266059SGregory Neil Shapiro temporarily failed. The arguments can contain metasymbols 133640266059SGregory Neil Shapiro as they are allowed in the LHS of rules. As the example 133740266059SGregory Neil Shapiro shows, the default values are also used if an empty argument, 133840266059SGregory Neil Shapiro i.e., `', is specified. This feature requires that sendmail 133940266059SGregory Neil Shapiro has been compiled with the flag DNSMAP (see sendmail/README). 134040266059SGregory Neil Shapiro 134113bd1963SGregory Neil Shapiro Set the EDNSBL_TO mc option to change the DNS retry count 1342d9986b26SGregory Neil Shapiro from the default value of 5, this can be very useful when 1343d9986b26SGregory Neil Shapiro a DNS server is not responding, which in turn may cause 1344d9986b26SGregory Neil Shapiro clients to time out (an entry stating 1345d9986b26SGregory Neil Shapiro 1346d9986b26SGregory Neil Shapiro did not issue MAIL/EXPN/VRFY/ETRN 1347d9986b26SGregory Neil Shapiro 1348d9986b26SGregory Neil Shapiro will be logged). 134913bd1963SGregory Neil Shapiro 1350e92d3f3fSGregory Neil Shapiroratecontrol Enable simple ruleset to do connection rate control 1351e92d3f3fSGregory Neil Shapiro checking. This requires entries in access_db of the form 1352e92d3f3fSGregory Neil Shapiro 1353e92d3f3fSGregory Neil Shapiro ClientRate:IP.ADD.RE.SS LIMIT 1354e92d3f3fSGregory Neil Shapiro 1355e92d3f3fSGregory Neil Shapiro The RHS specifies the maximum number of connections 1356e92d3f3fSGregory Neil Shapiro (an integer number) over the time interval defined 1357e92d3f3fSGregory Neil Shapiro by ConnectionRateWindowSize, where 0 means unlimited. 1358e92d3f3fSGregory Neil Shapiro 1359e92d3f3fSGregory Neil Shapiro Take the following example: 1360e92d3f3fSGregory Neil Shapiro 1361e92d3f3fSGregory Neil Shapiro ClientRate:10.1.2.3 4 1362e92d3f3fSGregory Neil Shapiro ClientRate:127.0.0.1 0 1363e92d3f3fSGregory Neil Shapiro ClientRate: 10 1364e92d3f3fSGregory Neil Shapiro 1365e92d3f3fSGregory Neil Shapiro 10.1.2.3 can only make up to 4 connections, the 1366e92d3f3fSGregory Neil Shapiro general limit it 10, and 127.0.0.1 can make an unlimited 1367e92d3f3fSGregory Neil Shapiro number of connections per ConnectionRateWindowSize. 1368e92d3f3fSGregory Neil Shapiro 1369e92d3f3fSGregory Neil Shapiro See also CONNECTION CONTROL. 1370e92d3f3fSGregory Neil Shapiro 1371e92d3f3fSGregory Neil Shapiroconncontrol Enable a simple check of the number of incoming SMTP 1372e92d3f3fSGregory Neil Shapiro connections. This requires entries in access_db of the 1373e92d3f3fSGregory Neil Shapiro form 1374e92d3f3fSGregory Neil Shapiro 1375e92d3f3fSGregory Neil Shapiro ClientConn:IP.ADD.RE.SS LIMIT 1376e92d3f3fSGregory Neil Shapiro 1377e92d3f3fSGregory Neil Shapiro The RHS specifies the maximum number of open connections 1378e92d3f3fSGregory Neil Shapiro (an integer number). 1379e92d3f3fSGregory Neil Shapiro 1380e92d3f3fSGregory Neil Shapiro Take the following example: 1381e92d3f3fSGregory Neil Shapiro 1382e92d3f3fSGregory Neil Shapiro ClientConn:10.1.2.3 4 1383e92d3f3fSGregory Neil Shapiro ClientConn:127.0.0.1 0 1384e92d3f3fSGregory Neil Shapiro ClientConn: 10 1385e92d3f3fSGregory Neil Shapiro 1386e92d3f3fSGregory Neil Shapiro 10.1.2.3 can only have up to 4 open connections, the 1387e92d3f3fSGregory Neil Shapiro general limit it 10, and 127.0.0.1 does not have any 1388e92d3f3fSGregory Neil Shapiro explicit limit. 1389e92d3f3fSGregory Neil Shapiro 1390e92d3f3fSGregory Neil Shapiro See also CONNECTION CONTROL. 1391e92d3f3fSGregory Neil Shapiro 1392e92d3f3fSGregory Neil Shapiromtamark Experimental support for "Marking Mail Transfer Agents in 1393e92d3f3fSGregory Neil Shapiro Reverse DNS with TXT RRs" (MTAMark), see 1394e92d3f3fSGregory Neil Shapiro draft-stumpf-dns-mtamark-01. Optional arguments are: 1395e92d3f3fSGregory Neil Shapiro 1396e92d3f3fSGregory Neil Shapiro 1. Error message, default: 1397e92d3f3fSGregory Neil Shapiro 1398e92d3f3fSGregory Neil Shapiro 550 Rejected: $&{client_addr} not listed as MTA 1399e92d3f3fSGregory Neil Shapiro 1400e92d3f3fSGregory Neil Shapiro 2. Temporary lookup failures are ignored unless a second 1401e92d3f3fSGregory Neil Shapiro argument is given, which must be either `t' or a full 1402e92d3f3fSGregory Neil Shapiro error message. 1403e92d3f3fSGregory Neil Shapiro 1404e92d3f3fSGregory Neil Shapiro 3. Lookup prefix, default: _perm._smtp._srv. This should 1405e92d3f3fSGregory Neil Shapiro not be changed unless the draft changes it. 1406e92d3f3fSGregory Neil Shapiro 1407e92d3f3fSGregory Neil Shapiro Example: 1408e92d3f3fSGregory Neil Shapiro 1409e92d3f3fSGregory Neil Shapiro FEATURE(`mtamark', `', `t') 1410e92d3f3fSGregory Neil Shapiro 141140266059SGregory Neil Shapirolookupdotdomain Look up also .domain in the access map. This allows to 141240266059SGregory Neil Shapiro match only subdomains. It does not work well with 141340266059SGregory Neil Shapiro FEATURE(`relay_hosts_only'), because most lookups for 141440266059SGregory Neil Shapiro subdomains are suppressed by the latter feature. 141540266059SGregory Neil Shapiro 1416c2aa98e2SPeter Wemmloose_relay_check 141706f25ae9SGregory Neil Shapiro Normally, if % addressing is used for a recipient, e.g. 141806f25ae9SGregory Neil Shapiro user%site@othersite, and othersite is in class {R}, the 1419c2aa98e2SPeter Wemm check_rcpt ruleset will strip @othersite and recheck 1420c2aa98e2SPeter Wemm user@site for relaying. This feature changes that 1421c2aa98e2SPeter Wemm behavior. It should not be needed for most installations. 1422c2aa98e2SPeter Wemm 142340266059SGregory Neil Shapiroauthinfo Provide a separate map for client side authentication 142440266059SGregory Neil Shapiro information. See SMTP AUTHENTICATION for details. 142540266059SGregory Neil Shapiro By default, the authinfo database specification is: 142640266059SGregory Neil Shapiro 142740266059SGregory Neil Shapiro hash /etc/mail/authinfo 142840266059SGregory Neil Shapiro 142940266059SGregory Neil Shapiropreserve_luser_host 143040266059SGregory Neil Shapiro Preserve the name of the recipient host if LUSER_RELAY is 143140266059SGregory Neil Shapiro used. Without this option, the domain part of the 143240266059SGregory Neil Shapiro recipient address will be replaced by the host specified as 143340266059SGregory Neil Shapiro LUSER_RELAY. This feature only works if the hostname is 143440266059SGregory Neil Shapiro passed to the mailer (see mailer triple in op.me). Note 143540266059SGregory Neil Shapiro that in the default configuration the local mailer does not 143640266059SGregory Neil Shapiro receive the hostname, i.e., the mailer triple has an empty 143740266059SGregory Neil Shapiro hostname. 143840266059SGregory Neil Shapiro 143940266059SGregory Neil Shapiropreserve_local_plus_detail 144040266059SGregory Neil Shapiro Preserve the +detail portion of the address when passing 144140266059SGregory Neil Shapiro address to local delivery agent. Disables alias and 144240266059SGregory Neil Shapiro .forward +detail stripping (e.g., given user+detail, only 144340266059SGregory Neil Shapiro that address will be looked up in the alias file; user+* and 144440266059SGregory Neil Shapiro user will not be looked up). Only use if the local 144540266059SGregory Neil Shapiro delivery agent in use supports +detail addressing. 14465dd76dd0SGregory Neil Shapiro Moreover, this will most likely not work if the 'w' flag 14475dd76dd0SGregory Neil Shapiro for the local mailer is set as the entire local address 14485dd76dd0SGregory Neil Shapiro including +detail is passed to the user lookup function. 144940266059SGregory Neil Shapiro 145040266059SGregory Neil Shapirocompat_check Enable ruleset check_compat to look up pairs of addresses 145140266059SGregory Neil Shapiro with the Compat: tag -- Compat:sender<@>recipient -- in the 145240266059SGregory Neil Shapiro access map. Valid values for the RHS include 145340266059SGregory Neil Shapiro DISCARD silently discard recipient 145440266059SGregory Neil Shapiro TEMP: return a temporary error 145540266059SGregory Neil Shapiro ERROR: return a permanent error 145640266059SGregory Neil Shapiro In the last two cases, a 4xy/5xy SMTP reply code should 145740266059SGregory Neil Shapiro follow the colon. 145840266059SGregory Neil Shapiro 145906f25ae9SGregory Neil Shapirono_default_msa Don't generate the default MSA daemon, i.e., 146006f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=587,Name=MSA,M=E') 146106f25ae9SGregory Neil Shapiro To define a MSA daemon with other parameters, use this 146206f25ae9SGregory Neil Shapiro FEATURE and introduce new settings via DAEMON_OPTIONS(). 1463c2aa98e2SPeter Wemm 146440266059SGregory Neil Shapiromsp Defines config file for Message Submission Program. 1465605302a5SGregory Neil Shapiro See sendmail/SECURITY for details and cf/cf/submit.mc how 1466605302a5SGregory Neil Shapiro to use it. An optional argument can be used to override 1467605302a5SGregory Neil Shapiro the default of `[localhost]' to use as host to send all 1468605302a5SGregory Neil Shapiro e-mails to. Note that MX records will be used if the 1469605302a5SGregory Neil Shapiro specified hostname is not in square brackets (e.g., 1470605302a5SGregory Neil Shapiro [hostname]). If `MSA' is specified as second argument then 1471605302a5SGregory Neil Shapiro port 587 is used to contact the server. Example: 147240266059SGregory Neil Shapiro 147340266059SGregory Neil Shapiro FEATURE(`msp', `', `MSA') 147440266059SGregory Neil Shapiro 147540266059SGregory Neil Shapiro Some more hints about possible changes can be found below 147640266059SGregory Neil Shapiro in the section MESSAGE SUBMISSION PROGRAM. 147740266059SGregory Neil Shapiro 147813bd1963SGregory Neil Shapiro Note: Due to many problems, submit.mc uses 147994c01205SGregory Neil Shapiro 148094c01205SGregory Neil Shapiro FEATURE(`msp', `[127.0.0.1]') 148194c01205SGregory Neil Shapiro 148213bd1963SGregory Neil Shapiro by default. If you have a machine with IPv6 only, 148313bd1963SGregory Neil Shapiro change it to 148413bd1963SGregory Neil Shapiro 1485da7d7b9cSGregory Neil Shapiro FEATURE(`msp', `[IPv6:0:0:0:0:0:0:0:1]') 148613bd1963SGregory Neil Shapiro 148713bd1963SGregory Neil Shapiro If you want to continue using '[localhost]', (the behavior 148813bd1963SGregory Neil Shapiro up to 8.12.6), use 148913bd1963SGregory Neil Shapiro 149013bd1963SGregory Neil Shapiro FEATURE(`msp') 149113bd1963SGregory Neil Shapiro 149240266059SGregory Neil Shapiroqueuegroup A simple example how to select a queue group based 149340266059SGregory Neil Shapiro on the full e-mail address or the domain of the 149440266059SGregory Neil Shapiro recipient. Selection is done via entries in the 149540266059SGregory Neil Shapiro access map using the tag QGRP:, for example: 149640266059SGregory Neil Shapiro 149740266059SGregory Neil Shapiro QGRP:example.com main 149840266059SGregory Neil Shapiro QGRP:friend@some.org others 149940266059SGregory Neil Shapiro QGRP:my.domain local 150040266059SGregory Neil Shapiro 150140266059SGregory Neil Shapiro where "main", "others", and "local" are names of 150240266059SGregory Neil Shapiro queue groups. If an argument is specified, it is used 150340266059SGregory Neil Shapiro as default queue group. 150440266059SGregory Neil Shapiro 1505605302a5SGregory Neil Shapiro Note: please read the warning in doc/op/op.me about 1506605302a5SGregory Neil Shapiro queue groups and possible queue manipulations. 1507605302a5SGregory Neil Shapiro 1508e92d3f3fSGregory Neil Shapirogreet_pause Adds the greet_pause ruleset which enables open proxy 1509e92d3f3fSGregory Neil Shapiro and SMTP slamming protection. The feature can take an 1510e92d3f3fSGregory Neil Shapiro argument specifying the milliseconds to wait: 1511e92d3f3fSGregory Neil Shapiro 1512e92d3f3fSGregory Neil Shapiro FEATURE(`greet_pause', `5000') dnl 5 seconds 1513e92d3f3fSGregory Neil Shapiro 1514e92d3f3fSGregory Neil Shapiro If FEATURE(`access_db') is enabled, an access database 1515e92d3f3fSGregory Neil Shapiro lookup with the GreetPause tag is done using client 1516e92d3f3fSGregory Neil Shapiro hostname, domain, IP address, or subnet to determine the 1517e92d3f3fSGregory Neil Shapiro pause time: 1518e92d3f3fSGregory Neil Shapiro 1519e92d3f3fSGregory Neil Shapiro GreetPause:my.domain 0 1520e92d3f3fSGregory Neil Shapiro GreetPause:example.com 5000 1521e92d3f3fSGregory Neil Shapiro GreetPause:10.1.2 2000 1522e92d3f3fSGregory Neil Shapiro GreetPause:127.0.0.1 0 1523e92d3f3fSGregory Neil Shapiro 1524e92d3f3fSGregory Neil Shapiro When using FEATURE(`access_db'), the optional 1525e92d3f3fSGregory Neil Shapiro FEATURE(`greet_pause') argument becomes the default if 1526e92d3f3fSGregory Neil Shapiro nothing is found in the access database. A ruleset called 1527e92d3f3fSGregory Neil Shapiro Local_greet_pause can be used for local modifications, e.g., 1528e92d3f3fSGregory Neil Shapiro 1529e92d3f3fSGregory Neil Shapiro LOCAL_RULESETS 1530e92d3f3fSGregory Neil Shapiro SLocal_greet_pause 1531e92d3f3fSGregory Neil Shapiro R$* $: $&{daemon_flags} 1532e92d3f3fSGregory Neil Shapiro R$* a $* $# 0 1533e92d3f3fSGregory Neil Shapiro 1534d0cef73dSGregory Neil Shapiroblock_bad_helo Reject messages from SMTP clients which provide a HELO/EHLO 1535d0cef73dSGregory Neil Shapiro argument which is either unqualified, or is one of our own 1536d0cef73dSGregory Neil Shapiro names (i.e., the server name instead of the client name). 1537d0cef73dSGregory Neil Shapiro This check is performed at RCPT stage and disabled for the 1538d0cef73dSGregory Neil Shapiro following cases: 1539d0cef73dSGregory Neil Shapiro - authenticated sessions, 1540d0cef73dSGregory Neil Shapiro - connections from IP addresses in class $={R}. 1541d0cef73dSGregory Neil Shapiro Currently access_db lookups can not be used to 1542d0cef73dSGregory Neil Shapiro (selectively) disable this test, moreover, 1543da7d7b9cSGregory Neil Shapiro 1544d0cef73dSGregory Neil Shapiro FEATURE(`delay_checks') 1545da7d7b9cSGregory Neil Shapiro 1546da7d7b9cSGregory Neil Shapiro is required. Note, the block_bad_helo feature automatically 1547da7d7b9cSGregory Neil Shapiro adds the IPv6 and IPv4 localhost IP addresses to $={w} (local 1548da7d7b9cSGregory Neil Shapiro host names) and $={R} (relay permitted). 1549d0cef73dSGregory Neil Shapiro 1550d0cef73dSGregory Neil Shapirorequire_rdns Reject mail from connecting SMTP clients without proper 1551d0cef73dSGregory Neil Shapiro rDNS (reverse DNS), functional gethostbyaddr() resolution. 1552d0cef73dSGregory Neil Shapiro Note: this feature will cause false positives, i.e., there 1553d0cef73dSGregory Neil Shapiro are legitimate MTAs that do not have proper DNS entries. 1554d0cef73dSGregory Neil Shapiro Rejecting mails from those MTAs is a local policy decision. 1555d0cef73dSGregory Neil Shapiro 1556d0cef73dSGregory Neil Shapiro The basic policy is to reject message with a 5xx error if 1557d0cef73dSGregory Neil Shapiro the IP address fails to resolve. However, if this is a 1558d0cef73dSGregory Neil Shapiro temporary failure, a 4xx temporary failure is returned. 1559d0cef73dSGregory Neil Shapiro If the look-up succeeds, but returns an apparently forged 1560d0cef73dSGregory Neil Shapiro value, this is treated as a temporary failure with a 4xx 1561d0cef73dSGregory Neil Shapiro error code. 1562d0cef73dSGregory Neil Shapiro 1563d0cef73dSGregory Neil Shapiro EXCEPTIONS: 1564d0cef73dSGregory Neil Shapiro 1565d0cef73dSGregory Neil Shapiro Exceptions based on access entries are discussed below. 1566d0cef73dSGregory Neil Shapiro Any IP address matched using $=R (the "relay-domains" file) 1567d0cef73dSGregory Neil Shapiro is excepted from the rules. Since we have explicitly 1568d0cef73dSGregory Neil Shapiro allowed relaying for this host, based on IP address, we 1569d0cef73dSGregory Neil Shapiro ignore the rDNS failure. 1570d0cef73dSGregory Neil Shapiro 1571d0cef73dSGregory Neil Shapiro The philosophical assumption here is that most users do 1572d0cef73dSGregory Neil Shapiro not control their rDNS. They should be able to send mail 1573d0cef73dSGregory Neil Shapiro through their ISP, whether or not they have valid rDNS. 1574d0cef73dSGregory Neil Shapiro The class $=R, roughly speaking, contains those IP addresses 1575d0cef73dSGregory Neil Shapiro and address ranges for which we are the ISP, or are acting 1576d0cef73dSGregory Neil Shapiro as if the ISP. 1577d0cef73dSGregory Neil Shapiro 1578d0cef73dSGregory Neil Shapiro If `delay_checks' is in effect (recommended), then any 1579d0cef73dSGregory Neil Shapiro sender who has authenticated is also excepted from the 1580d0cef73dSGregory Neil Shapiro restrictions. This happens because the rules produced by 1581d0cef73dSGregory Neil Shapiro this FEATURE() will not be applied to authenticated senders 1582d0cef73dSGregory Neil Shapiro (assuming `delay_checks'). 1583d0cef73dSGregory Neil Shapiro 1584d0cef73dSGregory Neil Shapiro ACCESS MAP ENTRIES: 1585d0cef73dSGregory Neil Shapiro 1586d0cef73dSGregory Neil Shapiro Entries such as 1587d0cef73dSGregory Neil Shapiro Connect:1.2.3.4 OK 15882fb4f839SGregory Neil Shapiro Connect:1.3 RELAY 15892fb4f839SGregory Neil Shapiro will allowlist IP address 1.2.3.4 and IP net 1.3.* 15902fb4f839SGregory Neil Shapiro so that the rDNS blocking does apply not to those IPs. 1591d0cef73dSGregory Neil Shapiro 1592d0cef73dSGregory Neil Shapiro Entries such as 1593d0cef73dSGregory Neil Shapiro Connect:1.2.3.4 REJECT 1594d0cef73dSGregory Neil Shapiro will have the effect of forcing a temporary failure for 1595d0cef73dSGregory Neil Shapiro that address to be treated as a permanent failure. 1596d0cef73dSGregory Neil Shapiro 1597d0cef73dSGregory Neil Shapirobadmx Reject envelope sender addresses (MAIL) whose domain part 1598d0cef73dSGregory Neil Shapiro resolves to a "bad" MX record. By default these are 1599d0cef73dSGregory Neil Shapiro MX records which resolve to A records that match the 1600d0cef73dSGregory Neil Shapiro regular expression: 1601d0cef73dSGregory Neil Shapiro 1602d0cef73dSGregory Neil Shapiro ^(127\.|10\.|0\.0\.0\.0) 1603d0cef73dSGregory Neil Shapiro 1604d0cef73dSGregory Neil Shapiro This default regular expression can be overridden by 1605d0cef73dSGregory Neil Shapiro specifying an argument, e.g., 1606d0cef73dSGregory Neil Shapiro 1607d0cef73dSGregory Neil Shapiro FEATURE(`badmx', `^127\.0\.0\.1') 1608d0cef73dSGregory Neil Shapiro 1609d0cef73dSGregory Neil Shapiro Note: this feature requires that the sendmail binary 1610d0cef73dSGregory Neil Shapiro has been compiled with the options MAP_REGEX and 1611d0cef73dSGregory Neil Shapiro DNSMAP. 1612d0cef73dSGregory Neil Shapiro 16132fb4f839SGregory Neil Shapirosts Experimental support for Strict Transport Security 16142fb4f839SGregory Neil Shapiro (MTA-STS, see RFC 8461). It sets the option 16152fb4f839SGregory Neil Shapiro StrictTransportSecurity and takes one optional 16162fb4f839SGregory Neil Shapiro argument: the socket map specification to access 16172fb4f839SGregory Neil Shapiro postfix-mta-sts-resolver (see feature/sts.m4 16182fb4f839SGregory Neil Shapiro for the default value). 16192fb4f839SGregory Neil Shapiro For more information see doc/op/op.me. 16202fb4f839SGregory Neil Shapiro 1621*d39bd2c1SGregory Neil Shapirofips3 Basic support for FIPS in OpenSSL 3 by setting 1622*d39bd2c1SGregory Neil Shapiro the environment variables OPENSSL_CONF and 1623*d39bd2c1SGregory Neil Shapiro OPENSSL_MODULES to the first and second argument, 1624*d39bd2c1SGregory Neil Shapiro respectively. For details, see the file and 1625*d39bd2c1SGregory Neil Shapiro the OpenSSL documentation. 1626*d39bd2c1SGregory Neil Shapiro 1627c2aa98e2SPeter Wemm+-------+ 1628c2aa98e2SPeter Wemm| HACKS | 1629c2aa98e2SPeter Wemm+-------+ 1630c2aa98e2SPeter Wemm 1631c2aa98e2SPeter WemmSome things just can't be called features. To make this clear, 1632c2aa98e2SPeter Wemmthey go in the hack subdirectory and are referenced using the HACK 1633c2aa98e2SPeter Wemmmacro. These will tend to be site-dependent. The release 1634c2aa98e2SPeter Wemmincludes the Berkeley-dependent "cssubdomain" hack (that makes 1635c2aa98e2SPeter Wemmsendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU; 163606f25ae9SGregory Neil Shapirothis is intended as a short-term aid while moving hosts into 1637c2aa98e2SPeter Wemmsubdomains. 1638c2aa98e2SPeter Wemm 1639c2aa98e2SPeter Wemm 1640c2aa98e2SPeter Wemm+--------------------+ 1641c2aa98e2SPeter Wemm| SITE CONFIGURATION | 1642c2aa98e2SPeter Wemm+--------------------+ 1643c2aa98e2SPeter Wemm 1644c2aa98e2SPeter Wemm ***************************************************** 1645c2aa98e2SPeter Wemm * This section is really obsolete, and is preserved * 1646c2aa98e2SPeter Wemm * only for back compatibility. You should plan on * 1647c2aa98e2SPeter Wemm * using mailertables for new installations. In * 1648c2aa98e2SPeter Wemm * particular, it doesn't work for the newer forms * 1649c2aa98e2SPeter Wemm * of UUCP mailers, such as uucp-uudom. * 1650c2aa98e2SPeter Wemm ***************************************************** 1651c2aa98e2SPeter Wemm 1652c2aa98e2SPeter WemmComplex sites will need more local configuration information, such as 1653c2aa98e2SPeter Wemmlists of UUCP hosts they speak with directly. This can get a bit more 1654c2aa98e2SPeter Wemmtricky. For an example of a "complex" site, see cf/ucbvax.mc. 1655c2aa98e2SPeter Wemm 1656c2aa98e2SPeter WemmThe SITECONFIG macro allows you to indirectly reference site-dependent 1657c2aa98e2SPeter Wemmconfiguration information stored in the siteconfig subdirectory. For 1658c2aa98e2SPeter Wemmexample, the line 1659c2aa98e2SPeter Wemm 166006f25ae9SGregory Neil Shapiro SITECONFIG(`uucp.ucbvax', `ucbvax', `U') 1661c2aa98e2SPeter Wemm 1662c2aa98e2SPeter Wemmreads the file uucp.ucbvax for local connection information. The 1663c2aa98e2SPeter Wemmsecond parameter is the local name (in this case just "ucbvax" since 1664c2aa98e2SPeter Wemmit is locally connected, and hence a UUCP hostname). The third 1665c2aa98e2SPeter Wemmparameter is the name of both a macro to store the local name (in 166606f25ae9SGregory Neil Shapirothis case, {U}) and the name of the class (e.g., {U}) in which to store 1667c2aa98e2SPeter Wemmthe host information read from the file. Another SITECONFIG line reads 1668c2aa98e2SPeter Wemm 166906f25ae9SGregory Neil Shapiro SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W') 1670c2aa98e2SPeter Wemm 1671c2aa98e2SPeter WemmThis says that the file uucp.ucbarpa contains the list of UUCP sites 167206f25ae9SGregory Neil Shapiroconnected to ucbarpa.Berkeley.EDU. Class {W} will be used to 1673c2aa98e2SPeter Wemmstore this list, and $W is defined to be ucbarpa.Berkeley.EDU, that 1674c2aa98e2SPeter Wemmis, the name of the relay to which the hosts listed in uucp.ucbarpa 167506f25ae9SGregory Neil Shapiroare connected. [The machine ucbarpa is gone now, but this 167606f25ae9SGregory Neil Shapiroout-of-date configuration file has been left around to demonstrate 167706f25ae9SGregory Neil Shapirohow you might do this.] 1678c2aa98e2SPeter Wemm 1679c2aa98e2SPeter WemmNote that the case of SITECONFIG with a third parameter of ``U'' is 1680c2aa98e2SPeter Wemmspecial; the second parameter is assumed to be the UUCP name of the 1681c2aa98e2SPeter Wemmlocal site, rather than the name of a remote site, and the UUCP name 168206f25ae9SGregory Neil Shapirois entered into class {w} (the list of local hostnames) as $U.UUCP. 1683c2aa98e2SPeter Wemm 1684c2aa98e2SPeter WemmThe siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing 1685c2aa98e2SPeter Wemmmore than a sequence of SITE macros describing connectivity. For 1686c2aa98e2SPeter Wemmexample: 1687c2aa98e2SPeter Wemm 168806f25ae9SGregory Neil Shapiro SITE(`cnmat') 168906f25ae9SGregory Neil Shapiro SITE(`sgi olympus') 1690c2aa98e2SPeter Wemm 1691c2aa98e2SPeter WemmThe second example demonstrates that you can use two names on the 1692c2aa98e2SPeter Wemmsame line; these are usually aliases for the same host (or are at 1693c2aa98e2SPeter Wemmleast in the same company). 1694c2aa98e2SPeter Wemm 1695e92d3f3fSGregory Neil ShapiroThe macro LOCAL_UUCP can be used to add rules into the generated 1696e92d3f3fSGregory Neil Shapirocf file at the place where MAILER(`uucp') inserts its rules. This 1697e92d3f3fSGregory Neil Shapiroshould only be used if really necessary. 1698c2aa98e2SPeter Wemm 1699*d39bd2c1SGregory Neil Shapiro 1700c2aa98e2SPeter Wemm+--------------------+ 1701c2aa98e2SPeter Wemm| USING UUCP MAILERS | 1702c2aa98e2SPeter Wemm+--------------------+ 1703c2aa98e2SPeter Wemm 1704c2aa98e2SPeter WemmIt's hard to get UUCP mailers right because of the extremely ad hoc 1705c2aa98e2SPeter Wemmnature of UUCP addressing. These config files are really designed 1706c2aa98e2SPeter Wemmfor domain-based addressing, even for UUCP sites. 1707c2aa98e2SPeter Wemm 1708c2aa98e2SPeter WemmThere are four UUCP mailers available. The choice of which one to 1709c2aa98e2SPeter Wemmuse is partly a matter of local preferences and what is running at 1710c2aa98e2SPeter Wemmthe other end of your UUCP connection. Unlike good protocols that 1711c2aa98e2SPeter Wemmdefine what will go over the wire, UUCP uses the policy that you 1712c2aa98e2SPeter Wemmshould do what is right for the other end; if they change, you have 1713c2aa98e2SPeter Wemmto change. This makes it hard to do the right thing, and discourages 1714c2aa98e2SPeter Wemmpeople from updating their software. In general, if you can avoid 1715c2aa98e2SPeter WemmUUCP, please do. 1716c2aa98e2SPeter Wemm 1717c2aa98e2SPeter WemmThe major choice is whether to go for a domainized scheme or a 1718c2aa98e2SPeter Wemmnon-domainized scheme. This depends entirely on what the other 1719c2aa98e2SPeter Wemmend will recognize. If at all possible, you should encourage the 1720c2aa98e2SPeter Wemmother end to go to a domain-based system -- non-domainized addresses 1721c2aa98e2SPeter Wemmdon't work entirely properly. 1722c2aa98e2SPeter Wemm 1723c2aa98e2SPeter WemmThe four mailers are: 1724c2aa98e2SPeter Wemm 1725c2aa98e2SPeter Wemm uucp-old (obsolete name: "uucp") 1726c2aa98e2SPeter Wemm This is the oldest, the worst (but the closest to UUCP) way of 172713d88268SGregory Neil Shapiro sending messages across UUCP connections. It does bangify 1728c2aa98e2SPeter Wemm everything and prepends $U (your UUCP name) to the sender's 1729c2aa98e2SPeter Wemm address (which can already be a bang path itself). It can 1730c2aa98e2SPeter Wemm only send to one address at a time, so it spends a lot of 1731c2aa98e2SPeter Wemm time copying duplicates of messages. Avoid this if at all 1732c2aa98e2SPeter Wemm possible. 1733c2aa98e2SPeter Wemm 1734c2aa98e2SPeter Wemm uucp-new (obsolete name: "suucp") 1735c2aa98e2SPeter Wemm The same as above, except that it assumes that in one rmail 1736c2aa98e2SPeter Wemm command you can specify several recipients. It still has a 1737c2aa98e2SPeter Wemm lot of other problems. 1738c2aa98e2SPeter Wemm 1739c2aa98e2SPeter Wemm uucp-dom 1740c2aa98e2SPeter Wemm This UUCP mailer keeps everything as domain addresses. 1741c2aa98e2SPeter Wemm Basically, it uses the SMTP mailer rewriting rules. This mailer 174240266059SGregory Neil Shapiro is only included if MAILER(`smtp') is specified before 174340266059SGregory Neil Shapiro MAILER(`uucp'). 1744c2aa98e2SPeter Wemm 1745c2aa98e2SPeter Wemm Unfortunately, a lot of UUCP mailer transport agents require 1746c2aa98e2SPeter Wemm bangified addresses in the envelope, although you can use 1747c2aa98e2SPeter Wemm domain-based addresses in the message header. (The envelope 1748c2aa98e2SPeter Wemm shows up as the From_ line on UNIX mail.) So.... 1749c2aa98e2SPeter Wemm 1750c2aa98e2SPeter Wemm uucp-uudom 1751c2aa98e2SPeter Wemm This is a cross between uucp-new (for the envelope addresses) 1752c2aa98e2SPeter Wemm and uucp-dom (for the header addresses). It bangifies the 1753c2aa98e2SPeter Wemm envelope sender (From_ line in messages) without adding the 1754c2aa98e2SPeter Wemm local hostname, unless there is no host name on the address 1755c2aa98e2SPeter Wemm at all (e.g., "wolf") or the host component is a UUCP host name 1756c2aa98e2SPeter Wemm instead of a domain name ("somehost!wolf" instead of 175706f25ae9SGregory Neil Shapiro "some.dom.ain!wolf"). This is also included only if MAILER(`smtp') 175840266059SGregory Neil Shapiro is also specified earlier. 1759c2aa98e2SPeter Wemm 1760c2aa98e2SPeter WemmExamples: 1761c2aa98e2SPeter Wemm 176206f25ae9SGregory Neil ShapiroOn host grasp.insa-lyon.fr (UUCP host name "grasp"), the following 176306f25ae9SGregory Neil Shapirosummarizes the sender rewriting for various mailers. 1764c2aa98e2SPeter Wemm 1765c2aa98e2SPeter WemmMailer sender rewriting in the envelope 1766c2aa98e2SPeter Wemm------ ------ ------------------------- 1767c2aa98e2SPeter Wemmuucp-{old,new} wolf grasp!wolf 1768c2aa98e2SPeter Wemmuucp-dom wolf wolf@grasp.insa-lyon.fr 1769c2aa98e2SPeter Wemmuucp-uudom wolf grasp.insa-lyon.fr!wolf 1770c2aa98e2SPeter Wemm 1771c2aa98e2SPeter Wemmuucp-{old,new} wolf@fr.net grasp!fr.net!wolf 1772c2aa98e2SPeter Wemmuucp-dom wolf@fr.net wolf@fr.net 1773c2aa98e2SPeter Wemmuucp-uudom wolf@fr.net fr.net!wolf 1774c2aa98e2SPeter Wemm 1775c2aa98e2SPeter Wemmuucp-{old,new} somehost!wolf grasp!somehost!wolf 1776c2aa98e2SPeter Wemmuucp-dom somehost!wolf somehost!wolf@grasp.insa-lyon.fr 1777c2aa98e2SPeter Wemmuucp-uudom somehost!wolf grasp.insa-lyon.fr!somehost!wolf 1778c2aa98e2SPeter Wemm 1779c2aa98e2SPeter WemmIf you are using one of the domainized UUCP mailers, you really want 1780c2aa98e2SPeter Wemmto convert all UUCP addresses to domain format -- otherwise, it will 1781c2aa98e2SPeter Wemmdo it for you (and probably not the way you expected). For example, 1782c2aa98e2SPeter Wemmif you have the address foo!bar!baz (and you are not sending to foo), 1783c2aa98e2SPeter Wemmthe heuristics will add the @uucp.relay.name or @local.host.name to 1784c2aa98e2SPeter Wemmthis address. However, if you map foo to foo.host.name first, it 1785c2aa98e2SPeter Wemmwill not add the local hostname. You can do this using the uucpdomain 1786c2aa98e2SPeter Wemmfeature. 1787c2aa98e2SPeter Wemm 1788c2aa98e2SPeter Wemm 1789c2aa98e2SPeter Wemm+-------------------+ 1790c2aa98e2SPeter Wemm| TWEAKING RULESETS | 1791c2aa98e2SPeter Wemm+-------------------+ 1792c2aa98e2SPeter Wemm 1793c2aa98e2SPeter WemmFor more complex configurations, you can define special rules. 1794c2aa98e2SPeter WemmThe macro LOCAL_RULE_3 introduces rules that are used in canonicalizing 1795c2aa98e2SPeter Wemmthe names. Any modifications made here are reflected in the header. 1796c2aa98e2SPeter Wemm 1797c2aa98e2SPeter WemmA common use is to convert old UUCP addresses to SMTP addresses using 1798c2aa98e2SPeter Wemmthe UUCPSMTP macro. For example: 1799c2aa98e2SPeter Wemm 1800c2aa98e2SPeter Wemm LOCAL_RULE_3 180106f25ae9SGregory Neil Shapiro UUCPSMTP(`decvax', `decvax.dec.com') 180206f25ae9SGregory Neil Shapiro UUCPSMTP(`research', `research.att.com') 1803c2aa98e2SPeter Wemm 1804c2aa98e2SPeter Wemmwill cause addresses of the form "decvax!user" and "research!user" 1805c2aa98e2SPeter Wemmto be converted to "user@decvax.dec.com" and "user@research.att.com" 1806c2aa98e2SPeter Wemmrespectively. 1807c2aa98e2SPeter Wemm 1808c2aa98e2SPeter WemmThis could also be used to look up hosts in a database map: 1809c2aa98e2SPeter Wemm 1810c2aa98e2SPeter Wemm LOCAL_RULE_3 1811c2aa98e2SPeter Wemm R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3 1812c2aa98e2SPeter Wemm 1813c2aa98e2SPeter WemmThis map would be defined in the LOCAL_CONFIG portion, as shown below. 1814c2aa98e2SPeter Wemm 1815c2aa98e2SPeter WemmSimilarly, LOCAL_RULE_0 can be used to introduce new parsing rules. 1816c2aa98e2SPeter WemmFor example, new rules are needed to parse hostnames that you accept 1817c2aa98e2SPeter Wemmvia MX records. For example, you might have: 1818c2aa98e2SPeter Wemm 1819c2aa98e2SPeter Wemm LOCAL_RULE_0 1820c2aa98e2SPeter Wemm R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.> 1821c2aa98e2SPeter Wemm 1822c2aa98e2SPeter WemmYou would use this if you had installed an MX record for cnmat.Berkeley.EDU 1823c2aa98e2SPeter Wemmpointing at this host; this rule catches the message and forwards it on 1824c2aa98e2SPeter Wemmusing UUCP. 1825c2aa98e2SPeter Wemm 1826c2aa98e2SPeter WemmYou can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2. 1827c2aa98e2SPeter WemmThese rulesets are normally empty. 1828c2aa98e2SPeter Wemm 1829c2aa98e2SPeter WemmA similar macro is LOCAL_CONFIG. This introduces lines added after the 183006f25ae9SGregory Neil Shapiroboilerplate option setting but before rulesets. Do not declare rulesets in 183106f25ae9SGregory Neil Shapirothe LOCAL_CONFIG section. It can be used to declare local database maps or 183206f25ae9SGregory Neil Shapirowhatever. For example: 1833c2aa98e2SPeter Wemm 1834c2aa98e2SPeter Wemm LOCAL_CONFIG 183506f25ae9SGregory Neil Shapiro Khostmap hash /etc/mail/hostmap 1836c2aa98e2SPeter Wemm Kyplocal nis -m hosts.byname 1837c2aa98e2SPeter Wemm 1838c2aa98e2SPeter Wemm 1839c2aa98e2SPeter Wemm+---------------------------+ 1840c2aa98e2SPeter Wemm| MASQUERADING AND RELAYING | 1841c2aa98e2SPeter Wemm+---------------------------+ 1842c2aa98e2SPeter Wemm 1843c2aa98e2SPeter WemmYou can have your host masquerade as another using 1844c2aa98e2SPeter Wemm 184506f25ae9SGregory Neil Shapiro MASQUERADE_AS(`host.domain') 1846c2aa98e2SPeter Wemm 1847c2aa98e2SPeter WemmThis causes mail being sent to be labeled as coming from the 1848c2aa98e2SPeter Wemmindicated host.domain, rather than $j. One normally masquerades as 184906f25ae9SGregory Neil Shapiroone of one's own subdomains (for example, it's unlikely that 185006f25ae9SGregory Neil ShapiroBerkeley would choose to masquerade as an MIT site). This 185106f25ae9SGregory Neil Shapirobehaviour is modified by a plethora of FEATUREs; in particular, see 185206f25ae9SGregory Neil Shapiromasquerade_envelope, allmasquerade, limited_masquerade, and 185306f25ae9SGregory Neil Shapiromasquerade_entire_domain. 1854c2aa98e2SPeter Wemm 1855c2aa98e2SPeter WemmThe masquerade name is not normally canonified, so it is important 1856c2aa98e2SPeter Wemmthat it be your One True Name, that is, fully qualified and not a 1857c2aa98e2SPeter WemmCNAME. However, if you use a CNAME, the receiving side may canonify 1858c2aa98e2SPeter Wemmit for you, so don't think you can cheat CNAME mapping this way. 1859c2aa98e2SPeter Wemm 1860c2aa98e2SPeter WemmNormally the only addresses that are masqueraded are those that come 186106f25ae9SGregory Neil Shapirofrom this host (that is, are either unqualified or in class {w}, the list 186206f25ae9SGregory Neil Shapiroof local domain names). You can augment this list, which is realized 186306f25ae9SGregory Neil Shapiroby class {M} using 1864c2aa98e2SPeter Wemm 186506f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN(`otherhost.domain') 1866c2aa98e2SPeter Wemm 1867c2aa98e2SPeter WemmThe effect of this is that although mail to user@otherhost.domain 1868c2aa98e2SPeter Wemmwill not be delivered locally, any mail including any user@otherhost.domain 1869c2aa98e2SPeter Wemmwill, when relayed, be rewritten to have the MASQUERADE_AS address. 1870c2aa98e2SPeter WemmThis can be a space-separated list of names. 1871c2aa98e2SPeter Wemm 1872c2aa98e2SPeter WemmIf these names are in a file, you can use 1873c2aa98e2SPeter Wemm 187406f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE(`filename') 1875c2aa98e2SPeter Wemm 187606f25ae9SGregory Neil Shapiroto read the list of names from the indicated file (i.e., to add 187706f25ae9SGregory Neil Shapiroelements to class {M}). 187806f25ae9SGregory Neil Shapiro 187906f25ae9SGregory Neil ShapiroTo exempt hosts or subdomains from being masqueraded, you can use 188006f25ae9SGregory Neil Shapiro 188106f25ae9SGregory Neil Shapiro MASQUERADE_EXCEPTION(`host.domain') 188206f25ae9SGregory Neil Shapiro 188306f25ae9SGregory Neil ShapiroThis can come handy if you want to masquerade a whole domain 188440266059SGregory Neil Shapiroexcept for one (or a few) host(s). If these names are in a file, 188540266059SGregory Neil Shapiroyou can use 188640266059SGregory Neil Shapiro 188740266059SGregory Neil Shapiro MASQUERADE_EXCEPTION_FILE(`filename') 1888c2aa98e2SPeter Wemm 1889c2aa98e2SPeter WemmNormally only header addresses are masqueraded. If you want to 1890c2aa98e2SPeter Wemmmasquerade the envelope as well, use 1891c2aa98e2SPeter Wemm 18922e43090eSPeter Wemm FEATURE(`masquerade_envelope') 1893c2aa98e2SPeter Wemm 1894c2aa98e2SPeter WemmThere are always users that need to be "exposed" -- that is, their 1895c2aa98e2SPeter Wemminternal site name should be displayed instead of the masquerade name. 189606f25ae9SGregory Neil ShapiroRoot is an example (which has been "exposed" by default prior to 8.10). 189706f25ae9SGregory Neil ShapiroYou can add users to this list using 1898c2aa98e2SPeter Wemm 189906f25ae9SGregory Neil Shapiro EXPOSED_USER(`usernames') 1900c2aa98e2SPeter Wemm 190140266059SGregory Neil ShapiroThis adds users to class {E}; you could also use 1902c2aa98e2SPeter Wemm 190340266059SGregory Neil Shapiro EXPOSED_USER_FILE(`filename') 1904c2aa98e2SPeter Wemm 1905c2aa98e2SPeter WemmYou can also arrange to relay all unqualified names (that is, names 1906c2aa98e2SPeter Wemmwithout @host) to a relay host. For example, if you have a central 1907c2aa98e2SPeter Wemmemail server, you might relay to that host so that users don't have 1908c2aa98e2SPeter Wemmto have .forward files or aliases. You can do this using 1909c2aa98e2SPeter Wemm 19102e43090eSPeter Wemm define(`LOCAL_RELAY', `mailer:hostname') 1911c2aa98e2SPeter Wemm 1912c2aa98e2SPeter WemmThe ``mailer:'' can be omitted, in which case the mailer defaults to 1913c2aa98e2SPeter Wemm"relay". There are some user names that you don't want relayed, perhaps 1914c2aa98e2SPeter Wemmbecause of local aliases. A common example is root, which may be 1915c2aa98e2SPeter Wemmlocally aliased. You can add entries to this list using 1916c2aa98e2SPeter Wemm 191706f25ae9SGregory Neil Shapiro LOCAL_USER(`usernames') 1918c2aa98e2SPeter Wemm 191940266059SGregory Neil ShapiroThis adds users to class {L}; you could also use 1920c2aa98e2SPeter Wemm 192140266059SGregory Neil Shapiro LOCAL_USER_FILE(`filename') 1922c2aa98e2SPeter Wemm 1923c2aa98e2SPeter WemmIf you want all incoming mail sent to a centralized hub, as for a 1924c2aa98e2SPeter Wemmshared /var/spool/mail scheme, use 1925c2aa98e2SPeter Wemm 19262e43090eSPeter Wemm define(`MAIL_HUB', `mailer:hostname') 1927c2aa98e2SPeter Wemm 1928c2aa98e2SPeter WemmAgain, ``mailer:'' defaults to "relay". If you define both LOCAL_RELAY 19292e43090eSPeter Wemmand MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will 1930c2aa98e2SPeter Wemmbe sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB. 193106f25ae9SGregory Neil ShapiroNote: there is a (long standing) bug which keeps this combination from 193206f25ae9SGregory Neil Shapiroworking for addresses of the form user+detail. 193306f25ae9SGregory Neil ShapiroNames in class {L} will be delivered locally, so you MUST have aliases or 1934c2aa98e2SPeter Wemm.forward files for them. 1935c2aa98e2SPeter Wemm 1936c2aa98e2SPeter WemmFor example, if you are on machine mastodon.CS.Berkeley.EDU and you have 19372e43090eSPeter WemmFEATURE(`stickyhost'), the following combinations of settings will have the 1938c2aa98e2SPeter Wemmindicated effects: 1939c2aa98e2SPeter Wemm 1940c2aa98e2SPeter Wemmemail sent to.... eric eric@mastodon.CS.Berkeley.EDU 1941c2aa98e2SPeter Wemm 1942c2aa98e2SPeter WemmLOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally) 1943c2aa98e2SPeter Wemmmail.CS.Berkeley.EDU (no local aliasing) (aliasing done) 1944c2aa98e2SPeter Wemm 1945c2aa98e2SPeter WemmMAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU 1946c2aa98e2SPeter Wemmmammoth.CS.Berkeley.EDU (aliasing done) (aliasing done) 1947c2aa98e2SPeter Wemm 1948c2aa98e2SPeter WemmBoth LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU 1949c2aa98e2SPeter WemmMAIL_HUB set as above (no local aliasing) (aliasing done) 1950c2aa98e2SPeter Wemm 19512e43090eSPeter WemmIf you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and 1952c2aa98e2SPeter WemmMAIL_HUB act identically, with MAIL_HUB taking precedence. 1953c2aa98e2SPeter Wemm 1954c2aa98e2SPeter WemmIf you want all outgoing mail to go to a central relay site, define 1955c2aa98e2SPeter WemmSMART_HOST as well. Briefly: 1956c2aa98e2SPeter Wemm 1957c2aa98e2SPeter Wemm LOCAL_RELAY applies to unqualified names (e.g., "eric"). 1958c2aa98e2SPeter Wemm MAIL_HUB applies to names qualified with the name of the 1959c2aa98e2SPeter Wemm local host (e.g., "eric@mastodon.CS.Berkeley.EDU"). 196006f25ae9SGregory Neil Shapiro SMART_HOST applies to names qualified with other hosts or 196106f25ae9SGregory Neil Shapiro bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU" 196206f25ae9SGregory Neil Shapiro or "eric@[127.0.0.1]"). 1963c2aa98e2SPeter Wemm 1964c2aa98e2SPeter WemmHowever, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY, 1965c2aa98e2SPeter WemmDECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you 1966c2aa98e2SPeter Wemmreally want absolutely everything to go to a single central site you will 1967c2aa98e2SPeter Wemmneed to unset all the other relays -- or better yet, find or build a 1968c2aa98e2SPeter Wemmminimal config file that does this. 1969c2aa98e2SPeter Wemm 1970c2aa98e2SPeter WemmFor duplicate suppression to work properly, the host name is best 1971c2aa98e2SPeter Wemmspecified with a terminal dot: 1972c2aa98e2SPeter Wemm 1973c2aa98e2SPeter Wemm define(`MAIL_HUB', `host.domain.') 1974c2aa98e2SPeter Wemm note the trailing dot ---^ 1975c2aa98e2SPeter Wemm 1976c2aa98e2SPeter Wemm 197740266059SGregory Neil Shapiro+-------------------------------------------+ 197840266059SGregory Neil Shapiro| USING LDAP FOR ALIASES, MAPS, AND CLASSES | 197940266059SGregory Neil Shapiro+-------------------------------------------+ 198040266059SGregory Neil Shapiro 198140266059SGregory Neil ShapiroLDAP can be used for aliases, maps, and classes by either specifying your 198240266059SGregory Neil Shapiroown LDAP map specification or using the built-in default LDAP map 198340266059SGregory Neil Shapirospecification. The built-in default specifications all provide lookups 198440266059SGregory Neil Shapirowhich match against either the machine's fully qualified hostname (${j}) or 198540266059SGregory Neil Shapiroa "cluster". The cluster allows you to share LDAP entries among a large 198640266059SGregory Neil Shapironumber of machines without having to enter each of the machine names into 198740266059SGregory Neil Shapiroeach LDAP entry. To set the LDAP cluster name to use for a particular 198840266059SGregory Neil Shapiromachine or set of machines, set the confLDAP_CLUSTER m4 variable to a 198940266059SGregory Neil Shapirounique name. For example: 199040266059SGregory Neil Shapiro 199140266059SGregory Neil Shapiro define(`confLDAP_CLUSTER', `Servers') 199240266059SGregory Neil Shapiro 199340266059SGregory Neil ShapiroHere, the word `Servers' will be the cluster name. As an example, assume 199440266059SGregory Neil Shapirothat smtp.sendmail.org, etrn.sendmail.org, and mx.sendmail.org all belong 199540266059SGregory Neil Shapiroto the Servers cluster. 199640266059SGregory Neil Shapiro 199740266059SGregory Neil ShapiroSome of the LDAP LDIF examples below show use of the Servers cluster. 199840266059SGregory Neil ShapiroEvery entry must have either a sendmailMTAHost or sendmailMTACluster 199940266059SGregory Neil Shapiroattribute or it will be ignored. Be careful as mixing clusters and 200040266059SGregory Neil Shapiroindividual host records can have surprising results (see the CAUTION 200140266059SGregory Neil Shapirosections below). 200240266059SGregory Neil Shapiro 200340266059SGregory Neil ShapiroSee the file cf/sendmail.schema for the actual LDAP schemas. Note that 200440266059SGregory Neil Shapirothis schema (and therefore the lookups and examples below) is experimental 200540266059SGregory Neil Shapiroat this point as it has had little public review. Therefore, it may change 20064e4196cbSGregory Neil Shapiroin future versions. Feedback via sendmail-YYYY@support.sendmail.org is 20074e4196cbSGregory Neil Shapiroencouraged (replace YYYY with the current year, e.g., 2005). 200840266059SGregory Neil Shapiro 200940266059SGregory Neil Shapiro------- 201040266059SGregory Neil ShapiroAliases 201140266059SGregory Neil Shapiro------- 201240266059SGregory Neil Shapiro 201340266059SGregory Neil ShapiroThe ALIAS_FILE (O AliasFile) option can be set to use LDAP for alias 201440266059SGregory Neil Shapirolookups. To use the default schema, simply use: 201540266059SGregory Neil Shapiro 201640266059SGregory Neil Shapiro define(`ALIAS_FILE', `ldap:') 201740266059SGregory Neil Shapiro 201840266059SGregory Neil ShapiroBy doing so, you will use the default schema which expands to a map 201940266059SGregory Neil Shapirodeclared as follows: 202040266059SGregory Neil Shapiro 202140266059SGregory Neil Shapiro ldap -k (&(objectClass=sendmailMTAAliasObject) 202240266059SGregory Neil Shapiro (sendmailMTAAliasGrouping=aliases) 202340266059SGregory Neil Shapiro (|(sendmailMTACluster=${sendmailMTACluster}) 202440266059SGregory Neil Shapiro (sendmailMTAHost=$j)) 202540266059SGregory Neil Shapiro (sendmailMTAKey=%0)) 2026e92d3f3fSGregory Neil Shapiro -v sendmailMTAAliasValue,sendmailMTAAliasSearch:FILTER:sendmailMTAAliasObject,sendmailMTAAliasURL:URL:sendmailMTAAliasObject 2027e92d3f3fSGregory Neil Shapiro 202840266059SGregory Neil Shapiro 202940266059SGregory Neil ShapiroNOTE: The macros shown above ${sendmailMTACluster} and $j are not actually 203040266059SGregory Neil Shapiroused when the binary expands the `ldap:' token as the AliasFile option is 203140266059SGregory Neil Shapironot actually macro-expanded when read from the sendmail.cf file. 203240266059SGregory Neil Shapiro 203340266059SGregory Neil ShapiroExample LDAP LDIF entries might be: 203440266059SGregory Neil Shapiro 203540266059SGregory Neil Shapiro dn: sendmailMTAKey=sendmail-list, dc=sendmail, dc=org 203640266059SGregory Neil Shapiro objectClass: sendmailMTA 203740266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 203840266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 203940266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 204040266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 204140266059SGregory Neil Shapiro sendmailMTAKey: sendmail-list 204240266059SGregory Neil Shapiro sendmailMTAAliasValue: ca@example.org 204340266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 204440266059SGregory Neil Shapiro sendmailMTAAliasValue: gshapiro@example.com 204540266059SGregory Neil Shapiro 204640266059SGregory Neil Shapiro dn: sendmailMTAKey=owner-sendmail-list, dc=sendmail, dc=org 204740266059SGregory Neil Shapiro objectClass: sendmailMTA 204840266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 204940266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 205040266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 205140266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 205240266059SGregory Neil Shapiro sendmailMTAKey: owner-sendmail-list 205340266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 205440266059SGregory Neil Shapiro 205540266059SGregory Neil Shapiro dn: sendmailMTAKey=postmaster, dc=sendmail, dc=org 205640266059SGregory Neil Shapiro objectClass: sendmailMTA 205740266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 205840266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 205940266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 206040266059SGregory Neil Shapiro sendmailMTACluster: Servers 206140266059SGregory Neil Shapiro sendmailMTAKey: postmaster 206240266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 206340266059SGregory Neil Shapiro 206440266059SGregory Neil ShapiroHere, the aliases sendmail-list and owner-sendmail-list will be available 206540266059SGregory Neil Shapiroonly on etrn.sendmail.org but the postmaster alias will be available on 206640266059SGregory Neil Shapiroevery machine in the Servers cluster (including etrn.sendmail.org). 206740266059SGregory Neil Shapiro 206840266059SGregory Neil ShapiroCAUTION: aliases are additive so that entries like these: 206940266059SGregory Neil Shapiro 207040266059SGregory Neil Shapiro dn: sendmailMTAKey=bob, dc=sendmail, dc=org 207140266059SGregory Neil Shapiro objectClass: sendmailMTA 207240266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 207340266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 207440266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 207540266059SGregory Neil Shapiro sendmailMTACluster: Servers 207640266059SGregory Neil Shapiro sendmailMTAKey: bob 207740266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 207840266059SGregory Neil Shapiro 2079605302a5SGregory Neil Shapiro dn: sendmailMTAKey=bobetrn, dc=sendmail, dc=org 208040266059SGregory Neil Shapiro objectClass: sendmailMTA 208140266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 208240266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 208340266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 208440266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 208540266059SGregory Neil Shapiro sendmailMTAKey: bob 208640266059SGregory Neil Shapiro sendmailMTAAliasValue: gshapiro 208740266059SGregory Neil Shapiro 208840266059SGregory Neil Shapirowould mean that on all of the hosts in the cluster, mail to bob would go to 208940266059SGregory Neil Shapiroeric EXCEPT on etrn.sendmail.org in which case it would go to BOTH eric and 209040266059SGregory Neil Shapirogshapiro. 209140266059SGregory Neil Shapiro 209240266059SGregory Neil ShapiroIf you prefer not to use the default LDAP schema for your aliases, you can 209340266059SGregory Neil Shapirospecify the map parameters when setting ALIAS_FILE. For example: 209440266059SGregory Neil Shapiro 209540266059SGregory Neil Shapiro define(`ALIAS_FILE', `ldap:-k (&(objectClass=mailGroup)(mail=%0)) -v mgrpRFC822MailMember') 209640266059SGregory Neil Shapiro 209740266059SGregory Neil Shapiro---- 209840266059SGregory Neil ShapiroMaps 209940266059SGregory Neil Shapiro---- 210040266059SGregory Neil Shapiro 210140266059SGregory Neil ShapiroFEATURE()'s which take an optional map definition argument (e.g., access, 210240266059SGregory Neil Shapiromailertable, virtusertable, etc.) can instead take the special keyword 210340266059SGregory Neil Shapiro`LDAP', e.g.: 210440266059SGregory Neil Shapiro 210540266059SGregory Neil Shapiro FEATURE(`access_db', `LDAP') 210640266059SGregory Neil Shapiro FEATURE(`virtusertable', `LDAP') 210740266059SGregory Neil Shapiro 210840266059SGregory Neil ShapiroWhen this keyword is given, that map will use LDAP lookups consisting of 210940266059SGregory Neil Shapirothe objectClass sendmailMTAClassObject, the attribute sendmailMTAMapName 211040266059SGregory Neil Shapirowith the map name, a search attribute of sendmailMTAKey, and the value 211140266059SGregory Neil Shapiroattribute sendmailMTAMapValue. 211240266059SGregory Neil Shapiro 211340266059SGregory Neil ShapiroThe values for sendmailMTAMapName are: 211440266059SGregory Neil Shapiro 211540266059SGregory Neil Shapiro FEATURE() sendmailMTAMapName 211640266059SGregory Neil Shapiro --------- ------------------ 211740266059SGregory Neil Shapiro access_db access 211840266059SGregory Neil Shapiro authinfo authinfo 211940266059SGregory Neil Shapiro bitdomain bitdomain 212040266059SGregory Neil Shapiro domaintable domain 212140266059SGregory Neil Shapiro genericstable generics 212240266059SGregory Neil Shapiro mailertable mailer 212340266059SGregory Neil Shapiro uucpdomain uucpdomain 212440266059SGregory Neil Shapiro virtusertable virtuser 212540266059SGregory Neil Shapiro 212640266059SGregory Neil ShapiroFor example, FEATURE(`mailertable', `LDAP') would use the map definition: 212740266059SGregory Neil Shapiro 212840266059SGregory Neil Shapiro Kmailertable ldap -k (&(objectClass=sendmailMTAMapObject) 212940266059SGregory Neil Shapiro (sendmailMTAMapName=mailer) 213040266059SGregory Neil Shapiro (|(sendmailMTACluster=${sendmailMTACluster}) 213140266059SGregory Neil Shapiro (sendmailMTAHost=$j)) 213240266059SGregory Neil Shapiro (sendmailMTAKey=%0)) 2133e92d3f3fSGregory Neil Shapiro -1 -v sendmailMTAMapValue,sendmailMTAMapSearch:FILTER:sendmailMTAMapObject,sendmailMTAMapURL:URL:sendmailMTAMapObject 213440266059SGregory Neil Shapiro 213540266059SGregory Neil ShapiroAn example LDAP LDIF entry using this map might be: 213640266059SGregory Neil Shapiro 213740266059SGregory Neil Shapiro dn: sendmailMTAMapName=mailer, dc=sendmail, dc=org 213840266059SGregory Neil Shapiro objectClass: sendmailMTA 213940266059SGregory Neil Shapiro objectClass: sendmailMTAMap 214040266059SGregory Neil Shapiro sendmailMTACluster: Servers 214140266059SGregory Neil Shapiro sendmailMTAMapName: mailer 214240266059SGregory Neil Shapiro 214340266059SGregory Neil Shapiro dn: sendmailMTAKey=example.com, sendmailMTAMapName=mailer, dc=sendmail, dc=org 214440266059SGregory Neil Shapiro objectClass: sendmailMTA 214540266059SGregory Neil Shapiro objectClass: sendmailMTAMap 214640266059SGregory Neil Shapiro objectClass: sendmailMTAMapObject 214740266059SGregory Neil Shapiro sendmailMTAMapName: mailer 214840266059SGregory Neil Shapiro sendmailMTACluster: Servers 214940266059SGregory Neil Shapiro sendmailMTAKey: example.com 215040266059SGregory Neil Shapiro sendmailMTAMapValue: relay:[smtp.example.com] 215140266059SGregory Neil Shapiro 215240266059SGregory Neil ShapiroCAUTION: If your LDAP database contains the record above and *ALSO* a host 215340266059SGregory Neil Shapirospecific record such as: 215440266059SGregory Neil Shapiro 215540266059SGregory Neil Shapiro dn: sendmailMTAKey=example.com@etrn, sendmailMTAMapName=mailer, dc=sendmail, dc=org 215640266059SGregory Neil Shapiro objectClass: sendmailMTA 215740266059SGregory Neil Shapiro objectClass: sendmailMTAMap 215840266059SGregory Neil Shapiro objectClass: sendmailMTAMapObject 215940266059SGregory Neil Shapiro sendmailMTAMapName: mailer 216040266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 216140266059SGregory Neil Shapiro sendmailMTAKey: example.com 216240266059SGregory Neil Shapiro sendmailMTAMapValue: relay:[mx.example.com] 216340266059SGregory Neil Shapiro 216440266059SGregory Neil Shapirothen these entries will give unexpected results. When the lookup is done 216540266059SGregory Neil Shapiroon etrn.sendmail.org, the effect is that there is *NO* match at all as maps 216640266059SGregory Neil Shapirorequire a single match. Since the host etrn.sendmail.org is also in the 216740266059SGregory Neil ShapiroServers cluster, LDAP would return two answers for the example.com map key 216840266059SGregory Neil Shapiroin which case sendmail would treat this as no match at all. 216940266059SGregory Neil Shapiro 217040266059SGregory Neil ShapiroIf you prefer not to use the default LDAP schema for your maps, you can 217140266059SGregory Neil Shapirospecify the map parameters when using the FEATURE(). For example: 217240266059SGregory Neil Shapiro 217340266059SGregory Neil Shapiro FEATURE(`access_db', `ldap:-1 -k (&(objectClass=mapDatabase)(key=%0)) -v value') 217440266059SGregory Neil Shapiro 217540266059SGregory Neil Shapiro------- 217640266059SGregory Neil ShapiroClasses 217740266059SGregory Neil Shapiro------- 217840266059SGregory Neil Shapiro 217940266059SGregory Neil ShapiroNormally, classes can be filled via files or programs. As of 8.12, they 218040266059SGregory Neil Shapirocan also be filled via map lookups using a new syntax: 218140266059SGregory Neil Shapiro 218240266059SGregory Neil Shapiro F{ClassName}mapkey@mapclass:mapspec 218340266059SGregory Neil Shapiro 218440266059SGregory Neil Shapiromapkey is optional and if not provided the map key will be empty. This can 218540266059SGregory Neil Shapirobe used with LDAP to read classes from LDAP. Note that the lookup is only 218640266059SGregory Neil Shapirodone when sendmail is initially started. Use the special value `@LDAP' to 218740266059SGregory Neil Shapirouse the default LDAP schema. For example: 218840266059SGregory Neil Shapiro 218940266059SGregory Neil Shapiro RELAY_DOMAIN_FILE(`@LDAP') 219040266059SGregory Neil Shapiro 219140266059SGregory Neil Shapirowould put all of the attribute sendmailMTAClassValue values of LDAP records 219240266059SGregory Neil Shapirowith objectClass sendmailMTAClass and an attribute sendmailMTAClassName of 219340266059SGregory Neil Shapiro'R' into class $={R}. In other words, it is equivalent to the LDAP map 219440266059SGregory Neil Shapirospecification: 219540266059SGregory Neil Shapiro 219640266059SGregory Neil Shapiro F{R}@ldap:-k (&(objectClass=sendmailMTAClass) 219740266059SGregory Neil Shapiro (sendmailMTAClassName=R) 219840266059SGregory Neil Shapiro (|(sendmailMTACluster=${sendmailMTACluster}) 219940266059SGregory Neil Shapiro (sendmailMTAHost=$j))) 2200e92d3f3fSGregory Neil Shapiro -v sendmailMTAClassValue,sendmailMTAClassSearch:FILTER:sendmailMTAClass,sendmailMTAClassURL:URL:sendmailMTAClass 220140266059SGregory Neil Shapiro 220240266059SGregory Neil ShapiroNOTE: The macros shown above ${sendmailMTACluster} and $j are not actually 220340266059SGregory Neil Shapiroused when the binary expands the `@LDAP' token as class declarations are 220440266059SGregory Neil Shapironot actually macro-expanded when read from the sendmail.cf file. 220540266059SGregory Neil Shapiro 220640266059SGregory Neil ShapiroThis can be used with class related commands such as RELAY_DOMAIN_FILE(), 220740266059SGregory Neil ShapiroMASQUERADE_DOMAIN_FILE(), etc: 220840266059SGregory Neil Shapiro 220940266059SGregory Neil Shapiro Command sendmailMTAClassName 221040266059SGregory Neil Shapiro ------- -------------------- 221140266059SGregory Neil Shapiro CANONIFY_DOMAIN_FILE() Canonify 221240266059SGregory Neil Shapiro EXPOSED_USER_FILE() E 221340266059SGregory Neil Shapiro GENERICS_DOMAIN_FILE() G 221440266059SGregory Neil Shapiro LDAPROUTE_DOMAIN_FILE() LDAPRoute 221540266059SGregory Neil Shapiro LDAPROUTE_EQUIVALENT_FILE() LDAPRouteEquiv 221640266059SGregory Neil Shapiro LOCAL_USER_FILE() L 221740266059SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE() M 221840266059SGregory Neil Shapiro MASQUERADE_EXCEPTION_FILE() N 221940266059SGregory Neil Shapiro RELAY_DOMAIN_FILE() R 222040266059SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE() VirtHost 222140266059SGregory Neil Shapiro 222240266059SGregory Neil ShapiroYou can also add your own as any 'F'ile class of the form: 222340266059SGregory Neil Shapiro 222440266059SGregory Neil Shapiro F{ClassName}@LDAP 222540266059SGregory Neil Shapiro ^^^^^^^^^ 222640266059SGregory Neil Shapirowill use "ClassName" for the sendmailMTAClassName. 222740266059SGregory Neil Shapiro 222840266059SGregory Neil ShapiroAn example LDAP LDIF entry would look like: 222940266059SGregory Neil Shapiro 223040266059SGregory Neil Shapiro dn: sendmailMTAClassName=R, dc=sendmail, dc=org 223140266059SGregory Neil Shapiro objectClass: sendmailMTA 223240266059SGregory Neil Shapiro objectClass: sendmailMTAClass 223340266059SGregory Neil Shapiro sendmailMTACluster: Servers 223440266059SGregory Neil Shapiro sendmailMTAClassName: R 223540266059SGregory Neil Shapiro sendmailMTAClassValue: sendmail.org 223640266059SGregory Neil Shapiro sendmailMTAClassValue: example.com 223740266059SGregory Neil Shapiro sendmailMTAClassValue: 10.56.23 223840266059SGregory Neil Shapiro 223940266059SGregory Neil ShapiroCAUTION: If your LDAP database contains the record above and *ALSO* a host 224040266059SGregory Neil Shapirospecific record such as: 224140266059SGregory Neil Shapiro 224240266059SGregory Neil Shapiro dn: sendmailMTAClassName=R@etrn.sendmail.org, dc=sendmail, dc=org 224340266059SGregory Neil Shapiro objectClass: sendmailMTA 224440266059SGregory Neil Shapiro objectClass: sendmailMTAClass 224540266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 224640266059SGregory Neil Shapiro sendmailMTAClassName: R 224740266059SGregory Neil Shapiro sendmailMTAClassValue: example.com 224840266059SGregory Neil Shapiro 224940266059SGregory Neil Shapirothe result will be similar to the aliases caution above. When the lookup 225040266059SGregory Neil Shapirois done on etrn.sendmail.org, $={R} would contain all of the entries (from 225140266059SGregory Neil Shapiroboth the cluster match and the host match). In other words, the effective 225240266059SGregory Neil Shapirois additive. 225340266059SGregory Neil Shapiro 225440266059SGregory Neil ShapiroIf you prefer not to use the default LDAP schema for your classes, you can 225540266059SGregory Neil Shapirospecify the map parameters when using the class command. For example: 225640266059SGregory Neil Shapiro 225740266059SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE(`@ldap:-k (&(objectClass=virtHosts)(host=*)) -v host') 225840266059SGregory Neil Shapiro 225940266059SGregory Neil ShapiroRemember, macros can not be used in a class declaration as the binary does 226040266059SGregory Neil Shapironot expand them. 226140266059SGregory Neil Shapiro 226240266059SGregory Neil Shapiro 226306f25ae9SGregory Neil Shapiro+--------------+ 226406f25ae9SGregory Neil Shapiro| LDAP ROUTING | 226506f25ae9SGregory Neil Shapiro+--------------+ 226606f25ae9SGregory Neil Shapiro 226706f25ae9SGregory Neil ShapiroFEATURE(`ldap_routing') can be used to implement the IETF Internet Draft 226806f25ae9SGregory Neil ShapiroLDAP Schema for Intranet Mail Routing 226906f25ae9SGregory Neil Shapiro(draft-lachman-laser-ldap-mail-routing-01). This feature enables 227006f25ae9SGregory Neil ShapiroLDAP-based rerouting of a particular address to either a different host 227106f25ae9SGregory Neil Shapiroor a different address. The LDAP lookup is first attempted on the full 227206f25ae9SGregory Neil Shapiroaddress (e.g., user@example.com) and then on the domain portion 227306f25ae9SGregory Neil Shapiro(e.g., @example.com). Be sure to setup your domain for LDAP routing using 227406f25ae9SGregory Neil ShapiroLDAPROUTE_DOMAIN(), e.g.: 227506f25ae9SGregory Neil Shapiro 227606f25ae9SGregory Neil Shapiro LDAPROUTE_DOMAIN(`example.com') 227706f25ae9SGregory Neil Shapiro 227840266059SGregory Neil ShapiroAdditionally, you can specify equivalent domains for LDAP routing using 227940266059SGregory Neil ShapiroLDAPROUTE_EQUIVALENT() and LDAPROUTE_EQUIVALENT_FILE(). 'Equivalent' 228040266059SGregory Neil Shapirohostnames are mapped to $M (the masqueraded hostname for the server) before 228140266059SGregory Neil Shapirothe LDAP query. For example, if the mail is addressed to 228240266059SGregory Neil Shapirouser@host1.example.com, normally the LDAP lookup would only be done for 228340266059SGregory Neil Shapiro'user@host1.example.com' and '@host1.example.com'. However, if 228440266059SGregory Neil ShapiroLDAPROUTE_EQUIVALENT(`host1.example.com') is used, the lookups would also be 228540266059SGregory Neil Shapirodone on 'user@example.com' and '@example.com' after attempting the 228640266059SGregory Neil Shapirohost1.example.com lookups. 228740266059SGregory Neil Shapiro 228806f25ae9SGregory Neil ShapiroBy default, the feature will use the schemas as specified in the draft 228906f25ae9SGregory Neil Shapiroand will not reject addresses not found by the LDAP lookup. However, 229006f25ae9SGregory Neil Shapirothis behavior can be changed by giving additional arguments to the FEATURE() 229106f25ae9SGregory Neil Shapirocommand: 229206f25ae9SGregory Neil Shapiro 2293e92d3f3fSGregory Neil Shapiro FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, 2294e92d3f3fSGregory Neil Shapiro <detail>, <nodomain>, <tempfail>) 229506f25ae9SGregory Neil Shapiro 229606f25ae9SGregory Neil Shapirowhere <mailHost> is a map definition describing how to look up an alternative 229706f25ae9SGregory Neil Shapiromail host for a particular address; <mailRoutingAddress> is a map definition 229840266059SGregory Neil Shapirodescribing how to look up an alternative address for a particular address; 229906f25ae9SGregory Neil Shapirothe <bounce> argument, if present and not the word "passthru", dictates 230006f25ae9SGregory Neil Shapirothat mail should be bounced if neither a mailHost nor mailRoutingAddress 2301e92d3f3fSGregory Neil Shapirois found, if set to "sendertoo", the sender will be rejected if not 2302e92d3f3fSGregory Neil Shapirofound in LDAP; and <detail> indicates what actions to take if the address 230340266059SGregory Neil Shapirocontains +detail information -- `strip' tries the lookup with the +detail 230440266059SGregory Neil Shapiroand if no matches are found, strips the +detail and tries the lookup again; 230540266059SGregory Neil Shapiro`preserve', does the same as `strip' but if a mailRoutingAddress match is 2306e92d3f3fSGregory Neil Shapirofound, the +detail information is copied to the new address; the <nodomain> 2307e92d3f3fSGregory Neil Shapiroargument, if present, will prevent the @domain lookup if the full 2308e92d3f3fSGregory Neil Shapiroaddress is not found in LDAP; the <tempfail> argument, if set to 2309e92d3f3fSGregory Neil Shapiro"tempfail", instructs the rules to give an SMTP 4XX temporary 2310e92d3f3fSGregory Neil Shapiroerror if the LDAP server gives the MTA a temporary failure, or if set to 2311e92d3f3fSGregory Neil Shapiro"queue" (the default), the MTA will locally queue the mail. 231206f25ae9SGregory Neil Shapiro 231306f25ae9SGregory Neil ShapiroThe default <mailHost> map definition is: 231406f25ae9SGregory Neil Shapiro 2315605302a5SGregory Neil Shapiro ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient) 231606f25ae9SGregory Neil Shapiro (mailLocalAddress=%0)) 231706f25ae9SGregory Neil Shapiro 231806f25ae9SGregory Neil ShapiroThe default <mailRoutingAddress> map definition is: 231906f25ae9SGregory Neil Shapiro 2320605302a5SGregory Neil Shapiro ldap -1 -T<TMPF> -v mailRoutingAddress 2321605302a5SGregory Neil Shapiro -k (&(objectClass=inetLocalMailRecipient) 232206f25ae9SGregory Neil Shapiro (mailLocalAddress=%0)) 232306f25ae9SGregory Neil Shapiro 232406f25ae9SGregory Neil ShapiroNote that neither includes the LDAP server hostname (-h server) or base DN 232506f25ae9SGregory Neil Shapiro(-b o=org,c=COUNTRY), both necessary for LDAP queries. It is presumed that 232606f25ae9SGregory Neil Shapiroyour .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with 232706f25ae9SGregory Neil Shapirothese settings. If this is not the case, the map definitions should be 2328605302a5SGregory Neil Shapirochanged as described above. The "-T<TMPF>" is required in any user 2329605302a5SGregory Neil Shapirospecified map definition to catch temporary errors. 233006f25ae9SGregory Neil Shapiro 233106f25ae9SGregory Neil ShapiroThe following possibilities exist as a result of an LDAP lookup on an 233206f25ae9SGregory Neil Shapiroaddress: 233306f25ae9SGregory Neil Shapiro 233406f25ae9SGregory Neil Shapiro mailHost is mailRoutingAddress is Results in 233506f25ae9SGregory Neil Shapiro ----------- --------------------- ---------- 233606f25ae9SGregory Neil Shapiro set to a set mail delivered to 233706f25ae9SGregory Neil Shapiro "local" host mailRoutingAddress 233806f25ae9SGregory Neil Shapiro 233906f25ae9SGregory Neil Shapiro set to a not set delivered to 234006f25ae9SGregory Neil Shapiro "local" host original address 234106f25ae9SGregory Neil Shapiro 234206f25ae9SGregory Neil Shapiro set to a set mailRoutingAddress 234306f25ae9SGregory Neil Shapiro remote host relayed to mailHost 234406f25ae9SGregory Neil Shapiro 234506f25ae9SGregory Neil Shapiro set to a not set original address 234606f25ae9SGregory Neil Shapiro remote host relayed to mailHost 234706f25ae9SGregory Neil Shapiro 234806f25ae9SGregory Neil Shapiro not set set mail delivered to 234906f25ae9SGregory Neil Shapiro mailRoutingAddress 235006f25ae9SGregory Neil Shapiro 235106f25ae9SGregory Neil Shapiro not set not set delivered to 235206f25ae9SGregory Neil Shapiro original address *OR* 235306f25ae9SGregory Neil Shapiro bounced as unknown user 235406f25ae9SGregory Neil Shapiro 235540266059SGregory Neil ShapiroThe term "local" host above means the host specified is in class {w}. If 235640266059SGregory Neil Shapirothe result would mean sending the mail to a different host, that host is 235740266059SGregory Neil Shapirolooked up in the mailertable before delivery. 235840266059SGregory Neil Shapiro 235906f25ae9SGregory Neil ShapiroNote that the last case depends on whether the third argument is given 236006f25ae9SGregory Neil Shapiroto the FEATURE() command. The default is to deliver the message to the 236106f25ae9SGregory Neil Shapirooriginal address. 236206f25ae9SGregory Neil Shapiro 236306f25ae9SGregory Neil ShapiroThe LDAP entries should be set up with an objectClass of 236406f25ae9SGregory Neil ShapiroinetLocalMailRecipient and the address be listed in a mailLocalAddress 236506f25ae9SGregory Neil Shapiroattribute. If present, there must be only one mailHost attribute and it 236606f25ae9SGregory Neil Shapiromust contain a fully qualified host name as its value. Similarly, if 236706f25ae9SGregory Neil Shapiropresent, there must be only one mailRoutingAddress attribute and it must 236840266059SGregory Neil Shapirocontain an RFC 822 compliant address. Some example LDAP records (in LDIF 236906f25ae9SGregory Neil Shapiroformat): 237006f25ae9SGregory Neil Shapiro 237106f25ae9SGregory Neil Shapiro dn: uid=tom, o=example.com, c=US 237206f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 237306f25ae9SGregory Neil Shapiro mailLocalAddress: tom@example.com 237406f25ae9SGregory Neil Shapiro mailRoutingAddress: thomas@mailhost.example.com 237506f25ae9SGregory Neil Shapiro 237606f25ae9SGregory Neil ShapiroThis would deliver mail for tom@example.com to thomas@mailhost.example.com. 237706f25ae9SGregory Neil Shapiro 237806f25ae9SGregory Neil Shapiro dn: uid=dick, o=example.com, c=US 237906f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 238006f25ae9SGregory Neil Shapiro mailLocalAddress: dick@example.com 238106f25ae9SGregory Neil Shapiro mailHost: eng.example.com 238206f25ae9SGregory Neil Shapiro 238306f25ae9SGregory Neil ShapiroThis would relay mail for dick@example.com to the same address but redirect 238440266059SGregory Neil Shapirothe mail to MX records listed for the host eng.example.com (unless the 238540266059SGregory Neil Shapiromailertable overrides). 238606f25ae9SGregory Neil Shapiro 238706f25ae9SGregory Neil Shapiro dn: uid=harry, o=example.com, c=US 238806f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 238906f25ae9SGregory Neil Shapiro mailLocalAddress: harry@example.com 239006f25ae9SGregory Neil Shapiro mailHost: mktmail.example.com 239106f25ae9SGregory Neil Shapiro mailRoutingAddress: harry@mkt.example.com 239206f25ae9SGregory Neil Shapiro 239306f25ae9SGregory Neil ShapiroThis would relay mail for harry@example.com to the MX records listed for 239406f25ae9SGregory Neil Shapirothe host mktmail.example.com using the new address harry@mkt.example.com 239506f25ae9SGregory Neil Shapirowhen talking to that host. 239606f25ae9SGregory Neil Shapiro 239706f25ae9SGregory Neil Shapiro dn: uid=virtual.example.com, o=example.com, c=US 239806f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 239906f25ae9SGregory Neil Shapiro mailLocalAddress: @virtual.example.com 240006f25ae9SGregory Neil Shapiro mailHost: server.example.com 240106f25ae9SGregory Neil Shapiro mailRoutingAddress: virtual@example.com 240206f25ae9SGregory Neil Shapiro 240306f25ae9SGregory Neil ShapiroThis would send all mail destined for any username @virtual.example.com to 240406f25ae9SGregory Neil Shapirothe machine server.example.com's MX servers and deliver to the address 240506f25ae9SGregory Neil Shapirovirtual@example.com on that relay machine. 240606f25ae9SGregory Neil Shapiro 240706f25ae9SGregory Neil Shapiro 2408c2aa98e2SPeter Wemm+---------------------------------+ 2409c2aa98e2SPeter Wemm| ANTI-SPAM CONFIGURATION CONTROL | 2410c2aa98e2SPeter Wemm+---------------------------------+ 2411c2aa98e2SPeter Wemm 2412c2aa98e2SPeter WemmThe primary anti-spam features available in sendmail are: 2413c2aa98e2SPeter Wemm 2414c2aa98e2SPeter Wemm* Relaying is denied by default. 2415c2aa98e2SPeter Wemm* Better checking on sender information. 2416c2aa98e2SPeter Wemm* Access database. 2417c2aa98e2SPeter Wemm* Header checks. 2418c2aa98e2SPeter Wemm 241906f25ae9SGregory Neil ShapiroRelaying (transmission of messages from a site outside your host (class 242006f25ae9SGregory Neil Shapiro{w}) to another site except yours) is denied by default. Note that this 242106f25ae9SGregory Neil Shapirochanged in sendmail 8.9; previous versions allowed relaying by default. 242206f25ae9SGregory Neil ShapiroIf you really want to revert to the old behaviour, you will need to use 242306f25ae9SGregory Neil ShapiroFEATURE(`promiscuous_relay'). You can allow certain domains to relay 242406f25ae9SGregory Neil Shapirothrough your server by adding their domain name or IP address to class 242506f25ae9SGregory Neil Shapiro{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database 242640266059SGregory Neil Shapiro(described below). Note that IPv6 addresses must be prefaced with "IPv6:". 242740266059SGregory Neil ShapiroThe file consists (like any other file based class) of entries listed on 242840266059SGregory Neil Shapiroseparate lines, e.g., 242906f25ae9SGregory Neil Shapiro 243006f25ae9SGregory Neil Shapiro sendmail.org 243106f25ae9SGregory Neil Shapiro 128.32 243240266059SGregory Neil Shapiro IPv6:2002:c0a8:02c7 243340266059SGregory Neil Shapiro IPv6:2002:c0a8:51d2::23f4 243406f25ae9SGregory Neil Shapiro host.mydomain.com 243540266059SGregory Neil Shapiro [UNIX:localhost] 243640266059SGregory Neil Shapiro 243740266059SGregory Neil ShapiroNotice: the last entry allows relaying for connections via a UNIX 243840266059SGregory Neil Shapirosocket to the MTA/MSP. This might be necessary if your configuration 243940266059SGregory Neil Shapirodoesn't allow relaying by other means in that case, e.g., by having 244040266059SGregory Neil Shapirolocalhost.$m in class {R} (make sure $m is not just a top level 244140266059SGregory Neil Shapirodomain). 2442c2aa98e2SPeter Wemm 2443c2aa98e2SPeter WemmIf you use 2444c2aa98e2SPeter Wemm 24452e43090eSPeter Wemm FEATURE(`relay_entire_domain') 2446c2aa98e2SPeter Wemm 244706f25ae9SGregory Neil Shapirothen any host in any of your local domains (that is, class {m}) 2448065a643dSPeter Wemmwill be relayed (that is, you will accept mail either to or from any 2449065a643dSPeter Wemmhost in your domain). 2450c2aa98e2SPeter Wemm 2451c2aa98e2SPeter WemmYou can also allow relaying based on the MX records of the host 2452c2aa98e2SPeter Wemmportion of an incoming recipient address by using 2453c2aa98e2SPeter Wemm 24542e43090eSPeter Wemm FEATURE(`relay_based_on_MX') 2455c2aa98e2SPeter Wemm 2456c2aa98e2SPeter WemmFor example, if your server receives a recipient of user@domain.com 2457c2aa98e2SPeter Wemmand domain.com lists your server in its MX records, the mail will be 245840266059SGregory Neil Shapiroaccepted for relay to domain.com. This feature may cause problems 245940266059SGregory Neil Shapiroif MX lookups for the recipient domain are slow or time out. In that 246040266059SGregory Neil Shapirocase, mail will be temporarily rejected. It is usually better to 246140266059SGregory Neil Shapiromaintain a list of hosts/domains for which the server acts as relay. 246240266059SGregory Neil ShapiroNote also that this feature will stop spammers from using your host 246340266059SGregory Neil Shapiroto relay spam but it will not stop outsiders from using your server 246440266059SGregory Neil Shapiroas a relay for their site (that is, they set up an MX record pointing 246540266059SGregory Neil Shapiroto your mail server, and you will relay mail addressed to them 246640266059SGregory Neil Shapirowithout any prior arrangement). Along the same lines, 2467c2aa98e2SPeter Wemm 24682e43090eSPeter Wemm FEATURE(`relay_local_from') 2469c2aa98e2SPeter Wemm 2470c2aa98e2SPeter Wemmwill allow relaying if the sender specifies a return path (i.e. 247140266059SGregory Neil ShapiroMAIL FROM:<user@domain>) domain which is a local domain. This is a 2472c2aa98e2SPeter Wemmdangerous feature as it will allow spammers to spam using your mail 2473c2aa98e2SPeter Wemmserver by simply specifying a return address of user@your.domain.com. 2474c2aa98e2SPeter WemmIt should not be used unless absolutely necessary. 247506f25ae9SGregory Neil ShapiroA slightly better solution is 247606f25ae9SGregory Neil Shapiro 247706f25ae9SGregory Neil Shapiro FEATURE(`relay_mail_from') 247806f25ae9SGregory Neil Shapiro 247906f25ae9SGregory Neil Shapirowhich allows relaying if the mail sender is listed as RELAY in the 248013bd1963SGregory Neil Shapiroaccess map. If an optional argument `domain' (this is the literal 248113bd1963SGregory Neil Shapiroword `domain', not a placeholder) is given, the domain portion of 248213bd1963SGregory Neil Shapirothe mail sender is also checked to allowing relaying. This option 248313bd1963SGregory Neil Shapiroonly works together with the tag From: for the LHS of the access 2484e92d3f3fSGregory Neil Shapiromap entries. This feature allows spammers to abuse your mail server 2485e92d3f3fSGregory Neil Shapiroby specifying a return address that you enabled in your access file. 2486e92d3f3fSGregory Neil ShapiroThis may be harder to figure out for spammers, but it should not 2487e92d3f3fSGregory Neil Shapirobe used unless necessary. Instead use SMTP AUTH or STARTTLS to 2488e92d3f3fSGregory Neil Shapiroallow relaying for roaming users. 248906f25ae9SGregory Neil Shapiro 2490c2aa98e2SPeter Wemm 249140266059SGregory Neil ShapiroIf source routing is used in the recipient address (e.g., 2492c2aa98e2SPeter WemmRCPT TO:<user%site.com@othersite.com>), sendmail will check 2493c2aa98e2SPeter Wemmuser@site.com for relaying if othersite.com is an allowed relay host 249406f25ae9SGregory Neil Shapiroin either class {R}, class {m} if FEATURE(`relay_entire_domain') is used, 24952e43090eSPeter Wemmor the access database if FEATURE(`access_db') is used. To prevent 2496c2aa98e2SPeter Wemmthe address from being stripped down, use: 2497c2aa98e2SPeter Wemm 24982e43090eSPeter Wemm FEATURE(`loose_relay_check') 2499c2aa98e2SPeter Wemm 2500c2aa98e2SPeter WemmIf you think you need to use this feature, you probably do not. This 2501c2aa98e2SPeter Wemmshould only be used for sites which have no control over the addresses 2502c2aa98e2SPeter Wemmthat they provide a gateway for. Use this FEATURE with caution as it 2503c2aa98e2SPeter Wemmcan allow spammers to relay through your server if not setup properly. 2504c2aa98e2SPeter Wemm 2505da7d7b9cSGregory Neil ShapiroNOTICE: It is possible to relay mail through a system which the 2506da7d7b9cSGregory Neil Shapiroanti-relay rules do not prevent: the case of a system that does use 2507da7d7b9cSGregory Neil ShapiroFEATURE(`nouucp', `nospecial') / FEATURE(`nopercenthack', `nospecial') 2508da7d7b9cSGregory Neil Shapiro(system A) and relays local messages to a mail hub (e.g., via 2509da7d7b9cSGregory Neil ShapiroLOCAL_RELAY or LUSER_RELAY) (system B). If system B doesn't use the 2510da7d7b9cSGregory Neil Shapirosame feature (nouucp / nopercenthack) at all, addresses of the form 2511da7d7b9cSGregory Neil Shapiro<example.net!user@local.host> / <user%example.net@local.host> 2512da7d7b9cSGregory Neil Shapirowould be relayed to <user@example.net>. 2513da7d7b9cSGregory Neil ShapiroSystem A doesn't recognize `!' / `%' as an address separator and 2514da7d7b9cSGregory Neil Shapirotherefore forwards it to the mail hub which in turns relays it 2515da7d7b9cSGregory Neil Shapirobecause it came from a trusted local host. So if a mailserver 2516da7d7b9cSGregory Neil Shapiroallows UUCP (bang-format) / %-hack addresses, all systems from which 2517da7d7b9cSGregory Neil Shapiroit allows relaying should do the same or reject those addresses. 251806f25ae9SGregory Neil Shapiro 2519c2aa98e2SPeter WemmAs of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has 2520c2aa98e2SPeter Wemman unresolvable domain (i.e., one that DNS, your local name service, 252140266059SGregory Neil Shapiroor special case rules in ruleset 3 cannot locate). This also applies 252240266059SGregory Neil Shapiroto addresses that use domain literals, e.g., <user@[1.2.3.4]>, if the 252340266059SGregory Neil ShapiroIP address can't be mapped to a host name. If you want to continue 252440266059SGregory Neil Shapiroto accept such domains, e.g., because you are inside a firewall that 252540266059SGregory Neil Shapirohas only a limited view of the Internet host name space (note that you 252640266059SGregory Neil Shapirowill not be able to return mail to them unless you have some "smart 252740266059SGregory Neil Shapirohost" forwarder), use 2528c2aa98e2SPeter Wemm 25292e43090eSPeter Wemm FEATURE(`accept_unresolvable_domains') 2530c2aa98e2SPeter Wemm 253140266059SGregory Neil ShapiroAlternatively, you can allow specific addresses by adding them to 253240266059SGregory Neil Shapirothe access map, e.g., 253340266059SGregory Neil Shapiro 253440266059SGregory Neil Shapiro From:unresolvable.domain OK 253540266059SGregory Neil Shapiro From:[1.2.3.4] OK 253640266059SGregory Neil Shapiro From:[1.2.4] OK 253740266059SGregory Neil Shapiro 253840266059SGregory Neil ShapiroNotice: domains which are temporarily unresolvable are (temporarily) 253940266059SGregory Neil Shapirorejected with a 451 reply code. If those domains should be accepted 254040266059SGregory Neil Shapiro(which is discouraged) then you can use 254140266059SGregory Neil Shapiro 254240266059SGregory Neil Shapiro LOCAL_CONFIG 254340266059SGregory Neil Shapiro C{ResOk}TEMP 254440266059SGregory Neil Shapiro 2545c2aa98e2SPeter Wemmsendmail will also refuse mail if the MAIL FROM: parameter is not 2546c2aa98e2SPeter Wemmfully qualified (i.e., contains a domain as well as a user). If you 2547c2aa98e2SPeter Wemmwant to continue to accept such senders, use 2548c2aa98e2SPeter Wemm 25492e43090eSPeter Wemm FEATURE(`accept_unqualified_senders') 2550c2aa98e2SPeter Wemm 255106f25ae9SGregory Neil ShapiroSetting the DaemonPortOptions modifier 'u' overrides the default behavior, 255206f25ae9SGregory Neil Shapiroi.e., unqualified addresses are accepted even without this FEATURE. If 255306f25ae9SGregory Neil Shapirothis FEATURE is not used, the DaemonPortOptions modifier 'f' can be used 255440266059SGregory Neil Shapiroto enforce fully qualified domain names. 255506f25ae9SGregory Neil Shapiro 2556c2aa98e2SPeter WemmAn ``access'' database can be created to accept or reject mail from 2557c2aa98e2SPeter Wemmselected domains. For example, you may choose to reject all mail 2558c2aa98e2SPeter Wemmoriginating from known spammers. To enable such a database, use 2559c2aa98e2SPeter Wemm 25602e43090eSPeter Wemm FEATURE(`access_db') 2561c2aa98e2SPeter Wemm 256240266059SGregory Neil ShapiroNotice: the access database is applied to the envelope addresses 256340266059SGregory Neil Shapiroand the connection information, not to the header. 256440266059SGregory Neil Shapiro 256540266059SGregory Neil ShapiroThe FEATURE macro can accept as second parameter the key file 2566c2aa98e2SPeter Wemmdefinition for the database; for example 2567c2aa98e2SPeter Wemm 256840266059SGregory Neil Shapiro FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access_map') 256940266059SGregory Neil Shapiro 257040266059SGregory Neil ShapiroNotice: If a second argument is specified it must contain the option 2571d0cef73dSGregory Neil Shapiro`-T<TMPF>' as shown above. The optional parameters may be 2572d0cef73dSGregory Neil Shapiro 2573d0cef73dSGregory Neil Shapiro `skip' enables SKIP as value part (see below). 2574d0cef73dSGregory Neil Shapiro `lookupdotdomain' another way to enable the feature of the 2575d0cef73dSGregory Neil Shapiro same name (see above). 2576d0cef73dSGregory Neil Shapiro `relaytofulladdress' enable entries of the form 2577d0cef73dSGregory Neil Shapiro To:user@example.com RELAY 2578d0cef73dSGregory Neil Shapiro to allow relaying to just a specific 2579d0cef73dSGregory Neil Shapiro e-mail address instead of an entire domain. 2580c2aa98e2SPeter Wemm 2581065a643dSPeter WemmRemember, since /etc/mail/access is a database, after creating the text 2582065a643dSPeter Wemmfile as described below, you must use makemap to create the database 2583065a643dSPeter Wemmmap. For example: 2584065a643dSPeter Wemm 2585065a643dSPeter Wemm makemap hash /etc/mail/access < /etc/mail/access 2586065a643dSPeter Wemm 2587c2aa98e2SPeter WemmThe table itself uses e-mail addresses, domain names, and network 258840266059SGregory Neil Shapironumbers as keys. Note that IPv6 addresses must be prefaced with "IPv6:". 258940266059SGregory Neil ShapiroFor example, 2590c2aa98e2SPeter Wemm 2591e92d3f3fSGregory Neil Shapiro From:spammer@aol.com REJECT 2592e92d3f3fSGregory Neil Shapiro From:cyberspammer.com REJECT 2593e92d3f3fSGregory Neil Shapiro Connect:cyberspammer.com REJECT 2594e92d3f3fSGregory Neil Shapiro Connect:TLD REJECT 2595e92d3f3fSGregory Neil Shapiro Connect:192.168.212 REJECT 2596e92d3f3fSGregory Neil Shapiro Connect:IPv6:2002:c0a8:02c7 RELAY 2597e92d3f3fSGregory Neil Shapiro Connect:IPv6:2002:c0a8:51d2::23f4 REJECT 2598c2aa98e2SPeter Wemm 2599c2aa98e2SPeter Wemmwould refuse mail from spammer@aol.com, any user from cyberspammer.com 2600605302a5SGregory Neil Shapiro(or any host within the cyberspammer.com domain), any host in the entire 2601605302a5SGregory Neil Shapirotop level domain TLD, 192.168.212.* network, and the IPv6 address 2602605302a5SGregory Neil Shapiro2002:c0a8:51d2::23f4. It would allow relay for the IPv6 network 2603605302a5SGregory Neil Shapiro2002:c0a8:02c7::/48. 2604c2aa98e2SPeter Wemm 2605e92d3f3fSGregory Neil ShapiroEntries in the access map should be tagged according to their type. 26062fb4f839SGregory Neil ShapiroThese tags are applicable: 2607e92d3f3fSGregory Neil Shapiro 2608e92d3f3fSGregory Neil Shapiro Connect: connection information (${client_addr}, ${client_name}) 2609e92d3f3fSGregory Neil Shapiro From: envelope sender 2610e92d3f3fSGregory Neil Shapiro To: envelope recipient 2611e92d3f3fSGregory Neil Shapiro 2612e92d3f3fSGregory Neil ShapiroNotice: untagged entries are deprecated. 2613e92d3f3fSGregory Neil Shapiro 2614e92d3f3fSGregory Neil ShapiroIf the required item is looked up in a map, it will be tried first 2615e92d3f3fSGregory Neil Shapirowith the corresponding tag in front, then (as fallback to enable 2616e92d3f3fSGregory Neil Shapirobackward compatibility) without any tag, unless the specific feature 2617e92d3f3fSGregory Neil Shapirorequires a tag. For example, 2618e92d3f3fSGregory Neil Shapiro 2619e92d3f3fSGregory Neil Shapiro From:spammer@some.dom REJECT 2620e92d3f3fSGregory Neil Shapiro To:friend.domain RELAY 2621e92d3f3fSGregory Neil Shapiro Connect:friend.domain OK 2622e92d3f3fSGregory Neil Shapiro Connect:from.domain RELAY 2623e92d3f3fSGregory Neil Shapiro From:good@another.dom OK 2624e92d3f3fSGregory Neil Shapiro From:another.dom REJECT 2625e92d3f3fSGregory Neil Shapiro 2626e92d3f3fSGregory Neil ShapiroThis would deny mails from spammer@some.dom but you could still 26275b0945b5SGregory Neil Shapirosend mail to that address even if FEATURE(`blocklist_recipients') 2628e92d3f3fSGregory Neil Shapirois enabled. Your system will allow relaying to friend.domain, but 2629e92d3f3fSGregory Neil Shapironot from it (unless enabled by other means). Connections from that 2630e92d3f3fSGregory Neil Shapirodomain will be allowed even if it ends up in one of the DNS based 2631e92d3f3fSGregory Neil Shapirorejection lists. Relaying is enabled from from.domain but not to 2632e92d3f3fSGregory Neil Shapiroit (since relaying is based on the connection information for 2633e92d3f3fSGregory Neil Shapirooutgoing relaying, the tag Connect: must be used; for incoming 2634e92d3f3fSGregory Neil Shapirorelaying, which is based on the recipient address, To: must be 2635e92d3f3fSGregory Neil Shapiroused). The last two entries allow mails from good@another.dom but 2636e92d3f3fSGregory Neil Shapiroreject mail from all other addresses with another.dom as domain 2637e92d3f3fSGregory Neil Shapiropart. 2638e92d3f3fSGregory Neil Shapiro 2639e92d3f3fSGregory Neil Shapiro 2640c2aa98e2SPeter WemmThe value part of the map can contain: 2641c2aa98e2SPeter Wemm 264240266059SGregory Neil Shapiro OK Accept mail even if other rules in the running 264340266059SGregory Neil Shapiro ruleset would reject it, for example, if the domain 264440266059SGregory Neil Shapiro name is unresolvable. "Accept" does not mean 264540266059SGregory Neil Shapiro "relay", but at most acceptance for local 264640266059SGregory Neil Shapiro recipients. That is, OK allows less than RELAY. 2647d0cef73dSGregory Neil Shapiro RELAY Accept mail addressed to the indicated domain 2648d0cef73dSGregory Neil Shapiro (or address if `relaytofulladdress' is set) or 2649065a643dSPeter Wemm received from the indicated domain for relaying 2650065a643dSPeter Wemm through your SMTP server. RELAY also serves as 2651065a643dSPeter Wemm an implicit OK for the other checks. 2652065a643dSPeter Wemm REJECT Reject the sender or recipient with a general 2653c2aa98e2SPeter Wemm purpose message. 2654065a643dSPeter Wemm DISCARD Discard the message completely using the 2655193538b7SGregory Neil Shapiro $#discard mailer. If it is used in check_compat, 2656193538b7SGregory Neil Shapiro it affects only the designated recipient, not 2657193538b7SGregory Neil Shapiro the whole message as it does in all other cases. 2658193538b7SGregory Neil Shapiro This should only be used if really necessary. 265940266059SGregory Neil Shapiro SKIP This can only be used for host/domain names 266040266059SGregory Neil Shapiro and IP addresses/nets. It will abort the current 266140266059SGregory Neil Shapiro search for this entry without accepting or rejecting 266240266059SGregory Neil Shapiro it but causing the default action. 266342e5d165SGregory Neil Shapiro ### any text where ### is an RFC 821 compliant error code and 266442e5d165SGregory Neil Shapiro "any text" is a message to return for the command. 26654e4196cbSGregory Neil Shapiro The entire string should be quoted to avoid 26664e4196cbSGregory Neil Shapiro surprises: 26674e4196cbSGregory Neil Shapiro 26684e4196cbSGregory Neil Shapiro "### any text" 26694e4196cbSGregory Neil Shapiro 26704e4196cbSGregory Neil Shapiro Otherwise sendmail formats the text as email 26714e4196cbSGregory Neil Shapiro addresses, e.g., it may remove spaces. 2672e92d3f3fSGregory Neil Shapiro This type is deprecated, use one of the two 267340266059SGregory Neil Shapiro ERROR: entries below instead. 267406f25ae9SGregory Neil Shapiro ERROR:### any text 267506f25ae9SGregory Neil Shapiro as above, but useful to mark error messages as such. 26764e4196cbSGregory Neil Shapiro If quotes need to be used to avoid modifications 26774e4196cbSGregory Neil Shapiro (see above), they should be placed like this: 26784e4196cbSGregory Neil Shapiro 26794e4196cbSGregory Neil Shapiro ERROR:"### any text" 26804e4196cbSGregory Neil Shapiro 268106f25ae9SGregory Neil Shapiro ERROR:D.S.N:### any text 268206f25ae9SGregory Neil Shapiro where D.S.N is an RFC 1893 compliant error code 26834e4196cbSGregory Neil Shapiro and the rest as above. If quotes need to be used 26844e4196cbSGregory Neil Shapiro to avoid modifications, they should be placed 26854e4196cbSGregory Neil Shapiro like this: 26864e4196cbSGregory Neil Shapiro 26874e4196cbSGregory Neil Shapiro ERROR:D.S.N:"### any text" 26884e4196cbSGregory Neil Shapiro 2689e92d3f3fSGregory Neil Shapiro QUARANTINE:any text 2690e92d3f3fSGregory Neil Shapiro Quarantine the message using the given text as the 2691e92d3f3fSGregory Neil Shapiro quarantining reason. 2692c2aa98e2SPeter Wemm 2693c2aa98e2SPeter WemmFor example: 2694c2aa98e2SPeter Wemm 2695e92d3f3fSGregory Neil Shapiro From:cyberspammer.com ERROR:"550 We don't accept mail from spammers" 2696e92d3f3fSGregory Neil Shapiro From:okay.cyberspammer.com OK 2697e92d3f3fSGregory Neil Shapiro Connect:sendmail.org RELAY 2698e92d3f3fSGregory Neil Shapiro To:sendmail.org RELAY 2699e92d3f3fSGregory Neil Shapiro Connect:128.32 RELAY 2700e92d3f3fSGregory Neil Shapiro Connect:128.32.2 SKIP 2701e92d3f3fSGregory Neil Shapiro Connect:IPv6:1:2:3:4:5:6:7 RELAY 2702e92d3f3fSGregory Neil Shapiro Connect:suspicious.example.com QUARANTINE:Mail from suspicious host 2703e92d3f3fSGregory Neil Shapiro Connect:[127.0.0.3] OK 2704e92d3f3fSGregory Neil Shapiro Connect:[IPv6:1:2:3:4:5:6:7:8] OK 2705c2aa98e2SPeter Wemm 2706e92d3f3fSGregory Neil Shapirowould accept mail from okay.cyberspammer.com, but would reject mail 2707e92d3f3fSGregory Neil Shapirofrom all other hosts at cyberspammer.com with the indicated message. 2708e92d3f3fSGregory Neil ShapiroIt would allow relaying mail from and to any hosts in the sendmail.org 2709e92d3f3fSGregory Neil Shapirodomain, and allow relaying from the IPv6 1:2:3:4:5:6:7:* network 2710e92d3f3fSGregory Neil Shapiroand from the 128.32.*.* network except for the 128.32.2.* network, 2711e92d3f3fSGregory Neil Shapirowhich shows how SKIP is useful to exempt subnets/subdomains. The 2712e92d3f3fSGregory Neil Shapirolast two entries are for checks against ${client_name} if the IP 2713e92d3f3fSGregory Neil Shapiroaddress doesn't resolve to a hostname (or is considered as "may be 2714e92d3f3fSGregory Neil Shapiroforged"). That is, using square brackets means these are host 2715e92d3f3fSGregory Neil Shapironames, not network numbers. 271606f25ae9SGregory Neil Shapiro 271706f25ae9SGregory Neil ShapiroWarning: if you change the RFC 821 compliant error code from the default 271806f25ae9SGregory Neil Shapirovalue of 550, then you should probably also change the RFC 1893 compliant 271906f25ae9SGregory Neil Shapiroerror code to match it. For example, if you use 272006f25ae9SGregory Neil Shapiro 2721e92d3f3fSGregory Neil Shapiro To:user@example.com ERROR:450 mailbox full 272206f25ae9SGregory Neil Shapiro 272340266059SGregory Neil Shapirothe error returned would be "450 5.0.0 mailbox full" which is wrong. 272440266059SGregory Neil ShapiroUse "ERROR:4.2.2:450 mailbox full" instead. 272506f25ae9SGregory Neil Shapiro 272606f25ae9SGregory Neil ShapiroNote, UUCP users may need to add hostname.UUCP to the access database 272740266059SGregory Neil Shapiroor class {R}. 272840266059SGregory Neil Shapiro 272940266059SGregory Neil ShapiroIf you also use: 2730c2aa98e2SPeter Wemm 27312e43090eSPeter Wemm FEATURE(`relay_hosts_only') 2732c2aa98e2SPeter Wemm 2733c2aa98e2SPeter Wemmthen the above example will allow relaying for sendmail.org, but not 2734c2aa98e2SPeter Wemmhosts within the sendmail.org domain. Note that this will also require 273506f25ae9SGregory Neil Shapirohosts listed in class {R} to be fully qualified host names. 2736c2aa98e2SPeter Wemm 2737c2aa98e2SPeter WemmYou can also use the access database to block sender addresses based on 2738c2aa98e2SPeter Wemmthe username portion of the address. For example: 2739c2aa98e2SPeter Wemm 2740e92d3f3fSGregory Neil Shapiro From:FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted 2741c2aa98e2SPeter Wemm 2742c2aa98e2SPeter WemmNote that you must include the @ after the username to signify that 2743c2aa98e2SPeter Wemmthis database entry is for checking only the username portion of the 2744c2aa98e2SPeter Wemmsender address. 2745c2aa98e2SPeter Wemm 2746c2aa98e2SPeter WemmIf you use: 2747c2aa98e2SPeter Wemm 27485b0945b5SGregory Neil Shapiro FEATURE(`blocklist_recipients') 2749c2aa98e2SPeter Wemm 2750c2aa98e2SPeter Wemmthen you can add entries to the map for local users, hosts in your 2751c2aa98e2SPeter Wemmdomains, or addresses in your domain which should not receive mail: 2752c2aa98e2SPeter Wemm 2753e92d3f3fSGregory Neil Shapiro To:badlocaluser@ ERROR:550 Mailbox disabled for badlocaluser 2754e92d3f3fSGregory Neil Shapiro To:host.my.TLD ERROR:550 That host does not accept mail 2755e92d3f3fSGregory Neil Shapiro To:user@other.my.TLD ERROR:550 Mailbox disabled for this recipient 2756c2aa98e2SPeter Wemm 2757e92d3f3fSGregory Neil ShapiroThis would prevent a recipient of badlocaluser in any of the local 2758e92d3f3fSGregory Neil Shapirodomains (class {w}), any user at host.my.TLD, and the single address 2759e92d3f3fSGregory Neil Shapirouser@other.my.TLD from receiving mail. Please note: a local username 2760e92d3f3fSGregory Neil Shapiromust be now tagged with an @ (this is consistent with the check of 2761e92d3f3fSGregory Neil Shapirothe sender address, and hence it is possible to distinguish between 2762e92d3f3fSGregory Neil Shapirohostnames and usernames). Enabling this feature will keep you from 2763e92d3f3fSGregory Neil Shapirosending mails to all addresses that have an error message or REJECT 2764e92d3f3fSGregory Neil Shapiroas value part in the access map. Taking the example from above: 2765065a643dSPeter Wemm 2766065a643dSPeter Wemm spammer@aol.com REJECT 2767065a643dSPeter Wemm cyberspammer.com REJECT 2768065a643dSPeter Wemm 2769065a643dSPeter WemmMail can't be sent to spammer@aol.com or anyone at cyberspammer.com. 2770e92d3f3fSGregory Neil ShapiroThat's why tagged entries should be used. 2771c2aa98e2SPeter Wemm 27725b0945b5SGregory Neil ShapiroThere are several DNS based blocklists which can be found by 2773af9557fdSGregory Neil Shapiroquerying a search engine. These are databases of spammers 277440266059SGregory Neil Shapiromaintained in DNS. To use such a database, specify 2775c2aa98e2SPeter Wemm 2776af9557fdSGregory Neil Shapiro FEATURE(`dnsbl', `dnsbl.example.com') 2777c2aa98e2SPeter Wemm 2778af9557fdSGregory Neil ShapiroThis will cause sendmail to reject mail from any site listed in the 27795b0945b5SGregory Neil ShapiroDNS based blocklist. You must select a DNS based blocklist domain 2780af9557fdSGregory Neil Shapiroto check by specifying an argument to the FEATURE. The default 2781af9557fdSGregory Neil Shapiroerror message is 278213058a91SGregory Neil Shapiro 2783739ac4d4SGregory Neil Shapiro Rejected: IP-ADDRESS listed at SERVER 2784193538b7SGregory Neil Shapiro 278540266059SGregory Neil Shapirowhere IP-ADDRESS and SERVER are replaced by the appropriate 278640266059SGregory Neil Shapiroinformation. A second argument can be used to specify a different 2787d0cef73dSGregory Neil Shapirotext or action. For example, 2788d0cef73dSGregory Neil Shapiro 2789d0cef73dSGregory Neil Shapiro FEATURE(`dnsbl', `dnsbl.example.com', `quarantine') 2790d0cef73dSGregory Neil Shapiro 2791d0cef73dSGregory Neil Shapirowould quarantine the message if the client IP address is listed 2792d0cef73dSGregory Neil Shapiroat `dnsbl.example.com'. 2793d0cef73dSGregory Neil Shapiro 2794d0cef73dSGregory Neil ShapiroBy default, temporary lookup failures are ignored 2795d0cef73dSGregory Neil Shapiroand hence cause the connection not to be rejected by the DNS based 2796d0cef73dSGregory Neil Shapirorejection list. This behavior can be changed by specifying a third 2797d0cef73dSGregory Neil Shapiroargument, which must be either `t' or a full error message. For 2798d0cef73dSGregory Neil Shapiroexample: 2799193538b7SGregory Neil Shapiro 280040266059SGregory Neil Shapiro FEATURE(`dnsbl', `dnsbl.example.com', `', 280140266059SGregory Neil Shapiro `"451 Temporary lookup failure for " $&{client_addr} " in dnsbl.example.com"') 280240266059SGregory Neil Shapiro 280340266059SGregory Neil ShapiroIf `t' is used, the error message is: 280440266059SGregory Neil Shapiro 280540266059SGregory Neil Shapiro 451 Temporary lookup failure of IP-ADDRESS at SERVER 280640266059SGregory Neil Shapiro 280740266059SGregory Neil Shapirowhere IP-ADDRESS and SERVER are replaced by the appropriate 280840266059SGregory Neil Shapiroinformation. 280940266059SGregory Neil Shapiro 281040266059SGregory Neil ShapiroThis FEATURE can be included several times to query different 2811af9557fdSGregory Neil ShapiroDNS based rejection lists. 281240266059SGregory Neil Shapiro 281340266059SGregory Neil ShapiroNotice: to avoid checking your own local domains against those 28145b0945b5SGregory Neil Shapiroblocklists, use the access_db feature and add: 281540266059SGregory Neil Shapiro 281640266059SGregory Neil Shapiro Connect:10.1 OK 281740266059SGregory Neil Shapiro Connect:127.0.0.1 RELAY 281840266059SGregory Neil Shapiro 281940266059SGregory Neil Shapiroto the access map, where 10.1 is your local network. You may 282040266059SGregory Neil Shapirowant to use "RELAY" instead of "OK" to allow also relaying 28215b0945b5SGregory Neil Shapiroinstead of just disabling the DNS lookups in the blocklists. 282240266059SGregory Neil Shapiro 2823c2aa98e2SPeter Wemm 2824c2aa98e2SPeter WemmThe features described above make use of the check_relay, check_mail, 282513bd1963SGregory Neil Shapiroand check_rcpt rulesets. Note that check_relay checks the SMTP 282613bd1963SGregory Neil Shapiroclient hostname and IP address when the connection is made to your 282713bd1963SGregory Neil Shapiroserver. It does not check if a mail message is being relayed to 282813bd1963SGregory Neil Shapiroanother server. That check is done in check_rcpt. If you wish to 282913bd1963SGregory Neil Shapiroinclude your own checks, you can put your checks in the rulesets 283013bd1963SGregory Neil ShapiroLocal_check_relay, Local_check_mail, and Local_check_rcpt. For 283113bd1963SGregory Neil Shapiroexample if you wanted to block senders with all numeric usernames 283213bd1963SGregory Neil Shapiro(i.e. 2312343@bigisp.com), you would use Local_check_mail and the 283313bd1963SGregory Neil Shapiroregex map: 2834c2aa98e2SPeter Wemm 2835c2aa98e2SPeter Wemm LOCAL_CONFIG 2836c2aa98e2SPeter Wemm Kallnumbers regex -a@MATCH ^[0-9]+$ 2837c2aa98e2SPeter Wemm 2838c2aa98e2SPeter Wemm LOCAL_RULESETS 2839c2aa98e2SPeter Wemm SLocal_check_mail 2840c2aa98e2SPeter Wemm # check address against various regex checks 2841c2aa98e2SPeter Wemm R$* $: $>Parse0 $>3 $1 2842c2aa98e2SPeter Wemm R$+ < @ bigisp.com. > $* $: $(allnumbers $1 $) 28432fb4f839SGregory Neil Shapiro R@MATCH $#error $: 553 Address Error 2844c2aa98e2SPeter Wemm 2845c2aa98e2SPeter WemmThese rules are called with the original arguments of the corresponding 2846c2aa98e2SPeter Wemmcheck_* ruleset. If the local ruleset returns $#OK, no further checking 2847e92d3f3fSGregory Neil Shapirois done by the features described above and the mail is accepted. If 2848e92d3f3fSGregory Neil Shapirothe local ruleset resolves to a mailer (such as $#error or $#discard), 2849e92d3f3fSGregory Neil Shapirothe appropriate action is taken. Other results starting with $# are 2850e92d3f3fSGregory Neil Shapirointerpreted by sendmail and may lead to unspecified behavior. Note: do 2851e92d3f3fSGregory Neil ShapiroNOT create a mailer with the name OK. Return values that do not start 2852e92d3f3fSGregory Neil Shapirowith $# are ignored, i.e., normal processing continues. 285306f25ae9SGregory Neil Shapiro 285406f25ae9SGregory Neil ShapiroDelay all checks 285540266059SGregory Neil Shapiro---------------- 285606f25ae9SGregory Neil Shapiro 285706f25ae9SGregory Neil ShapiroBy using FEATURE(`delay_checks') the rulesets check_mail and check_relay 285806f25ae9SGregory Neil Shapirowill not be called when a client connects or issues a MAIL command, 285906f25ae9SGregory Neil Shapirorespectively. Instead, those rulesets will be called by the check_rcpt 286006f25ae9SGregory Neil Shapiroruleset; they will be skipped if a sender has been authenticated using 286106f25ae9SGregory Neil Shapiroa "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH(). 286206f25ae9SGregory Neil ShapiroIf check_mail returns an error then the RCPT TO command will be rejected 286306f25ae9SGregory Neil Shapirowith that error. If it returns some other result starting with $# then 286406f25ae9SGregory Neil Shapirocheck_relay will be skipped. If the sender address (or a part of it) is 286506f25ae9SGregory Neil Shapirolisted in the access map and it has a RHS of OK or RELAY, then check_relay 286606f25ae9SGregory Neil Shapirowill be skipped. This has an interesting side effect: if your domain is 286706f25ae9SGregory Neil Shapiromy.domain and you have 286806f25ae9SGregory Neil Shapiro 286906f25ae9SGregory Neil Shapiro my.domain RELAY 287006f25ae9SGregory Neil Shapiro 2871323f6dcbSGregory Neil Shapiroin the access map, then any e-mail with a sender address of 2872323f6dcbSGregory Neil Shapiro<user@my.domain> will not be rejected by check_relay even though 2873323f6dcbSGregory Neil Shapiroit would match the hostname or IP address. This allows spammers 28745b0945b5SGregory Neil Shapiroto get around DNS based blocklist by faking the sender address. To 287506f25ae9SGregory Neil Shapiroavoid this problem you have to use tagged entries: 287606f25ae9SGregory Neil Shapiro 287706f25ae9SGregory Neil Shapiro To:my.domain RELAY 287806f25ae9SGregory Neil Shapiro Connect:my.domain RELAY 287906f25ae9SGregory Neil Shapiro 288006f25ae9SGregory Neil Shapiroif you need those entries at all (class {R} may take care of them). 288106f25ae9SGregory Neil Shapiro 288206f25ae9SGregory Neil ShapiroFEATURE(`delay_checks') can take an optional argument: 288306f25ae9SGregory Neil Shapiro 288406f25ae9SGregory Neil Shapiro FEATURE(`delay_checks', `friend') 288506f25ae9SGregory Neil Shapiro enables spamfriend test 288606f25ae9SGregory Neil Shapiro FEATURE(`delay_checks', `hater') 288706f25ae9SGregory Neil Shapiro enables spamhater test 288806f25ae9SGregory Neil Shapiro 2889605302a5SGregory Neil ShapiroIf such an argument is given, the recipient will be looked up in the 2890605302a5SGregory Neil Shapiroaccess map (using the tag Spam:). If the argument is `friend', then 2891605302a5SGregory Neil Shapirothe default behavior is to apply the other rulesets and make a SPAM 2892605302a5SGregory Neil Shapirofriend the exception. The rulesets check_mail and check_relay will be 2893605302a5SGregory Neil Shapiroskipped only if the recipient address is found and has RHS FRIEND. If 2894605302a5SGregory Neil Shapirothe argument is `hater', then the default behavior is to skip the rulesets 2895605302a5SGregory Neil Shapirocheck_mail and check_relay and make a SPAM hater the exception. The 2896605302a5SGregory Neil Shapiroother two rulesets will be applied only if the recipient address is 2897605302a5SGregory Neil Shapirofound and has RHS HATER. 289806f25ae9SGregory Neil Shapiro 289906f25ae9SGregory Neil ShapiroThis allows for simple exceptions from the tests, e.g., by activating 290040266059SGregory Neil Shapirothe friend option and having 290106f25ae9SGregory Neil Shapiro 290240266059SGregory Neil Shapiro Spam:abuse@ FRIEND 290306f25ae9SGregory Neil Shapiro 290413bd1963SGregory Neil Shapiroin the access map, mail to abuse@localdomain will get through (where 290513bd1963SGregory Neil Shapiro"localdomain" is any domain in class {w}). It is also possible to 290613bd1963SGregory Neil Shapirospecify a full address or an address with +detail: 290706f25ae9SGregory Neil Shapiro 290840266059SGregory Neil Shapiro Spam:abuse@my.domain FRIEND 290940266059SGregory Neil Shapiro Spam:me+abuse@ FRIEND 291040266059SGregory Neil Shapiro Spam:spam.domain FRIEND 291106f25ae9SGregory Neil Shapiro 291240266059SGregory Neil ShapiroNote: The required tag has been changed in 8.12 from To: to Spam:. 291340266059SGregory Neil ShapiroThis change is incompatible to previous versions. However, you can 291440266059SGregory Neil Shapiro(for now) simply add the new entries to the access map, the old 291540266059SGregory Neil Shapiroones will be ignored. As soon as you removed the old entries from 291640266059SGregory Neil Shapirothe access map, specify a third parameter (`n') to this feature and 291740266059SGregory Neil Shapirothe backward compatibility rules will not be in the generated .cf 291840266059SGregory Neil Shapirofile. 291906f25ae9SGregory Neil Shapiro 292006f25ae9SGregory Neil ShapiroHeader Checks 292140266059SGregory Neil Shapiro------------- 2922c2aa98e2SPeter Wemm 2923c2aa98e2SPeter WemmYou can also reject mail on the basis of the contents of headers. 2924c2aa98e2SPeter WemmThis is done by adding a ruleset call to the 'H' header definition command 2925c2aa98e2SPeter Wemmin sendmail.cf. For example, this can be used to check the validity of 2926c2aa98e2SPeter Wemma Message-ID: header: 2927c2aa98e2SPeter Wemm 292813bd1963SGregory Neil Shapiro LOCAL_CONFIG 2929c2aa98e2SPeter Wemm HMessage-Id: $>CheckMessageId 2930c2aa98e2SPeter Wemm 293113bd1963SGregory Neil Shapiro LOCAL_RULESETS 2932c2aa98e2SPeter Wemm SCheckMessageId 2933c2aa98e2SPeter Wemm R< $+ @ $+ > $@ OK 2934c2aa98e2SPeter Wemm R$* $#error $: 553 Header Error 2935c2aa98e2SPeter Wemm 293606f25ae9SGregory Neil ShapiroThe alternative format: 2937065a643dSPeter Wemm 293806f25ae9SGregory Neil Shapiro HSubject: $>+CheckSubject 2939065a643dSPeter Wemm 294006f25ae9SGregory Neil Shapirothat is, $>+ instead of $>, gives the full Subject: header including 294106f25ae9SGregory Neil Shapirocomments to the ruleset (comments in parentheses () are stripped 294206f25ae9SGregory Neil Shapiroby default). 29432e43090eSPeter Wemm 294406f25ae9SGregory Neil ShapiroA default ruleset for headers which don't have a specific ruleset 294506f25ae9SGregory Neil Shapirodefined for them can be given by: 2946065a643dSPeter Wemm 294706f25ae9SGregory Neil Shapiro H*: $>CheckHdr 294806f25ae9SGregory Neil Shapiro 294940266059SGregory Neil ShapiroNotice: 295040266059SGregory Neil Shapiro1. All rules act on tokens as explained in doc/op/op.{me,ps,txt}. 2951602a2b1bSGregory Neil ShapiroThat may cause problems with simple header checks due to the 2952602a2b1bSGregory Neil Shapirotokenization. It might be simpler to use a regex map and apply it 2953602a2b1bSGregory Neil Shapiroto $&{currHeader}. 295440266059SGregory Neil Shapiro2. There are no default rulesets coming with this distribution of 29554e4196cbSGregory Neil Shapirosendmail. You can write your own, can search the WWW for examples, 29564e4196cbSGregory Neil Shapiroor take a look at cf/cf/knecht.mc. 2957e92d3f3fSGregory Neil Shapiro3. When using a default ruleset for headers, the name of the header 2958e92d3f3fSGregory Neil Shapirocurrently being checked can be found in the $&{hdr_name} macro. 2959602a2b1bSGregory Neil Shapiro 296006f25ae9SGregory Neil ShapiroAfter all of the headers are read, the check_eoh ruleset will be called for 296106f25ae9SGregory Neil Shapiroany final header-related checks. The ruleset is called with the number of 296206f25ae9SGregory Neil Shapiroheaders and the size of all of the headers in bytes separated by $|. One 296306f25ae9SGregory Neil Shapiroexample usage is to reject messages which do not have a Message-Id: 296406f25ae9SGregory Neil Shapiroheader. However, the Message-Id: header is *NOT* a required header and is 296506f25ae9SGregory Neil Shapironot a guaranteed spam indicator. This ruleset is an example and should 296606f25ae9SGregory Neil Shapiroprobably not be used in production. 296706f25ae9SGregory Neil Shapiro 296806f25ae9SGregory Neil Shapiro LOCAL_CONFIG 296906f25ae9SGregory Neil Shapiro Kstorage macro 297006f25ae9SGregory Neil Shapiro HMessage-Id: $>CheckMessageId 297106f25ae9SGregory Neil Shapiro 297213bd1963SGregory Neil Shapiro LOCAL_RULESETS 297306f25ae9SGregory Neil Shapiro SCheckMessageId 297406f25ae9SGregory Neil Shapiro # Record the presence of the header 297506f25ae9SGregory Neil Shapiro R$* $: $(storage {MessageIdCheck} $@ OK $) $1 297606f25ae9SGregory Neil Shapiro R< $+ @ $+ > $@ OK 297706f25ae9SGregory Neil Shapiro R$* $#error $: 553 Header Error 297806f25ae9SGregory Neil Shapiro 297906f25ae9SGregory Neil Shapiro Scheck_eoh 298006f25ae9SGregory Neil Shapiro # Check the macro 298106f25ae9SGregory Neil Shapiro R$* $: < $&{MessageIdCheck} > 298206f25ae9SGregory Neil Shapiro # Clear the macro for the next message 298306f25ae9SGregory Neil Shapiro R$* $: $(storage {MessageIdCheck} $) $1 298406f25ae9SGregory Neil Shapiro # Has a Message-Id: header 298506f25ae9SGregory Neil Shapiro R< $+ > $@ OK 298606f25ae9SGregory Neil Shapiro # Allow missing Message-Id: from local mail 298706f25ae9SGregory Neil Shapiro R$* $: < $&{client_name} > 298806f25ae9SGregory Neil Shapiro R< > $@ OK 298906f25ae9SGregory Neil Shapiro R< $=w > $@ OK 299006f25ae9SGregory Neil Shapiro # Otherwise, reject the mail 299106f25ae9SGregory Neil Shapiro R$* $#error $: 553 Header Error 299206f25ae9SGregory Neil Shapiro 2993e92d3f3fSGregory Neil Shapiro 2994e92d3f3fSGregory Neil Shapiro+--------------------+ 2995e92d3f3fSGregory Neil Shapiro| CONNECTION CONTROL | 2996e92d3f3fSGregory Neil Shapiro+--------------------+ 2997e92d3f3fSGregory Neil Shapiro 2998e92d3f3fSGregory Neil ShapiroThe features ratecontrol and conncontrol allow to establish connection 2999e92d3f3fSGregory Neil Shapirolimits per client IP address or net. These features can limit the 3000e92d3f3fSGregory Neil Shapirorate of connections (connections per time unit) or the number of 3001e92d3f3fSGregory Neil Shapiroincoming SMTP connections, respectively. If enabled, appropriate 3002e92d3f3fSGregory Neil Shapirorulesets are called at the end of check_relay, i.e., after DNS 30035b0945b5SGregory Neil Shapiroblocklists and generic access_db operations. The features require 3004e92d3f3fSGregory Neil ShapiroFEATURE(`access_db') to be listed earlier in the mc file. 3005e92d3f3fSGregory Neil Shapiro 3006e92d3f3fSGregory Neil ShapiroNote: FEATURE(`delay_checks') delays those connection control checks 3007e92d3f3fSGregory Neil Shapiroafter a recipient address has been received, hence making these 3008e92d3f3fSGregory Neil Shapiroconnection control features less useful. To run the checks as early 3009e92d3f3fSGregory Neil Shapiroas possible, specify the parameter `nodelay', e.g., 3010e92d3f3fSGregory Neil Shapiro 3011e92d3f3fSGregory Neil Shapiro FEATURE(`ratecontrol', `nodelay') 3012e92d3f3fSGregory Neil Shapiro 3013e92d3f3fSGregory Neil ShapiroIn that case, FEATURE(`delay_checks') has no effect on connection 3014e92d3f3fSGregory Neil Shapirocontrol (and it must be specified earlier in the mc file). 3015e92d3f3fSGregory Neil Shapiro 3016e92d3f3fSGregory Neil ShapiroAn optional second argument `terminate' specifies whether the 3017e92d3f3fSGregory Neil Shapirorulesets should return the error code 421 which will cause 3018e92d3f3fSGregory Neil Shapirosendmail to terminate the session with that error if it is 3019e92d3f3fSGregory Neil Shapiroreturned from check_relay, i.e., not delayed as explained in 3020e92d3f3fSGregory Neil Shapirothe previous paragraph. Example: 3021e92d3f3fSGregory Neil Shapiro 3022e92d3f3fSGregory Neil Shapiro FEATURE(`ratecontrol', `nodelay', `terminate') 3023e92d3f3fSGregory Neil Shapiro 3024e92d3f3fSGregory Neil Shapiro 302542e5d165SGregory Neil Shapiro+----------+ 302606f25ae9SGregory Neil Shapiro| STARTTLS | 302742e5d165SGregory Neil Shapiro+----------+ 302806f25ae9SGregory Neil Shapiro 302913d88268SGregory Neil ShapiroIn this text, cert will be used as an abbreviation for X.509 certificate, 303040266059SGregory Neil ShapiroDN (CN) is the distinguished (common) name of a cert, and CA is a 303140266059SGregory Neil Shapirocertification authority, which signs (issues) certs. 303206f25ae9SGregory Neil Shapiro 303313058a91SGregory Neil ShapiroFor STARTTLS to be offered by sendmail you need to set at least 303413d88268SGregory Neil Shapirothese variables (the file names and paths are just examples): 303513058a91SGregory Neil Shapiro 303613058a91SGregory Neil Shapiro define(`confCACERT_PATH', `/etc/mail/certs/') 303713058a91SGregory Neil Shapiro define(`confCACERT', `/etc/mail/certs/CA.cert.pem') 303813058a91SGregory Neil Shapiro define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem') 303913058a91SGregory Neil Shapiro define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem') 304013058a91SGregory Neil Shapiro 304113058a91SGregory Neil ShapiroOn systems which do not have the compile flag HASURANDOM set (see 304213058a91SGregory Neil Shapirosendmail/README) you also must set confRAND_FILE. 304313058a91SGregory Neil Shapiro 304440266059SGregory Neil ShapiroSee doc/op/op.{me,ps,txt} for more information about these options, 304540266059SGregory Neil Shapiroespecially the sections ``Certificates for STARTTLS'' and ``PRNG for 304613058a91SGregory Neil ShapiroSTARTTLS''. 304713058a91SGregory Neil Shapiro 304806f25ae9SGregory Neil ShapiroMacros related to STARTTLS are: 304906f25ae9SGregory Neil Shapiro 305006f25ae9SGregory Neil Shapiro${cert_issuer} holds the DN of the CA (the cert issuer). 305106f25ae9SGregory Neil Shapiro${cert_subject} holds the DN of the cert (called the cert subject). 305240266059SGregory Neil Shapiro${cn_issuer} holds the CN of the CA (the cert issuer). 305340266059SGregory Neil Shapiro${cn_subject} holds the CN of the cert (called the cert subject). 305406f25ae9SGregory Neil Shapiro${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1, 305540266059SGregory Neil Shapiro TLSv1/SSLv3, SSLv3, SSLv2. 305606f25ae9SGregory Neil Shapiro${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA, 305706f25ae9SGregory Neil Shapiro EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA. 305806f25ae9SGregory Neil Shapiro${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm 305906f25ae9SGregory Neil Shapiro used for the connection. 306040266059SGregory Neil Shapiro${verify} holds the result of the verification of the presented cert. 306140266059SGregory Neil Shapiro Possible values are: 306206f25ae9SGregory Neil Shapiro OK verification succeeded. 306306f25ae9SGregory Neil Shapiro NO no cert presented. 306440266059SGregory Neil Shapiro NOT no cert requested. 306540266059SGregory Neil Shapiro FAIL cert presented but could not be verified, 306640266059SGregory Neil Shapiro e.g., the cert of the signing CA is missing. 306706f25ae9SGregory Neil Shapiro NONE STARTTLS has not been performed. 306806f25ae9SGregory Neil Shapiro TEMP temporary error occurred. 306940266059SGregory Neil Shapiro PROTOCOL protocol error occurred (SMTP level). 307006f25ae9SGregory Neil Shapiro SOFTWARE STARTTLS handshake failed. 307106f25ae9SGregory Neil Shapiro${server_name} the name of the server of the current outgoing SMTP 307206f25ae9SGregory Neil Shapiro connection. 307306f25ae9SGregory Neil Shapiro${server_addr} the address of the server of the current outgoing SMTP 307406f25ae9SGregory Neil Shapiro connection. 307506f25ae9SGregory Neil Shapiro 307606f25ae9SGregory Neil ShapiroRelaying 307740266059SGregory Neil Shapiro-------- 307806f25ae9SGregory Neil Shapiro 307913bd1963SGregory Neil ShapiroSMTP STARTTLS can allow relaying for remote SMTP clients which have 3080a7ec597cSGregory Neil Shapirosuccessfully authenticated themselves. If the verification of the cert 3081a7ec597cSGregory Neil Shapirofailed (${verify} != OK), relaying is subject to the usual rules. 3082a7ec597cSGregory Neil ShapiroOtherwise the DN of the issuer is looked up in the access map using the 3083a7ec597cSGregory Neil Shapirotag CERTISSUER. If the resulting value is RELAY, relaying is allowed. 3084a7ec597cSGregory Neil ShapiroIf it is SUBJECT, the DN of the cert subject is looked up next in the 3085a7ec597cSGregory Neil Shapiroaccess map using the tag CERTSUBJECT. If the value is RELAY, relaying 3086a7ec597cSGregory Neil Shapirois allowed. 308713bd1963SGregory Neil Shapiro 3088e92d3f3fSGregory Neil ShapiroTo make things a bit more flexible (or complicated), the values for 308906f25ae9SGregory Neil Shapiro${cert_issuer} and ${cert_subject} can be optionally modified by regular 309006f25ae9SGregory Neil Shapiroexpressions defined in the m4 variables _CERT_REGEX_ISSUER_ and 309106f25ae9SGregory Neil Shapiro_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in 309206f25ae9SGregory Neil Shapirorulesets and map lookups, they are modified as follows: each non-printable 309313bd1963SGregory Neil Shapirocharacter and the characters '<', '>', '(', ')', '"', '+', ' ' are replaced 309413bd1963SGregory Neil Shapiroby their HEX value with a leading '+'. For example: 309506f25ae9SGregory Neil Shapiro 30965b0945b5SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/emailAddress= 309706f25ae9SGregory Neil Shapirodarth+cert@endmail.org 309806f25ae9SGregory Neil Shapiro 309906f25ae9SGregory Neil Shapirois encoded as: 310006f25ae9SGregory Neil Shapiro 310106f25ae9SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN= 31025b0945b5SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org 310306f25ae9SGregory Neil Shapiro 310406f25ae9SGregory Neil Shapiro(line breaks have been inserted for readability). 310506f25ae9SGregory Neil Shapiro 310613bd1963SGregory Neil ShapiroThe macros which are subject to this encoding are ${cert_subject}, 310713bd1963SGregory Neil Shapiro${cert_issuer}, ${cn_subject}, and ${cn_issuer}. 310813bd1963SGregory Neil Shapiro 310940266059SGregory Neil ShapiroExamples: 311040266059SGregory Neil Shapiro 311140266059SGregory Neil ShapiroTo allow relaying for everyone who can present a cert signed by 311240266059SGregory Neil Shapiro 311340266059SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN= 31145b0945b5SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org 311540266059SGregory Neil Shapiro 311640266059SGregory Neil Shapirosimply use: 311740266059SGregory Neil Shapiro 311813bd1963SGregory Neil ShapiroCertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= 31195b0945b5SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org RELAY 312040266059SGregory Neil Shapiro 312140266059SGregory Neil ShapiroTo allow relaying only for a subset of machines that have a cert signed by 312240266059SGregory Neil Shapiro 312340266059SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN= 31245b0945b5SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org 312540266059SGregory Neil Shapiro 312640266059SGregory Neil Shapirouse: 312740266059SGregory Neil Shapiro 312813bd1963SGregory Neil ShapiroCertIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= 31295b0945b5SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org SUBJECT 313013bd1963SGregory Neil ShapiroCertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN= 31315b0945b5SGregory Neil ShapiroDeathStar/emailAddress=deathstar@endmail.org RELAY 313240266059SGregory Neil Shapiro 31335b0945b5SGregory Neil ShapiroNote: line breaks have been inserted after "CN=" for readability, 313440266059SGregory Neil Shapiroeach tagged entry must be one (long) line in the access map. 313540266059SGregory Neil Shapiro 313640266059SGregory Neil ShapiroOf course it is also possible to write a simple ruleset that allows 313706f25ae9SGregory Neil Shapirorelaying for everyone who can present a cert that can be verified, e.g., 313806f25ae9SGregory Neil Shapiro 313906f25ae9SGregory Neil ShapiroLOCAL_RULESETS 314006f25ae9SGregory Neil ShapiroSLocal_check_rcpt 314106f25ae9SGregory Neil ShapiroR$* $: $&{verify} 314206f25ae9SGregory Neil ShapiroROK $# OK 314306f25ae9SGregory Neil Shapiro 314406f25ae9SGregory Neil ShapiroAllowing Connections 314540266059SGregory Neil Shapiro-------------------- 314606f25ae9SGregory Neil Shapiro 314740266059SGregory Neil ShapiroThe rulesets tls_server, tls_client, and tls_rcpt are used to decide whether 314840266059SGregory Neil Shapiroan SMTP connection is accepted (or should continue). 314906f25ae9SGregory Neil Shapiro 315006f25ae9SGregory Neil Shapirotls_server is called when sendmail acts as client after a STARTTLS command 315106f25ae9SGregory Neil Shapiro(should) have been issued. The parameter is the value of ${verify}. 315206f25ae9SGregory Neil Shapiro 315306f25ae9SGregory Neil Shapirotls_client is called when sendmail acts as server, after a STARTTLS command 315406f25ae9SGregory Neil Shapirohas been issued, and from check_mail. The parameter is the value of 315506f25ae9SGregory Neil Shapiro${verify} and STARTTLS or MAIL, respectively. 315606f25ae9SGregory Neil Shapiro 315706f25ae9SGregory Neil ShapiroBoth rulesets behave the same. If no access map is in use, the connection 315806f25ae9SGregory Neil Shapirowill be accepted unless ${verify} is SOFTWARE, in which case the connection 315940266059SGregory Neil Shapirois always aborted. For tls_server/tls_client, ${client_name}/${server_name} 316040266059SGregory Neil Shapirois looked up in the access map using the tag TLS_Srv/TLS_Clt, which is done 316106f25ae9SGregory Neil Shapirowith the ruleset LookUpDomain. If no entry is found, ${client_addr} 316206f25ae9SGregory Neil Shapiro(${server_addr}) is looked up in the access map (same tag, ruleset 316306f25ae9SGregory Neil ShapiroLookUpAddr). If this doesn't result in an entry either, just the tag is 316440266059SGregory Neil Shapirolooked up in the access map (included the trailing colon). Notice: 316540266059SGregory Neil Shapirorequiring that e-mail is sent to a server only encrypted, e.g., via 316640266059SGregory Neil Shapiro 316740266059SGregory Neil ShapiroTLS_Srv:secure.domain ENCR:112 316840266059SGregory Neil Shapiro 316940266059SGregory Neil Shapirodoesn't necessarily mean that e-mail sent to that domain is encrypted. 317040266059SGregory Neil ShapiroIf the domain has multiple MX servers, e.g., 317140266059SGregory Neil Shapiro 317240266059SGregory Neil Shapirosecure.domain. IN MX 10 mail.secure.domain. 317340266059SGregory Neil Shapirosecure.domain. IN MX 50 mail.other.domain. 317440266059SGregory Neil Shapiro 317540266059SGregory Neil Shapirothen mail to user@secure.domain may go unencrypted to mail.other.domain. 317640266059SGregory Neil Shapirotls_rcpt can be used to address this problem. 317740266059SGregory Neil Shapiro 317840266059SGregory Neil Shapirotls_rcpt is called before a RCPT TO: command is sent. The parameter is the 317940266059SGregory Neil Shapirocurrent recipient. This ruleset is only defined if FEATURE(`access_db') 318040266059SGregory Neil Shapirois selected. A recipient address user@domain is looked up in the access 318140266059SGregory Neil Shapiromap in four formats: TLS_Rcpt:user@domain, TLS_Rcpt:user@, TLS_Rcpt:domain, 318240266059SGregory Neil Shapiroand TLS_Rcpt:; the first match is taken. 318340266059SGregory Neil Shapiro 318440266059SGregory Neil ShapiroThe result of the lookups is then used to call the ruleset TLS_connection, 318540266059SGregory Neil Shapirowhich checks the requirement specified by the RHS in the access map against 318640266059SGregory Neil Shapirothe actual parameters of the current TLS connection, esp. ${verify} and 318706f25ae9SGregory Neil Shapiro${cipher_bits}. Legal RHSs in the access map are: 318806f25ae9SGregory Neil Shapiro 318906f25ae9SGregory Neil ShapiroVERIFY verification must have succeeded 319006f25ae9SGregory Neil ShapiroVERIFY:bits verification must have succeeded and ${cipher_bits} must 319106f25ae9SGregory Neil Shapiro be greater than or equal bits. 319206f25ae9SGregory Neil ShapiroENCR:bits ${cipher_bits} must be greater than or equal bits. 319306f25ae9SGregory Neil Shapiro 319406f25ae9SGregory Neil ShapiroThe RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary 3195*d39bd2c1SGregory Neil Shapiroor permanent error. The default is a temporary error code unless 3196*d39bd2c1SGregory Neil Shapirothe macro TLS_PERM_ERR is set during generation of the .cf file. 319706f25ae9SGregory Neil Shapiro 319806f25ae9SGregory Neil ShapiroIf a certain level of encryption is required, then it might also be 319906f25ae9SGregory Neil Shapiropossible that this level is provided by the security layer from a SASL 320006f25ae9SGregory Neil Shapiroalgorithm, e.g., DIGEST-MD5. 320106f25ae9SGregory Neil Shapiro 320240266059SGregory Neil ShapiroFurthermore, there can be a list of extensions added. Such a list 320340266059SGregory Neil Shapirostarts with '+' and the items are separated by '++'. Allowed 320440266059SGregory Neil Shapiroextensions are: 320540266059SGregory Neil Shapiro 320640266059SGregory Neil ShapiroCN:name name must match ${cn_subject} 32079bd497b8SGregory Neil ShapiroCN ${client_name}/${server_name} must match ${cn_subject} 320840266059SGregory Neil ShapiroCS:name name must match ${cert_subject} 320940266059SGregory Neil ShapiroCI:name name must match ${cert_issuer} 32105b0945b5SGregory Neil ShapiroCITag:MYTag look up MYTag:${cert_issuer} in access map; the check 32115b0945b5SGregory Neil Shapiro only succeeds if it is found with a RHS of OK. 321240266059SGregory Neil Shapiro 3213c86d5965SGregory Neil ShapiroExample: e-mail sent to secure.example.com should only use an encrypted 321440266059SGregory Neil Shapiroconnection. E-mail received from hosts within the laptop.example.com domain 321540266059SGregory Neil Shapiroshould only be accepted if they have been authenticated. The host which 321640266059SGregory Neil Shapiroreceives e-mail for darth@endmail.org must present a cert that uses the 32175b0945b5SGregory Neil ShapiroCN smtp.endmail.org. E-mail sent to safe.example.com must be verified, 32185b0945b5SGregory Neil Shapirohave a matching CN, and must present a cert signed by a CA with one of 32195b0945b5SGregory Neil Shapirothe listed DNs. 322040266059SGregory Neil Shapiro 322106f25ae9SGregory Neil ShapiroTLS_Srv:secure.example.com ENCR:112 322206f25ae9SGregory Neil ShapiroTLS_Clt:laptop.example.com PERM+VERIFY:112 322340266059SGregory Neil ShapiroTLS_Rcpt:darth@endmail.org ENCR:112+CN:smtp.endmail.org 32245b0945b5SGregory Neil ShapiroTLS_Srv:safe.example.net VERIFY+CN++CITag:MyCA 32255b0945b5SGregory Neil ShapiroMyCA:/C=US/ST=CA/O=safe/CN=example.net/ OK 32265b0945b5SGregory Neil ShapiroMyCA:/C=US/ST=CA/O=secure/CN=example.net/ OK 322706f25ae9SGregory Neil Shapiro 3228602a2b1bSGregory Neil Shapiro 3229da7d7b9cSGregory Neil ShapiroTLS Options per Session 3230da7d7b9cSGregory Neil Shapiro----------------------- 3231602a2b1bSGregory Neil Shapiro 323240266059SGregory Neil ShapiroBy default STARTTLS is used whenever possible. However, there are 3233da7d7b9cSGregory Neil ShapiroMTAs with STARTTLS interoperability issues. To be able to send to 3234da7d7b9cSGregory Neil Shapiro(or receive from) those MTAs several features are available: 3235da7d7b9cSGregory Neil Shapiro 3236da7d7b9cSGregory Neil Shapiro1) Various TLS options be be set per IP/domain. 3237da7d7b9cSGregory Neil Shapiro2) STARTTLS can be turned off for specific IP addresses/domains. 3238da7d7b9cSGregory Neil Shapiro 3239da7d7b9cSGregory Neil ShapiroAbout 1): the rulesets tls_srv_features and tls_clt_features can 3240da7d7b9cSGregory Neil Shapirobe used to return a (semicolon separated) list of TLS related 3241da7d7b9cSGregory Neil Shapirooptions: 3242da7d7b9cSGregory Neil Shapiro 3243da7d7b9cSGregory Neil Shapiro- Options: compare {Server,Client}SSLOptions. 3244da7d7b9cSGregory Neil Shapiro- CipherList: same as the global option. 3245da7d7b9cSGregory Neil Shapiro- CertFile, KeyFile: {Server,Client}{Cert,Key}File 32465b0945b5SGregory Neil Shapiro- Flags: see doc/op/op.me for details. 3247da7d7b9cSGregory Neil Shapiro 32482fb4f839SGregory Neil ShapiroIf FEATURE(`tls_session_features') and FEATURE(`access_db') are 32492fb4f839SGregory Neil Shapiroused, then default rulesets are activated which look up entries in 32502fb4f839SGregory Neil Shapirothe access map with the tags TLS_Srv_features and TLS_Clt_features, 32512fb4f839SGregory Neil Shapirorespectively. For example, these entries: 3252da7d7b9cSGregory Neil Shapiro 3253da7d7b9cSGregory Neil ShapiroTLS_Srv_features:10.0.2.4 CipherList=MEDIUM+aRSA; 3254da7d7b9cSGregory Neil ShapiroTLS_Clt_features:10.1.0.1 Options=SSL_OP_NO_TLSv1_2; CipherList=ALL:-EXPORT 3255da7d7b9cSGregory Neil Shapiro 3256da7d7b9cSGregory Neil Shapirospecify a cipherlist with MEDIUM strength ciphers that use RSA 3257da7d7b9cSGregory Neil Shapirocertificates only for the client with the IP address 10.0.2.4, 3258da7d7b9cSGregory Neil Shapiroand turn off TLSv1.2 when connecting to the server with the IP 3259da7d7b9cSGregory Neil Shapiroaddress 10.1.0.1 as well as setting a specific cipherlist. 3260da7d7b9cSGregory Neil ShapiroIf FEATURE(`tls_session_features') is not used the user can provide 3261da7d7b9cSGregory Neil Shapirotheir own rulesets which must return the appropriate data. 3262da7d7b9cSGregory Neil ShapiroIf the rulesets are not defined or do not return a value, the 3263da7d7b9cSGregory Neil Shapirodefault TLS options are not modified. 3264da7d7b9cSGregory Neil Shapiro 32652fb4f839SGregory Neil ShapiroAbout 2): the rulesets try_tls, srv_features, and clt_features can 32662fb4f839SGregory Neil Shapirobe used together with the access map. Entries for the access map 32672fb4f839SGregory Neil Shapiromust be tagged with Try_TLS, Srv_Features, Clt_Features and refer 3268*d39bd2c1SGregory Neil Shapiroto the hostname or IP address of the connecting system (the latter 3269*d39bd2c1SGregory Neil Shapirois not available for clt_features). A default case can be specified 3270*d39bd2c1SGregory Neil Shapiroby using just the tag. For example, the following entries in the 3271*d39bd2c1SGregory Neil Shapiroaccess map: 3272602a2b1bSGregory Neil Shapiro 327340266059SGregory Neil Shapiro Try_TLS:broken.server NO 327440266059SGregory Neil Shapiro Srv_Features:my.domain v 327540266059SGregory Neil Shapiro Srv_Features: V 32762fb4f839SGregory Neil Shapiro Clt_Features:broken.sts M 3277602a2b1bSGregory Neil Shapiro 327840266059SGregory Neil Shapirowill turn off STARTTLS when sending to broken.server (or any host 32792fb4f839SGregory Neil Shapiroin that domain), request a client certificate during the TLS handshake 32802fb4f839SGregory Neil Shapiroonly for hosts in my.domain, and disable MTA-STS for broken.sts. 32812fb4f839SGregory Neil ShapiroThe valid entries on the RHS for Srv_Features and Clt_Features are 32822fb4f839SGregory Neil Shapirolisted in the Sendmail Installation and Operations Guide. 3283602a2b1bSGregory Neil Shapiro 3284602a2b1bSGregory Neil Shapiro 328506f25ae9SGregory Neil ShapiroReceived: Header 328640266059SGregory Neil Shapiro---------------- 328706f25ae9SGregory Neil Shapiro 328806f25ae9SGregory Neil ShapiroThe Received: header reveals whether STARTTLS has been used. It contains an 328906f25ae9SGregory Neil Shapiroextra line: 329006f25ae9SGregory Neil Shapiro 329140266059SGregory Neil Shapiro(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify}) 329240266059SGregory Neil Shapiro 329306f25ae9SGregory Neil Shapiro 329442e5d165SGregory Neil Shapiro+---------------------+ 329506f25ae9SGregory Neil Shapiro| SMTP AUTHENTICATION | 329642e5d165SGregory Neil Shapiro+---------------------+ 329706f25ae9SGregory Neil Shapiro 329806f25ae9SGregory Neil ShapiroThe macros ${auth_authen}, ${auth_author}, and ${auth_type} can be 329906f25ae9SGregory Neil Shapiroused in anti-relay rulesets to allow relaying for those users that 330006f25ae9SGregory Neil Shapiroauthenticated themselves. A very simple example is: 330106f25ae9SGregory Neil Shapiro 330206f25ae9SGregory Neil ShapiroSLocal_check_rcpt 330306f25ae9SGregory Neil ShapiroR$* $: $&{auth_type} 330406f25ae9SGregory Neil ShapiroR$+ $# OK 330506f25ae9SGregory Neil Shapiro 330606f25ae9SGregory Neil Shapirowhich checks whether a user has successfully authenticated using 3307e92d3f3fSGregory Neil Shapiroany available mechanism. Depending on the setup of the Cyrus SASL 330806f25ae9SGregory Neil Shapirolibrary, more sophisticated rulesets might be required, e.g., 330906f25ae9SGregory Neil Shapiro 331006f25ae9SGregory Neil ShapiroSLocal_check_rcpt 331106f25ae9SGregory Neil ShapiroR$* $: $&{auth_type} $| $&{auth_authen} 331206f25ae9SGregory Neil ShapiroRDIGEST-MD5 $| $+@$=w $# OK 331306f25ae9SGregory Neil Shapiro 331406f25ae9SGregory Neil Shapiroto allow relaying for users that authenticated using DIGEST-MD5 331506f25ae9SGregory Neil Shapiroand have an identity in the local domains. 331606f25ae9SGregory Neil Shapiro 331740266059SGregory Neil ShapiroThe ruleset trust_auth is used to determine whether a given AUTH= 331806f25ae9SGregory Neil Shapiroparameter (that is passed to this ruleset) should be trusted. This 331906f25ae9SGregory Neil Shapiroruleset may make use of the other ${auth_*} macros. Only if the 332006f25ae9SGregory Neil Shapiroruleset resolves to the error mailer, the AUTH= parameter is not 332106f25ae9SGregory Neil Shapirotrusted. A user supplied ruleset Local_trust_auth can be written 332206f25ae9SGregory Neil Shapiroto modify the default behavior, which only trust the AUTH= 332306f25ae9SGregory Neil Shapiroparameter if it is identical to the authenticated user. 332406f25ae9SGregory Neil Shapiro 332506f25ae9SGregory Neil ShapiroPer default, relaying is allowed for any user who authenticated 332606f25ae9SGregory Neil Shapirovia a "trusted" mechanism, i.e., one that is defined via 332706f25ae9SGregory Neil ShapiroTRUST_AUTH_MECH(`list of mechanisms') 3328193538b7SGregory Neil ShapiroFor example: 3329193538b7SGregory Neil ShapiroTRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5') 333006f25ae9SGregory Neil Shapiro 333106f25ae9SGregory Neil ShapiroIf the selected mechanism provides a security layer the number of 333206f25ae9SGregory Neil Shapirobits used for the key of the symmetric cipher is stored in the 333306f25ae9SGregory Neil Shapiromacro ${auth_ssf}. 3334c2aa98e2SPeter Wemm 3335e92d3f3fSGregory Neil ShapiroProviding SMTP AUTH Data when sendmail acts as Client 3336e92d3f3fSGregory Neil Shapiro----------------------------------------------------- 3337e92d3f3fSGregory Neil Shapiro 333840266059SGregory Neil ShapiroIf sendmail acts as client, it needs some information how to 333940266059SGregory Neil Shapiroauthenticate against another MTA. This information can be provided 334040266059SGregory Neil Shapiroby the ruleset authinfo or by the option DefaultAuthInfo. The 334140266059SGregory Neil Shapiroauthinfo ruleset looks up {server_name} using the tag AuthInfo: in 334240266059SGregory Neil Shapirothe access map. If no entry is found, {server_addr} is looked up 334340266059SGregory Neil Shapiroin the same way and finally just the tag AuthInfo: to provide 3344d9986b26SGregory Neil Shapirodefault values. Note: searches for domain parts or IP nets are 3345d9986b26SGregory Neil Shapiroonly performed if the access map is used; if the authinfo feature 3346d9986b26SGregory Neil Shapirois used then only up to three lookups are performed (two exact 3347d9986b26SGregory Neil Shapiromatches, one default). 334840266059SGregory Neil Shapiro 3349e92d3f3fSGregory Neil ShapiroNote: If your daemon does client authentication when sending, and 3350e92d3f3fSGregory Neil Shapiroif it uses either PLAIN or LOGIN authentication, then you *must* 3351e92d3f3fSGregory Neil Shapiroprevent ordinary users from seeing verbose output. Do NOT install 3352e92d3f3fSGregory Neil Shapirosendmail set-user-ID. Use PrivacyOptions to turn off verbose output 3353e92d3f3fSGregory Neil Shapiro("goaway" works for this). 3354e92d3f3fSGregory Neil Shapiro 335540266059SGregory Neil ShapiroNotice: the default configuration file causes the option DefaultAuthInfo 335640266059SGregory Neil Shapiroto fail since the ruleset authinfo is in the .cf file. If you really 335740266059SGregory Neil Shapirowant to use DefaultAuthInfo (it is deprecated) then you have to 335840266059SGregory Neil Shapiroremove the ruleset. 335940266059SGregory Neil Shapiro 336040266059SGregory Neil ShapiroThe RHS for an AuthInfo: entry in the access map should consists of a 336140266059SGregory Neil Shapirolist of tokens, each of which has the form: "TDstring" (including 336240266059SGregory Neil Shapirothe quotes). T is a tag which describes the item, D is a delimiter, 336340266059SGregory Neil Shapiroeither ':' for simple text or '=' for a base64 encoded string. 336440266059SGregory Neil ShapiroValid values for the tag are: 336540266059SGregory Neil Shapiro 336640266059SGregory Neil Shapiro U user (authorization) id 336740266059SGregory Neil Shapiro I authentication id 336840266059SGregory Neil Shapiro P password 336940266059SGregory Neil Shapiro R realm 337040266059SGregory Neil Shapiro M list of mechanisms delimited by spaces 337140266059SGregory Neil Shapiro 337240266059SGregory Neil ShapiroExample entries are: 337340266059SGregory Neil Shapiro 337440266059SGregory Neil ShapiroAuthInfo:other.dom "U:user" "I:user" "P:secret" "R:other.dom" "M:DIGEST-MD5" 3375d9986b26SGregory Neil ShapiroAuthInfo:host.more.dom "U:user" "P=c2VjcmV0" 337640266059SGregory Neil Shapiro 3377d9986b26SGregory Neil ShapiroUser id or authentication id must exist as well as the password. All 337840266059SGregory Neil Shapiroother entries have default values. If one of user or authentication 337940266059SGregory Neil Shapiroid is missing, the existing value is used for the missing item. 338040266059SGregory Neil ShapiroIf "R:" is not specified, realm defaults to $j. The list of mechanisms 338140266059SGregory Neil Shapirodefaults to those specified by AuthMechanisms. 338240266059SGregory Neil Shapiro 338340266059SGregory Neil ShapiroSince this map contains sensitive information, either the access 338440266059SGregory Neil Shapiromap must be unreadable by everyone but root (or the trusted user) 338540266059SGregory Neil Shapiroor FEATURE(`authinfo') must be used which provides a separate map. 338640266059SGregory Neil ShapiroNotice: It is not checked whether the map is actually 338740266059SGregory Neil Shapirogroup/world-unreadable, this is left to the user. 338840266059SGregory Neil Shapiro 3389*d39bd2c1SGregory Neil Shapiro 3390c2aa98e2SPeter Wemm+--------------------------------+ 3391c2aa98e2SPeter Wemm| ADDING NEW MAILERS OR RULESETS | 3392c2aa98e2SPeter Wemm+--------------------------------+ 3393c2aa98e2SPeter Wemm 3394c2aa98e2SPeter WemmSometimes you may need to add entirely new mailers or rulesets. They 3395c2aa98e2SPeter Wemmshould be introduced with the constructs MAILER_DEFINITIONS and 3396c2aa98e2SPeter WemmLOCAL_RULESETS respectively. For example: 3397c2aa98e2SPeter Wemm 3398c2aa98e2SPeter Wemm MAILER_DEFINITIONS 3399c2aa98e2SPeter Wemm Mmymailer, ... 3400c2aa98e2SPeter Wemm ... 3401c2aa98e2SPeter Wemm 3402c2aa98e2SPeter Wemm LOCAL_RULESETS 3403c2aa98e2SPeter Wemm Smyruleset 3404c2aa98e2SPeter Wemm ... 3405c2aa98e2SPeter Wemm 34062fb4f839SGregory Neil ShapiroLocal additions for the rulesets srv_features, clt_features, try_tls, 34072fb4f839SGregory Neil Shapirotls_rcpt, tls_client, and tls_server can be made using LOCAL_SRV_FEATURES, 34082fb4f839SGregory Neil ShapiroLOCAL_CLT_FEATURES, LOCAL_TRY_TLS, LOCAL_TLS_RCPT, LOCAL_TLS_CLIENT, 34092fb4f839SGregory Neil Shapiroand LOCAL_TLS_SERVER, respectively. For example, to add a local 34102fb4f839SGregory Neil Shapiroruleset that decides whether to try STARTTLS in a sendmail client, use: 3411c2aa98e2SPeter Wemm 341240266059SGregory Neil Shapiro LOCAL_TRY_TLS 341340266059SGregory Neil Shapiro R... 341440266059SGregory Neil Shapiro 341540266059SGregory Neil ShapiroNote: you don't need to add a name for the ruleset, it is implicitly 341640266059SGregory Neil Shapirodefined by using the appropriate macro. 341740266059SGregory Neil Shapiro 341840266059SGregory Neil Shapiro 3419193538b7SGregory Neil Shapiro+-------------------------+ 3420193538b7SGregory Neil Shapiro| ADDING NEW MAIL FILTERS | 3421193538b7SGregory Neil Shapiro+-------------------------+ 342206f25ae9SGregory Neil Shapiro 342306f25ae9SGregory Neil ShapiroSendmail supports mail filters to filter incoming SMTP messages according 342406f25ae9SGregory Neil Shapiroto the "Sendmail Mail Filter API" documentation. These filters can be 342506f25ae9SGregory Neil Shapiroconfigured in your mc file using the two commands: 342606f25ae9SGregory Neil Shapiro 342706f25ae9SGregory Neil Shapiro MAIL_FILTER(`name', `equates') 342806f25ae9SGregory Neil Shapiro INPUT_MAIL_FILTER(`name', `equates') 342906f25ae9SGregory Neil Shapiro 343006f25ae9SGregory Neil ShapiroThe first command, MAIL_FILTER(), simply defines a filter with the given 343106f25ae9SGregory Neil Shapironame and equates. For example: 343206f25ae9SGregory Neil Shapiro 343306f25ae9SGregory Neil Shapiro MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 343406f25ae9SGregory Neil Shapiro 343506f25ae9SGregory Neil ShapiroThis creates the equivalent sendmail.cf entry: 343606f25ae9SGregory Neil Shapiro 343706f25ae9SGregory Neil Shapiro Xarchive, S=local:/var/run/archivesock, F=R 343806f25ae9SGregory Neil Shapiro 343906f25ae9SGregory Neil ShapiroThe INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER 344006f25ae9SGregory Neil Shapirobut also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name 344106f25ae9SGregory Neil Shapiroof the filter such that the filter will actually be called by sendmail. 344206f25ae9SGregory Neil Shapiro 344306f25ae9SGregory Neil ShapiroFor example, the two commands: 344406f25ae9SGregory Neil Shapiro 344506f25ae9SGregory Neil Shapiro INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 344606f25ae9SGregory Neil Shapiro INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') 344706f25ae9SGregory Neil Shapiro 344806f25ae9SGregory Neil Shapiroare equivalent to the three commands: 344906f25ae9SGregory Neil Shapiro 345006f25ae9SGregory Neil Shapiro MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 345106f25ae9SGregory Neil Shapiro MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') 345206f25ae9SGregory Neil Shapiro define(`confINPUT_MAIL_FILTERS', `archive, spamcheck') 345306f25ae9SGregory Neil Shapiro 345406f25ae9SGregory Neil ShapiroIn general, INPUT_MAIL_FILTER() should be used unless you need to define 345506f25ae9SGregory Neil Shapiromore filters than you want to use for `confINPUT_MAIL_FILTERS'. 345606f25ae9SGregory Neil Shapiro 345706f25ae9SGregory Neil ShapiroNote that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER() 345806f25ae9SGregory Neil Shapirocommands will clear the list created by the prior INPUT_MAIL_FILTER() 345906f25ae9SGregory Neil Shapirocommands. 346006f25ae9SGregory Neil Shapiro 346106f25ae9SGregory Neil Shapiro 346240266059SGregory Neil Shapiro+-------------------------+ 346340266059SGregory Neil Shapiro| QUEUE GROUP DEFINITIONS | 346440266059SGregory Neil Shapiro+-------------------------+ 346540266059SGregory Neil Shapiro 346640266059SGregory Neil ShapiroIn addition to the queue directory (which is the default queue group 346740266059SGregory Neil Shapirocalled "mqueue"), sendmail can deal with multiple queue groups, which 346840266059SGregory Neil Shapiroare collections of queue directories with the same behaviour. Queue 346940266059SGregory Neil Shapirogroups can be defined using the command: 347040266059SGregory Neil Shapiro 347140266059SGregory Neil Shapiro QUEUE_GROUP(`name', `equates') 347240266059SGregory Neil Shapiro 347340266059SGregory Neil ShapiroFor details about queue groups, please see doc/op/op.{me,ps,txt}. 347440266059SGregory Neil Shapiro 3475*d39bd2c1SGregory Neil Shapiro 3476c2aa98e2SPeter Wemm+-------------------------------+ 3477c2aa98e2SPeter Wemm| NON-SMTP BASED CONFIGURATIONS | 3478c2aa98e2SPeter Wemm+-------------------------------+ 3479c2aa98e2SPeter Wemm 348006f25ae9SGregory Neil ShapiroThese configuration files are designed primarily for use by 348106f25ae9SGregory Neil ShapiroSMTP-based sites. They may not be well tuned for UUCP-only or 3482c2aa98e2SPeter WemmUUCP-primarily nodes (the latter is defined as a small local net 348306f25ae9SGregory Neil Shapiroconnected to the rest of the world via UUCP). However, there is 348406f25ae9SGregory Neil Shapiroone hook to handle some special cases. 3485c2aa98e2SPeter Wemm 3486c2aa98e2SPeter WemmYou can define a ``smart host'' that understands a richer address syntax 3487c2aa98e2SPeter Wemmusing: 3488c2aa98e2SPeter Wemm 34892e43090eSPeter Wemm define(`SMART_HOST', `mailer:hostname') 3490c2aa98e2SPeter Wemm 3491c2aa98e2SPeter WemmIn this case, the ``mailer:'' defaults to "relay". Any messages that 3492c2aa98e2SPeter Wemmcan't be handled using the usual UUCP rules are passed to this host. 3493c2aa98e2SPeter Wemm 3494c2aa98e2SPeter WemmIf you are on a local SMTP-based net that connects to the outside 3495c2aa98e2SPeter Wemmworld via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules. 3496c2aa98e2SPeter WemmFor example: 3497c2aa98e2SPeter Wemm 349806f25ae9SGregory Neil Shapiro define(`SMART_HOST', `uucp-new:uunet') 3499c2aa98e2SPeter Wemm LOCAL_NET_CONFIG 3500c2aa98e2SPeter Wemm R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3 3501c2aa98e2SPeter Wemm 3502605302a5SGregory Neil ShapiroThis will cause all names that end in your domain name ($m) to be sent 3503605302a5SGregory Neil Shapirovia SMTP; anything else will be sent via uucp-new (smart UUCP) to uunet. 35042e43090eSPeter WemmIf you have FEATURE(`nocanonify'), you may need to omit the dots after 3505c2aa98e2SPeter Wemmthe $m. If you are running a local DNS inside your domain which is 3506c2aa98e2SPeter Wemmnot otherwise connected to the outside world, you probably want to 3507c2aa98e2SPeter Wemmuse: 3508c2aa98e2SPeter Wemm 35092e43090eSPeter Wemm define(`SMART_HOST', `smtp:fire.wall.com') 3510c2aa98e2SPeter Wemm LOCAL_NET_CONFIG 3511c2aa98e2SPeter Wemm R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3 3512c2aa98e2SPeter Wemm 3513c2aa98e2SPeter WemmThat is, send directly only to things you found in your DNS lookup; 3514c2aa98e2SPeter Wemmanything else goes through SMART_HOST. 3515c2aa98e2SPeter Wemm 3516c2aa98e2SPeter WemmYou may need to turn off the anti-spam rules in order to accept 35172e43090eSPeter WemmUUCP mail with FEATURE(`promiscuous_relay') and 35182e43090eSPeter WemmFEATURE(`accept_unresolvable_domains'). 3519c2aa98e2SPeter Wemm 3520c2aa98e2SPeter Wemm 3521c2aa98e2SPeter Wemm+-----------+ 3522c2aa98e2SPeter Wemm| WHO AM I? | 3523c2aa98e2SPeter Wemm+-----------+ 3524c2aa98e2SPeter Wemm 3525c2aa98e2SPeter WemmNormally, the $j macro is automatically defined to be your fully 3526c2aa98e2SPeter Wemmqualified domain name (FQDN). Sendmail does this by getting your 3527c2aa98e2SPeter Wemmhost name using gethostname and then calling gethostbyname on the 3528c2aa98e2SPeter Wemmresult. For example, in some environments gethostname returns 3529c2aa98e2SPeter Wemmonly the root of the host name (such as "foo"); gethostbyname is 3530c2aa98e2SPeter Wemmsupposed to return the FQDN ("foo.bar.com"). In some (fairly rare) 3531c2aa98e2SPeter Wemmcases, gethostbyname may fail to return the FQDN. In this case 3532c2aa98e2SPeter Wemmyou MUST define confDOMAIN_NAME to be your fully qualified domain 3533c2aa98e2SPeter Wemmname. This is usually done using: 3534c2aa98e2SPeter Wemm 3535c2aa98e2SPeter Wemm Dmbar.com 3536c2aa98e2SPeter Wemm define(`confDOMAIN_NAME', `$w.$m')dnl 3537c2aa98e2SPeter Wemm 3538c2aa98e2SPeter Wemm 353906f25ae9SGregory Neil Shapiro+-----------------------------------+ 354006f25ae9SGregory Neil Shapiro| ACCEPTING MAIL FOR MULTIPLE NAMES | 354106f25ae9SGregory Neil Shapiro+-----------------------------------+ 354206f25ae9SGregory Neil Shapiro 354306f25ae9SGregory Neil ShapiroIf your host is known by several different names, you need to augment 354406f25ae9SGregory Neil Shapiroclass {w}. This is a list of names by which your host is known, and 354506f25ae9SGregory Neil Shapiroanything sent to an address using a host name in this list will be 354606f25ae9SGregory Neil Shapirotreated as local mail. You can do this in two ways: either create the 354706f25ae9SGregory Neil Shapirofile /etc/mail/local-host-names containing a list of your aliases (one per 354806f25ae9SGregory Neil Shapiroline), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add 354906f25ae9SGregory Neil Shapiro``LOCAL_DOMAIN(`alias.host.name')''. Be sure you use the fully-qualified 355006f25ae9SGregory Neil Shapironame of the host, rather than a short name. 355106f25ae9SGregory Neil Shapiro 355206f25ae9SGregory Neil ShapiroIf you want to have different address in different domains, take 355306f25ae9SGregory Neil Shapiroa look at the virtusertable feature, which is also explained at 355406f25ae9SGregory Neil Shapirohttp://www.sendmail.org/virtual-hosting.html 355506f25ae9SGregory Neil Shapiro 355606f25ae9SGregory Neil Shapiro 3557c2aa98e2SPeter Wemm+--------------------+ 3558c2aa98e2SPeter Wemm| USING MAILERTABLES | 3559c2aa98e2SPeter Wemm+--------------------+ 3560c2aa98e2SPeter Wemm 35612e43090eSPeter WemmTo use FEATURE(`mailertable'), you will have to create an external 3562c2aa98e2SPeter Wemmdatabase containing the routing information for various domains. 3563c2aa98e2SPeter WemmFor example, a mailertable file in text format might be: 3564c2aa98e2SPeter Wemm 3565c2aa98e2SPeter Wemm .my.domain xnet:%1.my.domain 356606f25ae9SGregory Neil Shapiro uuhost1.my.domain uucp-new:uuhost1 3567c2aa98e2SPeter Wemm .bitnet smtp:relay.bit.net 3568c2aa98e2SPeter Wemm 356906f25ae9SGregory Neil ShapiroThis should normally be stored in /etc/mail/mailertable. The actual 3570c2aa98e2SPeter Wemmdatabase version of the mailertable is built using: 3571c2aa98e2SPeter Wemm 357206f25ae9SGregory Neil Shapiro makemap hash /etc/mail/mailertable < /etc/mail/mailertable 3573c2aa98e2SPeter Wemm 3574c2aa98e2SPeter WemmThe semantics are simple. Any LHS entry that does not begin with 3575c2aa98e2SPeter Wemma dot matches the full host name indicated. LHS entries beginning 357642e5d165SGregory Neil Shapirowith a dot match anything ending with that domain name (including 357742e5d165SGregory Neil Shapirothe leading dot) -- that is, they can be thought of as having a 357842e5d165SGregory Neil Shapiroleading ".+" regular expression pattern for a non-empty sequence of 357942e5d165SGregory Neil Shapirocharacters. Matching is done in order of most-to-least qualified 358042e5d165SGregory Neil Shapiro-- for example, even though ".my.domain" is listed first in the 358142e5d165SGregory Neil Shapiroabove example, an entry of "uuhost1.my.domain" will match the second 358242e5d165SGregory Neil Shapiroentry since it is more explicit. Note: e-mail to "user@my.domain" 358342e5d165SGregory Neil Shapirodoes not match any entry in the above table. You need to have 358442e5d165SGregory Neil Shapirosomething like: 358506f25ae9SGregory Neil Shapiro 358606f25ae9SGregory Neil Shapiro my.domain esmtp:host.my.domain 3587c2aa98e2SPeter Wemm 3588c2aa98e2SPeter WemmThe RHS should always be a "mailer:host" pair. The mailer is the 358940266059SGregory Neil Shapiroconfiguration name of a mailer (that is, an M line in the 3590c2aa98e2SPeter Wemmsendmail.cf file). The "host" will be the hostname passed to 3591c2aa98e2SPeter Wemmthat mailer. In domain-based matches (that is, those with leading 3592c2aa98e2SPeter Wemmdots) the "%1" may be used to interpolate the wildcarded part of 3593c2aa98e2SPeter Wemmthe host name. For example, the first line above sends everything 3594c2aa98e2SPeter Wemmaddressed to "anything.my.domain" to that same host name, but using 3595c2aa98e2SPeter Wemmthe (presumably experimental) xnet mailer. 3596c2aa98e2SPeter Wemm 3597c2aa98e2SPeter WemmIn some cases you may want to temporarily turn off MX records, 3598c2aa98e2SPeter Wemmparticularly on gateways. For example, you may want to MX 3599c2aa98e2SPeter Wemmeverything in a domain to one machine that then forwards it 3600c2aa98e2SPeter Wemmdirectly. To do this, you might use the DNS configuration: 3601c2aa98e2SPeter Wemm 3602c2aa98e2SPeter Wemm *.domain. IN MX 0 relay.machine 3603c2aa98e2SPeter Wemm 3604c2aa98e2SPeter Wemmand on relay.machine use the mailertable: 3605c2aa98e2SPeter Wemm 3606c2aa98e2SPeter Wemm .domain smtp:[gateway.domain] 3607c2aa98e2SPeter Wemm 3608c2aa98e2SPeter WemmThe [square brackets] turn off MX records for this host only. 3609c2aa98e2SPeter WemmIf you didn't do this, the mailertable would use the MX record 3610a7ec597cSGregory Neil Shapiroagain, which would give you an MX loop. Note that the use of 3611a7ec597cSGregory Neil Shapirowildcard MX records is almost always a bad idea. Please avoid 3612a7ec597cSGregory Neil Shapirousing them if possible. 3613c2aa98e2SPeter Wemm 3614c2aa98e2SPeter Wemm 3615c2aa98e2SPeter Wemm+--------------------------------+ 3616c2aa98e2SPeter Wemm| USING USERDB TO MAP FULL NAMES | 3617c2aa98e2SPeter Wemm+--------------------------------+ 3618c2aa98e2SPeter Wemm 3619c2aa98e2SPeter WemmThe user database was not originally intended for mapping full names 3620c2aa98e2SPeter Wemmto login names (e.g., Eric.Allman => eric), but some people are using 362106f25ae9SGregory Neil Shapiroit that way. (it is recommended that you set up aliases for this 3622c2aa98e2SPeter Wemmpurpose instead -- since you can specify multiple alias files, this 3623c2aa98e2SPeter Wemmis fairly easy.) The intent was to locate the default maildrop at 3624c2aa98e2SPeter Wemma site, but allow you to override this by sending to a specific host. 3625c2aa98e2SPeter Wemm 3626c2aa98e2SPeter WemmIf you decide to set up the user database in this fashion, it is 36272e43090eSPeter Wemmimperative that you not use FEATURE(`stickyhost') -- otherwise, 3628c2aa98e2SPeter Wemme-mail sent to Full.Name@local.host.name will be rejected. 3629c2aa98e2SPeter Wemm 3630c2aa98e2SPeter WemmTo build the internal form of the user database, use: 3631c2aa98e2SPeter Wemm 363206f25ae9SGregory Neil Shapiro makemap btree /etc/mail/userdb < /etc/mail/userdb.txt 3633c2aa98e2SPeter Wemm 363406f25ae9SGregory Neil ShapiroAs a general rule, it is an extremely bad idea to using full names 363506f25ae9SGregory Neil Shapiroas e-mail addresses, since they are not in any sense unique. For 363642e5d165SGregory Neil Shapiroexample, the UNIX software-development community has at least two 363706f25ae9SGregory Neil Shapirowell-known Peter Deutsches, and at one time Bell Labs had two 363806f25ae9SGregory Neil ShapiroStephen R. Bournes with offices along the same hallway. Which one 363906f25ae9SGregory Neil Shapirowill be forced to suffer the indignity of being Stephen_R_Bourne_2? 364006f25ae9SGregory Neil ShapiroThe less famous of the two, or the one that was hired later? 3641c2aa98e2SPeter Wemm 3642c2aa98e2SPeter WemmFinger should handle full names (and be fuzzy). Mail should use 364306f25ae9SGregory Neil Shapirohandles, and not be fuzzy. 3644c2aa98e2SPeter Wemm 3645c2aa98e2SPeter Wemm 3646c2aa98e2SPeter Wemm+--------------------------------+ 3647c2aa98e2SPeter Wemm| MISCELLANEOUS SPECIAL FEATURES | 3648c2aa98e2SPeter Wemm+--------------------------------+ 3649c2aa98e2SPeter Wemm 3650c2aa98e2SPeter WemmPlussed users 3651c2aa98e2SPeter Wemm Sometimes it is convenient to merge configuration on a 3652c2aa98e2SPeter Wemm centralized mail machine, for example, to forward all 3653c2aa98e2SPeter Wemm root mail to a mail server. In this case it might be 3654c2aa98e2SPeter Wemm useful to be able to treat the root addresses as a class 3655c2aa98e2SPeter Wemm of addresses with subtle differences. You can do this 3656c2aa98e2SPeter Wemm using plussed users. For example, a client might include 3657c2aa98e2SPeter Wemm the alias: 3658c2aa98e2SPeter Wemm 3659c2aa98e2SPeter Wemm root: root+client1@server 3660c2aa98e2SPeter Wemm 3661c2aa98e2SPeter Wemm On the server, this will match an alias for "root+client1". 3662c2aa98e2SPeter Wemm If that is not found, the alias "root+*" will be tried, 3663c2aa98e2SPeter Wemm then "root". 3664c2aa98e2SPeter Wemm 3665c2aa98e2SPeter Wemm 3666c2aa98e2SPeter Wemm+----------------+ 3667c2aa98e2SPeter Wemm| SECURITY NOTES | 3668c2aa98e2SPeter Wemm+----------------+ 3669c2aa98e2SPeter Wemm 3670c2aa98e2SPeter WemmA lot of sendmail security comes down to you. Sendmail 8 is much 3671c2aa98e2SPeter Wemmmore careful about checking for security problems than previous 3672c2aa98e2SPeter Wemmversions, but there are some things that you still need to watch 3673c2aa98e2SPeter Wemmfor. In particular: 3674c2aa98e2SPeter Wemm 367594c01205SGregory Neil Shapiro* Make sure the aliases file is not writable except by trusted 3676c2aa98e2SPeter Wemm system personnel. This includes both the text and database 3677c2aa98e2SPeter Wemm version. 3678c2aa98e2SPeter Wemm 3679c2aa98e2SPeter Wemm* Make sure that other files that sendmail reads, such as the 3680c2aa98e2SPeter Wemm mailertable, are only writable by trusted system personnel. 3681c2aa98e2SPeter Wemm 3682c2aa98e2SPeter Wemm* The queue directory should not be world writable PARTICULARLY 3683c2aa98e2SPeter Wemm if your system allows "file giveaways" (that is, if a non-root 3684c2aa98e2SPeter Wemm user can chown any file they own to any other user). 3685c2aa98e2SPeter Wemm 36865b0945b5SGregory Neil Shapiro* If your system allows file giveaways, DO NOT create a publicly 3687c2aa98e2SPeter Wemm writable directory for forward files. This will allow anyone 3688c2aa98e2SPeter Wemm to steal anyone else's e-mail. Instead, create a script that 3689c2aa98e2SPeter Wemm copies the .forward file from users' home directories once a 3690c2aa98e2SPeter Wemm night (if you want the non-NFS-mounted forward directory). 3691c2aa98e2SPeter Wemm 3692c2aa98e2SPeter Wemm* If your system allows file giveaways, you'll find that 3693c2aa98e2SPeter Wemm sendmail is much less trusting of :include: files -- in 3694c2aa98e2SPeter Wemm particular, you'll have to have /SENDMAIL/ANY/SHELL/ in 3695c2aa98e2SPeter Wemm /etc/shells before they will be trusted (that is, before 3696c2aa98e2SPeter Wemm files and programs listed in them will be honored). 3697c2aa98e2SPeter Wemm 3698c2aa98e2SPeter WemmIn general, file giveaways are a mistake -- if you can turn them 369906f25ae9SGregory Neil Shapirooff, do so. 3700c2aa98e2SPeter Wemm 3701c2aa98e2SPeter Wemm 3702c2aa98e2SPeter Wemm+--------------------------------+ 3703c2aa98e2SPeter Wemm| TWEAKING CONFIGURATION OPTIONS | 3704c2aa98e2SPeter Wemm+--------------------------------+ 3705c2aa98e2SPeter Wemm 3706c2aa98e2SPeter WemmThere are a large number of configuration options that don't normally 3707e92d3f3fSGregory Neil Shapironeed to be changed. However, if you feel you need to tweak them, 3708e92d3f3fSGregory Neil Shapiroyou can define the following M4 variables. Note that some of these 3709e92d3f3fSGregory Neil Shapirovariables require formats that are defined in RFC 2821 or RFC 2822. 3710e92d3f3fSGregory Neil ShapiroBefore changing them you need to make sure you do not violate those 3711e92d3f3fSGregory Neil Shapiro(and other relevant) RFCs. 3712e92d3f3fSGregory Neil Shapiro 3713e92d3f3fSGregory Neil ShapiroThis list is shown in four columns: the name you define, the default 3714e92d3f3fSGregory Neil Shapirovalue for that definition, the option or macro that is affected 3715e92d3f3fSGregory Neil Shapiro(either Ox for an option or Dx for a macro), and a brief description. 3716e92d3f3fSGregory Neil ShapiroGreater detail of the semantics can be found in the Installation 3717e92d3f3fSGregory Neil Shapiroand Operations Guide. 3718c2aa98e2SPeter Wemm 3719c2aa98e2SPeter WemmSome options are likely to be deprecated in future versions -- that is, 3720c2aa98e2SPeter Wemmthe option is only included to provide back-compatibility. These are 3721c2aa98e2SPeter Wemmmarked with "*". 3722c2aa98e2SPeter Wemm 3723c2aa98e2SPeter WemmRemember that these options are M4 variables, and hence may need to 3724c2aa98e2SPeter Wemmbe quoted. In particular, arguments with commas will usually have to 3725c2aa98e2SPeter Wemmbe ``double quoted, like this phrase'' to avoid having the comma 3726c2aa98e2SPeter Wemmconfuse things. This is common for alias file definitions and for 3727c2aa98e2SPeter Wemmthe read timeout. 3728c2aa98e2SPeter Wemm 3729e92d3f3fSGregory Neil ShapiroM4 Variable Name Configuration [Default] & Description 3730c2aa98e2SPeter Wemm================ ============= ======================= 3731c2aa98e2SPeter WemmconfMAILER_NAME $n macro [MAILER-DAEMON] The sender name used 3732c2aa98e2SPeter Wemm for internally generated outgoing 3733c2aa98e2SPeter Wemm messages. 3734c2aa98e2SPeter WemmconfDOMAIN_NAME $j macro If defined, sets $j. This should 3735c2aa98e2SPeter Wemm only be done if your system cannot 3736c2aa98e2SPeter Wemm determine your local domain name, 3737c2aa98e2SPeter Wemm and then it should be set to 3738c2aa98e2SPeter Wemm $w.Foo.COM, where Foo.COM is your 3739c2aa98e2SPeter Wemm domain name. 3740c2aa98e2SPeter WemmconfCF_VERSION $Z macro If defined, this is appended to the 3741c2aa98e2SPeter Wemm configuration version name. 374240266059SGregory Neil ShapiroconfLDAP_CLUSTER ${sendmailMTACluster} macro 374340266059SGregory Neil Shapiro If defined, this is the LDAP 374440266059SGregory Neil Shapiro cluster to use for LDAP searches 374540266059SGregory Neil Shapiro as described above in ``USING LDAP 374640266059SGregory Neil Shapiro FOR ALIASES, MAPS, AND CLASSES''. 3747c2aa98e2SPeter WemmconfFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an 3748c2aa98e2SPeter Wemm internally generated From: address. 3749c2aa98e2SPeter WemmconfRECEIVED_HEADER Received: 3750c2aa98e2SPeter Wemm [$?sfrom $s $.$?_($?s$|from $.$_) 375106f25ae9SGregory Neil Shapiro $.$?{auth_type}(authenticated) 3752c2aa98e2SPeter Wemm $.by $j ($v/$Z)$?r with $r$. id $i$?u 3753c2aa98e2SPeter Wemm for $u; $|; 3754c2aa98e2SPeter Wemm $.$b] 3755c2aa98e2SPeter Wemm The format of the Received: header 3756c2aa98e2SPeter Wemm in messages passed through this host. 3757c2aa98e2SPeter Wemm It is unwise to try to change this. 3758e92d3f3fSGregory Neil ShapiroconfMESSAGEID_HEADER Message-Id: [<$t.$i@$j>] The format of an 3759e92d3f3fSGregory Neil Shapiro internally generated Message-Id: 3760e92d3f3fSGregory Neil Shapiro header. 376106f25ae9SGregory Neil ShapiroconfCW_FILE Fw class [/etc/mail/local-host-names] Name 376206f25ae9SGregory Neil Shapiro of file used to get the local 376306f25ae9SGregory Neil Shapiro additions to class {w} (local host 376406f25ae9SGregory Neil Shapiro names). 376506f25ae9SGregory Neil ShapiroconfCT_FILE Ft class [/etc/mail/trusted-users] Name of 376606f25ae9SGregory Neil Shapiro file used to get the local additions 376706f25ae9SGregory Neil Shapiro to class {t} (trusted users). 3768c2aa98e2SPeter WemmconfCR_FILE FR class [/etc/mail/relay-domains] Name of 3769c2aa98e2SPeter Wemm file used to get the local additions 377006f25ae9SGregory Neil Shapiro to class {R} (hosts allowed to relay). 3771c2aa98e2SPeter WemmconfTRUSTED_USERS Ct class [no default] Names of users to add to 3772c2aa98e2SPeter Wemm the list of trusted users. This list 3773c2aa98e2SPeter Wemm always includes root, uucp, and daemon. 37742e43090eSPeter Wemm See also FEATURE(`use_ct_file'). 377506f25ae9SGregory Neil ShapiroconfTRUSTED_USER TrustedUser [no default] Trusted user for file 377606f25ae9SGregory Neil Shapiro ownership and starting the daemon. 377706f25ae9SGregory Neil Shapiro Not to be confused with 377806f25ae9SGregory Neil Shapiro confTRUSTED_USERS (see above). 3779c2aa98e2SPeter WemmconfSMTP_MAILER - [esmtp] The mailer name used when 3780c2aa98e2SPeter Wemm SMTP connectivity is required. 378106f25ae9SGregory Neil Shapiro One of "smtp", "smtp8", 378206f25ae9SGregory Neil Shapiro "esmtp", or "dsmtp". 3783c2aa98e2SPeter WemmconfUUCP_MAILER - [uucp-old] The mailer to be used by 3784c2aa98e2SPeter Wemm default for bang-format recipient 3785c2aa98e2SPeter Wemm addresses. See also discussion of 378606f25ae9SGregory Neil Shapiro class {U}, class {Y}, and class {Z} 378706f25ae9SGregory Neil Shapiro in the MAILER(`uucp') section. 3788c2aa98e2SPeter WemmconfLOCAL_MAILER - [local] The mailer name used when 3789c2aa98e2SPeter Wemm local connectivity is required. 3790c2aa98e2SPeter Wemm Almost always "local". 3791c2aa98e2SPeter WemmconfRELAY_MAILER - [relay] The default mailer name used 3792c2aa98e2SPeter Wemm for relaying any mail (e.g., to a 3793c2aa98e2SPeter Wemm BITNET_RELAY, a SMART_HOST, or 3794c2aa98e2SPeter Wemm whatever). This can reasonably be 3795c2aa98e2SPeter Wemm "uucp-new" if you are on a 3796c2aa98e2SPeter Wemm UUCP-connected site. 3797c2aa98e2SPeter WemmconfSEVEN_BIT_INPUT SevenBitInput [False] Force input to seven bits? 3798c2aa98e2SPeter WemmconfEIGHT_BIT_HANDLING EightBitMode [pass8] 8-bit data handling 3799c2aa98e2SPeter WemmconfALIAS_WAIT AliasWait [10m] Time to wait for alias file 3800c2aa98e2SPeter Wemm rebuild until you get bored and 3801c2aa98e2SPeter Wemm decide that the apparently pending 3802c2aa98e2SPeter Wemm rebuild failed. 3803c2aa98e2SPeter WemmconfMIN_FREE_BLOCKS MinFreeBlocks [100] Minimum number of free blocks on 3804c2aa98e2SPeter Wemm queue filesystem to accept SMTP mail. 3805c2aa98e2SPeter Wemm (Prior to 8.7 this was minfree/maxsize, 3806c2aa98e2SPeter Wemm where minfree was the number of free 3807c2aa98e2SPeter Wemm blocks and maxsize was the maximum 3808c2aa98e2SPeter Wemm message size. Use confMAX_MESSAGE_SIZE 3809c2aa98e2SPeter Wemm for the second value now.) 3810c2aa98e2SPeter WemmconfMAX_MESSAGE_SIZE MaxMessageSize [infinite] The maximum size of messages 3811c2aa98e2SPeter Wemm that will be accepted (in bytes). 3812c2aa98e2SPeter WemmconfBLANK_SUB BlankSub [.] Blank (space) substitution 3813c2aa98e2SPeter Wemm character. 3814c2aa98e2SPeter WemmconfCON_EXPENSIVE HoldExpensive [False] Avoid connecting immediately 381506f25ae9SGregory Neil Shapiro to mailers marked expensive. 3816c2aa98e2SPeter WemmconfCHECKPOINT_INTERVAL CheckpointInterval 3817c2aa98e2SPeter Wemm [10] Checkpoint queue files every N 3818c2aa98e2SPeter Wemm recipients. 3819c2aa98e2SPeter WemmconfDELIVERY_MODE DeliveryMode [background] Default delivery mode. 3820c2aa98e2SPeter WemmconfERROR_MODE ErrorMode [print] Error message mode. 3821c2aa98e2SPeter WemmconfERROR_MESSAGE ErrorHeader [undefined] Error message header/file. 3822065a643dSPeter WemmconfSAVE_FROM_LINES SaveFromLine Save extra leading From_ lines. 3823c2aa98e2SPeter WemmconfTEMP_FILE_MODE TempFileMode [0600] Temporary file mode. 3824c2aa98e2SPeter WemmconfMATCH_GECOS MatchGECOS [False] Match GECOS field. 3825c2aa98e2SPeter WemmconfMAX_HOP MaxHopCount [25] Maximum hop count. 382606f25ae9SGregory Neil ShapiroconfIGNORE_DOTS* IgnoreDots [False; always False in -bs or -bd 382706f25ae9SGregory Neil Shapiro mode] Ignore dot as terminator for 382806f25ae9SGregory Neil Shapiro incoming messages? 3829c2aa98e2SPeter WemmconfBIND_OPTS ResolverOptions [undefined] Default options for DNS 3830c2aa98e2SPeter Wemm resolver. 3831c2aa98e2SPeter WemmconfMIME_FORMAT_ERRORS* SendMimeErrors [True] Send error messages as MIME- 3832c2aa98e2SPeter Wemm encapsulated messages per RFC 1344. 3833c2aa98e2SPeter WemmconfFORWARD_PATH ForwardPath [$z/.forward.$w:$z/.forward] 3834c2aa98e2SPeter Wemm The colon-separated list of places to 3835c2aa98e2SPeter Wemm search for .forward files. N.B.: see 3836c2aa98e2SPeter Wemm the Security Notes section. 3837c2aa98e2SPeter WemmconfMCI_CACHE_SIZE ConnectionCacheSize 3838c2aa98e2SPeter Wemm [2] Size of open connection cache. 3839c2aa98e2SPeter WemmconfMCI_CACHE_TIMEOUT ConnectionCacheTimeout 3840c2aa98e2SPeter Wemm [5m] Open connection cache timeout. 3841c2aa98e2SPeter WemmconfHOST_STATUS_DIRECTORY HostStatusDirectory 3842c2aa98e2SPeter Wemm [undefined] If set, host status is kept 3843c2aa98e2SPeter Wemm on disk between sendmail runs in the 3844c2aa98e2SPeter Wemm named directory tree. This need not be 3845c2aa98e2SPeter Wemm a full pathname, in which case it is 3846c2aa98e2SPeter Wemm interpreted relative to the queue 3847c2aa98e2SPeter Wemm directory. 3848c2aa98e2SPeter WemmconfSINGLE_THREAD_DELIVERY SingleThreadDelivery 3849c2aa98e2SPeter Wemm [False] If this option and the 3850c2aa98e2SPeter Wemm HostStatusDirectory option are both 3851c2aa98e2SPeter Wemm set, single thread deliveries to other 3852c2aa98e2SPeter Wemm hosts. That is, don't allow any two 3853c2aa98e2SPeter Wemm sendmails on this host to connect 3854c2aa98e2SPeter Wemm simultaneously to any other single 3855c2aa98e2SPeter Wemm host. This can slow down delivery in 3856c2aa98e2SPeter Wemm some cases, in particular since a 3857c2aa98e2SPeter Wemm cached but otherwise idle connection 3858c2aa98e2SPeter Wemm to a host will prevent other sendmails 3859c2aa98e2SPeter Wemm from connecting to the other host. 3860da7d7b9cSGregory Neil ShapiroconfUSE_COMPRESSED_IPV6_ADDRESSES 3861da7d7b9cSGregory Neil Shapiro UseCompressedIPv6Addresses 3862da7d7b9cSGregory Neil Shapiro [undefined] If set, use the compressed 3863da7d7b9cSGregory Neil Shapiro form of IPv6 addresses, such as 3864da7d7b9cSGregory Neil Shapiro IPV6:::1, instead of the uncompressed 3865da7d7b9cSGregory Neil Shapiro form, such as IPv6:0:0:0:0:0:0:0:1. 386606f25ae9SGregory Neil ShapiroconfUSE_ERRORS_TO* UseErrorsTo [False] Use the Errors-To: header to 3867c2aa98e2SPeter Wemm deliver error messages. This should 3868c2aa98e2SPeter Wemm not be necessary because of general 3869c2aa98e2SPeter Wemm acceptance of the envelope/header 3870c2aa98e2SPeter Wemm distinction. 3871c2aa98e2SPeter WemmconfLOG_LEVEL LogLevel [9] Log level. 387206f25ae9SGregory Neil ShapiroconfME_TOO MeToo [True] Include sender in group 387306f25ae9SGregory Neil Shapiro expansions. This option is 387406f25ae9SGregory Neil Shapiro deprecated and will be removed from 387506f25ae9SGregory Neil Shapiro a future version. 3876c2aa98e2SPeter WemmconfCHECK_ALIASES CheckAliases [False] Check RHS of aliases when 3877c2aa98e2SPeter Wemm running newaliases. Since this does 3878c2aa98e2SPeter Wemm DNS lookups on every address, it can 3879c2aa98e2SPeter Wemm slow down the alias rebuild process 3880c2aa98e2SPeter Wemm considerably on large alias files. 3881c2aa98e2SPeter WemmconfOLD_STYLE_HEADERS* OldStyleHeaders [True] Assume that headers without 3882c2aa98e2SPeter Wemm special chars are old style. 3883c2aa98e2SPeter WemmconfPRIVACY_FLAGS PrivacyOptions [authwarnings] Privacy flags. 3884c2aa98e2SPeter WemmconfCOPY_ERRORS_TO PostmasterCopy [undefined] Address for additional 3885c2aa98e2SPeter Wemm copies of all error messages. 3886c2aa98e2SPeter WemmconfQUEUE_FACTOR QueueFactor [600000] Slope of queue-only function. 388740266059SGregory Neil ShapiroconfQUEUE_FILE_MODE QueueFileMode [undefined] Default permissions for 388840266059SGregory Neil Shapiro queue files (octal). If not set, 388940266059SGregory Neil Shapiro sendmail uses 0600 unless its real 389040266059SGregory Neil Shapiro and effective uid are different in 389140266059SGregory Neil Shapiro which case it uses 0644. 3892c2aa98e2SPeter WemmconfDONT_PRUNE_ROUTES DontPruneRoutes [False] Don't prune down route-addr 3893c2aa98e2SPeter Wemm syntax addresses to the minimum 3894c2aa98e2SPeter Wemm possible. 3895c2aa98e2SPeter WemmconfSAFE_QUEUE* SuperSafe [True] Commit all messages to disk 3896c2aa98e2SPeter Wemm before forking. 3897c2aa98e2SPeter WemmconfTO_INITIAL Timeout.initial [5m] The timeout waiting for a response 3898c2aa98e2SPeter Wemm on the initial connect. 3899c2aa98e2SPeter WemmconfTO_CONNECT Timeout.connect [0] The timeout waiting for an initial 3900c2aa98e2SPeter Wemm connect() to complete. This can only 3901c2aa98e2SPeter Wemm shorten connection timeouts; the kernel 3902c2aa98e2SPeter Wemm silently enforces an absolute maximum 3903c2aa98e2SPeter Wemm (which varies depending on the system). 3904c2aa98e2SPeter WemmconfTO_ICONNECT Timeout.iconnect 3905c2aa98e2SPeter Wemm [undefined] Like Timeout.connect, but 3906c2aa98e2SPeter Wemm applies only to the very first attempt 3907c2aa98e2SPeter Wemm to connect to a host in a message. 3908c2aa98e2SPeter Wemm This allows a single very fast pass 3909c2aa98e2SPeter Wemm followed by more careful delivery 3910c2aa98e2SPeter Wemm attempts in the future. 391140266059SGregory Neil ShapiroconfTO_ACONNECT Timeout.aconnect 391240266059SGregory Neil Shapiro [0] The overall timeout waiting for 391340266059SGregory Neil Shapiro all connection for a single delivery 391440266059SGregory Neil Shapiro attempt to succeed. If 0, no overall 391540266059SGregory Neil Shapiro limit is applied. 3916c2aa98e2SPeter WemmconfTO_HELO Timeout.helo [5m] The timeout waiting for a response 3917c2aa98e2SPeter Wemm to a HELO or EHLO command. 3918c2aa98e2SPeter WemmconfTO_MAIL Timeout.mail [10m] The timeout waiting for a 3919c2aa98e2SPeter Wemm response to the MAIL command. 3920c2aa98e2SPeter WemmconfTO_RCPT Timeout.rcpt [1h] The timeout waiting for a response 3921c2aa98e2SPeter Wemm to the RCPT command. 3922c2aa98e2SPeter WemmconfTO_DATAINIT Timeout.datainit 3923c2aa98e2SPeter Wemm [5m] The timeout waiting for a 354 3924c2aa98e2SPeter Wemm response from the DATA command. 3925c2aa98e2SPeter WemmconfTO_DATABLOCK Timeout.datablock 3926c2aa98e2SPeter Wemm [1h] The timeout waiting for a block 3927c2aa98e2SPeter Wemm during DATA phase. 3928c2aa98e2SPeter WemmconfTO_DATAFINAL Timeout.datafinal 3929c2aa98e2SPeter Wemm [1h] The timeout waiting for a response 3930c2aa98e2SPeter Wemm to the final "." that terminates a 3931c2aa98e2SPeter Wemm message. 3932c2aa98e2SPeter WemmconfTO_RSET Timeout.rset [5m] The timeout waiting for a response 3933c2aa98e2SPeter Wemm to the RSET command. 3934c2aa98e2SPeter WemmconfTO_QUIT Timeout.quit [2m] The timeout waiting for a response 3935c2aa98e2SPeter Wemm to the QUIT command. 3936c2aa98e2SPeter WemmconfTO_MISC Timeout.misc [2m] The timeout waiting for a response 3937c2aa98e2SPeter Wemm to other SMTP commands. 393806f25ae9SGregory Neil ShapiroconfTO_COMMAND Timeout.command [1h] In server SMTP, the timeout 393906f25ae9SGregory Neil Shapiro waiting for a command to be issued. 394006f25ae9SGregory Neil ShapiroconfTO_IDENT Timeout.ident [5s] The timeout waiting for a 394106f25ae9SGregory Neil Shapiro response to an IDENT query. 3942c2aa98e2SPeter WemmconfTO_FILEOPEN Timeout.fileopen 3943c2aa98e2SPeter Wemm [60s] The timeout waiting for a file 3944c2aa98e2SPeter Wemm (e.g., :include: file) to be opened. 394540266059SGregory Neil ShapiroconfTO_LHLO Timeout.lhlo [2m] The timeout waiting for a response 394640266059SGregory Neil Shapiro to an LMTP LHLO command. 394740266059SGregory Neil ShapiroconfTO_AUTH Timeout.auth [10m] The timeout waiting for a 394840266059SGregory Neil Shapiro response in an AUTH dialogue. 394940266059SGregory Neil ShapiroconfTO_STARTTLS Timeout.starttls 395040266059SGregory Neil Shapiro [1h] The timeout waiting for a 395140266059SGregory Neil Shapiro response to an SMTP STARTTLS command. 395206f25ae9SGregory Neil ShapiroconfTO_CONTROL Timeout.control 395306f25ae9SGregory Neil Shapiro [2m] The timeout for a complete 395406f25ae9SGregory Neil Shapiro control socket transaction to complete. 3955c2aa98e2SPeter WemmconfTO_QUEUERETURN Timeout.queuereturn 3956c2aa98e2SPeter Wemm [5d] The timeout before a message is 3957c2aa98e2SPeter Wemm returned as undeliverable. 3958c2aa98e2SPeter WemmconfTO_QUEUERETURN_NORMAL 3959c2aa98e2SPeter Wemm Timeout.queuereturn.normal 3960c2aa98e2SPeter Wemm [undefined] As above, for normal 3961c2aa98e2SPeter Wemm priority messages. 3962c2aa98e2SPeter WemmconfTO_QUEUERETURN_URGENT 3963c2aa98e2SPeter Wemm Timeout.queuereturn.urgent 3964c2aa98e2SPeter Wemm [undefined] As above, for urgent 3965c2aa98e2SPeter Wemm priority messages. 3966c2aa98e2SPeter WemmconfTO_QUEUERETURN_NONURGENT 3967c2aa98e2SPeter Wemm Timeout.queuereturn.non-urgent 3968c2aa98e2SPeter Wemm [undefined] As above, for non-urgent 3969c2aa98e2SPeter Wemm (low) priority messages. 3970e92d3f3fSGregory Neil ShapiroconfTO_QUEUERETURN_DSN 3971e92d3f3fSGregory Neil Shapiro Timeout.queuereturn.dsn 3972e92d3f3fSGregory Neil Shapiro [undefined] As above, for delivery 3973e92d3f3fSGregory Neil Shapiro status notification messages. 3974c2aa98e2SPeter WemmconfTO_QUEUEWARN Timeout.queuewarn 3975c2aa98e2SPeter Wemm [4h] The timeout before a warning 3976c2aa98e2SPeter Wemm message is sent to the sender telling 397706f25ae9SGregory Neil Shapiro them that the message has been 397806f25ae9SGregory Neil Shapiro deferred. 3979c2aa98e2SPeter WemmconfTO_QUEUEWARN_NORMAL Timeout.queuewarn.normal 3980c2aa98e2SPeter Wemm [undefined] As above, for normal 3981c2aa98e2SPeter Wemm priority messages. 3982c2aa98e2SPeter WemmconfTO_QUEUEWARN_URGENT Timeout.queuewarn.urgent 3983c2aa98e2SPeter Wemm [undefined] As above, for urgent 3984c2aa98e2SPeter Wemm priority messages. 3985c2aa98e2SPeter WemmconfTO_QUEUEWARN_NONURGENT 3986c2aa98e2SPeter Wemm Timeout.queuewarn.non-urgent 3987c2aa98e2SPeter Wemm [undefined] As above, for non-urgent 3988c2aa98e2SPeter Wemm (low) priority messages. 3989e92d3f3fSGregory Neil ShapiroconfTO_QUEUEWARN_DSN 3990e92d3f3fSGregory Neil Shapiro Timeout.queuewarn.dsn 3991e92d3f3fSGregory Neil Shapiro [undefined] As above, for delivery 3992e92d3f3fSGregory Neil Shapiro status notification messages. 3993c2aa98e2SPeter WemmconfTO_HOSTSTATUS Timeout.hoststatus 3994c2aa98e2SPeter Wemm [30m] How long information about host 3995c2aa98e2SPeter Wemm statuses will be maintained before it 3996c2aa98e2SPeter Wemm is considered stale and the host should 3997c2aa98e2SPeter Wemm be retried. This applies both within 3998c2aa98e2SPeter Wemm a single queue run and to persistent 3999c2aa98e2SPeter Wemm information (see below). 400006f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS Timeout.resolver.retrans 400106f25ae9SGregory Neil Shapiro [varies] Sets the resolver's 400294c01205SGregory Neil Shapiro retransmission time interval (in 400306f25ae9SGregory Neil Shapiro seconds). Sets both 400406f25ae9SGregory Neil Shapiro Timeout.resolver.retrans.first and 400506f25ae9SGregory Neil Shapiro Timeout.resolver.retrans.normal. 400606f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS_FIRST Timeout.resolver.retrans.first 400706f25ae9SGregory Neil Shapiro [varies] Sets the resolver's 400894c01205SGregory Neil Shapiro retransmission time interval (in 400906f25ae9SGregory Neil Shapiro seconds) for the first attempt to 401006f25ae9SGregory Neil Shapiro deliver a message. 401106f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS_NORMAL Timeout.resolver.retrans.normal 401206f25ae9SGregory Neil Shapiro [varies] Sets the resolver's 401394c01205SGregory Neil Shapiro retransmission time interval (in 401406f25ae9SGregory Neil Shapiro seconds) for all resolver lookups 401506f25ae9SGregory Neil Shapiro except the first delivery attempt. 401606f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY Timeout.resolver.retry 401706f25ae9SGregory Neil Shapiro [varies] Sets the number of times 401806f25ae9SGregory Neil Shapiro to retransmit a resolver query. 401906f25ae9SGregory Neil Shapiro Sets both 402006f25ae9SGregory Neil Shapiro Timeout.resolver.retry.first and 402106f25ae9SGregory Neil Shapiro Timeout.resolver.retry.normal. 402206f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY_FIRST Timeout.resolver.retry.first 402306f25ae9SGregory Neil Shapiro [varies] Sets the number of times 402406f25ae9SGregory Neil Shapiro to retransmit a resolver query for 402506f25ae9SGregory Neil Shapiro the first attempt to deliver a 402606f25ae9SGregory Neil Shapiro message. 402706f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY_NORMAL Timeout.resolver.retry.normal 402806f25ae9SGregory Neil Shapiro [varies] Sets the number of times 402906f25ae9SGregory Neil Shapiro to retransmit a resolver query for 403006f25ae9SGregory Neil Shapiro all resolver lookups except the 403106f25ae9SGregory Neil Shapiro first delivery attempt. 4032c2aa98e2SPeter WemmconfTIME_ZONE TimeZoneSpec [USE_SYSTEM] Time zone info -- can be 4033c2aa98e2SPeter Wemm USE_SYSTEM to use the system's idea, 4034c2aa98e2SPeter Wemm USE_TZ to use the user's TZ envariable, 4035c2aa98e2SPeter Wemm or something else to force that value. 4036c2aa98e2SPeter WemmconfDEF_USER_ID DefaultUser [1:1] Default user id. 4037c2aa98e2SPeter WemmconfUSERDB_SPEC UserDatabaseSpec 403806f25ae9SGregory Neil Shapiro [undefined] User database 403906f25ae9SGregory Neil Shapiro specification. 4040c2aa98e2SPeter WemmconfFALLBACK_MX FallbackMXhost [undefined] Fallback MX host. 4041e92d3f3fSGregory Neil ShapiroconfFALLBACK_SMARTHOST FallbackSmartHost 4042e92d3f3fSGregory Neil Shapiro [undefined] Fallback smart host. 40435b0945b5SGregory Neil ShapiroconfTLS_FALLBACK_TO_CLEAR TLSFallbacktoClear 40445b0945b5SGregory Neil Shapiro [undefined] If set, immediately try 40455b0945b5SGregory Neil Shapiro a connection again without STARTTLS 40465b0945b5SGregory Neil Shapiro after a TLS handshake failure. 404706f25ae9SGregory Neil ShapiroconfTRY_NULL_MX_LIST TryNullMXList [False] If this host is the best MX 404806f25ae9SGregory Neil Shapiro for a host and other arrangements 404906f25ae9SGregory Neil Shapiro haven't been made, try connecting 405006f25ae9SGregory Neil Shapiro to the host directly; normally this 405106f25ae9SGregory Neil Shapiro would be a config error. 405206f25ae9SGregory Neil ShapiroconfQUEUE_LA QueueLA [varies] Load average at which 405306f25ae9SGregory Neil Shapiro queue-only function kicks in. 405406f25ae9SGregory Neil Shapiro Default values is (8 * numproc) 405506f25ae9SGregory Neil Shapiro where numproc is the number of 405606f25ae9SGregory Neil Shapiro processors online (if that can be 405706f25ae9SGregory Neil Shapiro determined). 405806f25ae9SGregory Neil ShapiroconfREFUSE_LA RefuseLA [varies] Load average at which 405906f25ae9SGregory Neil Shapiro incoming SMTP connections are 406006f25ae9SGregory Neil Shapiro refused. Default values is (12 * 406106f25ae9SGregory Neil Shapiro numproc) where numproc is the 406206f25ae9SGregory Neil Shapiro number of processors online (if 406306f25ae9SGregory Neil Shapiro that can be determined). 4064e92d3f3fSGregory Neil ShapiroconfREJECT_LOG_INTERVAL RejectLogInterval [3h] Log interval when 4065e92d3f3fSGregory Neil Shapiro refusing connections for this long. 406640266059SGregory Neil ShapiroconfDELAY_LA DelayLA [0] Load average at which sendmail 406740266059SGregory Neil Shapiro will sleep for one second on most 406840266059SGregory Neil Shapiro SMTP commands and before accepting 406940266059SGregory Neil Shapiro connections. 0 means no limit. 407006f25ae9SGregory Neil ShapiroconfMAX_ALIAS_RECURSION MaxAliasRecursion 407106f25ae9SGregory Neil Shapiro [10] Maximum depth of alias recursion. 4072c2aa98e2SPeter WemmconfMAX_DAEMON_CHILDREN MaxDaemonChildren 4073c2aa98e2SPeter Wemm [undefined] The maximum number of 4074c2aa98e2SPeter Wemm children the daemon will permit. After 4075c2aa98e2SPeter Wemm this number, connections will be 4076c2aa98e2SPeter Wemm rejected. If not set or <= 0, there is 4077c2aa98e2SPeter Wemm no limit. 407806f25ae9SGregory Neil ShapiroconfMAX_HEADERS_LENGTH MaxHeadersLength 4079193538b7SGregory Neil Shapiro [32768] Maximum length of the sum 408006f25ae9SGregory Neil Shapiro of all headers. 408106f25ae9SGregory Neil ShapiroconfMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength 408206f25ae9SGregory Neil Shapiro [undefined] Maximum length of 408306f25ae9SGregory Neil Shapiro certain MIME header field values. 4084c2aa98e2SPeter WemmconfCONNECTION_RATE_THROTTLE ConnectionRateThrottle 4085c2aa98e2SPeter Wemm [undefined] The maximum number of 408640266059SGregory Neil Shapiro connections permitted per second per 408740266059SGregory Neil Shapiro daemon. After this many connections 408840266059SGregory Neil Shapiro are accepted, further connections 408940266059SGregory Neil Shapiro will be delayed. If not set or <= 0, 409040266059SGregory Neil Shapiro there is no limit. 4091e92d3f3fSGregory Neil ShapiroconfCONNECTION_RATE_WINDOW_SIZE ConnectionRateWindowSize 4092e92d3f3fSGregory Neil Shapiro [60s] Define the length of the 4093e92d3f3fSGregory Neil Shapiro interval for which the number of 4094e92d3f3fSGregory Neil Shapiro incoming connections is maintained. 4095c2aa98e2SPeter WemmconfWORK_RECIPIENT_FACTOR 4096c2aa98e2SPeter Wemm RecipientFactor [30000] Cost of each recipient. 409706f25ae9SGregory Neil ShapiroconfSEPARATE_PROC ForkEachJob [False] Run all deliveries in a 409806f25ae9SGregory Neil Shapiro separate process. 4099c2aa98e2SPeter WemmconfWORK_CLASS_FACTOR ClassFactor [1800] Priority multiplier for class. 4100c2aa98e2SPeter WemmconfWORK_TIME_FACTOR RetryFactor [90000] Cost of each delivery attempt. 4101c2aa98e2SPeter WemmconfQUEUE_SORT_ORDER QueueSortOrder [Priority] Queue sort algorithm: 410240266059SGregory Neil Shapiro Priority, Host, Filename, Random, 410340266059SGregory Neil Shapiro Modification, or Time. 4104da7d7b9cSGregory Neil ShapiroconfMAX_QUEUE_AGE MaxQueueAge [undefined] If set to a value greater 4105da7d7b9cSGregory Neil Shapiro than zero, entries in the queue 4106da7d7b9cSGregory Neil Shapiro will be retried during a queue run 4107da7d7b9cSGregory Neil Shapiro only if the individual retry time 4108da7d7b9cSGregory Neil Shapiro has been reached which is doubled 4109da7d7b9cSGregory Neil Shapiro for each attempt. The maximum retry 4110da7d7b9cSGregory Neil Shapiro time is limited by the specified value. 4111c2aa98e2SPeter WemmconfMIN_QUEUE_AGE MinQueueAge [0] The minimum amount of time a job 4112c2aa98e2SPeter Wemm must sit in the queue between queue 4113c2aa98e2SPeter Wemm runs. This allows you to set the 4114c2aa98e2SPeter Wemm queue run interval low for better 4115c2aa98e2SPeter Wemm responsiveness without trying all 4116c2aa98e2SPeter Wemm jobs in each run. 4117c2aa98e2SPeter WemmconfDEF_CHAR_SET DefaultCharSet [unknown-8bit] When converting 4118c2aa98e2SPeter Wemm unlabeled 8 bit input to MIME, the 4119c2aa98e2SPeter Wemm character set to use by default. 4120c2aa98e2SPeter WemmconfSERVICE_SWITCH_FILE ServiceSwitchFile 412106f25ae9SGregory Neil Shapiro [/etc/mail/service.switch] The file 412206f25ae9SGregory Neil Shapiro to use for the service switch on 412306f25ae9SGregory Neil Shapiro systems that do not have a 412406f25ae9SGregory Neil Shapiro system-defined switch. 4125c2aa98e2SPeter WemmconfHOSTS_FILE HostsFile [/etc/hosts] The file to use when doing 4126c2aa98e2SPeter Wemm "file" type access of hosts names. 4127c2aa98e2SPeter WemmconfDIAL_DELAY DialDelay [0s] If a connection fails, wait this 4128c2aa98e2SPeter Wemm long and try again. Zero means "don't 4129c2aa98e2SPeter Wemm retry". This is to allow "dial on 4130c2aa98e2SPeter Wemm demand" connections to have enough time 4131c2aa98e2SPeter Wemm to complete a connection. 4132c2aa98e2SPeter WemmconfNO_RCPT_ACTION NoRecipientAction 4133c2aa98e2SPeter Wemm [none] What to do if there are no legal 4134c2aa98e2SPeter Wemm recipient fields (To:, Cc: or Bcc:) 4135c2aa98e2SPeter Wemm in the message. Legal values can 4136c2aa98e2SPeter Wemm be "none" to just leave the 4137c2aa98e2SPeter Wemm nonconforming message as is, "add-to" 4138c2aa98e2SPeter Wemm to add a To: header with all the 4139c2aa98e2SPeter Wemm known recipients (which may expose 4140c2aa98e2SPeter Wemm blind recipients), "add-apparently-to" 4141c2aa98e2SPeter Wemm to do the same but use Apparently-To: 414240266059SGregory Neil Shapiro instead of To: (strongly discouraged 414340266059SGregory Neil Shapiro in accordance with IETF standards), 414440266059SGregory Neil Shapiro "add-bcc" to add an empty Bcc: 414540266059SGregory Neil Shapiro header, or "add-to-undisclosed" to 414640266059SGregory Neil Shapiro add the header 4147c2aa98e2SPeter Wemm ``To: undisclosed-recipients:;''. 4148c2aa98e2SPeter WemmconfSAFE_FILE_ENV SafeFileEnvironment 4149c2aa98e2SPeter Wemm [undefined] If set, sendmail will do a 4150c2aa98e2SPeter Wemm chroot() into this directory before 4151c2aa98e2SPeter Wemm writing files. 4152c2aa98e2SPeter WemmconfCOLON_OK_IN_ADDR ColonOkInAddr [True unless Configuration Level > 6] 4153c2aa98e2SPeter Wemm If set, colons are treated as a regular 4154c2aa98e2SPeter Wemm character in addresses. If not set, 4155c2aa98e2SPeter Wemm they are treated as the introducer to 4156c2aa98e2SPeter Wemm the RFC 822 "group" syntax. Colons are 4157c2aa98e2SPeter Wemm handled properly in route-addrs. This 4158c2aa98e2SPeter Wemm option defaults on for V5 and lower 4159c2aa98e2SPeter Wemm configuration files. 4160c2aa98e2SPeter WemmconfMAX_QUEUE_RUN_SIZE MaxQueueRunSize [0] If set, limit the maximum size of 4161c2aa98e2SPeter Wemm any given queue run to this number of 4162c2aa98e2SPeter Wemm entries. Essentially, this will stop 416306f25ae9SGregory Neil Shapiro reading each queue directory after this 4164c2aa98e2SPeter Wemm number of entries are reached; it does 4165c2aa98e2SPeter Wemm _not_ pick the highest priority jobs, 4166c2aa98e2SPeter Wemm so this should be as large as your 4167c2aa98e2SPeter Wemm system can tolerate. If not set, there 4168c2aa98e2SPeter Wemm is no limit. 416940266059SGregory Neil ShapiroconfMAX_QUEUE_CHILDREN MaxQueueChildren 417040266059SGregory Neil Shapiro [undefined] Limits the maximum number 417140266059SGregory Neil Shapiro of concurrent queue runners active. 417240266059SGregory Neil Shapiro This is to keep system resources used 417340266059SGregory Neil Shapiro within a reasonable limit. Relates to 4174e92d3f3fSGregory Neil Shapiro Queue Groups and ForkEachJob. 417540266059SGregory Neil ShapiroconfMAX_RUNNERS_PER_QUEUE MaxRunnersPerQueue 417640266059SGregory Neil Shapiro [1] Only active when MaxQueueChildren 417740266059SGregory Neil Shapiro defined. Controls the maximum number 417840266059SGregory Neil Shapiro of queue runners (aka queue children) 417940266059SGregory Neil Shapiro active at the same time in a work 418040266059SGregory Neil Shapiro group. See also MaxQueueChildren. 4181c2aa98e2SPeter WemmconfDONT_EXPAND_CNAMES DontExpandCnames 4182c2aa98e2SPeter Wemm [False] If set, $[ ... $] lookups that 4183c2aa98e2SPeter Wemm do DNS based lookups do not expand 4184c2aa98e2SPeter Wemm CNAME records. This currently violates 4185c2aa98e2SPeter Wemm the published standards, but the IETF 4186c2aa98e2SPeter Wemm seems to be moving toward legalizing 4187c2aa98e2SPeter Wemm this. For example, if "FTP.Foo.ORG" 4188c2aa98e2SPeter Wemm is a CNAME for "Cruft.Foo.ORG", then 4189c2aa98e2SPeter Wemm with this option set a lookup of 4190c2aa98e2SPeter Wemm "FTP" will return "FTP.Foo.ORG"; if 4191c2aa98e2SPeter Wemm clear it returns "Cruft.FOO.ORG". N.B. 4192c2aa98e2SPeter Wemm you may not see any effect until your 4193c2aa98e2SPeter Wemm downstream neighbors stop doing CNAME 4194c2aa98e2SPeter Wemm lookups as well. 4195c2aa98e2SPeter WemmconfFROM_LINE UnixFromLine [From $g $d] The From_ line used 4196c2aa98e2SPeter Wemm when sending to files or programs. 4197c2aa98e2SPeter WemmconfSINGLE_LINE_FROM_HEADER SingleLineFromHeader 4198c2aa98e2SPeter Wemm [False] From: lines that have 4199c2aa98e2SPeter Wemm embedded newlines are unwrapped 4200c2aa98e2SPeter Wemm onto one line. 4201c2aa98e2SPeter WemmconfALLOW_BOGUS_HELO AllowBogusHELO [False] Allow HELO SMTP command that 4202c2aa98e2SPeter Wemm does not include a host name. 4203c2aa98e2SPeter WemmconfMUST_QUOTE_CHARS MustQuoteChars [.'] Characters to be quoted in a full 4204c2aa98e2SPeter Wemm name phrase (@,;:\()[] are automatic). 4205c2aa98e2SPeter WemmconfOPERATORS OperatorChars [.:%@!^/[]+] Address operator 4206c2aa98e2SPeter Wemm characters. 4207c2aa98e2SPeter WemmconfSMTP_LOGIN_MSG SmtpGreetingMessage 4208c2aa98e2SPeter Wemm [$j Sendmail $v/$Z; $b] 4209c2aa98e2SPeter Wemm The initial (spontaneous) SMTP 4210c2aa98e2SPeter Wemm greeting message. The word "ESMTP" 4211c2aa98e2SPeter Wemm will be inserted between the first and 4212c2aa98e2SPeter Wemm second words to convince other 4213c2aa98e2SPeter Wemm sendmails to try to speak ESMTP. 4214c2aa98e2SPeter WemmconfDONT_INIT_GROUPS DontInitGroups [False] If set, the initgroups(3) 4215c2aa98e2SPeter Wemm routine will never be invoked. You 4216c2aa98e2SPeter Wemm might want to do this if you are 4217c2aa98e2SPeter Wemm running NIS and you have a large group 4218c2aa98e2SPeter Wemm map, since this call does a sequential 4219c2aa98e2SPeter Wemm scan of the map; in a large site this 4220c2aa98e2SPeter Wemm can cause your ypserv to run 4221c2aa98e2SPeter Wemm essentially full time. If you set 4222c2aa98e2SPeter Wemm this, agents run on behalf of users 4223c2aa98e2SPeter Wemm will only have their primary 4224c2aa98e2SPeter Wemm (/etc/passwd) group permissions. 4225c2aa98e2SPeter WemmconfUNSAFE_GROUP_WRITES UnsafeGroupWrites 42264e4196cbSGregory Neil Shapiro [True] If set, group-writable 4227c2aa98e2SPeter Wemm :include: and .forward files are 4228c2aa98e2SPeter Wemm considered "unsafe", that is, programs 4229c2aa98e2SPeter Wemm and files cannot be directly referenced 4230c2aa98e2SPeter Wemm from such files. World-writable files 4231c2aa98e2SPeter Wemm are always considered unsafe. 42324e4196cbSGregory Neil Shapiro Notice: this option is deprecated and 42334e4196cbSGregory Neil Shapiro will be removed in future versions; 42344e4196cbSGregory Neil Shapiro Set GroupWritableForwardFileSafe 42354e4196cbSGregory Neil Shapiro and GroupWritableIncludeFileSafe in 42364e4196cbSGregory Neil Shapiro DontBlameSendmail if required. 423706f25ae9SGregory Neil ShapiroconfCONNECT_ONLY_TO ConnectOnlyTo [undefined] override connection 423806f25ae9SGregory Neil Shapiro address (for testing). 423906f25ae9SGregory Neil ShapiroconfCONTROL_SOCKET_NAME ControlSocketName 424006f25ae9SGregory Neil Shapiro [undefined] Control socket for daemon 424106f25ae9SGregory Neil Shapiro management. 4242c2aa98e2SPeter WemmconfDOUBLE_BOUNCE_ADDRESS DoubleBounceAddress 4243c2aa98e2SPeter Wemm [postmaster] If an error occurs when 4244c2aa98e2SPeter Wemm sending an error message, send that 4245c2aa98e2SPeter Wemm "double bounce" error message to this 424640266059SGregory Neil Shapiro address. If it expands to an empty 424740266059SGregory Neil Shapiro string, double bounces are dropped. 4248d0cef73dSGregory Neil ShapiroconfSOFT_BOUNCE SoftBounce [False] If set, issue temporary errors 4249d0cef73dSGregory Neil Shapiro (4xy) instead of permanent errors 4250d0cef73dSGregory Neil Shapiro (5xy). This can be useful during 4251d0cef73dSGregory Neil Shapiro testing of a new configuration to 4252d0cef73dSGregory Neil Shapiro avoid erroneous bouncing of mails. 425306f25ae9SGregory Neil ShapiroconfDEAD_LETTER_DROP DeadLetterDrop [undefined] Filename to save bounce 425406f25ae9SGregory Neil Shapiro messages which could not be returned 425506f25ae9SGregory Neil Shapiro to the user or sent to postmaster. 425606f25ae9SGregory Neil Shapiro If not set, the queue file will 425706f25ae9SGregory Neil Shapiro be renamed. 425806f25ae9SGregory Neil ShapiroconfRRT_IMPLIES_DSN RrtImpliesDsn [False] Return-Receipt-To: header 425906f25ae9SGregory Neil Shapiro implies DSN request. 4260c2aa98e2SPeter WemmconfRUN_AS_USER RunAsUser [undefined] If set, become this user 4261c2aa98e2SPeter Wemm when reading and delivering mail. 4262c2aa98e2SPeter Wemm Causes all file reads (e.g., .forward 4263c2aa98e2SPeter Wemm and :include: files) to be done as 4264c2aa98e2SPeter Wemm this user. Also, all programs will 4265c2aa98e2SPeter Wemm be run as this user, and all output 4266c2aa98e2SPeter Wemm files will be written as this user. 4267c2aa98e2SPeter WemmconfMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage 4268c2aa98e2SPeter Wemm [infinite] If set, allow no more than 4269c2aa98e2SPeter Wemm the specified number of recipients in 4270c2aa98e2SPeter Wemm an SMTP envelope. Further recipients 4271c2aa98e2SPeter Wemm receive a 452 error code (i.e., they 4272c2aa98e2SPeter Wemm are deferred for the next delivery 4273c2aa98e2SPeter Wemm attempt). 4274323f6dcbSGregory Neil ShapiroconfBAD_RCPT_THROTTLE BadRcptThrottle [infinite] If set and the specified 4275323f6dcbSGregory Neil Shapiro number of recipients in a single SMTP 4276323f6dcbSGregory Neil Shapiro transaction have been rejected, sleep 4277323f6dcbSGregory Neil Shapiro for one second after each subsequent 4278323f6dcbSGregory Neil Shapiro RCPT command in that transaction. 4279c2aa98e2SPeter WemmconfDONT_PROBE_INTERFACES DontProbeInterfaces 4280c2aa98e2SPeter Wemm [False] If set, sendmail will _not_ 4281c2aa98e2SPeter Wemm insert the names and addresses of any 428206f25ae9SGregory Neil Shapiro local interfaces into class {w} 4283c2aa98e2SPeter Wemm (list of known "equivalent" addresses). 4284c2aa98e2SPeter Wemm If you set this, you must also include 4285c2aa98e2SPeter Wemm some support for these addresses (e.g., 4286c2aa98e2SPeter Wemm in a mailertable entry) -- otherwise, 4287c2aa98e2SPeter Wemm mail to addresses in this list will 4288c2aa98e2SPeter Wemm bounce with a configuration error. 428940266059SGregory Neil Shapiro If set to "loopback" (without 429040266059SGregory Neil Shapiro quotes), sendmail will skip 429140266059SGregory Neil Shapiro loopback interfaces (e.g., "lo0"). 429206f25ae9SGregory Neil ShapiroconfPID_FILE PidFile [system dependent] Location of pid 429306f25ae9SGregory Neil Shapiro file. 429406f25ae9SGregory Neil ShapiroconfPROCESS_TITLE_PREFIX ProcessTitlePrefix 429506f25ae9SGregory Neil Shapiro [undefined] Prefix string for the 429606f25ae9SGregory Neil Shapiro process title shown on 'ps' listings. 4297c2aa98e2SPeter WemmconfDONT_BLAME_SENDMAIL DontBlameSendmail 4298c2aa98e2SPeter Wemm [safe] Override sendmail's file 4299c2aa98e2SPeter Wemm safety checks. This will definitely 4300c2aa98e2SPeter Wemm compromise system security and should 4301c2aa98e2SPeter Wemm not be used unless absolutely 4302c2aa98e2SPeter Wemm necessary. 4303c2aa98e2SPeter WemmconfREJECT_MSG - [550 Access denied] The message 4304c2aa98e2SPeter Wemm given if the access database contains 4305c2aa98e2SPeter Wemm REJECT in the value portion. 430640266059SGregory Neil ShapiroconfRELAY_MSG - [550 Relaying denied] The message 430740266059SGregory Neil Shapiro given if an unauthorized relaying 430840266059SGregory Neil Shapiro attempt is rejected. 430906f25ae9SGregory Neil ShapiroconfDF_BUFFER_SIZE DataFileBufferSize 431006f25ae9SGregory Neil Shapiro [4096] The maximum size of a 431106f25ae9SGregory Neil Shapiro memory-buffered data (df) file 431206f25ae9SGregory Neil Shapiro before a disk-based file is used. 431306f25ae9SGregory Neil ShapiroconfXF_BUFFER_SIZE XScriptFileBufferSize 431406f25ae9SGregory Neil Shapiro [4096] The maximum size of a 431506f25ae9SGregory Neil Shapiro memory-buffered transcript (xf) 431606f25ae9SGregory Neil Shapiro file before a disk-based file is 431706f25ae9SGregory Neil Shapiro used. 43182fb4f839SGregory Neil ShapiroconfAUTH_MECHANISMS AuthMechanisms [EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 431906f25ae9SGregory Neil Shapiro CRAM-MD5] List of authentication 432006f25ae9SGregory Neil Shapiro mechanisms for AUTH (separated by 432106f25ae9SGregory Neil Shapiro spaces). The advertised list of 432206f25ae9SGregory Neil Shapiro authentication mechanisms will be the 432306f25ae9SGregory Neil Shapiro intersection of this list and the list 432406f25ae9SGregory Neil Shapiro of available mechanisms as determined 4325e92d3f3fSGregory Neil Shapiro by the Cyrus SASL library. 4326e92d3f3fSGregory Neil ShapiroconfAUTH_REALM AuthRealm [undefined] The authentication realm 4327e92d3f3fSGregory Neil Shapiro that is passed to the Cyrus SASL 4328e92d3f3fSGregory Neil Shapiro library. If no realm is specified, 4329da7d7b9cSGregory Neil Shapiro $j is used. See KNOWNBUGS. 4330602a2b1bSGregory Neil ShapiroconfDEF_AUTH_INFO DefaultAuthInfo [undefined] Name of file that contains 433106f25ae9SGregory Neil Shapiro authentication information for 433240266059SGregory Neil Shapiro outgoing connections. This file must 433340266059SGregory Neil Shapiro contain the user id, the authorization 433440266059SGregory Neil Shapiro id, the password (plain text), the 433540266059SGregory Neil Shapiro realm to use, and the list of 433640266059SGregory Neil Shapiro mechanisms to try, each on a separate 433740266059SGregory Neil Shapiro line and must be readable by root (or 433840266059SGregory Neil Shapiro the trusted user) only. If no realm 433940266059SGregory Neil Shapiro is specified, $j is used. If no 434040266059SGregory Neil Shapiro mechanisms are given in the file, 434140266059SGregory Neil Shapiro AuthMechanisms is used. Notice: this 434240266059SGregory Neil Shapiro option is deprecated and will be 434340266059SGregory Neil Shapiro removed in future versions; it doesn't 434440266059SGregory Neil Shapiro work for the MSP since it can't read 434540266059SGregory Neil Shapiro the file. Use the authinfo ruleset 434640266059SGregory Neil Shapiro instead. See also the section SMTP 434740266059SGregory Neil Shapiro AUTHENTICATION. 434840266059SGregory Neil ShapiroconfAUTH_OPTIONS AuthOptions [undefined] If this option is 'A' 434906f25ae9SGregory Neil Shapiro then the AUTH= parameter for the 435006f25ae9SGregory Neil Shapiro MAIL FROM command is only issued 435106f25ae9SGregory Neil Shapiro when authentication succeeded. 435213d88268SGregory Neil Shapiro See doc/op/op.me for more options 435313d88268SGregory Neil Shapiro and details. 435440266059SGregory Neil ShapiroconfAUTH_MAX_BITS AuthMaxBits [INT_MAX] Limit the maximum encryption 435540266059SGregory Neil Shapiro strength for the security layer in 435640266059SGregory Neil Shapiro SMTP AUTH (SASL). Default is 435740266059SGregory Neil Shapiro essentially unlimited. 435840266059SGregory Neil ShapiroconfTLS_SRV_OPTIONS TLSSrvOptions If this option is 'V' no client 435940266059SGregory Neil Shapiro verification is performed, i.e., 436040266059SGregory Neil Shapiro the server doesn't ask for a 436140266059SGregory Neil Shapiro certificate. 4362da7d7b9cSGregory Neil ShapiroconfSERVER_SSL_OPTIONS ServerSSLOptions [undefined] SSL related 4363da7d7b9cSGregory Neil Shapiro options for server side. See 4364da7d7b9cSGregory Neil Shapiro SSL_CTX_set_options(3) for a list. 4365da7d7b9cSGregory Neil ShapiroconfCLIENT_SSL_OPTIONS ClientSSLOptions [undefined] SSL related 4366da7d7b9cSGregory Neil Shapiro options for client side. See 4367da7d7b9cSGregory Neil Shapiro SSL_CTX_set_options(3) for a list. 4368da7d7b9cSGregory Neil ShapiroconfCIPHER_LIST CipherList [undefined] Cipher list for TLS. 4369da7d7b9cSGregory Neil Shapiro See ciphers(1) for possible values. 437006f25ae9SGregory Neil ShapiroconfLDAP_DEFAULT_SPEC LDAPDefaultSpec [undefined] Default map 437106f25ae9SGregory Neil Shapiro specification for LDAP maps. The 437206f25ae9SGregory Neil Shapiro value should only contain LDAP 437306f25ae9SGregory Neil Shapiro specific settings such as "-h host 437406f25ae9SGregory Neil Shapiro -p port -d bindDN", etc. The 437506f25ae9SGregory Neil Shapiro settings will be used for all LDAP 437606f25ae9SGregory Neil Shapiro maps unless they are specified in 437706f25ae9SGregory Neil Shapiro the individual map specification 437806f25ae9SGregory Neil Shapiro ('K' command). 4379da7d7b9cSGregory Neil ShapiroconfCACERT_PATH CACertPath [undefined] Path to directory with 4380da7d7b9cSGregory Neil Shapiro certificates of CAs which must contain 4381da7d7b9cSGregory Neil Shapiro their hashes as filenames or links. 4382da7d7b9cSGregory Neil ShapiroconfCACERT CACertFile [undefined] File containing at least 4383da7d7b9cSGregory Neil Shapiro one CA certificate. 438406f25ae9SGregory Neil ShapiroconfSERVER_CERT ServerCertFile [undefined] File containing the 438506f25ae9SGregory Neil Shapiro cert of the server, i.e., this cert 438606f25ae9SGregory Neil Shapiro is used when sendmail acts as 438706f25ae9SGregory Neil Shapiro server. 438806f25ae9SGregory Neil ShapiroconfSERVER_KEY ServerKeyFile [undefined] File containing the 438906f25ae9SGregory Neil Shapiro private key belonging to the server 439006f25ae9SGregory Neil Shapiro cert. 439106f25ae9SGregory Neil ShapiroconfCLIENT_CERT ClientCertFile [undefined] File containing the 439206f25ae9SGregory Neil Shapiro cert of the client, i.e., this cert 439306f25ae9SGregory Neil Shapiro is used when sendmail acts as 439406f25ae9SGregory Neil Shapiro client. 439506f25ae9SGregory Neil ShapiroconfCLIENT_KEY ClientKeyFile [undefined] File containing the 439606f25ae9SGregory Neil Shapiro private key belonging to the client 439706f25ae9SGregory Neil Shapiro cert. 4398e92d3f3fSGregory Neil ShapiroconfCRL CRLFile [undefined] File containing certificate 4399e92d3f3fSGregory Neil Shapiro revocation status, useful for X.509v3 44005b0945b5SGregory Neil Shapiro authentication. 44015b0945b5SGregory Neil ShapiroconfCRL_PATH CRLPath [undefined] Directory containing 44025b0945b5SGregory Neil Shapiro hashes pointing to certificate 44035b0945b5SGregory Neil Shapiro revocation status files. 440406f25ae9SGregory Neil ShapiroconfDH_PARAMETERS DHParameters [undefined] File containing the 440506f25ae9SGregory Neil Shapiro DH parameters. 44065b0945b5SGregory Neil ShapiroconfDANE DANE [false] Enable DANE support. 440706f25ae9SGregory Neil ShapiroconfRAND_FILE RandFile [undefined] File containing random 440842e5d165SGregory Neil Shapiro data (use prefix file:) or the 440942e5d165SGregory Neil Shapiro name of the UNIX socket if EGD is 441042e5d165SGregory Neil Shapiro used (use prefix egd:). STARTTLS 441142e5d165SGregory Neil Shapiro requires this option if the compile 441242e5d165SGregory Neil Shapiro flag HASURANDOM is not set (see 441306f25ae9SGregory Neil Shapiro sendmail/README). 4414da7d7b9cSGregory Neil ShapiroconfCERT_FINGERPRINT_ALGORITHM CertFingerprintAlgorithm 4415da7d7b9cSGregory Neil Shapiro [undefined] The fingerprint algorithm 4416da7d7b9cSGregory Neil Shapiro (digest) to use for the presented 4417da7d7b9cSGregory Neil Shapiro cert. 44185b0945b5SGregory Neil ShapiroconfSSL_ENGINE SSLEngine [undefined] Name of SSLEngine. 44195b0945b5SGregory Neil ShapiroconfSSL_ENGINE_PATH SSLEnginePath [undefined] Path to dynamic library 44205b0945b5SGregory Neil Shapiro for SSLEngine. 4421*d39bd2c1SGregory Neil ShapiroconfOPENSSL_CNF [/etc/mail/sendmail.ossl] Set the 4422*d39bd2c1SGregory Neil Shapiro environment variable OPENSSL_CONF. 4423*d39bd2c1SGregory Neil Shapiro An empty value disables setting it. 442440266059SGregory Neil ShapiroconfNICE_QUEUE_RUN NiceQueueRun [undefined] If set, the priority of 442540266059SGregory Neil Shapiro queue runners is set the given value 442640266059SGregory Neil Shapiro (nice(3)). 442740266059SGregory Neil ShapiroconfDIRECT_SUBMISSION_MODIFIERS DirectSubmissionModifiers 442840266059SGregory Neil Shapiro [undefined] Defines {daemon_flags} 442940266059SGregory Neil Shapiro for direct submissions. 44304e4196cbSGregory Neil ShapiroconfUSE_MSP UseMSP [undefined] Use as mail submission 443140266059SGregory Neil Shapiro program, see sendmail/SECURITY. 443240266059SGregory Neil ShapiroconfDELIVER_BY_MIN DeliverByMin [0] Minimum time for Deliver By 443340266059SGregory Neil Shapiro SMTP Service Extension (RFC 2852). 4434e92d3f3fSGregory Neil ShapiroconfREQUIRES_DIR_FSYNC RequiresDirfsync [true] RequiresDirfsync can 4435e92d3f3fSGregory Neil Shapiro be used to turn off the compile time 4436e92d3f3fSGregory Neil Shapiro flag REQUIRES_DIR_FSYNC at runtime. 4437e92d3f3fSGregory Neil Shapiro See sendmail/README for details. 443840266059SGregory Neil ShapiroconfSHARED_MEMORY_KEY SharedMemoryKey [0] Key for shared memory. 4439d0cef73dSGregory Neil ShapiroconfSHARED_MEMORY_KEY_FILE 4440d0cef73dSGregory Neil Shapiro SharedMemoryKeyFile 4441d0cef73dSGregory Neil Shapiro [undefined] File where the 4442d0cef73dSGregory Neil Shapiro automatically selected key for 4443d0cef73dSGregory Neil Shapiro shared memory is stored. 444440266059SGregory Neil ShapiroconfFAST_SPLIT FastSplit [1] If set to a value greater than 444540266059SGregory Neil Shapiro zero, the initial MX lookups on 444640266059SGregory Neil Shapiro addresses is suppressed when they 444740266059SGregory Neil Shapiro are sorted which may result in 444840266059SGregory Neil Shapiro faster envelope splitting. If the 444940266059SGregory Neil Shapiro mail is submitted directly from the 445040266059SGregory Neil Shapiro command line, then the value also 445140266059SGregory Neil Shapiro limits the number of processes to 445240266059SGregory Neil Shapiro deliver the envelopes. 445340266059SGregory Neil ShapiroconfMAILBOX_DATABASE MailboxDatabase [pw] Type of lookup to find 445440266059SGregory Neil Shapiro information about local mailboxes. 445540266059SGregory Neil ShapiroconfDEQUOTE_OPTS - [empty] Additional options for the 445640266059SGregory Neil Shapiro dequote map. 4457d0cef73dSGregory Neil ShapiroconfMAX_NOOP_COMMANDS MaxNOOPCommands [20] Maximum number of "useless" 4458d0cef73dSGregory Neil Shapiro commands before the SMTP server 4459d0cef73dSGregory Neil Shapiro will slow down responding. 4460d0cef73dSGregory Neil ShapiroconfHELO_NAME HeloName If defined, use as name for EHLO/HELO 4461d0cef73dSGregory Neil Shapiro command (instead of $j). 446240266059SGregory Neil ShapiroconfINPUT_MAIL_FILTERS InputMailFilters 446340266059SGregory Neil Shapiro A comma separated list of filters 446440266059SGregory Neil Shapiro which determines which filters and 446540266059SGregory Neil Shapiro the invocation sequence are 446640266059SGregory Neil Shapiro contacted for incoming SMTP 446740266059SGregory Neil Shapiro messages. If none are set, no 446840266059SGregory Neil Shapiro filters will be contacted. 446940266059SGregory Neil ShapiroconfMILTER_LOG_LEVEL Milter.LogLevel [9] Log level for input mail filter 447040266059SGregory Neil Shapiro actions, defaults to LogLevel. 447140266059SGregory Neil ShapiroconfMILTER_MACROS_CONNECT Milter.macros.connect 447213bd1963SGregory Neil Shapiro [j, _, {daemon_name}, {if_name}, 447313bd1963SGregory Neil Shapiro {if_addr}] Macros to transmit to 447413bd1963SGregory Neil Shapiro milters when a session connection 447513bd1963SGregory Neil Shapiro starts. 447640266059SGregory Neil ShapiroconfMILTER_MACROS_HELO Milter.macros.helo 447713bd1963SGregory Neil Shapiro [{tls_version}, {cipher}, 447813bd1963SGregory Neil Shapiro {cipher_bits}, {cert_subject}, 447913bd1963SGregory Neil Shapiro {cert_issuer}] Macros to transmit to 448013bd1963SGregory Neil Shapiro milters after HELO/EHLO command. 448140266059SGregory Neil ShapiroconfMILTER_MACROS_ENVFROM Milter.macros.envfrom 448213bd1963SGregory Neil Shapiro [i, {auth_type}, {auth_authen}, 448313bd1963SGregory Neil Shapiro {auth_ssf}, {auth_author}, 448413bd1963SGregory Neil Shapiro {mail_mailer}, {mail_host}, 448513bd1963SGregory Neil Shapiro {mail_addr}] Macros to transmit to 448613bd1963SGregory Neil Shapiro milters after MAIL FROM command. 448740266059SGregory Neil ShapiroconfMILTER_MACROS_ENVRCPT Milter.macros.envrcpt 448813bd1963SGregory Neil Shapiro [{rcpt_mailer}, {rcpt_host}, 448913bd1963SGregory Neil Shapiro {rcpt_addr}] Macros to transmit to 449013bd1963SGregory Neil Shapiro milters after RCPT TO command. 4491e92d3f3fSGregory Neil ShapiroconfMILTER_MACROS_EOM Milter.macros.eom 4492e92d3f3fSGregory Neil Shapiro [{msg_id}] Macros to transmit to 4493d0cef73dSGregory Neil Shapiro milters after the terminating 4494d0cef73dSGregory Neil Shapiro DATA '.' is received. 4495d0cef73dSGregory Neil ShapiroconfMILTER_MACROS_EOH Milter.macros.eoh 4496d0cef73dSGregory Neil Shapiro Macros to transmit to milters 4497d0cef73dSGregory Neil Shapiro after the end of headers. 4498d0cef73dSGregory Neil ShapiroconfMILTER_MACROS_DATA Milter.macros.data 4499d0cef73dSGregory Neil Shapiro Macros to transmit to milters 4500d0cef73dSGregory Neil Shapiro after DATA command is received. 450140266059SGregory Neil Shapiro 4502c2aa98e2SPeter Wemm 4503c2aa98e2SPeter WemmSee also the description of OSTYPE for some parameters that can be 4504c2aa98e2SPeter Wemmtweaked (generally pathnames to mailers). 4505c2aa98e2SPeter Wemm 450640266059SGregory Neil ShapiroClientPortOptions and DaemonPortOptions are special cases since multiple 450740266059SGregory Neil Shapiroclients/daemons can be defined. This can be done via 450806f25ae9SGregory Neil Shapiro 450940266059SGregory Neil Shapiro CLIENT_OPTIONS(`field1=value1,field2=value2,...') 451006f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`field1=value1,field2=value2,...') 451106f25ae9SGregory Neil Shapiro 451240266059SGregory Neil ShapiroNote that multiple CLIENT_OPTIONS() commands (and therefore multiple 451340266059SGregory Neil ShapiroClientPortOptions settings) are allowed in order to give settings for each 451440266059SGregory Neil Shapiroprotocol family (e.g., one for Family=inet and one for Family=inet6). A 451540266059SGregory Neil Shapirorestriction placed on one family only affects outgoing connections on that 451640266059SGregory Neil Shapiroparticular family. 451740266059SGregory Neil Shapiro 451806f25ae9SGregory Neil ShapiroIf DAEMON_OPTIONS is not used, then the default is 451906f25ae9SGregory Neil Shapiro 452006f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=smtp, Name=MTA') 452106f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=587, Name=MSA, M=E') 452206f25ae9SGregory Neil Shapiro 452306f25ae9SGregory Neil ShapiroIf you use one DAEMON_OPTIONS macro, it will alter the parameters 452406f25ae9SGregory Neil Shapiroof the first of these. The second will still be defaulted; it 452506f25ae9SGregory Neil Shapirorepresents a "Message Submission Agent" (MSA) as defined by RFC 452606f25ae9SGregory Neil Shapiro2476 (see below). To turn off the default definition for the MSA, 452706f25ae9SGregory Neil Shapirouse FEATURE(`no_default_msa') (see also FEATURES). If you use 452806f25ae9SGregory Neil Shapiroadditional DAEMON_OPTIONS macros, they will add additional daemons. 452906f25ae9SGregory Neil Shapiro 453006f25ae9SGregory Neil ShapiroExample 1: To change the port for the SMTP listener, while 453106f25ae9SGregory Neil Shapirostill using the MSA default, use 453206f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=925, Name=MTA') 453306f25ae9SGregory Neil Shapiro 453406f25ae9SGregory Neil ShapiroExample 2: To change the port for the MSA daemon, while still 453506f25ae9SGregory Neil Shapirousing the default SMTP port, use 453606f25ae9SGregory Neil Shapiro FEATURE(`no_default_msa') 453706f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Name=MTA') 453806f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=987, Name=MSA, M=E') 453906f25ae9SGregory Neil Shapiro 454006f25ae9SGregory Neil ShapiroNote that if the first of those DAEMON_OPTIONS lines were omitted, then 454106f25ae9SGregory Neil Shapirothere would be no listener on the standard SMTP port. 454206f25ae9SGregory Neil Shapiro 454306f25ae9SGregory Neil ShapiroExample 3: To listen on both IPv4 and IPv6 interfaces, use 454406f25ae9SGregory Neil Shapiro 454506f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Name=MTA-v4, Family=inet') 454606f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6') 454706f25ae9SGregory Neil Shapiro 454806f25ae9SGregory Neil ShapiroA "Message Submission Agent" still uses all of the same rulesets for 454906f25ae9SGregory Neil Shapiroprocessing the message (and therefore still allows message rejection via 455006f25ae9SGregory Neil Shapirothe check_* rulesets). In accordance with the RFC, the MSA will ensure 455113bd1963SGregory Neil Shapirothat all domains in envelope addresses are fully qualified if the message 455213bd1963SGregory Neil Shapirois relayed to another MTA. It will also enforce the normal address syntax 455313bd1963SGregory Neil Shapirorules and log error messages. Additionally, by using the M=a modifier you 455413bd1963SGregory Neil Shapirocan require authentication before messages are accepted by the MSA. 455513bd1963SGregory Neil ShapiroNotice: Do NOT use the 'a' modifier on a public accessible MTA! Finally, 455613bd1963SGregory Neil Shapirothe M=E modifier shown above disables ETRN as required by RFC 2476. 455706f25ae9SGregory Neil Shapiro 455840266059SGregory Neil ShapiroMail filters can be defined using the INPUT_MAIL_FILTER() and MAIL_FILTER() 455940266059SGregory Neil Shapirocommands: 4560c2aa98e2SPeter Wemm 456140266059SGregory Neil Shapiro INPUT_MAIL_FILTER(`sample', `S=local:/var/run/f1.sock') 456240266059SGregory Neil Shapiro MAIL_FILTER(`myfilter', `S=inet:3333@localhost') 456340266059SGregory Neil Shapiro 456440266059SGregory Neil ShapiroThe INPUT_MAIL_FILTER() command causes the filter(s) to be called in the 456540266059SGregory Neil Shapirosame order they were specified by also setting confINPUT_MAIL_FILTERS. A 456640266059SGregory Neil Shapirofilter can be defined without adding it to the input filter list by using 456740266059SGregory Neil ShapiroMAIL_FILTER() instead of INPUT_MAIL_FILTER() in your .mc file. 456840266059SGregory Neil ShapiroAlternatively, you can reset the list of filters and their order by setting 456940266059SGregory Neil ShapiroconfINPUT_MAIL_FILTERS option after all INPUT_MAIL_FILTER() commands in 457040266059SGregory Neil Shapiroyour .mc file. 457140266059SGregory Neil Shapiro 457240266059SGregory Neil Shapiro 457340266059SGregory Neil Shapiro+----------------------------+ 457440266059SGregory Neil Shapiro| MESSAGE SUBMISSION PROGRAM | 457540266059SGregory Neil Shapiro+----------------------------+ 457640266059SGregory Neil Shapiro 457740266059SGregory Neil ShapiroThe purpose of the message submission program (MSP) is explained 457840266059SGregory Neil Shapiroin sendmail/SECURITY. This section contains a list of caveats and 457940266059SGregory Neil Shapiroa few hints how for those who want to tweak the default configuration 458040266059SGregory Neil Shapirofor it (which is installed as submit.cf). 458140266059SGregory Neil Shapiro 458240266059SGregory Neil ShapiroNotice: do not add options/features to submit.mc unless you are 458340266059SGregory Neil Shapiroabsolutely sure you need them. Options you may want to change 458440266059SGregory Neil Shapiroinclude: 458540266059SGregory Neil Shapiro 4586605302a5SGregory Neil Shapiro- confTRUSTED_USERS, FEATURE(`use_ct_file'), and confCT_FILE for 458794c01205SGregory Neil Shapiro avoiding X-Authentication warnings. 4588605302a5SGregory Neil Shapiro- confTIME_ZONE to change it from the default `USE_TZ'. 458940266059SGregory Neil Shapiro- confDELIVERY_MODE is set to interactive in msp.m4 instead 459040266059SGregory Neil Shapiro of the default background mode. 459194c01205SGregory Neil Shapiro- FEATURE(stickyhost) and LOCAL_RELAY to send unqualified addresses 459294c01205SGregory Neil Shapiro to the LOCAL_RELAY instead of the default relay. 459394c01205SGregory Neil Shapiro- confRAND_FILE if you use STARTTLS and sendmail is not compiled with 459494c01205SGregory Neil Shapiro the flag HASURANDOM. 459594c01205SGregory Neil Shapiro 459694c01205SGregory Neil ShapiroThe MSP performs hostname canonicalization by default. As also 459794c01205SGregory Neil Shapiroexplained in sendmail/SECURITY, mail may end up for various DNS 459894c01205SGregory Neil Shapirorelated reasons in the MSP queue. This problem can be minimized by 459994c01205SGregory Neil Shapirousing 460094c01205SGregory Neil Shapiro 460194c01205SGregory Neil Shapiro FEATURE(`nocanonify', `canonify_hosts') 460294c01205SGregory Neil Shapiro define(`confDIRECT_SUBMISSION_MODIFIERS', `C') 460394c01205SGregory Neil Shapiro 460494c01205SGregory Neil ShapiroSee the discussion about nocanonify for possible side effects. 460540266059SGregory Neil Shapiro 460640266059SGregory Neil ShapiroSome things are not intended to work with the MSP. These include 460740266059SGregory Neil Shapirofeatures that influence the delivery process (e.g., mailertable, 460840266059SGregory Neil Shapiroaliases), or those that are only important for a SMTP server (e.g., 460940266059SGregory Neil Shapirovirtusertable, DaemonPortOptions, multiple queues). Moreover, 461040266059SGregory Neil Shapirorelaxing certain restrictions (RestrictQueueRun, permissions on 461140266059SGregory Neil Shapiroqueue directory) or adding features (e.g., enabling prog/file mailer) 461240266059SGregory Neil Shapirocan cause security problems. 461340266059SGregory Neil Shapiro 461440266059SGregory Neil ShapiroOther things don't work well with the MSP and require tweaking or 461540266059SGregory Neil Shapiroworkarounds. For example, to allow for client authentication it 461640266059SGregory Neil Shapirois not just sufficient to provide a client certificate and the 461740266059SGregory Neil Shapirocorresponding key, but it is also necessary to make the key group 461840266059SGregory Neil Shapiro(smmsp) readable and tell sendmail not to complain about that, i.e., 461940266059SGregory Neil Shapiro 462040266059SGregory Neil Shapiro define(`confDONT_BLAME_SENDMAIL', `GroupReadableKeyFile') 462140266059SGregory Neil Shapiro 462240266059SGregory Neil ShapiroIf the MSP should actually use AUTH then the necessary data 462340266059SGregory Neil Shapiroshould be placed in a map as explained in SMTP AUTHENTICATION: 462440266059SGregory Neil Shapiro 462540266059SGregory Neil ShapiroFEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/msp-authinfo') 462640266059SGregory Neil Shapiro 462740266059SGregory Neil Shapiro/etc/mail/msp-authinfo should contain an entry like: 462840266059SGregory Neil Shapiro 462940266059SGregory Neil Shapiro AuthInfo:127.0.0.1 "U:smmsp" "P:secret" "M:DIGEST-MD5" 463040266059SGregory Neil Shapiro 463140266059SGregory Neil ShapiroThe file and the map created by makemap should be owned by smmsp, 463240266059SGregory Neil Shapiroits group should be smmsp, and it should have mode 640. The database 463340266059SGregory Neil Shapiroused by the MTA for AUTH must have a corresponding entry. 463440266059SGregory Neil ShapiroAdditionally the MTA must trust this authentication data so the AUTH= 463540266059SGregory Neil Shapiropart will be relayed on to the next hop. This can be achieved by 463640266059SGregory Neil Shapiroadding the following to your sendmail.mc file: 463740266059SGregory Neil Shapiro 463840266059SGregory Neil Shapiro LOCAL_RULESETS 463940266059SGregory Neil Shapiro SLocal_trust_auth 464040266059SGregory Neil Shapiro R$* $: $&{auth_authen} 464140266059SGregory Neil Shapiro Rsmmsp $# OK 464240266059SGregory Neil Shapiro 4643e92d3f3fSGregory Neil ShapiroNote: the authentication data can leak to local users who invoke 4644e92d3f3fSGregory Neil Shapirothe MSP with debug options or even with -v. For that reason either 4645e92d3f3fSGregory Neil Shapiroan authentication mechanism that does not show the password in the 4646e92d3f3fSGregory Neil ShapiroAUTH dialogue (e.g., DIGEST-MD5) or a different authentication 4647e92d3f3fSGregory Neil Shapiromethod like STARTTLS should be used. 4648e92d3f3fSGregory Neil Shapiro 464940266059SGregory Neil Shapirofeature/msp.m4 defines almost all settings for the MSP. Most of 465040266059SGregory Neil Shapirothose should not be changed at all. Some of the features and options 465140266059SGregory Neil Shapirocan be overridden if really necessary. It is a bit tricky to do 465240266059SGregory Neil Shapirothis, because it depends on the actual way the option is defined 465340266059SGregory Neil Shapiroin feature/msp.m4. If it is directly defined (i.e., define()) then 465440266059SGregory Neil Shapirothe modified value must be defined after 465540266059SGregory Neil Shapiro 465640266059SGregory Neil Shapiro FEATURE(`msp') 465740266059SGregory Neil Shapiro 465840266059SGregory Neil ShapiroIf it is conditionally defined (i.e., ifdef()) then the desired 465940266059SGregory Neil Shapirovalue must be defined before the FEATURE line in the .mc file. 466040266059SGregory Neil ShapiroTo see how the options are defined read feature/msp.m4. 466140266059SGregory Neil Shapiro 466240266059SGregory Neil Shapiro 466340266059SGregory Neil Shapiro+--------------------------+ 466440266059SGregory Neil Shapiro| FORMAT OF FILES AND MAPS | 466540266059SGregory Neil Shapiro+--------------------------+ 466640266059SGregory Neil Shapiro 466740266059SGregory Neil ShapiroFiles that define classes, i.e., F{classname}, consist of lines 466840266059SGregory Neil Shapiroeach of which contains a single element of the class. For example, 466940266059SGregory Neil Shapiro/etc/mail/local-host-names may have the following content: 467040266059SGregory Neil Shapiro 467140266059SGregory Neil Shapiromy.domain 467240266059SGregory Neil Shapiroanother.domain 467340266059SGregory Neil Shapiro 467440266059SGregory Neil ShapiroMaps must be created using makemap(8) , e.g., 467540266059SGregory Neil Shapiro 467640266059SGregory Neil Shapiro makemap hash MAP < MAP 467740266059SGregory Neil Shapiro 467840266059SGregory Neil ShapiroIn general, a text file from which a map is created contains lines 467940266059SGregory Neil Shapiroof the form 468040266059SGregory Neil Shapiro 468140266059SGregory Neil Shapirokey value 468240266059SGregory Neil Shapiro 468340266059SGregory Neil Shapirowhere 'key' and 'value' are also called LHS and RHS, respectively. 468440266059SGregory Neil ShapiroBy default, the delimiter between LHS and RHS is a non-empty sequence 468540266059SGregory Neil Shapiroof white space characters. 468640266059SGregory Neil Shapiro 468740266059SGregory Neil Shapiro 468840266059SGregory Neil Shapiro+------------------+ 468940266059SGregory Neil Shapiro| DIRECTORY LAYOUT | 469040266059SGregory Neil Shapiro+------------------+ 4691c2aa98e2SPeter Wemm 4692c2aa98e2SPeter WemmWithin this directory are several subdirectories, to wit: 4693c2aa98e2SPeter Wemm 4694c2aa98e2SPeter Wemmm4 General support routines. These are typically 4695c2aa98e2SPeter Wemm very important and should not be changed without 4696c2aa98e2SPeter Wemm very careful consideration. 4697c2aa98e2SPeter Wemm 4698c2aa98e2SPeter Wemmcf The configuration files themselves. They have 4699c2aa98e2SPeter Wemm ".mc" suffixes, and must be run through m4 to 4700c2aa98e2SPeter Wemm become complete. The resulting output should 4701c2aa98e2SPeter Wemm have a ".cf" suffix. 4702c2aa98e2SPeter Wemm 4703c2aa98e2SPeter Wemmostype Definitions describing a particular operating 4704c2aa98e2SPeter Wemm system type. These should always be referenced 4705c2aa98e2SPeter Wemm using the OSTYPE macro in the .mc file. Examples 4706c2aa98e2SPeter Wemm include "bsd4.3", "bsd4.4", "sunos3.5", and 4707c2aa98e2SPeter Wemm "sunos4.1". 4708c2aa98e2SPeter Wemm 4709c2aa98e2SPeter Wemmdomain Definitions describing a particular domain, referenced 4710c2aa98e2SPeter Wemm using the DOMAIN macro in the .mc file. These are 4711c2aa98e2SPeter Wemm site dependent; for example, "CS.Berkeley.EDU.m4" 4712c2aa98e2SPeter Wemm describes hosts in the CS.Berkeley.EDU subdomain. 4713c2aa98e2SPeter Wemm 4714c2aa98e2SPeter Wemmmailer Descriptions of mailers. These are referenced using 4715c2aa98e2SPeter Wemm the MAILER macro in the .mc file. 4716c2aa98e2SPeter Wemm 4717c2aa98e2SPeter Wemmsh Shell files used when building the .cf file from the 4718c2aa98e2SPeter Wemm .mc file in the cf subdirectory. 4719c2aa98e2SPeter Wemm 4720c2aa98e2SPeter Wemmfeature These hold special orthogonal features that you might 4721c2aa98e2SPeter Wemm want to include. They should be referenced using 4722c2aa98e2SPeter Wemm the FEATURE macro. 4723c2aa98e2SPeter Wemm 4724c2aa98e2SPeter Wemmhack Local hacks. These can be referenced using the HACK 4725c2aa98e2SPeter Wemm macro. They shouldn't be of more than voyeuristic 4726c2aa98e2SPeter Wemm interest outside the .Berkeley.EDU domain, but who knows? 4727c2aa98e2SPeter Wemm 4728c2aa98e2SPeter Wemmsiteconfig Site configuration -- e.g., tables of locally connected 4729c2aa98e2SPeter Wemm UUCP sites. 4730c2aa98e2SPeter Wemm 4731c2aa98e2SPeter Wemm 4732c2aa98e2SPeter Wemm+------------------------+ 4733c2aa98e2SPeter Wemm| ADMINISTRATIVE DETAILS | 4734c2aa98e2SPeter Wemm+------------------------+ 4735c2aa98e2SPeter Wemm 4736c2aa98e2SPeter WemmThe following sections detail usage of certain internal parts of the 4737c2aa98e2SPeter Wemmsendmail.cf file. Read them carefully if you are trying to modify 4738c2aa98e2SPeter Wemmthe current model. If you find the above descriptions adequate, these 4739c2aa98e2SPeter Wemmshould be {boring, confusing, tedious, ridiculous} (pick one or more). 4740c2aa98e2SPeter Wemm 4741c2aa98e2SPeter WemmRULESETS (* means built in to sendmail) 4742c2aa98e2SPeter Wemm 4743c2aa98e2SPeter Wemm 0 * Parsing 4744c2aa98e2SPeter Wemm 1 * Sender rewriting 4745c2aa98e2SPeter Wemm 2 * Recipient rewriting 4746c2aa98e2SPeter Wemm 3 * Canonicalization 4747c2aa98e2SPeter Wemm 4 * Post cleanup 4748c2aa98e2SPeter Wemm 5 * Local address rewrite (after aliasing) 4749c2aa98e2SPeter Wemm 1x mailer rules (sender qualification) 4750c2aa98e2SPeter Wemm 2x mailer rules (recipient qualification) 4751c2aa98e2SPeter Wemm 3x mailer rules (sender header qualification) 4752c2aa98e2SPeter Wemm 4x mailer rules (recipient header qualification) 4753c2aa98e2SPeter Wemm 5x mailer subroutines (general) 4754c2aa98e2SPeter Wemm 6x mailer subroutines (general) 4755c2aa98e2SPeter Wemm 7x mailer subroutines (general) 4756c2aa98e2SPeter Wemm 8x reserved 4757c2aa98e2SPeter Wemm 90 Mailertable host stripping 4758c2aa98e2SPeter Wemm 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail) 4759c2aa98e2SPeter Wemm 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail) 4760c2aa98e2SPeter Wemm 98 Local part of ruleset 0 (ruleset 8 in old sendmail) 4761c2aa98e2SPeter Wemm 4762c2aa98e2SPeter Wemm 4763c2aa98e2SPeter WemmMAILERS 4764c2aa98e2SPeter Wemm 4765c2aa98e2SPeter Wemm 0 local, prog local and program mailers 4766c2aa98e2SPeter Wemm 1 [e]smtp, relay SMTP channel 4767c2aa98e2SPeter Wemm 2 uucp-* UNIX-to-UNIX Copy Program 4768c2aa98e2SPeter Wemm 3 netnews Network News delivery 4769c2aa98e2SPeter Wemm 4 fax Sam Leffler's HylaFAX software 4770c2aa98e2SPeter Wemm 5 mail11 DECnet mailer 4771c2aa98e2SPeter Wemm 4772c2aa98e2SPeter Wemm 4773c2aa98e2SPeter WemmMACROS 4774c2aa98e2SPeter Wemm 4775c2aa98e2SPeter Wemm A 4776c2aa98e2SPeter Wemm B Bitnet Relay 4777c2aa98e2SPeter Wemm C DECnet Relay 4778c2aa98e2SPeter Wemm D The local domain -- usually not needed 4779c2aa98e2SPeter Wemm E reserved for X.400 Relay 4780c2aa98e2SPeter Wemm F FAX Relay 4781c2aa98e2SPeter Wemm G 4782c2aa98e2SPeter Wemm H mail Hub (for mail clusters) 4783c2aa98e2SPeter Wemm I 4784c2aa98e2SPeter Wemm J 4785c2aa98e2SPeter Wemm K 4786c2aa98e2SPeter Wemm L Luser Relay 478706f25ae9SGregory Neil Shapiro M Masquerade (who you claim to be) 4788c2aa98e2SPeter Wemm N 4789c2aa98e2SPeter Wemm O 4790c2aa98e2SPeter Wemm P 4791c2aa98e2SPeter Wemm Q 4792c2aa98e2SPeter Wemm R Relay (for unqualified names) 4793c2aa98e2SPeter Wemm S Smart Host 4794c2aa98e2SPeter Wemm T 479506f25ae9SGregory Neil Shapiro U my UUCP name (if you have a UUCP connection) 479606f25ae9SGregory Neil Shapiro V UUCP Relay (class {V} hosts) 479706f25ae9SGregory Neil Shapiro W UUCP Relay (class {W} hosts) 479806f25ae9SGregory Neil Shapiro X UUCP Relay (class {X} hosts) 4799c2aa98e2SPeter Wemm Y UUCP Relay (all other hosts) 4800c2aa98e2SPeter Wemm Z Version number 4801c2aa98e2SPeter Wemm 4802c2aa98e2SPeter Wemm 4803c2aa98e2SPeter WemmCLASSES 4804c2aa98e2SPeter Wemm 4805c2aa98e2SPeter Wemm A 4806c2aa98e2SPeter Wemm B domains that are candidates for bestmx lookup 4807c2aa98e2SPeter Wemm C 4808c2aa98e2SPeter Wemm D 4809c2aa98e2SPeter Wemm E addresses that should not seem to come from $M 481006f25ae9SGregory Neil Shapiro F hosts this system forward for 4811c2aa98e2SPeter Wemm G domains that should be looked up in genericstable 4812c2aa98e2SPeter Wemm H 4813c2aa98e2SPeter Wemm I 4814c2aa98e2SPeter Wemm J 4815c2aa98e2SPeter Wemm K 4816c2aa98e2SPeter Wemm L addresses that should not be forwarded to $R 4817c2aa98e2SPeter Wemm M domains that should be mapped to $M 481806f25ae9SGregory Neil Shapiro N host/domains that should not be mapped to $M 4819c2aa98e2SPeter Wemm O operators that indicate network operations (cannot be in local names) 4820c2aa98e2SPeter Wemm P top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc. 4821c2aa98e2SPeter Wemm Q 482206f25ae9SGregory Neil Shapiro R domains this system is willing to relay (pass anti-spam filters) 4823c2aa98e2SPeter Wemm S 4824c2aa98e2SPeter Wemm T 4825c2aa98e2SPeter Wemm U locally connected UUCP hosts 4826c2aa98e2SPeter Wemm V UUCP hosts connected to relay $V 4827c2aa98e2SPeter Wemm W UUCP hosts connected to relay $W 4828c2aa98e2SPeter Wemm X UUCP hosts connected to relay $X 4829c2aa98e2SPeter Wemm Y locally connected smart UUCP hosts 4830c2aa98e2SPeter Wemm Z locally connected domain-ized UUCP hosts 4831c2aa98e2SPeter Wemm . the class containing only a dot 4832c2aa98e2SPeter Wemm [ the class containing only a left bracket 4833c2aa98e2SPeter Wemm 4834c2aa98e2SPeter Wemm 4835c2aa98e2SPeter WemmM4 DIVERSIONS 4836c2aa98e2SPeter Wemm 4837c2aa98e2SPeter Wemm 1 Local host detection and resolution 4838c2aa98e2SPeter Wemm 2 Local Ruleset 3 additions 4839c2aa98e2SPeter Wemm 3 Local Ruleset 0 additions 4840c2aa98e2SPeter Wemm 4 UUCP Ruleset 0 additions 4841c2aa98e2SPeter Wemm 5 locally interpreted names (overrides $R) 4842c2aa98e2SPeter Wemm 6 local configuration (at top of file) 4843c2aa98e2SPeter Wemm 7 mailer definitions 48445b0945b5SGregory Neil Shapiro 8 DNS based blocklists 4845c2aa98e2SPeter Wemm 9 special local rulesets (1 and 2) 484606f25ae9SGregory Neil Shapiro 4847