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 3140266059SGregory Neil ShapiroSTARTTLS 3240266059SGregory Neil ShapiroSMTP AUTHENTICATION 3340266059SGregory Neil ShapiroADDING NEW MAILERS OR RULESETS 3440266059SGregory Neil ShapiroADDING NEW MAIL FILTERS 3540266059SGregory Neil ShapiroQUEUE GROUP DEFINITIONS 3640266059SGregory Neil ShapiroNON-SMTP BASED CONFIGURATIONS 3740266059SGregory Neil ShapiroWHO AM I? 3840266059SGregory Neil ShapiroACCEPTING MAIL FOR MULTIPLE NAMES 3940266059SGregory Neil ShapiroUSING MAILERTABLES 4040266059SGregory Neil ShapiroUSING USERDB TO MAP FULL NAMES 4140266059SGregory Neil ShapiroMISCELLANEOUS SPECIAL FEATURES 4240266059SGregory Neil ShapiroSECURITY NOTES 4340266059SGregory Neil ShapiroTWEAKING CONFIGURATION OPTIONS 4440266059SGregory Neil ShapiroMESSAGE SUBMISSION PROGRAM 4540266059SGregory Neil ShapiroFORMAT OF FILES AND MAPS 4640266059SGregory Neil ShapiroDIRECTORY LAYOUT 4740266059SGregory Neil ShapiroADMINISTRATIVE DETAILS 48c2aa98e2SPeter Wemm 49c2aa98e2SPeter Wemm 50c2aa98e2SPeter Wemm+--------------------------+ 51c2aa98e2SPeter Wemm| INTRODUCTION AND EXAMPLE | 52c2aa98e2SPeter Wemm+--------------------------+ 53c2aa98e2SPeter Wemm 54c2aa98e2SPeter WemmConfiguration files are contained in the subdirectory "cf", with a 55c2aa98e2SPeter Wemmsuffix ".mc". They must be run through "m4" to produce a ".cf" file. 56c2aa98e2SPeter WemmYou must pre-load "cf.m4": 57c2aa98e2SPeter Wemm 58c2aa98e2SPeter Wemm m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf 59c2aa98e2SPeter Wemm 6006f25ae9SGregory Neil ShapiroAlternatively, you can simply: 6106f25ae9SGregory Neil Shapiro 6206f25ae9SGregory Neil Shapiro cd ${CFDIR}/cf 6306f25ae9SGregory Neil Shapiro ./Build config.cf 6406f25ae9SGregory Neil Shapiro 65c2aa98e2SPeter Wemmwhere ${CFDIR} is the root of the cf directory and config.mc is the 66c2aa98e2SPeter Wemmname of your configuration file. If you are running a version of M4 67c2aa98e2SPeter Wemmthat understands the __file__ builtin (versions of GNU m4 >= 0.75 do 68c2aa98e2SPeter Wemmthis, but the versions distributed with 4.4BSD and derivatives do not) 69c2aa98e2SPeter Wemmor the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory. 70c2aa98e2SPeter WemmFor "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST 71c2aa98e2SPeter Wemmuse -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash! For example: 72c2aa98e2SPeter Wemm 73c2aa98e2SPeter Wemm m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf 74c2aa98e2SPeter Wemm 75c2aa98e2SPeter WemmLet's examine a typical .mc file: 76c2aa98e2SPeter Wemm 77c2aa98e2SPeter Wemm divert(-1) 78c2aa98e2SPeter Wemm # 7940266059SGregory Neil Shapiro # Copyright (c) 1998-2002 Sendmail, Inc. and its suppliers. 8006f25ae9SGregory Neil Shapiro # All rights reserved. 81c2aa98e2SPeter Wemm # Copyright (c) 1983 Eric P. Allman. All rights reserved. 82c2aa98e2SPeter Wemm # Copyright (c) 1988, 1993 83c2aa98e2SPeter Wemm # The Regents of the University of California. All rights reserved. 84c2aa98e2SPeter Wemm # 85c2aa98e2SPeter Wemm # By using this file, you agree to the terms and conditions set 86c2aa98e2SPeter Wemm # forth in the LICENSE file which can be found at the top level of 87c2aa98e2SPeter Wemm # the sendmail distribution. 88c2aa98e2SPeter Wemm # 89c2aa98e2SPeter Wemm 90c2aa98e2SPeter Wemm # 91c2aa98e2SPeter Wemm # This is a Berkeley-specific configuration file for HP-UX 9.x. 92c2aa98e2SPeter Wemm # It applies only to the Computer Science Division at Berkeley, 93c2aa98e2SPeter Wemm # and should not be used elsewhere. It is provided on the sendmail 94c2aa98e2SPeter Wemm # distribution as a sample only. To create your own configuration 95c2aa98e2SPeter Wemm # file, create an appropriate domain file in ../domain, change the 96c2aa98e2SPeter Wemm # `DOMAIN' macro below to reference that file, and copy the result 97c2aa98e2SPeter Wemm # to a name of your own choosing. 98c2aa98e2SPeter Wemm # 99c2aa98e2SPeter Wemm divert(0) 100c2aa98e2SPeter Wemm 101c2aa98e2SPeter WemmThe divert(-1) will delete the crud in the resulting output file. 102c2aa98e2SPeter WemmThe copyright notice can be replaced by whatever your lawyers require; 10306f25ae9SGregory Neil Shapiroour lawyers require the one that is included in these files. A copyleft 104c2aa98e2SPeter Wemmis a copyright by another name. The divert(0) restores regular output. 105c2aa98e2SPeter Wemm 106c2aa98e2SPeter Wemm VERSIONID(`<SCCS or RCS version id>') 107c2aa98e2SPeter Wemm 108c2aa98e2SPeter WemmVERSIONID is a macro that stuffs the version information into the 10906f25ae9SGregory Neil Shapiroresulting file. You could use SCCS, RCS, CVS, something else, or 110c2aa98e2SPeter Wemmomit it completely. This is not the same as the version id included 111c2aa98e2SPeter Wemmin SMTP greeting messages -- this is defined in m4/version.m4. 112c2aa98e2SPeter Wemm 11306f25ae9SGregory Neil Shapiro OSTYPE(`hpux9')dnl 114c2aa98e2SPeter Wemm 115c2aa98e2SPeter WemmYou must specify an OSTYPE to properly configure things such as the 116c2aa98e2SPeter Wemmpathname of the help and status files, the flags needed for the local 117c2aa98e2SPeter Wemmmailer, and other important things. If you omit it, you will get an 118c2aa98e2SPeter Wemmerror when you try to build the configuration. Look at the ostype 119c2aa98e2SPeter Wemmdirectory for the list of known operating system types. 120c2aa98e2SPeter Wemm 12106f25ae9SGregory Neil Shapiro DOMAIN(`CS.Berkeley.EDU')dnl 122c2aa98e2SPeter Wemm 123c2aa98e2SPeter WemmThis example is specific to the Computer Science Division at Berkeley. 12406f25ae9SGregory Neil ShapiroYou can use "DOMAIN(`generic')" to get a sufficiently bland definition 125c2aa98e2SPeter Wemmthat may well work for you, or you can create a customized domain 126c2aa98e2SPeter Wemmdefinition appropriate for your environment. 127c2aa98e2SPeter Wemm 12806f25ae9SGregory Neil Shapiro MAILER(`local') 12906f25ae9SGregory Neil Shapiro MAILER(`smtp') 130c2aa98e2SPeter Wemm 13140266059SGregory Neil ShapiroThese describe the mailers used at the default CS site. The local 13240266059SGregory Neil Shapiromailer is always included automatically. Beware: MAILER declarations 13340266059SGregory Neil Shapiroshould always be at the end of the configuration file. The general 13440266059SGregory Neil Shapirorules are that the order should be: 135c2aa98e2SPeter Wemm 136c2aa98e2SPeter Wemm VERSIONID 137c2aa98e2SPeter Wemm OSTYPE 138c2aa98e2SPeter Wemm DOMAIN 139c2aa98e2SPeter Wemm FEATURE 140c2aa98e2SPeter Wemm local macro definitions 141c2aa98e2SPeter Wemm MAILER 14240266059SGregory Neil Shapiro LOCAL_CONFIG 14306f25ae9SGregory Neil Shapiro LOCAL_RULE_* 14406f25ae9SGregory Neil Shapiro LOCAL_RULESETS 14506f25ae9SGregory Neil Shapiro 14606f25ae9SGregory Neil ShapiroThere are a few exceptions to this rule. Local macro definitions which 14706f25ae9SGregory Neil Shapiroinfluence a FEATURE() should be done before that feature. For example, 14806f25ae9SGregory Neil Shapiroa define(`PROCMAIL_MAILER_PATH', ...) should be done before 14906f25ae9SGregory Neil ShapiroFEATURE(`local_procmail'). 150c2aa98e2SPeter Wemm 15140266059SGregory Neil Shapiro******************************************************************* 15240266059SGregory Neil Shapiro*** BE SURE YOU CUSTOMIZE THESE FILES! They have some *** 15340266059SGregory Neil Shapiro*** Berkeley-specific assumptions built in, such as the name *** 15440266059SGregory Neil Shapiro*** of their UUCP-relay. You'll want to create your own *** 15540266059SGregory Neil Shapiro*** domain description, and use that in place of *** 15640266059SGregory Neil Shapiro*** domain/Berkeley.EDU.m4. *** 15740266059SGregory Neil Shapiro******************************************************************* 15840266059SGregory Neil Shapiro 159c2aa98e2SPeter Wemm 160c2aa98e2SPeter Wemm+----------------------------+ 161c2aa98e2SPeter Wemm| A BRIEF INTRODUCTION TO M4 | 162c2aa98e2SPeter Wemm+----------------------------+ 163c2aa98e2SPeter Wemm 164c2aa98e2SPeter WemmSendmail uses the M4 macro processor to ``compile'' the configuration 165c2aa98e2SPeter Wemmfiles. The most important thing to know is that M4 is stream-based, 166c2aa98e2SPeter Wemmthat is, it doesn't understand about lines. For this reason, in some 167c2aa98e2SPeter Wemmplaces you may see the word ``dnl'', which stands for ``delete 168c2aa98e2SPeter Wemmthrough newline''; essentially, it deletes all characters starting 169c2aa98e2SPeter Wemmat the ``dnl'' up to and including the next newline character. In 170c2aa98e2SPeter Wemmmost cases sendmail uses this only to avoid lots of unnecessary 171c2aa98e2SPeter Wemmblank lines in the output. 172c2aa98e2SPeter Wemm 173c2aa98e2SPeter WemmOther important directives are define(A, B) which defines the macro 174c2aa98e2SPeter Wemm``A'' to have value ``B''. Macros are expanded as they are read, so 175c2aa98e2SPeter Wemmone normally quotes both values to prevent expansion. For example, 176c2aa98e2SPeter Wemm 177c2aa98e2SPeter Wemm define(`SMART_HOST', `smart.foo.com') 178c2aa98e2SPeter Wemm 179c2aa98e2SPeter WemmOne word of warning: M4 macros are expanded even in lines that appear 180c2aa98e2SPeter Wemmto be comments. For example, if you have 181c2aa98e2SPeter Wemm 18206f25ae9SGregory Neil Shapiro # See FEATURE(`foo') above 183c2aa98e2SPeter Wemm 18406f25ae9SGregory Neil Shapiroit will not do what you expect, because the FEATURE(`foo') will be 185c2aa98e2SPeter Wemmexpanded. This also applies to 186c2aa98e2SPeter Wemm 187c2aa98e2SPeter Wemm # And then define the $X macro to be the return address 188c2aa98e2SPeter Wemm 189c2aa98e2SPeter Wemmbecause ``define'' is an M4 keyword. If you want to use them, surround 190c2aa98e2SPeter Wemmthem with directed quotes, `like this'. 191c2aa98e2SPeter Wemm 19240266059SGregory Neil Shapiro 19340266059SGregory Neil ShapiroNotice: 19440266059SGregory Neil Shapiro------- 19540266059SGregory Neil Shapiro 19640266059SGregory Neil ShapiroThis package requires a post-V7 version of m4; if you are running the 19740266059SGregory Neil Shapiro4.2bsd, SysV.2, or 7th Edition version. SunOS's /usr/5bin/m4 or 19840266059SGregory Neil ShapiroBSD-Net/2's m4 both work. GNU m4 version 1.1 or later also works. 19940266059SGregory Neil ShapiroUnfortunately, the M4 on BSDI 1.0 doesn't work -- you'll have to use a 20040266059SGregory Neil ShapiroNet/2 or GNU version. GNU m4 is available from 20140266059SGregory Neil Shapiroftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the latest version). 20240266059SGregory Neil ShapiroEXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x is fine). Use GNU 20340266059SGregory Neil Shapirom4 on this platform. 20440266059SGregory Neil Shapiro 20540266059SGregory Neil Shapiro 206c2aa98e2SPeter Wemm+----------------+ 207c2aa98e2SPeter Wemm| FILE LOCATIONS | 208c2aa98e2SPeter Wemm+----------------+ 209c2aa98e2SPeter Wemm 210c2aa98e2SPeter Wemmsendmail 8.9 has introduced a new configuration directory for sendmail 211c2aa98e2SPeter Wemmrelated files, /etc/mail. The new files available for sendmail 8.9 -- 21206f25ae9SGregory Neil Shapirothe class {R} /etc/mail/relay-domains and the access database 21306f25ae9SGregory Neil Shapiro/etc/mail/access -- take advantage of this new directory. Beginning with 21406f25ae9SGregory Neil Shapiro8.10, all files will use this directory by default (some options may be 21506f25ae9SGregory Neil Shapiroset by OSTYPE() files). This new directory should help to restore 21606f25ae9SGregory Neil Shapirouniformity to sendmail's file locations. 21706f25ae9SGregory Neil Shapiro 21806f25ae9SGregory Neil ShapiroBelow is a table of some of the common changes: 21906f25ae9SGregory Neil Shapiro 22006f25ae9SGregory Neil ShapiroOld filename New filename 22106f25ae9SGregory Neil Shapiro------------ ------------ 22206f25ae9SGregory Neil Shapiro/etc/bitdomain /etc/mail/bitdomain 22306f25ae9SGregory Neil Shapiro/etc/domaintable /etc/mail/domaintable 22406f25ae9SGregory Neil Shapiro/etc/genericstable /etc/mail/genericstable 22506f25ae9SGregory Neil Shapiro/etc/uudomain /etc/mail/uudomain 22606f25ae9SGregory Neil Shapiro/etc/virtusertable /etc/mail/virtusertable 22706f25ae9SGregory Neil Shapiro/etc/userdb /etc/mail/userdb 22806f25ae9SGregory Neil Shapiro 22906f25ae9SGregory Neil Shapiro/etc/aliases /etc/mail/aliases 23006f25ae9SGregory Neil Shapiro/etc/sendmail/aliases /etc/mail/aliases 23106f25ae9SGregory Neil Shapiro/etc/ucbmail/aliases /etc/mail/aliases 23206f25ae9SGregory Neil Shapiro/usr/adm/sendmail/aliases /etc/mail/aliases 23306f25ae9SGregory Neil Shapiro/usr/lib/aliases /etc/mail/aliases 23406f25ae9SGregory Neil Shapiro/usr/lib/mail/aliases /etc/mail/aliases 23506f25ae9SGregory Neil Shapiro/usr/ucblib/aliases /etc/mail/aliases 23606f25ae9SGregory Neil Shapiro 23706f25ae9SGregory Neil Shapiro/etc/sendmail.cw /etc/mail/local-host-names 23806f25ae9SGregory Neil Shapiro/etc/mail/sendmail.cw /etc/mail/local-host-names 23906f25ae9SGregory Neil Shapiro/etc/sendmail/sendmail.cw /etc/mail/local-host-names 24006f25ae9SGregory Neil Shapiro 24106f25ae9SGregory Neil Shapiro/etc/sendmail.ct /etc/mail/trusted-users 24206f25ae9SGregory Neil Shapiro 24306f25ae9SGregory Neil Shapiro/etc/sendmail.oE /etc/mail/error-header 24406f25ae9SGregory Neil Shapiro 24506f25ae9SGregory Neil Shapiro/etc/sendmail.hf /etc/mail/helpfile 24606f25ae9SGregory Neil Shapiro/etc/mail/sendmail.hf /etc/mail/helpfile 24706f25ae9SGregory Neil Shapiro/usr/ucblib/sendmail.hf /etc/mail/helpfile 24806f25ae9SGregory Neil Shapiro/etc/ucbmail/sendmail.hf /etc/mail/helpfile 24906f25ae9SGregory Neil Shapiro/usr/lib/sendmail.hf /etc/mail/helpfile 25006f25ae9SGregory Neil Shapiro/usr/share/lib/sendmail.hf /etc/mail/helpfile 25106f25ae9SGregory Neil Shapiro/usr/share/misc/sendmail.hf /etc/mail/helpfile 25206f25ae9SGregory Neil Shapiro/share/misc/sendmail.hf /etc/mail/helpfile 25306f25ae9SGregory Neil Shapiro 25406f25ae9SGregory Neil Shapiro/etc/service.switch /etc/mail/service.switch 25506f25ae9SGregory Neil Shapiro 25606f25ae9SGregory Neil Shapiro/etc/sendmail.st /etc/mail/statistics 25706f25ae9SGregory Neil Shapiro/etc/mail/sendmail.st /etc/mail/statistics 25806f25ae9SGregory Neil Shapiro/etc/mailer/sendmail.st /etc/mail/statistics 25906f25ae9SGregory Neil Shapiro/etc/sendmail/sendmail.st /etc/mail/statistics 26006f25ae9SGregory Neil Shapiro/usr/lib/sendmail.st /etc/mail/statistics 26106f25ae9SGregory Neil Shapiro/usr/ucblib/sendmail.st /etc/mail/statistics 26206f25ae9SGregory Neil Shapiro 26306f25ae9SGregory Neil ShapiroNote that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR 26406f25ae9SGregory Neil Shapiroto create the pathnames. The default value of this variable is 26506f25ae9SGregory Neil Shapiro`/etc/mail/'. If you set this macro to a different value, you MUST include 26606f25ae9SGregory Neil Shapiroa trailing slash. 267c2aa98e2SPeter Wemm 26813058a91SGregory Neil ShapiroNotice: all filenames used in a .mc (or .cf) file should be absolute 26913058a91SGregory Neil Shapiro(starting at the root, i.e., with '/'). Relative filenames most 27013058a91SGregory Neil Shapirolikely cause surprises during operations (unless otherwise noted). 27113058a91SGregory Neil Shapiro 27213058a91SGregory Neil Shapiro 273c2aa98e2SPeter Wemm+--------+ 274c2aa98e2SPeter Wemm| OSTYPE | 275c2aa98e2SPeter Wemm+--------+ 276c2aa98e2SPeter Wemm 277c2aa98e2SPeter WemmYou MUST define an operating system environment, or the configuration 278c2aa98e2SPeter Wemmfile build will puke. There are several environments available; look 279c2aa98e2SPeter Wemmat the "ostype" directory for the current list. This macro changes 280c2aa98e2SPeter Wemmthings like the location of the alias file and queue directory. Some 281c2aa98e2SPeter Wemmof these files are identical to one another. 282c2aa98e2SPeter Wemm 283c2aa98e2SPeter WemmIt is IMPERATIVE that the OSTYPE occur before any MAILER definitions. 284c2aa98e2SPeter WemmIn general, the OSTYPE macro should go immediately after any version 285c2aa98e2SPeter Wemminformation, and MAILER definitions should always go last. 286c2aa98e2SPeter Wemm 287c2aa98e2SPeter WemmOperating system definitions are usually easy to write. They may define 288c2aa98e2SPeter Wemmthe following variables (everything defaults, so an ostype file may be 289c2aa98e2SPeter Wemmempty). Unfortunately, the list of configuration-supported systems is 290c2aa98e2SPeter Wemmnot as broad as the list of source-supported systems, since many of 291c2aa98e2SPeter Wemmthe source contributors do not include corresponding ostype files. 292c2aa98e2SPeter Wemm 29306f25ae9SGregory Neil ShapiroALIAS_FILE [/etc/mail/aliases] The location of the text version 294c2aa98e2SPeter Wemm of the alias file(s). It can be a comma-separated 295c2aa98e2SPeter Wemm list of names (but be sure you quote values with 296c2aa98e2SPeter Wemm commas in them -- for example, use 297c2aa98e2SPeter Wemm define(`ALIAS_FILE', `a,b') 298c2aa98e2SPeter Wemm to get "a" and "b" both listed as alias files; 299c2aa98e2SPeter Wemm otherwise the define() primitive only sees "a"). 30006f25ae9SGregory Neil ShapiroHELP_FILE [/etc/mail/helpfile] The name of the file 301c2aa98e2SPeter Wemm containing information printed in response to 302c2aa98e2SPeter Wemm the SMTP HELP command. 303c2aa98e2SPeter WemmQUEUE_DIR [/var/spool/mqueue] The directory containing 30406f25ae9SGregory Neil Shapiro queue files. To use multiple queues, supply 30506f25ae9SGregory Neil Shapiro a value ending with an asterisk. For 306602a2b1bSGregory Neil Shapiro example, /var/spool/mqueue/qd* will use all of the 30706f25ae9SGregory Neil Shapiro directories or symbolic links to directories 308602a2b1bSGregory Neil Shapiro beginning with 'qd' in /var/spool/mqueue as queue 30906f25ae9SGregory Neil Shapiro directories. The names 'qf', 'df', and 'xf' are 310602a2b1bSGregory Neil Shapiro reserved as specific subdirectories for the 311602a2b1bSGregory Neil Shapiro corresponding queue file types as explained in 31240266059SGregory Neil Shapiro doc/op/op.me. See also QUEUE GROUP DEFINITIONS. 31340266059SGregory Neil ShapiroMSP_QUEUE_DIR [/var/spool/clientmqueue] The directory containing 31440266059SGregory Neil Shapiro queue files for the MSP (Mail Submission Program, 31540266059SGregory Neil Shapiro see sendmail/SECURITY). 31606f25ae9SGregory Neil ShapiroSTATUS_FILE [/etc/mail/statistics] The file containing status 317c2aa98e2SPeter Wemm information. 318c2aa98e2SPeter WemmLOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail. 31906f25ae9SGregory Neil ShapiroLOCAL_MAILER_FLAGS [Prmn9] The flags used by the local mailer. The 32006f25ae9SGregory Neil Shapiro flags lsDFMAw5:/|@q are always included. 321c2aa98e2SPeter WemmLOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local 322c2aa98e2SPeter Wemm mail. 323c2aa98e2SPeter WemmLOCAL_MAILER_MAX [undefined] If defined, the maximum size of local 324c2aa98e2SPeter Wemm mail that you are willing to accept. 32506f25ae9SGregory Neil ShapiroLOCAL_MAILER_MAXMSGS [undefined] If defined, the maximum number of 32606f25ae9SGregory Neil Shapiro messages to deliver in a single connection. Only 32706f25ae9SGregory Neil Shapiro useful for LMTP local mailers. 328c2aa98e2SPeter WemmLOCAL_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 329c2aa98e2SPeter Wemm that ARRIVE from an address that resolves to the 330c2aa98e2SPeter Wemm local mailer and which are converted to MIME will be 331c2aa98e2SPeter Wemm labeled with this character set. 33206f25ae9SGregory Neil ShapiroLOCAL_MAILER_EOL [undefined] If defined, the string to use as the 33306f25ae9SGregory Neil Shapiro end of line for the local mailer. 33406f25ae9SGregory Neil ShapiroLOCAL_MAILER_DSN_DIAGNOSTIC_CODE 33506f25ae9SGregory Neil Shapiro [X-Unix] The DSN Diagnostic-Code value for the 33606f25ae9SGregory Neil Shapiro local mailer. This should be changed with care. 337c2aa98e2SPeter WemmLOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email. 338c2aa98e2SPeter WemmLOCAL_SHELL_FLAGS [eu9] The flags used by the shell mailer. The 339c2aa98e2SPeter Wemm flags lsDFM are always included. 340c2aa98e2SPeter WemmLOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog" 341c2aa98e2SPeter Wemm mail. 342c2aa98e2SPeter WemmLOCAL_SHELL_DIR [$z:/] The directory search path in which the 343c2aa98e2SPeter Wemm shell should run. 34440266059SGregory Neil ShapiroLOCAL_MAILER_QGRP [undefined] The queue group for the local mailer. 345c2aa98e2SPeter WemmUSENET_MAILER_PATH [/usr/lib/news/inews] The name of the program 346c2aa98e2SPeter Wemm used to submit news. 34706f25ae9SGregory Neil ShapiroUSENET_MAILER_FLAGS [rsDFMmn] The mailer flags for the usenet mailer. 348c2aa98e2SPeter WemmUSENET_MAILER_ARGS [-m -h -n] The command line arguments for the 34940266059SGregory Neil Shapiro usenet mailer. NOTE: Some versions of inews 35040266059SGregory Neil Shapiro (such as those shipped with newer versions of INN) 35140266059SGregory Neil Shapiro use different flags. Double check the defaults 35240266059SGregory Neil Shapiro against the inews man page. 353c2aa98e2SPeter WemmUSENET_MAILER_MAX [100000] The maximum size of messages that will 354c2aa98e2SPeter Wemm be accepted by the usenet mailer. 35540266059SGregory Neil ShapiroUSENET_MAILER_QGRP [undefined] The queue group for the usenet mailer. 356c2aa98e2SPeter WemmSMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default 35706f25ae9SGregory Neil Shapiro flags are `mDFMuX' for all SMTP-based mailers; the 35806f25ae9SGregory Neil Shapiro "esmtp" mailer adds `a'; "smtp8" adds `8'; and 35906f25ae9SGregory Neil Shapiro "dsmtp" adds `%'. 36006f25ae9SGregory Neil ShapiroRELAY_MAILER_FLAGS [undefined] Flags added to the relay mailer. Default 36106f25ae9SGregory Neil Shapiro flags are `mDFMuX' for all SMTP-based mailers; the 36206f25ae9SGregory Neil Shapiro relay mailer adds `a8'. If this is not defined, 36306f25ae9SGregory Neil Shapiro then SMTP_MAILER_FLAGS is used. 364c2aa98e2SPeter WemmSMTP_MAILER_MAX [undefined] The maximum size of messages that will 36506f25ae9SGregory Neil Shapiro be transported using the smtp, smtp8, esmtp, or dsmtp 366c2aa98e2SPeter Wemm mailers. 36706f25ae9SGregory Neil ShapiroSMTP_MAILER_MAXMSGS [undefined] If defined, the maximum number of 36806f25ae9SGregory Neil Shapiro messages to deliver in a single connection for the 36906f25ae9SGregory Neil Shapiro smtp, smtp8, esmtp, or dsmtp mailers. 370605302a5SGregory Neil ShapiroSMTP_MAILER_MAXRCPTS [undefined] If defined, the maximum number of 371605302a5SGregory Neil Shapiro recipients to deliver in a single connection for the 372605302a5SGregory Neil Shapiro smtp, smtp8, esmtp, or dsmtp mailers. 37342e5d165SGregory Neil ShapiroSMTP_MAILER_ARGS [TCP $h] The arguments passed to the smtp mailer. 374c2aa98e2SPeter Wemm About the only reason you would want to change this 375c2aa98e2SPeter Wemm would be to change the default port. 37642e5d165SGregory Neil ShapiroESMTP_MAILER_ARGS [TCP $h] The arguments passed to the esmtp mailer. 37742e5d165SGregory Neil ShapiroSMTP8_MAILER_ARGS [TCP $h] The arguments passed to the smtp8 mailer. 37842e5d165SGregory Neil ShapiroDSMTP_MAILER_ARGS [TCP $h] The arguments passed to the dsmtp mailer. 37942e5d165SGregory Neil ShapiroRELAY_MAILER_ARGS [TCP $h] The arguments passed to the relay mailer. 38040266059SGregory Neil ShapiroSMTP_MAILER_QGRP [undefined] The queue group for the smtp mailer. 38140266059SGregory Neil ShapiroESMTP_MAILER_QGRP [undefined] The queue group for the esmtp mailer. 38240266059SGregory Neil ShapiroSMTP8_MAILER_QGRP [undefined] The queue group for the smtp8 mailer. 38340266059SGregory Neil ShapiroDSMTP_MAILER_QGRP [undefined] The queue group for the dsmtp mailer. 38440266059SGregory Neil ShapiroRELAY_MAILER_QGRP [undefined] The queue group for the relay mailer. 38506f25ae9SGregory Neil ShapiroRELAY_MAILER_MAXMSGS [undefined] If defined, the maximum number of 38606f25ae9SGregory Neil Shapiro messages to deliver in a single connection for the 38706f25ae9SGregory Neil Shapiro relay mailer. 388c2aa98e2SPeter WemmSMTP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 389c2aa98e2SPeter Wemm that ARRIVE from an address that resolves to one of 390c2aa98e2SPeter Wemm the SMTP mailers and which are converted to MIME will 391c2aa98e2SPeter Wemm be labeled with this character set. 392c2aa98e2SPeter WemmUUCP_MAILER_PATH [/usr/bin/uux] The program used to send UUCP mail. 393c2aa98e2SPeter WemmUUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default 394c2aa98e2SPeter Wemm flags are `DFMhuU' (and `m' for uucp-new mailer, 395c2aa98e2SPeter Wemm minus `U' for uucp-dom mailer). 396c2aa98e2SPeter WemmUUCP_MAILER_ARGS [uux - -r -z -a$g -gC $h!rmail ($u)] The arguments 397c2aa98e2SPeter Wemm passed to the UUCP mailer. 398c2aa98e2SPeter WemmUUCP_MAILER_MAX [100000] The maximum size message accepted for 399c2aa98e2SPeter Wemm transmission by the UUCP mailers. 400c2aa98e2SPeter WemmUUCP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 401c2aa98e2SPeter Wemm that ARRIVE from an address that resolves to one of 402c2aa98e2SPeter Wemm the UUCP mailers and which are converted to MIME will 403c2aa98e2SPeter Wemm be labeled with this character set. 40440266059SGregory Neil ShapiroUUCP_MAILER_QGRP [undefined] The queue group for the UUCP mailers. 405c2aa98e2SPeter WemmFAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to 406c2aa98e2SPeter Wemm submit FAX messages. 407c2aa98e2SPeter WemmFAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX 408c2aa98e2SPeter Wemm mailer. 409c2aa98e2SPeter WemmFAX_MAILER_MAX [100000] The maximum size message accepted for 410c2aa98e2SPeter Wemm transmission by FAX. 411c2aa98e2SPeter WemmPOP_MAILER_PATH [/usr/lib/mh/spop] The pathname of the POP mailer. 41206f25ae9SGregory Neil ShapiroPOP_MAILER_FLAGS [Penu] Flags added to POP mailer. Flags lsDFMq 413c2aa98e2SPeter Wemm are always added. 414c2aa98e2SPeter WemmPOP_MAILER_ARGS [pop $u] The arguments passed to the POP mailer. 41540266059SGregory Neil ShapiroPOP_MAILER_QGRP [undefined] The queue group for the pop mailer. 416c2aa98e2SPeter WemmPROCMAIL_MAILER_PATH [/usr/local/bin/procmail] The path to the procmail 4172e43090eSPeter Wemm program. This is also used by 4182e43090eSPeter Wemm FEATURE(`local_procmail'). 419c2aa98e2SPeter WemmPROCMAIL_MAILER_FLAGS [SPhnu9] Flags added to Procmail mailer. Flags 42006f25ae9SGregory Neil Shapiro DFM are always set. This is NOT used by 4212e43090eSPeter Wemm FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS 422c2aa98e2SPeter Wemm instead. 423c2aa98e2SPeter WemmPROCMAIL_MAILER_ARGS [procmail -Y -m $h $f $u] The arguments passed to 424c2aa98e2SPeter Wemm the Procmail mailer. This is NOT used by 4252e43090eSPeter Wemm FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS 426c2aa98e2SPeter Wemm instead. 427c2aa98e2SPeter WemmPROCMAIL_MAILER_MAX [undefined] If set, the maximum size message that 428c2aa98e2SPeter Wemm will be accepted by the procmail mailer. 42940266059SGregory Neil ShapiroPROCMAIL_MAILER_QGRP [undefined] The queue group for the procmail mailer. 430c2aa98e2SPeter WemmMAIL11_MAILER_PATH [/usr/etc/mail11] The path to the mail11 mailer. 431c2aa98e2SPeter WemmMAIL11_MAILER_FLAGS [nsFx] Flags for the mail11 mailer. 432c2aa98e2SPeter WemmMAIL11_MAILER_ARGS [mail11 $g $x $h $u] Arguments passed to the mail11 433c2aa98e2SPeter Wemm mailer. 43440266059SGregory Neil ShapiroMAIL11_MAILER_QGRP [undefined] The queue group for the mail11 mailer. 435c2aa98e2SPeter WemmPH_MAILER_PATH [/usr/local/etc/phquery] The path to the phquery 436c2aa98e2SPeter Wemm program. 43706f25ae9SGregory Neil ShapiroPH_MAILER_FLAGS [ehmu] Flags for the phquery mailer. Flags nrDFM 43806f25ae9SGregory Neil Shapiro are always set. 439c2aa98e2SPeter WemmPH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer. 44040266059SGregory Neil ShapiroPH_MAILER_QGRP [undefined] The queue group for the ph mailer. 44106f25ae9SGregory Neil ShapiroCYRUS_MAILER_FLAGS [Ah5@/:|] The flags used by the cyrus mailer. The 442c2aa98e2SPeter Wemm flags lsDFMnPq are always included. 443c2aa98e2SPeter WemmCYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The program used to deliver 444c2aa98e2SPeter Wemm cyrus mail. 445c2aa98e2SPeter WemmCYRUS_MAILER_ARGS [deliver -e -m $h -- $u] The arguments passed 446c2aa98e2SPeter Wemm to deliver cyrus mail. 447c2aa98e2SPeter WemmCYRUS_MAILER_MAX [undefined] If set, the maximum size message that 448c2aa98e2SPeter Wemm will be accepted by the cyrus mailer. 449c2aa98e2SPeter WemmCYRUS_MAILER_USER [cyrus:mail] The user and group to become when 450c2aa98e2SPeter Wemm running the cyrus mailer. 45140266059SGregory Neil ShapiroCYRUS_MAILER_QGRP [undefined] The queue group for the cyrus mailer. 45206f25ae9SGregory Neil ShapiroCYRUS_BB_MAILER_FLAGS [u] The flags used by the cyrusbb mailer. 45306f25ae9SGregory Neil Shapiro The flags lsDFMnP are always included. 454c2aa98e2SPeter WemmCYRUS_BB_MAILER_ARGS [deliver -e -m $u] The arguments passed 455c2aa98e2SPeter Wemm to deliver cyrusbb mail. 45694c01205SGregory Neil ShapiroCYRUSV2_MAILER_FLAGS [A@/:|m] The flags used by the cyrusv2 mailer. The 45794c01205SGregory Neil Shapiro flags lsDFMnqXz are always included. 45894c01205SGregory Neil ShapiroCYRUSV2_MAILER_MAXMSGS [undefined] If defined, the maximum number of 45994c01205SGregory Neil Shapiro messages to deliver in a single connection for the 46094c01205SGregory Neil Shapiro cyrusv2 mailer. 46194c01205SGregory Neil ShapiroCYRUSV2_MAILER_MAXRCPTS [undefined] If defined, the maximum number of 46294c01205SGregory Neil Shapiro recipients to deliver in a single connection for the 46394c01205SGregory Neil Shapiro cyrusv2 mailer. 46494c01205SGregory Neil ShapiroCYRUSV2_MAILER_ARGS [FILE /var/imap/socket/lmtp] The arguments passed 46594c01205SGregory Neil Shapiro to the cyrusv2 mailer. This can be used to 46694c01205SGregory Neil Shapiro change the name of the Unix domain socket, or 46794c01205SGregory Neil Shapiro to switch to delivery via TCP (e.g., `TCP $h lmtp') 46894c01205SGregory Neil ShapiroCYRUSV2_MAILER_QGRP [undefined] The queue group for the cyrusv2 mailer. 469c2aa98e2SPeter WemmconfEBINDIR [/usr/libexec] The directory for executables. 4702e43090eSPeter Wemm Currently used for FEATURE(`local_lmtp') and 4712e43090eSPeter Wemm FEATURE(`smrsh'). 47206f25ae9SGregory Neil ShapiroQPAGE_MAILER_FLAGS [mDFMs] The flags used by the qpage mailer. 47306f25ae9SGregory Neil ShapiroQPAGE_MAILER_PATH [/usr/local/bin/qpage] The program used to deliver 47406f25ae9SGregory Neil Shapiro qpage mail. 47506f25ae9SGregory Neil ShapiroQPAGE_MAILER_ARGS [qpage -l0 -m -P$u] The arguments passed 47606f25ae9SGregory Neil Shapiro to deliver qpage mail. 47706f25ae9SGregory Neil ShapiroQPAGE_MAILER_MAX [4096] If set, the maximum size message that 47806f25ae9SGregory Neil Shapiro will be accepted by the qpage mailer. 47940266059SGregory Neil ShapiroQPAGE_MAILER_QGRP [undefined] The queue group for the qpage mailer. 48040266059SGregory Neil ShapiroLOCAL_PROG_QGRP [undefined] The queue group for the prog mailer. 481c2aa98e2SPeter Wemm 48206f25ae9SGregory Neil ShapiroNote: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS: 48306f25ae9SGregory Neil ShapiroMODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of 48406f25ae9SGregory Neil Shapirothe macro Name_MAILER_FLAGS and change can be: flags that should 48506f25ae9SGregory Neil Shapirobe used directly (thus overriding the default value), or if it 48606f25ae9SGregory Neil Shapirostarts with `+' (`-') then those flags are added to (removed from) 48706f25ae9SGregory Neil Shapirothe default value. Example: 48806f25ae9SGregory Neil Shapiro 48906f25ae9SGregory Neil Shapiro MODIFY_MAILER_FLAGS(`LOCAL', `+e') 49006f25ae9SGregory Neil Shapiro 49140266059SGregory Neil Shapirowill add the flag `e' to LOCAL_MAILER_FLAGS. Notice: there are 49240266059SGregory Neil Shapiroseveral smtp mailers all of which are manipulated individually. 49340266059SGregory Neil ShapiroSee the section MAILERS for the available mailer names. 49406f25ae9SGregory Neil ShapiroWARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS 49506f25ae9SGregory Neil Shapirounconditionally, i.e., without respecting any definitions in an 49606f25ae9SGregory Neil ShapiroOSTYPE setting. 497c2aa98e2SPeter Wemm 498c2aa98e2SPeter Wemm 499c2aa98e2SPeter Wemm+---------+ 500c2aa98e2SPeter Wemm| DOMAINS | 501c2aa98e2SPeter Wemm+---------+ 502c2aa98e2SPeter Wemm 503c2aa98e2SPeter WemmYou will probably want to collect domain-dependent defines into one 50406f25ae9SGregory Neil Shapirofile, referenced by the DOMAIN macro. For example, the Berkeley 505c2aa98e2SPeter Wemmdomain file includes definitions for several internal distinguished 506c2aa98e2SPeter Wemmhosts: 507c2aa98e2SPeter Wemm 508c2aa98e2SPeter WemmUUCP_RELAY The host that will accept UUCP-addressed email. 509c2aa98e2SPeter Wemm If not defined, all UUCP sites must be directly 510c2aa98e2SPeter Wemm connected. 511c2aa98e2SPeter WemmBITNET_RELAY The host that will accept BITNET-addressed email. 512c2aa98e2SPeter Wemm If not defined, the .BITNET pseudo-domain won't work. 513c2aa98e2SPeter WemmDECNET_RELAY The host that will accept DECNET-addressed email. 514c2aa98e2SPeter Wemm If not defined, the .DECNET pseudo-domain and addresses 515c2aa98e2SPeter Wemm of the form node::user will not work. 516c2aa98e2SPeter WemmFAX_RELAY The host that will accept mail to the .FAX pseudo-domain. 517c2aa98e2SPeter Wemm The "fax" mailer overrides this value. 518193538b7SGregory Neil ShapiroLOCAL_RELAY The site that will handle unqualified names -- that 519193538b7SGregory Neil Shapiro is, names without an @domain extension. 520193538b7SGregory Neil Shapiro Normally MAIL_HUB is preferred for this function. 521193538b7SGregory Neil Shapiro LOCAL_RELAY is mostly useful in conjunction with 52240266059SGregory Neil Shapiro FEATURE(`stickyhost') -- see the discussion of 523193538b7SGregory Neil Shapiro stickyhost below. If not set, they are assumed to 524193538b7SGregory Neil Shapiro belong on this machine. This allows you to have a 525193538b7SGregory Neil Shapiro central site to store a company- or department-wide 526193538b7SGregory Neil Shapiro alias database. This only works at small sites, 527193538b7SGregory Neil Shapiro and only with some user agents. 528c2aa98e2SPeter WemmLUSER_RELAY The site that will handle lusers -- that is, apparently 52906f25ae9SGregory Neil Shapiro local names that aren't local accounts or aliases. To 53006f25ae9SGregory Neil Shapiro specify a local user instead of a site, set this to 53106f25ae9SGregory Neil Shapiro ``local:username''. 532c2aa98e2SPeter Wemm 533c2aa98e2SPeter WemmAny of these can be either ``mailer:hostname'' (in which case the 534c2aa98e2SPeter Wemmmailer is the internal mailer name, such as ``uucp-new'' and the hostname 535c2aa98e2SPeter Wemmis the name of the host as appropriate for that mailer) or just a 536c2aa98e2SPeter Wemm``hostname'', in which case a default mailer type (usually ``relay'', 537c2aa98e2SPeter Wemma variant on SMTP) is used. WARNING: if you have a wildcard MX 538c2aa98e2SPeter Wemmrecord matching your domain, you probably want to define these to 539c2aa98e2SPeter Wemmhave a trailing dot so that you won't get the mail diverted back 540c2aa98e2SPeter Wemmto yourself. 541c2aa98e2SPeter Wemm 542c2aa98e2SPeter WemmThe domain file can also be used to define a domain name, if needed 543c2aa98e2SPeter Wemm(using "DD<domain>") and set certain site-wide features. If all hosts 544c2aa98e2SPeter Wemmat your site masquerade behind one email name, you could also use 545c2aa98e2SPeter WemmMASQUERADE_AS here. 546c2aa98e2SPeter Wemm 547c2aa98e2SPeter WemmYou do not have to define a domain -- in particular, if you are a 548c2aa98e2SPeter Wemmsingle machine sitting off somewhere, it is probably more work than 549c2aa98e2SPeter Wemmit's worth. This is just a mechanism for combining "domain dependent 550c2aa98e2SPeter Wemmknowledge" into one place. 551c2aa98e2SPeter Wemm 55240266059SGregory Neil Shapiro 553c2aa98e2SPeter Wemm+---------+ 554c2aa98e2SPeter Wemm| MAILERS | 555c2aa98e2SPeter Wemm+---------+ 556c2aa98e2SPeter Wemm 557c2aa98e2SPeter WemmThere are fewer mailers supported in this version than the previous 558c2aa98e2SPeter Wemmversion, owing mostly to a simpler world. As a general rule, put the 55940266059SGregory Neil ShapiroMAILER definitions last in your .mc file. 560c2aa98e2SPeter Wemm 561c2aa98e2SPeter Wemmlocal The local and prog mailers. You will almost always 562c2aa98e2SPeter Wemm need these; the only exception is if you relay ALL 563c2aa98e2SPeter Wemm your mail to another site. This mailer is included 564c2aa98e2SPeter Wemm automatically. 565c2aa98e2SPeter Wemm 566c2aa98e2SPeter Wemmsmtp The Simple Mail Transport Protocol mailer. This does 567c2aa98e2SPeter Wemm not hide hosts behind a gateway or another other 568c2aa98e2SPeter Wemm such hack; it assumes a world where everyone is 569c2aa98e2SPeter Wemm running the name server. This file actually defines 57006f25ae9SGregory Neil Shapiro five mailers: "smtp" for regular (old-style) SMTP to 571c2aa98e2SPeter Wemm other servers, "esmtp" for extended SMTP to other 572c2aa98e2SPeter Wemm servers, "smtp8" to do SMTP to other servers without 573c2aa98e2SPeter Wemm converting 8-bit data to MIME (essentially, this is 574c2aa98e2SPeter Wemm your statement that you know the other end is 8-bit 57506f25ae9SGregory Neil Shapiro clean even if it doesn't say so), "dsmtp" to do on 57606f25ae9SGregory Neil Shapiro demand delivery, and "relay" for transmission to the 57706f25ae9SGregory Neil Shapiro RELAY_HOST, LUSER_RELAY, or MAIL_HUB. 578c2aa98e2SPeter Wemm 57942e5d165SGregory Neil Shapirouucp The UNIX-to-UNIX Copy Program mailer. Actually, this 580c2aa98e2SPeter Wemm defines two mailers, "uucp-old" (a.k.a. "uucp") and 581c2aa98e2SPeter Wemm "uucp-new" (a.k.a. "suucp"). The latter is for when you 582c2aa98e2SPeter Wemm know that the UUCP mailer at the other end can handle 583c2aa98e2SPeter Wemm multiple recipients in one transfer. If the smtp mailer 58440266059SGregory Neil Shapiro is included in your configuration, two other mailers 58540266059SGregory Neil Shapiro ("uucp-dom" and "uucp-uudom") are also defined [warning: you 58640266059SGregory Neil Shapiro MUST specify MAILER(`smtp') before MAILER(`uucp')]. When you 587c2aa98e2SPeter Wemm include the uucp mailer, sendmail looks for all names in 58806f25ae9SGregory Neil Shapiro class {U} and sends them to the uucp-old mailer; all 58906f25ae9SGregory Neil Shapiro names in class {Y} are sent to uucp-new; and all 59006f25ae9SGregory Neil Shapiro names in class {Z} are sent to uucp-uudom. Note that 591c2aa98e2SPeter Wemm this is a function of what version of rmail runs on 592c2aa98e2SPeter Wemm the receiving end, and hence may be out of your control. 593c2aa98e2SPeter Wemm See the section below describing UUCP mailers in more 594c2aa98e2SPeter Wemm detail. 595c2aa98e2SPeter Wemm 596c2aa98e2SPeter Wemmusenet Usenet (network news) delivery. If this is specified, 597c2aa98e2SPeter Wemm an extra rule is added to ruleset 0 that forwards all 598c2aa98e2SPeter Wemm local email for users named ``group.usenet'' to the 599c2aa98e2SPeter Wemm ``inews'' program. Note that this works for all groups, 600c2aa98e2SPeter Wemm and may be considered a security problem. 601c2aa98e2SPeter Wemm 602c2aa98e2SPeter Wemmfax Facsimile transmission. This is experimental and based 603c2aa98e2SPeter Wemm on Sam Leffler's HylaFAX software. For more information, 604193538b7SGregory Neil Shapiro see http://www.hylafax.org/. 605c2aa98e2SPeter Wemm 606c2aa98e2SPeter Wemmpop Post Office Protocol. 607c2aa98e2SPeter Wemm 608c2aa98e2SPeter Wemmprocmail An interface to procmail (does not come with sendmail). 609c2aa98e2SPeter Wemm This is designed to be used in mailertables. For example, 610c2aa98e2SPeter Wemm a common question is "how do I forward all mail for a given 611c2aa98e2SPeter Wemm domain to a single person?". If you have this mailer 612c2aa98e2SPeter Wemm defined, you could set up a mailertable reading: 613c2aa98e2SPeter Wemm 614c2aa98e2SPeter Wemm host.com procmail:/etc/procmailrcs/host.com 615c2aa98e2SPeter Wemm 616c2aa98e2SPeter Wemm with the file /etc/procmailrcs/host.com reading: 617c2aa98e2SPeter Wemm 618c2aa98e2SPeter Wemm :0 # forward mail for host.com 619c2aa98e2SPeter Wemm ! -oi -f $1 person@other.host 620c2aa98e2SPeter Wemm 621c2aa98e2SPeter Wemm This would arrange for (anything)@host.com to be sent 622c2aa98e2SPeter Wemm to person@other.host. Within the procmail script, $1 is 623c2aa98e2SPeter Wemm the name of the sender and $2 is the name of the recipient. 6242e43090eSPeter Wemm If you use this with FEATURE(`local_procmail'), the FEATURE 625c2aa98e2SPeter Wemm should be listed first. 626c2aa98e2SPeter Wemm 62740266059SGregory Neil Shapiro Of course there are other ways to solve this particular 62840266059SGregory Neil Shapiro problem, e.g., a catch-all entry in a virtusertable. 62940266059SGregory Neil Shapiro 630c2aa98e2SPeter Wemmmail11 The DECnet mail11 mailer, useful only if you have the mail11 631c2aa98e2SPeter Wemm program from gatekeeper.dec.com:/pub/DEC/gwtools (and 632c2aa98e2SPeter Wemm DECnet, of course). This is for Phase IV DECnet support; 633c2aa98e2SPeter Wemm if you have Phase V at your site you may have additional 634c2aa98e2SPeter Wemm problems. 635c2aa98e2SPeter Wemm 636c2aa98e2SPeter Wemmphquery The phquery program. This is somewhat counterintuitively 637c2aa98e2SPeter Wemm referenced as the "ph" mailer internally. It can be used 638c2aa98e2SPeter Wemm to do CCSO name server lookups. The phquery program, which 639c2aa98e2SPeter Wemm this mailer uses, is distributed with the ph client. 640c2aa98e2SPeter Wemm 641c2aa98e2SPeter Wemmcyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to 642c2aa98e2SPeter Wemm a local cyrus user. this mailer can make use of the 64340266059SGregory Neil Shapiro "user+detail@local.host" syntax (see 64440266059SGregory Neil Shapiro FEATURE(`preserve_local_plus_detail')); it will deliver the 64540266059SGregory Neil Shapiro mail to the user's "detail" mailbox if the mailbox's ACL 64640266059SGregory Neil Shapiro permits. The cyrusbb mailer delivers to a system-wide 64740266059SGregory Neil Shapiro cyrus mailbox if the mailbox's ACL permits. The cyrus 64840266059SGregory Neil Shapiro mailer must be defined after the local mailer. 649c2aa98e2SPeter Wemm 65094c01205SGregory Neil Shapirocyrusv2 The mailer for Cyrus v2.x. The cyrusv2 mailer delivers to 65194c01205SGregory Neil Shapiro local cyrus users via LMTP. This mailer can make use of the 65294c01205SGregory Neil Shapiro "user+detail@local.host" syntax (see 65394c01205SGregory Neil Shapiro FEATURE(`preserve_local_plus_detail')); it will deliver the 65494c01205SGregory Neil Shapiro mail to the user's "detail" mailbox if the mailbox's ACL 65594c01205SGregory Neil Shapiro permits. The cyrusv2 mailer must be defined after the 65694c01205SGregory Neil Shapiro local mailer. 65794c01205SGregory Neil Shapiro 65806f25ae9SGregory Neil Shapiroqpage A mailer for QuickPage, a pager interface. See 65906f25ae9SGregory Neil Shapiro http://www.qpage.org/ for further information. 660c2aa98e2SPeter Wemm 661c2aa98e2SPeter WemmThe local mailer accepts addresses of the form "user+detail", where 662c2aa98e2SPeter Wemmthe "+detail" is not used for mailbox matching but is available 6632e43090eSPeter Wemmto certain local mail programs (in particular, see 6642e43090eSPeter WemmFEATURE(`local_procmail')). For example, "eric", "eric+sendmail", and 6652e43090eSPeter Wemm"eric+sww" all indicate the same user, but additional arguments <null>, 6662e43090eSPeter Wemm"sendmail", and "sww" may be provided for use in sorting mail. 667c2aa98e2SPeter Wemm 668c2aa98e2SPeter Wemm 669c2aa98e2SPeter Wemm+----------+ 670c2aa98e2SPeter Wemm| FEATURES | 671c2aa98e2SPeter Wemm+----------+ 672c2aa98e2SPeter Wemm 673c2aa98e2SPeter WemmSpecial features can be requested using the "FEATURE" macro. For 674c2aa98e2SPeter Wemmexample, the .mc line: 675c2aa98e2SPeter Wemm 6762e43090eSPeter Wemm FEATURE(`use_cw_file') 677c2aa98e2SPeter Wemm 67806f25ae9SGregory Neil Shapirotells sendmail that you want to have it read an /etc/mail/local-host-names 67940266059SGregory Neil Shapirofile to get values for class {w}. A FEATURE may contain up to 9 68006f25ae9SGregory Neil Shapirooptional parameters -- for example: 681c2aa98e2SPeter Wemm 6822e43090eSPeter Wemm FEATURE(`mailertable', `dbm /usr/lib/mailertable') 683c2aa98e2SPeter Wemm 684c2aa98e2SPeter WemmThe default database map type for the table features can be set with 685c2aa98e2SPeter Wemm 686c2aa98e2SPeter Wemm define(`DATABASE_MAP_TYPE', `dbm') 687c2aa98e2SPeter Wemm 688c2aa98e2SPeter Wemmwhich would set it to use ndbm databases. The default is the Berkeley DB 689c2aa98e2SPeter Wemmhash database format. Note that you must still declare a database map type 690c2aa98e2SPeter Wemmif you specify an argument to a FEATURE. DATABASE_MAP_TYPE is only used 69106f25ae9SGregory Neil Shapiroif no argument is given for the FEATURE. It must be specified before any 69206f25ae9SGregory Neil Shapirofeature that uses a map. 693c2aa98e2SPeter Wemm 69440266059SGregory Neil ShapiroAlso, features which can take a map definition as an argument can also take 69540266059SGregory Neil Shapirothe special keyword `LDAP'. If that keyword is used, the map will use the 69640266059SGregory Neil ShapiroLDAP definition described in the ``USING LDAP FOR ALIASES, MAPS, AND 69740266059SGregory Neil ShapiroCLASSES'' section below. 69840266059SGregory Neil Shapiro 699c2aa98e2SPeter WemmAvailable features are: 700c2aa98e2SPeter Wemm 70106f25ae9SGregory Neil Shapirouse_cw_file Read the file /etc/mail/local-host-names file to get 70206f25ae9SGregory Neil Shapiro alternate names for this host. This might be used if you 70306f25ae9SGregory Neil Shapiro were on a host that MXed for a dynamic set of other hosts. 70406f25ae9SGregory Neil Shapiro If the set is static, just including the line "Cw<name1> 70506f25ae9SGregory Neil Shapiro <name2> ..." (where the names are fully qualified domain 70606f25ae9SGregory Neil Shapiro names) is probably superior. The actual filename can be 70706f25ae9SGregory Neil Shapiro overridden by redefining confCW_FILE. 708c2aa98e2SPeter Wemm 70906f25ae9SGregory Neil Shapirouse_ct_file Read the file /etc/mail/trusted-users file to get the 71006f25ae9SGregory Neil Shapiro names of users that will be ``trusted'', that is, able to 71106f25ae9SGregory Neil Shapiro set their envelope from address using -f without generating 71206f25ae9SGregory Neil Shapiro a warning message. The actual filename can be overridden 71306f25ae9SGregory Neil Shapiro by redefining confCT_FILE. 714c2aa98e2SPeter Wemm 715c2aa98e2SPeter Wemmredirect Reject all mail addressed to "address.REDIRECT" with 71606f25ae9SGregory Neil Shapiro a ``551 User has moved; please try <address>'' message. 717c2aa98e2SPeter Wemm If this is set, you can alias people who have left 718c2aa98e2SPeter Wemm to their new address with ".REDIRECT" appended. 719c2aa98e2SPeter Wemm 72006f25ae9SGregory Neil Shapironouucp Don't route UUCP addresses. This feature takes one 72106f25ae9SGregory Neil Shapiro parameter: 72206f25ae9SGregory Neil Shapiro `reject': reject addresses which have "!" in the local 72306f25ae9SGregory Neil Shapiro part unless it originates from a system 72406f25ae9SGregory Neil Shapiro that is allowed to relay. 72506f25ae9SGregory Neil Shapiro `nospecial': don't do anything special with "!". 72640266059SGregory Neil Shapiro Warnings: 1. See the notice in the anti-spam section. 72706f25ae9SGregory Neil Shapiro 2. don't remove "!" from OperatorChars if `reject' is 72806f25ae9SGregory Neil Shapiro given as parameter. 729c2aa98e2SPeter Wemm 73006f25ae9SGregory Neil Shapironocanonify Don't pass addresses to $[ ... $] for canonification 731193538b7SGregory Neil Shapiro by default, i.e., host/domain names are considered canonical, 732193538b7SGregory Neil Shapiro except for unqualified names, which must not be used in this 733193538b7SGregory Neil Shapiro mode (violation of the standard). It can be changed by 734193538b7SGregory Neil Shapiro setting the DaemonPortOptions modifiers (M=). That is, 73506f25ae9SGregory Neil Shapiro FEATURE(`nocanonify') will be overridden by setting the 73606f25ae9SGregory Neil Shapiro 'c' flag. Conversely, if FEATURE(`nocanonify') is not used, 73706f25ae9SGregory Neil Shapiro it can be emulated by setting the 'C' flag 73806f25ae9SGregory Neil Shapiro (DaemonPortOptions=Modifiers=C). This would generally only 73906f25ae9SGregory Neil Shapiro be used by sites that only act as mail gateways or which have 74006f25ae9SGregory Neil Shapiro user agents that do full canonification themselves. You may 74106f25ae9SGregory Neil Shapiro also want to use 74206f25ae9SGregory Neil Shapiro "define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off 74306f25ae9SGregory Neil Shapiro the usual resolver options that do a similar thing. 74406f25ae9SGregory Neil Shapiro 74506f25ae9SGregory Neil Shapiro An exception list for FEATURE(`nocanonify') can be 74606f25ae9SGregory Neil Shapiro specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE, 74706f25ae9SGregory Neil Shapiro i.e., a list of domains which are nevertheless passed to 74806f25ae9SGregory Neil Shapiro $[ ... $] for canonification. This is useful to turn on 74906f25ae9SGregory Neil Shapiro canonification for local domains, e.g., use 75006f25ae9SGregory Neil Shapiro CANONIFY_DOMAIN(`my.domain my') to canonify addresses 75106f25ae9SGregory Neil Shapiro which end in "my.domain" or "my". 75206f25ae9SGregory Neil Shapiro Another way to require canonification in the local 75306f25ae9SGregory Neil Shapiro domain is CANONIFY_DOMAIN(`$=m'). 75406f25ae9SGregory Neil Shapiro 75506f25ae9SGregory Neil Shapiro A trailing dot is added to addresses with more than 75606f25ae9SGregory Neil Shapiro one component in it such that other features which 75706f25ae9SGregory Neil Shapiro expect a trailing dot (e.g., virtusertable) will 75806f25ae9SGregory Neil Shapiro still work. 75906f25ae9SGregory Neil Shapiro 76006f25ae9SGregory Neil Shapiro If `canonify_hosts' is specified as parameter, i.e., 76106f25ae9SGregory Neil Shapiro FEATURE(`nocanonify', `canonify_hosts'), then 76206f25ae9SGregory Neil Shapiro addresses which have only a hostname, e.g., 76306f25ae9SGregory Neil Shapiro <user@host>, will be canonified (and hopefully fully 76406f25ae9SGregory Neil Shapiro qualified), too. 765c2aa98e2SPeter Wemm 766193538b7SGregory Neil Shapirostickyhost This feature is sometimes used with LOCAL_RELAY, 767193538b7SGregory Neil Shapiro although it can be used for a different effect with 768193538b7SGregory Neil Shapiro MAIL_HUB. 769193538b7SGregory Neil Shapiro 770602a2b1bSGregory Neil Shapiro When used without MAIL_HUB, email sent to 771193538b7SGregory Neil Shapiro "user@local.host" are marked as "sticky" -- that 772193538b7SGregory Neil Shapiro is, the local addresses aren't matched against UDB, 773193538b7SGregory Neil Shapiro don't go through ruleset 5, and are not forwarded to 774193538b7SGregory Neil Shapiro the LOCAL_RELAY (if defined). 775193538b7SGregory Neil Shapiro 776193538b7SGregory Neil Shapiro With MAIL_HUB, mail addressed to "user@local.host" 777193538b7SGregory Neil Shapiro is forwarded to the mail hub, with the envelope 778193538b7SGregory Neil Shapiro address still remaining "user@local.host". 779193538b7SGregory Neil Shapiro Without stickyhost, the envelope would be changed 780193538b7SGregory Neil Shapiro to "user@mail_hub", in order to protect against 781193538b7SGregory Neil Shapiro mailing loops. 782c2aa98e2SPeter Wemm 783c2aa98e2SPeter Wemmmailertable Include a "mailer table" which can be used to override 78406f25ae9SGregory Neil Shapiro routing for particular domains (which are not in class {w}, 78506f25ae9SGregory Neil Shapiro i.e. local host names). The argument of the FEATURE may be 78606f25ae9SGregory Neil Shapiro the key definition. If none is specified, the definition 78706f25ae9SGregory Neil Shapiro used is: 7882e43090eSPeter Wemm 78906f25ae9SGregory Neil Shapiro hash /etc/mail/mailertable 7902e43090eSPeter Wemm 791c2aa98e2SPeter Wemm Keys in this database are fully qualified domain names 792c2aa98e2SPeter Wemm or partial domains preceded by a dot -- for example, 79306f25ae9SGregory Neil Shapiro "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU". As a 79406f25ae9SGregory Neil Shapiro special case of the latter, "." matches any domain not 79506f25ae9SGregory Neil Shapiro covered by other keys. Values must be of the form: 796c2aa98e2SPeter Wemm mailer:domain 797c2aa98e2SPeter Wemm where "mailer" is the internal mailer name, and "domain" 798c2aa98e2SPeter Wemm is where to send the message. These maps are not 799c2aa98e2SPeter Wemm reflected into the message header. As a special case, 800c2aa98e2SPeter Wemm the forms: 801c2aa98e2SPeter Wemm local:user 802c2aa98e2SPeter Wemm will forward to the indicated user using the local mailer, 803c2aa98e2SPeter Wemm local: 804c2aa98e2SPeter Wemm will forward to the original user in the e-mail address 805c2aa98e2SPeter Wemm using the local mailer, and 806c2aa98e2SPeter Wemm error:code message 80706f25ae9SGregory Neil Shapiro error:D.S.N:code message 80806f25ae9SGregory Neil Shapiro will give an error message with the indicated SMTP reply 80906f25ae9SGregory Neil Shapiro code and message, where D.S.N is an RFC 1893 compliant 81006f25ae9SGregory Neil Shapiro error code. 811c2aa98e2SPeter Wemm 812c2aa98e2SPeter Wemmdomaintable Include a "domain table" which can be used to provide 813c2aa98e2SPeter Wemm domain name mapping. Use of this should really be 814c2aa98e2SPeter Wemm limited to your own domains. It may be useful if you 815c2aa98e2SPeter Wemm change names (e.g., your company changes names from 816c2aa98e2SPeter Wemm oldname.com to newname.com). The argument of the 817c2aa98e2SPeter Wemm FEATURE may be the key definition. If none is specified, 818c2aa98e2SPeter Wemm the definition used is: 8192e43090eSPeter Wemm 82006f25ae9SGregory Neil Shapiro hash /etc/mail/domaintable 8212e43090eSPeter Wemm 822c2aa98e2SPeter Wemm The key in this table is the domain name; the value is 823c2aa98e2SPeter Wemm the new (fully qualified) domain. Anything in the 824c2aa98e2SPeter Wemm domaintable is reflected into headers; that is, this 825c2aa98e2SPeter Wemm is done in ruleset 3. 826c2aa98e2SPeter Wemm 827c2aa98e2SPeter Wemmbitdomain Look up bitnet hosts in a table to try to turn them into 828c2aa98e2SPeter Wemm internet addresses. The table can be built using the 829c2aa98e2SPeter Wemm bitdomain program contributed by John Gardiner Myers. 830c2aa98e2SPeter Wemm The argument of the FEATURE may be the key definition; if 831c2aa98e2SPeter Wemm none is specified, the definition used is: 8322e43090eSPeter Wemm 83306f25ae9SGregory Neil Shapiro hash /etc/mail/bitdomain 8342e43090eSPeter Wemm 835c2aa98e2SPeter Wemm Keys are the bitnet hostname; values are the corresponding 836c2aa98e2SPeter Wemm internet hostname. 837c2aa98e2SPeter Wemm 838c2aa98e2SPeter Wemmuucpdomain Similar feature for UUCP hosts. The default map definition 839c2aa98e2SPeter Wemm is: 8402e43090eSPeter Wemm 84106f25ae9SGregory Neil Shapiro hash /etc/mail/uudomain 8422e43090eSPeter Wemm 843c2aa98e2SPeter Wemm At the moment there is no automagic tool to build this 844c2aa98e2SPeter Wemm database. 845c2aa98e2SPeter Wemm 846c2aa98e2SPeter Wemmalways_add_domain 847c2aa98e2SPeter Wemm Include the local host domain even on locally delivered 848c2aa98e2SPeter Wemm mail. Normally it is not added on unqualified names. 849c2aa98e2SPeter Wemm However, if you use a shared message store but do not use 850c2aa98e2SPeter Wemm the same user name space everywhere, you may need the host 85140266059SGregory Neil Shapiro name on local names. An optional argument specifies 85240266059SGregory Neil Shapiro another domain to be added than the local. 853c2aa98e2SPeter Wemm 854c2aa98e2SPeter Wemmallmasquerade If masquerading is enabled (using MASQUERADE_AS), this 855c2aa98e2SPeter Wemm feature will cause recipient addresses to also masquerade 856c2aa98e2SPeter Wemm as being from the masquerade host. Normally they get 857c2aa98e2SPeter Wemm the local hostname. Although this may be right for 858c2aa98e2SPeter Wemm ordinary users, it can break local aliases. For example, 859c2aa98e2SPeter Wemm if you send to "localalias", the originating sendmail will 860c2aa98e2SPeter Wemm find that alias and send to all members, but send the 861c2aa98e2SPeter Wemm message with "To: localalias@masqueradehost". Since that 862c2aa98e2SPeter Wemm alias likely does not exist, replies will fail. Use this 863c2aa98e2SPeter Wemm feature ONLY if you can guarantee that the ENTIRE 864c2aa98e2SPeter Wemm namespace on your masquerade host supersets all the 865c2aa98e2SPeter Wemm local entries. 866c2aa98e2SPeter Wemm 867c2aa98e2SPeter Wemmlimited_masquerade 86806f25ae9SGregory Neil Shapiro Normally, any hosts listed in class {w} are masqueraded. If 86906f25ae9SGregory Neil Shapiro this feature is given, only the hosts listed in class {M} (see 87006f25ae9SGregory Neil Shapiro below: MASQUERADE_DOMAIN) are masqueraded. This is useful 87106f25ae9SGregory Neil Shapiro if you have several domains with disjoint namespaces hosted 87206f25ae9SGregory Neil Shapiro on the same machine. 873c2aa98e2SPeter Wemm 874c2aa98e2SPeter Wemmmasquerade_entire_domain 875c2aa98e2SPeter Wemm If masquerading is enabled (using MASQUERADE_AS) and 876c2aa98e2SPeter Wemm MASQUERADE_DOMAIN (see below) is set, this feature will 877c2aa98e2SPeter Wemm cause addresses to be rewritten such that the masquerading 878c2aa98e2SPeter Wemm domains are actually entire domains to be hidden. All 879c2aa98e2SPeter Wemm hosts within the masquerading domains will be rewritten 880c2aa98e2SPeter Wemm to the masquerade name (used in MASQUERADE_AS). For example, 881c2aa98e2SPeter Wemm if you have: 882c2aa98e2SPeter Wemm 88306f25ae9SGregory Neil Shapiro MASQUERADE_AS(`masq.com') 88406f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN(`foo.org') 88506f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN(`bar.com') 886c2aa98e2SPeter Wemm 887c2aa98e2SPeter Wemm then *foo.org and *bar.com are converted to masq.com. Without 888c2aa98e2SPeter Wemm this feature, only foo.org and bar.com are masqueraded. 889c2aa98e2SPeter Wemm 890c2aa98e2SPeter Wemm NOTE: only domains within your jurisdiction and 891c2aa98e2SPeter Wemm current hierarchy should be masqueraded using this. 892c2aa98e2SPeter Wemm 89340266059SGregory Neil Shapirolocal_no_masquerade 89440266059SGregory Neil Shapiro This feature prevents the local mailer from masquerading even 89540266059SGregory Neil Shapiro if MASQUERADE_AS is used. MASQUERADE_AS will only have effect 89640266059SGregory Neil Shapiro on addresses of mail going outside the local domain. 89740266059SGregory Neil Shapiro 89806f25ae9SGregory Neil Shapirogenericstable This feature will cause unqualified addresses (i.e., without 89906f25ae9SGregory Neil Shapiro a domain) and addresses with a domain listed in class {G} 90006f25ae9SGregory Neil Shapiro to be looked up in a map and turned into another ("generic") 90106f25ae9SGregory Neil Shapiro form, which can change both the domain name and the user name. 90240266059SGregory Neil Shapiro Notice: if you use an MSP (as it is default starting with 90340266059SGregory Neil Shapiro 8.12), the MTA will only receive qualified addresses from the 90440266059SGregory Neil Shapiro MSP (as required by the RFCs). Hence you need to add your 90540266059SGregory Neil Shapiro domain to class {G}. This feature is similar to the userdb 90640266059SGregory Neil Shapiro functionality. The same types of addresses as for 90740266059SGregory Neil Shapiro masquerading are looked up, i.e., only header sender 90840266059SGregory Neil Shapiro addresses unless the allmasquerade and/or masquerade_envelope 90940266059SGregory Neil Shapiro features are given. Qualified addresses must have the domain 91040266059SGregory Neil Shapiro part in class {G}; entries can be added to this class by the 91140266059SGregory Neil Shapiro macros GENERICS_DOMAIN or GENERICS_DOMAIN_FILE (analogously 91240266059SGregory Neil Shapiro to MASQUERADE_DOMAIN and MASQUERADE_DOMAIN_FILE, see below). 913c2aa98e2SPeter Wemm 9142e43090eSPeter Wemm The argument of FEATURE(`genericstable') may be the map 915c2aa98e2SPeter Wemm definition; the default map definition is: 916c2aa98e2SPeter Wemm 91706f25ae9SGregory Neil Shapiro hash /etc/mail/genericstable 918c2aa98e2SPeter Wemm 91906f25ae9SGregory Neil Shapiro The key for this table is either the full address, the domain 92006f25ae9SGregory Neil Shapiro (with a leading @; the localpart is passed as first argument) 92106f25ae9SGregory Neil Shapiro or the unqualified username (tried in the order mentioned); 92206f25ae9SGregory Neil Shapiro the value is the new user address. If the new user address 92306f25ae9SGregory Neil Shapiro does not include a domain, it will be qualified in the standard 92406f25ae9SGregory Neil Shapiro manner, i.e., using $j or the masquerade name. Note that the 925c2aa98e2SPeter Wemm address being looked up must be fully qualified. For local 9262e43090eSPeter Wemm mail, it is necessary to use FEATURE(`always_add_domain') 9272e43090eSPeter Wemm for the addresses to be qualified. 92806f25ae9SGregory Neil Shapiro The "+detail" of an address is passed as %1, so entries like 92906f25ae9SGregory Neil Shapiro 93006f25ae9SGregory Neil Shapiro old+*@foo.org new+%1@example.com 93106f25ae9SGregory Neil Shapiro gen+*@foo.org %1@example.com 93206f25ae9SGregory Neil Shapiro 93306f25ae9SGregory Neil Shapiro and other forms are possible. 93406f25ae9SGregory Neil Shapiro 93506f25ae9SGregory Neil Shapirogenerics_entire_domain 93606f25ae9SGregory Neil Shapiro If the genericstable is enabled and GENERICS_DOMAIN or 93706f25ae9SGregory Neil Shapiro GENERICS_DOMAIN_FILE is used, this feature will cause 93806f25ae9SGregory Neil Shapiro addresses to be searched in the map if their domain 93906f25ae9SGregory Neil Shapiro parts are subdomains of elements in class {G}. 940c2aa98e2SPeter Wemm 941c2aa98e2SPeter Wemmvirtusertable A domain-specific form of aliasing, allowing multiple 942c2aa98e2SPeter Wemm virtual domains to be hosted on one machine. For example, 943c2aa98e2SPeter Wemm if the virtuser table contained: 944c2aa98e2SPeter Wemm 945c2aa98e2SPeter Wemm info@foo.com foo-info 946c2aa98e2SPeter Wemm info@bar.com bar-info 94740266059SGregory Neil Shapiro joe@bar.com error:nouser 550 No such user here 94840266059SGregory Neil Shapiro jax@bar.com error:5.7.0:550 Address invalid 94906f25ae9SGregory Neil Shapiro @baz.org jane@example.net 950c2aa98e2SPeter Wemm 951c2aa98e2SPeter Wemm then mail addressed to info@foo.com will be sent to the 952c2aa98e2SPeter Wemm address foo-info, mail addressed to info@bar.com will be 95306f25ae9SGregory Neil Shapiro delivered to bar-info, and mail addressed to anyone at baz.org 95406f25ae9SGregory Neil Shapiro will be sent to jane@example.net, mail to joe@bar.com will 95506f25ae9SGregory Neil Shapiro be rejected with the specified error message, and mail to 95606f25ae9SGregory Neil Shapiro jax@bar.com will also have a RFC 1893 compliant error code 95740266059SGregory Neil Shapiro 5.7.0. 958c2aa98e2SPeter Wemm 95906f25ae9SGregory Neil Shapiro The username from the original address is passed 96006f25ae9SGregory Neil Shapiro as %1 allowing: 961c2aa98e2SPeter Wemm 96206f25ae9SGregory Neil Shapiro @foo.org %1@example.com 96306f25ae9SGregory Neil Shapiro 96406f25ae9SGregory Neil Shapiro meaning someone@foo.org will be sent to someone@example.com. 96506f25ae9SGregory Neil Shapiro Additionally, if the local part consists of "user+detail" 96640266059SGregory Neil Shapiro then "detail" is passed as %2 and "+detail" is passed as %3 96740266059SGregory Neil Shapiro when a match against user+* is attempted, so entries like 96806f25ae9SGregory Neil Shapiro 96906f25ae9SGregory Neil Shapiro old+*@foo.org new+%2@example.com 97006f25ae9SGregory Neil Shapiro gen+*@foo.org %2@example.com 97140266059SGregory Neil Shapiro +*@foo.org %1%3@example.com 97240266059SGregory Neil Shapiro X++@foo.org Z%3@example.com 97340266059SGregory Neil Shapiro @bar.org %1%3 97406f25ae9SGregory Neil Shapiro 97506f25ae9SGregory Neil Shapiro and other forms are possible. Note: to preserve "+detail" 97640266059SGregory Neil Shapiro for a default case (@domain) %1%3 must be used as RHS. 97740266059SGregory Neil Shapiro There are two wildcards after "+": "+" matches only a non-empty 97840266059SGregory Neil Shapiro detail, "*" matches also empty details, e.g., user+@foo.org 97940266059SGregory Neil Shapiro matches +*@foo.org but not ++@foo.org. This can be used 98040266059SGregory Neil Shapiro to ensure that the parameters %2 and %3 are not empty. 981c2aa98e2SPeter Wemm 982c2aa98e2SPeter Wemm All the host names on the left hand side (foo.com, bar.com, 98340266059SGregory Neil Shapiro and baz.org) must be in class {w} or class {VirtHost}. The 98406f25ae9SGregory Neil Shapiro latter can be defined by the macros VIRTUSER_DOMAIN or 98506f25ae9SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 98606f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE, see below). If VIRTUSER_DOMAIN or 98706f25ae9SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE is used, then the entries of class 98806f25ae9SGregory Neil Shapiro {VirtHost} are added to class {R}, i.e., relaying is allowed 98906f25ae9SGregory Neil Shapiro to (and from) those domains. The default map definition is: 990c2aa98e2SPeter Wemm 99106f25ae9SGregory Neil Shapiro hash /etc/mail/virtusertable 992c2aa98e2SPeter Wemm 993c2aa98e2SPeter Wemm A new definition can be specified as the second argument of 994c2aa98e2SPeter Wemm the FEATURE macro, such as 995c2aa98e2SPeter Wemm 99606f25ae9SGregory Neil Shapiro FEATURE(`virtusertable', `dbm /etc/mail/virtusers') 997c2aa98e2SPeter Wemm 99806f25ae9SGregory Neil Shapirovirtuser_entire_domain 99906f25ae9SGregory Neil Shapiro If the virtusertable is enabled and VIRTUSER_DOMAIN or 100006f25ae9SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE is used, this feature will cause 100106f25ae9SGregory Neil Shapiro addresses to be searched in the map if their domain 100206f25ae9SGregory Neil Shapiro parts are subdomains of elements in class {VirtHost}. 100306f25ae9SGregory Neil Shapiro 100406f25ae9SGregory Neil Shapiroldap_routing Implement LDAP-based e-mail recipient routing according to 100506f25ae9SGregory Neil Shapiro the Internet Draft draft-lachman-laser-ldap-mail-routing-01. 100606f25ae9SGregory Neil Shapiro This provides a method to re-route addresses with a 100706f25ae9SGregory Neil Shapiro domain portion in class {LDAPRoute} to either a 100806f25ae9SGregory Neil Shapiro different mail host or a different address. Hosts can 100906f25ae9SGregory Neil Shapiro be added to this class using LDAPROUTE_DOMAIN and 101006f25ae9SGregory Neil Shapiro LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 101106f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE, see below). 101206f25ae9SGregory Neil Shapiro 101306f25ae9SGregory Neil Shapiro See the LDAP ROUTING section below for more information. 101406f25ae9SGregory Neil Shapiro 101506f25ae9SGregory Neil Shapironodns If you aren't running DNS at your site (for example, 101606f25ae9SGregory Neil Shapiro you are UUCP-only connected). It's hard to consider 1017c2aa98e2SPeter Wemm this a "feature", but hey, it had to go somewhere. 1018c2aa98e2SPeter Wemm Actually, as of 8.7 this is a no-op -- remove "dns" from 1019c2aa98e2SPeter Wemm the hosts service switch entry instead. 1020c2aa98e2SPeter Wemm 102106f25ae9SGregory Neil Shapironullclient This is a special case -- it creates a configuration file 102206f25ae9SGregory Neil Shapiro containing nothing but support for forwarding all mail to a 102306f25ae9SGregory Neil Shapiro central hub via a local SMTP-based network. The argument 102406f25ae9SGregory Neil Shapiro is the name of that hub. 1025c2aa98e2SPeter Wemm 1026c2aa98e2SPeter Wemm The only other feature that should be used in conjunction 102706f25ae9SGregory Neil Shapiro with this one is FEATURE(`nocanonify'). No mailers 1028c2aa98e2SPeter Wemm should be defined. No aliasing or forwarding is done. 1029c2aa98e2SPeter Wemm 1030c2aa98e2SPeter Wemmlocal_lmtp Use an LMTP capable local mailer. The argument to this 1031c2aa98e2SPeter Wemm feature is the pathname of an LMTP capable mailer. By 1032c2aa98e2SPeter Wemm default, mail.local is used. This is expected to be the 1033c2aa98e2SPeter Wemm mail.local which came with the 8.9 distribution which is 1034c2aa98e2SPeter Wemm LMTP capable. The path to mail.local is set by the 1035c2aa98e2SPeter Wemm confEBINDIR m4 variable -- making the default 1036c2aa98e2SPeter Wemm LOCAL_MAILER_PATH /usr/libexec/mail.local. 103706f25ae9SGregory Neil Shapiro WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, 103806f25ae9SGregory Neil Shapiro i.e., without respecting any definitions in an OSTYPE setting. 1039c2aa98e2SPeter Wemm 104006f25ae9SGregory Neil Shapirolocal_procmail Use procmail or another delivery agent as the local mailer. 104106f25ae9SGregory Neil Shapiro The argument to this feature is the pathname of the 104206f25ae9SGregory Neil Shapiro delivery agent, which defaults to PROCMAIL_MAILER_PATH. 104306f25ae9SGregory Neil Shapiro Note that this does NOT use PROCMAIL_MAILER_FLAGS or 104406f25ae9SGregory Neil Shapiro PROCMAIL_MAILER_ARGS for the local mailer; tweak 104506f25ae9SGregory Neil Shapiro LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or 104606f25ae9SGregory Neil Shapiro specify the appropriate parameters. When procmail is used, 104706f25ae9SGregory Neil Shapiro the local mailer can make use of the 104806f25ae9SGregory Neil Shapiro "user+indicator@local.host" syntax; normally the +indicator 104906f25ae9SGregory Neil Shapiro is just tossed, but by default it is passed as the -a 105006f25ae9SGregory Neil Shapiro argument to procmail. 105106f25ae9SGregory Neil Shapiro 105206f25ae9SGregory Neil Shapiro This feature can take up to three arguments: 105306f25ae9SGregory Neil Shapiro 105406f25ae9SGregory Neil Shapiro 1. Path to the mailer program 105506f25ae9SGregory Neil Shapiro [default: /usr/local/bin/procmail] 105606f25ae9SGregory Neil Shapiro 2. Argument vector including name of the program 105706f25ae9SGregory Neil Shapiro [default: procmail -Y -a $h -d $u] 105806f25ae9SGregory Neil Shapiro 3. Flags for the mailer [default: SPfhn9] 105906f25ae9SGregory Neil Shapiro 106006f25ae9SGregory Neil Shapiro Empty arguments cause the defaults to be taken. 106106f25ae9SGregory Neil Shapiro 106206f25ae9SGregory Neil Shapiro For example, this allows it to use the maildrop 106306f25ae9SGregory Neil Shapiro (http://www.flounder.net/~mrsam/maildrop/) mailer instead 106406f25ae9SGregory Neil Shapiro by specifying: 106506f25ae9SGregory Neil Shapiro 106606f25ae9SGregory Neil Shapiro FEATURE(`local_procmail', `/usr/local/bin/maildrop', 106706f25ae9SGregory Neil Shapiro `maildrop -d $u') 106806f25ae9SGregory Neil Shapiro 106906f25ae9SGregory Neil Shapiro or scanmails using: 107006f25ae9SGregory Neil Shapiro 107106f25ae9SGregory Neil Shapiro FEATURE(`local_procmail', `/usr/local/bin/scanmails') 107206f25ae9SGregory Neil Shapiro 107306f25ae9SGregory Neil Shapiro WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, 107406f25ae9SGregory Neil Shapiro i.e., without respecting any definitions in an OSTYPE setting. 1075c2aa98e2SPeter Wemm 1076c2aa98e2SPeter Wemmbestmx_is_local Accept mail as though locally addressed for any host that 1077c2aa98e2SPeter Wemm lists us as the best possible MX record. This generates 1078c2aa98e2SPeter Wemm additional DNS traffic, but should be OK for low to 1079c2aa98e2SPeter Wemm medium traffic hosts. The argument may be a set of 1080c2aa98e2SPeter Wemm domains, which will limit the feature to only apply to 1081c2aa98e2SPeter Wemm these domains -- this will reduce unnecessary DNS 1082c2aa98e2SPeter Wemm traffic. THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH 1083c2aa98e2SPeter Wemm WILDCARD MX RECORDS!!! If you have a wildcard MX record 1084c2aa98e2SPeter Wemm that matches your domain, you cannot use this feature. 1085c2aa98e2SPeter Wemm 1086c2aa98e2SPeter Wemmsmrsh Use the SendMail Restricted SHell (smrsh) provided 1087c2aa98e2SPeter Wemm with the distribution instead of /bin/sh for mailing 1088c2aa98e2SPeter Wemm to programs. This improves the ability of the local 1089c2aa98e2SPeter Wemm system administrator to control what gets run via 1090c2aa98e2SPeter Wemm e-mail. If an argument is provided it is used as the 1091c2aa98e2SPeter Wemm pathname to smrsh; otherwise, the path defined by 1092c2aa98e2SPeter Wemm confEBINDIR is used for the smrsh binary -- by default, 1093c2aa98e2SPeter Wemm /usr/libexec/smrsh is assumed. 1094c2aa98e2SPeter Wemm 1095c2aa98e2SPeter Wemmpromiscuous_relay 1096c2aa98e2SPeter Wemm By default, the sendmail configuration files do not permit 1097c2aa98e2SPeter Wemm mail relaying (that is, accepting mail from outside your 109806f25ae9SGregory Neil Shapiro local host (class {w}) and sending it to another host than 109906f25ae9SGregory Neil Shapiro your local host). This option sets your site to allow 110006f25ae9SGregory Neil Shapiro mail relaying from any site to any site. In almost all 110106f25ae9SGregory Neil Shapiro cases, it is better to control relaying more carefully 110206f25ae9SGregory Neil Shapiro with the access map, class {R}, or authentication. Domains 110306f25ae9SGregory Neil Shapiro can be added to class {R} by the macros RELAY_DOMAIN or 110406f25ae9SGregory Neil Shapiro RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 110506f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE, see below). 1106c2aa98e2SPeter Wemm 1107c2aa98e2SPeter Wemmrelay_entire_domain 110894c01205SGregory Neil Shapiro This option allows any host in your domain as defined by 110994c01205SGregory Neil Shapiro class {m} to use your server for relaying. Notice: make 111094c01205SGregory Neil Shapiro sure that your domain is not just a top level domain, 111194c01205SGregory Neil Shapiro e.g., com. This can happen if you give your host a name 111294c01205SGregory Neil Shapiro like example.com instead of host.example.com. 1113c2aa98e2SPeter Wemm 1114c2aa98e2SPeter Wemmrelay_hosts_only 1115c2aa98e2SPeter Wemm By default, names that are listed as RELAY in the access 111694c01205SGregory Neil Shapiro db and class {R} are treated as domain names, not host names. 1117c2aa98e2SPeter Wemm For example, if you specify ``foo.com'', then mail to or 1118c2aa98e2SPeter Wemm from foo.com, abc.foo.com, or a.very.deep.domain.foo.com 1119c2aa98e2SPeter Wemm will all be accepted for relaying. This feature changes 1120c2aa98e2SPeter Wemm the behaviour to lookup individual host names only. 1121c2aa98e2SPeter Wemm 1122c2aa98e2SPeter Wemmrelay_based_on_MX 1123c2aa98e2SPeter Wemm Turns on the ability to allow relaying based on the MX 1124065a643dSPeter Wemm records of the host portion of an incoming recipient; that 1125065a643dSPeter Wemm is, if an MX record for host foo.com points to your site, 1126065a643dSPeter Wemm you will accept and relay mail addressed to foo.com. See 1127c2aa98e2SPeter Wemm description below for more information before using this 1128065a643dSPeter Wemm feature. Also, see the KNOWNBUGS entry regarding bestmx 1129065a643dSPeter Wemm map lookups. 1130065a643dSPeter Wemm 11312e43090eSPeter Wemm FEATURE(`relay_based_on_MX') does not necessarily allow 1132065a643dSPeter Wemm routing of these messages which you expect to be allowed, 1133065a643dSPeter Wemm if route address syntax (or %-hack syntax) is used. If 1134065a643dSPeter Wemm this is a problem, add entries to the access-table or use 11352e43090eSPeter Wemm FEATURE(`loose_relay_check'). 1136c2aa98e2SPeter Wemm 113706f25ae9SGregory Neil Shapirorelay_mail_from 113806f25ae9SGregory Neil Shapiro Allows relaying if the mail sender is listed as RELAY in 113906f25ae9SGregory Neil Shapiro the access map. If an optional argument `domain' is given, 114040266059SGregory Neil Shapiro relaying can be allowed just based on the domain portion 114140266059SGregory Neil Shapiro of the sender address. This feature should only be used if 114240266059SGregory Neil Shapiro absolutely necessary as the sender address can be easily 114394c01205SGregory Neil Shapiro forged. Use of this feature requires the "From:" tag to 114494c01205SGregory Neil Shapiro be used for the key in the access map; see the discussion 114540266059SGregory Neil Shapiro of tags and FEATURE(`relay_mail_from') in the section on 114640266059SGregory Neil Shapiro anti-spam configuration control. 114706f25ae9SGregory Neil Shapiro 1148c2aa98e2SPeter Wemmrelay_local_from 1149c2aa98e2SPeter Wemm Allows relaying if the domain portion of the mail sender 1150c2aa98e2SPeter Wemm is a local host. This should only be used if absolutely 1151065a643dSPeter Wemm necessary as it opens a window for spammers. Specifically, 1152065a643dSPeter Wemm they can send mail to your mail server that claims to be 1153065a643dSPeter Wemm from your domain (either directly or via a routed address), 1154065a643dSPeter Wemm and you will go ahead and relay it out to arbitrary hosts 1155065a643dSPeter Wemm on the Internet. 1156c2aa98e2SPeter Wemm 1157c2aa98e2SPeter Wemmaccept_unqualified_senders 1158c2aa98e2SPeter Wemm Normally, MAIL FROM: commands in the SMTP session will be 1159c2aa98e2SPeter Wemm refused if the connection is a network connection and the 1160c2aa98e2SPeter Wemm sender address does not include a domain name. If your 116106f25ae9SGregory Neil Shapiro setup sends local mail unqualified (i.e., MAIL FROM: <joe>), 1162c2aa98e2SPeter Wemm you will need to use this feature to accept unqualified 116306f25ae9SGregory Neil Shapiro sender addresses. Setting the DaemonPortOptions modifier 116406f25ae9SGregory Neil Shapiro 'u' overrides the default behavior, i.e., unqualified 116506f25ae9SGregory Neil Shapiro addresses are accepted even without this FEATURE. 116606f25ae9SGregory Neil Shapiro If this FEATURE is not used, the DaemonPortOptions modifier 116706f25ae9SGregory Neil Shapiro 'f' can be used to enforce fully qualified addresses. 1168c2aa98e2SPeter Wemm 1169c2aa98e2SPeter Wemmaccept_unresolvable_domains 1170c2aa98e2SPeter Wemm Normally, MAIL FROM: commands in the SMTP session will be 117106f25ae9SGregory Neil Shapiro refused if the host part of the argument to MAIL FROM: 117206f25ae9SGregory Neil Shapiro cannot be located in the host name service (e.g., an A or 117306f25ae9SGregory Neil Shapiro MX record in DNS). If you are inside a firewall that has 117406f25ae9SGregory Neil Shapiro only a limited view of the Internet host name space, this 117506f25ae9SGregory Neil Shapiro could cause problems. In this case you probably want to 117606f25ae9SGregory Neil Shapiro use this feature to accept all domains on input, even if 117706f25ae9SGregory Neil Shapiro they are unresolvable. 1178c2aa98e2SPeter Wemm 1179c2aa98e2SPeter Wemmaccess_db Turns on the access database feature. The access db gives 1180c2aa98e2SPeter Wemm you the ability to allow or refuse to accept mail from 118140266059SGregory Neil Shapiro specified domains for administrative reasons. Moreover, 118240266059SGregory Neil Shapiro it can control the behavior of sendmail in various situations. 118340266059SGregory Neil Shapiro By default, the access database specification is: 11842e43090eSPeter Wemm 118540266059SGregory Neil Shapiro hash -T<TMPF> /etc/mail/access 11862e43090eSPeter Wemm 118740266059SGregory Neil Shapiro See the anti-spam configuration control section for further 118840266059SGregory Neil Shapiro important information about this feature. Notice: 118940266059SGregory Neil Shapiro "-T<TMPF>" is meant literal, do not replace it by anything. 1190c2aa98e2SPeter Wemm 1191c2aa98e2SPeter Wemmblacklist_recipients 1192c2aa98e2SPeter Wemm Turns on the ability to block incoming mail for certain 1193c2aa98e2SPeter Wemm recipient usernames, hostnames, or addresses. For 1194c2aa98e2SPeter Wemm example, you can block incoming mail to user nobody, 1195c2aa98e2SPeter Wemm host foo.mydomain.com, or guest@bar.mydomain.com. 1196c2aa98e2SPeter Wemm These specifications are put in the access db as 119706f25ae9SGregory Neil Shapiro described in the anti-spam configuration control section 119806f25ae9SGregory Neil Shapiro later in this document. 1199c2aa98e2SPeter Wemm 1200193538b7SGregory Neil Shapirodelay_checks The rulesets check_mail and check_relay will not be called 1201193538b7SGregory Neil Shapiro when a client connects or issues a MAIL command, respectively. 1202193538b7SGregory Neil Shapiro Instead, those rulesets will be called by the check_rcpt 1203193538b7SGregory Neil Shapiro ruleset; they will be skipped under certain circumstances. 120440266059SGregory Neil Shapiro See "Delay all checks" in the anti-spam configuration control 120540266059SGregory Neil Shapiro section. Note: this feature is incompatible to the versions 120640266059SGregory Neil Shapiro in 8.10 and 8.11. 1207c2aa98e2SPeter Wemm 120806f25ae9SGregory Neil Shapirodnsbl Turns on rejection of hosts found in an DNS based rejection 120906f25ae9SGregory Neil Shapiro list. If an argument is provided it is used as the domain 121006f25ae9SGregory Neil Shapiro in which blocked hosts are listed; otherwise it defaults to 1211193538b7SGregory Neil Shapiro blackholes.mail-abuse.org. An explanation for an DNS based 121240266059SGregory Neil Shapiro rejection list can be found at http://mail-abuse.org/rbl/. 121340266059SGregory Neil Shapiro A second argument can be used to change the default error 121440266059SGregory Neil Shapiro message. Without that second argument, the error message 121540266059SGregory Neil Shapiro will be 1216739ac4d4SGregory Neil Shapiro Rejected: IP-ADDRESS listed at SERVER 121740266059SGregory Neil Shapiro where IP-ADDRESS and SERVER are replaced by the appropriate 121840266059SGregory Neil Shapiro information. By default, temporary lookup failures are 121940266059SGregory Neil Shapiro ignored. This behavior can be changed by specifying a 122040266059SGregory Neil Shapiro third argument, which must be either `t' or a full error 122140266059SGregory Neil Shapiro message. See the anti-spam configuration control section for 122240266059SGregory Neil Shapiro an example. The dnsbl feature can be included several times 122340266059SGregory Neil Shapiro to query different DNS based rejection lists. See also 122440266059SGregory Neil Shapiro enhdnsbl for an enhanced version. 122506f25ae9SGregory Neil Shapiro 122694c01205SGregory Neil Shapiro Some DNS based rejection lists cause failures if asked 122794c01205SGregory Neil Shapiro for AAAA records. If your sendmail version is compiled 122894c01205SGregory Neil Shapiro with IPv6 support (NETINET6) and you experience this 122994c01205SGregory Neil Shapiro problem, add 123094c01205SGregory Neil Shapiro 123194c01205SGregory Neil Shapiro define(`DNSBL_MAP', `dns -R A') 123294c01205SGregory Neil Shapiro 123394c01205SGregory Neil Shapiro before the first use of this feature. Alternatively you 123494c01205SGregory Neil Shapiro can use enhdnsbl instead (see below). 123594c01205SGregory Neil Shapiro 123613058a91SGregory Neil Shapiro NOTE: The default DNS blacklist, blackholes.mail-abuse.org, 123713058a91SGregory Neil Shapiro is a service offered by the Mail Abuse Prevention System 123813058a91SGregory Neil Shapiro (MAPS). As of July 31, 2001, MAPS is a subscription 123913058a91SGregory Neil Shapiro service, so using that network address won't work if you 124013058a91SGregory Neil Shapiro haven't subscribed. Contact MAPS to subscribe 124113058a91SGregory Neil Shapiro (http://mail-abuse.org/). 124213058a91SGregory Neil Shapiro 124340266059SGregory Neil Shapiroenhdnsbl Enhanced version of dnsbl (see above). Further arguments 124440266059SGregory Neil Shapiro (up to 5) can be used to specify specific return values 124540266059SGregory Neil Shapiro from lookups. Temporary lookup failures are ignored unless 124640266059SGregory Neil Shapiro a third argument is given, which must be either `t' or a full 124740266059SGregory Neil Shapiro error message. By default, any successful lookup will 124840266059SGregory Neil Shapiro generate an error. Otherwise the result of the lookup is 124940266059SGregory Neil Shapiro compared with the supplied argument(s), and only if a match 125040266059SGregory Neil Shapiro occurs an error is generated. For example, 125140266059SGregory Neil Shapiro 125240266059SGregory Neil Shapiro FEATURE(`enhdnsbl', `dnsbl.example.com', `', `t', `127.0.0.2.') 125340266059SGregory Neil Shapiro 125440266059SGregory Neil Shapiro will reject the e-mail if the lookup returns the value 125540266059SGregory Neil Shapiro ``127.0.0.2.'', or generate a 451 response if the lookup 125640266059SGregory Neil Shapiro temporarily failed. The arguments can contain metasymbols 125740266059SGregory Neil Shapiro as they are allowed in the LHS of rules. As the example 125840266059SGregory Neil Shapiro shows, the default values are also used if an empty argument, 125940266059SGregory Neil Shapiro i.e., `', is specified. This feature requires that sendmail 126040266059SGregory Neil Shapiro has been compiled with the flag DNSMAP (see sendmail/README). 126140266059SGregory Neil Shapiro 126240266059SGregory Neil Shapirolookupdotdomain Look up also .domain in the access map. This allows to 126340266059SGregory Neil Shapiro match only subdomains. It does not work well with 126440266059SGregory Neil Shapiro FEATURE(`relay_hosts_only'), because most lookups for 126540266059SGregory Neil Shapiro subdomains are suppressed by the latter feature. 126640266059SGregory Neil Shapiro 1267c2aa98e2SPeter Wemmloose_relay_check 126806f25ae9SGregory Neil Shapiro Normally, if % addressing is used for a recipient, e.g. 126906f25ae9SGregory Neil Shapiro user%site@othersite, and othersite is in class {R}, the 1270c2aa98e2SPeter Wemm check_rcpt ruleset will strip @othersite and recheck 1271c2aa98e2SPeter Wemm user@site for relaying. This feature changes that 1272c2aa98e2SPeter Wemm behavior. It should not be needed for most installations. 1273c2aa98e2SPeter Wemm 127440266059SGregory Neil Shapiroauthinfo Provide a separate map for client side authentication 127540266059SGregory Neil Shapiro information. See SMTP AUTHENTICATION for details. 127640266059SGregory Neil Shapiro By default, the authinfo database specification is: 127740266059SGregory Neil Shapiro 127840266059SGregory Neil Shapiro hash /etc/mail/authinfo 127940266059SGregory Neil Shapiro 128040266059SGregory Neil Shapiropreserve_luser_host 128140266059SGregory Neil Shapiro Preserve the name of the recipient host if LUSER_RELAY is 128240266059SGregory Neil Shapiro used. Without this option, the domain part of the 128340266059SGregory Neil Shapiro recipient address will be replaced by the host specified as 128440266059SGregory Neil Shapiro LUSER_RELAY. This feature only works if the hostname is 128540266059SGregory Neil Shapiro passed to the mailer (see mailer triple in op.me). Note 128640266059SGregory Neil Shapiro that in the default configuration the local mailer does not 128740266059SGregory Neil Shapiro receive the hostname, i.e., the mailer triple has an empty 128840266059SGregory Neil Shapiro hostname. 128940266059SGregory Neil Shapiro 129040266059SGregory Neil Shapiropreserve_local_plus_detail 129140266059SGregory Neil Shapiro Preserve the +detail portion of the address when passing 129240266059SGregory Neil Shapiro address to local delivery agent. Disables alias and 129340266059SGregory Neil Shapiro .forward +detail stripping (e.g., given user+detail, only 129440266059SGregory Neil Shapiro that address will be looked up in the alias file; user+* and 129540266059SGregory Neil Shapiro user will not be looked up). Only use if the local 129640266059SGregory Neil Shapiro delivery agent in use supports +detail addressing. 129740266059SGregory Neil Shapiro 129840266059SGregory Neil Shapirocompat_check Enable ruleset check_compat to look up pairs of addresses 129940266059SGregory Neil Shapiro with the Compat: tag -- Compat:sender<@>recipient -- in the 130040266059SGregory Neil Shapiro access map. Valid values for the RHS include 130140266059SGregory Neil Shapiro DISCARD silently discard recipient 130240266059SGregory Neil Shapiro TEMP: return a temporary error 130340266059SGregory Neil Shapiro ERROR: return a permanent error 130440266059SGregory Neil Shapiro In the last two cases, a 4xy/5xy SMTP reply code should 130540266059SGregory Neil Shapiro follow the colon. 130640266059SGregory Neil Shapiro 130706f25ae9SGregory Neil Shapirono_default_msa Don't generate the default MSA daemon, i.e., 130806f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=587,Name=MSA,M=E') 130906f25ae9SGregory Neil Shapiro To define a MSA daemon with other parameters, use this 131006f25ae9SGregory Neil Shapiro FEATURE and introduce new settings via DAEMON_OPTIONS(). 1311c2aa98e2SPeter Wemm 131240266059SGregory Neil Shapiromsp Defines config file for Message Submission Program. 1313605302a5SGregory Neil Shapiro See sendmail/SECURITY for details and cf/cf/submit.mc how 1314605302a5SGregory Neil Shapiro to use it. An optional argument can be used to override 1315605302a5SGregory Neil Shapiro the default of `[localhost]' to use as host to send all 1316605302a5SGregory Neil Shapiro e-mails to. Note that MX records will be used if the 1317605302a5SGregory Neil Shapiro specified hostname is not in square brackets (e.g., 1318605302a5SGregory Neil Shapiro [hostname]). If `MSA' is specified as second argument then 1319605302a5SGregory Neil Shapiro port 587 is used to contact the server. Example: 132040266059SGregory Neil Shapiro 132140266059SGregory Neil Shapiro FEATURE(`msp', `', `MSA') 132240266059SGregory Neil Shapiro 132340266059SGregory Neil Shapiro Some more hints about possible changes can be found below 132440266059SGregory Neil Shapiro in the section MESSAGE SUBMISSION PROGRAM. 132540266059SGregory Neil Shapiro 132694c01205SGregory Neil Shapiro Note: if localhost doesn't resolve to the IP address 132794c01205SGregory Neil Shapiro of your local system (127.0.0.1 or ::1 for IPv6), 132894c01205SGregory Neil Shapiro then you either need to fix your hostname resolution 132994c01205SGregory Neil Shapiro (localhost and localhost.YOUR.DOMAIN should resolve 133094c01205SGregory Neil Shapiro to that address by convention) or you need to specify 133194c01205SGregory Neil Shapiro the IP address as argument, e.g., 133294c01205SGregory Neil Shapiro 133394c01205SGregory Neil Shapiro FEATURE(`msp', `[127.0.0.1]') 133494c01205SGregory Neil Shapiro 133540266059SGregory Neil Shapiroqueuegroup A simple example how to select a queue group based 133640266059SGregory Neil Shapiro on the full e-mail address or the domain of the 133740266059SGregory Neil Shapiro recipient. Selection is done via entries in the 133840266059SGregory Neil Shapiro access map using the tag QGRP:, for example: 133940266059SGregory Neil Shapiro 134040266059SGregory Neil Shapiro QGRP:example.com main 134140266059SGregory Neil Shapiro QGRP:friend@some.org others 134240266059SGregory Neil Shapiro QGRP:my.domain local 134340266059SGregory Neil Shapiro 134440266059SGregory Neil Shapiro where "main", "others", and "local" are names of 134540266059SGregory Neil Shapiro queue groups. If an argument is specified, it is used 134640266059SGregory Neil Shapiro as default queue group. 134740266059SGregory Neil Shapiro 1348605302a5SGregory Neil Shapiro Note: please read the warning in doc/op/op.me about 1349605302a5SGregory Neil Shapiro queue groups and possible queue manipulations. 1350605302a5SGregory Neil Shapiro 1351c2aa98e2SPeter Wemm+-------+ 1352c2aa98e2SPeter Wemm| HACKS | 1353c2aa98e2SPeter Wemm+-------+ 1354c2aa98e2SPeter Wemm 1355c2aa98e2SPeter WemmSome things just can't be called features. To make this clear, 1356c2aa98e2SPeter Wemmthey go in the hack subdirectory and are referenced using the HACK 1357c2aa98e2SPeter Wemmmacro. These will tend to be site-dependent. The release 1358c2aa98e2SPeter Wemmincludes the Berkeley-dependent "cssubdomain" hack (that makes 1359c2aa98e2SPeter Wemmsendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU; 136006f25ae9SGregory Neil Shapirothis is intended as a short-term aid while moving hosts into 1361c2aa98e2SPeter Wemmsubdomains. 1362c2aa98e2SPeter Wemm 1363c2aa98e2SPeter Wemm 1364c2aa98e2SPeter Wemm+--------------------+ 1365c2aa98e2SPeter Wemm| SITE CONFIGURATION | 1366c2aa98e2SPeter Wemm+--------------------+ 1367c2aa98e2SPeter Wemm 1368c2aa98e2SPeter Wemm ***************************************************** 1369c2aa98e2SPeter Wemm * This section is really obsolete, and is preserved * 1370c2aa98e2SPeter Wemm * only for back compatibility. You should plan on * 1371c2aa98e2SPeter Wemm * using mailertables for new installations. In * 1372c2aa98e2SPeter Wemm * particular, it doesn't work for the newer forms * 1373c2aa98e2SPeter Wemm * of UUCP mailers, such as uucp-uudom. * 1374c2aa98e2SPeter Wemm ***************************************************** 1375c2aa98e2SPeter Wemm 1376c2aa98e2SPeter WemmComplex sites will need more local configuration information, such as 1377c2aa98e2SPeter Wemmlists of UUCP hosts they speak with directly. This can get a bit more 1378c2aa98e2SPeter Wemmtricky. For an example of a "complex" site, see cf/ucbvax.mc. 1379c2aa98e2SPeter Wemm 1380c2aa98e2SPeter WemmThe SITECONFIG macro allows you to indirectly reference site-dependent 1381c2aa98e2SPeter Wemmconfiguration information stored in the siteconfig subdirectory. For 1382c2aa98e2SPeter Wemmexample, the line 1383c2aa98e2SPeter Wemm 138406f25ae9SGregory Neil Shapiro SITECONFIG(`uucp.ucbvax', `ucbvax', `U') 1385c2aa98e2SPeter Wemm 1386c2aa98e2SPeter Wemmreads the file uucp.ucbvax for local connection information. The 1387c2aa98e2SPeter Wemmsecond parameter is the local name (in this case just "ucbvax" since 1388c2aa98e2SPeter Wemmit is locally connected, and hence a UUCP hostname). The third 1389c2aa98e2SPeter Wemmparameter is the name of both a macro to store the local name (in 139006f25ae9SGregory Neil Shapirothis case, {U}) and the name of the class (e.g., {U}) in which to store 1391c2aa98e2SPeter Wemmthe host information read from the file. Another SITECONFIG line reads 1392c2aa98e2SPeter Wemm 139306f25ae9SGregory Neil Shapiro SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W') 1394c2aa98e2SPeter Wemm 1395c2aa98e2SPeter WemmThis says that the file uucp.ucbarpa contains the list of UUCP sites 139606f25ae9SGregory Neil Shapiroconnected to ucbarpa.Berkeley.EDU. Class {W} will be used to 1397c2aa98e2SPeter Wemmstore this list, and $W is defined to be ucbarpa.Berkeley.EDU, that 1398c2aa98e2SPeter Wemmis, the name of the relay to which the hosts listed in uucp.ucbarpa 139906f25ae9SGregory Neil Shapiroare connected. [The machine ucbarpa is gone now, but this 140006f25ae9SGregory Neil Shapiroout-of-date configuration file has been left around to demonstrate 140106f25ae9SGregory Neil Shapirohow you might do this.] 1402c2aa98e2SPeter Wemm 1403c2aa98e2SPeter WemmNote that the case of SITECONFIG with a third parameter of ``U'' is 1404c2aa98e2SPeter Wemmspecial; the second parameter is assumed to be the UUCP name of the 1405c2aa98e2SPeter Wemmlocal site, rather than the name of a remote site, and the UUCP name 140606f25ae9SGregory Neil Shapirois entered into class {w} (the list of local hostnames) as $U.UUCP. 1407c2aa98e2SPeter Wemm 1408c2aa98e2SPeter WemmThe siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing 1409c2aa98e2SPeter Wemmmore than a sequence of SITE macros describing connectivity. For 1410c2aa98e2SPeter Wemmexample: 1411c2aa98e2SPeter Wemm 141206f25ae9SGregory Neil Shapiro SITE(`cnmat') 141306f25ae9SGregory Neil Shapiro SITE(`sgi olympus') 1414c2aa98e2SPeter Wemm 1415c2aa98e2SPeter WemmThe second example demonstrates that you can use two names on the 1416c2aa98e2SPeter Wemmsame line; these are usually aliases for the same host (or are at 1417c2aa98e2SPeter Wemmleast in the same company). 1418c2aa98e2SPeter Wemm 1419c2aa98e2SPeter Wemm 1420c2aa98e2SPeter Wemm+--------------------+ 1421c2aa98e2SPeter Wemm| USING UUCP MAILERS | 1422c2aa98e2SPeter Wemm+--------------------+ 1423c2aa98e2SPeter Wemm 1424c2aa98e2SPeter WemmIt's hard to get UUCP mailers right because of the extremely ad hoc 1425c2aa98e2SPeter Wemmnature of UUCP addressing. These config files are really designed 1426c2aa98e2SPeter Wemmfor domain-based addressing, even for UUCP sites. 1427c2aa98e2SPeter Wemm 1428c2aa98e2SPeter WemmThere are four UUCP mailers available. The choice of which one to 1429c2aa98e2SPeter Wemmuse is partly a matter of local preferences and what is running at 1430c2aa98e2SPeter Wemmthe other end of your UUCP connection. Unlike good protocols that 1431c2aa98e2SPeter Wemmdefine what will go over the wire, UUCP uses the policy that you 1432c2aa98e2SPeter Wemmshould do what is right for the other end; if they change, you have 1433c2aa98e2SPeter Wemmto change. This makes it hard to do the right thing, and discourages 1434c2aa98e2SPeter Wemmpeople from updating their software. In general, if you can avoid 1435c2aa98e2SPeter WemmUUCP, please do. 1436c2aa98e2SPeter Wemm 1437c2aa98e2SPeter WemmThe major choice is whether to go for a domainized scheme or a 1438c2aa98e2SPeter Wemmnon-domainized scheme. This depends entirely on what the other 1439c2aa98e2SPeter Wemmend will recognize. If at all possible, you should encourage the 1440c2aa98e2SPeter Wemmother end to go to a domain-based system -- non-domainized addresses 1441c2aa98e2SPeter Wemmdon't work entirely properly. 1442c2aa98e2SPeter Wemm 1443c2aa98e2SPeter WemmThe four mailers are: 1444c2aa98e2SPeter Wemm 1445c2aa98e2SPeter Wemm uucp-old (obsolete name: "uucp") 1446c2aa98e2SPeter Wemm This is the oldest, the worst (but the closest to UUCP) way of 1447c2aa98e2SPeter Wemm sending messages accros UUCP connections. It does bangify 1448c2aa98e2SPeter Wemm everything and prepends $U (your UUCP name) to the sender's 1449c2aa98e2SPeter Wemm address (which can already be a bang path itself). It can 1450c2aa98e2SPeter Wemm only send to one address at a time, so it spends a lot of 1451c2aa98e2SPeter Wemm time copying duplicates of messages. Avoid this if at all 1452c2aa98e2SPeter Wemm possible. 1453c2aa98e2SPeter Wemm 1454c2aa98e2SPeter Wemm uucp-new (obsolete name: "suucp") 1455c2aa98e2SPeter Wemm The same as above, except that it assumes that in one rmail 1456c2aa98e2SPeter Wemm command you can specify several recipients. It still has a 1457c2aa98e2SPeter Wemm lot of other problems. 1458c2aa98e2SPeter Wemm 1459c2aa98e2SPeter Wemm uucp-dom 1460c2aa98e2SPeter Wemm This UUCP mailer keeps everything as domain addresses. 1461c2aa98e2SPeter Wemm Basically, it uses the SMTP mailer rewriting rules. This mailer 146240266059SGregory Neil Shapiro is only included if MAILER(`smtp') is specified before 146340266059SGregory Neil Shapiro MAILER(`uucp'). 1464c2aa98e2SPeter Wemm 1465c2aa98e2SPeter Wemm Unfortunately, a lot of UUCP mailer transport agents require 1466c2aa98e2SPeter Wemm bangified addresses in the envelope, although you can use 1467c2aa98e2SPeter Wemm domain-based addresses in the message header. (The envelope 1468c2aa98e2SPeter Wemm shows up as the From_ line on UNIX mail.) So.... 1469c2aa98e2SPeter Wemm 1470c2aa98e2SPeter Wemm uucp-uudom 1471c2aa98e2SPeter Wemm This is a cross between uucp-new (for the envelope addresses) 1472c2aa98e2SPeter Wemm and uucp-dom (for the header addresses). It bangifies the 1473c2aa98e2SPeter Wemm envelope sender (From_ line in messages) without adding the 1474c2aa98e2SPeter Wemm local hostname, unless there is no host name on the address 1475c2aa98e2SPeter Wemm at all (e.g., "wolf") or the host component is a UUCP host name 1476c2aa98e2SPeter Wemm instead of a domain name ("somehost!wolf" instead of 147706f25ae9SGregory Neil Shapiro "some.dom.ain!wolf"). This is also included only if MAILER(`smtp') 147840266059SGregory Neil Shapiro is also specified earlier. 1479c2aa98e2SPeter Wemm 1480c2aa98e2SPeter WemmExamples: 1481c2aa98e2SPeter Wemm 148206f25ae9SGregory Neil ShapiroOn host grasp.insa-lyon.fr (UUCP host name "grasp"), the following 148306f25ae9SGregory Neil Shapirosummarizes the sender rewriting for various mailers. 1484c2aa98e2SPeter Wemm 1485c2aa98e2SPeter WemmMailer sender rewriting in the envelope 1486c2aa98e2SPeter Wemm------ ------ ------------------------- 1487c2aa98e2SPeter Wemmuucp-{old,new} wolf grasp!wolf 1488c2aa98e2SPeter Wemmuucp-dom wolf wolf@grasp.insa-lyon.fr 1489c2aa98e2SPeter Wemmuucp-uudom wolf grasp.insa-lyon.fr!wolf 1490c2aa98e2SPeter Wemm 1491c2aa98e2SPeter Wemmuucp-{old,new} wolf@fr.net grasp!fr.net!wolf 1492c2aa98e2SPeter Wemmuucp-dom wolf@fr.net wolf@fr.net 1493c2aa98e2SPeter Wemmuucp-uudom wolf@fr.net fr.net!wolf 1494c2aa98e2SPeter Wemm 1495c2aa98e2SPeter Wemmuucp-{old,new} somehost!wolf grasp!somehost!wolf 1496c2aa98e2SPeter Wemmuucp-dom somehost!wolf somehost!wolf@grasp.insa-lyon.fr 1497c2aa98e2SPeter Wemmuucp-uudom somehost!wolf grasp.insa-lyon.fr!somehost!wolf 1498c2aa98e2SPeter Wemm 1499c2aa98e2SPeter WemmIf you are using one of the domainized UUCP mailers, you really want 1500c2aa98e2SPeter Wemmto convert all UUCP addresses to domain format -- otherwise, it will 1501c2aa98e2SPeter Wemmdo it for you (and probably not the way you expected). For example, 1502c2aa98e2SPeter Wemmif you have the address foo!bar!baz (and you are not sending to foo), 1503c2aa98e2SPeter Wemmthe heuristics will add the @uucp.relay.name or @local.host.name to 1504c2aa98e2SPeter Wemmthis address. However, if you map foo to foo.host.name first, it 1505c2aa98e2SPeter Wemmwill not add the local hostname. You can do this using the uucpdomain 1506c2aa98e2SPeter Wemmfeature. 1507c2aa98e2SPeter Wemm 1508c2aa98e2SPeter Wemm 1509c2aa98e2SPeter Wemm+-------------------+ 1510c2aa98e2SPeter Wemm| TWEAKING RULESETS | 1511c2aa98e2SPeter Wemm+-------------------+ 1512c2aa98e2SPeter Wemm 1513c2aa98e2SPeter WemmFor more complex configurations, you can define special rules. 1514c2aa98e2SPeter WemmThe macro LOCAL_RULE_3 introduces rules that are used in canonicalizing 1515c2aa98e2SPeter Wemmthe names. Any modifications made here are reflected in the header. 1516c2aa98e2SPeter Wemm 1517c2aa98e2SPeter WemmA common use is to convert old UUCP addresses to SMTP addresses using 1518c2aa98e2SPeter Wemmthe UUCPSMTP macro. For example: 1519c2aa98e2SPeter Wemm 1520c2aa98e2SPeter Wemm LOCAL_RULE_3 152106f25ae9SGregory Neil Shapiro UUCPSMTP(`decvax', `decvax.dec.com') 152206f25ae9SGregory Neil Shapiro UUCPSMTP(`research', `research.att.com') 1523c2aa98e2SPeter Wemm 1524c2aa98e2SPeter Wemmwill cause addresses of the form "decvax!user" and "research!user" 1525c2aa98e2SPeter Wemmto be converted to "user@decvax.dec.com" and "user@research.att.com" 1526c2aa98e2SPeter Wemmrespectively. 1527c2aa98e2SPeter Wemm 1528c2aa98e2SPeter WemmThis could also be used to look up hosts in a database map: 1529c2aa98e2SPeter Wemm 1530c2aa98e2SPeter Wemm LOCAL_RULE_3 1531c2aa98e2SPeter Wemm R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3 1532c2aa98e2SPeter Wemm 1533c2aa98e2SPeter WemmThis map would be defined in the LOCAL_CONFIG portion, as shown below. 1534c2aa98e2SPeter Wemm 1535c2aa98e2SPeter WemmSimilarly, LOCAL_RULE_0 can be used to introduce new parsing rules. 1536c2aa98e2SPeter WemmFor example, new rules are needed to parse hostnames that you accept 1537c2aa98e2SPeter Wemmvia MX records. For example, you might have: 1538c2aa98e2SPeter Wemm 1539c2aa98e2SPeter Wemm LOCAL_RULE_0 1540c2aa98e2SPeter Wemm R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.> 1541c2aa98e2SPeter Wemm 1542c2aa98e2SPeter WemmYou would use this if you had installed an MX record for cnmat.Berkeley.EDU 1543c2aa98e2SPeter Wemmpointing at this host; this rule catches the message and forwards it on 1544c2aa98e2SPeter Wemmusing UUCP. 1545c2aa98e2SPeter Wemm 1546c2aa98e2SPeter WemmYou can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2. 1547c2aa98e2SPeter WemmThese rulesets are normally empty. 1548c2aa98e2SPeter Wemm 1549c2aa98e2SPeter WemmA similar macro is LOCAL_CONFIG. This introduces lines added after the 155006f25ae9SGregory Neil Shapiroboilerplate option setting but before rulesets. Do not declare rulesets in 155106f25ae9SGregory Neil Shapirothe LOCAL_CONFIG section. It can be used to declare local database maps or 155206f25ae9SGregory Neil Shapirowhatever. For example: 1553c2aa98e2SPeter Wemm 1554c2aa98e2SPeter Wemm LOCAL_CONFIG 155506f25ae9SGregory Neil Shapiro Khostmap hash /etc/mail/hostmap 1556c2aa98e2SPeter Wemm Kyplocal nis -m hosts.byname 1557c2aa98e2SPeter Wemm 1558c2aa98e2SPeter Wemm 1559c2aa98e2SPeter Wemm+---------------------------+ 1560c2aa98e2SPeter Wemm| MASQUERADING AND RELAYING | 1561c2aa98e2SPeter Wemm+---------------------------+ 1562c2aa98e2SPeter Wemm 1563c2aa98e2SPeter WemmYou can have your host masquerade as another using 1564c2aa98e2SPeter Wemm 156506f25ae9SGregory Neil Shapiro MASQUERADE_AS(`host.domain') 1566c2aa98e2SPeter Wemm 1567c2aa98e2SPeter WemmThis causes mail being sent to be labeled as coming from the 1568c2aa98e2SPeter Wemmindicated host.domain, rather than $j. One normally masquerades as 156906f25ae9SGregory Neil Shapiroone of one's own subdomains (for example, it's unlikely that 157006f25ae9SGregory Neil ShapiroBerkeley would choose to masquerade as an MIT site). This 157106f25ae9SGregory Neil Shapirobehaviour is modified by a plethora of FEATUREs; in particular, see 157206f25ae9SGregory Neil Shapiromasquerade_envelope, allmasquerade, limited_masquerade, and 157306f25ae9SGregory Neil Shapiromasquerade_entire_domain. 1574c2aa98e2SPeter Wemm 1575c2aa98e2SPeter WemmThe masquerade name is not normally canonified, so it is important 1576c2aa98e2SPeter Wemmthat it be your One True Name, that is, fully qualified and not a 1577c2aa98e2SPeter WemmCNAME. However, if you use a CNAME, the receiving side may canonify 1578c2aa98e2SPeter Wemmit for you, so don't think you can cheat CNAME mapping this way. 1579c2aa98e2SPeter Wemm 1580c2aa98e2SPeter WemmNormally the only addresses that are masqueraded are those that come 158106f25ae9SGregory Neil Shapirofrom this host (that is, are either unqualified or in class {w}, the list 158206f25ae9SGregory Neil Shapiroof local domain names). You can augment this list, which is realized 158306f25ae9SGregory Neil Shapiroby class {M} using 1584c2aa98e2SPeter Wemm 158506f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN(`otherhost.domain') 1586c2aa98e2SPeter Wemm 1587c2aa98e2SPeter WemmThe effect of this is that although mail to user@otherhost.domain 1588c2aa98e2SPeter Wemmwill not be delivered locally, any mail including any user@otherhost.domain 1589c2aa98e2SPeter Wemmwill, when relayed, be rewritten to have the MASQUERADE_AS address. 1590c2aa98e2SPeter WemmThis can be a space-separated list of names. 1591c2aa98e2SPeter Wemm 1592c2aa98e2SPeter WemmIf these names are in a file, you can use 1593c2aa98e2SPeter Wemm 159406f25ae9SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE(`filename') 1595c2aa98e2SPeter Wemm 159606f25ae9SGregory Neil Shapiroto read the list of names from the indicated file (i.e., to add 159706f25ae9SGregory Neil Shapiroelements to class {M}). 159806f25ae9SGregory Neil Shapiro 159906f25ae9SGregory Neil ShapiroTo exempt hosts or subdomains from being masqueraded, you can use 160006f25ae9SGregory Neil Shapiro 160106f25ae9SGregory Neil Shapiro MASQUERADE_EXCEPTION(`host.domain') 160206f25ae9SGregory Neil Shapiro 160306f25ae9SGregory Neil ShapiroThis can come handy if you want to masquerade a whole domain 160440266059SGregory Neil Shapiroexcept for one (or a few) host(s). If these names are in a file, 160540266059SGregory Neil Shapiroyou can use 160640266059SGregory Neil Shapiro 160740266059SGregory Neil Shapiro MASQUERADE_EXCEPTION_FILE(`filename') 1608c2aa98e2SPeter Wemm 1609c2aa98e2SPeter WemmNormally only header addresses are masqueraded. If you want to 1610c2aa98e2SPeter Wemmmasquerade the envelope as well, use 1611c2aa98e2SPeter Wemm 16122e43090eSPeter Wemm FEATURE(`masquerade_envelope') 1613c2aa98e2SPeter Wemm 1614c2aa98e2SPeter WemmThere are always users that need to be "exposed" -- that is, their 1615c2aa98e2SPeter Wemminternal site name should be displayed instead of the masquerade name. 161606f25ae9SGregory Neil ShapiroRoot is an example (which has been "exposed" by default prior to 8.10). 161706f25ae9SGregory Neil ShapiroYou can add users to this list using 1618c2aa98e2SPeter Wemm 161906f25ae9SGregory Neil Shapiro EXPOSED_USER(`usernames') 1620c2aa98e2SPeter Wemm 162140266059SGregory Neil ShapiroThis adds users to class {E}; you could also use 1622c2aa98e2SPeter Wemm 162340266059SGregory Neil Shapiro EXPOSED_USER_FILE(`filename') 1624c2aa98e2SPeter Wemm 1625c2aa98e2SPeter WemmYou can also arrange to relay all unqualified names (that is, names 1626c2aa98e2SPeter Wemmwithout @host) to a relay host. For example, if you have a central 1627c2aa98e2SPeter Wemmemail server, you might relay to that host so that users don't have 1628c2aa98e2SPeter Wemmto have .forward files or aliases. You can do this using 1629c2aa98e2SPeter Wemm 16302e43090eSPeter Wemm define(`LOCAL_RELAY', `mailer:hostname') 1631c2aa98e2SPeter Wemm 1632c2aa98e2SPeter WemmThe ``mailer:'' can be omitted, in which case the mailer defaults to 1633c2aa98e2SPeter Wemm"relay". There are some user names that you don't want relayed, perhaps 1634c2aa98e2SPeter Wemmbecause of local aliases. A common example is root, which may be 1635c2aa98e2SPeter Wemmlocally aliased. You can add entries to this list using 1636c2aa98e2SPeter Wemm 163706f25ae9SGregory Neil Shapiro LOCAL_USER(`usernames') 1638c2aa98e2SPeter Wemm 163940266059SGregory Neil ShapiroThis adds users to class {L}; you could also use 1640c2aa98e2SPeter Wemm 164140266059SGregory Neil Shapiro LOCAL_USER_FILE(`filename') 1642c2aa98e2SPeter Wemm 1643c2aa98e2SPeter WemmIf you want all incoming mail sent to a centralized hub, as for a 1644c2aa98e2SPeter Wemmshared /var/spool/mail scheme, use 1645c2aa98e2SPeter Wemm 16462e43090eSPeter Wemm define(`MAIL_HUB', `mailer:hostname') 1647c2aa98e2SPeter Wemm 1648c2aa98e2SPeter WemmAgain, ``mailer:'' defaults to "relay". If you define both LOCAL_RELAY 16492e43090eSPeter Wemmand MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will 1650c2aa98e2SPeter Wemmbe sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB. 165106f25ae9SGregory Neil ShapiroNote: there is a (long standing) bug which keeps this combination from 165206f25ae9SGregory Neil Shapiroworking for addresses of the form user+detail. 165306f25ae9SGregory Neil ShapiroNames in class {L} will be delivered locally, so you MUST have aliases or 1654c2aa98e2SPeter Wemm.forward files for them. 1655c2aa98e2SPeter Wemm 1656c2aa98e2SPeter WemmFor example, if you are on machine mastodon.CS.Berkeley.EDU and you have 16572e43090eSPeter WemmFEATURE(`stickyhost'), the following combinations of settings will have the 1658c2aa98e2SPeter Wemmindicated effects: 1659c2aa98e2SPeter Wemm 1660c2aa98e2SPeter Wemmemail sent to.... eric eric@mastodon.CS.Berkeley.EDU 1661c2aa98e2SPeter Wemm 1662c2aa98e2SPeter WemmLOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally) 1663c2aa98e2SPeter Wemmmail.CS.Berkeley.EDU (no local aliasing) (aliasing done) 1664c2aa98e2SPeter Wemm 1665c2aa98e2SPeter WemmMAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU 1666c2aa98e2SPeter Wemmmammoth.CS.Berkeley.EDU (aliasing done) (aliasing done) 1667c2aa98e2SPeter Wemm 1668c2aa98e2SPeter WemmBoth LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU 1669c2aa98e2SPeter WemmMAIL_HUB set as above (no local aliasing) (aliasing done) 1670c2aa98e2SPeter Wemm 16712e43090eSPeter WemmIf you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and 1672c2aa98e2SPeter WemmMAIL_HUB act identically, with MAIL_HUB taking precedence. 1673c2aa98e2SPeter Wemm 1674c2aa98e2SPeter WemmIf you want all outgoing mail to go to a central relay site, define 1675c2aa98e2SPeter WemmSMART_HOST as well. Briefly: 1676c2aa98e2SPeter Wemm 1677c2aa98e2SPeter Wemm LOCAL_RELAY applies to unqualified names (e.g., "eric"). 1678c2aa98e2SPeter Wemm MAIL_HUB applies to names qualified with the name of the 1679c2aa98e2SPeter Wemm local host (e.g., "eric@mastodon.CS.Berkeley.EDU"). 168006f25ae9SGregory Neil Shapiro SMART_HOST applies to names qualified with other hosts or 168106f25ae9SGregory Neil Shapiro bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU" 168206f25ae9SGregory Neil Shapiro or "eric@[127.0.0.1]"). 1683c2aa98e2SPeter Wemm 1684c2aa98e2SPeter WemmHowever, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY, 1685c2aa98e2SPeter WemmDECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you 1686c2aa98e2SPeter Wemmreally want absolutely everything to go to a single central site you will 1687c2aa98e2SPeter Wemmneed to unset all the other relays -- or better yet, find or build a 1688c2aa98e2SPeter Wemmminimal config file that does this. 1689c2aa98e2SPeter Wemm 1690c2aa98e2SPeter WemmFor duplicate suppression to work properly, the host name is best 1691c2aa98e2SPeter Wemmspecified with a terminal dot: 1692c2aa98e2SPeter Wemm 1693c2aa98e2SPeter Wemm define(`MAIL_HUB', `host.domain.') 1694c2aa98e2SPeter Wemm note the trailing dot ---^ 1695c2aa98e2SPeter Wemm 1696c2aa98e2SPeter Wemm 169740266059SGregory Neil Shapiro+-------------------------------------------+ 169840266059SGregory Neil Shapiro| USING LDAP FOR ALIASES, MAPS, AND CLASSES | 169940266059SGregory Neil Shapiro+-------------------------------------------+ 170040266059SGregory Neil Shapiro 170140266059SGregory Neil ShapiroLDAP can be used for aliases, maps, and classes by either specifying your 170240266059SGregory Neil Shapiroown LDAP map specification or using the built-in default LDAP map 170340266059SGregory Neil Shapirospecification. The built-in default specifications all provide lookups 170440266059SGregory Neil Shapirowhich match against either the machine's fully qualified hostname (${j}) or 170540266059SGregory Neil Shapiroa "cluster". The cluster allows you to share LDAP entries among a large 170640266059SGregory Neil Shapironumber of machines without having to enter each of the machine names into 170740266059SGregory Neil Shapiroeach LDAP entry. To set the LDAP cluster name to use for a particular 170840266059SGregory Neil Shapiromachine or set of machines, set the confLDAP_CLUSTER m4 variable to a 170940266059SGregory Neil Shapirounique name. For example: 171040266059SGregory Neil Shapiro 171140266059SGregory Neil Shapiro define(`confLDAP_CLUSTER', `Servers') 171240266059SGregory Neil Shapiro 171340266059SGregory Neil ShapiroHere, the word `Servers' will be the cluster name. As an example, assume 171440266059SGregory Neil Shapirothat smtp.sendmail.org, etrn.sendmail.org, and mx.sendmail.org all belong 171540266059SGregory Neil Shapiroto the Servers cluster. 171640266059SGregory Neil Shapiro 171740266059SGregory Neil ShapiroSome of the LDAP LDIF examples below show use of the Servers cluster. 171840266059SGregory Neil ShapiroEvery entry must have either a sendmailMTAHost or sendmailMTACluster 171940266059SGregory Neil Shapiroattribute or it will be ignored. Be careful as mixing clusters and 172040266059SGregory Neil Shapiroindividual host records can have surprising results (see the CAUTION 172140266059SGregory Neil Shapirosections below). 172240266059SGregory Neil Shapiro 172340266059SGregory Neil ShapiroSee the file cf/sendmail.schema for the actual LDAP schemas. Note that 172440266059SGregory Neil Shapirothis schema (and therefore the lookups and examples below) is experimental 172540266059SGregory Neil Shapiroat this point as it has had little public review. Therefore, it may change 172640266059SGregory Neil Shapiroin future versions. Feedback via sendmail@sendmail.org is encouraged. 172740266059SGregory Neil Shapiro 172840266059SGregory Neil Shapiro------- 172940266059SGregory Neil ShapiroAliases 173040266059SGregory Neil Shapiro------- 173140266059SGregory Neil Shapiro 173240266059SGregory Neil ShapiroThe ALIAS_FILE (O AliasFile) option can be set to use LDAP for alias 173340266059SGregory Neil Shapirolookups. To use the default schema, simply use: 173440266059SGregory Neil Shapiro 173540266059SGregory Neil Shapiro define(`ALIAS_FILE', `ldap:') 173640266059SGregory Neil Shapiro 173740266059SGregory Neil ShapiroBy doing so, you will use the default schema which expands to a map 173840266059SGregory Neil Shapirodeclared as follows: 173940266059SGregory Neil Shapiro 174040266059SGregory Neil Shapiro ldap -k (&(objectClass=sendmailMTAAliasObject) 174140266059SGregory Neil Shapiro (sendmailMTAAliasGrouping=aliases) 174240266059SGregory Neil Shapiro (|(sendmailMTACluster=${sendmailMTACluster}) 174340266059SGregory Neil Shapiro (sendmailMTAHost=$j)) 174440266059SGregory Neil Shapiro (sendmailMTAKey=%0)) 174540266059SGregory Neil Shapiro -v sendmailMTAAliasValue 174640266059SGregory Neil Shapiro 174740266059SGregory Neil ShapiroNOTE: The macros shown above ${sendmailMTACluster} and $j are not actually 174840266059SGregory Neil Shapiroused when the binary expands the `ldap:' token as the AliasFile option is 174940266059SGregory Neil Shapironot actually macro-expanded when read from the sendmail.cf file. 175040266059SGregory Neil Shapiro 175140266059SGregory Neil ShapiroExample LDAP LDIF entries might be: 175240266059SGregory Neil Shapiro 175340266059SGregory Neil Shapiro dn: sendmailMTAKey=sendmail-list, dc=sendmail, dc=org 175440266059SGregory Neil Shapiro objectClass: sendmailMTA 175540266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 175640266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 175740266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 175840266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 175940266059SGregory Neil Shapiro sendmailMTAKey: sendmail-list 176040266059SGregory Neil Shapiro sendmailMTAAliasValue: ca@example.org 176140266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 176240266059SGregory Neil Shapiro sendmailMTAAliasValue: gshapiro@example.com 176340266059SGregory Neil Shapiro 176440266059SGregory Neil Shapiro dn: sendmailMTAKey=owner-sendmail-list, dc=sendmail, dc=org 176540266059SGregory Neil Shapiro objectClass: sendmailMTA 176640266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 176740266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 176840266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 176940266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 177040266059SGregory Neil Shapiro sendmailMTAKey: owner-sendmail-list 177140266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 177240266059SGregory Neil Shapiro 177340266059SGregory Neil Shapiro dn: sendmailMTAKey=postmaster, dc=sendmail, dc=org 177440266059SGregory Neil Shapiro objectClass: sendmailMTA 177540266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 177640266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 177740266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 177840266059SGregory Neil Shapiro sendmailMTACluster: Servers 177940266059SGregory Neil Shapiro sendmailMTAKey: postmaster 178040266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 178140266059SGregory Neil Shapiro 178240266059SGregory Neil ShapiroHere, the aliases sendmail-list and owner-sendmail-list will be available 178340266059SGregory Neil Shapiroonly on etrn.sendmail.org but the postmaster alias will be available on 178440266059SGregory Neil Shapiroevery machine in the Servers cluster (including etrn.sendmail.org). 178540266059SGregory Neil Shapiro 178640266059SGregory Neil ShapiroCAUTION: aliases are additive so that entries like these: 178740266059SGregory Neil Shapiro 178840266059SGregory Neil Shapiro dn: sendmailMTAKey=bob, dc=sendmail, dc=org 178940266059SGregory Neil Shapiro objectClass: sendmailMTA 179040266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 179140266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 179240266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 179340266059SGregory Neil Shapiro sendmailMTACluster: Servers 179440266059SGregory Neil Shapiro sendmailMTAKey: bob 179540266059SGregory Neil Shapiro sendmailMTAAliasValue: eric 179640266059SGregory Neil Shapiro 1797605302a5SGregory Neil Shapiro dn: sendmailMTAKey=bobetrn, dc=sendmail, dc=org 179840266059SGregory Neil Shapiro objectClass: sendmailMTA 179940266059SGregory Neil Shapiro objectClass: sendmailMTAAlias 180040266059SGregory Neil Shapiro objectClass: sendmailMTAAliasObject 180140266059SGregory Neil Shapiro sendmailMTAAliasGrouping: aliases 180240266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 180340266059SGregory Neil Shapiro sendmailMTAKey: bob 180440266059SGregory Neil Shapiro sendmailMTAAliasValue: gshapiro 180540266059SGregory Neil Shapiro 180640266059SGregory Neil Shapirowould mean that on all of the hosts in the cluster, mail to bob would go to 180740266059SGregory Neil Shapiroeric EXCEPT on etrn.sendmail.org in which case it would go to BOTH eric and 180840266059SGregory Neil Shapirogshapiro. 180940266059SGregory Neil Shapiro 181040266059SGregory Neil ShapiroIf you prefer not to use the default LDAP schema for your aliases, you can 181140266059SGregory Neil Shapirospecify the map parameters when setting ALIAS_FILE. For example: 181240266059SGregory Neil Shapiro 181340266059SGregory Neil Shapiro define(`ALIAS_FILE', `ldap:-k (&(objectClass=mailGroup)(mail=%0)) -v mgrpRFC822MailMember') 181440266059SGregory Neil Shapiro 181540266059SGregory Neil Shapiro---- 181640266059SGregory Neil ShapiroMaps 181740266059SGregory Neil Shapiro---- 181840266059SGregory Neil Shapiro 181940266059SGregory Neil ShapiroFEATURE()'s which take an optional map definition argument (e.g., access, 182040266059SGregory Neil Shapiromailertable, virtusertable, etc.) can instead take the special keyword 182140266059SGregory Neil Shapiro`LDAP', e.g.: 182240266059SGregory Neil Shapiro 182340266059SGregory Neil Shapiro FEATURE(`access_db', `LDAP') 182440266059SGregory Neil Shapiro FEATURE(`virtusertable', `LDAP') 182540266059SGregory Neil Shapiro 182640266059SGregory Neil ShapiroWhen this keyword is given, that map will use LDAP lookups consisting of 182740266059SGregory Neil Shapirothe objectClass sendmailMTAClassObject, the attribute sendmailMTAMapName 182840266059SGregory Neil Shapirowith the map name, a search attribute of sendmailMTAKey, and the value 182940266059SGregory Neil Shapiroattribute sendmailMTAMapValue. 183040266059SGregory Neil Shapiro 183140266059SGregory Neil ShapiroThe values for sendmailMTAMapName are: 183240266059SGregory Neil Shapiro 183340266059SGregory Neil Shapiro FEATURE() sendmailMTAMapName 183440266059SGregory Neil Shapiro --------- ------------------ 183540266059SGregory Neil Shapiro access_db access 183640266059SGregory Neil Shapiro authinfo authinfo 183740266059SGregory Neil Shapiro bitdomain bitdomain 183840266059SGregory Neil Shapiro domaintable domain 183940266059SGregory Neil Shapiro genericstable generics 184040266059SGregory Neil Shapiro mailertable mailer 184140266059SGregory Neil Shapiro uucpdomain uucpdomain 184240266059SGregory Neil Shapiro virtusertable virtuser 184340266059SGregory Neil Shapiro 184440266059SGregory Neil ShapiroFor example, FEATURE(`mailertable', `LDAP') would use the map definition: 184540266059SGregory Neil Shapiro 184640266059SGregory Neil Shapiro Kmailertable ldap -k (&(objectClass=sendmailMTAMapObject) 184740266059SGregory Neil Shapiro (sendmailMTAMapName=mailer) 184840266059SGregory Neil Shapiro (|(sendmailMTACluster=${sendmailMTACluster}) 184940266059SGregory Neil Shapiro (sendmailMTAHost=$j)) 185040266059SGregory Neil Shapiro (sendmailMTAKey=%0)) 185140266059SGregory Neil Shapiro -1 -v sendmailMTAMapValue 185240266059SGregory Neil Shapiro 185340266059SGregory Neil ShapiroAn example LDAP LDIF entry using this map might be: 185440266059SGregory Neil Shapiro 185540266059SGregory Neil Shapiro dn: sendmailMTAMapName=mailer, dc=sendmail, dc=org 185640266059SGregory Neil Shapiro objectClass: sendmailMTA 185740266059SGregory Neil Shapiro objectClass: sendmailMTAMap 185840266059SGregory Neil Shapiro sendmailMTACluster: Servers 185940266059SGregory Neil Shapiro sendmailMTAMapName: mailer 186040266059SGregory Neil Shapiro 186140266059SGregory Neil Shapiro dn: sendmailMTAKey=example.com, sendmailMTAMapName=mailer, dc=sendmail, dc=org 186240266059SGregory Neil Shapiro objectClass: sendmailMTA 186340266059SGregory Neil Shapiro objectClass: sendmailMTAMap 186440266059SGregory Neil Shapiro objectClass: sendmailMTAMapObject 186540266059SGregory Neil Shapiro sendmailMTAMapName: mailer 186640266059SGregory Neil Shapiro sendmailMTACluster: Servers 186740266059SGregory Neil Shapiro sendmailMTAKey: example.com 186840266059SGregory Neil Shapiro sendmailMTAMapValue: relay:[smtp.example.com] 186940266059SGregory Neil Shapiro 187040266059SGregory Neil ShapiroCAUTION: If your LDAP database contains the record above and *ALSO* a host 187140266059SGregory Neil Shapirospecific record such as: 187240266059SGregory Neil Shapiro 187340266059SGregory Neil Shapiro dn: sendmailMTAKey=example.com@etrn, sendmailMTAMapName=mailer, dc=sendmail, dc=org 187440266059SGregory Neil Shapiro objectClass: sendmailMTA 187540266059SGregory Neil Shapiro objectClass: sendmailMTAMap 187640266059SGregory Neil Shapiro objectClass: sendmailMTAMapObject 187740266059SGregory Neil Shapiro sendmailMTAMapName: mailer 187840266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 187940266059SGregory Neil Shapiro sendmailMTAKey: example.com 188040266059SGregory Neil Shapiro sendmailMTAMapValue: relay:[mx.example.com] 188140266059SGregory Neil Shapiro 188240266059SGregory Neil Shapirothen these entries will give unexpected results. When the lookup is done 188340266059SGregory Neil Shapiroon etrn.sendmail.org, the effect is that there is *NO* match at all as maps 188440266059SGregory Neil Shapirorequire a single match. Since the host etrn.sendmail.org is also in the 188540266059SGregory Neil ShapiroServers cluster, LDAP would return two answers for the example.com map key 188640266059SGregory Neil Shapiroin which case sendmail would treat this as no match at all. 188740266059SGregory Neil Shapiro 188840266059SGregory Neil ShapiroIf you prefer not to use the default LDAP schema for your maps, you can 188940266059SGregory Neil Shapirospecify the map parameters when using the FEATURE(). For example: 189040266059SGregory Neil Shapiro 189140266059SGregory Neil Shapiro FEATURE(`access_db', `ldap:-1 -k (&(objectClass=mapDatabase)(key=%0)) -v value') 189240266059SGregory Neil Shapiro 189340266059SGregory Neil Shapiro------- 189440266059SGregory Neil ShapiroClasses 189540266059SGregory Neil Shapiro------- 189640266059SGregory Neil Shapiro 189740266059SGregory Neil ShapiroNormally, classes can be filled via files or programs. As of 8.12, they 189840266059SGregory Neil Shapirocan also be filled via map lookups using a new syntax: 189940266059SGregory Neil Shapiro 190040266059SGregory Neil Shapiro F{ClassName}mapkey@mapclass:mapspec 190140266059SGregory Neil Shapiro 190240266059SGregory Neil Shapiromapkey is optional and if not provided the map key will be empty. This can 190340266059SGregory Neil Shapirobe used with LDAP to read classes from LDAP. Note that the lookup is only 190440266059SGregory Neil Shapirodone when sendmail is initially started. Use the special value `@LDAP' to 190540266059SGregory Neil Shapirouse the default LDAP schema. For example: 190640266059SGregory Neil Shapiro 190740266059SGregory Neil Shapiro RELAY_DOMAIN_FILE(`@LDAP') 190840266059SGregory Neil Shapiro 190940266059SGregory Neil Shapirowould put all of the attribute sendmailMTAClassValue values of LDAP records 191040266059SGregory Neil Shapirowith objectClass sendmailMTAClass and an attribute sendmailMTAClassName of 191140266059SGregory Neil Shapiro'R' into class $={R}. In other words, it is equivalent to the LDAP map 191240266059SGregory Neil Shapirospecification: 191340266059SGregory Neil Shapiro 191440266059SGregory Neil Shapiro F{R}@ldap:-k (&(objectClass=sendmailMTAClass) 191540266059SGregory Neil Shapiro (sendmailMTAClassName=R) 191640266059SGregory Neil Shapiro (|(sendmailMTACluster=${sendmailMTACluster}) 191740266059SGregory Neil Shapiro (sendmailMTAHost=$j))) 191840266059SGregory Neil Shapiro -v sendmailMTAClassValue 191940266059SGregory Neil Shapiro 192040266059SGregory Neil ShapiroNOTE: The macros shown above ${sendmailMTACluster} and $j are not actually 192140266059SGregory Neil Shapiroused when the binary expands the `@LDAP' token as class declarations are 192240266059SGregory Neil Shapironot actually macro-expanded when read from the sendmail.cf file. 192340266059SGregory Neil Shapiro 192440266059SGregory Neil ShapiroThis can be used with class related commands such as RELAY_DOMAIN_FILE(), 192540266059SGregory Neil ShapiroMASQUERADE_DOMAIN_FILE(), etc: 192640266059SGregory Neil Shapiro 192740266059SGregory Neil Shapiro Command sendmailMTAClassName 192840266059SGregory Neil Shapiro ------- -------------------- 192940266059SGregory Neil Shapiro CANONIFY_DOMAIN_FILE() Canonify 193040266059SGregory Neil Shapiro EXPOSED_USER_FILE() E 193140266059SGregory Neil Shapiro GENERICS_DOMAIN_FILE() G 193240266059SGregory Neil Shapiro LDAPROUTE_DOMAIN_FILE() LDAPRoute 193340266059SGregory Neil Shapiro LDAPROUTE_EQUIVALENT_FILE() LDAPRouteEquiv 193440266059SGregory Neil Shapiro LOCAL_USER_FILE() L 193540266059SGregory Neil Shapiro MASQUERADE_DOMAIN_FILE() M 193640266059SGregory Neil Shapiro MASQUERADE_EXCEPTION_FILE() N 193740266059SGregory Neil Shapiro RELAY_DOMAIN_FILE() R 193840266059SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE() VirtHost 193940266059SGregory Neil Shapiro 194040266059SGregory Neil ShapiroYou can also add your own as any 'F'ile class of the form: 194140266059SGregory Neil Shapiro 194240266059SGregory Neil Shapiro F{ClassName}@LDAP 194340266059SGregory Neil Shapiro ^^^^^^^^^ 194440266059SGregory Neil Shapirowill use "ClassName" for the sendmailMTAClassName. 194540266059SGregory Neil Shapiro 194640266059SGregory Neil ShapiroAn example LDAP LDIF entry would look like: 194740266059SGregory Neil Shapiro 194840266059SGregory Neil Shapiro dn: sendmailMTAClassName=R, dc=sendmail, dc=org 194940266059SGregory Neil Shapiro objectClass: sendmailMTA 195040266059SGregory Neil Shapiro objectClass: sendmailMTAClass 195140266059SGregory Neil Shapiro sendmailMTACluster: Servers 195240266059SGregory Neil Shapiro sendmailMTAClassName: R 195340266059SGregory Neil Shapiro sendmailMTAClassValue: sendmail.org 195440266059SGregory Neil Shapiro sendmailMTAClassValue: example.com 195540266059SGregory Neil Shapiro sendmailMTAClassValue: 10.56.23 195640266059SGregory Neil Shapiro 195740266059SGregory Neil ShapiroCAUTION: If your LDAP database contains the record above and *ALSO* a host 195840266059SGregory Neil Shapirospecific record such as: 195940266059SGregory Neil Shapiro 196040266059SGregory Neil Shapiro dn: sendmailMTAClassName=R@etrn.sendmail.org, dc=sendmail, dc=org 196140266059SGregory Neil Shapiro objectClass: sendmailMTA 196240266059SGregory Neil Shapiro objectClass: sendmailMTAClass 196340266059SGregory Neil Shapiro sendmailMTAHost: etrn.sendmail.org 196440266059SGregory Neil Shapiro sendmailMTAClassName: R 196540266059SGregory Neil Shapiro sendmailMTAClassValue: example.com 196640266059SGregory Neil Shapiro 196740266059SGregory Neil Shapirothe result will be similar to the aliases caution above. When the lookup 196840266059SGregory Neil Shapirois done on etrn.sendmail.org, $={R} would contain all of the entries (from 196940266059SGregory Neil Shapiroboth the cluster match and the host match). In other words, the effective 197040266059SGregory Neil Shapirois additive. 197140266059SGregory Neil Shapiro 197240266059SGregory Neil ShapiroIf you prefer not to use the default LDAP schema for your classes, you can 197340266059SGregory Neil Shapirospecify the map parameters when using the class command. For example: 197440266059SGregory Neil Shapiro 197540266059SGregory Neil Shapiro VIRTUSER_DOMAIN_FILE(`@ldap:-k (&(objectClass=virtHosts)(host=*)) -v host') 197640266059SGregory Neil Shapiro 197740266059SGregory Neil ShapiroRemember, macros can not be used in a class declaration as the binary does 197840266059SGregory Neil Shapironot expand them. 197940266059SGregory Neil Shapiro 198040266059SGregory Neil Shapiro 198106f25ae9SGregory Neil Shapiro+--------------+ 198206f25ae9SGregory Neil Shapiro| LDAP ROUTING | 198306f25ae9SGregory Neil Shapiro+--------------+ 198406f25ae9SGregory Neil Shapiro 198506f25ae9SGregory Neil ShapiroFEATURE(`ldap_routing') can be used to implement the IETF Internet Draft 198606f25ae9SGregory Neil ShapiroLDAP Schema for Intranet Mail Routing 198706f25ae9SGregory Neil Shapiro(draft-lachman-laser-ldap-mail-routing-01). This feature enables 198806f25ae9SGregory Neil ShapiroLDAP-based rerouting of a particular address to either a different host 198906f25ae9SGregory Neil Shapiroor a different address. The LDAP lookup is first attempted on the full 199006f25ae9SGregory Neil Shapiroaddress (e.g., user@example.com) and then on the domain portion 199106f25ae9SGregory Neil Shapiro(e.g., @example.com). Be sure to setup your domain for LDAP routing using 199206f25ae9SGregory Neil ShapiroLDAPROUTE_DOMAIN(), e.g.: 199306f25ae9SGregory Neil Shapiro 199406f25ae9SGregory Neil Shapiro LDAPROUTE_DOMAIN(`example.com') 199506f25ae9SGregory Neil Shapiro 199640266059SGregory Neil ShapiroAdditionally, you can specify equivalent domains for LDAP routing using 199740266059SGregory Neil ShapiroLDAPROUTE_EQUIVALENT() and LDAPROUTE_EQUIVALENT_FILE(). 'Equivalent' 199840266059SGregory Neil Shapirohostnames are mapped to $M (the masqueraded hostname for the server) before 199940266059SGregory Neil Shapirothe LDAP query. For example, if the mail is addressed to 200040266059SGregory Neil Shapirouser@host1.example.com, normally the LDAP lookup would only be done for 200140266059SGregory Neil Shapiro'user@host1.example.com' and '@host1.example.com'. However, if 200240266059SGregory Neil ShapiroLDAPROUTE_EQUIVALENT(`host1.example.com') is used, the lookups would also be 200340266059SGregory Neil Shapirodone on 'user@example.com' and '@example.com' after attempting the 200440266059SGregory Neil Shapirohost1.example.com lookups. 200540266059SGregory Neil Shapiro 200606f25ae9SGregory Neil ShapiroBy default, the feature will use the schemas as specified in the draft 200706f25ae9SGregory Neil Shapiroand will not reject addresses not found by the LDAP lookup. However, 200806f25ae9SGregory Neil Shapirothis behavior can be changed by giving additional arguments to the FEATURE() 200906f25ae9SGregory Neil Shapirocommand: 201006f25ae9SGregory Neil Shapiro 201140266059SGregory Neil Shapiro FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>, <detail>) 201206f25ae9SGregory Neil Shapiro 201306f25ae9SGregory Neil Shapirowhere <mailHost> is a map definition describing how to lookup an alternative 201406f25ae9SGregory Neil Shapiromail host for a particular address; <mailRoutingAddress> is a map definition 201540266059SGregory Neil Shapirodescribing how to lookup an alternative address for a particular address; 201606f25ae9SGregory Neil Shapirothe <bounce> argument, if present and not the word "passthru", dictates 201706f25ae9SGregory Neil Shapirothat mail should be bounced if neither a mailHost nor mailRoutingAddress 201840266059SGregory Neil Shapirois found; and <detail> indicates what actions to take if the address 201940266059SGregory Neil Shapirocontains +detail information -- `strip' tries the lookup with the +detail 202040266059SGregory Neil Shapiroand if no matches are found, strips the +detail and tries the lookup again; 202140266059SGregory Neil Shapiro`preserve', does the same as `strip' but if a mailRoutingAddress match is 202240266059SGregory Neil Shapirofound, the +detail information is copied to the new address. 202306f25ae9SGregory Neil Shapiro 202406f25ae9SGregory Neil ShapiroThe default <mailHost> map definition is: 202506f25ae9SGregory Neil Shapiro 2026605302a5SGregory Neil Shapiro ldap -1 -T<TMPF> -v mailHost -k (&(objectClass=inetLocalMailRecipient) 202706f25ae9SGregory Neil Shapiro (mailLocalAddress=%0)) 202806f25ae9SGregory Neil Shapiro 202906f25ae9SGregory Neil ShapiroThe default <mailRoutingAddress> map definition is: 203006f25ae9SGregory Neil Shapiro 2031605302a5SGregory Neil Shapiro ldap -1 -T<TMPF> -v mailRoutingAddress 2032605302a5SGregory Neil Shapiro -k (&(objectClass=inetLocalMailRecipient) 203306f25ae9SGregory Neil Shapiro (mailLocalAddress=%0)) 203406f25ae9SGregory Neil Shapiro 203506f25ae9SGregory Neil ShapiroNote that neither includes the LDAP server hostname (-h server) or base DN 203606f25ae9SGregory Neil Shapiro(-b o=org,c=COUNTRY), both necessary for LDAP queries. It is presumed that 203706f25ae9SGregory Neil Shapiroyour .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with 203806f25ae9SGregory Neil Shapirothese settings. If this is not the case, the map definitions should be 2039605302a5SGregory Neil Shapirochanged as described above. The "-T<TMPF>" is required in any user 2040605302a5SGregory Neil Shapirospecified map definition to catch temporary errors. 204106f25ae9SGregory Neil Shapiro 204206f25ae9SGregory Neil ShapiroThe following possibilities exist as a result of an LDAP lookup on an 204306f25ae9SGregory Neil Shapiroaddress: 204406f25ae9SGregory Neil Shapiro 204506f25ae9SGregory Neil Shapiro mailHost is mailRoutingAddress is Results in 204606f25ae9SGregory Neil Shapiro ----------- --------------------- ---------- 204706f25ae9SGregory Neil Shapiro set to a set mail delivered to 204806f25ae9SGregory Neil Shapiro "local" host mailRoutingAddress 204906f25ae9SGregory Neil Shapiro 205006f25ae9SGregory Neil Shapiro set to a not set delivered to 205106f25ae9SGregory Neil Shapiro "local" host original address 205206f25ae9SGregory Neil Shapiro 205306f25ae9SGregory Neil Shapiro set to a set mailRoutingAddress 205406f25ae9SGregory Neil Shapiro remote host relayed to mailHost 205506f25ae9SGregory Neil Shapiro 205606f25ae9SGregory Neil Shapiro set to a not set original address 205706f25ae9SGregory Neil Shapiro remote host relayed to mailHost 205806f25ae9SGregory Neil Shapiro 205906f25ae9SGregory Neil Shapiro not set set mail delivered to 206006f25ae9SGregory Neil Shapiro mailRoutingAddress 206106f25ae9SGregory Neil Shapiro 206206f25ae9SGregory Neil Shapiro not set not set delivered to 206306f25ae9SGregory Neil Shapiro original address *OR* 206406f25ae9SGregory Neil Shapiro bounced as unknown user 206506f25ae9SGregory Neil Shapiro 206640266059SGregory Neil ShapiroThe term "local" host above means the host specified is in class {w}. If 206740266059SGregory Neil Shapirothe result would mean sending the mail to a different host, that host is 206840266059SGregory Neil Shapirolooked up in the mailertable before delivery. 206940266059SGregory Neil Shapiro 207006f25ae9SGregory Neil ShapiroNote that the last case depends on whether the third argument is given 207106f25ae9SGregory Neil Shapiroto the FEATURE() command. The default is to deliver the message to the 207206f25ae9SGregory Neil Shapirooriginal address. 207306f25ae9SGregory Neil Shapiro 207406f25ae9SGregory Neil ShapiroThe LDAP entries should be set up with an objectClass of 207506f25ae9SGregory Neil ShapiroinetLocalMailRecipient and the address be listed in a mailLocalAddress 207606f25ae9SGregory Neil Shapiroattribute. If present, there must be only one mailHost attribute and it 207706f25ae9SGregory Neil Shapiromust contain a fully qualified host name as its value. Similarly, if 207806f25ae9SGregory Neil Shapiropresent, there must be only one mailRoutingAddress attribute and it must 207940266059SGregory Neil Shapirocontain an RFC 822 compliant address. Some example LDAP records (in LDIF 208006f25ae9SGregory Neil Shapiroformat): 208106f25ae9SGregory Neil Shapiro 208206f25ae9SGregory Neil Shapiro dn: uid=tom, o=example.com, c=US 208306f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 208406f25ae9SGregory Neil Shapiro mailLocalAddress: tom@example.com 208506f25ae9SGregory Neil Shapiro mailRoutingAddress: thomas@mailhost.example.com 208606f25ae9SGregory Neil Shapiro 208706f25ae9SGregory Neil ShapiroThis would deliver mail for tom@example.com to thomas@mailhost.example.com. 208806f25ae9SGregory Neil Shapiro 208906f25ae9SGregory Neil Shapiro dn: uid=dick, o=example.com, c=US 209006f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 209106f25ae9SGregory Neil Shapiro mailLocalAddress: dick@example.com 209206f25ae9SGregory Neil Shapiro mailHost: eng.example.com 209306f25ae9SGregory Neil Shapiro 209406f25ae9SGregory Neil ShapiroThis would relay mail for dick@example.com to the same address but redirect 209540266059SGregory Neil Shapirothe mail to MX records listed for the host eng.example.com (unless the 209640266059SGregory Neil Shapiromailertable overrides). 209706f25ae9SGregory Neil Shapiro 209806f25ae9SGregory Neil Shapiro dn: uid=harry, o=example.com, c=US 209906f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 210006f25ae9SGregory Neil Shapiro mailLocalAddress: harry@example.com 210106f25ae9SGregory Neil Shapiro mailHost: mktmail.example.com 210206f25ae9SGregory Neil Shapiro mailRoutingAddress: harry@mkt.example.com 210306f25ae9SGregory Neil Shapiro 210406f25ae9SGregory Neil ShapiroThis would relay mail for harry@example.com to the MX records listed for 210506f25ae9SGregory Neil Shapirothe host mktmail.example.com using the new address harry@mkt.example.com 210606f25ae9SGregory Neil Shapirowhen talking to that host. 210706f25ae9SGregory Neil Shapiro 210806f25ae9SGregory Neil Shapiro dn: uid=virtual.example.com, o=example.com, c=US 210906f25ae9SGregory Neil Shapiro objectClass: inetLocalMailRecipient 211006f25ae9SGregory Neil Shapiro mailLocalAddress: @virtual.example.com 211106f25ae9SGregory Neil Shapiro mailHost: server.example.com 211206f25ae9SGregory Neil Shapiro mailRoutingAddress: virtual@example.com 211306f25ae9SGregory Neil Shapiro 211406f25ae9SGregory Neil ShapiroThis would send all mail destined for any username @virtual.example.com to 211506f25ae9SGregory Neil Shapirothe machine server.example.com's MX servers and deliver to the address 211606f25ae9SGregory Neil Shapirovirtual@example.com on that relay machine. 211706f25ae9SGregory Neil Shapiro 211806f25ae9SGregory Neil Shapiro 2119c2aa98e2SPeter Wemm+---------------------------------+ 2120c2aa98e2SPeter Wemm| ANTI-SPAM CONFIGURATION CONTROL | 2121c2aa98e2SPeter Wemm+---------------------------------+ 2122c2aa98e2SPeter Wemm 2123c2aa98e2SPeter WemmThe primary anti-spam features available in sendmail are: 2124c2aa98e2SPeter Wemm 2125c2aa98e2SPeter Wemm* Relaying is denied by default. 2126c2aa98e2SPeter Wemm* Better checking on sender information. 2127c2aa98e2SPeter Wemm* Access database. 2128c2aa98e2SPeter Wemm* Header checks. 2129c2aa98e2SPeter Wemm 213006f25ae9SGregory Neil ShapiroRelaying (transmission of messages from a site outside your host (class 213106f25ae9SGregory Neil Shapiro{w}) to another site except yours) is denied by default. Note that this 213206f25ae9SGregory Neil Shapirochanged in sendmail 8.9; previous versions allowed relaying by default. 213306f25ae9SGregory Neil ShapiroIf you really want to revert to the old behaviour, you will need to use 213406f25ae9SGregory Neil ShapiroFEATURE(`promiscuous_relay'). You can allow certain domains to relay 213506f25ae9SGregory Neil Shapirothrough your server by adding their domain name or IP address to class 213606f25ae9SGregory Neil Shapiro{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database 213740266059SGregory Neil Shapiro(described below). Note that IPv6 addresses must be prefaced with "IPv6:". 213840266059SGregory Neil ShapiroThe file consists (like any other file based class) of entries listed on 213940266059SGregory Neil Shapiroseparate lines, e.g., 214006f25ae9SGregory Neil Shapiro 214106f25ae9SGregory Neil Shapiro sendmail.org 214206f25ae9SGregory Neil Shapiro 128.32 214340266059SGregory Neil Shapiro IPv6:2002:c0a8:02c7 214440266059SGregory Neil Shapiro IPv6:2002:c0a8:51d2::23f4 214506f25ae9SGregory Neil Shapiro host.mydomain.com 214640266059SGregory Neil Shapiro [UNIX:localhost] 214740266059SGregory Neil Shapiro 214840266059SGregory Neil ShapiroNotice: the last entry allows relaying for connections via a UNIX 214940266059SGregory Neil Shapirosocket to the MTA/MSP. This might be necessary if your configuration 215040266059SGregory Neil Shapirodoesn't allow relaying by other means in that case, e.g., by having 215140266059SGregory Neil Shapirolocalhost.$m in class {R} (make sure $m is not just a top level 215240266059SGregory Neil Shapirodomain). 2153c2aa98e2SPeter Wemm 2154c2aa98e2SPeter WemmIf you use 2155c2aa98e2SPeter Wemm 21562e43090eSPeter Wemm FEATURE(`relay_entire_domain') 2157c2aa98e2SPeter Wemm 215806f25ae9SGregory Neil Shapirothen any host in any of your local domains (that is, class {m}) 2159065a643dSPeter Wemmwill be relayed (that is, you will accept mail either to or from any 2160065a643dSPeter Wemmhost in your domain). 2161c2aa98e2SPeter Wemm 2162c2aa98e2SPeter WemmYou can also allow relaying based on the MX records of the host 2163c2aa98e2SPeter Wemmportion of an incoming recipient address by using 2164c2aa98e2SPeter Wemm 21652e43090eSPeter Wemm FEATURE(`relay_based_on_MX') 2166c2aa98e2SPeter Wemm 2167c2aa98e2SPeter WemmFor example, if your server receives a recipient of user@domain.com 2168c2aa98e2SPeter Wemmand domain.com lists your server in its MX records, the mail will be 216940266059SGregory Neil Shapiroaccepted for relay to domain.com. This feature may cause problems 217040266059SGregory Neil Shapiroif MX lookups for the recipient domain are slow or time out. In that 217140266059SGregory Neil Shapirocase, mail will be temporarily rejected. It is usually better to 217240266059SGregory Neil Shapiromaintain a list of hosts/domains for which the server acts as relay. 217340266059SGregory Neil ShapiroNote also that this feature will stop spammers from using your host 217440266059SGregory Neil Shapiroto relay spam but it will not stop outsiders from using your server 217540266059SGregory Neil Shapiroas a relay for their site (that is, they set up an MX record pointing 217640266059SGregory Neil Shapiroto your mail server, and you will relay mail addressed to them 217740266059SGregory Neil Shapirowithout any prior arrangement). Along the same lines, 2178c2aa98e2SPeter Wemm 21792e43090eSPeter Wemm FEATURE(`relay_local_from') 2180c2aa98e2SPeter Wemm 2181c2aa98e2SPeter Wemmwill allow relaying if the sender specifies a return path (i.e. 218240266059SGregory Neil ShapiroMAIL FROM: <user@domain>) domain which is a local domain. This is a 2183c2aa98e2SPeter Wemmdangerous feature as it will allow spammers to spam using your mail 2184c2aa98e2SPeter Wemmserver by simply specifying a return address of user@your.domain.com. 2185c2aa98e2SPeter WemmIt should not be used unless absolutely necessary. 218606f25ae9SGregory Neil ShapiroA slightly better solution is 218706f25ae9SGregory Neil Shapiro 218806f25ae9SGregory Neil Shapiro FEATURE(`relay_mail_from') 218906f25ae9SGregory Neil Shapiro 219006f25ae9SGregory Neil Shapirowhich allows relaying if the mail sender is listed as RELAY in the 219106f25ae9SGregory Neil Shapiroaccess map. If an optional argument `domain' is given, the domain 219206f25ae9SGregory Neil Shapiroportion of the mail sender is also checked to allowing relaying. 219306f25ae9SGregory Neil ShapiroThis option only works together with the tag From: for the LHS of 219440266059SGregory Neil Shapirothe access map entries (see below: Finer control...). This feature 219540266059SGregory Neil Shapiroallows spammers to abuse your mail server by specifying a return 219640266059SGregory Neil Shapiroaddress that you enabled in your access file. This may be harder 219740266059SGregory Neil Shapiroto figure out for spammers, but it should not be used unless 219840266059SGregory Neil Shapironecessary. Instead use SMTP AUTH or STARTTLS to allow relaying 219940266059SGregory Neil Shapirofor roaming users. 220006f25ae9SGregory Neil Shapiro 2201c2aa98e2SPeter Wemm 220240266059SGregory Neil ShapiroIf source routing is used in the recipient address (e.g., 2203c2aa98e2SPeter WemmRCPT TO: <user%site.com@othersite.com>), sendmail will check 2204c2aa98e2SPeter Wemmuser@site.com for relaying if othersite.com is an allowed relay host 220506f25ae9SGregory Neil Shapiroin either class {R}, class {m} if FEATURE(`relay_entire_domain') is used, 22062e43090eSPeter Wemmor the access database if FEATURE(`access_db') is used. To prevent 2207c2aa98e2SPeter Wemmthe address from being stripped down, use: 2208c2aa98e2SPeter Wemm 22092e43090eSPeter Wemm FEATURE(`loose_relay_check') 2210c2aa98e2SPeter Wemm 2211c2aa98e2SPeter WemmIf you think you need to use this feature, you probably do not. This 2212c2aa98e2SPeter Wemmshould only be used for sites which have no control over the addresses 2213c2aa98e2SPeter Wemmthat they provide a gateway for. Use this FEATURE with caution as it 2214c2aa98e2SPeter Wemmcan allow spammers to relay through your server if not setup properly. 2215c2aa98e2SPeter Wemm 221606f25ae9SGregory Neil ShapiroNOTICE: It is possible to relay mail through a system which the anti-relay 221706f25ae9SGregory Neil Shapirorules do not prevent: the case of a system that does use FEATURE(`nouucp', 221806f25ae9SGregory Neil Shapiro`nospecial') (system A) and relays local messages to a mail hub (e.g., via 221906f25ae9SGregory Neil ShapiroLOCAL_RELAY or LUSER_RELAY) (system B). If system B doesn't use 222006f25ae9SGregory Neil ShapiroFEATURE(`nouucp') at all, addresses of the form 222106f25ae9SGregory Neil Shapiro<example.net!user@local.host> would be relayed to <user@example.net>. 222206f25ae9SGregory Neil ShapiroSystem A doesn't recognize `!' as an address separator and therefore 222306f25ae9SGregory Neil Shapiroforwards it to the mail hub which in turns relays it because it came from 222406f25ae9SGregory Neil Shapiroa trusted local host. So if a mailserver allows UUCP (bang-format) 222506f25ae9SGregory Neil Shapiroaddresses, all systems from which it allows relaying should do the same 222606f25ae9SGregory Neil Shapiroor reject those addresses. 222706f25ae9SGregory Neil Shapiro 2228c2aa98e2SPeter WemmAs of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has 2229c2aa98e2SPeter Wemman unresolvable domain (i.e., one that DNS, your local name service, 223040266059SGregory Neil Shapiroor special case rules in ruleset 3 cannot locate). This also applies 223140266059SGregory Neil Shapiroto addresses that use domain literals, e.g., <user@[1.2.3.4]>, if the 223240266059SGregory Neil ShapiroIP address can't be mapped to a host name. If you want to continue 223340266059SGregory Neil Shapiroto accept such domains, e.g., because you are inside a firewall that 223440266059SGregory Neil Shapirohas only a limited view of the Internet host name space (note that you 223540266059SGregory Neil Shapirowill not be able to return mail to them unless you have some "smart 223640266059SGregory Neil Shapirohost" forwarder), use 2237c2aa98e2SPeter Wemm 22382e43090eSPeter Wemm FEATURE(`accept_unresolvable_domains') 2239c2aa98e2SPeter Wemm 224040266059SGregory Neil ShapiroAlternatively, you can allow specific addresses by adding them to 224140266059SGregory Neil Shapirothe access map, e.g., 224240266059SGregory Neil Shapiro 224340266059SGregory Neil Shapiro From:unresolvable.domain OK 224440266059SGregory Neil Shapiro From:[1.2.3.4] OK 224540266059SGregory Neil Shapiro From:[1.2.4] OK 224640266059SGregory Neil Shapiro 224740266059SGregory Neil ShapiroNotice: domains which are temporarily unresolvable are (temporarily) 224840266059SGregory Neil Shapirorejected with a 451 reply code. If those domains should be accepted 224940266059SGregory Neil Shapiro(which is discouraged) then you can use 225040266059SGregory Neil Shapiro 225140266059SGregory Neil Shapiro LOCAL_CONFIG 225240266059SGregory Neil Shapiro C{ResOk}TEMP 225340266059SGregory Neil Shapiro 2254c2aa98e2SPeter Wemmsendmail will also refuse mail if the MAIL FROM: parameter is not 2255c2aa98e2SPeter Wemmfully qualified (i.e., contains a domain as well as a user). If you 2256c2aa98e2SPeter Wemmwant to continue to accept such senders, use 2257c2aa98e2SPeter Wemm 22582e43090eSPeter Wemm FEATURE(`accept_unqualified_senders') 2259c2aa98e2SPeter Wemm 226006f25ae9SGregory Neil ShapiroSetting the DaemonPortOptions modifier 'u' overrides the default behavior, 226106f25ae9SGregory Neil Shapiroi.e., unqualified addresses are accepted even without this FEATURE. If 226206f25ae9SGregory Neil Shapirothis FEATURE is not used, the DaemonPortOptions modifier 'f' can be used 226340266059SGregory Neil Shapiroto enforce fully qualified domain names. 226406f25ae9SGregory Neil Shapiro 2265c2aa98e2SPeter WemmAn ``access'' database can be created to accept or reject mail from 2266c2aa98e2SPeter Wemmselected domains. For example, you may choose to reject all mail 2267c2aa98e2SPeter Wemmoriginating from known spammers. To enable such a database, use 2268c2aa98e2SPeter Wemm 22692e43090eSPeter Wemm FEATURE(`access_db') 2270c2aa98e2SPeter Wemm 227140266059SGregory Neil ShapiroNotice: the access database is applied to the envelope addresses 227240266059SGregory Neil Shapiroand the connection information, not to the header. 227340266059SGregory Neil Shapiro 227440266059SGregory Neil ShapiroThe FEATURE macro can accept as second parameter the key file 2275c2aa98e2SPeter Wemmdefinition for the database; for example 2276c2aa98e2SPeter Wemm 227740266059SGregory Neil Shapiro FEATURE(`access_db', `hash -T<TMPF> /etc/mail/access_map') 227840266059SGregory Neil Shapiro 227940266059SGregory Neil ShapiroNotice: If a second argument is specified it must contain the option 228040266059SGregory Neil Shapiro`-T<TMPF>' as shown above. The optional third and fourth parameters 228140266059SGregory Neil Shapiromay be `skip' or `lookupdotdomain'. The former enables SKIP as 228240266059SGregory Neil Shapirovalue part (see below), the latter is another way to enable the 228340266059SGregory Neil Shapirofeature of the same name (see above). 2284c2aa98e2SPeter Wemm 2285065a643dSPeter WemmRemember, since /etc/mail/access is a database, after creating the text 2286065a643dSPeter Wemmfile as described below, you must use makemap to create the database 2287065a643dSPeter Wemmmap. For example: 2288065a643dSPeter Wemm 2289065a643dSPeter Wemm makemap hash /etc/mail/access < /etc/mail/access 2290065a643dSPeter Wemm 2291c2aa98e2SPeter WemmThe table itself uses e-mail addresses, domain names, and network 229240266059SGregory Neil Shapironumbers as keys. Note that IPv6 addresses must be prefaced with "IPv6:". 229340266059SGregory Neil ShapiroFor example, 2294c2aa98e2SPeter Wemm 2295c2aa98e2SPeter Wemm spammer@aol.com REJECT 2296c2aa98e2SPeter Wemm cyberspammer.com REJECT 2297605302a5SGregory Neil Shapiro TLD REJECT 2298065a643dSPeter Wemm 192.168.212 REJECT 229940266059SGregory Neil Shapiro IPv6:2002:c0a8:02c7 RELAY 230040266059SGregory Neil Shapiro IPv6:2002:c0a8:51d2::23f4 REJECT 2301c2aa98e2SPeter Wemm 2302c2aa98e2SPeter Wemmwould refuse mail from spammer@aol.com, any user from cyberspammer.com 2303605302a5SGregory Neil Shapiro(or any host within the cyberspammer.com domain), any host in the entire 2304605302a5SGregory Neil Shapirotop level domain TLD, 192.168.212.* network, and the IPv6 address 2305605302a5SGregory Neil Shapiro2002:c0a8:51d2::23f4. It would allow relay for the IPv6 network 2306605302a5SGregory Neil Shapiro2002:c0a8:02c7::/48. 2307c2aa98e2SPeter Wemm 2308c2aa98e2SPeter WemmThe value part of the map can contain: 2309c2aa98e2SPeter Wemm 231040266059SGregory Neil Shapiro OK Accept mail even if other rules in the running 231140266059SGregory Neil Shapiro ruleset would reject it, for example, if the domain 231240266059SGregory Neil Shapiro name is unresolvable. "Accept" does not mean 231340266059SGregory Neil Shapiro "relay", but at most acceptance for local 231440266059SGregory Neil Shapiro recipients. That is, OK allows less than RELAY. 2315065a643dSPeter Wemm RELAY Accept mail addressed to the indicated domain or 2316065a643dSPeter Wemm received from the indicated domain for relaying 2317065a643dSPeter Wemm through your SMTP server. RELAY also serves as 2318065a643dSPeter Wemm an implicit OK for the other checks. 2319065a643dSPeter Wemm REJECT Reject the sender or recipient with a general 2320c2aa98e2SPeter Wemm purpose message. 2321065a643dSPeter Wemm DISCARD Discard the message completely using the 2322193538b7SGregory Neil Shapiro $#discard mailer. If it is used in check_compat, 2323193538b7SGregory Neil Shapiro it affects only the designated recipient, not 2324193538b7SGregory Neil Shapiro the whole message as it does in all other cases. 2325193538b7SGregory Neil Shapiro This should only be used if really necessary. 232640266059SGregory Neil Shapiro SKIP This can only be used for host/domain names 232740266059SGregory Neil Shapiro and IP addresses/nets. It will abort the current 232840266059SGregory Neil Shapiro search for this entry without accepting or rejecting 232940266059SGregory Neil Shapiro it but causing the default action. 233042e5d165SGregory Neil Shapiro ### any text where ### is an RFC 821 compliant error code and 233142e5d165SGregory Neil Shapiro "any text" is a message to return for the command. 233242e5d165SGregory Neil Shapiro The string should be quoted to avoid surprises, 233342e5d165SGregory Neil Shapiro e.g., sendmail may remove spaces otherwise. 233440266059SGregory Neil Shapiro This type is deprecated, use one the two 233540266059SGregory Neil Shapiro ERROR: entries below instead. 233606f25ae9SGregory Neil Shapiro ERROR:### any text 233706f25ae9SGregory Neil Shapiro as above, but useful to mark error messages as such. 233806f25ae9SGregory Neil Shapiro ERROR:D.S.N:### any text 233906f25ae9SGregory Neil Shapiro where D.S.N is an RFC 1893 compliant error code 234006f25ae9SGregory Neil Shapiro and the rest as above. 2341c2aa98e2SPeter Wemm 2342c2aa98e2SPeter WemmFor example: 2343c2aa98e2SPeter Wemm 234440266059SGregory Neil Shapiro cyberspammer.com ERROR:550 "We don't accept mail from spammers" 2345c2aa98e2SPeter Wemm okay.cyberspammer.com OK 234606f25ae9SGregory Neil Shapiro sendmail.org RELAY 2347c2aa98e2SPeter Wemm 128.32 RELAY 234840266059SGregory Neil Shapiro IPv6:1:2:3:4:5:6:7 RELAY 234906f25ae9SGregory Neil Shapiro [127.0.0.3] OK 235040266059SGregory Neil Shapiro [IPv6:1:2:3:4:5:6:7:8] OK 2351c2aa98e2SPeter Wemm 235206f25ae9SGregory Neil Shapirowould accept mail from okay.cyberspammer.com, but would reject mail from 235306f25ae9SGregory Neil Shapiroall other hosts at cyberspammer.com with the indicated message. It would 235406f25ae9SGregory Neil Shapiroallow relaying mail from and to any hosts in the sendmail.org domain, and 235506f25ae9SGregory Neil Shapiroallow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:* 235606f25ae9SGregory Neil Shapironetwork. The latter two entries are for checks against ${client_name} if 235706f25ae9SGregory Neil Shapirothe IP address doesn't resolve to a hostname (or is considered as "may be 235840266059SGregory Neil Shapiroforged"). That is, using square brackets means these are host names, 235940266059SGregory Neil Shapironot network numbers. 236006f25ae9SGregory Neil Shapiro 236106f25ae9SGregory Neil ShapiroWarning: if you change the RFC 821 compliant error code from the default 236206f25ae9SGregory Neil Shapirovalue of 550, then you should probably also change the RFC 1893 compliant 236306f25ae9SGregory Neil Shapiroerror code to match it. For example, if you use 236406f25ae9SGregory Neil Shapiro 236540266059SGregory Neil Shapiro user@example.com ERROR:450 mailbox full 236606f25ae9SGregory Neil Shapiro 236740266059SGregory Neil Shapirothe error returned would be "450 5.0.0 mailbox full" which is wrong. 236840266059SGregory Neil ShapiroUse "ERROR:4.2.2:450 mailbox full" instead. 236906f25ae9SGregory Neil Shapiro 237006f25ae9SGregory Neil ShapiroNote, UUCP users may need to add hostname.UUCP to the access database 237140266059SGregory Neil Shapiroor class {R}. 237240266059SGregory Neil Shapiro 237340266059SGregory Neil ShapiroIf you also use: 2374c2aa98e2SPeter Wemm 23752e43090eSPeter Wemm FEATURE(`relay_hosts_only') 2376c2aa98e2SPeter Wemm 2377c2aa98e2SPeter Wemmthen the above example will allow relaying for sendmail.org, but not 2378c2aa98e2SPeter Wemmhosts within the sendmail.org domain. Note that this will also require 237906f25ae9SGregory Neil Shapirohosts listed in class {R} to be fully qualified host names. 2380c2aa98e2SPeter Wemm 2381c2aa98e2SPeter WemmYou can also use the access database to block sender addresses based on 2382c2aa98e2SPeter Wemmthe username portion of the address. For example: 2383c2aa98e2SPeter Wemm 238442e5d165SGregory Neil Shapiro FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted 2385c2aa98e2SPeter Wemm 2386c2aa98e2SPeter WemmNote that you must include the @ after the username to signify that 2387c2aa98e2SPeter Wemmthis database entry is for checking only the username portion of the 2388c2aa98e2SPeter Wemmsender address. 2389c2aa98e2SPeter Wemm 2390c2aa98e2SPeter WemmIf you use: 2391c2aa98e2SPeter Wemm 23922e43090eSPeter Wemm FEATURE(`blacklist_recipients') 2393c2aa98e2SPeter Wemm 2394c2aa98e2SPeter Wemmthen you can add entries to the map for local users, hosts in your 2395c2aa98e2SPeter Wemmdomains, or addresses in your domain which should not receive mail: 2396c2aa98e2SPeter Wemm 239742e5d165SGregory Neil Shapiro badlocaluser@ ERROR:550 Mailbox disabled for this username 239842e5d165SGregory Neil Shapiro host.mydomain.com ERROR:550 That host does not accept mail 239942e5d165SGregory Neil Shapiro user@otherhost.mydomain.com ERROR:550 Mailbox disabled for this recipient 2400c2aa98e2SPeter Wemm 2401c2aa98e2SPeter WemmThis would prevent a recipient of badlocaluser@mydomain.com, any 2402c2aa98e2SPeter Wemmuser at host.mydomain.com, and the single address 240306f25ae9SGregory Neil Shapirouser@otherhost.mydomain.com from receiving mail. Please note: a 240406f25ae9SGregory Neil Shapirolocal username must be now tagged with an @ (this is consistent 240506f25ae9SGregory Neil Shapirowith the check of the sender address, and hence it is possible to 240606f25ae9SGregory Neil Shapirodistinguish between hostnames and usernames). Enabling this feature 240706f25ae9SGregory Neil Shapirowill keep you from sending mails to all addresses that have an 240806f25ae9SGregory Neil Shapiroerror message or REJECT as value part in the access map. Taking 240906f25ae9SGregory Neil Shapirothe example from above: 2410065a643dSPeter Wemm 2411065a643dSPeter Wemm spammer@aol.com REJECT 2412065a643dSPeter Wemm cyberspammer.com REJECT 2413065a643dSPeter Wemm 2414065a643dSPeter WemmMail can't be sent to spammer@aol.com or anyone at cyberspammer.com. 2415c2aa98e2SPeter Wemm 241640266059SGregory Neil ShapiroThere are several DNS based blacklists, the first of which was 241740266059SGregory Neil Shapirothe RBL (``Realtime Blackhole List'') run by the MAPS project, 241840266059SGregory Neil Shapirosee http://mail-abuse.org/. These are databases of spammers 241940266059SGregory Neil Shapiromaintained in DNS. To use such a database, specify 2420c2aa98e2SPeter Wemm 242106f25ae9SGregory Neil Shapiro FEATURE(`dnsbl') 2422c2aa98e2SPeter Wemm 242340266059SGregory Neil ShapiroThis will cause sendmail to reject mail from any site in the original 242413058a91SGregory Neil ShapiroRealtime Blackhole List database. This default DNS blacklist, 242513058a91SGregory Neil Shapiroblackholes.mail-abuse.org, is a service offered by the Mail Abuse 242613058a91SGregory Neil ShapiroPrevention System (MAPS). As of July 31, 2001, MAPS is a subscription 242713058a91SGregory Neil Shapiroservice, so using that network address won't work if you haven't 242813058a91SGregory Neil Shapirosubscribed. Contact MAPS to subscribe (http://mail-abuse.org/). 242913058a91SGregory Neil Shapiro 243013058a91SGregory Neil ShapiroYou can specify an alternative RBL server to check by specifying an 243113058a91SGregory Neil Shapiroargument to the FEATURE. The default error message is 243213058a91SGregory Neil Shapiro 2433739ac4d4SGregory Neil Shapiro Rejected: IP-ADDRESS listed at SERVER 2434193538b7SGregory Neil Shapiro 243540266059SGregory Neil Shapirowhere IP-ADDRESS and SERVER are replaced by the appropriate 243640266059SGregory Neil Shapiroinformation. A second argument can be used to specify a different 243740266059SGregory Neil Shapirotext. By default, temporary lookup failures are ignored and hence 243840266059SGregory Neil Shapirocause the connection not to be rejected by the DNS based rejection 243940266059SGregory Neil Shapirolist. This behavior can be changed by specifying a third argument, 244040266059SGregory Neil Shapirowhich must be either `t' or a full error message. For example: 2441193538b7SGregory Neil Shapiro 244240266059SGregory Neil Shapiro FEATURE(`dnsbl', `dnsbl.example.com', `', 244340266059SGregory Neil Shapiro `"451 Temporary lookup failure for " $&{client_addr} " in dnsbl.example.com"') 244440266059SGregory Neil Shapiro 244540266059SGregory Neil ShapiroIf `t' is used, the error message is: 244640266059SGregory Neil Shapiro 244740266059SGregory Neil Shapiro 451 Temporary lookup failure of IP-ADDRESS at SERVER 244840266059SGregory Neil Shapiro 244940266059SGregory Neil Shapirowhere IP-ADDRESS and SERVER are replaced by the appropriate 245040266059SGregory Neil Shapiroinformation. 245140266059SGregory Neil Shapiro 245240266059SGregory Neil ShapiroThis FEATURE can be included several times to query different 245340266059SGregory Neil ShapiroDNS based rejection lists, e.g., the dial-up user list (see 245440266059SGregory Neil Shapirohttp://mail-abuse.org/dul/). 245540266059SGregory Neil Shapiro 245640266059SGregory Neil ShapiroNotice: to avoid checking your own local domains against those 245740266059SGregory Neil Shapiroblacklists, use the access_db feature and add: 245840266059SGregory Neil Shapiro 245940266059SGregory Neil Shapiro Connect:10.1 OK 246040266059SGregory Neil Shapiro Connect:127.0.0.1 RELAY 246140266059SGregory Neil Shapiro 246240266059SGregory Neil Shapiroto the access map, where 10.1 is your local network. You may 246340266059SGregory Neil Shapirowant to use "RELAY" instead of "OK" to allow also relaying 246440266059SGregory Neil Shapiroinstead of just disabling the DNS lookups in the backlists. 246540266059SGregory Neil Shapiro 2466c2aa98e2SPeter Wemm 2467c2aa98e2SPeter WemmThe features described above make use of the check_relay, check_mail, 2468c2aa98e2SPeter Wemmand check_rcpt rulesets. If you wish to include your own checks, 2469c2aa98e2SPeter Wemmyou can put your checks in the rulesets Local_check_relay, 2470c2aa98e2SPeter WemmLocal_check_mail, and Local_check_rcpt. For example if you wanted to 2471c2aa98e2SPeter Wemmblock senders with all numeric usernames (i.e. 2312343@bigisp.com), 247240266059SGregory Neil Shapiroyou would use Local_check_mail and the regex map: 2473c2aa98e2SPeter Wemm 2474c2aa98e2SPeter Wemm LOCAL_CONFIG 2475c2aa98e2SPeter Wemm Kallnumbers regex -a@MATCH ^[0-9]+$ 2476c2aa98e2SPeter Wemm 2477c2aa98e2SPeter Wemm LOCAL_RULESETS 2478c2aa98e2SPeter Wemm SLocal_check_mail 2479c2aa98e2SPeter Wemm # check address against various regex checks 2480c2aa98e2SPeter Wemm R$* $: $>Parse0 $>3 $1 2481c2aa98e2SPeter Wemm R$+ < @ bigisp.com. > $* $: $(allnumbers $1 $) 2482c2aa98e2SPeter Wemm R@MATCH $#error $: 553 Header Error 2483c2aa98e2SPeter Wemm 2484c2aa98e2SPeter WemmThese rules are called with the original arguments of the corresponding 2485c2aa98e2SPeter Wemmcheck_* ruleset. If the local ruleset returns $#OK, no further checking 2486c2aa98e2SPeter Wemmis done by the features described above and the mail is accepted. If the 2487c2aa98e2SPeter Wemmlocal ruleset resolves to a mailer (such as $#error or $#discard), the 2488c2aa98e2SPeter Wemmappropriate action is taken. Otherwise, the results of the local 2489c2aa98e2SPeter Wemmrewriting are ignored. 2490c2aa98e2SPeter Wemm 249106f25ae9SGregory Neil ShapiroFiner control by using tags for the LHS of the access map 249240266059SGregory Neil Shapiro--------------------------------------------------------- 249306f25ae9SGregory Neil Shapiro 249406f25ae9SGregory Neil ShapiroRead this section only if the options listed so far are not sufficient 249506f25ae9SGregory Neil Shapirofor your purposes. There is now the option to tag entries in the 249606f25ae9SGregory Neil Shapiroaccess map according to their type. Three tags are available: 249706f25ae9SGregory Neil Shapiro 249806f25ae9SGregory Neil Shapiro Connect: connection information (${client_addr}, ${client_name}) 2499602a2b1bSGregory Neil Shapiro From: envelope sender 2500602a2b1bSGregory Neil Shapiro To: envelope recipient 250106f25ae9SGregory Neil Shapiro 250206f25ae9SGregory Neil ShapiroIf the required item is looked up in a map, it will be tried first 250306f25ae9SGregory Neil Shapirowith the corresponding tag in front, then (as fallback to enable 250440266059SGregory Neil Shapirobackward compatibility) without any tag, unless the specific feature 250540266059SGregory Neil Shapirorequires a tag. For example, 250606f25ae9SGregory Neil Shapiro 250706f25ae9SGregory Neil Shapiro From:spammer@some.dom REJECT 250806f25ae9SGregory Neil Shapiro To:friend.domain RELAY 250906f25ae9SGregory Neil Shapiro Connect:friend.domain OK 251006f25ae9SGregory Neil Shapiro Connect:from.domain RELAY 251106f25ae9SGregory Neil Shapiro From:good@another.dom OK 251206f25ae9SGregory Neil Shapiro From:another.dom REJECT 251306f25ae9SGregory Neil Shapiro 251406f25ae9SGregory Neil ShapiroThis would deny mails from spammer@some.dom but you could still 251506f25ae9SGregory Neil Shapirosend mail to that address even if FEATURE(`blacklist_recipients') 251606f25ae9SGregory Neil Shapirois enabled. Your system will allow relaying to friend.domain, but 251706f25ae9SGregory Neil Shapironot from it (unless enabled by other means). Connections from that 251806f25ae9SGregory Neil Shapirodomain will be allowed even if it ends up in one of the DNS based 251906f25ae9SGregory Neil Shapirorejection lists. Relaying is enabled from from.domain but not to 252006f25ae9SGregory Neil Shapiroit (since relaying is based on the connection information for 252106f25ae9SGregory Neil Shapirooutgoing relaying, the tag Connect: must be used; for incoming 252206f25ae9SGregory Neil Shapirorelaying, which is based on the recipient address, To: must be 252306f25ae9SGregory Neil Shapiroused). The last two entries allow mails from good@another.dom but 252406f25ae9SGregory Neil Shapiroreject mail from all other addresses with another.dom as domain 252506f25ae9SGregory Neil Shapiropart. 252606f25ae9SGregory Neil Shapiro 252706f25ae9SGregory Neil ShapiroDelay all checks 252840266059SGregory Neil Shapiro---------------- 252906f25ae9SGregory Neil Shapiro 253006f25ae9SGregory Neil ShapiroBy using FEATURE(`delay_checks') the rulesets check_mail and check_relay 253106f25ae9SGregory Neil Shapirowill not be called when a client connects or issues a MAIL command, 253206f25ae9SGregory Neil Shapirorespectively. Instead, those rulesets will be called by the check_rcpt 253306f25ae9SGregory Neil Shapiroruleset; they will be skipped if a sender has been authenticated using 253406f25ae9SGregory Neil Shapiroa "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH(). 253506f25ae9SGregory Neil ShapiroIf check_mail returns an error then the RCPT TO command will be rejected 253606f25ae9SGregory Neil Shapirowith that error. If it returns some other result starting with $# then 253706f25ae9SGregory Neil Shapirocheck_relay will be skipped. If the sender address (or a part of it) is 253806f25ae9SGregory Neil Shapirolisted in the access map and it has a RHS of OK or RELAY, then check_relay 253906f25ae9SGregory Neil Shapirowill be skipped. This has an interesting side effect: if your domain is 254006f25ae9SGregory Neil Shapiromy.domain and you have 254106f25ae9SGregory Neil Shapiro 254206f25ae9SGregory Neil Shapiro my.domain RELAY 254306f25ae9SGregory Neil Shapiro 254406f25ae9SGregory Neil Shapiroin the access map, then all e-mail with a sender address of 254506f25ae9SGregory Neil Shapiro<user@my.domain> gets through, even if check_relay would reject it 254606f25ae9SGregory Neil Shapiro(e.g., based on the hostname or IP address). This allows spammers 254706f25ae9SGregory Neil Shapiroto get around DNS based blacklist by faking the sender address. To 254806f25ae9SGregory Neil Shapiroavoid this problem you have to use tagged entries: 254906f25ae9SGregory Neil Shapiro 255006f25ae9SGregory Neil Shapiro To:my.domain RELAY 255106f25ae9SGregory Neil Shapiro Connect:my.domain RELAY 255206f25ae9SGregory Neil Shapiro 255306f25ae9SGregory Neil Shapiroif you need those entries at all (class {R} may take care of them). 255406f25ae9SGregory Neil Shapiro 255506f25ae9SGregory Neil ShapiroFEATURE(`delay_checks') can take an optional argument: 255606f25ae9SGregory Neil Shapiro 255706f25ae9SGregory Neil Shapiro FEATURE(`delay_checks', `friend') 255806f25ae9SGregory Neil Shapiro enables spamfriend test 255906f25ae9SGregory Neil Shapiro FEATURE(`delay_checks', `hater') 256006f25ae9SGregory Neil Shapiro enables spamhater test 256106f25ae9SGregory Neil Shapiro 2562605302a5SGregory Neil ShapiroIf such an argument is given, the recipient will be looked up in the 2563605302a5SGregory Neil Shapiroaccess map (using the tag Spam:). If the argument is `friend', then 2564605302a5SGregory Neil Shapirothe default behavior is to apply the other rulesets and make a SPAM 2565605302a5SGregory Neil Shapirofriend the exception. The rulesets check_mail and check_relay will be 2566605302a5SGregory Neil Shapiroskipped only if the recipient address is found and has RHS FRIEND. If 2567605302a5SGregory Neil Shapirothe argument is `hater', then the default behavior is to skip the rulesets 2568605302a5SGregory Neil Shapirocheck_mail and check_relay and make a SPAM hater the exception. The 2569605302a5SGregory Neil Shapiroother two rulesets will be applied only if the recipient address is 2570605302a5SGregory Neil Shapirofound and has RHS HATER. 257106f25ae9SGregory Neil Shapiro 257206f25ae9SGregory Neil ShapiroThis allows for simple exceptions from the tests, e.g., by activating 257340266059SGregory Neil Shapirothe friend option and having 257406f25ae9SGregory Neil Shapiro 257540266059SGregory Neil Shapiro Spam:abuse@ FRIEND 257606f25ae9SGregory Neil Shapiro 257706f25ae9SGregory Neil Shapiroin the access map, mail to abuse@localdomain will get through. It is 257806f25ae9SGregory Neil Shapiroalso possible to specify a full address or an address with +detail: 257906f25ae9SGregory Neil Shapiro 258040266059SGregory Neil Shapiro Spam:abuse@my.domain FRIEND 258140266059SGregory Neil Shapiro Spam:me+abuse@ FRIEND 258240266059SGregory Neil Shapiro Spam:spam.domain FRIEND 258306f25ae9SGregory Neil Shapiro 258440266059SGregory Neil ShapiroNote: The required tag has been changed in 8.12 from To: to Spam:. 258540266059SGregory Neil ShapiroThis change is incompatible to previous versions. However, you can 258640266059SGregory Neil Shapiro(for now) simply add the new entries to the access map, the old 258740266059SGregory Neil Shapiroones will be ignored. As soon as you removed the old entries from 258840266059SGregory Neil Shapirothe access map, specify a third parameter (`n') to this feature and 258940266059SGregory Neil Shapirothe backward compatibility rules will not be in the generated .cf 259040266059SGregory Neil Shapirofile. 259106f25ae9SGregory Neil Shapiro 259206f25ae9SGregory Neil ShapiroHeader Checks 259340266059SGregory Neil Shapiro------------- 2594c2aa98e2SPeter Wemm 2595c2aa98e2SPeter WemmYou can also reject mail on the basis of the contents of headers. 2596c2aa98e2SPeter WemmThis is done by adding a ruleset call to the 'H' header definition command 2597c2aa98e2SPeter Wemmin sendmail.cf. For example, this can be used to check the validity of 2598c2aa98e2SPeter Wemma Message-ID: header: 2599c2aa98e2SPeter Wemm 2600c2aa98e2SPeter Wemm LOCAL_RULESETS 2601c2aa98e2SPeter Wemm HMessage-Id: $>CheckMessageId 2602c2aa98e2SPeter Wemm 2603c2aa98e2SPeter Wemm SCheckMessageId 2604c2aa98e2SPeter Wemm R< $+ @ $+ > $@ OK 2605c2aa98e2SPeter Wemm R$* $#error $: 553 Header Error 2606c2aa98e2SPeter Wemm 260706f25ae9SGregory Neil ShapiroThe alternative format: 2608065a643dSPeter Wemm 260906f25ae9SGregory Neil Shapiro HSubject: $>+CheckSubject 2610065a643dSPeter Wemm 261106f25ae9SGregory Neil Shapirothat is, $>+ instead of $>, gives the full Subject: header including 261206f25ae9SGregory Neil Shapirocomments to the ruleset (comments in parentheses () are stripped 261306f25ae9SGregory Neil Shapiroby default). 26142e43090eSPeter Wemm 261506f25ae9SGregory Neil ShapiroA default ruleset for headers which don't have a specific ruleset 261606f25ae9SGregory Neil Shapirodefined for them can be given by: 2617065a643dSPeter Wemm 261806f25ae9SGregory Neil Shapiro H*: $>CheckHdr 261906f25ae9SGregory Neil Shapiro 262040266059SGregory Neil ShapiroNotice: 262140266059SGregory Neil Shapiro1. All rules act on tokens as explained in doc/op/op.{me,ps,txt}. 2622602a2b1bSGregory Neil ShapiroThat may cause problems with simple header checks due to the 2623602a2b1bSGregory Neil Shapirotokenization. It might be simpler to use a regex map and apply it 2624602a2b1bSGregory Neil Shapiroto $&{currHeader}. 262540266059SGregory Neil Shapiro2. There are no default rulesets coming with this distribution of 262640266059SGregory Neil Shapirosendmail. You can either write your own or you can search the 262740266059SGregory Neil ShapiroWWW for examples, e.g., http://www.digitalanswers.org/check_local/ 2628602a2b1bSGregory Neil Shapiro 262906f25ae9SGregory Neil ShapiroAfter all of the headers are read, the check_eoh ruleset will be called for 263006f25ae9SGregory Neil Shapiroany final header-related checks. The ruleset is called with the number of 263106f25ae9SGregory Neil Shapiroheaders and the size of all of the headers in bytes separated by $|. One 263206f25ae9SGregory Neil Shapiroexample usage is to reject messages which do not have a Message-Id: 263306f25ae9SGregory Neil Shapiroheader. However, the Message-Id: header is *NOT* a required header and is 263406f25ae9SGregory Neil Shapironot a guaranteed spam indicator. This ruleset is an example and should 263506f25ae9SGregory Neil Shapiroprobably not be used in production. 263606f25ae9SGregory Neil Shapiro 263706f25ae9SGregory Neil Shapiro LOCAL_CONFIG 263806f25ae9SGregory Neil Shapiro Kstorage macro 263906f25ae9SGregory Neil Shapiro 264006f25ae9SGregory Neil Shapiro LOCAL_RULESETS 264106f25ae9SGregory Neil Shapiro HMessage-Id: $>CheckMessageId 264206f25ae9SGregory Neil Shapiro 264306f25ae9SGregory Neil Shapiro SCheckMessageId 264406f25ae9SGregory Neil Shapiro # Record the presence of the header 264506f25ae9SGregory Neil Shapiro R$* $: $(storage {MessageIdCheck} $@ OK $) $1 264606f25ae9SGregory Neil Shapiro R< $+ @ $+ > $@ OK 264706f25ae9SGregory Neil Shapiro R$* $#error $: 553 Header Error 264806f25ae9SGregory Neil Shapiro 264906f25ae9SGregory Neil Shapiro Scheck_eoh 265006f25ae9SGregory Neil Shapiro # Check the macro 265106f25ae9SGregory Neil Shapiro R$* $: < $&{MessageIdCheck} > 265206f25ae9SGregory Neil Shapiro # Clear the macro for the next message 265306f25ae9SGregory Neil Shapiro R$* $: $(storage {MessageIdCheck} $) $1 265406f25ae9SGregory Neil Shapiro # Has a Message-Id: header 265506f25ae9SGregory Neil Shapiro R< $+ > $@ OK 265606f25ae9SGregory Neil Shapiro # Allow missing Message-Id: from local mail 265706f25ae9SGregory Neil Shapiro R$* $: < $&{client_name} > 265806f25ae9SGregory Neil Shapiro R< > $@ OK 265906f25ae9SGregory Neil Shapiro R< $=w > $@ OK 266006f25ae9SGregory Neil Shapiro # Otherwise, reject the mail 266106f25ae9SGregory Neil Shapiro R$* $#error $: 553 Header Error 266206f25ae9SGregory Neil Shapiro 266342e5d165SGregory Neil Shapiro+----------+ 266406f25ae9SGregory Neil Shapiro| STARTTLS | 266542e5d165SGregory Neil Shapiro+----------+ 266606f25ae9SGregory Neil Shapiro 266706f25ae9SGregory Neil ShapiroIn this text, cert will be used as an abreviation for X.509 certificate, 266840266059SGregory Neil ShapiroDN (CN) is the distinguished (common) name of a cert, and CA is a 266940266059SGregory Neil Shapirocertification authority, which signs (issues) certs. 267006f25ae9SGregory Neil Shapiro 267113058a91SGregory Neil ShapiroFor STARTTLS to be offered by sendmail you need to set at least 267213058a91SGregory Neil Shapirothis variables (the file names and paths are just examples): 267313058a91SGregory Neil Shapiro 267413058a91SGregory Neil Shapiro define(`confCACERT_PATH', `/etc/mail/certs/') 267513058a91SGregory Neil Shapiro define(`confCACERT', `/etc/mail/certs/CA.cert.pem') 267613058a91SGregory Neil Shapiro define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem') 267713058a91SGregory Neil Shapiro define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem') 267813058a91SGregory Neil Shapiro 267913058a91SGregory Neil ShapiroOn systems which do not have the compile flag HASURANDOM set (see 268013058a91SGregory Neil Shapirosendmail/README) you also must set confRAND_FILE. 268113058a91SGregory Neil Shapiro 268240266059SGregory Neil ShapiroSee doc/op/op.{me,ps,txt} for more information about these options, 268340266059SGregory Neil Shapiroespecially the sections ``Certificates for STARTTLS'' and ``PRNG for 268413058a91SGregory Neil ShapiroSTARTTLS''. 268513058a91SGregory Neil Shapiro 268606f25ae9SGregory Neil ShapiroMacros related to STARTTLS are: 268706f25ae9SGregory Neil Shapiro 268806f25ae9SGregory Neil Shapiro${cert_issuer} holds the DN of the CA (the cert issuer). 268906f25ae9SGregory Neil Shapiro${cert_subject} holds the DN of the cert (called the cert subject). 269040266059SGregory Neil Shapiro${cn_issuer} holds the CN of the CA (the cert issuer). 269140266059SGregory Neil Shapiro${cn_subject} holds the CN of the cert (called the cert subject). 269206f25ae9SGregory Neil Shapiro${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1, 269340266059SGregory Neil Shapiro TLSv1/SSLv3, SSLv3, SSLv2. 269406f25ae9SGregory Neil Shapiro${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA, 269506f25ae9SGregory Neil Shapiro EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA. 269606f25ae9SGregory Neil Shapiro${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm 269706f25ae9SGregory Neil Shapiro used for the connection. 269840266059SGregory Neil Shapiro${verify} holds the result of the verification of the presented cert. 269940266059SGregory Neil Shapiro Possible values are: 270006f25ae9SGregory Neil Shapiro OK verification succeeded. 270106f25ae9SGregory Neil Shapiro NO no cert presented. 270240266059SGregory Neil Shapiro NOT no cert requested. 270340266059SGregory Neil Shapiro FAIL cert presented but could not be verified, 270440266059SGregory Neil Shapiro e.g., the cert of the signing CA is missing. 270506f25ae9SGregory Neil Shapiro NONE STARTTLS has not been performed. 270606f25ae9SGregory Neil Shapiro TEMP temporary error occurred. 270740266059SGregory Neil Shapiro PROTOCOL protocol error occurred (SMTP level). 270806f25ae9SGregory Neil Shapiro SOFTWARE STARTTLS handshake failed. 270906f25ae9SGregory Neil Shapiro${server_name} the name of the server of the current outgoing SMTP 271006f25ae9SGregory Neil Shapiro connection. 271106f25ae9SGregory Neil Shapiro${server_addr} the address of the server of the current outgoing SMTP 271206f25ae9SGregory Neil Shapiro connection. 271306f25ae9SGregory Neil Shapiro 271406f25ae9SGregory Neil ShapiroRelaying 271540266059SGregory Neil Shapiro-------- 271606f25ae9SGregory Neil Shapiro 271706f25ae9SGregory Neil ShapiroSMTP STARTTLS can allow relaying for senders who have successfully 271806f25ae9SGregory Neil Shapiroauthenticated themselves. This is done in the ruleset RelayAuth. If the 271906f25ae9SGregory Neil Shapiroverification of the cert failed (${verify} != OK), relaying is subject to 272006f25ae9SGregory Neil Shapirothe usual rules. Otherwise the DN of the issuer is looked up in the access 272106f25ae9SGregory Neil Shapiromap using the tag CERTISSUER. If the resulting value is RELAY, relaying is 272206f25ae9SGregory Neil Shapiroallowed. If it is SUBJECT, the DN of the cert subject is looked up next in 272340266059SGregory Neil Shapirothe access map using the tag CERTSUBJECT. If the value is RELAY, relaying 272406f25ae9SGregory Neil Shapirois allowed. 272506f25ae9SGregory Neil Shapiro 272606f25ae9SGregory Neil ShapiroTo make things a bit more flexible (or complicated), the values for 272706f25ae9SGregory Neil Shapiro${cert_issuer} and ${cert_subject} can be optionally modified by regular 272806f25ae9SGregory Neil Shapiroexpressions defined in the m4 variables _CERT_REGEX_ISSUER_ and 272906f25ae9SGregory Neil Shapiro_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in 273006f25ae9SGregory Neil Shapirorulesets and map lookups, they are modified as follows: each non-printable 273106f25ae9SGregory Neil Shapirocharacter and the characters '<', '>', '(', ')', '"', '+' are replaced by 273206f25ae9SGregory Neil Shapirotheir HEX value with a leading '+'. For example: 273306f25ae9SGregory Neil Shapiro 273406f25ae9SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email= 273506f25ae9SGregory Neil Shapirodarth+cert@endmail.org 273606f25ae9SGregory Neil Shapiro 273706f25ae9SGregory Neil Shapirois encoded as: 273806f25ae9SGregory Neil Shapiro 273906f25ae9SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN= 274006f25ae9SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org 274106f25ae9SGregory Neil Shapiro 274206f25ae9SGregory Neil Shapiro(line breaks have been inserted for readability). 274306f25ae9SGregory Neil Shapiro 274440266059SGregory Neil ShapiroExamples: 274540266059SGregory Neil Shapiro 274640266059SGregory Neil ShapiroTo allow relaying for everyone who can present a cert signed by 274740266059SGregory Neil Shapiro 274840266059SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN= 274940266059SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org 275040266059SGregory Neil Shapiro 275140266059SGregory Neil Shapirosimply use: 275240266059SGregory Neil Shapiro 275340266059SGregory Neil ShapiroCERTIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= 275440266059SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org RELAY 275540266059SGregory Neil Shapiro 275640266059SGregory Neil ShapiroTo allow relaying only for a subset of machines that have a cert signed by 275740266059SGregory Neil Shapiro 275840266059SGregory Neil Shapiro/C=US/ST=California/O=endmail.org/OU=private/CN= 275940266059SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org 276040266059SGregory Neil Shapiro 276140266059SGregory Neil Shapirouse: 276240266059SGregory Neil Shapiro 276340266059SGregory Neil ShapiroCERTIssuer:/C=US/ST=California/O=endmail.org/OU=private/CN= 276440266059SGregory Neil ShapiroDarth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org SUBJECT 276540266059SGregory Neil ShapiroCERTSubject:/C=US/ST=California/O=endmail.org/OU=private/CN= 276640266059SGregory Neil ShapiroDeathStar/Email=deathstar@endmail.org RELAY 276740266059SGregory Neil Shapiro 276840266059SGregory Neil ShapiroNote: line breaks have been inserted after "CN=" for readability, 276940266059SGregory Neil Shapiroeach tagged entry must be one (long) line in the access map. 277040266059SGregory Neil Shapiro 277140266059SGregory Neil ShapiroOf course it is also possible to write a simple ruleset that allows 277206f25ae9SGregory Neil Shapirorelaying for everyone who can present a cert that can be verified, e.g., 277306f25ae9SGregory Neil Shapiro 277406f25ae9SGregory Neil ShapiroLOCAL_RULESETS 277506f25ae9SGregory Neil ShapiroSLocal_check_rcpt 277606f25ae9SGregory Neil ShapiroR$* $: $&{verify} 277706f25ae9SGregory Neil ShapiroROK $# OK 277806f25ae9SGregory Neil Shapiro 277906f25ae9SGregory Neil ShapiroAllowing Connections 278040266059SGregory Neil Shapiro-------------------- 278106f25ae9SGregory Neil Shapiro 278240266059SGregory Neil ShapiroThe rulesets tls_server, tls_client, and tls_rcpt are used to decide whether 278340266059SGregory Neil Shapiroan SMTP connection is accepted (or should continue). 278406f25ae9SGregory Neil Shapiro 278506f25ae9SGregory Neil Shapirotls_server is called when sendmail acts as client after a STARTTLS command 278606f25ae9SGregory Neil Shapiro(should) have been issued. The parameter is the value of ${verify}. 278706f25ae9SGregory Neil Shapiro 278806f25ae9SGregory Neil Shapirotls_client is called when sendmail acts as server, after a STARTTLS command 278906f25ae9SGregory Neil Shapirohas been issued, and from check_mail. The parameter is the value of 279006f25ae9SGregory Neil Shapiro${verify} and STARTTLS or MAIL, respectively. 279106f25ae9SGregory Neil Shapiro 279206f25ae9SGregory Neil ShapiroBoth rulesets behave the same. If no access map is in use, the connection 279306f25ae9SGregory Neil Shapirowill be accepted unless ${verify} is SOFTWARE, in which case the connection 279440266059SGregory Neil Shapirois always aborted. For tls_server/tls_client, ${client_name}/${server_name} 279540266059SGregory Neil Shapirois looked up in the access map using the tag TLS_Srv/TLS_Clt, which is done 279606f25ae9SGregory Neil Shapirowith the ruleset LookUpDomain. If no entry is found, ${client_addr} 279706f25ae9SGregory Neil Shapiro(${server_addr}) is looked up in the access map (same tag, ruleset 279806f25ae9SGregory Neil ShapiroLookUpAddr). If this doesn't result in an entry either, just the tag is 279940266059SGregory Neil Shapirolooked up in the access map (included the trailing colon). Notice: 280040266059SGregory Neil Shapirorequiring that e-mail is sent to a server only encrypted, e.g., via 280140266059SGregory Neil Shapiro 280240266059SGregory Neil ShapiroTLS_Srv:secure.domain ENCR:112 280340266059SGregory Neil Shapiro 280440266059SGregory Neil Shapirodoesn't necessarily mean that e-mail sent to that domain is encrypted. 280540266059SGregory Neil ShapiroIf the domain has multiple MX servers, e.g., 280640266059SGregory Neil Shapiro 280740266059SGregory Neil Shapirosecure.domain. IN MX 10 mail.secure.domain. 280840266059SGregory Neil Shapirosecure.domain. IN MX 50 mail.other.domain. 280940266059SGregory Neil Shapiro 281040266059SGregory Neil Shapirothen mail to user@secure.domain may go unencrypted to mail.other.domain. 281140266059SGregory Neil Shapirotls_rcpt can be used to address this problem. 281240266059SGregory Neil Shapiro 281340266059SGregory Neil Shapirotls_rcpt is called before a RCPT TO: command is sent. The parameter is the 281440266059SGregory Neil Shapirocurrent recipient. This ruleset is only defined if FEATURE(`access_db') 281540266059SGregory Neil Shapirois selected. A recipient address user@domain is looked up in the access 281640266059SGregory Neil Shapiromap in four formats: TLS_Rcpt:user@domain, TLS_Rcpt:user@, TLS_Rcpt:domain, 281740266059SGregory Neil Shapiroand TLS_Rcpt:; the first match is taken. 281840266059SGregory Neil Shapiro 281940266059SGregory Neil ShapiroThe result of the lookups is then used to call the ruleset TLS_connection, 282040266059SGregory Neil Shapirowhich checks the requirement specified by the RHS in the access map against 282140266059SGregory Neil Shapirothe actual parameters of the current TLS connection, esp. ${verify} and 282206f25ae9SGregory Neil Shapiro${cipher_bits}. Legal RHSs in the access map are: 282306f25ae9SGregory Neil Shapiro 282406f25ae9SGregory Neil ShapiroVERIFY verification must have succeeded 282506f25ae9SGregory Neil ShapiroVERIFY:bits verification must have succeeded and ${cipher_bits} must 282606f25ae9SGregory Neil Shapiro be greater than or equal bits. 282706f25ae9SGregory Neil ShapiroENCR:bits ${cipher_bits} must be greater than or equal bits. 282806f25ae9SGregory Neil Shapiro 282906f25ae9SGregory Neil ShapiroThe RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary 283006f25ae9SGregory Neil Shapiroor permanent error. The default is a temporary error code (403 4.7.0) 283106f25ae9SGregory Neil Shapirounless the macro TLS_PERM_ERR is set during generation of the .cf file. 283206f25ae9SGregory Neil Shapiro 283306f25ae9SGregory Neil ShapiroIf a certain level of encryption is required, then it might also be 283406f25ae9SGregory Neil Shapiropossible that this level is provided by the security layer from a SASL 283506f25ae9SGregory Neil Shapiroalgorithm, e.g., DIGEST-MD5. 283606f25ae9SGregory Neil Shapiro 283740266059SGregory Neil ShapiroFurthermore, there can be a list of extensions added. Such a list 283840266059SGregory Neil Shapirostarts with '+' and the items are separated by '++'. Allowed 283940266059SGregory Neil Shapiroextensions are: 284040266059SGregory Neil Shapiro 284140266059SGregory Neil ShapiroCN:name name must match ${cn_subject} 284240266059SGregory Neil ShapiroCN ${server_name} must match ${cn_subject} 284340266059SGregory Neil ShapiroCS:name name must match ${cert_subject} 284440266059SGregory Neil ShapiroCI:name name must match ${cert_issuer} 284540266059SGregory Neil Shapiro 2846c86d5965SGregory Neil ShapiroExample: e-mail sent to secure.example.com should only use an encrypted 284740266059SGregory Neil Shapiroconnection. E-mail received from hosts within the laptop.example.com domain 284840266059SGregory Neil Shapiroshould only be accepted if they have been authenticated. The host which 284940266059SGregory Neil Shapiroreceives e-mail for darth@endmail.org must present a cert that uses the 285040266059SGregory Neil ShapiroCN smtp.endmail.org. 285140266059SGregory Neil Shapiro 285206f25ae9SGregory Neil ShapiroTLS_Srv:secure.example.com ENCR:112 285306f25ae9SGregory Neil ShapiroTLS_Clt:laptop.example.com PERM+VERIFY:112 285440266059SGregory Neil ShapiroTLS_Rcpt:darth@endmail.org ENCR:112+CN:smtp.endmail.org 285506f25ae9SGregory Neil Shapiro 2856602a2b1bSGregory Neil Shapiro 285740266059SGregory Neil ShapiroDisabling STARTTLS And Setting SMTP Server Features 285840266059SGregory Neil Shapiro--------------------------------------------------- 2859602a2b1bSGregory Neil Shapiro 286040266059SGregory Neil ShapiroBy default STARTTLS is used whenever possible. However, there are 286140266059SGregory Neil Shapirosome broken MTAs that don't properly implement STARTTLS. To be able 286240266059SGregory Neil Shapiroto send to (or receive from) those MTAs, the ruleset try_tls 286340266059SGregory Neil Shapiro(srv_features) can be used that work together with the access map. 286440266059SGregory Neil ShapiroEntries for the access map must be tagged with Try_TLS (Srv_Features) 286540266059SGregory Neil Shapiroand refer to the hostname or IP address of the connecting system. 286640266059SGregory Neil ShapiroA default case can be specified by using just the tag. For example, 286740266059SGregory Neil Shapirothe following entries in the access map: 2868602a2b1bSGregory Neil Shapiro 286940266059SGregory Neil Shapiro Try_TLS:broken.server NO 287040266059SGregory Neil Shapiro Srv_Features:my.domain v 287140266059SGregory Neil Shapiro Srv_Features: V 2872602a2b1bSGregory Neil Shapiro 287340266059SGregory Neil Shapirowill turn off STARTTLS when sending to broken.server (or any host 287440266059SGregory Neil Shapiroin that domain), and request a client certificate during the TLS 287540266059SGregory Neil Shapirohandshake only for hosts in my.domain. The valid entries on the RHS 287640266059SGregory Neil Shapirofor Srv_Features are listed in the Sendmail Installation and 287740266059SGregory Neil ShapiroOperations Guide. 2878602a2b1bSGregory Neil Shapiro 2879602a2b1bSGregory Neil Shapiro 288006f25ae9SGregory Neil ShapiroReceived: Header 288140266059SGregory Neil Shapiro---------------- 288206f25ae9SGregory Neil Shapiro 288306f25ae9SGregory Neil ShapiroThe Received: header reveals whether STARTTLS has been used. It contains an 288406f25ae9SGregory Neil Shapiroextra line: 288506f25ae9SGregory Neil Shapiro 288640266059SGregory Neil Shapiro(version=${tls_version} cipher=${cipher} bits=${cipher_bits} verify=${verify}) 288740266059SGregory Neil Shapiro 288806f25ae9SGregory Neil Shapiro 288942e5d165SGregory Neil Shapiro+---------------------+ 289006f25ae9SGregory Neil Shapiro| SMTP AUTHENTICATION | 289142e5d165SGregory Neil Shapiro+---------------------+ 289206f25ae9SGregory Neil Shapiro 289306f25ae9SGregory Neil ShapiroThe macros ${auth_authen}, ${auth_author}, and ${auth_type} can be 289406f25ae9SGregory Neil Shapiroused in anti-relay rulesets to allow relaying for those users that 289506f25ae9SGregory Neil Shapiroauthenticated themselves. A very simple example is: 289606f25ae9SGregory Neil Shapiro 289706f25ae9SGregory Neil ShapiroSLocal_check_rcpt 289806f25ae9SGregory Neil ShapiroR$* $: $&{auth_type} 289906f25ae9SGregory Neil ShapiroR$+ $# OK 290006f25ae9SGregory Neil Shapiro 290106f25ae9SGregory Neil Shapirowhich checks whether a user has successfully authenticated using 290206f25ae9SGregory Neil Shapiroany available mechanism. Depending on the setup of the CYRUS SASL 290306f25ae9SGregory Neil Shapirolibrary, more sophisticated rulesets might be required, e.g., 290406f25ae9SGregory Neil Shapiro 290506f25ae9SGregory Neil ShapiroSLocal_check_rcpt 290606f25ae9SGregory Neil ShapiroR$* $: $&{auth_type} $| $&{auth_authen} 290706f25ae9SGregory Neil ShapiroRDIGEST-MD5 $| $+@$=w $# OK 290806f25ae9SGregory Neil Shapiro 290906f25ae9SGregory Neil Shapiroto allow relaying for users that authenticated using DIGEST-MD5 291006f25ae9SGregory Neil Shapiroand have an identity in the local domains. 291106f25ae9SGregory Neil Shapiro 291240266059SGregory Neil ShapiroThe ruleset trust_auth is used to determine whether a given AUTH= 291306f25ae9SGregory Neil Shapiroparameter (that is passed to this ruleset) should be trusted. This 291406f25ae9SGregory Neil Shapiroruleset may make use of the other ${auth_*} macros. Only if the 291506f25ae9SGregory Neil Shapiroruleset resolves to the error mailer, the AUTH= parameter is not 291606f25ae9SGregory Neil Shapirotrusted. A user supplied ruleset Local_trust_auth can be written 291706f25ae9SGregory Neil Shapiroto modify the default behavior, which only trust the AUTH= 291806f25ae9SGregory Neil Shapiroparameter if it is identical to the authenticated user. 291906f25ae9SGregory Neil Shapiro 292006f25ae9SGregory Neil ShapiroPer default, relaying is allowed for any user who authenticated 292106f25ae9SGregory Neil Shapirovia a "trusted" mechanism, i.e., one that is defined via 292206f25ae9SGregory Neil ShapiroTRUST_AUTH_MECH(`list of mechanisms') 2923193538b7SGregory Neil ShapiroFor example: 2924193538b7SGregory Neil ShapiroTRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5') 292506f25ae9SGregory Neil Shapiro 292606f25ae9SGregory Neil ShapiroIf the selected mechanism provides a security layer the number of 292706f25ae9SGregory Neil Shapirobits used for the key of the symmetric cipher is stored in the 292806f25ae9SGregory Neil Shapiromacro ${auth_ssf}. 2929c2aa98e2SPeter Wemm 293040266059SGregory Neil ShapiroIf sendmail acts as client, it needs some information how to 293140266059SGregory Neil Shapiroauthenticate against another MTA. This information can be provided 293240266059SGregory Neil Shapiroby the ruleset authinfo or by the option DefaultAuthInfo. The 293340266059SGregory Neil Shapiroauthinfo ruleset looks up {server_name} using the tag AuthInfo: in 293440266059SGregory Neil Shapirothe access map. If no entry is found, {server_addr} is looked up 293540266059SGregory Neil Shapiroin the same way and finally just the tag AuthInfo: to provide 293640266059SGregory Neil Shapirodefault values. 293740266059SGregory Neil Shapiro 293840266059SGregory Neil ShapiroNotice: the default configuration file causes the option DefaultAuthInfo 293940266059SGregory Neil Shapiroto fail since the ruleset authinfo is in the .cf file. If you really 294040266059SGregory Neil Shapirowant to use DefaultAuthInfo (it is deprecated) then you have to 294140266059SGregory Neil Shapiroremove the ruleset. 294240266059SGregory Neil Shapiro 294340266059SGregory Neil ShapiroThe RHS for an AuthInfo: entry in the access map should consists of a 294440266059SGregory Neil Shapirolist of tokens, each of which has the form: "TDstring" (including 294540266059SGregory Neil Shapirothe quotes). T is a tag which describes the item, D is a delimiter, 294640266059SGregory Neil Shapiroeither ':' for simple text or '=' for a base64 encoded string. 294740266059SGregory Neil ShapiroValid values for the tag are: 294840266059SGregory Neil Shapiro 294940266059SGregory Neil Shapiro U user (authorization) id 295040266059SGregory Neil Shapiro I authentication id 295140266059SGregory Neil Shapiro P password 295240266059SGregory Neil Shapiro R realm 295340266059SGregory Neil Shapiro M list of mechanisms delimited by spaces 295440266059SGregory Neil Shapiro 295540266059SGregory Neil ShapiroExample entries are: 295640266059SGregory Neil Shapiro 295740266059SGregory Neil ShapiroAuthInfo:other.dom "U:user" "I:user" "P:secret" "R:other.dom" "M:DIGEST-MD5" 295840266059SGregory Neil ShapiroAuthInfo:more.dom "U:user" "P=c2VjcmV0" 295940266059SGregory Neil Shapiro 296040266059SGregory Neil ShapiroUser or authentication id must exist as well as the password. All 296140266059SGregory Neil Shapiroother entries have default values. If one of user or authentication 296240266059SGregory Neil Shapiroid is missing, the existing value is used for the missing item. 296340266059SGregory Neil ShapiroIf "R:" is not specified, realm defaults to $j. The list of mechanisms 296440266059SGregory Neil Shapirodefaults to those specified by AuthMechanisms. 296540266059SGregory Neil Shapiro 296640266059SGregory Neil ShapiroSince this map contains sensitive information, either the access 296740266059SGregory Neil Shapiromap must be unreadable by everyone but root (or the trusted user) 296840266059SGregory Neil Shapiroor FEATURE(`authinfo') must be used which provides a separate map. 296940266059SGregory Neil ShapiroNotice: It is not checked whether the map is actually 297040266059SGregory Neil Shapirogroup/world-unreadable, this is left to the user. 297140266059SGregory Neil Shapiro 2972c2aa98e2SPeter Wemm+--------------------------------+ 2973c2aa98e2SPeter Wemm| ADDING NEW MAILERS OR RULESETS | 2974c2aa98e2SPeter Wemm+--------------------------------+ 2975c2aa98e2SPeter Wemm 2976c2aa98e2SPeter WemmSometimes you may need to add entirely new mailers or rulesets. They 2977c2aa98e2SPeter Wemmshould be introduced with the constructs MAILER_DEFINITIONS and 2978c2aa98e2SPeter WemmLOCAL_RULESETS respectively. For example: 2979c2aa98e2SPeter Wemm 2980c2aa98e2SPeter Wemm MAILER_DEFINITIONS 2981c2aa98e2SPeter Wemm Mmymailer, ... 2982c2aa98e2SPeter Wemm ... 2983c2aa98e2SPeter Wemm 2984c2aa98e2SPeter Wemm LOCAL_RULESETS 2985c2aa98e2SPeter Wemm Smyruleset 2986c2aa98e2SPeter Wemm ... 2987c2aa98e2SPeter Wemm 298840266059SGregory Neil ShapiroLocal additions for the rulesets srv_features, try_tls, tls_rcpt, 298940266059SGregory Neil Shapirotls_client, and tls_server can be made using LOCAL_SRV_FEATURES, 299040266059SGregory Neil ShapiroLOCAL_TRY_TLS, LOCAL_TLS_RCPT, LOCAL_TLS_CLIENT, and LOCAL_TLS_SERVER, 299140266059SGregory Neil Shapirorespectively. For example, to add a local ruleset that decides 299240266059SGregory Neil Shapirowhether to try STARTTLS in a sendmail client, use: 2993c2aa98e2SPeter Wemm 299440266059SGregory Neil Shapiro LOCAL_TRY_TLS 299540266059SGregory Neil Shapiro R... 299640266059SGregory Neil Shapiro 299740266059SGregory Neil ShapiroNote: you don't need to add a name for the ruleset, it is implicitly 299840266059SGregory Neil Shapirodefined by using the appropriate macro. 299940266059SGregory Neil Shapiro 300040266059SGregory Neil Shapiro 3001193538b7SGregory Neil Shapiro+-------------------------+ 3002193538b7SGregory Neil Shapiro| ADDING NEW MAIL FILTERS | 3003193538b7SGregory Neil Shapiro+-------------------------+ 300406f25ae9SGregory Neil Shapiro 300506f25ae9SGregory Neil ShapiroSendmail supports mail filters to filter incoming SMTP messages according 300606f25ae9SGregory Neil Shapiroto the "Sendmail Mail Filter API" documentation. These filters can be 300706f25ae9SGregory Neil Shapiroconfigured in your mc file using the two commands: 300806f25ae9SGregory Neil Shapiro 300906f25ae9SGregory Neil Shapiro MAIL_FILTER(`name', `equates') 301006f25ae9SGregory Neil Shapiro INPUT_MAIL_FILTER(`name', `equates') 301106f25ae9SGregory Neil Shapiro 301206f25ae9SGregory Neil ShapiroThe first command, MAIL_FILTER(), simply defines a filter with the given 301306f25ae9SGregory Neil Shapironame and equates. For example: 301406f25ae9SGregory Neil Shapiro 301506f25ae9SGregory Neil Shapiro MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 301606f25ae9SGregory Neil Shapiro 301706f25ae9SGregory Neil ShapiroThis creates the equivalent sendmail.cf entry: 301806f25ae9SGregory Neil Shapiro 301906f25ae9SGregory Neil Shapiro Xarchive, S=local:/var/run/archivesock, F=R 302006f25ae9SGregory Neil Shapiro 302106f25ae9SGregory Neil ShapiroThe INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER 302206f25ae9SGregory Neil Shapirobut also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name 302306f25ae9SGregory Neil Shapiroof the filter such that the filter will actually be called by sendmail. 302406f25ae9SGregory Neil Shapiro 302506f25ae9SGregory Neil ShapiroFor example, the two commands: 302606f25ae9SGregory Neil Shapiro 302706f25ae9SGregory Neil Shapiro INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 302806f25ae9SGregory Neil Shapiro INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') 302906f25ae9SGregory Neil Shapiro 303006f25ae9SGregory Neil Shapiroare equivalent to the three commands: 303106f25ae9SGregory Neil Shapiro 303206f25ae9SGregory Neil Shapiro MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 303306f25ae9SGregory Neil Shapiro MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') 303406f25ae9SGregory Neil Shapiro define(`confINPUT_MAIL_FILTERS', `archive, spamcheck') 303506f25ae9SGregory Neil Shapiro 303606f25ae9SGregory Neil ShapiroIn general, INPUT_MAIL_FILTER() should be used unless you need to define 303706f25ae9SGregory Neil Shapiromore filters than you want to use for `confINPUT_MAIL_FILTERS'. 303806f25ae9SGregory Neil Shapiro 303906f25ae9SGregory Neil ShapiroNote that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER() 304006f25ae9SGregory Neil Shapirocommands will clear the list created by the prior INPUT_MAIL_FILTER() 304106f25ae9SGregory Neil Shapirocommands. 304206f25ae9SGregory Neil Shapiro 304306f25ae9SGregory Neil Shapiro 304440266059SGregory Neil Shapiro+-------------------------+ 304540266059SGregory Neil Shapiro| QUEUE GROUP DEFINITIONS | 304640266059SGregory Neil Shapiro+-------------------------+ 304740266059SGregory Neil Shapiro 304840266059SGregory Neil ShapiroIn addition to the queue directory (which is the default queue group 304940266059SGregory Neil Shapirocalled "mqueue"), sendmail can deal with multiple queue groups, which 305040266059SGregory Neil Shapiroare collections of queue directories with the same behaviour. Queue 305140266059SGregory Neil Shapirogroups can be defined using the command: 305240266059SGregory Neil Shapiro 305340266059SGregory Neil Shapiro QUEUE_GROUP(`name', `equates') 305440266059SGregory Neil Shapiro 305540266059SGregory Neil ShapiroFor details about queue groups, please see doc/op/op.{me,ps,txt}. 305640266059SGregory Neil Shapiro 3057c2aa98e2SPeter Wemm+-------------------------------+ 3058c2aa98e2SPeter Wemm| NON-SMTP BASED CONFIGURATIONS | 3059c2aa98e2SPeter Wemm+-------------------------------+ 3060c2aa98e2SPeter Wemm 306106f25ae9SGregory Neil ShapiroThese configuration files are designed primarily for use by 306206f25ae9SGregory Neil ShapiroSMTP-based sites. They may not be well tuned for UUCP-only or 3063c2aa98e2SPeter WemmUUCP-primarily nodes (the latter is defined as a small local net 306406f25ae9SGregory Neil Shapiroconnected to the rest of the world via UUCP). However, there is 306506f25ae9SGregory Neil Shapiroone hook to handle some special cases. 3066c2aa98e2SPeter Wemm 3067c2aa98e2SPeter WemmYou can define a ``smart host'' that understands a richer address syntax 3068c2aa98e2SPeter Wemmusing: 3069c2aa98e2SPeter Wemm 30702e43090eSPeter Wemm define(`SMART_HOST', `mailer:hostname') 3071c2aa98e2SPeter Wemm 3072c2aa98e2SPeter WemmIn this case, the ``mailer:'' defaults to "relay". Any messages that 3073c2aa98e2SPeter Wemmcan't be handled using the usual UUCP rules are passed to this host. 3074c2aa98e2SPeter Wemm 3075c2aa98e2SPeter WemmIf you are on a local SMTP-based net that connects to the outside 3076c2aa98e2SPeter Wemmworld via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules. 3077c2aa98e2SPeter WemmFor example: 3078c2aa98e2SPeter Wemm 307906f25ae9SGregory Neil Shapiro define(`SMART_HOST', `uucp-new:uunet') 3080c2aa98e2SPeter Wemm LOCAL_NET_CONFIG 3081c2aa98e2SPeter Wemm R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3 3082c2aa98e2SPeter Wemm 3083605302a5SGregory Neil ShapiroThis will cause all names that end in your domain name ($m) to be sent 3084605302a5SGregory Neil Shapirovia SMTP; anything else will be sent via uucp-new (smart UUCP) to uunet. 30852e43090eSPeter WemmIf you have FEATURE(`nocanonify'), you may need to omit the dots after 3086c2aa98e2SPeter Wemmthe $m. If you are running a local DNS inside your domain which is 3087c2aa98e2SPeter Wemmnot otherwise connected to the outside world, you probably want to 3088c2aa98e2SPeter Wemmuse: 3089c2aa98e2SPeter Wemm 30902e43090eSPeter Wemm define(`SMART_HOST', `smtp:fire.wall.com') 3091c2aa98e2SPeter Wemm LOCAL_NET_CONFIG 3092c2aa98e2SPeter Wemm R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3 3093c2aa98e2SPeter Wemm 3094c2aa98e2SPeter WemmThat is, send directly only to things you found in your DNS lookup; 3095c2aa98e2SPeter Wemmanything else goes through SMART_HOST. 3096c2aa98e2SPeter Wemm 3097c2aa98e2SPeter WemmYou may need to turn off the anti-spam rules in order to accept 30982e43090eSPeter WemmUUCP mail with FEATURE(`promiscuous_relay') and 30992e43090eSPeter WemmFEATURE(`accept_unresolvable_domains'). 3100c2aa98e2SPeter Wemm 3101c2aa98e2SPeter Wemm 3102c2aa98e2SPeter Wemm+-----------+ 3103c2aa98e2SPeter Wemm| WHO AM I? | 3104c2aa98e2SPeter Wemm+-----------+ 3105c2aa98e2SPeter Wemm 3106c2aa98e2SPeter WemmNormally, the $j macro is automatically defined to be your fully 3107c2aa98e2SPeter Wemmqualified domain name (FQDN). Sendmail does this by getting your 3108c2aa98e2SPeter Wemmhost name using gethostname and then calling gethostbyname on the 3109c2aa98e2SPeter Wemmresult. For example, in some environments gethostname returns 3110c2aa98e2SPeter Wemmonly the root of the host name (such as "foo"); gethostbyname is 3111c2aa98e2SPeter Wemmsupposed to return the FQDN ("foo.bar.com"). In some (fairly rare) 3112c2aa98e2SPeter Wemmcases, gethostbyname may fail to return the FQDN. In this case 3113c2aa98e2SPeter Wemmyou MUST define confDOMAIN_NAME to be your fully qualified domain 3114c2aa98e2SPeter Wemmname. This is usually done using: 3115c2aa98e2SPeter Wemm 3116c2aa98e2SPeter Wemm Dmbar.com 3117c2aa98e2SPeter Wemm define(`confDOMAIN_NAME', `$w.$m')dnl 3118c2aa98e2SPeter Wemm 3119c2aa98e2SPeter Wemm 312006f25ae9SGregory Neil Shapiro+-----------------------------------+ 312106f25ae9SGregory Neil Shapiro| ACCEPTING MAIL FOR MULTIPLE NAMES | 312206f25ae9SGregory Neil Shapiro+-----------------------------------+ 312306f25ae9SGregory Neil Shapiro 312406f25ae9SGregory Neil ShapiroIf your host is known by several different names, you need to augment 312506f25ae9SGregory Neil Shapiroclass {w}. This is a list of names by which your host is known, and 312606f25ae9SGregory Neil Shapiroanything sent to an address using a host name in this list will be 312706f25ae9SGregory Neil Shapirotreated as local mail. You can do this in two ways: either create the 312806f25ae9SGregory Neil Shapirofile /etc/mail/local-host-names containing a list of your aliases (one per 312906f25ae9SGregory Neil Shapiroline), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add 313006f25ae9SGregory Neil Shapiro``LOCAL_DOMAIN(`alias.host.name')''. Be sure you use the fully-qualified 313106f25ae9SGregory Neil Shapironame of the host, rather than a short name. 313206f25ae9SGregory Neil Shapiro 313306f25ae9SGregory Neil ShapiroIf you want to have different address in different domains, take 313406f25ae9SGregory Neil Shapiroa look at the virtusertable feature, which is also explained at 313506f25ae9SGregory Neil Shapirohttp://www.sendmail.org/virtual-hosting.html 313606f25ae9SGregory Neil Shapiro 313706f25ae9SGregory Neil Shapiro 3138c2aa98e2SPeter Wemm+--------------------+ 3139c2aa98e2SPeter Wemm| USING MAILERTABLES | 3140c2aa98e2SPeter Wemm+--------------------+ 3141c2aa98e2SPeter Wemm 31422e43090eSPeter WemmTo use FEATURE(`mailertable'), you will have to create an external 3143c2aa98e2SPeter Wemmdatabase containing the routing information for various domains. 3144c2aa98e2SPeter WemmFor example, a mailertable file in text format might be: 3145c2aa98e2SPeter Wemm 3146c2aa98e2SPeter Wemm .my.domain xnet:%1.my.domain 314706f25ae9SGregory Neil Shapiro uuhost1.my.domain uucp-new:uuhost1 3148c2aa98e2SPeter Wemm .bitnet smtp:relay.bit.net 3149c2aa98e2SPeter Wemm 315006f25ae9SGregory Neil ShapiroThis should normally be stored in /etc/mail/mailertable. The actual 3151c2aa98e2SPeter Wemmdatabase version of the mailertable is built using: 3152c2aa98e2SPeter Wemm 315306f25ae9SGregory Neil Shapiro makemap hash /etc/mail/mailertable < /etc/mail/mailertable 3154c2aa98e2SPeter Wemm 3155c2aa98e2SPeter WemmThe semantics are simple. Any LHS entry that does not begin with 3156c2aa98e2SPeter Wemma dot matches the full host name indicated. LHS entries beginning 315742e5d165SGregory Neil Shapirowith a dot match anything ending with that domain name (including 315842e5d165SGregory Neil Shapirothe leading dot) -- that is, they can be thought of as having a 315942e5d165SGregory Neil Shapiroleading ".+" regular expression pattern for a non-empty sequence of 316042e5d165SGregory Neil Shapirocharacters. Matching is done in order of most-to-least qualified 316142e5d165SGregory Neil Shapiro-- for example, even though ".my.domain" is listed first in the 316242e5d165SGregory Neil Shapiroabove example, an entry of "uuhost1.my.domain" will match the second 316342e5d165SGregory Neil Shapiroentry since it is more explicit. Note: e-mail to "user@my.domain" 316442e5d165SGregory Neil Shapirodoes not match any entry in the above table. You need to have 316542e5d165SGregory Neil Shapirosomething like: 316606f25ae9SGregory Neil Shapiro 316706f25ae9SGregory Neil Shapiro my.domain esmtp:host.my.domain 3168c2aa98e2SPeter Wemm 3169c2aa98e2SPeter WemmThe RHS should always be a "mailer:host" pair. The mailer is the 317040266059SGregory Neil Shapiroconfiguration name of a mailer (that is, an M line in the 3171c2aa98e2SPeter Wemmsendmail.cf file). The "host" will be the hostname passed to 3172c2aa98e2SPeter Wemmthat mailer. In domain-based matches (that is, those with leading 3173c2aa98e2SPeter Wemmdots) the "%1" may be used to interpolate the wildcarded part of 3174c2aa98e2SPeter Wemmthe host name. For example, the first line above sends everything 3175c2aa98e2SPeter Wemmaddressed to "anything.my.domain" to that same host name, but using 3176c2aa98e2SPeter Wemmthe (presumably experimental) xnet mailer. 3177c2aa98e2SPeter Wemm 3178c2aa98e2SPeter WemmIn some cases you may want to temporarily turn off MX records, 3179c2aa98e2SPeter Wemmparticularly on gateways. For example, you may want to MX 3180c2aa98e2SPeter Wemmeverything in a domain to one machine that then forwards it 3181c2aa98e2SPeter Wemmdirectly. To do this, you might use the DNS configuration: 3182c2aa98e2SPeter Wemm 3183c2aa98e2SPeter Wemm *.domain. IN MX 0 relay.machine 3184c2aa98e2SPeter Wemm 3185c2aa98e2SPeter Wemmand on relay.machine use the mailertable: 3186c2aa98e2SPeter Wemm 3187c2aa98e2SPeter Wemm .domain smtp:[gateway.domain] 3188c2aa98e2SPeter Wemm 3189c2aa98e2SPeter WemmThe [square brackets] turn off MX records for this host only. 3190c2aa98e2SPeter WemmIf you didn't do this, the mailertable would use the MX record 3191c2aa98e2SPeter Wemmagain, which would give you an MX loop. 3192c2aa98e2SPeter Wemm 3193c2aa98e2SPeter Wemm 3194c2aa98e2SPeter Wemm+--------------------------------+ 3195c2aa98e2SPeter Wemm| USING USERDB TO MAP FULL NAMES | 3196c2aa98e2SPeter Wemm+--------------------------------+ 3197c2aa98e2SPeter Wemm 3198c2aa98e2SPeter WemmThe user database was not originally intended for mapping full names 3199c2aa98e2SPeter Wemmto login names (e.g., Eric.Allman => eric), but some people are using 320006f25ae9SGregory Neil Shapiroit that way. (it is recommended that you set up aliases for this 3201c2aa98e2SPeter Wemmpurpose instead -- since you can specify multiple alias files, this 3202c2aa98e2SPeter Wemmis fairly easy.) The intent was to locate the default maildrop at 3203c2aa98e2SPeter Wemma site, but allow you to override this by sending to a specific host. 3204c2aa98e2SPeter Wemm 3205c2aa98e2SPeter WemmIf you decide to set up the user database in this fashion, it is 32062e43090eSPeter Wemmimperative that you not use FEATURE(`stickyhost') -- otherwise, 3207c2aa98e2SPeter Wemme-mail sent to Full.Name@local.host.name will be rejected. 3208c2aa98e2SPeter Wemm 3209c2aa98e2SPeter WemmTo build the internal form of the user database, use: 3210c2aa98e2SPeter Wemm 321106f25ae9SGregory Neil Shapiro makemap btree /etc/mail/userdb < /etc/mail/userdb.txt 3212c2aa98e2SPeter Wemm 321306f25ae9SGregory Neil ShapiroAs a general rule, it is an extremely bad idea to using full names 321406f25ae9SGregory Neil Shapiroas e-mail addresses, since they are not in any sense unique. For 321542e5d165SGregory Neil Shapiroexample, the UNIX software-development community has at least two 321606f25ae9SGregory Neil Shapirowell-known Peter Deutsches, and at one time Bell Labs had two 321706f25ae9SGregory Neil ShapiroStephen R. Bournes with offices along the same hallway. Which one 321806f25ae9SGregory Neil Shapirowill be forced to suffer the indignity of being Stephen_R_Bourne_2? 321906f25ae9SGregory Neil ShapiroThe less famous of the two, or the one that was hired later? 3220c2aa98e2SPeter Wemm 3221c2aa98e2SPeter WemmFinger should handle full names (and be fuzzy). Mail should use 322206f25ae9SGregory Neil Shapirohandles, and not be fuzzy. 3223c2aa98e2SPeter Wemm 3224c2aa98e2SPeter Wemm 3225c2aa98e2SPeter Wemm+--------------------------------+ 3226c2aa98e2SPeter Wemm| MISCELLANEOUS SPECIAL FEATURES | 3227c2aa98e2SPeter Wemm+--------------------------------+ 3228c2aa98e2SPeter Wemm 3229c2aa98e2SPeter WemmPlussed users 3230c2aa98e2SPeter Wemm Sometimes it is convenient to merge configuration on a 3231c2aa98e2SPeter Wemm centralized mail machine, for example, to forward all 3232c2aa98e2SPeter Wemm root mail to a mail server. In this case it might be 3233c2aa98e2SPeter Wemm useful to be able to treat the root addresses as a class 3234c2aa98e2SPeter Wemm of addresses with subtle differences. You can do this 3235c2aa98e2SPeter Wemm using plussed users. For example, a client might include 3236c2aa98e2SPeter Wemm the alias: 3237c2aa98e2SPeter Wemm 3238c2aa98e2SPeter Wemm root: root+client1@server 3239c2aa98e2SPeter Wemm 3240c2aa98e2SPeter Wemm On the server, this will match an alias for "root+client1". 3241c2aa98e2SPeter Wemm If that is not found, the alias "root+*" will be tried, 3242c2aa98e2SPeter Wemm then "root". 3243c2aa98e2SPeter Wemm 3244c2aa98e2SPeter Wemm 3245c2aa98e2SPeter Wemm+----------------+ 3246c2aa98e2SPeter Wemm| SECURITY NOTES | 3247c2aa98e2SPeter Wemm+----------------+ 3248c2aa98e2SPeter Wemm 3249c2aa98e2SPeter WemmA lot of sendmail security comes down to you. Sendmail 8 is much 3250c2aa98e2SPeter Wemmmore careful about checking for security problems than previous 3251c2aa98e2SPeter Wemmversions, but there are some things that you still need to watch 3252c2aa98e2SPeter Wemmfor. In particular: 3253c2aa98e2SPeter Wemm 325494c01205SGregory Neil Shapiro* Make sure the aliases file is not writable except by trusted 3255c2aa98e2SPeter Wemm system personnel. This includes both the text and database 3256c2aa98e2SPeter Wemm version. 3257c2aa98e2SPeter Wemm 3258c2aa98e2SPeter Wemm* Make sure that other files that sendmail reads, such as the 3259c2aa98e2SPeter Wemm mailertable, are only writable by trusted system personnel. 3260c2aa98e2SPeter Wemm 3261c2aa98e2SPeter Wemm* The queue directory should not be world writable PARTICULARLY 3262c2aa98e2SPeter Wemm if your system allows "file giveaways" (that is, if a non-root 3263c2aa98e2SPeter Wemm user can chown any file they own to any other user). 3264c2aa98e2SPeter Wemm 3265c2aa98e2SPeter Wemm* If your system allows file giveaways, DO NOT create a publically 3266c2aa98e2SPeter Wemm writable directory for forward files. This will allow anyone 3267c2aa98e2SPeter Wemm to steal anyone else's e-mail. Instead, create a script that 3268c2aa98e2SPeter Wemm copies the .forward file from users' home directories once a 3269c2aa98e2SPeter Wemm night (if you want the non-NFS-mounted forward directory). 3270c2aa98e2SPeter Wemm 3271c2aa98e2SPeter Wemm* If your system allows file giveaways, you'll find that 3272c2aa98e2SPeter Wemm sendmail is much less trusting of :include: files -- in 3273c2aa98e2SPeter Wemm particular, you'll have to have /SENDMAIL/ANY/SHELL/ in 3274c2aa98e2SPeter Wemm /etc/shells before they will be trusted (that is, before 3275c2aa98e2SPeter Wemm files and programs listed in them will be honored). 3276c2aa98e2SPeter Wemm 3277c2aa98e2SPeter WemmIn general, file giveaways are a mistake -- if you can turn them 327806f25ae9SGregory Neil Shapirooff, do so. 3279c2aa98e2SPeter Wemm 3280c2aa98e2SPeter Wemm 3281c2aa98e2SPeter Wemm+--------------------------------+ 3282c2aa98e2SPeter Wemm| TWEAKING CONFIGURATION OPTIONS | 3283c2aa98e2SPeter Wemm+--------------------------------+ 3284c2aa98e2SPeter Wemm 3285c2aa98e2SPeter WemmThere are a large number of configuration options that don't normally 3286c2aa98e2SPeter Wemmneed to be changed. However, if you feel you need to tweak them, you 3287c2aa98e2SPeter Wemmcan define the following M4 variables. This list is shown in four 3288c2aa98e2SPeter Wemmcolumns: the name you define, the default value for that definition, 3289c2aa98e2SPeter Wemmthe option or macro that is affected (either Ox for an option or Dx 3290c2aa98e2SPeter Wemmfor a macro), and a brief description. Greater detail of the semantics 3291c2aa98e2SPeter Wemmcan be found in the Installation and Operations Guide. 3292c2aa98e2SPeter Wemm 3293c2aa98e2SPeter WemmSome options are likely to be deprecated in future versions -- that is, 3294c2aa98e2SPeter Wemmthe option is only included to provide back-compatibility. These are 3295c2aa98e2SPeter Wemmmarked with "*". 3296c2aa98e2SPeter Wemm 3297c2aa98e2SPeter WemmRemember that these options are M4 variables, and hence may need to 3298c2aa98e2SPeter Wemmbe quoted. In particular, arguments with commas will usually have to 3299c2aa98e2SPeter Wemmbe ``double quoted, like this phrase'' to avoid having the comma 3300c2aa98e2SPeter Wemmconfuse things. This is common for alias file definitions and for 3301c2aa98e2SPeter Wemmthe read timeout. 3302c2aa98e2SPeter Wemm 3303c2aa98e2SPeter WemmM4 Variable Name Configuration Description & [Default] 3304c2aa98e2SPeter Wemm================ ============= ======================= 3305c2aa98e2SPeter WemmconfMAILER_NAME $n macro [MAILER-DAEMON] The sender name used 3306c2aa98e2SPeter Wemm for internally generated outgoing 3307c2aa98e2SPeter Wemm messages. 3308c2aa98e2SPeter WemmconfDOMAIN_NAME $j macro If defined, sets $j. This should 3309c2aa98e2SPeter Wemm only be done if your system cannot 3310c2aa98e2SPeter Wemm determine your local domain name, 3311c2aa98e2SPeter Wemm and then it should be set to 3312c2aa98e2SPeter Wemm $w.Foo.COM, where Foo.COM is your 3313c2aa98e2SPeter Wemm domain name. 3314c2aa98e2SPeter WemmconfCF_VERSION $Z macro If defined, this is appended to the 3315c2aa98e2SPeter Wemm configuration version name. 331640266059SGregory Neil ShapiroconfLDAP_CLUSTER ${sendmailMTACluster} macro 331740266059SGregory Neil Shapiro If defined, this is the LDAP 331840266059SGregory Neil Shapiro cluster to use for LDAP searches 331940266059SGregory Neil Shapiro as described above in ``USING LDAP 332040266059SGregory Neil Shapiro FOR ALIASES, MAPS, AND CLASSES''. 3321c2aa98e2SPeter WemmconfFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an 3322c2aa98e2SPeter Wemm internally generated From: address. 3323c2aa98e2SPeter WemmconfRECEIVED_HEADER Received: 3324c2aa98e2SPeter Wemm [$?sfrom $s $.$?_($?s$|from $.$_) 332506f25ae9SGregory Neil Shapiro $.$?{auth_type}(authenticated) 3326c2aa98e2SPeter Wemm $.by $j ($v/$Z)$?r with $r$. id $i$?u 3327c2aa98e2SPeter Wemm for $u; $|; 3328c2aa98e2SPeter Wemm $.$b] 3329c2aa98e2SPeter Wemm The format of the Received: header 3330c2aa98e2SPeter Wemm in messages passed through this host. 3331c2aa98e2SPeter Wemm It is unwise to try to change this. 333206f25ae9SGregory Neil ShapiroconfCW_FILE Fw class [/etc/mail/local-host-names] Name 333306f25ae9SGregory Neil Shapiro of file used to get the local 333406f25ae9SGregory Neil Shapiro additions to class {w} (local host 333506f25ae9SGregory Neil Shapiro names). 333606f25ae9SGregory Neil ShapiroconfCT_FILE Ft class [/etc/mail/trusted-users] Name of 333706f25ae9SGregory Neil Shapiro file used to get the local additions 333806f25ae9SGregory Neil Shapiro to class {t} (trusted users). 3339c2aa98e2SPeter WemmconfCR_FILE FR class [/etc/mail/relay-domains] Name of 3340c2aa98e2SPeter Wemm file used to get the local additions 334106f25ae9SGregory Neil Shapiro to class {R} (hosts allowed to relay). 3342c2aa98e2SPeter WemmconfTRUSTED_USERS Ct class [no default] Names of users to add to 3343c2aa98e2SPeter Wemm the list of trusted users. This list 3344c2aa98e2SPeter Wemm always includes root, uucp, and daemon. 33452e43090eSPeter Wemm See also FEATURE(`use_ct_file'). 334606f25ae9SGregory Neil ShapiroconfTRUSTED_USER TrustedUser [no default] Trusted user for file 334706f25ae9SGregory Neil Shapiro ownership and starting the daemon. 334806f25ae9SGregory Neil Shapiro Not to be confused with 334906f25ae9SGregory Neil Shapiro confTRUSTED_USERS (see above). 3350c2aa98e2SPeter WemmconfSMTP_MAILER - [esmtp] The mailer name used when 3351c2aa98e2SPeter Wemm SMTP connectivity is required. 335206f25ae9SGregory Neil Shapiro One of "smtp", "smtp8", 335306f25ae9SGregory Neil Shapiro "esmtp", or "dsmtp". 3354c2aa98e2SPeter WemmconfUUCP_MAILER - [uucp-old] The mailer to be used by 3355c2aa98e2SPeter Wemm default for bang-format recipient 3356c2aa98e2SPeter Wemm addresses. See also discussion of 335706f25ae9SGregory Neil Shapiro class {U}, class {Y}, and class {Z} 335806f25ae9SGregory Neil Shapiro in the MAILER(`uucp') section. 3359c2aa98e2SPeter WemmconfLOCAL_MAILER - [local] The mailer name used when 3360c2aa98e2SPeter Wemm local connectivity is required. 3361c2aa98e2SPeter Wemm Almost always "local". 3362c2aa98e2SPeter WemmconfRELAY_MAILER - [relay] The default mailer name used 3363c2aa98e2SPeter Wemm for relaying any mail (e.g., to a 3364c2aa98e2SPeter Wemm BITNET_RELAY, a SMART_HOST, or 3365c2aa98e2SPeter Wemm whatever). This can reasonably be 3366c2aa98e2SPeter Wemm "uucp-new" if you are on a 3367c2aa98e2SPeter Wemm UUCP-connected site. 3368c2aa98e2SPeter WemmconfSEVEN_BIT_INPUT SevenBitInput [False] Force input to seven bits? 3369c2aa98e2SPeter WemmconfEIGHT_BIT_HANDLING EightBitMode [pass8] 8-bit data handling 3370c2aa98e2SPeter WemmconfALIAS_WAIT AliasWait [10m] Time to wait for alias file 3371c2aa98e2SPeter Wemm rebuild until you get bored and 3372c2aa98e2SPeter Wemm decide that the apparently pending 3373c2aa98e2SPeter Wemm rebuild failed. 3374c2aa98e2SPeter WemmconfMIN_FREE_BLOCKS MinFreeBlocks [100] Minimum number of free blocks on 3375c2aa98e2SPeter Wemm queue filesystem to accept SMTP mail. 3376c2aa98e2SPeter Wemm (Prior to 8.7 this was minfree/maxsize, 3377c2aa98e2SPeter Wemm where minfree was the number of free 3378c2aa98e2SPeter Wemm blocks and maxsize was the maximum 3379c2aa98e2SPeter Wemm message size. Use confMAX_MESSAGE_SIZE 3380c2aa98e2SPeter Wemm for the second value now.) 3381c2aa98e2SPeter WemmconfMAX_MESSAGE_SIZE MaxMessageSize [infinite] The maximum size of messages 3382c2aa98e2SPeter Wemm that will be accepted (in bytes). 3383c2aa98e2SPeter WemmconfBLANK_SUB BlankSub [.] Blank (space) substitution 3384c2aa98e2SPeter Wemm character. 3385c2aa98e2SPeter WemmconfCON_EXPENSIVE HoldExpensive [False] Avoid connecting immediately 338606f25ae9SGregory Neil Shapiro to mailers marked expensive. 3387c2aa98e2SPeter WemmconfCHECKPOINT_INTERVAL CheckpointInterval 3388c2aa98e2SPeter Wemm [10] Checkpoint queue files every N 3389c2aa98e2SPeter Wemm recipients. 3390c2aa98e2SPeter WemmconfDELIVERY_MODE DeliveryMode [background] Default delivery mode. 3391c2aa98e2SPeter WemmconfERROR_MODE ErrorMode [print] Error message mode. 3392c2aa98e2SPeter WemmconfERROR_MESSAGE ErrorHeader [undefined] Error message header/file. 3393065a643dSPeter WemmconfSAVE_FROM_LINES SaveFromLine Save extra leading From_ lines. 3394c2aa98e2SPeter WemmconfTEMP_FILE_MODE TempFileMode [0600] Temporary file mode. 3395c2aa98e2SPeter WemmconfMATCH_GECOS MatchGECOS [False] Match GECOS field. 3396c2aa98e2SPeter WemmconfMAX_HOP MaxHopCount [25] Maximum hop count. 339706f25ae9SGregory Neil ShapiroconfIGNORE_DOTS* IgnoreDots [False; always False in -bs or -bd 339806f25ae9SGregory Neil Shapiro mode] Ignore dot as terminator for 339906f25ae9SGregory Neil Shapiro incoming messages? 3400c2aa98e2SPeter WemmconfBIND_OPTS ResolverOptions [undefined] Default options for DNS 3401c2aa98e2SPeter Wemm resolver. 3402c2aa98e2SPeter WemmconfMIME_FORMAT_ERRORS* SendMimeErrors [True] Send error messages as MIME- 3403c2aa98e2SPeter Wemm encapsulated messages per RFC 1344. 3404c2aa98e2SPeter WemmconfFORWARD_PATH ForwardPath [$z/.forward.$w:$z/.forward] 3405c2aa98e2SPeter Wemm The colon-separated list of places to 3406c2aa98e2SPeter Wemm search for .forward files. N.B.: see 3407c2aa98e2SPeter Wemm the Security Notes section. 3408c2aa98e2SPeter WemmconfMCI_CACHE_SIZE ConnectionCacheSize 3409c2aa98e2SPeter Wemm [2] Size of open connection cache. 3410c2aa98e2SPeter WemmconfMCI_CACHE_TIMEOUT ConnectionCacheTimeout 3411c2aa98e2SPeter Wemm [5m] Open connection cache timeout. 3412c2aa98e2SPeter WemmconfHOST_STATUS_DIRECTORY HostStatusDirectory 3413c2aa98e2SPeter Wemm [undefined] If set, host status is kept 3414c2aa98e2SPeter Wemm on disk between sendmail runs in the 3415c2aa98e2SPeter Wemm named directory tree. This need not be 3416c2aa98e2SPeter Wemm a full pathname, in which case it is 3417c2aa98e2SPeter Wemm interpreted relative to the queue 3418c2aa98e2SPeter Wemm directory. 3419c2aa98e2SPeter WemmconfSINGLE_THREAD_DELIVERY SingleThreadDelivery 3420c2aa98e2SPeter Wemm [False] If this option and the 3421c2aa98e2SPeter Wemm HostStatusDirectory option are both 3422c2aa98e2SPeter Wemm set, single thread deliveries to other 3423c2aa98e2SPeter Wemm hosts. That is, don't allow any two 3424c2aa98e2SPeter Wemm sendmails on this host to connect 3425c2aa98e2SPeter Wemm simultaneously to any other single 3426c2aa98e2SPeter Wemm host. This can slow down delivery in 3427c2aa98e2SPeter Wemm some cases, in particular since a 3428c2aa98e2SPeter Wemm cached but otherwise idle connection 3429c2aa98e2SPeter Wemm to a host will prevent other sendmails 3430c2aa98e2SPeter Wemm from connecting to the other host. 343106f25ae9SGregory Neil ShapiroconfUSE_ERRORS_TO* UseErrorsTo [False] Use the Errors-To: header to 3432c2aa98e2SPeter Wemm deliver error messages. This should 3433c2aa98e2SPeter Wemm not be necessary because of general 3434c2aa98e2SPeter Wemm acceptance of the envelope/header 3435c2aa98e2SPeter Wemm distinction. 3436c2aa98e2SPeter WemmconfLOG_LEVEL LogLevel [9] Log level. 343706f25ae9SGregory Neil ShapiroconfME_TOO MeToo [True] Include sender in group 343806f25ae9SGregory Neil Shapiro expansions. This option is 343906f25ae9SGregory Neil Shapiro deprecated and will be removed from 344006f25ae9SGregory Neil Shapiro a future version. 3441c2aa98e2SPeter WemmconfCHECK_ALIASES CheckAliases [False] Check RHS of aliases when 3442c2aa98e2SPeter Wemm running newaliases. Since this does 3443c2aa98e2SPeter Wemm DNS lookups on every address, it can 3444c2aa98e2SPeter Wemm slow down the alias rebuild process 3445c2aa98e2SPeter Wemm considerably on large alias files. 3446c2aa98e2SPeter WemmconfOLD_STYLE_HEADERS* OldStyleHeaders [True] Assume that headers without 3447c2aa98e2SPeter Wemm special chars are old style. 3448c2aa98e2SPeter WemmconfPRIVACY_FLAGS PrivacyOptions [authwarnings] Privacy flags. 3449c2aa98e2SPeter WemmconfCOPY_ERRORS_TO PostmasterCopy [undefined] Address for additional 3450c2aa98e2SPeter Wemm copies of all error messages. 3451c2aa98e2SPeter WemmconfQUEUE_FACTOR QueueFactor [600000] Slope of queue-only function. 345240266059SGregory Neil ShapiroconfQUEUE_FILE_MODE QueueFileMode [undefined] Default permissions for 345340266059SGregory Neil Shapiro queue files (octal). If not set, 345440266059SGregory Neil Shapiro sendmail uses 0600 unless its real 345540266059SGregory Neil Shapiro and effective uid are different in 345640266059SGregory Neil Shapiro which case it uses 0644. 3457c2aa98e2SPeter WemmconfDONT_PRUNE_ROUTES DontPruneRoutes [False] Don't prune down route-addr 3458c2aa98e2SPeter Wemm syntax addresses to the minimum 3459c2aa98e2SPeter Wemm possible. 3460c2aa98e2SPeter WemmconfSAFE_QUEUE* SuperSafe [True] Commit all messages to disk 3461c2aa98e2SPeter Wemm before forking. 3462c2aa98e2SPeter WemmconfTO_INITIAL Timeout.initial [5m] The timeout waiting for a response 3463c2aa98e2SPeter Wemm on the initial connect. 3464c2aa98e2SPeter WemmconfTO_CONNECT Timeout.connect [0] The timeout waiting for an initial 3465c2aa98e2SPeter Wemm connect() to complete. This can only 3466c2aa98e2SPeter Wemm shorten connection timeouts; the kernel 3467c2aa98e2SPeter Wemm silently enforces an absolute maximum 3468c2aa98e2SPeter Wemm (which varies depending on the system). 3469c2aa98e2SPeter WemmconfTO_ICONNECT Timeout.iconnect 3470c2aa98e2SPeter Wemm [undefined] Like Timeout.connect, but 3471c2aa98e2SPeter Wemm applies only to the very first attempt 3472c2aa98e2SPeter Wemm to connect to a host in a message. 3473c2aa98e2SPeter Wemm This allows a single very fast pass 3474c2aa98e2SPeter Wemm followed by more careful delivery 3475c2aa98e2SPeter Wemm attempts in the future. 347640266059SGregory Neil ShapiroconfTO_ACONNECT Timeout.aconnect 347740266059SGregory Neil Shapiro [0] The overall timeout waiting for 347840266059SGregory Neil Shapiro all connection for a single delivery 347940266059SGregory Neil Shapiro attempt to succeed. If 0, no overall 348040266059SGregory Neil Shapiro limit is applied. 3481c2aa98e2SPeter WemmconfTO_HELO Timeout.helo [5m] The timeout waiting for a response 3482c2aa98e2SPeter Wemm to a HELO or EHLO command. 3483c2aa98e2SPeter WemmconfTO_MAIL Timeout.mail [10m] The timeout waiting for a 3484c2aa98e2SPeter Wemm response to the MAIL command. 3485c2aa98e2SPeter WemmconfTO_RCPT Timeout.rcpt [1h] The timeout waiting for a response 3486c2aa98e2SPeter Wemm to the RCPT command. 3487c2aa98e2SPeter WemmconfTO_DATAINIT Timeout.datainit 3488c2aa98e2SPeter Wemm [5m] The timeout waiting for a 354 3489c2aa98e2SPeter Wemm response from the DATA command. 3490c2aa98e2SPeter WemmconfTO_DATABLOCK Timeout.datablock 3491c2aa98e2SPeter Wemm [1h] The timeout waiting for a block 3492c2aa98e2SPeter Wemm during DATA phase. 3493c2aa98e2SPeter WemmconfTO_DATAFINAL Timeout.datafinal 3494c2aa98e2SPeter Wemm [1h] The timeout waiting for a response 3495c2aa98e2SPeter Wemm to the final "." that terminates a 3496c2aa98e2SPeter Wemm message. 3497c2aa98e2SPeter WemmconfTO_RSET Timeout.rset [5m] The timeout waiting for a response 3498c2aa98e2SPeter Wemm to the RSET command. 3499c2aa98e2SPeter WemmconfTO_QUIT Timeout.quit [2m] The timeout waiting for a response 3500c2aa98e2SPeter Wemm to the QUIT command. 3501c2aa98e2SPeter WemmconfTO_MISC Timeout.misc [2m] The timeout waiting for a response 3502c2aa98e2SPeter Wemm to other SMTP commands. 350306f25ae9SGregory Neil ShapiroconfTO_COMMAND Timeout.command [1h] In server SMTP, the timeout 350406f25ae9SGregory Neil Shapiro waiting for a command to be issued. 350506f25ae9SGregory Neil ShapiroconfTO_IDENT Timeout.ident [5s] The timeout waiting for a 350606f25ae9SGregory Neil Shapiro response to an IDENT query. 3507c2aa98e2SPeter WemmconfTO_FILEOPEN Timeout.fileopen 3508c2aa98e2SPeter Wemm [60s] The timeout waiting for a file 3509c2aa98e2SPeter Wemm (e.g., :include: file) to be opened. 351040266059SGregory Neil ShapiroconfTO_LHLO Timeout.lhlo [2m] The timeout waiting for a response 351140266059SGregory Neil Shapiro to an LMTP LHLO command. 351240266059SGregory Neil ShapiroconfTO_AUTH Timeout.auth [10m] The timeout waiting for a 351340266059SGregory Neil Shapiro response in an AUTH dialogue. 351440266059SGregory Neil ShapiroconfTO_STARTTLS Timeout.starttls 351540266059SGregory Neil Shapiro [1h] The timeout waiting for a 351640266059SGregory Neil Shapiro response to an SMTP STARTTLS command. 351706f25ae9SGregory Neil ShapiroconfTO_CONTROL Timeout.control 351806f25ae9SGregory Neil Shapiro [2m] The timeout for a complete 351906f25ae9SGregory Neil Shapiro control socket transaction to complete. 3520c2aa98e2SPeter WemmconfTO_QUEUERETURN Timeout.queuereturn 3521c2aa98e2SPeter Wemm [5d] The timeout before a message is 3522c2aa98e2SPeter Wemm returned as undeliverable. 3523c2aa98e2SPeter WemmconfTO_QUEUERETURN_NORMAL 3524c2aa98e2SPeter Wemm Timeout.queuereturn.normal 3525c2aa98e2SPeter Wemm [undefined] As above, for normal 3526c2aa98e2SPeter Wemm priority messages. 3527c2aa98e2SPeter WemmconfTO_QUEUERETURN_URGENT 3528c2aa98e2SPeter Wemm Timeout.queuereturn.urgent 3529c2aa98e2SPeter Wemm [undefined] As above, for urgent 3530c2aa98e2SPeter Wemm priority messages. 3531c2aa98e2SPeter WemmconfTO_QUEUERETURN_NONURGENT 3532c2aa98e2SPeter Wemm Timeout.queuereturn.non-urgent 3533c2aa98e2SPeter Wemm [undefined] As above, for non-urgent 3534c2aa98e2SPeter Wemm (low) priority messages. 3535c2aa98e2SPeter WemmconfTO_QUEUEWARN Timeout.queuewarn 3536c2aa98e2SPeter Wemm [4h] The timeout before a warning 3537c2aa98e2SPeter Wemm message is sent to the sender telling 353806f25ae9SGregory Neil Shapiro them that the message has been 353906f25ae9SGregory Neil Shapiro deferred. 3540c2aa98e2SPeter WemmconfTO_QUEUEWARN_NORMAL Timeout.queuewarn.normal 3541c2aa98e2SPeter Wemm [undefined] As above, for normal 3542c2aa98e2SPeter Wemm priority messages. 3543c2aa98e2SPeter WemmconfTO_QUEUEWARN_URGENT Timeout.queuewarn.urgent 3544c2aa98e2SPeter Wemm [undefined] As above, for urgent 3545c2aa98e2SPeter Wemm priority messages. 3546c2aa98e2SPeter WemmconfTO_QUEUEWARN_NONURGENT 3547c2aa98e2SPeter Wemm Timeout.queuewarn.non-urgent 3548c2aa98e2SPeter Wemm [undefined] As above, for non-urgent 3549c2aa98e2SPeter Wemm (low) priority messages. 3550c2aa98e2SPeter WemmconfTO_HOSTSTATUS Timeout.hoststatus 3551c2aa98e2SPeter Wemm [30m] How long information about host 3552c2aa98e2SPeter Wemm statuses will be maintained before it 3553c2aa98e2SPeter Wemm is considered stale and the host should 3554c2aa98e2SPeter Wemm be retried. This applies both within 3555c2aa98e2SPeter Wemm a single queue run and to persistent 3556c2aa98e2SPeter Wemm information (see below). 355706f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS Timeout.resolver.retrans 355806f25ae9SGregory Neil Shapiro [varies] Sets the resolver's 355994c01205SGregory Neil Shapiro retransmission time interval (in 356006f25ae9SGregory Neil Shapiro seconds). Sets both 356106f25ae9SGregory Neil Shapiro Timeout.resolver.retrans.first and 356206f25ae9SGregory Neil Shapiro Timeout.resolver.retrans.normal. 356306f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS_FIRST Timeout.resolver.retrans.first 356406f25ae9SGregory Neil Shapiro [varies] Sets the resolver's 356594c01205SGregory Neil Shapiro retransmission time interval (in 356606f25ae9SGregory Neil Shapiro seconds) for the first attempt to 356706f25ae9SGregory Neil Shapiro deliver a message. 356806f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRANS_NORMAL Timeout.resolver.retrans.normal 356906f25ae9SGregory Neil Shapiro [varies] Sets the resolver's 357094c01205SGregory Neil Shapiro retransmission time interval (in 357106f25ae9SGregory Neil Shapiro seconds) for all resolver lookups 357206f25ae9SGregory Neil Shapiro except the first delivery attempt. 357306f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY Timeout.resolver.retry 357406f25ae9SGregory Neil Shapiro [varies] Sets the number of times 357506f25ae9SGregory Neil Shapiro to retransmit a resolver query. 357606f25ae9SGregory Neil Shapiro Sets both 357706f25ae9SGregory Neil Shapiro Timeout.resolver.retry.first and 357806f25ae9SGregory Neil Shapiro Timeout.resolver.retry.normal. 357906f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY_FIRST Timeout.resolver.retry.first 358006f25ae9SGregory Neil Shapiro [varies] Sets the number of times 358106f25ae9SGregory Neil Shapiro to retransmit a resolver query for 358206f25ae9SGregory Neil Shapiro the first attempt to deliver a 358306f25ae9SGregory Neil Shapiro message. 358406f25ae9SGregory Neil ShapiroconfTO_RESOLVER_RETRY_NORMAL Timeout.resolver.retry.normal 358506f25ae9SGregory Neil Shapiro [varies] Sets the number of times 358606f25ae9SGregory Neil Shapiro to retransmit a resolver query for 358706f25ae9SGregory Neil Shapiro all resolver lookups except the 358806f25ae9SGregory Neil Shapiro first delivery attempt. 3589c2aa98e2SPeter WemmconfTIME_ZONE TimeZoneSpec [USE_SYSTEM] Time zone info -- can be 3590c2aa98e2SPeter Wemm USE_SYSTEM to use the system's idea, 3591c2aa98e2SPeter Wemm USE_TZ to use the user's TZ envariable, 3592c2aa98e2SPeter Wemm or something else to force that value. 3593c2aa98e2SPeter WemmconfDEF_USER_ID DefaultUser [1:1] Default user id. 3594c2aa98e2SPeter WemmconfUSERDB_SPEC UserDatabaseSpec 359506f25ae9SGregory Neil Shapiro [undefined] User database 359606f25ae9SGregory Neil Shapiro specification. 3597c2aa98e2SPeter WemmconfFALLBACK_MX FallbackMXhost [undefined] Fallback MX host. 359806f25ae9SGregory Neil ShapiroconfTRY_NULL_MX_LIST TryNullMXList [False] If this host is the best MX 359906f25ae9SGregory Neil Shapiro for a host and other arrangements 360006f25ae9SGregory Neil Shapiro haven't been made, try connecting 360106f25ae9SGregory Neil Shapiro to the host directly; normally this 360206f25ae9SGregory Neil Shapiro would be a config error. 360306f25ae9SGregory Neil ShapiroconfQUEUE_LA QueueLA [varies] Load average at which 360406f25ae9SGregory Neil Shapiro queue-only function kicks in. 360506f25ae9SGregory Neil Shapiro Default values is (8 * numproc) 360606f25ae9SGregory Neil Shapiro where numproc is the number of 360706f25ae9SGregory Neil Shapiro processors online (if that can be 360806f25ae9SGregory Neil Shapiro determined). 360906f25ae9SGregory Neil ShapiroconfREFUSE_LA RefuseLA [varies] Load average at which 361006f25ae9SGregory Neil Shapiro incoming SMTP connections are 361106f25ae9SGregory Neil Shapiro refused. Default values is (12 * 361206f25ae9SGregory Neil Shapiro numproc) where numproc is the 361306f25ae9SGregory Neil Shapiro number of processors online (if 361406f25ae9SGregory Neil Shapiro that can be determined). 361540266059SGregory Neil ShapiroconfDELAY_LA DelayLA [0] Load average at which sendmail 361640266059SGregory Neil Shapiro will sleep for one second on most 361740266059SGregory Neil Shapiro SMTP commands and before accepting 361840266059SGregory Neil Shapiro connections. 0 means no limit. 361906f25ae9SGregory Neil ShapiroconfMAX_ALIAS_RECURSION MaxAliasRecursion 362006f25ae9SGregory Neil Shapiro [10] Maximum depth of alias recursion. 3621c2aa98e2SPeter WemmconfMAX_DAEMON_CHILDREN MaxDaemonChildren 3622c2aa98e2SPeter Wemm [undefined] The maximum number of 3623c2aa98e2SPeter Wemm children the daemon will permit. After 3624c2aa98e2SPeter Wemm this number, connections will be 3625c2aa98e2SPeter Wemm rejected. If not set or <= 0, there is 3626c2aa98e2SPeter Wemm no limit. 362706f25ae9SGregory Neil ShapiroconfMAX_HEADERS_LENGTH MaxHeadersLength 3628193538b7SGregory Neil Shapiro [32768] Maximum length of the sum 362906f25ae9SGregory Neil Shapiro of all headers. 363006f25ae9SGregory Neil ShapiroconfMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength 363106f25ae9SGregory Neil Shapiro [undefined] Maximum length of 363206f25ae9SGregory Neil Shapiro certain MIME header field values. 3633c2aa98e2SPeter WemmconfCONNECTION_RATE_THROTTLE ConnectionRateThrottle 3634c2aa98e2SPeter Wemm [undefined] The maximum number of 363540266059SGregory Neil Shapiro connections permitted per second per 363640266059SGregory Neil Shapiro daemon. After this many connections 363740266059SGregory Neil Shapiro are accepted, further connections 363840266059SGregory Neil Shapiro will be delayed. If not set or <= 0, 363940266059SGregory Neil Shapiro there is no limit. 3640c2aa98e2SPeter WemmconfWORK_RECIPIENT_FACTOR 3641c2aa98e2SPeter Wemm RecipientFactor [30000] Cost of each recipient. 364206f25ae9SGregory Neil ShapiroconfSEPARATE_PROC ForkEachJob [False] Run all deliveries in a 364306f25ae9SGregory Neil Shapiro separate process. 3644c2aa98e2SPeter WemmconfWORK_CLASS_FACTOR ClassFactor [1800] Priority multiplier for class. 3645c2aa98e2SPeter WemmconfWORK_TIME_FACTOR RetryFactor [90000] Cost of each delivery attempt. 3646c2aa98e2SPeter WemmconfQUEUE_SORT_ORDER QueueSortOrder [Priority] Queue sort algorithm: 364740266059SGregory Neil Shapiro Priority, Host, Filename, Random, 364840266059SGregory Neil Shapiro Modification, or Time. 3649c2aa98e2SPeter WemmconfMIN_QUEUE_AGE MinQueueAge [0] The minimum amount of time a job 3650c2aa98e2SPeter Wemm must sit in the queue between queue 3651c2aa98e2SPeter Wemm runs. This allows you to set the 3652c2aa98e2SPeter Wemm queue run interval low for better 3653c2aa98e2SPeter Wemm responsiveness without trying all 3654c2aa98e2SPeter Wemm jobs in each run. 3655c2aa98e2SPeter WemmconfDEF_CHAR_SET DefaultCharSet [unknown-8bit] When converting 3656c2aa98e2SPeter Wemm unlabeled 8 bit input to MIME, the 3657c2aa98e2SPeter Wemm character set to use by default. 3658c2aa98e2SPeter WemmconfSERVICE_SWITCH_FILE ServiceSwitchFile 365906f25ae9SGregory Neil Shapiro [/etc/mail/service.switch] The file 366006f25ae9SGregory Neil Shapiro to use for the service switch on 366106f25ae9SGregory Neil Shapiro systems that do not have a 366206f25ae9SGregory Neil Shapiro system-defined switch. 3663c2aa98e2SPeter WemmconfHOSTS_FILE HostsFile [/etc/hosts] The file to use when doing 3664c2aa98e2SPeter Wemm "file" type access of hosts names. 3665c2aa98e2SPeter WemmconfDIAL_DELAY DialDelay [0s] If a connection fails, wait this 3666c2aa98e2SPeter Wemm long and try again. Zero means "don't 3667c2aa98e2SPeter Wemm retry". This is to allow "dial on 3668c2aa98e2SPeter Wemm demand" connections to have enough time 3669c2aa98e2SPeter Wemm to complete a connection. 3670c2aa98e2SPeter WemmconfNO_RCPT_ACTION NoRecipientAction 3671c2aa98e2SPeter Wemm [none] What to do if there are no legal 3672c2aa98e2SPeter Wemm recipient fields (To:, Cc: or Bcc:) 3673c2aa98e2SPeter Wemm in the message. Legal values can 3674c2aa98e2SPeter Wemm be "none" to just leave the 3675c2aa98e2SPeter Wemm nonconforming message as is, "add-to" 3676c2aa98e2SPeter Wemm to add a To: header with all the 3677c2aa98e2SPeter Wemm known recipients (which may expose 3678c2aa98e2SPeter Wemm blind recipients), "add-apparently-to" 3679c2aa98e2SPeter Wemm to do the same but use Apparently-To: 368040266059SGregory Neil Shapiro instead of To: (strongly discouraged 368140266059SGregory Neil Shapiro in accordance with IETF standards), 368240266059SGregory Neil Shapiro "add-bcc" to add an empty Bcc: 368340266059SGregory Neil Shapiro header, or "add-to-undisclosed" to 368440266059SGregory Neil Shapiro add the header 3685c2aa98e2SPeter Wemm ``To: undisclosed-recipients:;''. 3686c2aa98e2SPeter WemmconfSAFE_FILE_ENV SafeFileEnvironment 3687c2aa98e2SPeter Wemm [undefined] If set, sendmail will do a 3688c2aa98e2SPeter Wemm chroot() into this directory before 3689c2aa98e2SPeter Wemm writing files. 3690c2aa98e2SPeter WemmconfCOLON_OK_IN_ADDR ColonOkInAddr [True unless Configuration Level > 6] 3691c2aa98e2SPeter Wemm If set, colons are treated as a regular 3692c2aa98e2SPeter Wemm character in addresses. If not set, 3693c2aa98e2SPeter Wemm they are treated as the introducer to 3694c2aa98e2SPeter Wemm the RFC 822 "group" syntax. Colons are 3695c2aa98e2SPeter Wemm handled properly in route-addrs. This 3696c2aa98e2SPeter Wemm option defaults on for V5 and lower 3697c2aa98e2SPeter Wemm configuration files. 3698c2aa98e2SPeter WemmconfMAX_QUEUE_RUN_SIZE MaxQueueRunSize [0] If set, limit the maximum size of 3699c2aa98e2SPeter Wemm any given queue run to this number of 3700c2aa98e2SPeter Wemm entries. Essentially, this will stop 370106f25ae9SGregory Neil Shapiro reading each queue directory after this 3702c2aa98e2SPeter Wemm number of entries are reached; it does 3703c2aa98e2SPeter Wemm _not_ pick the highest priority jobs, 3704c2aa98e2SPeter Wemm so this should be as large as your 3705c2aa98e2SPeter Wemm system can tolerate. If not set, there 3706c2aa98e2SPeter Wemm is no limit. 370740266059SGregory Neil ShapiroconfMAX_QUEUE_CHILDREN MaxQueueChildren 370840266059SGregory Neil Shapiro [undefined] Limits the maximum number 370940266059SGregory Neil Shapiro of concurrent queue runners active. 371040266059SGregory Neil Shapiro This is to keep system resources used 371140266059SGregory Neil Shapiro within a reasonable limit. Relates to 371240266059SGregory Neil Shapiro Queue Groups and ForkAllJobs. 371340266059SGregory Neil ShapiroconfMAX_RUNNERS_PER_QUEUE MaxRunnersPerQueue 371440266059SGregory Neil Shapiro [1] Only active when MaxQueueChildren 371540266059SGregory Neil Shapiro defined. Controls the maximum number 371640266059SGregory Neil Shapiro of queue runners (aka queue children) 371740266059SGregory Neil Shapiro active at the same time in a work 371840266059SGregory Neil Shapiro group. See also MaxQueueChildren. 3719c2aa98e2SPeter WemmconfDONT_EXPAND_CNAMES DontExpandCnames 3720c2aa98e2SPeter Wemm [False] If set, $[ ... $] lookups that 3721c2aa98e2SPeter Wemm do DNS based lookups do not expand 3722c2aa98e2SPeter Wemm CNAME records. This currently violates 3723c2aa98e2SPeter Wemm the published standards, but the IETF 3724c2aa98e2SPeter Wemm seems to be moving toward legalizing 3725c2aa98e2SPeter Wemm this. For example, if "FTP.Foo.ORG" 3726c2aa98e2SPeter Wemm is a CNAME for "Cruft.Foo.ORG", then 3727c2aa98e2SPeter Wemm with this option set a lookup of 3728c2aa98e2SPeter Wemm "FTP" will return "FTP.Foo.ORG"; if 3729c2aa98e2SPeter Wemm clear it returns "Cruft.FOO.ORG". N.B. 3730c2aa98e2SPeter Wemm you may not see any effect until your 3731c2aa98e2SPeter Wemm downstream neighbors stop doing CNAME 3732c2aa98e2SPeter Wemm lookups as well. 3733c2aa98e2SPeter WemmconfFROM_LINE UnixFromLine [From $g $d] The From_ line used 3734c2aa98e2SPeter Wemm when sending to files or programs. 3735c2aa98e2SPeter WemmconfSINGLE_LINE_FROM_HEADER SingleLineFromHeader 3736c2aa98e2SPeter Wemm [False] From: lines that have 3737c2aa98e2SPeter Wemm embedded newlines are unwrapped 3738c2aa98e2SPeter Wemm onto one line. 3739c2aa98e2SPeter WemmconfALLOW_BOGUS_HELO AllowBogusHELO [False] Allow HELO SMTP command that 3740c2aa98e2SPeter Wemm does not include a host name. 3741c2aa98e2SPeter WemmconfMUST_QUOTE_CHARS MustQuoteChars [.'] Characters to be quoted in a full 3742c2aa98e2SPeter Wemm name phrase (@,;:\()[] are automatic). 3743c2aa98e2SPeter WemmconfOPERATORS OperatorChars [.:%@!^/[]+] Address operator 3744c2aa98e2SPeter Wemm characters. 3745c2aa98e2SPeter WemmconfSMTP_LOGIN_MSG SmtpGreetingMessage 3746c2aa98e2SPeter Wemm [$j Sendmail $v/$Z; $b] 3747c2aa98e2SPeter Wemm The initial (spontaneous) SMTP 3748c2aa98e2SPeter Wemm greeting message. The word "ESMTP" 3749c2aa98e2SPeter Wemm will be inserted between the first and 3750c2aa98e2SPeter Wemm second words to convince other 3751c2aa98e2SPeter Wemm sendmails to try to speak ESMTP. 3752c2aa98e2SPeter WemmconfDONT_INIT_GROUPS DontInitGroups [False] If set, the initgroups(3) 3753c2aa98e2SPeter Wemm routine will never be invoked. You 3754c2aa98e2SPeter Wemm might want to do this if you are 3755c2aa98e2SPeter Wemm running NIS and you have a large group 3756c2aa98e2SPeter Wemm map, since this call does a sequential 3757c2aa98e2SPeter Wemm scan of the map; in a large site this 3758c2aa98e2SPeter Wemm can cause your ypserv to run 3759c2aa98e2SPeter Wemm essentially full time. If you set 3760c2aa98e2SPeter Wemm this, agents run on behalf of users 3761c2aa98e2SPeter Wemm will only have their primary 3762c2aa98e2SPeter Wemm (/etc/passwd) group permissions. 3763c2aa98e2SPeter WemmconfUNSAFE_GROUP_WRITES UnsafeGroupWrites 3764c2aa98e2SPeter Wemm [False] If set, group-writable 3765c2aa98e2SPeter Wemm :include: and .forward files are 3766c2aa98e2SPeter Wemm considered "unsafe", that is, programs 3767c2aa98e2SPeter Wemm and files cannot be directly referenced 3768c2aa98e2SPeter Wemm from such files. World-writable files 3769c2aa98e2SPeter Wemm are always considered unsafe. 377006f25ae9SGregory Neil ShapiroconfCONNECT_ONLY_TO ConnectOnlyTo [undefined] override connection 377106f25ae9SGregory Neil Shapiro address (for testing). 377206f25ae9SGregory Neil ShapiroconfCONTROL_SOCKET_NAME ControlSocketName 377306f25ae9SGregory Neil Shapiro [undefined] Control socket for daemon 377406f25ae9SGregory Neil Shapiro management. 3775c2aa98e2SPeter WemmconfDOUBLE_BOUNCE_ADDRESS DoubleBounceAddress 3776c2aa98e2SPeter Wemm [postmaster] If an error occurs when 3777c2aa98e2SPeter Wemm sending an error message, send that 3778c2aa98e2SPeter Wemm "double bounce" error message to this 377940266059SGregory Neil Shapiro address. If it expands to an empty 378040266059SGregory Neil Shapiro string, double bounces are dropped. 378106f25ae9SGregory Neil ShapiroconfDEAD_LETTER_DROP DeadLetterDrop [undefined] Filename to save bounce 378206f25ae9SGregory Neil Shapiro messages which could not be returned 378306f25ae9SGregory Neil Shapiro to the user or sent to postmaster. 378406f25ae9SGregory Neil Shapiro If not set, the queue file will 378506f25ae9SGregory Neil Shapiro be renamed. 378606f25ae9SGregory Neil ShapiroconfRRT_IMPLIES_DSN RrtImpliesDsn [False] Return-Receipt-To: header 378706f25ae9SGregory Neil Shapiro implies DSN request. 3788c2aa98e2SPeter WemmconfRUN_AS_USER RunAsUser [undefined] If set, become this user 3789c2aa98e2SPeter Wemm when reading and delivering mail. 3790c2aa98e2SPeter Wemm Causes all file reads (e.g., .forward 3791c2aa98e2SPeter Wemm and :include: files) to be done as 3792c2aa98e2SPeter Wemm this user. Also, all programs will 3793c2aa98e2SPeter Wemm be run as this user, and all output 3794c2aa98e2SPeter Wemm files will be written as this user. 3795c2aa98e2SPeter Wemm Intended for use only on firewalls 3796c2aa98e2SPeter Wemm where users do not have accounts. 3797c2aa98e2SPeter WemmconfMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage 3798c2aa98e2SPeter Wemm [infinite] If set, allow no more than 3799c2aa98e2SPeter Wemm the specified number of recipients in 3800c2aa98e2SPeter Wemm an SMTP envelope. Further recipients 3801c2aa98e2SPeter Wemm receive a 452 error code (i.e., they 3802c2aa98e2SPeter Wemm are deferred for the next delivery 3803c2aa98e2SPeter Wemm attempt). 380440266059SGregory Neil ShapiroconfBAD_RCPT_THROTTLE BadRcptThrottle [infinite] If set and more than the 380540266059SGregory Neil Shapiro specified number of recipients in an 380640266059SGregory Neil Shapiro envelope are rejected, sleep for one 380740266059SGregory Neil Shapiro second after each rejected RCPT 380840266059SGregory Neil Shapiro command. 3809c2aa98e2SPeter WemmconfDONT_PROBE_INTERFACES DontProbeInterfaces 3810c2aa98e2SPeter Wemm [False] If set, sendmail will _not_ 3811c2aa98e2SPeter Wemm insert the names and addresses of any 381206f25ae9SGregory Neil Shapiro local interfaces into class {w} 3813c2aa98e2SPeter Wemm (list of known "equivalent" addresses). 3814c2aa98e2SPeter Wemm If you set this, you must also include 3815c2aa98e2SPeter Wemm some support for these addresses (e.g., 3816c2aa98e2SPeter Wemm in a mailertable entry) -- otherwise, 3817c2aa98e2SPeter Wemm mail to addresses in this list will 3818c2aa98e2SPeter Wemm bounce with a configuration error. 381940266059SGregory Neil Shapiro If set to "loopback" (without 382040266059SGregory Neil Shapiro quotes), sendmail will skip 382140266059SGregory Neil Shapiro loopback interfaces (e.g., "lo0"). 382206f25ae9SGregory Neil ShapiroconfPID_FILE PidFile [system dependent] Location of pid 382306f25ae9SGregory Neil Shapiro file. 382406f25ae9SGregory Neil ShapiroconfPROCESS_TITLE_PREFIX ProcessTitlePrefix 382506f25ae9SGregory Neil Shapiro [undefined] Prefix string for the 382606f25ae9SGregory Neil Shapiro process title shown on 'ps' listings. 3827c2aa98e2SPeter WemmconfDONT_BLAME_SENDMAIL DontBlameSendmail 3828c2aa98e2SPeter Wemm [safe] Override sendmail's file 3829c2aa98e2SPeter Wemm safety checks. This will definitely 3830c2aa98e2SPeter Wemm compromise system security and should 3831c2aa98e2SPeter Wemm not be used unless absolutely 3832c2aa98e2SPeter Wemm necessary. 3833c2aa98e2SPeter WemmconfREJECT_MSG - [550 Access denied] The message 3834c2aa98e2SPeter Wemm given if the access database contains 3835c2aa98e2SPeter Wemm REJECT in the value portion. 383640266059SGregory Neil ShapiroconfRELAY_MSG - [550 Relaying denied] The message 383740266059SGregory Neil Shapiro given if an unauthorized relaying 383840266059SGregory Neil Shapiro attempt is rejected. 383906f25ae9SGregory Neil ShapiroconfDF_BUFFER_SIZE DataFileBufferSize 384006f25ae9SGregory Neil Shapiro [4096] The maximum size of a 384106f25ae9SGregory Neil Shapiro memory-buffered data (df) file 384206f25ae9SGregory Neil Shapiro before a disk-based file is used. 384306f25ae9SGregory Neil ShapiroconfXF_BUFFER_SIZE XScriptFileBufferSize 384406f25ae9SGregory Neil Shapiro [4096] The maximum size of a 384506f25ae9SGregory Neil Shapiro memory-buffered transcript (xf) 384606f25ae9SGregory Neil Shapiro file before a disk-based file is 384706f25ae9SGregory Neil Shapiro used. 384806f25ae9SGregory Neil ShapiroconfAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5 384906f25ae9SGregory Neil Shapiro CRAM-MD5] List of authentication 385006f25ae9SGregory Neil Shapiro mechanisms for AUTH (separated by 385106f25ae9SGregory Neil Shapiro spaces). The advertised list of 385206f25ae9SGregory Neil Shapiro authentication mechanisms will be the 385306f25ae9SGregory Neil Shapiro intersection of this list and the list 385406f25ae9SGregory Neil Shapiro of available mechanisms as determined 385506f25ae9SGregory Neil Shapiro by the CYRUS SASL library. 3856602a2b1bSGregory Neil ShapiroconfDEF_AUTH_INFO DefaultAuthInfo [undefined] Name of file that contains 385706f25ae9SGregory Neil Shapiro authentication information for 385840266059SGregory Neil Shapiro outgoing connections. This file must 385940266059SGregory Neil Shapiro contain the user id, the authorization 386040266059SGregory Neil Shapiro id, the password (plain text), the 386140266059SGregory Neil Shapiro realm to use, and the list of 386240266059SGregory Neil Shapiro mechanisms to try, each on a separate 386340266059SGregory Neil Shapiro line and must be readable by root (or 386440266059SGregory Neil Shapiro the trusted user) only. If no realm 386540266059SGregory Neil Shapiro is specified, $j is used. If no 386640266059SGregory Neil Shapiro mechanisms are given in the file, 386740266059SGregory Neil Shapiro AuthMechanisms is used. Notice: this 386840266059SGregory Neil Shapiro option is deprecated and will be 386940266059SGregory Neil Shapiro removed in future versions; it doesn't 387040266059SGregory Neil Shapiro work for the MSP since it can't read 387140266059SGregory Neil Shapiro the file. Use the authinfo ruleset 387240266059SGregory Neil Shapiro instead. See also the section SMTP 387340266059SGregory Neil Shapiro AUTHENTICATION. 387440266059SGregory Neil ShapiroconfAUTH_OPTIONS AuthOptions [undefined] If this option is 'A' 387506f25ae9SGregory Neil Shapiro then the AUTH= parameter for the 387606f25ae9SGregory Neil Shapiro MAIL FROM command is only issued 387706f25ae9SGregory Neil Shapiro when authentication succeeded. 387840266059SGregory Neil Shapiro Other values (which should be listed 387940266059SGregory Neil Shapiro one after the other without any 388040266059SGregory Neil Shapiro intervening characters except for 388140266059SGregory Neil Shapiro space or comma) are a, c, d, f, p, 388240266059SGregory Neil Shapiro and y. See doc/op/op.me for 388340266059SGregory Neil Shapiro details. 388440266059SGregory Neil ShapiroconfAUTH_MAX_BITS AuthMaxBits [INT_MAX] Limit the maximum encryption 388540266059SGregory Neil Shapiro strength for the security layer in 388640266059SGregory Neil Shapiro SMTP AUTH (SASL). Default is 388740266059SGregory Neil Shapiro essentially unlimited. 388840266059SGregory Neil ShapiroconfTLS_SRV_OPTIONS TLSSrvOptions If this option is 'V' no client 388940266059SGregory Neil Shapiro verification is performed, i.e., 389040266059SGregory Neil Shapiro the server doesn't ask for a 389140266059SGregory Neil Shapiro certificate. 389206f25ae9SGregory Neil ShapiroconfLDAP_DEFAULT_SPEC LDAPDefaultSpec [undefined] Default map 389306f25ae9SGregory Neil Shapiro specification for LDAP maps. The 389406f25ae9SGregory Neil Shapiro value should only contain LDAP 389506f25ae9SGregory Neil Shapiro specific settings such as "-h host 389606f25ae9SGregory Neil Shapiro -p port -d bindDN", etc. The 389706f25ae9SGregory Neil Shapiro settings will be used for all LDAP 389806f25ae9SGregory Neil Shapiro maps unless they are specified in 389906f25ae9SGregory Neil Shapiro the individual map specification 390006f25ae9SGregory Neil Shapiro ('K' command). 390106f25ae9SGregory Neil ShapiroconfCACERT_PATH CACERTPath [undefined] Path to directory 390206f25ae9SGregory Neil Shapiro with certs of CAs. 390306f25ae9SGregory Neil ShapiroconfCACERT CACERTFile [undefined] File containing one CA 390406f25ae9SGregory Neil Shapiro cert. 390506f25ae9SGregory Neil ShapiroconfSERVER_CERT ServerCertFile [undefined] File containing the 390606f25ae9SGregory Neil Shapiro cert of the server, i.e., this cert 390706f25ae9SGregory Neil Shapiro is used when sendmail acts as 390806f25ae9SGregory Neil Shapiro server. 390906f25ae9SGregory Neil ShapiroconfSERVER_KEY ServerKeyFile [undefined] File containing the 391006f25ae9SGregory Neil Shapiro private key belonging to the server 391106f25ae9SGregory Neil Shapiro cert. 391206f25ae9SGregory Neil ShapiroconfCLIENT_CERT ClientCertFile [undefined] File containing the 391306f25ae9SGregory Neil Shapiro cert of the client, i.e., this cert 391406f25ae9SGregory Neil Shapiro is used when sendmail acts as 391506f25ae9SGregory Neil Shapiro client. 391606f25ae9SGregory Neil ShapiroconfCLIENT_KEY ClientKeyFile [undefined] File containing the 391706f25ae9SGregory Neil Shapiro private key belonging to the client 391806f25ae9SGregory Neil Shapiro cert. 391906f25ae9SGregory Neil ShapiroconfDH_PARAMETERS DHParameters [undefined] File containing the 392006f25ae9SGregory Neil Shapiro DH parameters. 392106f25ae9SGregory Neil ShapiroconfRAND_FILE RandFile [undefined] File containing random 392242e5d165SGregory Neil Shapiro data (use prefix file:) or the 392342e5d165SGregory Neil Shapiro name of the UNIX socket if EGD is 392442e5d165SGregory Neil Shapiro used (use prefix egd:). STARTTLS 392542e5d165SGregory Neil Shapiro requires this option if the compile 392642e5d165SGregory Neil Shapiro flag HASURANDOM is not set (see 392706f25ae9SGregory Neil Shapiro sendmail/README). 392840266059SGregory Neil ShapiroconfNICE_QUEUE_RUN NiceQueueRun [undefined] If set, the priority of 392940266059SGregory Neil Shapiro queue runners is set the given value 393040266059SGregory Neil Shapiro (nice(3)). 393140266059SGregory Neil ShapiroconfDIRECT_SUBMISSION_MODIFIERS DirectSubmissionModifiers 393240266059SGregory Neil Shapiro [undefined] Defines {daemon_flags} 393340266059SGregory Neil Shapiro for direct submissions. 393440266059SGregory Neil ShapiroconfUSE_MSP UseMSP [false] Use as mail submission 393540266059SGregory Neil Shapiro program, see sendmail/SECURITY. 393640266059SGregory Neil ShapiroconfDELIVER_BY_MIN DeliverByMin [0] Minimum time for Deliver By 393740266059SGregory Neil Shapiro SMTP Service Extension (RFC 2852). 393840266059SGregory Neil ShapiroconfSHARED_MEMORY_KEY SharedMemoryKey [0] Key for shared memory. 393940266059SGregory Neil ShapiroconfFAST_SPLIT FastSplit [1] If set to a value greater than 394040266059SGregory Neil Shapiro zero, the initial MX lookups on 394140266059SGregory Neil Shapiro addresses is suppressed when they 394240266059SGregory Neil Shapiro are sorted which may result in 394340266059SGregory Neil Shapiro faster envelope splitting. If the 394440266059SGregory Neil Shapiro mail is submitted directly from the 394540266059SGregory Neil Shapiro command line, then the value also 394640266059SGregory Neil Shapiro limits the number of processes to 394740266059SGregory Neil Shapiro deliver the envelopes. 394840266059SGregory Neil ShapiroconfMAILBOX_DATABASE MailboxDatabase [pw] Type of lookup to find 394940266059SGregory Neil Shapiro information about local mailboxes. 395040266059SGregory Neil ShapiroconfDEQUOTE_OPTS - [empty] Additional options for the 395140266059SGregory Neil Shapiro dequote map. 395240266059SGregory Neil ShapiroconfINPUT_MAIL_FILTERS InputMailFilters 395340266059SGregory Neil Shapiro A comma separated list of filters 395440266059SGregory Neil Shapiro which determines which filters and 395540266059SGregory Neil Shapiro the invocation sequence are 395640266059SGregory Neil Shapiro contacted for incoming SMTP 395740266059SGregory Neil Shapiro messages. If none are set, no 395840266059SGregory Neil Shapiro filters will be contacted. 395940266059SGregory Neil ShapiroconfMILTER_LOG_LEVEL Milter.LogLevel [9] Log level for input mail filter 396040266059SGregory Neil Shapiro actions, defaults to LogLevel. 396140266059SGregory Neil ShapiroconfMILTER_MACROS_CONNECT Milter.macros.connect 396240266059SGregory Neil Shapiro [empty] Macros to transmit to milters 396340266059SGregory Neil Shapiro when a session connection starts. 396440266059SGregory Neil ShapiroconfMILTER_MACROS_HELO Milter.macros.helo 396540266059SGregory Neil Shapiro [empty] Macros to transmit to milters 396640266059SGregory Neil Shapiro after HELO command. 396740266059SGregory Neil ShapiroconfMILTER_MACROS_ENVFROM Milter.macros.envfrom 396840266059SGregory Neil Shapiro [empty] Macros to transmit to milters 396940266059SGregory Neil Shapiro after MAIL FROM command. 397040266059SGregory Neil ShapiroconfMILTER_MACROS_ENVRCPT Milter.macros.envrcpt 397140266059SGregory Neil Shapiro [empty] Macros to transmit to milters 397240266059SGregory Neil Shapiro after RCPT TO command. 397340266059SGregory Neil Shapiro 3974c2aa98e2SPeter Wemm 3975c2aa98e2SPeter WemmSee also the description of OSTYPE for some parameters that can be 3976c2aa98e2SPeter Wemmtweaked (generally pathnames to mailers). 3977c2aa98e2SPeter Wemm 397840266059SGregory Neil ShapiroClientPortOptions and DaemonPortOptions are special cases since multiple 397940266059SGregory Neil Shapiroclients/daemons can be defined. This can be done via 398006f25ae9SGregory Neil Shapiro 398140266059SGregory Neil Shapiro CLIENT_OPTIONS(`field1=value1,field2=value2,...') 398206f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`field1=value1,field2=value2,...') 398306f25ae9SGregory Neil Shapiro 398440266059SGregory Neil ShapiroNote that multiple CLIENT_OPTIONS() commands (and therefore multiple 398540266059SGregory Neil ShapiroClientPortOptions settings) are allowed in order to give settings for each 398640266059SGregory Neil Shapiroprotocol family (e.g., one for Family=inet and one for Family=inet6). A 398740266059SGregory Neil Shapirorestriction placed on one family only affects outgoing connections on that 398840266059SGregory Neil Shapiroparticular family. 398940266059SGregory Neil Shapiro 399006f25ae9SGregory Neil ShapiroIf DAEMON_OPTIONS is not used, then the default is 399106f25ae9SGregory Neil Shapiro 399206f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=smtp, Name=MTA') 399306f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=587, Name=MSA, M=E') 399406f25ae9SGregory Neil Shapiro 399506f25ae9SGregory Neil ShapiroIf you use one DAEMON_OPTIONS macro, it will alter the parameters 399606f25ae9SGregory Neil Shapiroof the first of these. The second will still be defaulted; it 399706f25ae9SGregory Neil Shapirorepresents a "Message Submission Agent" (MSA) as defined by RFC 399806f25ae9SGregory Neil Shapiro2476 (see below). To turn off the default definition for the MSA, 399906f25ae9SGregory Neil Shapirouse FEATURE(`no_default_msa') (see also FEATURES). If you use 400006f25ae9SGregory Neil Shapiroadditional DAEMON_OPTIONS macros, they will add additional daemons. 400106f25ae9SGregory Neil Shapiro 400206f25ae9SGregory Neil ShapiroExample 1: To change the port for the SMTP listener, while 400306f25ae9SGregory Neil Shapirostill using the MSA default, use 400406f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=925, Name=MTA') 400506f25ae9SGregory Neil Shapiro 400606f25ae9SGregory Neil ShapiroExample 2: To change the port for the MSA daemon, while still 400706f25ae9SGregory Neil Shapirousing the default SMTP port, use 400806f25ae9SGregory Neil Shapiro FEATURE(`no_default_msa') 400906f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Name=MTA') 401006f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Port=987, Name=MSA, M=E') 401106f25ae9SGregory Neil Shapiro 401206f25ae9SGregory Neil ShapiroNote that if the first of those DAEMON_OPTIONS lines were omitted, then 401306f25ae9SGregory Neil Shapirothere would be no listener on the standard SMTP port. 401406f25ae9SGregory Neil Shapiro 401506f25ae9SGregory Neil ShapiroExample 3: To listen on both IPv4 and IPv6 interfaces, use 401606f25ae9SGregory Neil Shapiro 401706f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Name=MTA-v4, Family=inet') 401806f25ae9SGregory Neil Shapiro DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6') 401906f25ae9SGregory Neil Shapiro 402006f25ae9SGregory Neil ShapiroA "Message Submission Agent" still uses all of the same rulesets for 402106f25ae9SGregory Neil Shapiroprocessing the message (and therefore still allows message rejection via 402206f25ae9SGregory Neil Shapirothe check_* rulesets). In accordance with the RFC, the MSA will ensure 402306f25ae9SGregory Neil Shapirothat all domains in the envelope are fully qualified if the message is 402406f25ae9SGregory Neil Shapirorelayed to another MTA. It will also enforce the normal address syntax 402506f25ae9SGregory Neil Shapirorules and log error messages. Additionally, by using the M=a modifier 402606f25ae9SGregory Neil Shapiroyou can require authentication before messages are accepted by the MSA. 40278774250cSGregory Neil ShapiroNotice: Do NOT use the 'a' modifier on a public accessible MTA! 402806f25ae9SGregory Neil ShapiroFinally, the M=E modifier shown above disables ETRN as required by RFC 402906f25ae9SGregory Neil Shapiro2476. 403006f25ae9SGregory Neil Shapiro 403140266059SGregory Neil ShapiroMail filters can be defined using the INPUT_MAIL_FILTER() and MAIL_FILTER() 403240266059SGregory Neil Shapirocommands: 4033c2aa98e2SPeter Wemm 403440266059SGregory Neil Shapiro INPUT_MAIL_FILTER(`sample', `S=local:/var/run/f1.sock') 403540266059SGregory Neil Shapiro MAIL_FILTER(`myfilter', `S=inet:3333@localhost') 403640266059SGregory Neil Shapiro 403740266059SGregory Neil ShapiroThe INPUT_MAIL_FILTER() command causes the filter(s) to be called in the 403840266059SGregory Neil Shapirosame order they were specified by also setting confINPUT_MAIL_FILTERS. A 403940266059SGregory Neil Shapirofilter can be defined without adding it to the input filter list by using 404040266059SGregory Neil ShapiroMAIL_FILTER() instead of INPUT_MAIL_FILTER() in your .mc file. 404140266059SGregory Neil ShapiroAlternatively, you can reset the list of filters and their order by setting 404240266059SGregory Neil ShapiroconfINPUT_MAIL_FILTERS option after all INPUT_MAIL_FILTER() commands in 404340266059SGregory Neil Shapiroyour .mc file. 404440266059SGregory Neil Shapiro 404540266059SGregory Neil Shapiro 404640266059SGregory Neil Shapiro+----------------------------+ 404740266059SGregory Neil Shapiro| MESSAGE SUBMISSION PROGRAM | 404840266059SGregory Neil Shapiro+----------------------------+ 404940266059SGregory Neil Shapiro 405040266059SGregory Neil ShapiroThe purpose of the message submission program (MSP) is explained 405140266059SGregory Neil Shapiroin sendmail/SECURITY. This section contains a list of caveats and 405240266059SGregory Neil Shapiroa few hints how for those who want to tweak the default configuration 405340266059SGregory Neil Shapirofor it (which is installed as submit.cf). 405440266059SGregory Neil Shapiro 405540266059SGregory Neil ShapiroNotice: do not add options/features to submit.mc unless you are 405640266059SGregory Neil Shapiroabsolutely sure you need them. Options you may want to change 405740266059SGregory Neil Shapiroinclude: 405840266059SGregory Neil Shapiro 4059605302a5SGregory Neil Shapiro- confTRUSTED_USERS, FEATURE(`use_ct_file'), and confCT_FILE for 406094c01205SGregory Neil Shapiro avoiding X-Authentication warnings. 4061605302a5SGregory Neil Shapiro- confTIME_ZONE to change it from the default `USE_TZ'. 406240266059SGregory Neil Shapiro- confDELIVERY_MODE is set to interactive in msp.m4 instead 406340266059SGregory Neil Shapiro of the default background mode. 406494c01205SGregory Neil Shapiro- FEATURE(stickyhost) and LOCAL_RELAY to send unqualified addresses 406594c01205SGregory Neil Shapiro to the LOCAL_RELAY instead of the default relay. 406694c01205SGregory Neil Shapiro- confRAND_FILE if you use STARTTLS and sendmail is not compiled with 406794c01205SGregory Neil Shapiro the flag HASURANDOM. 406894c01205SGregory Neil Shapiro 406994c01205SGregory Neil ShapiroThe MSP performs hostname canonicalization by default. As also 407094c01205SGregory Neil Shapiroexplained in sendmail/SECURITY, mail may end up for various DNS 407194c01205SGregory Neil Shapirorelated reasons in the MSP queue. This problem can be minimized by 407294c01205SGregory Neil Shapirousing 407394c01205SGregory Neil Shapiro 407494c01205SGregory Neil Shapiro FEATURE(`nocanonify', `canonify_hosts') 407594c01205SGregory Neil Shapiro define(`confDIRECT_SUBMISSION_MODIFIERS', `C') 407694c01205SGregory Neil Shapiro 407794c01205SGregory Neil ShapiroSee the discussion about nocanonify for possible side effects. 407840266059SGregory Neil Shapiro 407940266059SGregory Neil ShapiroSome things are not intended to work with the MSP. These include 408040266059SGregory Neil Shapirofeatures that influence the delivery process (e.g., mailertable, 408140266059SGregory Neil Shapiroaliases), or those that are only important for a SMTP server (e.g., 408240266059SGregory Neil Shapirovirtusertable, DaemonPortOptions, multiple queues). Moreover, 408340266059SGregory Neil Shapirorelaxing certain restrictions (RestrictQueueRun, permissions on 408440266059SGregory Neil Shapiroqueue directory) or adding features (e.g., enabling prog/file mailer) 408540266059SGregory Neil Shapirocan cause security problems. 408640266059SGregory Neil Shapiro 408740266059SGregory Neil ShapiroOther things don't work well with the MSP and require tweaking or 408840266059SGregory Neil Shapiroworkarounds. For example, to allow for client authentication it 408940266059SGregory Neil Shapirois not just sufficient to provide a client certificate and the 409040266059SGregory Neil Shapirocorresponding key, but it is also necessary to make the key group 409140266059SGregory Neil Shapiro(smmsp) readable and tell sendmail not to complain about that, i.e., 409240266059SGregory Neil Shapiro 409340266059SGregory Neil Shapiro define(`confDONT_BLAME_SENDMAIL', `GroupReadableKeyFile') 409440266059SGregory Neil Shapiro 409540266059SGregory Neil ShapiroIf the MSP should actually use AUTH then the necessary data 409640266059SGregory Neil Shapiroshould be placed in a map as explained in SMTP AUTHENTICATION: 409740266059SGregory Neil Shapiro 409840266059SGregory Neil ShapiroFEATURE(`authinfo', `DATABASE_MAP_TYPE /etc/mail/msp-authinfo') 409940266059SGregory Neil Shapiro 410040266059SGregory Neil Shapiro/etc/mail/msp-authinfo should contain an entry like: 410140266059SGregory Neil Shapiro 410240266059SGregory Neil Shapiro AuthInfo:127.0.0.1 "U:smmsp" "P:secret" "M:DIGEST-MD5" 410340266059SGregory Neil Shapiro 410440266059SGregory Neil ShapiroThe file and the map created by makemap should be owned by smmsp, 410540266059SGregory Neil Shapiroits group should be smmsp, and it should have mode 640. The database 410640266059SGregory Neil Shapiroused by the MTA for AUTH must have a corresponding entry. 410740266059SGregory Neil ShapiroAdditionally the MTA must trust this authentication data so the AUTH= 410840266059SGregory Neil Shapiropart will be relayed on to the next hop. This can be achieved by 410940266059SGregory Neil Shapiroadding the following to your sendmail.mc file: 411040266059SGregory Neil Shapiro 411140266059SGregory Neil Shapiro LOCAL_RULESETS 411240266059SGregory Neil Shapiro SLocal_trust_auth 411340266059SGregory Neil Shapiro R$* $: $&{auth_authen} 411440266059SGregory Neil Shapiro Rsmmsp $# OK 411540266059SGregory Neil Shapiro 411640266059SGregory Neil Shapirofeature/msp.m4 defines almost all settings for the MSP. Most of 411740266059SGregory Neil Shapirothose should not be changed at all. Some of the features and options 411840266059SGregory Neil Shapirocan be overridden if really necessary. It is a bit tricky to do 411940266059SGregory Neil Shapirothis, because it depends on the actual way the option is defined 412040266059SGregory Neil Shapiroin feature/msp.m4. If it is directly defined (i.e., define()) then 412140266059SGregory Neil Shapirothe modified value must be defined after 412240266059SGregory Neil Shapiro 412340266059SGregory Neil Shapiro FEATURE(`msp') 412440266059SGregory Neil Shapiro 412540266059SGregory Neil ShapiroIf it is conditionally defined (i.e., ifdef()) then the desired 412640266059SGregory Neil Shapirovalue must be defined before the FEATURE line in the .mc file. 412740266059SGregory Neil ShapiroTo see how the options are defined read feature/msp.m4. 412840266059SGregory Neil Shapiro 412940266059SGregory Neil Shapiro 413040266059SGregory Neil Shapiro+--------------------------+ 413140266059SGregory Neil Shapiro| FORMAT OF FILES AND MAPS | 413240266059SGregory Neil Shapiro+--------------------------+ 413340266059SGregory Neil Shapiro 413440266059SGregory Neil ShapiroFiles that define classes, i.e., F{classname}, consist of lines 413540266059SGregory Neil Shapiroeach of which contains a single element of the class. For example, 413640266059SGregory Neil Shapiro/etc/mail/local-host-names may have the following content: 413740266059SGregory Neil Shapiro 413840266059SGregory Neil Shapiromy.domain 413940266059SGregory Neil Shapiroanother.domain 414040266059SGregory Neil Shapiro 414140266059SGregory Neil ShapiroMaps must be created using makemap(8) , e.g., 414240266059SGregory Neil Shapiro 414340266059SGregory Neil Shapiro makemap hash MAP < MAP 414440266059SGregory Neil Shapiro 414540266059SGregory Neil ShapiroIn general, a text file from which a map is created contains lines 414640266059SGregory Neil Shapiroof the form 414740266059SGregory Neil Shapiro 414840266059SGregory Neil Shapirokey value 414940266059SGregory Neil Shapiro 415040266059SGregory Neil Shapirowhere 'key' and 'value' are also called LHS and RHS, respectively. 415140266059SGregory Neil ShapiroBy default, the delimiter between LHS and RHS is a non-empty sequence 415240266059SGregory Neil Shapiroof white space characters. 415340266059SGregory Neil Shapiro 415440266059SGregory Neil Shapiro 415540266059SGregory Neil Shapiro+------------------+ 415640266059SGregory Neil Shapiro| DIRECTORY LAYOUT | 415740266059SGregory Neil Shapiro+------------------+ 4158c2aa98e2SPeter Wemm 4159c2aa98e2SPeter WemmWithin this directory are several subdirectories, to wit: 4160c2aa98e2SPeter Wemm 4161c2aa98e2SPeter Wemmm4 General support routines. These are typically 4162c2aa98e2SPeter Wemm very important and should not be changed without 4163c2aa98e2SPeter Wemm very careful consideration. 4164c2aa98e2SPeter Wemm 4165c2aa98e2SPeter Wemmcf The configuration files themselves. They have 4166c2aa98e2SPeter Wemm ".mc" suffixes, and must be run through m4 to 4167c2aa98e2SPeter Wemm become complete. The resulting output should 4168c2aa98e2SPeter Wemm have a ".cf" suffix. 4169c2aa98e2SPeter Wemm 4170c2aa98e2SPeter Wemmostype Definitions describing a particular operating 4171c2aa98e2SPeter Wemm system type. These should always be referenced 4172c2aa98e2SPeter Wemm using the OSTYPE macro in the .mc file. Examples 4173c2aa98e2SPeter Wemm include "bsd4.3", "bsd4.4", "sunos3.5", and 4174c2aa98e2SPeter Wemm "sunos4.1". 4175c2aa98e2SPeter Wemm 4176c2aa98e2SPeter Wemmdomain Definitions describing a particular domain, referenced 4177c2aa98e2SPeter Wemm using the DOMAIN macro in the .mc file. These are 4178c2aa98e2SPeter Wemm site dependent; for example, "CS.Berkeley.EDU.m4" 4179c2aa98e2SPeter Wemm describes hosts in the CS.Berkeley.EDU subdomain. 4180c2aa98e2SPeter Wemm 4181c2aa98e2SPeter Wemmmailer Descriptions of mailers. These are referenced using 4182c2aa98e2SPeter Wemm the MAILER macro in the .mc file. 4183c2aa98e2SPeter Wemm 4184c2aa98e2SPeter Wemmsh Shell files used when building the .cf file from the 4185c2aa98e2SPeter Wemm .mc file in the cf subdirectory. 4186c2aa98e2SPeter Wemm 4187c2aa98e2SPeter Wemmfeature These hold special orthogonal features that you might 4188c2aa98e2SPeter Wemm want to include. They should be referenced using 4189c2aa98e2SPeter Wemm the FEATURE macro. 4190c2aa98e2SPeter Wemm 4191c2aa98e2SPeter Wemmhack Local hacks. These can be referenced using the HACK 4192c2aa98e2SPeter Wemm macro. They shouldn't be of more than voyeuristic 4193c2aa98e2SPeter Wemm interest outside the .Berkeley.EDU domain, but who knows? 4194c2aa98e2SPeter Wemm 4195c2aa98e2SPeter Wemmsiteconfig Site configuration -- e.g., tables of locally connected 4196c2aa98e2SPeter Wemm UUCP sites. 4197c2aa98e2SPeter Wemm 4198c2aa98e2SPeter Wemm 4199c2aa98e2SPeter Wemm+------------------------+ 4200c2aa98e2SPeter Wemm| ADMINISTRATIVE DETAILS | 4201c2aa98e2SPeter Wemm+------------------------+ 4202c2aa98e2SPeter Wemm 4203c2aa98e2SPeter WemmThe following sections detail usage of certain internal parts of the 4204c2aa98e2SPeter Wemmsendmail.cf file. Read them carefully if you are trying to modify 4205c2aa98e2SPeter Wemmthe current model. If you find the above descriptions adequate, these 4206c2aa98e2SPeter Wemmshould be {boring, confusing, tedious, ridiculous} (pick one or more). 4207c2aa98e2SPeter Wemm 4208c2aa98e2SPeter WemmRULESETS (* means built in to sendmail) 4209c2aa98e2SPeter Wemm 4210c2aa98e2SPeter Wemm 0 * Parsing 4211c2aa98e2SPeter Wemm 1 * Sender rewriting 4212c2aa98e2SPeter Wemm 2 * Recipient rewriting 4213c2aa98e2SPeter Wemm 3 * Canonicalization 4214c2aa98e2SPeter Wemm 4 * Post cleanup 4215c2aa98e2SPeter Wemm 5 * Local address rewrite (after aliasing) 4216c2aa98e2SPeter Wemm 1x mailer rules (sender qualification) 4217c2aa98e2SPeter Wemm 2x mailer rules (recipient qualification) 4218c2aa98e2SPeter Wemm 3x mailer rules (sender header qualification) 4219c2aa98e2SPeter Wemm 4x mailer rules (recipient header qualification) 4220c2aa98e2SPeter Wemm 5x mailer subroutines (general) 4221c2aa98e2SPeter Wemm 6x mailer subroutines (general) 4222c2aa98e2SPeter Wemm 7x mailer subroutines (general) 4223c2aa98e2SPeter Wemm 8x reserved 4224c2aa98e2SPeter Wemm 90 Mailertable host stripping 4225c2aa98e2SPeter Wemm 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail) 4226c2aa98e2SPeter Wemm 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail) 4227c2aa98e2SPeter Wemm 98 Local part of ruleset 0 (ruleset 8 in old sendmail) 4228c2aa98e2SPeter Wemm 4229c2aa98e2SPeter Wemm 4230c2aa98e2SPeter WemmMAILERS 4231c2aa98e2SPeter Wemm 4232c2aa98e2SPeter Wemm 0 local, prog local and program mailers 4233c2aa98e2SPeter Wemm 1 [e]smtp, relay SMTP channel 4234c2aa98e2SPeter Wemm 2 uucp-* UNIX-to-UNIX Copy Program 4235c2aa98e2SPeter Wemm 3 netnews Network News delivery 4236c2aa98e2SPeter Wemm 4 fax Sam Leffler's HylaFAX software 4237c2aa98e2SPeter Wemm 5 mail11 DECnet mailer 4238c2aa98e2SPeter Wemm 4239c2aa98e2SPeter Wemm 4240c2aa98e2SPeter WemmMACROS 4241c2aa98e2SPeter Wemm 4242c2aa98e2SPeter Wemm A 4243c2aa98e2SPeter Wemm B Bitnet Relay 4244c2aa98e2SPeter Wemm C DECnet Relay 4245c2aa98e2SPeter Wemm D The local domain -- usually not needed 4246c2aa98e2SPeter Wemm E reserved for X.400 Relay 4247c2aa98e2SPeter Wemm F FAX Relay 4248c2aa98e2SPeter Wemm G 4249c2aa98e2SPeter Wemm H mail Hub (for mail clusters) 4250c2aa98e2SPeter Wemm I 4251c2aa98e2SPeter Wemm J 4252c2aa98e2SPeter Wemm K 4253c2aa98e2SPeter Wemm L Luser Relay 425406f25ae9SGregory Neil Shapiro M Masquerade (who you claim to be) 4255c2aa98e2SPeter Wemm N 4256c2aa98e2SPeter Wemm O 4257c2aa98e2SPeter Wemm P 4258c2aa98e2SPeter Wemm Q 4259c2aa98e2SPeter Wemm R Relay (for unqualified names) 4260c2aa98e2SPeter Wemm S Smart Host 4261c2aa98e2SPeter Wemm T 426206f25ae9SGregory Neil Shapiro U my UUCP name (if you have a UUCP connection) 426306f25ae9SGregory Neil Shapiro V UUCP Relay (class {V} hosts) 426406f25ae9SGregory Neil Shapiro W UUCP Relay (class {W} hosts) 426506f25ae9SGregory Neil Shapiro X UUCP Relay (class {X} hosts) 4266c2aa98e2SPeter Wemm Y UUCP Relay (all other hosts) 4267c2aa98e2SPeter Wemm Z Version number 4268c2aa98e2SPeter Wemm 4269c2aa98e2SPeter Wemm 4270c2aa98e2SPeter WemmCLASSES 4271c2aa98e2SPeter Wemm 4272c2aa98e2SPeter Wemm A 4273c2aa98e2SPeter Wemm B domains that are candidates for bestmx lookup 4274c2aa98e2SPeter Wemm C 4275c2aa98e2SPeter Wemm D 4276c2aa98e2SPeter Wemm E addresses that should not seem to come from $M 427706f25ae9SGregory Neil Shapiro F hosts this system forward for 4278c2aa98e2SPeter Wemm G domains that should be looked up in genericstable 4279c2aa98e2SPeter Wemm H 4280c2aa98e2SPeter Wemm I 4281c2aa98e2SPeter Wemm J 4282c2aa98e2SPeter Wemm K 4283c2aa98e2SPeter Wemm L addresses that should not be forwarded to $R 4284c2aa98e2SPeter Wemm M domains that should be mapped to $M 428506f25ae9SGregory Neil Shapiro N host/domains that should not be mapped to $M 4286c2aa98e2SPeter Wemm O operators that indicate network operations (cannot be in local names) 4287c2aa98e2SPeter Wemm P top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc. 4288c2aa98e2SPeter Wemm Q 428906f25ae9SGregory Neil Shapiro R domains this system is willing to relay (pass anti-spam filters) 4290c2aa98e2SPeter Wemm S 4291c2aa98e2SPeter Wemm T 4292c2aa98e2SPeter Wemm U locally connected UUCP hosts 4293c2aa98e2SPeter Wemm V UUCP hosts connected to relay $V 4294c2aa98e2SPeter Wemm W UUCP hosts connected to relay $W 4295c2aa98e2SPeter Wemm X UUCP hosts connected to relay $X 4296c2aa98e2SPeter Wemm Y locally connected smart UUCP hosts 4297c2aa98e2SPeter Wemm Z locally connected domain-ized UUCP hosts 4298c2aa98e2SPeter Wemm . the class containing only a dot 4299c2aa98e2SPeter Wemm [ the class containing only a left bracket 4300c2aa98e2SPeter Wemm 4301c2aa98e2SPeter Wemm 4302c2aa98e2SPeter WemmM4 DIVERSIONS 4303c2aa98e2SPeter Wemm 4304c2aa98e2SPeter Wemm 1 Local host detection and resolution 4305c2aa98e2SPeter Wemm 2 Local Ruleset 3 additions 4306c2aa98e2SPeter Wemm 3 Local Ruleset 0 additions 4307c2aa98e2SPeter Wemm 4 UUCP Ruleset 0 additions 4308c2aa98e2SPeter Wemm 5 locally interpreted names (overrides $R) 4309c2aa98e2SPeter Wemm 6 local configuration (at top of file) 4310c2aa98e2SPeter Wemm 7 mailer definitions 431106f25ae9SGregory Neil Shapiro 8 DNS based blacklists 4312c2aa98e2SPeter Wemm 9 special local rulesets (1 and 2) 431306f25ae9SGregory Neil Shapiro 4314739ac4d4SGregory Neil Shapiro$Revision: 8.623 $, Last updated $Date: 2002/06/07 14:14:14 $ 4315