1 2 SENDMAIL CONFIGURATION FILES 3 4This document describes the sendmail configuration files. This package 5requires a post-V7 version of m4; if you are running the 4.2bsd, SysV.2, or 67th Edition version. SunOS's /usr/5bin/m4 or BSD-Net/2's m4 both work. 7GNU m4 version 1.1 or later also works. Unfortunately, the M4 on BSDI 1.0 8doesn't work -- you'll have to use a Net/2 or GNU version. GNU m4 is 9available from ftp://ftp.gnu.org/pub/gnu/m4/m4-1.4.tar.gz (check for the 10latest version). EXCEPTIONS: DEC's m4 on Digital UNIX 4.x is broken (3.x 11is fine). Use GNU m4 on this platform. 12 13To get started, you may want to look at tcpproto.mc (for TCP-only sites), 14uucpproto.mc (for UUCP-only sites), and clientproto.mc (for clusters of 15clients using a single mail host). Others are versions previously used at 16Berkeley. For example, ucbvax has gone away, but ucbvax.mc demonstrates 17some interesting techniques. 18 19******************************************************************* 20*** BE SURE YOU CUSTOMIZE THESE FILES! They have some *** 21*** Berkeley-specific assumptions built in, such as the name *** 22*** of their UUCP-relay. You'll want to create your own *** 23*** domain description, and use that in place of *** 24*** domain/Berkeley.EDU.m4. *** 25******************************************************************* 26 27 28+--------------------------+ 29| INTRODUCTION AND EXAMPLE | 30+--------------------------+ 31 32Configuration files are contained in the subdirectory "cf", with a 33suffix ".mc". They must be run through "m4" to produce a ".cf" file. 34You must pre-load "cf.m4": 35 36 m4 ${CFDIR}/m4/cf.m4 config.mc > config.cf 37 38Alternatively, you can simply: 39 40 cd ${CFDIR}/cf 41 ./Build config.cf 42 43where ${CFDIR} is the root of the cf directory and config.mc is the 44name of your configuration file. If you are running a version of M4 45that understands the __file__ builtin (versions of GNU m4 >= 0.75 do 46this, but the versions distributed with 4.4BSD and derivatives do not) 47or the -I flag (ditto), then ${CFDIR} can be in an arbitrary directory. 48For "traditional" versions, ${CFDIR} ***MUST*** be "..", or you MUST 49use -D_CF_DIR_=/path/to/cf/dir/ -- note the trailing slash! For example: 50 51 m4 -D_CF_DIR_=${CFDIR}/ ${CFDIR}/m4/cf.m4 config.mc > config.cf 52 53Let's examine a typical .mc file: 54 55 divert(-1) 56 # 57 # Copyright (c) 1998-2001 Sendmail, Inc. and its suppliers. 58 # All rights reserved. 59 # Copyright (c) 1983 Eric P. Allman. All rights reserved. 60 # Copyright (c) 1988, 1993 61 # The Regents of the University of California. All rights reserved. 62 # 63 # By using this file, you agree to the terms and conditions set 64 # forth in the LICENSE file which can be found at the top level of 65 # the sendmail distribution. 66 # 67 68 # 69 # This is a Berkeley-specific configuration file for HP-UX 9.x. 70 # It applies only to the Computer Science Division at Berkeley, 71 # and should not be used elsewhere. It is provided on the sendmail 72 # distribution as a sample only. To create your own configuration 73 # file, create an appropriate domain file in ../domain, change the 74 # `DOMAIN' macro below to reference that file, and copy the result 75 # to a name of your own choosing. 76 # 77 divert(0) 78 79The divert(-1) will delete the crud in the resulting output file. 80The copyright notice can be replaced by whatever your lawyers require; 81our lawyers require the one that is included in these files. A copyleft 82is a copyright by another name. The divert(0) restores regular output. 83 84 VERSIONID(`<SCCS or RCS version id>') 85 86VERSIONID is a macro that stuffs the version information into the 87resulting file. You could use SCCS, RCS, CVS, something else, or 88omit it completely. This is not the same as the version id included 89in SMTP greeting messages -- this is defined in m4/version.m4. 90 91 OSTYPE(`hpux9')dnl 92 93You must specify an OSTYPE to properly configure things such as the 94pathname of the help and status files, the flags needed for the local 95mailer, and other important things. If you omit it, you will get an 96error when you try to build the configuration. Look at the ostype 97directory for the list of known operating system types. 98 99 DOMAIN(`CS.Berkeley.EDU')dnl 100 101This example is specific to the Computer Science Division at Berkeley. 102You can use "DOMAIN(`generic')" to get a sufficiently bland definition 103that may well work for you, or you can create a customized domain 104definition appropriate for your environment. 105 106 MAILER(`local') 107 MAILER(`smtp') 108 109These describe the mailers used at the default CS site. The 110local mailer is always included automatically. Beware: MAILER 111declarations should always be at the end of the configuration file, 112and MAILER(`smtp') should always precede MAILER(`procmail'), and 113MAILER(`uucp'). The general rules are that the order should be: 114 115 VERSIONID 116 OSTYPE 117 DOMAIN 118 FEATURE 119 local macro definitions 120 MAILER 121 LOCAL_RULE_* 122 LOCAL_RULESETS 123 124There are a few exceptions to this rule. Local macro definitions which 125influence a FEATURE() should be done before that feature. For example, 126a define(`PROCMAIL_MAILER_PATH', ...) should be done before 127FEATURE(`local_procmail'). 128 129 130+----------------------------+ 131| A BRIEF INTRODUCTION TO M4 | 132+----------------------------+ 133 134Sendmail uses the M4 macro processor to ``compile'' the configuration 135files. The most important thing to know is that M4 is stream-based, 136that is, it doesn't understand about lines. For this reason, in some 137places you may see the word ``dnl'', which stands for ``delete 138through newline''; essentially, it deletes all characters starting 139at the ``dnl'' up to and including the next newline character. In 140most cases sendmail uses this only to avoid lots of unnecessary 141blank lines in the output. 142 143Other important directives are define(A, B) which defines the macro 144``A'' to have value ``B''. Macros are expanded as they are read, so 145one normally quotes both values to prevent expansion. For example, 146 147 define(`SMART_HOST', `smart.foo.com') 148 149One word of warning: M4 macros are expanded even in lines that appear 150to be comments. For example, if you have 151 152 # See FEATURE(`foo') above 153 154it will not do what you expect, because the FEATURE(`foo') will be 155expanded. This also applies to 156 157 # And then define the $X macro to be the return address 158 159because ``define'' is an M4 keyword. If you want to use them, surround 160them with directed quotes, `like this'. 161 162+----------------+ 163| FILE LOCATIONS | 164+----------------+ 165 166sendmail 8.9 has introduced a new configuration directory for sendmail 167related files, /etc/mail. The new files available for sendmail 8.9 -- 168the class {R} /etc/mail/relay-domains and the access database 169/etc/mail/access -- take advantage of this new directory. Beginning with 1708.10, all files will use this directory by default (some options may be 171set by OSTYPE() files). This new directory should help to restore 172uniformity to sendmail's file locations. 173 174Below is a table of some of the common changes: 175 176Old filename New filename 177------------ ------------ 178/etc/bitdomain /etc/mail/bitdomain 179/etc/domaintable /etc/mail/domaintable 180/etc/genericstable /etc/mail/genericstable 181/etc/uudomain /etc/mail/uudomain 182/etc/virtusertable /etc/mail/virtusertable 183/etc/userdb /etc/mail/userdb 184 185/etc/aliases /etc/mail/aliases 186/etc/sendmail/aliases /etc/mail/aliases 187/etc/ucbmail/aliases /etc/mail/aliases 188/usr/adm/sendmail/aliases /etc/mail/aliases 189/usr/lib/aliases /etc/mail/aliases 190/usr/lib/mail/aliases /etc/mail/aliases 191/usr/ucblib/aliases /etc/mail/aliases 192 193/etc/sendmail.cw /etc/mail/local-host-names 194/etc/mail/sendmail.cw /etc/mail/local-host-names 195/etc/sendmail/sendmail.cw /etc/mail/local-host-names 196 197/etc/sendmail.ct /etc/mail/trusted-users 198 199/etc/sendmail.oE /etc/mail/error-header 200 201/etc/sendmail.hf /etc/mail/helpfile 202/etc/mail/sendmail.hf /etc/mail/helpfile 203/usr/ucblib/sendmail.hf /etc/mail/helpfile 204/etc/ucbmail/sendmail.hf /etc/mail/helpfile 205/usr/lib/sendmail.hf /etc/mail/helpfile 206/usr/share/lib/sendmail.hf /etc/mail/helpfile 207/usr/share/misc/sendmail.hf /etc/mail/helpfile 208/share/misc/sendmail.hf /etc/mail/helpfile 209 210/etc/service.switch /etc/mail/service.switch 211 212/etc/sendmail.st /etc/mail/statistics 213/etc/mail/sendmail.st /etc/mail/statistics 214/etc/mailer/sendmail.st /etc/mail/statistics 215/etc/sendmail/sendmail.st /etc/mail/statistics 216/usr/lib/sendmail.st /etc/mail/statistics 217/usr/ucblib/sendmail.st /etc/mail/statistics 218 219Note that all of these paths actually use a new m4 macro MAIL_SETTINGS_DIR 220to create the pathnames. The default value of this variable is 221`/etc/mail/'. If you set this macro to a different value, you MUST include 222a trailing slash. 223 224Notice: all filenames used in a .mc (or .cf) file should be absolute 225(starting at the root, i.e., with '/'). Relative filenames most 226likely cause surprises during operations (unless otherwise noted). 227 228 229+--------+ 230| OSTYPE | 231+--------+ 232 233You MUST define an operating system environment, or the configuration 234file build will puke. There are several environments available; look 235at the "ostype" directory for the current list. This macro changes 236things like the location of the alias file and queue directory. Some 237of these files are identical to one another. 238 239It is IMPERATIVE that the OSTYPE occur before any MAILER definitions. 240In general, the OSTYPE macro should go immediately after any version 241information, and MAILER definitions should always go last. 242 243Operating system definitions are usually easy to write. They may define 244the following variables (everything defaults, so an ostype file may be 245empty). Unfortunately, the list of configuration-supported systems is 246not as broad as the list of source-supported systems, since many of 247the source contributors do not include corresponding ostype files. 248 249ALIAS_FILE [/etc/mail/aliases] The location of the text version 250 of the alias file(s). It can be a comma-separated 251 list of names (but be sure you quote values with 252 commas in them -- for example, use 253 define(`ALIAS_FILE', `a,b') 254 to get "a" and "b" both listed as alias files; 255 otherwise the define() primitive only sees "a"). 256HELP_FILE [/etc/mail/helpfile] The name of the file 257 containing information printed in response to 258 the SMTP HELP command. 259QUEUE_DIR [/var/spool/mqueue] The directory containing 260 queue files. To use multiple queues, supply 261 a value ending with an asterisk. For 262 example, /var/spool/mqueue/qd* will use all of the 263 directories or symbolic links to directories 264 beginning with 'qd' in /var/spool/mqueue as queue 265 directories. The names 'qf', 'df', and 'xf' are 266 reserved as specific subdirectories for the 267 corresponding queue file types as explained in 268 doc/op/op.me. 269STATUS_FILE [/etc/mail/statistics] The file containing status 270 information. 271LOCAL_MAILER_PATH [/bin/mail] The program used to deliver local mail. 272LOCAL_MAILER_FLAGS [Prmn9] The flags used by the local mailer. The 273 flags lsDFMAw5:/|@q are always included. 274LOCAL_MAILER_ARGS [mail -d $u] The arguments passed to deliver local 275 mail. 276LOCAL_MAILER_MAX [undefined] If defined, the maximum size of local 277 mail that you are willing to accept. 278LOCAL_MAILER_MAXMSGS [undefined] If defined, the maximum number of 279 messages to deliver in a single connection. Only 280 useful for LMTP local mailers. 281LOCAL_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 282 that ARRIVE from an address that resolves to the 283 local mailer and which are converted to MIME will be 284 labeled with this character set. 285LOCAL_MAILER_EOL [undefined] If defined, the string to use as the 286 end of line for the local mailer. 287LOCAL_MAILER_DSN_DIAGNOSTIC_CODE 288 [X-Unix] The DSN Diagnostic-Code value for the 289 local mailer. This should be changed with care. 290LOCAL_SHELL_PATH [/bin/sh] The shell used to deliver piped email. 291LOCAL_SHELL_FLAGS [eu9] The flags used by the shell mailer. The 292 flags lsDFM are always included. 293LOCAL_SHELL_ARGS [sh -c $u] The arguments passed to deliver "prog" 294 mail. 295LOCAL_SHELL_DIR [$z:/] The directory search path in which the 296 shell should run. 297USENET_MAILER_PATH [/usr/lib/news/inews] The name of the program 298 used to submit news. 299USENET_MAILER_FLAGS [rsDFMmn] The mailer flags for the usenet mailer. 300USENET_MAILER_ARGS [-m -h -n] The command line arguments for the 301 usenet mailer. 302USENET_MAILER_MAX [100000] The maximum size of messages that will 303 be accepted by the usenet mailer. 304SMTP_MAILER_FLAGS [undefined] Flags added to SMTP mailer. Default 305 flags are `mDFMuX' for all SMTP-based mailers; the 306 "esmtp" mailer adds `a'; "smtp8" adds `8'; and 307 "dsmtp" adds `%'. 308RELAY_MAILER_FLAGS [undefined] Flags added to the relay mailer. Default 309 flags are `mDFMuX' for all SMTP-based mailers; the 310 relay mailer adds `a8'. If this is not defined, 311 then SMTP_MAILER_FLAGS is used. 312SMTP_MAILER_MAX [undefined] The maximum size of messages that will 313 be transported using the smtp, smtp8, esmtp, or dsmtp 314 mailers. 315SMTP_MAILER_MAXMSGS [undefined] If defined, the maximum number of 316 messages to deliver in a single connection for the 317 smtp, smtp8, esmtp, or dsmtp mailers. 318SMTP_MAILER_ARGS [TCP $h] The arguments passed to the smtp mailer. 319 About the only reason you would want to change this 320 would be to change the default port. 321ESMTP_MAILER_ARGS [TCP $h] The arguments passed to the esmtp mailer. 322SMTP8_MAILER_ARGS [TCP $h] The arguments passed to the smtp8 mailer. 323DSMTP_MAILER_ARGS [TCP $h] The arguments passed to the dsmtp mailer. 324RELAY_MAILER_ARGS [TCP $h] The arguments passed to the relay mailer. 325RELAY_MAILER_MAXMSGS [undefined] If defined, the maximum number of 326 messages to deliver in a single connection for the 327 relay mailer. 328SMTP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 329 that ARRIVE from an address that resolves to one of 330 the SMTP mailers and which are converted to MIME will 331 be labeled with this character set. 332UUCP_MAILER_PATH [/usr/bin/uux] The program used to send UUCP mail. 333UUCP_MAILER_FLAGS [undefined] Flags added to UUCP mailer. Default 334 flags are `DFMhuU' (and `m' for uucp-new mailer, 335 minus `U' for uucp-dom mailer). 336UUCP_MAILER_ARGS [uux - -r -z -a$g -gC $h!rmail ($u)] The arguments 337 passed to the UUCP mailer. 338UUCP_MAILER_MAX [100000] The maximum size message accepted for 339 transmission by the UUCP mailers. 340UUCP_MAILER_CHARSET [undefined] If defined, messages containing 8-bit data 341 that ARRIVE from an address that resolves to one of 342 the UUCP mailers and which are converted to MIME will 343 be labeled with this character set. 344FAX_MAILER_PATH [/usr/local/lib/fax/mailfax] The program used to 345 submit FAX messages. 346FAX_MAILER_ARGS [mailfax $u $h $f] The arguments passed to the FAX 347 mailer. 348FAX_MAILER_MAX [100000] The maximum size message accepted for 349 transmission by FAX. 350POP_MAILER_PATH [/usr/lib/mh/spop] The pathname of the POP mailer. 351POP_MAILER_FLAGS [Penu] Flags added to POP mailer. Flags lsDFMq 352 are always added. 353POP_MAILER_ARGS [pop $u] The arguments passed to the POP mailer. 354PROCMAIL_MAILER_PATH [/usr/local/bin/procmail] The path to the procmail 355 program. This is also used by 356 FEATURE(`local_procmail'). 357PROCMAIL_MAILER_FLAGS [SPhnu9] Flags added to Procmail mailer. Flags 358 DFM are always set. This is NOT used by 359 FEATURE(`local_procmail'); tweak LOCAL_MAILER_FLAGS 360 instead. 361PROCMAIL_MAILER_ARGS [procmail -Y -m $h $f $u] The arguments passed to 362 the Procmail mailer. This is NOT used by 363 FEATURE(`local_procmail'); tweak LOCAL_MAILER_ARGS 364 instead. 365PROCMAIL_MAILER_MAX [undefined] If set, the maximum size message that 366 will be accepted by the procmail mailer. 367MAIL11_MAILER_PATH [/usr/etc/mail11] The path to the mail11 mailer. 368MAIL11_MAILER_FLAGS [nsFx] Flags for the mail11 mailer. 369MAIL11_MAILER_ARGS [mail11 $g $x $h $u] Arguments passed to the mail11 370 mailer. 371PH_MAILER_PATH [/usr/local/etc/phquery] The path to the phquery 372 program. 373PH_MAILER_FLAGS [ehmu] Flags for the phquery mailer. Flags nrDFM 374 are always set. 375PH_MAILER_ARGS [phquery -- $u] -- arguments to the phquery mailer. 376CYRUS_MAILER_FLAGS [Ah5@/:|] The flags used by the cyrus mailer. The 377 flags lsDFMnPq are always included. 378CYRUS_MAILER_PATH [/usr/cyrus/bin/deliver] The program used to deliver 379 cyrus mail. 380CYRUS_MAILER_ARGS [deliver -e -m $h -- $u] The arguments passed 381 to deliver cyrus mail. 382CYRUS_MAILER_MAX [undefined] If set, the maximum size message that 383 will be accepted by the cyrus mailer. 384CYRUS_MAILER_USER [cyrus:mail] The user and group to become when 385 running the cyrus mailer. 386CYRUS_BB_MAILER_FLAGS [u] The flags used by the cyrusbb mailer. 387 The flags lsDFMnP are always included. 388CYRUS_BB_MAILER_ARGS [deliver -e -m $u] The arguments passed 389 to deliver cyrusbb mail. 390confEBINDIR [/usr/libexec] The directory for executables. 391 Currently used for FEATURE(`local_lmtp') and 392 FEATURE(`smrsh'). 393QPAGE_MAILER_FLAGS [mDFMs] The flags used by the qpage mailer. 394QPAGE_MAILER_PATH [/usr/local/bin/qpage] The program used to deliver 395 qpage mail. 396QPAGE_MAILER_ARGS [qpage -l0 -m -P$u] The arguments passed 397 to deliver qpage mail. 398QPAGE_MAILER_MAX [4096] If set, the maximum size message that 399 will be accepted by the qpage mailer. 400 401Note: to tweak Name_MAILER_FLAGS use the macro MODIFY_MAILER_FLAGS: 402MODIFY_MAILER_FLAGS(`Name', `change') where Name is the first part of 403the macro Name_MAILER_FLAGS and change can be: flags that should 404be used directly (thus overriding the default value), or if it 405starts with `+' (`-') then those flags are added to (removed from) 406the default value. Example: 407 408 MODIFY_MAILER_FLAGS(`LOCAL', `+e') 409 410will add the flag `e' to LOCAL_MAILER_FLAGS. 411WARNING: The FEATUREs local_lmtp and local_procmail set LOCAL_MAILER_FLAGS 412unconditionally, i.e., without respecting any definitions in an 413OSTYPE setting. 414 415 416+---------+ 417| DOMAINS | 418+---------+ 419 420You will probably want to collect domain-dependent defines into one 421file, referenced by the DOMAIN macro. For example, the Berkeley 422domain file includes definitions for several internal distinguished 423hosts: 424 425UUCP_RELAY The host that will accept UUCP-addressed email. 426 If not defined, all UUCP sites must be directly 427 connected. 428BITNET_RELAY The host that will accept BITNET-addressed email. 429 If not defined, the .BITNET pseudo-domain won't work. 430DECNET_RELAY The host that will accept DECNET-addressed email. 431 If not defined, the .DECNET pseudo-domain and addresses 432 of the form node::user will not work. 433FAX_RELAY The host that will accept mail to the .FAX pseudo-domain. 434 The "fax" mailer overrides this value. 435LOCAL_RELAY The site that will handle unqualified names -- that 436 is, names without an @domain extension. 437 Normally MAIL_HUB is preferred for this function. 438 LOCAL_RELAY is mostly useful in conjunction with 439 FEATURE(stickyhost) -- see the discussion of 440 stickyhost below. If not set, they are assumed to 441 belong on this machine. This allows you to have a 442 central site to store a company- or department-wide 443 alias database. This only works at small sites, 444 and only with some user agents. 445LUSER_RELAY The site that will handle lusers -- that is, apparently 446 local names that aren't local accounts or aliases. To 447 specify a local user instead of a site, set this to 448 ``local:username''. 449 450Any of these can be either ``mailer:hostname'' (in which case the 451mailer is the internal mailer name, such as ``uucp-new'' and the hostname 452is the name of the host as appropriate for that mailer) or just a 453``hostname'', in which case a default mailer type (usually ``relay'', 454a variant on SMTP) is used. WARNING: if you have a wildcard MX 455record matching your domain, you probably want to define these to 456have a trailing dot so that you won't get the mail diverted back 457to yourself. 458 459The domain file can also be used to define a domain name, if needed 460(using "DD<domain>") and set certain site-wide features. If all hosts 461at your site masquerade behind one email name, you could also use 462MASQUERADE_AS here. 463 464You do not have to define a domain -- in particular, if you are a 465single machine sitting off somewhere, it is probably more work than 466it's worth. This is just a mechanism for combining "domain dependent 467knowledge" into one place. 468 469+---------+ 470| MAILERS | 471+---------+ 472 473There are fewer mailers supported in this version than the previous 474version, owing mostly to a simpler world. As a general rule, put the 475MAILER definitions last in your .mc file, and always put MAILER(`smtp') 476before MAILER(`uucp') and MAILER(`procmail') -- several features and 477definitions will modify the definition of mailers, and the smtp mailer 478modifies the UUCP mailer. Moreover, MAILER(`cyrus'), MAILER(`pop'), 479MAILER(`phquery'), and MAILER(`usenet') must be defined after 480MAILER(`local'). 481 482local The local and prog mailers. You will almost always 483 need these; the only exception is if you relay ALL 484 your mail to another site. This mailer is included 485 automatically. 486 487smtp The Simple Mail Transport Protocol mailer. This does 488 not hide hosts behind a gateway or another other 489 such hack; it assumes a world where everyone is 490 running the name server. This file actually defines 491 five mailers: "smtp" for regular (old-style) SMTP to 492 other servers, "esmtp" for extended SMTP to other 493 servers, "smtp8" to do SMTP to other servers without 494 converting 8-bit data to MIME (essentially, this is 495 your statement that you know the other end is 8-bit 496 clean even if it doesn't say so), "dsmtp" to do on 497 demand delivery, and "relay" for transmission to the 498 RELAY_HOST, LUSER_RELAY, or MAIL_HUB. 499 500uucp The UNIX-to-UNIX Copy Program mailer. Actually, this 501 defines two mailers, "uucp-old" (a.k.a. "uucp") and 502 "uucp-new" (a.k.a. "suucp"). The latter is for when you 503 know that the UUCP mailer at the other end can handle 504 multiple recipients in one transfer. If the smtp mailer 505 is also included in your configuration, two other mailers 506 ("uucp-dom" and "uucp-uudom") are also defined [warning: 507 you MUST specify MAILER(smtp) before MAILER(uucp)]. When you 508 include the uucp mailer, sendmail looks for all names in 509 class {U} and sends them to the uucp-old mailer; all 510 names in class {Y} are sent to uucp-new; and all 511 names in class {Z} are sent to uucp-uudom. Note that 512 this is a function of what version of rmail runs on 513 the receiving end, and hence may be out of your control. 514 See the section below describing UUCP mailers in more 515 detail. 516 517usenet Usenet (network news) delivery. If this is specified, 518 an extra rule is added to ruleset 0 that forwards all 519 local email for users named ``group.usenet'' to the 520 ``inews'' program. Note that this works for all groups, 521 and may be considered a security problem. 522 523fax Facsimile transmission. This is experimental and based 524 on Sam Leffler's HylaFAX software. For more information, 525 see http://www.hylafax.org/. 526 527pop Post Office Protocol. 528 529procmail An interface to procmail (does not come with sendmail). 530 This is designed to be used in mailertables. For example, 531 a common question is "how do I forward all mail for a given 532 domain to a single person?". If you have this mailer 533 defined, you could set up a mailertable reading: 534 535 host.com procmail:/etc/procmailrcs/host.com 536 537 with the file /etc/procmailrcs/host.com reading: 538 539 :0 # forward mail for host.com 540 ! -oi -f $1 person@other.host 541 542 This would arrange for (anything)@host.com to be sent 543 to person@other.host. Within the procmail script, $1 is 544 the name of the sender and $2 is the name of the recipient. 545 If you use this with FEATURE(`local_procmail'), the FEATURE 546 should be listed first. 547 548mail11 The DECnet mail11 mailer, useful only if you have the mail11 549 program from gatekeeper.dec.com:/pub/DEC/gwtools (and 550 DECnet, of course). This is for Phase IV DECnet support; 551 if you have Phase V at your site you may have additional 552 problems. 553 554phquery The phquery program. This is somewhat counterintuitively 555 referenced as the "ph" mailer internally. It can be used 556 to do CCSO name server lookups. The phquery program, which 557 this mailer uses, is distributed with the ph client. 558 559cyrus The cyrus and cyrusbb mailers. The cyrus mailer delivers to 560 a local cyrus user. this mailer can make use of the 561 "user+detail@local.host" syntax; it will deliver the mail to 562 the user's "detail" mailbox if the mailbox's ACL permits. 563 The cyrusbb mailer delivers to a system-wide cyrus mailbox 564 if the mailbox's ACL permits. The cyrus mailer must be 565 defined after the local mailer. 566 567qpage A mailer for QuickPage, a pager interface. See 568 http://www.qpage.org/ for further information. 569 570The local mailer accepts addresses of the form "user+detail", where 571the "+detail" is not used for mailbox matching but is available 572to certain local mail programs (in particular, see 573FEATURE(`local_procmail')). For example, "eric", "eric+sendmail", and 574"eric+sww" all indicate the same user, but additional arguments <null>, 575"sendmail", and "sww" may be provided for use in sorting mail. 576 577 578+----------+ 579| FEATURES | 580+----------+ 581 582Special features can be requested using the "FEATURE" macro. For 583example, the .mc line: 584 585 FEATURE(`use_cw_file') 586 587tells sendmail that you want to have it read an /etc/mail/local-host-names 588file to get values for class {w}. The FEATURE may contain up to 9 589optional parameters -- for example: 590 591 FEATURE(`mailertable', `dbm /usr/lib/mailertable') 592 593The default database map type for the table features can be set with 594 595 define(`DATABASE_MAP_TYPE', `dbm') 596 597which would set it to use ndbm databases. The default is the Berkeley DB 598hash database format. Note that you must still declare a database map type 599if you specify an argument to a FEATURE. DATABASE_MAP_TYPE is only used 600if no argument is given for the FEATURE. It must be specified before any 601feature that uses a map. 602 603Available features are: 604 605use_cw_file Read the file /etc/mail/local-host-names file to get 606 alternate names for this host. This might be used if you 607 were on a host that MXed for a dynamic set of other hosts. 608 If the set is static, just including the line "Cw<name1> 609 <name2> ..." (where the names are fully qualified domain 610 names) is probably superior. The actual filename can be 611 overridden by redefining confCW_FILE. 612 613use_ct_file Read the file /etc/mail/trusted-users file to get the 614 names of users that will be ``trusted'', that is, able to 615 set their envelope from address using -f without generating 616 a warning message. The actual filename can be overridden 617 by redefining confCT_FILE. 618 619redirect Reject all mail addressed to "address.REDIRECT" with 620 a ``551 User has moved; please try <address>'' message. 621 If this is set, you can alias people who have left 622 to their new address with ".REDIRECT" appended. 623 624nouucp Don't route UUCP addresses. This feature takes one 625 parameter: 626 `reject': reject addresses which have "!" in the local 627 part unless it originates from a system 628 that is allowed to relay. 629 `nospecial': don't do anything special with "!". 630 Warnings: 1. See the NOTICE in the ANTI-SPAM section. 631 2. don't remove "!" from OperatorChars if `reject' is 632 given as parameter. 633 634nocanonify Don't pass addresses to $[ ... $] for canonification 635 by default, i.e., host/domain names are considered canonical, 636 except for unqualified names, which must not be used in this 637 mode (violation of the standard). It can be changed by 638 setting the DaemonPortOptions modifiers (M=). That is, 639 FEATURE(`nocanonify') will be overridden by setting the 640 'c' flag. Conversely, if FEATURE(`nocanonify') is not used, 641 it can be emulated by setting the 'C' flag 642 (DaemonPortOptions=Modifiers=C). This would generally only 643 be used by sites that only act as mail gateways or which have 644 user agents that do full canonification themselves. You may 645 also want to use 646 "define(`confBIND_OPTS', `-DNSRCH -DEFNAMES')" to turn off 647 the usual resolver options that do a similar thing. 648 649 An exception list for FEATURE(`nocanonify') can be 650 specified with CANONIFY_DOMAIN or CANONIFY_DOMAIN_FILE, 651 i.e., a list of domains which are nevertheless passed to 652 $[ ... $] for canonification. This is useful to turn on 653 canonification for local domains, e.g., use 654 CANONIFY_DOMAIN(`my.domain my') to canonify addresses 655 which end in "my.domain" or "my". 656 Another way to require canonification in the local 657 domain is CANONIFY_DOMAIN(`$=m'). 658 659 A trailing dot is added to addresses with more than 660 one component in it such that other features which 661 expect a trailing dot (e.g., virtusertable) will 662 still work. 663 664 If `canonify_hosts' is specified as parameter, i.e., 665 FEATURE(`nocanonify', `canonify_hosts'), then 666 addresses which have only a hostname, e.g., 667 <user@host>, will be canonified (and hopefully fully 668 qualified), too. 669 670stickyhost This feature is sometimes used with LOCAL_RELAY, 671 although it can be used for a different effect with 672 MAIL_HUB. 673 674 When used without MAIL_HUB, email sent to 675 "user@local.host" are marked as "sticky" -- that 676 is, the local addresses aren't matched against UDB, 677 don't go through ruleset 5, and are not forwarded to 678 the LOCAL_RELAY (if defined). 679 680 With MAIL_HUB, mail addressed to "user@local.host" 681 is forwarded to the mail hub, with the envelope 682 address still remaining "user@local.host". 683 Without stickyhost, the envelope would be changed 684 to "user@mail_hub", in order to protect against 685 mailing loops. 686 687mailertable Include a "mailer table" which can be used to override 688 routing for particular domains (which are not in class {w}, 689 i.e. local host names). The argument of the FEATURE may be 690 the key definition. If none is specified, the definition 691 used is: 692 693 hash /etc/mail/mailertable 694 695 Keys in this database are fully qualified domain names 696 or partial domains preceded by a dot -- for example, 697 "vangogh.CS.Berkeley.EDU" or ".CS.Berkeley.EDU". As a 698 special case of the latter, "." matches any domain not 699 covered by other keys. Values must be of the form: 700 mailer:domain 701 where "mailer" is the internal mailer name, and "domain" 702 is where to send the message. These maps are not 703 reflected into the message header. As a special case, 704 the forms: 705 local:user 706 will forward to the indicated user using the local mailer, 707 local: 708 will forward to the original user in the e-mail address 709 using the local mailer, and 710 error:code message 711 error:D.S.N:code message 712 will give an error message with the indicated SMTP reply 713 code and message, where D.S.N is an RFC 1893 compliant 714 error code. 715 716domaintable Include a "domain table" which can be used to provide 717 domain name mapping. Use of this should really be 718 limited to your own domains. It may be useful if you 719 change names (e.g., your company changes names from 720 oldname.com to newname.com). The argument of the 721 FEATURE may be the key definition. If none is specified, 722 the definition used is: 723 724 hash /etc/mail/domaintable 725 726 The key in this table is the domain name; the value is 727 the new (fully qualified) domain. Anything in the 728 domaintable is reflected into headers; that is, this 729 is done in ruleset 3. 730 731bitdomain Look up bitnet hosts in a table to try to turn them into 732 internet addresses. The table can be built using the 733 bitdomain program contributed by John Gardiner Myers. 734 The argument of the FEATURE may be the key definition; if 735 none is specified, the definition used is: 736 737 hash /etc/mail/bitdomain 738 739 Keys are the bitnet hostname; values are the corresponding 740 internet hostname. 741 742uucpdomain Similar feature for UUCP hosts. The default map definition 743 is: 744 745 hash /etc/mail/uudomain 746 747 At the moment there is no automagic tool to build this 748 database. 749 750always_add_domain 751 Include the local host domain even on locally delivered 752 mail. Normally it is not added on unqualified names. 753 However, if you use a shared message store but do not use 754 the same user name space everywhere, you may need the host 755 name on local names. 756 757allmasquerade If masquerading is enabled (using MASQUERADE_AS), this 758 feature will cause recipient addresses to also masquerade 759 as being from the masquerade host. Normally they get 760 the local hostname. Although this may be right for 761 ordinary users, it can break local aliases. For example, 762 if you send to "localalias", the originating sendmail will 763 find that alias and send to all members, but send the 764 message with "To: localalias@masqueradehost". Since that 765 alias likely does not exist, replies will fail. Use this 766 feature ONLY if you can guarantee that the ENTIRE 767 namespace on your masquerade host supersets all the 768 local entries. 769 770limited_masquerade 771 Normally, any hosts listed in class {w} are masqueraded. If 772 this feature is given, only the hosts listed in class {M} (see 773 below: MASQUERADE_DOMAIN) are masqueraded. This is useful 774 if you have several domains with disjoint namespaces hosted 775 on the same machine. 776 777masquerade_entire_domain 778 If masquerading is enabled (using MASQUERADE_AS) and 779 MASQUERADE_DOMAIN (see below) is set, this feature will 780 cause addresses to be rewritten such that the masquerading 781 domains are actually entire domains to be hidden. All 782 hosts within the masquerading domains will be rewritten 783 to the masquerade name (used in MASQUERADE_AS). For example, 784 if you have: 785 786 MASQUERADE_AS(`masq.com') 787 MASQUERADE_DOMAIN(`foo.org') 788 MASQUERADE_DOMAIN(`bar.com') 789 790 then *foo.org and *bar.com are converted to masq.com. Without 791 this feature, only foo.org and bar.com are masqueraded. 792 793 NOTE: only domains within your jurisdiction and 794 current hierarchy should be masqueraded using this. 795 796genericstable This feature will cause unqualified addresses (i.e., without 797 a domain) and addresses with a domain listed in class {G} 798 to be looked up in a map and turned into another ("generic") 799 form, which can change both the domain name and the user name. 800 This is similar to the userdb functionality. The same types of 801 addresses as for masquerading are looked up, i.e., only header 802 sender addresses unless the allmasquerade and/or 803 masquerade_envelope features are given. Qualified addresses 804 must have the domain part in class {G}; entries can 805 be added to this class by the macros GENERICS_DOMAIN or 806 GENERICS_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 807 MASQUERADE_DOMAIN_FILE, see below). 808 809 The argument of FEATURE(`genericstable') may be the map 810 definition; the default map definition is: 811 812 hash /etc/mail/genericstable 813 814 The key for this table is either the full address, the domain 815 (with a leading @; the localpart is passed as first argument) 816 or the unqualified username (tried in the order mentioned); 817 the value is the new user address. If the new user address 818 does not include a domain, it will be qualified in the standard 819 manner, i.e., using $j or the masquerade name. Note that the 820 address being looked up must be fully qualified. For local 821 mail, it is necessary to use FEATURE(`always_add_domain') 822 for the addresses to be qualified. 823 The "+detail" of an address is passed as %1, so entries like 824 825 old+*@foo.org new+%1@example.com 826 gen+*@foo.org %1@example.com 827 828 and other forms are possible. 829 830generics_entire_domain 831 If the genericstable is enabled and GENERICS_DOMAIN or 832 GENERICS_DOMAIN_FILE is used, this feature will cause 833 addresses to be searched in the map if their domain 834 parts are subdomains of elements in class {G}. 835 836virtusertable A domain-specific form of aliasing, allowing multiple 837 virtual domains to be hosted on one machine. For example, 838 if the virtuser table contained: 839 840 info@foo.com foo-info 841 info@bar.com bar-info 842 joe@bar.com error:nouser No such user here 843 jax@bar.com error:D.S.N:unavailable Address invalid 844 @baz.org jane@example.net 845 846 then mail addressed to info@foo.com will be sent to the 847 address foo-info, mail addressed to info@bar.com will be 848 delivered to bar-info, and mail addressed to anyone at baz.org 849 will be sent to jane@example.net, mail to joe@bar.com will 850 be rejected with the specified error message, and mail to 851 jax@bar.com will also have a RFC 1893 compliant error code 852 D.S.N. 853 854 The username from the original address is passed 855 as %1 allowing: 856 857 @foo.org %1@example.com 858 859 meaning someone@foo.org will be sent to someone@example.com. 860 Additionally, if the local part consists of "user+detail" 861 then "detail" is passed as %2 when a match against user+* 862 is attempted, so entries like 863 864 old+*@foo.org new+%2@example.com 865 gen+*@foo.org %2@example.com 866 +*@foo.org %1+%2@example.com 867 868 and other forms are possible. Note: to preserve "+detail" 869 for a default case (@domain) +*@domain must be used as 870 exemplified above. 871 872 All the host names on the left hand side (foo.com, bar.com, 873 and baz.org) must be in class {w} or class {VirtHost}, the 874 latter can be defined by the macros VIRTUSER_DOMAIN or 875 VIRTUSER_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 876 MASQUERADE_DOMAIN_FILE, see below). If VIRTUSER_DOMAIN or 877 VIRTUSER_DOMAIN_FILE is used, then the entries of class 878 {VirtHost} are added to class {R}, i.e., relaying is allowed 879 to (and from) those domains. The default map definition is: 880 881 hash /etc/mail/virtusertable 882 883 A new definition can be specified as the second argument of 884 the FEATURE macro, such as 885 886 FEATURE(`virtusertable', `dbm /etc/mail/virtusers') 887 888virtuser_entire_domain 889 If the virtusertable is enabled and VIRTUSER_DOMAIN or 890 VIRTUSER_DOMAIN_FILE is used, this feature will cause 891 addresses to be searched in the map if their domain 892 parts are subdomains of elements in class {VirtHost}. 893 894ldap_routing Implement LDAP-based e-mail recipient routing according to 895 the Internet Draft draft-lachman-laser-ldap-mail-routing-01. 896 This provides a method to re-route addresses with a 897 domain portion in class {LDAPRoute} to either a 898 different mail host or a different address. Hosts can 899 be added to this class using LDAPROUTE_DOMAIN and 900 LDAPROUTE_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 901 MASQUERADE_DOMAIN_FILE, see below). 902 903 See the LDAP ROUTING section below for more information. 904 905nodns If you aren't running DNS at your site (for example, 906 you are UUCP-only connected). It's hard to consider 907 this a "feature", but hey, it had to go somewhere. 908 Actually, as of 8.7 this is a no-op -- remove "dns" from 909 the hosts service switch entry instead. 910 911nullclient This is a special case -- it creates a configuration file 912 containing nothing but support for forwarding all mail to a 913 central hub via a local SMTP-based network. The argument 914 is the name of that hub. 915 916 The only other feature that should be used in conjunction 917 with this one is FEATURE(`nocanonify'). No mailers 918 should be defined. No aliasing or forwarding is done. 919 920local_lmtp Use an LMTP capable local mailer. The argument to this 921 feature is the pathname of an LMTP capable mailer. By 922 default, mail.local is used. This is expected to be the 923 mail.local which came with the 8.9 distribution which is 924 LMTP capable. The path to mail.local is set by the 925 confEBINDIR m4 variable -- making the default 926 LOCAL_MAILER_PATH /usr/libexec/mail.local. 927 WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, 928 i.e., without respecting any definitions in an OSTYPE setting. 929 930local_procmail Use procmail or another delivery agent as the local mailer. 931 The argument to this feature is the pathname of the 932 delivery agent, which defaults to PROCMAIL_MAILER_PATH. 933 Note that this does NOT use PROCMAIL_MAILER_FLAGS or 934 PROCMAIL_MAILER_ARGS for the local mailer; tweak 935 LOCAL_MAILER_FLAGS and LOCAL_MAILER_ARGS instead, or 936 specify the appropriate parameters. When procmail is used, 937 the local mailer can make use of the 938 "user+indicator@local.host" syntax; normally the +indicator 939 is just tossed, but by default it is passed as the -a 940 argument to procmail. 941 942 This feature can take up to three arguments: 943 944 1. Path to the mailer program 945 [default: /usr/local/bin/procmail] 946 2. Argument vector including name of the program 947 [default: procmail -Y -a $h -d $u] 948 3. Flags for the mailer [default: SPfhn9] 949 950 Empty arguments cause the defaults to be taken. 951 952 For example, this allows it to use the maildrop 953 (http://www.flounder.net/~mrsam/maildrop/) mailer instead 954 by specifying: 955 956 FEATURE(`local_procmail', `/usr/local/bin/maildrop', 957 `maildrop -d $u') 958 959 or scanmails using: 960 961 FEATURE(`local_procmail', `/usr/local/bin/scanmails') 962 963 WARNING: This feature sets LOCAL_MAILER_FLAGS unconditionally, 964 i.e., without respecting any definitions in an OSTYPE setting. 965 966bestmx_is_local Accept mail as though locally addressed for any host that 967 lists us as the best possible MX record. This generates 968 additional DNS traffic, but should be OK for low to 969 medium traffic hosts. The argument may be a set of 970 domains, which will limit the feature to only apply to 971 these domains -- this will reduce unnecessary DNS 972 traffic. THIS FEATURE IS FUNDAMENTALLY INCOMPATIBLE WITH 973 WILDCARD MX RECORDS!!! If you have a wildcard MX record 974 that matches your domain, you cannot use this feature. 975 976smrsh Use the SendMail Restricted SHell (smrsh) provided 977 with the distribution instead of /bin/sh for mailing 978 to programs. This improves the ability of the local 979 system administrator to control what gets run via 980 e-mail. If an argument is provided it is used as the 981 pathname to smrsh; otherwise, the path defined by 982 confEBINDIR is used for the smrsh binary -- by default, 983 /usr/libexec/smrsh is assumed. 984 985promiscuous_relay 986 By default, the sendmail configuration files do not permit 987 mail relaying (that is, accepting mail from outside your 988 local host (class {w}) and sending it to another host than 989 your local host). This option sets your site to allow 990 mail relaying from any site to any site. In almost all 991 cases, it is better to control relaying more carefully 992 with the access map, class {R}, or authentication. Domains 993 can be added to class {R} by the macros RELAY_DOMAIN or 994 RELAY_DOMAIN_FILE (analogously to MASQUERADE_DOMAIN and 995 MASQUERADE_DOMAIN_FILE, see below). 996 997relay_entire_domain 998 By default, only hosts listed as RELAY in the access db 999 will be allowed to relay. This option also allows any 1000 host in your domain as defined by class {m}. 1001 1002relay_hosts_only 1003 By default, names that are listed as RELAY in the access 1004 db and class {R} are domain names, not host names. 1005 For example, if you specify ``foo.com'', then mail to or 1006 from foo.com, abc.foo.com, or a.very.deep.domain.foo.com 1007 will all be accepted for relaying. This feature changes 1008 the behaviour to lookup individual host names only. 1009 1010relay_based_on_MX 1011 Turns on the ability to allow relaying based on the MX 1012 records of the host portion of an incoming recipient; that 1013 is, if an MX record for host foo.com points to your site, 1014 you will accept and relay mail addressed to foo.com. See 1015 description below for more information before using this 1016 feature. Also, see the KNOWNBUGS entry regarding bestmx 1017 map lookups. 1018 1019 FEATURE(`relay_based_on_MX') does not necessarily allow 1020 routing of these messages which you expect to be allowed, 1021 if route address syntax (or %-hack syntax) is used. If 1022 this is a problem, add entries to the access-table or use 1023 FEATURE(`loose_relay_check'). 1024 1025relay_mail_from 1026 Allows relaying if the mail sender is listed as RELAY in 1027 the access map. If an optional argument `domain' is given, 1028 the domain portion of the mail sender is checked too. 1029 This should only be used if absolutely necessary as the 1030 sender address can be easily forged. Use of this feature 1031 requires the "From:" tag be prepended to the key in the 1032 access map; see the discussion of tags and 1033 FEATURE(`relay_mail_from') in the section on ANTI-SPAM 1034 CONFIGURATION CONTROL. 1035 1036relay_local_from 1037 Allows relaying if the domain portion of the mail sender 1038 is a local host. This should only be used if absolutely 1039 necessary as it opens a window for spammers. Specifically, 1040 they can send mail to your mail server that claims to be 1041 from your domain (either directly or via a routed address), 1042 and you will go ahead and relay it out to arbitrary hosts 1043 on the Internet. 1044 1045accept_unqualified_senders 1046 Normally, MAIL FROM: commands in the SMTP session will be 1047 refused if the connection is a network connection and the 1048 sender address does not include a domain name. If your 1049 setup sends local mail unqualified (i.e., MAIL FROM: <joe>), 1050 you will need to use this feature to accept unqualified 1051 sender addresses. Setting the DaemonPortOptions modifier 1052 'u' overrides the default behavior, i.e., unqualified 1053 addresses are accepted even without this FEATURE. 1054 If this FEATURE is not used, the DaemonPortOptions modifier 1055 'f' can be used to enforce fully qualified addresses. 1056 1057accept_unresolvable_domains 1058 Normally, MAIL FROM: commands in the SMTP session will be 1059 refused if the host part of the argument to MAIL FROM: 1060 cannot be located in the host name service (e.g., an A or 1061 MX record in DNS). If you are inside a firewall that has 1062 only a limited view of the Internet host name space, this 1063 could cause problems. In this case you probably want to 1064 use this feature to accept all domains on input, even if 1065 they are unresolvable. 1066 1067access_db Turns on the access database feature. The access db gives 1068 you the ability to allow or refuse to accept mail from 1069 specified domains for administrative reasons. By default, 1070 the access database specification is: 1071 1072 hash /etc/mail/access 1073 1074 The format of the database is described in the anti-spam 1075 configuration control section later in this document. 1076 1077blacklist_recipients 1078 Turns on the ability to block incoming mail for certain 1079 recipient usernames, hostnames, or addresses. For 1080 example, you can block incoming mail to user nobody, 1081 host foo.mydomain.com, or guest@bar.mydomain.com. 1082 These specifications are put in the access db as 1083 described in the anti-spam configuration control section 1084 later in this document. 1085 1086delay_checks The rulesets check_mail and check_relay will not be called 1087 when a client connects or issues a MAIL command, respectively. 1088 Instead, those rulesets will be called by the check_rcpt 1089 ruleset; they will be skipped under certain circumstances. 1090 See "Delay all checks" in "ANTI-SPAM CONFIGURATION CONTROL". 1091 1092rbl This feature is deprecated! Please use dnsbl instead. 1093 Turns on rejection of hosts found in the Realtime Blackhole 1094 List. If an argument is provided it is used as the domain 1095 in which blocked hosts are listed; otherwise, the main RBL 1096 domain rbl.maps.vix.com is used (see NOTE below). For 1097 details, see http://maps.vix.com/rbl/. 1098 1099dnsbl Turns on rejection of hosts found in an DNS based rejection 1100 list. If an argument is provided it is used as the domain 1101 in which blocked hosts are listed; otherwise it defaults to 1102 blackholes.mail-abuse.org. An explanation for an DNS based 1103 rejection list can be found http://mail-abuse.org/rbl/. A 1104 second argument can be used to change the default error 1105 message of Mail from $&{client_addr} refused by blackhole site 1106 SERVER where SERVER is replaced by the first argument. This 1107 feature can be included several times to query different DNS 1108 based rejection lists. 1109 1110 NOTE: The default DNS blacklist, blackholes.mail-abuse.org, 1111 is a service offered by the Mail Abuse Prevention System 1112 (MAPS). As of July 31, 2001, MAPS is a subscription 1113 service, so using that network address won't work if you 1114 haven't subscribed. Contact MAPS to subscribe 1115 (http://mail-abuse.org/). 1116 1117loose_relay_check 1118 Normally, if % addressing is used for a recipient, e.g. 1119 user%site@othersite, and othersite is in class {R}, the 1120 check_rcpt ruleset will strip @othersite and recheck 1121 user@site for relaying. This feature changes that 1122 behavior. It should not be needed for most installations. 1123 1124no_default_msa Don't generate the default MSA daemon, i.e., 1125 DAEMON_OPTIONS(`Port=587,Name=MSA,M=E') 1126 To define a MSA daemon with other parameters, use this 1127 FEATURE and introduce new settings via DAEMON_OPTIONS(). 1128 1129+-------+ 1130| HACKS | 1131+-------+ 1132 1133Some things just can't be called features. To make this clear, 1134they go in the hack subdirectory and are referenced using the HACK 1135macro. These will tend to be site-dependent. The release 1136includes the Berkeley-dependent "cssubdomain" hack (that makes 1137sendmail accept local names in either Berkeley.EDU or CS.Berkeley.EDU; 1138this is intended as a short-term aid while moving hosts into 1139subdomains. 1140 1141 1142+--------------------+ 1143| SITE CONFIGURATION | 1144+--------------------+ 1145 1146 ***************************************************** 1147 * This section is really obsolete, and is preserved * 1148 * only for back compatibility. You should plan on * 1149 * using mailertables for new installations. In * 1150 * particular, it doesn't work for the newer forms * 1151 * of UUCP mailers, such as uucp-uudom. * 1152 ***************************************************** 1153 1154Complex sites will need more local configuration information, such as 1155lists of UUCP hosts they speak with directly. This can get a bit more 1156tricky. For an example of a "complex" site, see cf/ucbvax.mc. 1157 1158The SITECONFIG macro allows you to indirectly reference site-dependent 1159configuration information stored in the siteconfig subdirectory. For 1160example, the line 1161 1162 SITECONFIG(`uucp.ucbvax', `ucbvax', `U') 1163 1164reads the file uucp.ucbvax for local connection information. The 1165second parameter is the local name (in this case just "ucbvax" since 1166it is locally connected, and hence a UUCP hostname). The third 1167parameter is the name of both a macro to store the local name (in 1168this case, {U}) and the name of the class (e.g., {U}) in which to store 1169the host information read from the file. Another SITECONFIG line reads 1170 1171 SITECONFIG(`uucp.ucbarpa', `ucbarpa.Berkeley.EDU', `W') 1172 1173This says that the file uucp.ucbarpa contains the list of UUCP sites 1174connected to ucbarpa.Berkeley.EDU. Class {W} will be used to 1175store this list, and $W is defined to be ucbarpa.Berkeley.EDU, that 1176is, the name of the relay to which the hosts listed in uucp.ucbarpa 1177are connected. [The machine ucbarpa is gone now, but this 1178out-of-date configuration file has been left around to demonstrate 1179how you might do this.] 1180 1181Note that the case of SITECONFIG with a third parameter of ``U'' is 1182special; the second parameter is assumed to be the UUCP name of the 1183local site, rather than the name of a remote site, and the UUCP name 1184is entered into class {w} (the list of local hostnames) as $U.UUCP. 1185 1186The siteconfig file (e.g., siteconfig/uucp.ucbvax.m4) contains nothing 1187more than a sequence of SITE macros describing connectivity. For 1188example: 1189 1190 SITE(`cnmat') 1191 SITE(`sgi olympus') 1192 1193The second example demonstrates that you can use two names on the 1194same line; these are usually aliases for the same host (or are at 1195least in the same company). 1196 1197 1198+--------------------+ 1199| USING UUCP MAILERS | 1200+--------------------+ 1201 1202It's hard to get UUCP mailers right because of the extremely ad hoc 1203nature of UUCP addressing. These config files are really designed 1204for domain-based addressing, even for UUCP sites. 1205 1206There are four UUCP mailers available. The choice of which one to 1207use is partly a matter of local preferences and what is running at 1208the other end of your UUCP connection. Unlike good protocols that 1209define what will go over the wire, UUCP uses the policy that you 1210should do what is right for the other end; if they change, you have 1211to change. This makes it hard to do the right thing, and discourages 1212people from updating their software. In general, if you can avoid 1213UUCP, please do. 1214 1215The major choice is whether to go for a domainized scheme or a 1216non-domainized scheme. This depends entirely on what the other 1217end will recognize. If at all possible, you should encourage the 1218other end to go to a domain-based system -- non-domainized addresses 1219don't work entirely properly. 1220 1221The four mailers are: 1222 1223 uucp-old (obsolete name: "uucp") 1224 This is the oldest, the worst (but the closest to UUCP) way of 1225 sending messages accros UUCP connections. It does bangify 1226 everything and prepends $U (your UUCP name) to the sender's 1227 address (which can already be a bang path itself). It can 1228 only send to one address at a time, so it spends a lot of 1229 time copying duplicates of messages. Avoid this if at all 1230 possible. 1231 1232 uucp-new (obsolete name: "suucp") 1233 The same as above, except that it assumes that in one rmail 1234 command you can specify several recipients. It still has a 1235 lot of other problems. 1236 1237 uucp-dom 1238 This UUCP mailer keeps everything as domain addresses. 1239 Basically, it uses the SMTP mailer rewriting rules. This mailer 1240 is only included if MAILER(`smtp') is also specified. 1241 1242 Unfortunately, a lot of UUCP mailer transport agents require 1243 bangified addresses in the envelope, although you can use 1244 domain-based addresses in the message header. (The envelope 1245 shows up as the From_ line on UNIX mail.) So.... 1246 1247 uucp-uudom 1248 This is a cross between uucp-new (for the envelope addresses) 1249 and uucp-dom (for the header addresses). It bangifies the 1250 envelope sender (From_ line in messages) without adding the 1251 local hostname, unless there is no host name on the address 1252 at all (e.g., "wolf") or the host component is a UUCP host name 1253 instead of a domain name ("somehost!wolf" instead of 1254 "some.dom.ain!wolf"). This is also included only if MAILER(`smtp') 1255 is also specified. 1256 1257Examples: 1258 1259On host grasp.insa-lyon.fr (UUCP host name "grasp"), the following 1260summarizes the sender rewriting for various mailers. 1261 1262Mailer sender rewriting in the envelope 1263------ ------ ------------------------- 1264uucp-{old,new} wolf grasp!wolf 1265uucp-dom wolf wolf@grasp.insa-lyon.fr 1266uucp-uudom wolf grasp.insa-lyon.fr!wolf 1267 1268uucp-{old,new} wolf@fr.net grasp!fr.net!wolf 1269uucp-dom wolf@fr.net wolf@fr.net 1270uucp-uudom wolf@fr.net fr.net!wolf 1271 1272uucp-{old,new} somehost!wolf grasp!somehost!wolf 1273uucp-dom somehost!wolf somehost!wolf@grasp.insa-lyon.fr 1274uucp-uudom somehost!wolf grasp.insa-lyon.fr!somehost!wolf 1275 1276If you are using one of the domainized UUCP mailers, you really want 1277to convert all UUCP addresses to domain format -- otherwise, it will 1278do it for you (and probably not the way you expected). For example, 1279if you have the address foo!bar!baz (and you are not sending to foo), 1280the heuristics will add the @uucp.relay.name or @local.host.name to 1281this address. However, if you map foo to foo.host.name first, it 1282will not add the local hostname. You can do this using the uucpdomain 1283feature. 1284 1285 1286+-------------------+ 1287| TWEAKING RULESETS | 1288+-------------------+ 1289 1290For more complex configurations, you can define special rules. 1291The macro LOCAL_RULE_3 introduces rules that are used in canonicalizing 1292the names. Any modifications made here are reflected in the header. 1293 1294A common use is to convert old UUCP addresses to SMTP addresses using 1295the UUCPSMTP macro. For example: 1296 1297 LOCAL_RULE_3 1298 UUCPSMTP(`decvax', `decvax.dec.com') 1299 UUCPSMTP(`research', `research.att.com') 1300 1301will cause addresses of the form "decvax!user" and "research!user" 1302to be converted to "user@decvax.dec.com" and "user@research.att.com" 1303respectively. 1304 1305This could also be used to look up hosts in a database map: 1306 1307 LOCAL_RULE_3 1308 R$* < @ $+ > $* $: $1 < @ $(hostmap $2 $) > $3 1309 1310This map would be defined in the LOCAL_CONFIG portion, as shown below. 1311 1312Similarly, LOCAL_RULE_0 can be used to introduce new parsing rules. 1313For example, new rules are needed to parse hostnames that you accept 1314via MX records. For example, you might have: 1315 1316 LOCAL_RULE_0 1317 R$+ <@ host.dom.ain.> $#uucp $@ cnmat $: $1 < @ host.dom.ain.> 1318 1319You would use this if you had installed an MX record for cnmat.Berkeley.EDU 1320pointing at this host; this rule catches the message and forwards it on 1321using UUCP. 1322 1323You can also tweak rulesets 1 and 2 using LOCAL_RULE_1 and LOCAL_RULE_2. 1324These rulesets are normally empty. 1325 1326A similar macro is LOCAL_CONFIG. This introduces lines added after the 1327boilerplate option setting but before rulesets. Do not declare rulesets in 1328the LOCAL_CONFIG section. It can be used to declare local database maps or 1329whatever. For example: 1330 1331 LOCAL_CONFIG 1332 Khostmap hash /etc/mail/hostmap 1333 Kyplocal nis -m hosts.byname 1334 1335 1336+---------------------------+ 1337| MASQUERADING AND RELAYING | 1338+---------------------------+ 1339 1340You can have your host masquerade as another using 1341 1342 MASQUERADE_AS(`host.domain') 1343 1344This causes mail being sent to be labeled as coming from the 1345indicated host.domain, rather than $j. One normally masquerades as 1346one of one's own subdomains (for example, it's unlikely that 1347Berkeley would choose to masquerade as an MIT site). This 1348behaviour is modified by a plethora of FEATUREs; in particular, see 1349masquerade_envelope, allmasquerade, limited_masquerade, and 1350masquerade_entire_domain. 1351 1352The masquerade name is not normally canonified, so it is important 1353that it be your One True Name, that is, fully qualified and not a 1354CNAME. However, if you use a CNAME, the receiving side may canonify 1355it for you, so don't think you can cheat CNAME mapping this way. 1356 1357Normally the only addresses that are masqueraded are those that come 1358from this host (that is, are either unqualified or in class {w}, the list 1359of local domain names). You can augment this list, which is realized 1360by class {M} using 1361 1362 MASQUERADE_DOMAIN(`otherhost.domain') 1363 1364The effect of this is that although mail to user@otherhost.domain 1365will not be delivered locally, any mail including any user@otherhost.domain 1366will, when relayed, be rewritten to have the MASQUERADE_AS address. 1367This can be a space-separated list of names. 1368 1369If these names are in a file, you can use 1370 1371 MASQUERADE_DOMAIN_FILE(`filename') 1372 1373to read the list of names from the indicated file (i.e., to add 1374elements to class {M}). 1375 1376To exempt hosts or subdomains from being masqueraded, you can use 1377 1378 MASQUERADE_EXCEPTION(`host.domain') 1379 1380This can come handy if you want to masquerade a whole domain 1381except for one (or a few) host(s). 1382 1383Normally only header addresses are masqueraded. If you want to 1384masquerade the envelope as well, use 1385 1386 FEATURE(`masquerade_envelope') 1387 1388There are always users that need to be "exposed" -- that is, their 1389internal site name should be displayed instead of the masquerade name. 1390Root is an example (which has been "exposed" by default prior to 8.10). 1391You can add users to this list using 1392 1393 EXPOSED_USER(`usernames') 1394 1395This adds users to class {E}; you could also use something like 1396 1397 FE/etc/mail/exposed-users 1398 1399You can also arrange to relay all unqualified names (that is, names 1400without @host) to a relay host. For example, if you have a central 1401email server, you might relay to that host so that users don't have 1402to have .forward files or aliases. You can do this using 1403 1404 define(`LOCAL_RELAY', `mailer:hostname') 1405 1406The ``mailer:'' can be omitted, in which case the mailer defaults to 1407"relay". There are some user names that you don't want relayed, perhaps 1408because of local aliases. A common example is root, which may be 1409locally aliased. You can add entries to this list using 1410 1411 LOCAL_USER(`usernames') 1412 1413This adds users to class {L}; you could also use something like 1414 1415 FL/etc/mail/local-users 1416 1417If you want all incoming mail sent to a centralized hub, as for a 1418shared /var/spool/mail scheme, use 1419 1420 define(`MAIL_HUB', `mailer:hostname') 1421 1422Again, ``mailer:'' defaults to "relay". If you define both LOCAL_RELAY 1423and MAIL_HUB _AND_ you have FEATURE(`stickyhost'), unqualified names will 1424be sent to the LOCAL_RELAY and other local names will be sent to MAIL_HUB. 1425Note: there is a (long standing) bug which keeps this combination from 1426working for addresses of the form user+detail. 1427Names in class {L} will be delivered locally, so you MUST have aliases or 1428.forward files for them. 1429 1430For example, if you are on machine mastodon.CS.Berkeley.EDU and you have 1431FEATURE(`stickyhost'), the following combinations of settings will have the 1432indicated effects: 1433 1434email sent to.... eric eric@mastodon.CS.Berkeley.EDU 1435 1436LOCAL_RELAY set to mail.CS.Berkeley.EDU (delivered locally) 1437mail.CS.Berkeley.EDU (no local aliasing) (aliasing done) 1438 1439MAIL_HUB set to mammoth.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU 1440mammoth.CS.Berkeley.EDU (aliasing done) (aliasing done) 1441 1442Both LOCAL_RELAY and mail.CS.Berkeley.EDU mammoth.CS.Berkeley.EDU 1443MAIL_HUB set as above (no local aliasing) (aliasing done) 1444 1445If you do not have FEATURE(`stickyhost') set, then LOCAL_RELAY and 1446MAIL_HUB act identically, with MAIL_HUB taking precedence. 1447 1448If you want all outgoing mail to go to a central relay site, define 1449SMART_HOST as well. Briefly: 1450 1451 LOCAL_RELAY applies to unqualified names (e.g., "eric"). 1452 MAIL_HUB applies to names qualified with the name of the 1453 local host (e.g., "eric@mastodon.CS.Berkeley.EDU"). 1454 SMART_HOST applies to names qualified with other hosts or 1455 bracketed addresses (e.g., "eric@mastodon.CS.Berkeley.EDU" 1456 or "eric@[127.0.0.1]"). 1457 1458However, beware that other relays (e.g., UUCP_RELAY, BITNET_RELAY, 1459DECNET_RELAY, and FAX_RELAY) take precedence over SMART_HOST, so if you 1460really want absolutely everything to go to a single central site you will 1461need to unset all the other relays -- or better yet, find or build a 1462minimal config file that does this. 1463 1464For duplicate suppression to work properly, the host name is best 1465specified with a terminal dot: 1466 1467 define(`MAIL_HUB', `host.domain.') 1468 note the trailing dot ---^ 1469 1470 1471+--------------+ 1472| LDAP ROUTING | 1473+--------------+ 1474 1475FEATURE(`ldap_routing') can be used to implement the IETF Internet Draft 1476LDAP Schema for Intranet Mail Routing 1477(draft-lachman-laser-ldap-mail-routing-01). This feature enables 1478LDAP-based rerouting of a particular address to either a different host 1479or a different address. The LDAP lookup is first attempted on the full 1480address (e.g., user@example.com) and then on the domain portion 1481(e.g., @example.com). Be sure to setup your domain for LDAP routing using 1482LDAPROUTE_DOMAIN(), e.g.: 1483 1484 LDAPROUTE_DOMAIN(`example.com') 1485 1486By default, the feature will use the schemas as specified in the draft 1487and will not reject addresses not found by the LDAP lookup. However, 1488this behavior can be changed by giving additional arguments to the FEATURE() 1489command: 1490 1491 FEATURE(`ldap_routing', <mailHost>, <mailRoutingAddress>, <bounce>) 1492 1493where <mailHost> is a map definition describing how to lookup an alternative 1494mail host for a particular address; <mailRoutingAddress> is a map definition 1495describing how to lookup an alternative address for a particular address; and 1496the <bounce> argument, if present and not the word "passthru", dictates 1497that mail should be bounced if neither a mailHost nor mailRoutingAddress 1498is found. 1499 1500The default <mailHost> map definition is: 1501 1502 ldap -1 -v mailHost -k (&(objectClass=inetLocalMailRecipient) 1503 (mailLocalAddress=%0)) 1504 1505The default <mailRoutingAddress> map definition is: 1506 1507 ldap -1 -v mailRoutingAddress -k (&(objectClass=inetLocalMailRecipient) 1508 (mailLocalAddress=%0)) 1509 1510Note that neither includes the LDAP server hostname (-h server) or base DN 1511(-b o=org,c=COUNTRY), both necessary for LDAP queries. It is presumed that 1512your .mc file contains a setting for the confLDAP_DEFAULT_SPEC option with 1513these settings. If this is not the case, the map definitions should be 1514changed as described above. 1515 1516The following possibilities exist as a result of an LDAP lookup on an 1517address: 1518 1519 mailHost is mailRoutingAddress is Results in 1520 ----------- --------------------- ---------- 1521 set to a set mail delivered to 1522 "local" host mailRoutingAddress 1523 1524 set to a not set delivered to 1525 "local" host original address 1526 1527 set to a set mailRoutingAddress 1528 remote host relayed to mailHost 1529 1530 set to a not set original address 1531 remote host relayed to mailHost 1532 1533 not set set mail delivered to 1534 mailRoutingAddress 1535 1536 not set not set delivered to 1537 original address *OR* 1538 bounced as unknown user 1539 1540The term "local" host above means the host specified is in class {w}. 1541Note that the last case depends on whether the third argument is given 1542to the FEATURE() command. The default is to deliver the message to the 1543original address. 1544 1545The LDAP entries should be set up with an objectClass of 1546inetLocalMailRecipient and the address be listed in a mailLocalAddress 1547attribute. If present, there must be only one mailHost attribute and it 1548must contain a fully qualified host name as its value. Similarly, if 1549present, there must be only one mailRoutingAddress attribute and it must 1550contain an RFC 822 compliant address. Some example LDAP records (in ldif 1551format): 1552 1553 dn: uid=tom, o=example.com, c=US 1554 objectClass: inetLocalMailRecipient 1555 mailLocalAddress: tom@example.com 1556 mailRoutingAddress: thomas@mailhost.example.com 1557 1558This would deliver mail for tom@example.com to thomas@mailhost.example.com. 1559 1560 dn: uid=dick, o=example.com, c=US 1561 objectClass: inetLocalMailRecipient 1562 mailLocalAddress: dick@example.com 1563 mailHost: eng.example.com 1564 1565This would relay mail for dick@example.com to the same address but redirect 1566the mail to MX records listed for the host eng.example.com. 1567 1568 dn: uid=harry, o=example.com, c=US 1569 objectClass: inetLocalMailRecipient 1570 mailLocalAddress: harry@example.com 1571 mailHost: mktmail.example.com 1572 mailRoutingAddress: harry@mkt.example.com 1573 1574This would relay mail for harry@example.com to the MX records listed for 1575the host mktmail.example.com using the new address harry@mkt.example.com 1576when talking to that host. 1577 1578 dn: uid=virtual.example.com, o=example.com, c=US 1579 objectClass: inetLocalMailRecipient 1580 mailLocalAddress: @virtual.example.com 1581 mailHost: server.example.com 1582 mailRoutingAddress: virtual@example.com 1583 1584This would send all mail destined for any username @virtual.example.com to 1585the machine server.example.com's MX servers and deliver to the address 1586virtual@example.com on that relay machine. 1587 1588 1589+---------------------------------+ 1590| ANTI-SPAM CONFIGURATION CONTROL | 1591+---------------------------------+ 1592 1593The primary anti-spam features available in sendmail are: 1594 1595* Relaying is denied by default. 1596* Better checking on sender information. 1597* Access database. 1598* Header checks. 1599 1600Relaying (transmission of messages from a site outside your host (class 1601{w}) to another site except yours) is denied by default. Note that this 1602changed in sendmail 8.9; previous versions allowed relaying by default. 1603If you really want to revert to the old behaviour, you will need to use 1604FEATURE(`promiscuous_relay'). You can allow certain domains to relay 1605through your server by adding their domain name or IP address to class 1606{R} using RELAY_DOMAIN() and RELAY_DOMAIN_FILE() or via the access database 1607(described below). The file consists (like any other file based class) 1608of entries listed on separate lines, e.g., 1609 1610 sendmail.org 1611 128.32 1612 1:2:3:4:5:6:7 1613 host.mydomain.com 1614 1615If you use 1616 1617 FEATURE(`relay_entire_domain') 1618 1619then any host in any of your local domains (that is, class {m}) 1620will be relayed (that is, you will accept mail either to or from any 1621host in your domain). 1622 1623You can also allow relaying based on the MX records of the host 1624portion of an incoming recipient address by using 1625 1626 FEATURE(`relay_based_on_MX') 1627 1628For example, if your server receives a recipient of user@domain.com 1629and domain.com lists your server in its MX records, the mail will be 1630accepted for relay to domain.com. Note that this will stop spammers 1631from using your host to relay spam but it will not stop outsiders from 1632using your server as a relay for their site (that is, they set up an 1633MX record pointing to your mail server, and you will relay mail addressed 1634to them without any prior arrangement). Along the same lines, 1635 1636 FEATURE(`relay_local_from') 1637 1638will allow relaying if the sender specifies a return path (i.e. 1639MAIL FROM: <user@domain>) domain which is a local domain. This a 1640dangerous feature as it will allow spammers to spam using your mail 1641server by simply specifying a return address of user@your.domain.com. 1642It should not be used unless absolutely necessary. 1643A slightly better solution is 1644 1645 FEATURE(`relay_mail_from') 1646 1647which allows relaying if the mail sender is listed as RELAY in the 1648access map. If an optional argument `domain' is given, the domain 1649portion of the mail sender is also checked to allowing relaying. 1650This option only works together with the tag From: for the LHS of 1651the access map entries (see below: Finer control...). 1652 1653 1654If source routing is used in the recipient address (i.e. 1655RCPT TO: <user%site.com@othersite.com>), sendmail will check 1656user@site.com for relaying if othersite.com is an allowed relay host 1657in either class {R}, class {m} if FEATURE(`relay_entire_domain') is used, 1658or the access database if FEATURE(`access_db') is used. To prevent 1659the address from being stripped down, use: 1660 1661 FEATURE(`loose_relay_check') 1662 1663If you think you need to use this feature, you probably do not. This 1664should only be used for sites which have no control over the addresses 1665that they provide a gateway for. Use this FEATURE with caution as it 1666can allow spammers to relay through your server if not setup properly. 1667 1668NOTICE: It is possible to relay mail through a system which the anti-relay 1669rules do not prevent: the case of a system that does use FEATURE(`nouucp', 1670`nospecial') (system A) and relays local messages to a mail hub (e.g., via 1671LOCAL_RELAY or LUSER_RELAY) (system B). If system B doesn't use 1672FEATURE(`nouucp') at all, addresses of the form 1673<example.net!user@local.host> would be relayed to <user@example.net>. 1674System A doesn't recognize `!' as an address separator and therefore 1675forwards it to the mail hub which in turns relays it because it came from 1676a trusted local host. So if a mailserver allows UUCP (bang-format) 1677addresses, all systems from which it allows relaying should do the same 1678or reject those addresses. 1679 1680As of 8.9, sendmail will refuse mail if the MAIL FROM: parameter has 1681an unresolvable domain (i.e., one that DNS, your local name service, 1682or special case rules in ruleset 3 cannot locate). If you want to 1683continue to accept such domains, e.g., because you are inside a 1684firewall that has only a limited view of the Internet host name space 1685(note that you will not be able to return mail to them unless you have 1686some "smart host" forwarder), use 1687 1688 FEATURE(`accept_unresolvable_domains') 1689 1690sendmail will also refuse mail if the MAIL FROM: parameter is not 1691fully qualified (i.e., contains a domain as well as a user). If you 1692want to continue to accept such senders, use 1693 1694 FEATURE(`accept_unqualified_senders') 1695 1696Setting the DaemonPortOptions modifier 'u' overrides the default behavior, 1697i.e., unqualified addresses are accepted even without this FEATURE. If 1698this FEATURE is not used, the DaemonPortOptions modifier 'f' can be used 1699to enforce fully qualified addresses. 1700 1701An ``access'' database can be created to accept or reject mail from 1702selected domains. For example, you may choose to reject all mail 1703originating from known spammers. To enable such a database, use 1704 1705 FEATURE(`access_db') 1706 1707The FEATURE macro can accept a second parameter giving the key file 1708definition for the database; for example 1709 1710 FEATURE(`access_db', `hash /etc/mail/access') 1711 1712Remember, since /etc/mail/access is a database, after creating the text 1713file as described below, you must use makemap to create the database 1714map. For example: 1715 1716 makemap hash /etc/mail/access < /etc/mail/access 1717 1718The table itself uses e-mail addresses, domain names, and network 1719numbers as keys. For example, 1720 1721 spammer@aol.com REJECT 1722 cyberspammer.com REJECT 1723 192.168.212 REJECT 1724 1725would refuse mail from spammer@aol.com, any user from cyberspammer.com 1726(or any host within the cyberspammer.com domain), and any host on the 1727192.168.212.* network. 1728 1729The value part of the map can contain: 1730 1731 OK Accept mail even if other rules in the 1732 running ruleset would reject it, for example, 1733 if the domain name is unresolvable. 1734 RELAY Accept mail addressed to the indicated domain or 1735 received from the indicated domain for relaying 1736 through your SMTP server. RELAY also serves as 1737 an implicit OK for the other checks. 1738 REJECT Reject the sender or recipient with a general 1739 purpose message. 1740 DISCARD Discard the message completely using the 1741 $#discard mailer. If it is used in check_compat, 1742 it affects only the designated recipient, not 1743 the whole message as it does in all other cases. 1744 This should only be used if really necessary. 1745 ### any text where ### is an RFC 821 compliant error code and 1746 "any text" is a message to return for the command. 1747 The string should be quoted to avoid surprises, 1748 e.g., sendmail may remove spaces otherwise. 1749 ERROR:### any text 1750 as above, but useful to mark error messages as such. 1751 ERROR:D.S.N:### any text 1752 where D.S.N is an RFC 1893 compliant error code 1753 and the rest as above. 1754 1755For example: 1756 1757 cyberspammer.com ERROR:"550 We don't accept mail from spammers" 1758 okay.cyberspammer.com OK 1759 sendmail.org RELAY 1760 128.32 RELAY 1761 1:2:3:4:5:6:7 RELAY 1762 [127.0.0.3] OK 1763 [1:2:3:4:5:6:7:8] OK 1764 1765would accept mail from okay.cyberspammer.com, but would reject mail from 1766all other hosts at cyberspammer.com with the indicated message. It would 1767allow relaying mail from and to any hosts in the sendmail.org domain, and 1768allow relaying from the 128.32.*.* network and the IPv6 1:2:3:4:5:6:7:* 1769network. The latter two entries are for checks against ${client_name} if 1770the IP address doesn't resolve to a hostname (or is considered as "may be 1771forged"). 1772 1773Warning: if you change the RFC 821 compliant error code from the default 1774value of 550, then you should probably also change the RFC 1893 compliant 1775error code to match it. For example, if you use 1776 1777 user@example.com 450 mailbox full 1778 1779the error returned would be "450 4.0.0 mailbox full" which is wrong. 1780Use "450 4.2.2 mailbox full" or "ERROR:4.2.2:450 mailbox full" 1781instead. 1782 1783Note, UUCP users may need to add hostname.UUCP to the access database 1784or class {R}. If you also use: 1785 1786 FEATURE(`relay_hosts_only') 1787 1788then the above example will allow relaying for sendmail.org, but not 1789hosts within the sendmail.org domain. Note that this will also require 1790hosts listed in class {R} to be fully qualified host names. 1791 1792You can also use the access database to block sender addresses based on 1793the username portion of the address. For example: 1794 1795 FREE.STEALTH.MAILER@ ERROR:550 Spam not accepted 1796 1797Note that you must include the @ after the username to signify that 1798this database entry is for checking only the username portion of the 1799sender address. 1800 1801If you use: 1802 1803 FEATURE(`blacklist_recipients') 1804 1805then you can add entries to the map for local users, hosts in your 1806domains, or addresses in your domain which should not receive mail: 1807 1808 badlocaluser@ ERROR:550 Mailbox disabled for this username 1809 host.mydomain.com ERROR:550 That host does not accept mail 1810 user@otherhost.mydomain.com ERROR:550 Mailbox disabled for this recipient 1811 1812This would prevent a recipient of badlocaluser@mydomain.com, any 1813user at host.mydomain.com, and the single address 1814user@otherhost.mydomain.com from receiving mail. Please note: a 1815local username must be now tagged with an @ (this is consistent 1816with the check of the sender address, and hence it is possible to 1817distinguish between hostnames and usernames). Enabling this feature 1818will keep you from sending mails to all addresses that have an 1819error message or REJECT as value part in the access map. Taking 1820the example from above: 1821 1822 spammer@aol.com REJECT 1823 cyberspammer.com REJECT 1824 1825Mail can't be sent to spammer@aol.com or anyone at cyberspammer.com. 1826 1827There is also a ``Realtime Blackhole List'' run by the MAPS project 1828at http://maps.vix.com/. This is a database maintained in DNS of 1829spammers. To use this database, use 1830 1831 FEATURE(`dnsbl') 1832 1833This will cause sendmail to reject mail from any site in the 1834Realtime Blackhole List database. This default DNS blacklist, 1835blackholes.mail-abuse.org, is a service offered by the Mail Abuse 1836Prevention System (MAPS). As of July 31, 2001, MAPS is a subscription 1837service, so using that network address won't work if you haven't 1838subscribed. Contact MAPS to subscribe (http://mail-abuse.org/). 1839 1840You can specify an alternative RBL server to check by specifying an 1841argument to the FEATURE. The default error message is 1842 1843You can specify an alternative RBL domain to check by specifying an 1844argument to the FEATURE. The default error message is 1845 1846 Mail from $&{client_addr} refused by blackhole site DOMAIN 1847 1848where DOMAIN is the first argument of the feature. A second argument 1849can be used to specify a different text. This FEATURE can be 1850included several times to query different DNS based rejection lists, 1851e.g., the dial-up user list (see http://maps.vix.com/dul/). 1852 1853The features described above make use of the check_relay, check_mail, 1854and check_rcpt rulesets. If you wish to include your own checks, 1855you can put your checks in the rulesets Local_check_relay, 1856Local_check_mail, and Local_check_rcpt. For example if you wanted to 1857block senders with all numeric usernames (i.e. 2312343@bigisp.com), 1858you would use Local_check_mail and the new regex map: 1859 1860 LOCAL_CONFIG 1861 Kallnumbers regex -a@MATCH ^[0-9]+$ 1862 1863 LOCAL_RULESETS 1864 SLocal_check_mail 1865 # check address against various regex checks 1866 R$* $: $>Parse0 $>3 $1 1867 R$+ < @ bigisp.com. > $* $: $(allnumbers $1 $) 1868 R@MATCH $#error $: 553 Header Error 1869 1870These rules are called with the original arguments of the corresponding 1871check_* ruleset. If the local ruleset returns $#OK, no further checking 1872is done by the features described above and the mail is accepted. If the 1873local ruleset resolves to a mailer (such as $#error or $#discard), the 1874appropriate action is taken. Otherwise, the results of the local 1875rewriting are ignored. 1876 1877Finer control by using tags for the LHS of the access map 1878 1879Read this section only if the options listed so far are not sufficient 1880for your purposes. There is now the option to tag entries in the 1881access map according to their type. Three tags are available: 1882 1883 Connect: connection information (${client_addr}, ${client_name}) 1884 From: envelope sender 1885 To: envelope recipient 1886 1887If the required item is looked up in a map, it will be tried first 1888with the corresponding tag in front, then (as fallback to enable 1889backward compatibility) without any tag. For example, 1890 1891 From:spammer@some.dom REJECT 1892 To:friend.domain RELAY 1893 Connect:friend.domain OK 1894 Connect:from.domain RELAY 1895 From:good@another.dom OK 1896 From:another.dom REJECT 1897 1898This would deny mails from spammer@some.dom but you could still 1899send mail to that address even if FEATURE(`blacklist_recipients') 1900is enabled. Your system will allow relaying to friend.domain, but 1901not from it (unless enabled by other means). Connections from that 1902domain will be allowed even if it ends up in one of the DNS based 1903rejection lists. Relaying is enabled from from.domain but not to 1904it (since relaying is based on the connection information for 1905outgoing relaying, the tag Connect: must be used; for incoming 1906relaying, which is based on the recipient address, To: must be 1907used). The last two entries allow mails from good@another.dom but 1908reject mail from all other addresses with another.dom as domain 1909part. 1910 1911Delay all checks 1912 1913By using FEATURE(`delay_checks') the rulesets check_mail and check_relay 1914will not be called when a client connects or issues a MAIL command, 1915respectively. Instead, those rulesets will be called by the check_rcpt 1916ruleset; they will be skipped if a sender has been authenticated using 1917a "trusted" mechanism, i.e., one that is defined via TRUST_AUTH_MECH(). 1918If check_mail returns an error then the RCPT TO command will be rejected 1919with that error. If it returns some other result starting with $# then 1920check_relay will be skipped. If the sender address (or a part of it) is 1921listed in the access map and it has a RHS of OK or RELAY, then check_relay 1922will be skipped. This has an interesting side effect: if your domain is 1923my.domain and you have 1924 1925 my.domain RELAY 1926 1927in the access map, then all e-mail with a sender address of 1928<user@my.domain> gets through, even if check_relay would reject it 1929(e.g., based on the hostname or IP address). This allows spammers 1930to get around DNS based blacklist by faking the sender address. To 1931avoid this problem you have to use tagged entries: 1932 1933 To:my.domain RELAY 1934 Connect:my.domain RELAY 1935 1936if you need those entries at all (class {R} may take care of them). 1937 1938FEATURE(`delay_checks') can take an optional argument: 1939 1940 FEATURE(`delay_checks', `friend') 1941 enables spamfriend test 1942 FEATURE(`delay_checks', `hater') 1943 enables spamhater test 1944 1945If such an argument is given, the recipient will be looked up in the access 1946map (using the tag To:). If the argument is `friend', then the other 1947rulesets will be skipped if the recipient address is found and has RHS 1948spamfriend. If the argument is `hater', then the other rulesets will be 1949applied if the recipient address is found and has RHS spamhater. 1950 1951This allows for simple exceptions from the tests, e.g., by activating 1952the spamfriend option and having 1953 1954 To:abuse@ SPAMFRIEND 1955 1956in the access map, mail to abuse@localdomain will get through. It is 1957also possible to specify a full address or an address with +detail: 1958 1959 To:abuse@abuse.my.domain SPAMFRIEND 1960 To:me+abuse@ SPAMFRIEND 1961 1962 1963Header Checks 1964 1965You can also reject mail on the basis of the contents of headers. 1966This is done by adding a ruleset call to the 'H' header definition command 1967in sendmail.cf. For example, this can be used to check the validity of 1968a Message-ID: header: 1969 1970 LOCAL_RULESETS 1971 HMessage-Id: $>CheckMessageId 1972 1973 SCheckMessageId 1974 R< $+ @ $+ > $@ OK 1975 R$* $#error $: 553 Header Error 1976 1977The alternative format: 1978 1979 HSubject: $>+CheckSubject 1980 1981that is, $>+ instead of $>, gives the full Subject: header including 1982comments to the ruleset (comments in parentheses () are stripped 1983by default). 1984 1985A default ruleset for headers which don't have a specific ruleset 1986defined for them can be given by: 1987 1988 H*: $>CheckHdr 1989 1990Notice: All rules act on tokens as explained in doc/op/op.{me,ps,txt}. 1991That may cause problems with simple header checks due to the 1992tokenization. It might be simpler to use a regex map and apply it 1993to $&{currHeader}. 1994 1995After all of the headers are read, the check_eoh ruleset will be called for 1996any final header-related checks. The ruleset is called with the number of 1997headers and the size of all of the headers in bytes separated by $|. One 1998example usage is to reject messages which do not have a Message-Id: 1999header. However, the Message-Id: header is *NOT* a required header and is 2000not a guaranteed spam indicator. This ruleset is an example and should 2001probably not be used in production. 2002 2003 LOCAL_CONFIG 2004 Kstorage macro 2005 2006 LOCAL_RULESETS 2007 HMessage-Id: $>CheckMessageId 2008 2009 SCheckMessageId 2010 # Record the presence of the header 2011 R$* $: $(storage {MessageIdCheck} $@ OK $) $1 2012 R< $+ @ $+ > $@ OK 2013 R$* $#error $: 553 Header Error 2014 2015 Scheck_eoh 2016 # Check the macro 2017 R$* $: < $&{MessageIdCheck} > 2018 # Clear the macro for the next message 2019 R$* $: $(storage {MessageIdCheck} $) $1 2020 # Has a Message-Id: header 2021 R< $+ > $@ OK 2022 # Allow missing Message-Id: from local mail 2023 R$* $: < $&{client_name} > 2024 R< > $@ OK 2025 R< $=w > $@ OK 2026 # Otherwise, reject the mail 2027 R$* $#error $: 553 Header Error 2028 2029+----------+ 2030| STARTTLS | 2031+----------+ 2032 2033In this text, cert will be used as an abreviation for X.509 certificate, 2034DN is the distinguished name of a cert, and CA is a certification authority. 2035 2036For STARTTLS to be offered by sendmail you need to set at least 2037this variables (the file names and paths are just examples): 2038 2039 define(`confCACERT_PATH', `/etc/mail/certs/') 2040 define(`confCACERT', `/etc/mail/certs/CA.cert.pem') 2041 define(`confSERVER_CERT', `/etc/mail/certs/my.cert.pem') 2042 define(`confSERVER_KEY', `/etc/mail/certs/my.key.pem') 2043 2044On systems which do not have the compile flag HASURANDOM set (see 2045sendmail/README) you also must set confRAND_FILE. 2046 2047See doc/op/op.{me,ps} for more information about these options, 2048esp. the sections ``Certificates for STARTTLS'' and ``PRNG for 2049STARTTLS''. 2050 2051Macros related to STARTTLS are: 2052 2053${cert_issuer} holds the DN of the CA (the cert issuer). 2054${cert_subject} holds the DN of the cert (called the cert subject). 2055${tls_version} the TLS/SSL version used for the connection, e.g., TLSv1, 2056 SSLv3, SSLv2. 2057${cipher} the cipher used for the connection, e.g., EDH-DSS-DES-CBC3-SHA, 2058 EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA. 2059${cipher_bits} the keylength (in bits) of the symmetric encryption algorithm 2060 used for the connection. 2061${verify} holds the result of the verification of the presented cert. Possible 2062 values are: 2063 OK verification succeeded. 2064 NO no cert presented. 2065 FAIL cert presented but could not be verified, e.g., the signing 2066 CA is missing. 2067 NONE STARTTLS has not been performed. 2068 TEMP temporary error occurred. 2069 PROTOCOL some protocol error occurred. 2070 SOFTWARE STARTTLS handshake failed. 2071${server_name} the name of the server of the current outgoing SMTP 2072 connection. 2073${server_addr} the address of the server of the current outgoing SMTP 2074 connection. 2075 2076Relaying 2077 2078SMTP STARTTLS can allow relaying for senders who have successfully 2079authenticated themselves. This is done in the ruleset RelayAuth. If the 2080verification of the cert failed (${verify} != OK), relaying is subject to 2081the usual rules. Otherwise the DN of the issuer is looked up in the access 2082map using the tag CERTISSUER. If the resulting value is RELAY, relaying is 2083allowed. If it is SUBJECT, the DN of the cert subject is looked up next in 2084the access map. using the tag CERTSUBJECT. If the value is RELAY, relaying 2085is allowed. 2086 2087To make things a bit more flexible (or complicated), the values for 2088${cert_issuer} and ${cert_subject} can be optionally modified by regular 2089expressions defined in the m4 variables _CERT_REGEX_ISSUER_ and 2090_CERT_REGEX_SUBJECT_, respectively. To avoid problems with those macros in 2091rulesets and map lookups, they are modified as follows: each non-printable 2092character and the characters '<', '>', '(', ')', '"', '+' are replaced by 2093their HEX value with a leading '+'. For example: 2094 2095/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/Email= 2096darth+cert@endmail.org 2097 2098is encoded as: 2099 2100/C=US/ST=California/O=endmail.org/OU=private/CN= 2101Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org 2102 2103(line breaks have been inserted for readability). 2104 2105Of course it is also possible to write a simple rulesets that allows 2106relaying for everyone who can present a cert that can be verified, e.g., 2107 2108LOCAL_RULESETS 2109SLocal_check_rcpt 2110R$* $: $&{verify} 2111ROK $# OK 2112 2113Allowing Connections 2114 2115The rulesets tls_server and tls_client are used to decide whether an SMTP 2116connection is accepted (or should continue). 2117 2118tls_server is called when sendmail acts as client after a STARTTLS command 2119(should) have been issued. The parameter is the value of ${verify}. 2120 2121tls_client is called when sendmail acts as server, after a STARTTLS command 2122has been issued, and from check_mail. The parameter is the value of 2123${verify} and STARTTLS or MAIL, respectively. 2124 2125Both rulesets behave the same. If no access map is in use, the connection 2126will be accepted unless ${verify} is SOFTWARE, in which case the connection 2127is always aborted. Otherwise, ${client_name} (${server_name}) is looked 2128up in the access map using the tag TLS_Srv (or TLS_Clt), which is done 2129with the ruleset LookUpDomain. If no entry is found, ${client_addr} 2130(${server_addr}) is looked up in the access map (same tag, ruleset 2131LookUpAddr). If this doesn't result in an entry either, just the tag is 2132looked up in the access map (included the trailing :). The result of the 2133lookups is then used to call the ruleset tls_connection, which checks the 2134requirement specified by the RHS in the access map against the actual 2135parameters of the current TLS connection, esp. ${verify} and 2136${cipher_bits}. Legal RHSs in the access map are: 2137 2138VERIFY verification must have succeeded 2139VERIFY:bits verification must have succeeded and ${cipher_bits} must 2140 be greater than or equal bits. 2141ENCR:bits ${cipher_bits} must be greater than or equal bits. 2142 2143The RHS can optionally be prefixed by TEMP+ or PERM+ to select a temporary 2144or permanent error. The default is a temporary error code (403 4.7.0) 2145unless the macro TLS_PERM_ERR is set during generation of the .cf file. 2146 2147If a certain level of encryption is required, then it might also be 2148possible that this level is provided by the security layer from a SASL 2149algorithm, e.g., DIGEST-MD5. 2150 2151Example: e-mail sent to secure.example.com should only use an encrypted 2152connection. e-mail received from hosts within the laptop.example.com domain 2153should only be accepted if they have been authenticated. 2154TLS_Srv:secure.example.com ENCR:112 2155TLS_Clt:laptop.example.com PERM+VERIFY:112 2156 2157Notice: requiring that e-mail is sent to a server only encrypted, 2158e.g., via 2159 2160TLS_Srv:secure.domain ENCR:112 2161 2162doesn't necessarily mean that e-mail sent to that domain is encrypted. 2163If the domain has multiple MX servers, e.g., 2164 2165secure.domain. IN MX 10 mail.secure.domain. 2166secure.domain. IN MX 50 mail.other.domain. 2167 2168then mail to user@secure.domain may go unencrypted to mail.other.domain. 2169 2170 2171Received: Header 2172 2173The Received: header reveals whether STARTTLS has been used. It contains an 2174extra line: 2175 2176(using ${tls_version} with cipher ${cipher} (${cipher_bits} bits) verified ${verify}) 2177 2178+---------------------+ 2179| SMTP AUTHENTICATION | 2180+---------------------+ 2181 2182The macros ${auth_authen}, ${auth_author}, and ${auth_type} can be 2183used in anti-relay rulesets to allow relaying for those users that 2184authenticated themselves. A very simple example is: 2185 2186SLocal_check_rcpt 2187R$* $: $&{auth_type} 2188R$+ $# OK 2189 2190which checks whether a user has successfully authenticated using 2191any available mechanism. Depending on the setup of the CYRUS SASL 2192library, more sophisticated rulesets might be required, e.g., 2193 2194SLocal_check_rcpt 2195R$* $: $&{auth_type} $| $&{auth_authen} 2196RDIGEST-MD5 $| $+@$=w $# OK 2197 2198to allow relaying for users that authenticated using DIGEST-MD5 2199and have an identity in the local domains. 2200 2201The ruleset Strust_auth is used to determine whether a given AUTH= 2202parameter (that is passed to this ruleset) should be trusted. This 2203ruleset may make use of the other ${auth_*} macros. Only if the 2204ruleset resolves to the error mailer, the AUTH= parameter is not 2205trusted. A user supplied ruleset Local_trust_auth can be written 2206to modify the default behavior, which only trust the AUTH= 2207parameter if it is identical to the authenticated user. 2208 2209Per default, relaying is allowed for any user who authenticated 2210via a "trusted" mechanism, i.e., one that is defined via 2211TRUST_AUTH_MECH(`list of mechanisms') 2212For example: 2213TRUST_AUTH_MECH(`KERBEROS_V4 DIGEST-MD5') 2214 2215If the selected mechanism provides a security layer the number of 2216bits used for the key of the symmetric cipher is stored in the 2217macro ${auth_ssf}. 2218 2219+--------------------------------+ 2220| ADDING NEW MAILERS OR RULESETS | 2221+--------------------------------+ 2222 2223Sometimes you may need to add entirely new mailers or rulesets. They 2224should be introduced with the constructs MAILER_DEFINITIONS and 2225LOCAL_RULESETS respectively. For example: 2226 2227 MAILER_DEFINITIONS 2228 Mmymailer, ... 2229 ... 2230 2231 LOCAL_RULESETS 2232 Smyruleset 2233 ... 2234 2235 2236#if _FFR_MILTER 2237+-------------------------+ 2238| ADDING NEW MAIL FILTERS | 2239+-------------------------+ 2240 2241Sendmail supports mail filters to filter incoming SMTP messages according 2242to the "Sendmail Mail Filter API" documentation. These filters can be 2243configured in your mc file using the two commands: 2244 2245 MAIL_FILTER(`name', `equates') 2246 INPUT_MAIL_FILTER(`name', `equates') 2247 2248The first command, MAIL_FILTER(), simply defines a filter with the given 2249name and equates. For example: 2250 2251 MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 2252 2253This creates the equivalent sendmail.cf entry: 2254 2255 Xarchive, S=local:/var/run/archivesock, F=R 2256 2257The INPUT_MAIL_FILTER() command performs the same actions as MAIL_FILTER 2258but also populates the m4 variable `confINPUT_MAIL_FILTERS' with the name 2259of the filter such that the filter will actually be called by sendmail. 2260 2261For example, the two commands: 2262 2263 INPUT_MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 2264 INPUT_MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') 2265 2266are equivalent to the three commands: 2267 2268 MAIL_FILTER(`archive', `S=local:/var/run/archivesock, F=R') 2269 MAIL_FILTER(`spamcheck', `S=inet:2525@localhost, F=T') 2270 define(`confINPUT_MAIL_FILTERS', `archive, spamcheck') 2271 2272In general, INPUT_MAIL_FILTER() should be used unless you need to define 2273more filters than you want to use for `confINPUT_MAIL_FILTERS'. 2274 2275Note that setting `confINPUT_MAIL_FILTERS' after any INPUT_MAIL_FILTER() 2276commands will clear the list created by the prior INPUT_MAIL_FILTER() 2277commands. 2278#endif /* _FFR_MILTER */ 2279 2280 2281+-------------------------------+ 2282| NON-SMTP BASED CONFIGURATIONS | 2283+-------------------------------+ 2284 2285These configuration files are designed primarily for use by 2286SMTP-based sites. They may not be well tuned for UUCP-only or 2287UUCP-primarily nodes (the latter is defined as a small local net 2288connected to the rest of the world via UUCP). However, there is 2289one hook to handle some special cases. 2290 2291You can define a ``smart host'' that understands a richer address syntax 2292using: 2293 2294 define(`SMART_HOST', `mailer:hostname') 2295 2296In this case, the ``mailer:'' defaults to "relay". Any messages that 2297can't be handled using the usual UUCP rules are passed to this host. 2298 2299If you are on a local SMTP-based net that connects to the outside 2300world via UUCP, you can use LOCAL_NET_CONFIG to add appropriate rules. 2301For example: 2302 2303 define(`SMART_HOST', `uucp-new:uunet') 2304 LOCAL_NET_CONFIG 2305 R$* < @ $* .$m. > $* $#smtp $@ $2.$m. $: $1 < @ $2.$m. > $3 2306 2307This will cause all names that end in your domain name ($m) via 2308SMTP; anything else will be sent via uucp-new (smart UUCP) to uunet. 2309If you have FEATURE(`nocanonify'), you may need to omit the dots after 2310the $m. If you are running a local DNS inside your domain which is 2311not otherwise connected to the outside world, you probably want to 2312use: 2313 2314 define(`SMART_HOST', `smtp:fire.wall.com') 2315 LOCAL_NET_CONFIG 2316 R$* < @ $* . > $* $#smtp $@ $2. $: $1 < @ $2. > $3 2317 2318That is, send directly only to things you found in your DNS lookup; 2319anything else goes through SMART_HOST. 2320 2321You may need to turn off the anti-spam rules in order to accept 2322UUCP mail with FEATURE(`promiscuous_relay') and 2323FEATURE(`accept_unresolvable_domains'). 2324 2325 2326+-----------+ 2327| WHO AM I? | 2328+-----------+ 2329 2330Normally, the $j macro is automatically defined to be your fully 2331qualified domain name (FQDN). Sendmail does this by getting your 2332host name using gethostname and then calling gethostbyname on the 2333result. For example, in some environments gethostname returns 2334only the root of the host name (such as "foo"); gethostbyname is 2335supposed to return the FQDN ("foo.bar.com"). In some (fairly rare) 2336cases, gethostbyname may fail to return the FQDN. In this case 2337you MUST define confDOMAIN_NAME to be your fully qualified domain 2338name. This is usually done using: 2339 2340 Dmbar.com 2341 define(`confDOMAIN_NAME', `$w.$m')dnl 2342 2343 2344+-----------------------------------+ 2345| ACCEPTING MAIL FOR MULTIPLE NAMES | 2346+-----------------------------------+ 2347 2348If your host is known by several different names, you need to augment 2349class {w}. This is a list of names by which your host is known, and 2350anything sent to an address using a host name in this list will be 2351treated as local mail. You can do this in two ways: either create the 2352file /etc/mail/local-host-names containing a list of your aliases (one per 2353line), and use ``FEATURE(`use_cw_file')'' in the .mc file, or add 2354``LOCAL_DOMAIN(`alias.host.name')''. Be sure you use the fully-qualified 2355name of the host, rather than a short name. 2356 2357If you want to have different address in different domains, take 2358a look at the virtusertable feature, which is also explained at 2359http://www.sendmail.org/virtual-hosting.html 2360 2361 2362+--------------------+ 2363| USING MAILERTABLES | 2364+--------------------+ 2365 2366To use FEATURE(`mailertable'), you will have to create an external 2367database containing the routing information for various domains. 2368For example, a mailertable file in text format might be: 2369 2370 .my.domain xnet:%1.my.domain 2371 uuhost1.my.domain uucp-new:uuhost1 2372 .bitnet smtp:relay.bit.net 2373 2374This should normally be stored in /etc/mail/mailertable. The actual 2375database version of the mailertable is built using: 2376 2377 makemap hash /etc/mail/mailertable < /etc/mail/mailertable 2378 2379The semantics are simple. Any LHS entry that does not begin with 2380a dot matches the full host name indicated. LHS entries beginning 2381with a dot match anything ending with that domain name (including 2382the leading dot) -- that is, they can be thought of as having a 2383leading ".+" regular expression pattern for a non-empty sequence of 2384characters. Matching is done in order of most-to-least qualified 2385-- for example, even though ".my.domain" is listed first in the 2386above example, an entry of "uuhost1.my.domain" will match the second 2387entry since it is more explicit. Note: e-mail to "user@my.domain" 2388does not match any entry in the above table. You need to have 2389something like: 2390 2391 my.domain esmtp:host.my.domain 2392 2393The RHS should always be a "mailer:host" pair. The mailer is the 2394configuration name of a mailer (that is, an {M} line in the 2395sendmail.cf file). The "host" will be the hostname passed to 2396that mailer. In domain-based matches (that is, those with leading 2397dots) the "%1" may be used to interpolate the wildcarded part of 2398the host name. For example, the first line above sends everything 2399addressed to "anything.my.domain" to that same host name, but using 2400the (presumably experimental) xnet mailer. 2401 2402In some cases you may want to temporarily turn off MX records, 2403particularly on gateways. For example, you may want to MX 2404everything in a domain to one machine that then forwards it 2405directly. To do this, you might use the DNS configuration: 2406 2407 *.domain. IN MX 0 relay.machine 2408 2409and on relay.machine use the mailertable: 2410 2411 .domain smtp:[gateway.domain] 2412 2413The [square brackets] turn off MX records for this host only. 2414If you didn't do this, the mailertable would use the MX record 2415again, which would give you an MX loop. 2416 2417 2418+--------------------------------+ 2419| USING USERDB TO MAP FULL NAMES | 2420+--------------------------------+ 2421 2422The user database was not originally intended for mapping full names 2423to login names (e.g., Eric.Allman => eric), but some people are using 2424it that way. (it is recommended that you set up aliases for this 2425purpose instead -- since you can specify multiple alias files, this 2426is fairly easy.) The intent was to locate the default maildrop at 2427a site, but allow you to override this by sending to a specific host. 2428 2429If you decide to set up the user database in this fashion, it is 2430imperative that you not use FEATURE(`stickyhost') -- otherwise, 2431e-mail sent to Full.Name@local.host.name will be rejected. 2432 2433To build the internal form of the user database, use: 2434 2435 makemap btree /etc/mail/userdb < /etc/mail/userdb.txt 2436 2437As a general rule, it is an extremely bad idea to using full names 2438as e-mail addresses, since they are not in any sense unique. For 2439example, the UNIX software-development community has at least two 2440well-known Peter Deutsches, and at one time Bell Labs had two 2441Stephen R. Bournes with offices along the same hallway. Which one 2442will be forced to suffer the indignity of being Stephen_R_Bourne_2? 2443The less famous of the two, or the one that was hired later? 2444 2445Finger should handle full names (and be fuzzy). Mail should use 2446handles, and not be fuzzy. 2447 2448 2449+--------------------------------+ 2450| MISCELLANEOUS SPECIAL FEATURES | 2451+--------------------------------+ 2452 2453Plussed users 2454 Sometimes it is convenient to merge configuration on a 2455 centralized mail machine, for example, to forward all 2456 root mail to a mail server. In this case it might be 2457 useful to be able to treat the root addresses as a class 2458 of addresses with subtle differences. You can do this 2459 using plussed users. For example, a client might include 2460 the alias: 2461 2462 root: root+client1@server 2463 2464 On the server, this will match an alias for "root+client1". 2465 If that is not found, the alias "root+*" will be tried, 2466 then "root". 2467 2468 2469+----------------+ 2470| SECURITY NOTES | 2471+----------------+ 2472 2473A lot of sendmail security comes down to you. Sendmail 8 is much 2474more careful about checking for security problems than previous 2475versions, but there are some things that you still need to watch 2476for. In particular: 2477 2478* Make sure the aliases file isn't writable except by trusted 2479 system personnel. This includes both the text and database 2480 version. 2481 2482* Make sure that other files that sendmail reads, such as the 2483 mailertable, are only writable by trusted system personnel. 2484 2485* The queue directory should not be world writable PARTICULARLY 2486 if your system allows "file giveaways" (that is, if a non-root 2487 user can chown any file they own to any other user). 2488 2489* If your system allows file giveaways, DO NOT create a publically 2490 writable directory for forward files. This will allow anyone 2491 to steal anyone else's e-mail. Instead, create a script that 2492 copies the .forward file from users' home directories once a 2493 night (if you want the non-NFS-mounted forward directory). 2494 2495* If your system allows file giveaways, you'll find that 2496 sendmail is much less trusting of :include: files -- in 2497 particular, you'll have to have /SENDMAIL/ANY/SHELL/ in 2498 /etc/shells before they will be trusted (that is, before 2499 files and programs listed in them will be honored). 2500 2501In general, file giveaways are a mistake -- if you can turn them 2502off, do so. 2503 2504 2505+--------------------------------+ 2506| TWEAKING CONFIGURATION OPTIONS | 2507+--------------------------------+ 2508 2509There are a large number of configuration options that don't normally 2510need to be changed. However, if you feel you need to tweak them, you 2511can define the following M4 variables. This list is shown in four 2512columns: the name you define, the default value for that definition, 2513the option or macro that is affected (either Ox for an option or Dx 2514for a macro), and a brief description. Greater detail of the semantics 2515can be found in the Installation and Operations Guide. 2516 2517Some options are likely to be deprecated in future versions -- that is, 2518the option is only included to provide back-compatibility. These are 2519marked with "*". 2520 2521Remember that these options are M4 variables, and hence may need to 2522be quoted. In particular, arguments with commas will usually have to 2523be ``double quoted, like this phrase'' to avoid having the comma 2524confuse things. This is common for alias file definitions and for 2525the read timeout. 2526 2527M4 Variable Name Configuration Description & [Default] 2528================ ============= ======================= 2529confMAILER_NAME $n macro [MAILER-DAEMON] The sender name used 2530 for internally generated outgoing 2531 messages. 2532confDOMAIN_NAME $j macro If defined, sets $j. This should 2533 only be done if your system cannot 2534 determine your local domain name, 2535 and then it should be set to 2536 $w.Foo.COM, where Foo.COM is your 2537 domain name. 2538confCF_VERSION $Z macro If defined, this is appended to the 2539 configuration version name. 2540confFROM_HEADER From: [$?x$x <$g>$|$g$.] The format of an 2541 internally generated From: address. 2542confRECEIVED_HEADER Received: 2543 [$?sfrom $s $.$?_($?s$|from $.$_) 2544 $.$?{auth_type}(authenticated) 2545 $.by $j ($v/$Z)$?r with $r$. id $i$?u 2546 for $u; $|; 2547 $.$b] 2548 The format of the Received: header 2549 in messages passed through this host. 2550 It is unwise to try to change this. 2551confCW_FILE Fw class [/etc/mail/local-host-names] Name 2552 of file used to get the local 2553 additions to class {w} (local host 2554 names). 2555confCT_FILE Ft class [/etc/mail/trusted-users] Name of 2556 file used to get the local additions 2557 to class {t} (trusted users). 2558confCR_FILE FR class [/etc/mail/relay-domains] Name of 2559 file used to get the local additions 2560 to class {R} (hosts allowed to relay). 2561confTRUSTED_USERS Ct class [no default] Names of users to add to 2562 the list of trusted users. This list 2563 always includes root, uucp, and daemon. 2564 See also FEATURE(`use_ct_file'). 2565confTRUSTED_USER TrustedUser [no default] Trusted user for file 2566 ownership and starting the daemon. 2567 Not to be confused with 2568 confTRUSTED_USERS (see above). 2569confSMTP_MAILER - [esmtp] The mailer name used when 2570 SMTP connectivity is required. 2571 One of "smtp", "smtp8", 2572 "esmtp", or "dsmtp". 2573confUUCP_MAILER - [uucp-old] The mailer to be used by 2574 default for bang-format recipient 2575 addresses. See also discussion of 2576 class {U}, class {Y}, and class {Z} 2577 in the MAILER(`uucp') section. 2578confLOCAL_MAILER - [local] The mailer name used when 2579 local connectivity is required. 2580 Almost always "local". 2581confRELAY_MAILER - [relay] The default mailer name used 2582 for relaying any mail (e.g., to a 2583 BITNET_RELAY, a SMART_HOST, or 2584 whatever). This can reasonably be 2585 "uucp-new" if you are on a 2586 UUCP-connected site. 2587confSEVEN_BIT_INPUT SevenBitInput [False] Force input to seven bits? 2588confEIGHT_BIT_HANDLING EightBitMode [pass8] 8-bit data handling 2589confALIAS_WAIT AliasWait [10m] Time to wait for alias file 2590 rebuild until you get bored and 2591 decide that the apparently pending 2592 rebuild failed. 2593confMIN_FREE_BLOCKS MinFreeBlocks [100] Minimum number of free blocks on 2594 queue filesystem to accept SMTP mail. 2595 (Prior to 8.7 this was minfree/maxsize, 2596 where minfree was the number of free 2597 blocks and maxsize was the maximum 2598 message size. Use confMAX_MESSAGE_SIZE 2599 for the second value now.) 2600confMAX_MESSAGE_SIZE MaxMessageSize [infinite] The maximum size of messages 2601 that will be accepted (in bytes). 2602confBLANK_SUB BlankSub [.] Blank (space) substitution 2603 character. 2604confCON_EXPENSIVE HoldExpensive [False] Avoid connecting immediately 2605 to mailers marked expensive. 2606confCHECKPOINT_INTERVAL CheckpointInterval 2607 [10] Checkpoint queue files every N 2608 recipients. 2609confDELIVERY_MODE DeliveryMode [background] Default delivery mode. 2610confAUTO_REBUILD AutoRebuildAliases 2611 [False] Automatically rebuild alias 2612 file if needed. 2613 There is a potential for a denial 2614 of service attack if this is set. 2615 This option is deprecated and will 2616 be removed from a future version. 2617confERROR_MODE ErrorMode [print] Error message mode. 2618confERROR_MESSAGE ErrorHeader [undefined] Error message header/file. 2619confSAVE_FROM_LINES SaveFromLine Save extra leading From_ lines. 2620confTEMP_FILE_MODE TempFileMode [0600] Temporary file mode. 2621confMATCH_GECOS MatchGECOS [False] Match GECOS field. 2622confMAX_HOP MaxHopCount [25] Maximum hop count. 2623confIGNORE_DOTS* IgnoreDots [False; always False in -bs or -bd 2624 mode] Ignore dot as terminator for 2625 incoming messages? 2626confBIND_OPTS ResolverOptions [undefined] Default options for DNS 2627 resolver. 2628confMIME_FORMAT_ERRORS* SendMimeErrors [True] Send error messages as MIME- 2629 encapsulated messages per RFC 1344. 2630confFORWARD_PATH ForwardPath [$z/.forward.$w:$z/.forward] 2631 The colon-separated list of places to 2632 search for .forward files. N.B.: see 2633 the Security Notes section. 2634confMCI_CACHE_SIZE ConnectionCacheSize 2635 [2] Size of open connection cache. 2636confMCI_CACHE_TIMEOUT ConnectionCacheTimeout 2637 [5m] Open connection cache timeout. 2638confHOST_STATUS_DIRECTORY HostStatusDirectory 2639 [undefined] If set, host status is kept 2640 on disk between sendmail runs in the 2641 named directory tree. This need not be 2642 a full pathname, in which case it is 2643 interpreted relative to the queue 2644 directory. 2645confSINGLE_THREAD_DELIVERY SingleThreadDelivery 2646 [False] If this option and the 2647 HostStatusDirectory option are both 2648 set, single thread deliveries to other 2649 hosts. That is, don't allow any two 2650 sendmails on this host to connect 2651 simultaneously to any other single 2652 host. This can slow down delivery in 2653 some cases, in particular since a 2654 cached but otherwise idle connection 2655 to a host will prevent other sendmails 2656 from connecting to the other host. 2657confUSE_ERRORS_TO* UseErrorsTo [False] Use the Errors-To: header to 2658 deliver error messages. This should 2659 not be necessary because of general 2660 acceptance of the envelope/header 2661 distinction. 2662confLOG_LEVEL LogLevel [9] Log level. 2663confME_TOO MeToo [True] Include sender in group 2664 expansions. This option is 2665 deprecated and will be removed from 2666 a future version. 2667confCHECK_ALIASES CheckAliases [False] Check RHS of aliases when 2668 running newaliases. Since this does 2669 DNS lookups on every address, it can 2670 slow down the alias rebuild process 2671 considerably on large alias files. 2672confOLD_STYLE_HEADERS* OldStyleHeaders [True] Assume that headers without 2673 special chars are old style. 2674confCLIENT_OPTIONS ClientPortOptions 2675 [none] Options for outgoing SMTP client 2676 connections. 2677confPRIVACY_FLAGS PrivacyOptions [authwarnings] Privacy flags. 2678confCOPY_ERRORS_TO PostmasterCopy [undefined] Address for additional 2679 copies of all error messages. 2680confQUEUE_FACTOR QueueFactor [600000] Slope of queue-only function. 2681confDONT_PRUNE_ROUTES DontPruneRoutes [False] Don't prune down route-addr 2682 syntax addresses to the minimum 2683 possible. 2684confSAFE_QUEUE* SuperSafe [True] Commit all messages to disk 2685 before forking. 2686confTO_INITIAL Timeout.initial [5m] The timeout waiting for a response 2687 on the initial connect. 2688confTO_CONNECT Timeout.connect [0] The timeout waiting for an initial 2689 connect() to complete. This can only 2690 shorten connection timeouts; the kernel 2691 silently enforces an absolute maximum 2692 (which varies depending on the system). 2693confTO_ICONNECT Timeout.iconnect 2694 [undefined] Like Timeout.connect, but 2695 applies only to the very first attempt 2696 to connect to a host in a message. 2697 This allows a single very fast pass 2698 followed by more careful delivery 2699 attempts in the future. 2700confTO_HELO Timeout.helo [5m] The timeout waiting for a response 2701 to a HELO or EHLO command. 2702confTO_MAIL Timeout.mail [10m] The timeout waiting for a 2703 response to the MAIL command. 2704confTO_RCPT Timeout.rcpt [1h] The timeout waiting for a response 2705 to the RCPT command. 2706confTO_DATAINIT Timeout.datainit 2707 [5m] The timeout waiting for a 354 2708 response from the DATA command. 2709confTO_DATABLOCK Timeout.datablock 2710 [1h] The timeout waiting for a block 2711 during DATA phase. 2712confTO_DATAFINAL Timeout.datafinal 2713 [1h] The timeout waiting for a response 2714 to the final "." that terminates a 2715 message. 2716confTO_RSET Timeout.rset [5m] The timeout waiting for a response 2717 to the RSET command. 2718confTO_QUIT Timeout.quit [2m] The timeout waiting for a response 2719 to the QUIT command. 2720confTO_MISC Timeout.misc [2m] The timeout waiting for a response 2721 to other SMTP commands. 2722confTO_COMMAND Timeout.command [1h] In server SMTP, the timeout 2723 waiting for a command to be issued. 2724confTO_IDENT Timeout.ident [5s] The timeout waiting for a 2725 response to an IDENT query. 2726confTO_FILEOPEN Timeout.fileopen 2727 [60s] The timeout waiting for a file 2728 (e.g., :include: file) to be opened. 2729confTO_CONTROL Timeout.control 2730 [2m] The timeout for a complete 2731 control socket transaction to complete. 2732confTO_QUEUERETURN Timeout.queuereturn 2733 [5d] The timeout before a message is 2734 returned as undeliverable. 2735confTO_QUEUERETURN_NORMAL 2736 Timeout.queuereturn.normal 2737 [undefined] As above, for normal 2738 priority messages. 2739confTO_QUEUERETURN_URGENT 2740 Timeout.queuereturn.urgent 2741 [undefined] As above, for urgent 2742 priority messages. 2743confTO_QUEUERETURN_NONURGENT 2744 Timeout.queuereturn.non-urgent 2745 [undefined] As above, for non-urgent 2746 (low) priority messages. 2747confTO_QUEUEWARN Timeout.queuewarn 2748 [4h] The timeout before a warning 2749 message is sent to the sender telling 2750 them that the message has been 2751 deferred. 2752confTO_QUEUEWARN_NORMAL Timeout.queuewarn.normal 2753 [undefined] As above, for normal 2754 priority messages. 2755confTO_QUEUEWARN_URGENT Timeout.queuewarn.urgent 2756 [undefined] As above, for urgent 2757 priority messages. 2758confTO_QUEUEWARN_NONURGENT 2759 Timeout.queuewarn.non-urgent 2760 [undefined] As above, for non-urgent 2761 (low) priority messages. 2762confTO_HOSTSTATUS Timeout.hoststatus 2763 [30m] How long information about host 2764 statuses will be maintained before it 2765 is considered stale and the host should 2766 be retried. This applies both within 2767 a single queue run and to persistent 2768 information (see below). 2769confTO_RESOLVER_RETRANS Timeout.resolver.retrans 2770 [varies] Sets the resolver's 2771 retransmition time interval (in 2772 seconds). Sets both 2773 Timeout.resolver.retrans.first and 2774 Timeout.resolver.retrans.normal. 2775confTO_RESOLVER_RETRANS_FIRST Timeout.resolver.retrans.first 2776 [varies] Sets the resolver's 2777 retransmition time interval (in 2778 seconds) for the first attempt to 2779 deliver a message. 2780confTO_RESOLVER_RETRANS_NORMAL Timeout.resolver.retrans.normal 2781 [varies] Sets the resolver's 2782 retransmition time interval (in 2783 seconds) for all resolver lookups 2784 except the first delivery attempt. 2785confTO_RESOLVER_RETRY Timeout.resolver.retry 2786 [varies] Sets the number of times 2787 to retransmit a resolver query. 2788 Sets both 2789 Timeout.resolver.retry.first and 2790 Timeout.resolver.retry.normal. 2791confTO_RESOLVER_RETRY_FIRST Timeout.resolver.retry.first 2792 [varies] Sets the number of times 2793 to retransmit a resolver query for 2794 the first attempt to deliver a 2795 message. 2796confTO_RESOLVER_RETRY_NORMAL Timeout.resolver.retry.normal 2797 [varies] Sets the number of times 2798 to retransmit a resolver query for 2799 all resolver lookups except the 2800 first delivery attempt. 2801confTIME_ZONE TimeZoneSpec [USE_SYSTEM] Time zone info -- can be 2802 USE_SYSTEM to use the system's idea, 2803 USE_TZ to use the user's TZ envariable, 2804 or something else to force that value. 2805confDEF_USER_ID DefaultUser [1:1] Default user id. 2806confUSERDB_SPEC UserDatabaseSpec 2807 [undefined] User database 2808 specification. 2809confFALLBACK_MX FallbackMXhost [undefined] Fallback MX host. 2810confTRY_NULL_MX_LIST TryNullMXList [False] If this host is the best MX 2811 for a host and other arrangements 2812 haven't been made, try connecting 2813 to the host directly; normally this 2814 would be a config error. 2815confQUEUE_LA QueueLA [varies] Load average at which 2816 queue-only function kicks in. 2817 Default values is (8 * numproc) 2818 where numproc is the number of 2819 processors online (if that can be 2820 determined). 2821confREFUSE_LA RefuseLA [varies] Load average at which 2822 incoming SMTP connections are 2823 refused. Default values is (12 * 2824 numproc) where numproc is the 2825 number of processors online (if 2826 that can be determined). 2827confMAX_ALIAS_RECURSION MaxAliasRecursion 2828 [10] Maximum depth of alias recursion. 2829confMAX_DAEMON_CHILDREN MaxDaemonChildren 2830 [undefined] The maximum number of 2831 children the daemon will permit. After 2832 this number, connections will be 2833 rejected. If not set or <= 0, there is 2834 no limit. 2835confMAX_HEADERS_LENGTH MaxHeadersLength 2836 [32768] Maximum length of the sum 2837 of all headers. 2838confMAX_MIME_HEADER_LENGTH MaxMimeHeaderLength 2839 [undefined] Maximum length of 2840 certain MIME header field values. 2841confCONNECTION_RATE_THROTTLE ConnectionRateThrottle 2842 [undefined] The maximum number of 2843 connections permitted per second. 2844 After this many connections are 2845 accepted, further connections will be 2846 delayed. If not set or <= 0, there is 2847 no limit. 2848confWORK_RECIPIENT_FACTOR 2849 RecipientFactor [30000] Cost of each recipient. 2850confSEPARATE_PROC ForkEachJob [False] Run all deliveries in a 2851 separate process. 2852confWORK_CLASS_FACTOR ClassFactor [1800] Priority multiplier for class. 2853confWORK_TIME_FACTOR RetryFactor [90000] Cost of each delivery attempt. 2854confQUEUE_SORT_ORDER QueueSortOrder [Priority] Queue sort algorithm: 2855 Priority, Host, Filename, or Time. 2856confMIN_QUEUE_AGE MinQueueAge [0] The minimum amount of time a job 2857 must sit in the queue between queue 2858 runs. This allows you to set the 2859 queue run interval low for better 2860 responsiveness without trying all 2861 jobs in each run. 2862confDEF_CHAR_SET DefaultCharSet [unknown-8bit] When converting 2863 unlabeled 8 bit input to MIME, the 2864 character set to use by default. 2865confSERVICE_SWITCH_FILE ServiceSwitchFile 2866 [/etc/mail/service.switch] The file 2867 to use for the service switch on 2868 systems that do not have a 2869 system-defined switch. 2870confHOSTS_FILE HostsFile [/etc/hosts] The file to use when doing 2871 "file" type access of hosts names. 2872confDIAL_DELAY DialDelay [0s] If a connection fails, wait this 2873 long and try again. Zero means "don't 2874 retry". This is to allow "dial on 2875 demand" connections to have enough time 2876 to complete a connection. 2877confNO_RCPT_ACTION NoRecipientAction 2878 [none] What to do if there are no legal 2879 recipient fields (To:, Cc: or Bcc:) 2880 in the message. Legal values can 2881 be "none" to just leave the 2882 nonconforming message as is, "add-to" 2883 to add a To: header with all the 2884 known recipients (which may expose 2885 blind recipients), "add-apparently-to" 2886 to do the same but use Apparently-To: 2887 instead of To:, "add-bcc" to add an 2888 empty Bcc: header, or 2889 "add-to-undisclosed" to add the header 2890 ``To: undisclosed-recipients:;''. 2891confSAFE_FILE_ENV SafeFileEnvironment 2892 [undefined] If set, sendmail will do a 2893 chroot() into this directory before 2894 writing files. 2895confCOLON_OK_IN_ADDR ColonOkInAddr [True unless Configuration Level > 6] 2896 If set, colons are treated as a regular 2897 character in addresses. If not set, 2898 they are treated as the introducer to 2899 the RFC 822 "group" syntax. Colons are 2900 handled properly in route-addrs. This 2901 option defaults on for V5 and lower 2902 configuration files. 2903confMAX_QUEUE_RUN_SIZE MaxQueueRunSize [0] If set, limit the maximum size of 2904 any given queue run to this number of 2905 entries. Essentially, this will stop 2906 reading each queue directory after this 2907 number of entries are reached; it does 2908 _not_ pick the highest priority jobs, 2909 so this should be as large as your 2910 system can tolerate. If not set, there 2911 is no limit. 2912confDONT_EXPAND_CNAMES DontExpandCnames 2913 [False] If set, $[ ... $] lookups that 2914 do DNS based lookups do not expand 2915 CNAME records. This currently violates 2916 the published standards, but the IETF 2917 seems to be moving toward legalizing 2918 this. For example, if "FTP.Foo.ORG" 2919 is a CNAME for "Cruft.Foo.ORG", then 2920 with this option set a lookup of 2921 "FTP" will return "FTP.Foo.ORG"; if 2922 clear it returns "Cruft.FOO.ORG". N.B. 2923 you may not see any effect until your 2924 downstream neighbors stop doing CNAME 2925 lookups as well. 2926confFROM_LINE UnixFromLine [From $g $d] The From_ line used 2927 when sending to files or programs. 2928confSINGLE_LINE_FROM_HEADER SingleLineFromHeader 2929 [False] From: lines that have 2930 embedded newlines are unwrapped 2931 onto one line. 2932confALLOW_BOGUS_HELO AllowBogusHELO [False] Allow HELO SMTP command that 2933 does not include a host name. 2934confMUST_QUOTE_CHARS MustQuoteChars [.'] Characters to be quoted in a full 2935 name phrase (@,;:\()[] are automatic). 2936confOPERATORS OperatorChars [.:%@!^/[]+] Address operator 2937 characters. 2938confSMTP_LOGIN_MSG SmtpGreetingMessage 2939 [$j Sendmail $v/$Z; $b] 2940 The initial (spontaneous) SMTP 2941 greeting message. The word "ESMTP" 2942 will be inserted between the first and 2943 second words to convince other 2944 sendmails to try to speak ESMTP. 2945confDONT_INIT_GROUPS DontInitGroups [False] If set, the initgroups(3) 2946 routine will never be invoked. You 2947 might want to do this if you are 2948 running NIS and you have a large group 2949 map, since this call does a sequential 2950 scan of the map; in a large site this 2951 can cause your ypserv to run 2952 essentially full time. If you set 2953 this, agents run on behalf of users 2954 will only have their primary 2955 (/etc/passwd) group permissions. 2956confUNSAFE_GROUP_WRITES UnsafeGroupWrites 2957 [False] If set, group-writable 2958 :include: and .forward files are 2959 considered "unsafe", that is, programs 2960 and files cannot be directly referenced 2961 from such files. World-writable files 2962 are always considered unsafe. 2963confCONNECT_ONLY_TO ConnectOnlyTo [undefined] override connection 2964 address (for testing). 2965confCONTROL_SOCKET_NAME ControlSocketName 2966 [undefined] Control socket for daemon 2967 management. 2968confDOUBLE_BOUNCE_ADDRESS DoubleBounceAddress 2969 [postmaster] If an error occurs when 2970 sending an error message, send that 2971 "double bounce" error message to this 2972 address. 2973confDEAD_LETTER_DROP DeadLetterDrop [undefined] Filename to save bounce 2974 messages which could not be returned 2975 to the user or sent to postmaster. 2976 If not set, the queue file will 2977 be renamed. 2978confRRT_IMPLIES_DSN RrtImpliesDsn [False] Return-Receipt-To: header 2979 implies DSN request. 2980confRUN_AS_USER RunAsUser [undefined] If set, become this user 2981 when reading and delivering mail. 2982 Causes all file reads (e.g., .forward 2983 and :include: files) to be done as 2984 this user. Also, all programs will 2985 be run as this user, and all output 2986 files will be written as this user. 2987 Intended for use only on firewalls 2988 where users do not have accounts. 2989confMAX_RCPTS_PER_MESSAGE MaxRecipientsPerMessage 2990 [infinite] If set, allow no more than 2991 the specified number of recipients in 2992 an SMTP envelope. Further recipients 2993 receive a 452 error code (i.e., they 2994 are deferred for the next delivery 2995 attempt). 2996confDONT_PROBE_INTERFACES DontProbeInterfaces 2997 [False] If set, sendmail will _not_ 2998 insert the names and addresses of any 2999 local interfaces into class {w} 3000 (list of known "equivalent" addresses). 3001 If you set this, you must also include 3002 some support for these addresses (e.g., 3003 in a mailertable entry) -- otherwise, 3004 mail to addresses in this list will 3005 bounce with a configuration error. 3006confPID_FILE PidFile [system dependent] Location of pid 3007 file. 3008confPROCESS_TITLE_PREFIX ProcessTitlePrefix 3009 [undefined] Prefix string for the 3010 process title shown on 'ps' listings. 3011confDONT_BLAME_SENDMAIL DontBlameSendmail 3012 [safe] Override sendmail's file 3013 safety checks. This will definitely 3014 compromise system security and should 3015 not be used unless absolutely 3016 necessary. 3017confREJECT_MSG - [550 Access denied] The message 3018 given if the access database contains 3019 REJECT in the value portion. 3020confDF_BUFFER_SIZE DataFileBufferSize 3021 [4096] The maximum size of a 3022 memory-buffered data (df) file 3023 before a disk-based file is used. 3024confXF_BUFFER_SIZE XScriptFileBufferSize 3025 [4096] The maximum size of a 3026 memory-buffered transcript (xf) 3027 file before a disk-based file is 3028 used. 3029confAUTH_MECHANISMS AuthMechanisms [GSSAPI KERBEROS_V4 DIGEST-MD5 3030 CRAM-MD5] List of authentication 3031 mechanisms for AUTH (separated by 3032 spaces). The advertised list of 3033 authentication mechanisms will be the 3034 intersection of this list and the list 3035 of available mechanisms as determined 3036 by the CYRUS SASL library. 3037confDEF_AUTH_INFO DefaultAuthInfo [undefined] Name of file that contains 3038 authentication information for 3039 outgoing connections. This file 3040 must contain the user id, the 3041 authorization id, the password 3042 (plain text), and the realm to use, 3043 each on a separate line and must be 3044 readable by root (or the trusted 3045 user) only. If no realm is 3046 specified, $j is used. 3047 3048 NOTE: Currently, AuthMechanisms is 3049 used to determine the list of 3050 mechanisms to use on an outgoing 3051 connection. Sites which require a 3052 different list of mechanisms for 3053 incoming connections and outgoing 3054 connections will have the ability 3055 to do this in 8.11 by specifying a 3056 list of mechanisms as the fifth 3057 line of the DefaultAuthInfo file. 3058 If no mechanisms are given in the 3059 file, AuthMechanisms is used. The 3060 code for doing so is included as 3061 in the sendmail source code but 3062 disabled. It can be enabled by 3063 recompiling sendmail with: 3064 -D_FFR_DEFAUTHINFO_MECHS 3065confAUTH_OPTIONS AuthOptions [undefined] If this options is 'A' 3066 then the AUTH= parameter for the 3067 MAIL FROM command is only issued 3068 when authentication succeeded. 3069confLDAP_DEFAULT_SPEC LDAPDefaultSpec [undefined] Default map 3070 specification for LDAP maps. The 3071 value should only contain LDAP 3072 specific settings such as "-h host 3073 -p port -d bindDN", etc. The 3074 settings will be used for all LDAP 3075 maps unless they are specified in 3076 the individual map specification 3077 ('K' command). 3078confCACERT_PATH CACERTPath [undefined] Path to directory 3079 with certs of CAs. 3080confCACERT CACERTFile [undefined] File containing one CA 3081 cert. 3082confSERVER_CERT ServerCertFile [undefined] File containing the 3083 cert of the server, i.e., this cert 3084 is used when sendmail acts as 3085 server. 3086confSERVER_KEY ServerKeyFile [undefined] File containing the 3087 private key belonging to the server 3088 cert. 3089confCLIENT_CERT ClientCertFile [undefined] File containing the 3090 cert of the client, i.e., this cert 3091 is used when sendmail acts as 3092 client. 3093confCLIENT_KEY ClientKeyFile [undefined] File containing the 3094 private key belonging to the client 3095 cert. 3096confDH_PARAMETERS DHParameters [undefined] File containing the 3097 DH parameters. 3098confRAND_FILE RandFile [undefined] File containing random 3099 data (use prefix file:) or the 3100 name of the UNIX socket if EGD is 3101 used (use prefix egd:). STARTTLS 3102 requires this option if the compile 3103 flag HASURANDOM is not set (see 3104 sendmail/README). 3105 3106See also the description of OSTYPE for some parameters that can be 3107tweaked (generally pathnames to mailers). 3108 3109DaemonPortOptions are a special case since multiple daemons can be 3110defined. This can be done via 3111 3112 DAEMON_OPTIONS(`field1=value1,field2=value2,...') 3113 3114If DAEMON_OPTIONS is not used, then the default is 3115 3116 DAEMON_OPTIONS(`Port=smtp, Name=MTA') 3117 DAEMON_OPTIONS(`Port=587, Name=MSA, M=E') 3118 3119If you use one DAEMON_OPTIONS macro, it will alter the parameters 3120of the first of these. The second will still be defaulted; it 3121represents a "Message Submission Agent" (MSA) as defined by RFC 31222476 (see below). To turn off the default definition for the MSA, 3123use FEATURE(`no_default_msa') (see also FEATURES). If you use 3124additional DAEMON_OPTIONS macros, they will add additional daemons. 3125 3126Example 1: To change the port for the SMTP listener, while 3127still using the MSA default, use 3128 DAEMON_OPTIONS(`Port=925, Name=MTA') 3129 3130Example 2: To change the port for the MSA daemon, while still 3131using the default SMTP port, use 3132 FEATURE(`no_default_msa') 3133 DAEMON_OPTIONS(`Name=MTA') 3134 DAEMON_OPTIONS(`Port=987, Name=MSA, M=E') 3135 3136Note that if the first of those DAEMON_OPTIONS lines were omitted, then 3137there would be no listener on the standard SMTP port. 3138 3139Example 3: To listen on both IPv4 and IPv6 interfaces, use 3140 3141 DAEMON_OPTIONS(`Name=MTA-v4, Family=inet') 3142 DAEMON_OPTIONS(`Name=MTA-v6, Family=inet6') 3143 3144A "Message Submission Agent" still uses all of the same rulesets for 3145processing the message (and therefore still allows message rejection via 3146the check_* rulesets). In accordance with the RFC, the MSA will ensure 3147that all domains in the envelope are fully qualified if the message is 3148relayed to another MTA. It will also enforce the normal address syntax 3149rules and log error messages. Additionally, by using the M=a modifier 3150you can require authentication before messages are accepted by the MSA. 3151Notice: Do NOT use the 'a' modifier on a public accessible MTA! 3152Finally, the M=E modifier shown above disables ETRN as required by RFC 31532476. 3154 3155 3156+-----------+ 3157| HIERARCHY | 3158+-----------+ 3159 3160Within this directory are several subdirectories, to wit: 3161 3162m4 General support routines. These are typically 3163 very important and should not be changed without 3164 very careful consideration. 3165 3166cf The configuration files themselves. They have 3167 ".mc" suffixes, and must be run through m4 to 3168 become complete. The resulting output should 3169 have a ".cf" suffix. 3170 3171ostype Definitions describing a particular operating 3172 system type. These should always be referenced 3173 using the OSTYPE macro in the .mc file. Examples 3174 include "bsd4.3", "bsd4.4", "sunos3.5", and 3175 "sunos4.1". 3176 3177domain Definitions describing a particular domain, referenced 3178 using the DOMAIN macro in the .mc file. These are 3179 site dependent; for example, "CS.Berkeley.EDU.m4" 3180 describes hosts in the CS.Berkeley.EDU subdomain. 3181 3182mailer Descriptions of mailers. These are referenced using 3183 the MAILER macro in the .mc file. 3184 3185sh Shell files used when building the .cf file from the 3186 .mc file in the cf subdirectory. 3187 3188feature These hold special orthogonal features that you might 3189 want to include. They should be referenced using 3190 the FEATURE macro. 3191 3192hack Local hacks. These can be referenced using the HACK 3193 macro. They shouldn't be of more than voyeuristic 3194 interest outside the .Berkeley.EDU domain, but who knows? 3195 3196siteconfig Site configuration -- e.g., tables of locally connected 3197 UUCP sites. 3198 3199 3200+------------------------+ 3201| ADMINISTRATIVE DETAILS | 3202+------------------------+ 3203 3204The following sections detail usage of certain internal parts of the 3205sendmail.cf file. Read them carefully if you are trying to modify 3206the current model. If you find the above descriptions adequate, these 3207should be {boring, confusing, tedious, ridiculous} (pick one or more). 3208 3209RULESETS (* means built in to sendmail) 3210 3211 0 * Parsing 3212 1 * Sender rewriting 3213 2 * Recipient rewriting 3214 3 * Canonicalization 3215 4 * Post cleanup 3216 5 * Local address rewrite (after aliasing) 3217 1x mailer rules (sender qualification) 3218 2x mailer rules (recipient qualification) 3219 3x mailer rules (sender header qualification) 3220 4x mailer rules (recipient header qualification) 3221 5x mailer subroutines (general) 3222 6x mailer subroutines (general) 3223 7x mailer subroutines (general) 3224 8x reserved 3225 90 Mailertable host stripping 3226 96 Bottom half of Ruleset 3 (ruleset 6 in old sendmail) 3227 97 Hook for recursive ruleset 0 call (ruleset 7 in old sendmail) 3228 98 Local part of ruleset 0 (ruleset 8 in old sendmail) 3229 99 Guaranteed null (for debugging) 3230 3231 3232MAILERS 3233 3234 0 local, prog local and program mailers 3235 1 [e]smtp, relay SMTP channel 3236 2 uucp-* UNIX-to-UNIX Copy Program 3237 3 netnews Network News delivery 3238 4 fax Sam Leffler's HylaFAX software 3239 5 mail11 DECnet mailer 3240 3241 3242MACROS 3243 3244 A 3245 B Bitnet Relay 3246 C DECnet Relay 3247 D The local domain -- usually not needed 3248 E reserved for X.400 Relay 3249 F FAX Relay 3250 G 3251 H mail Hub (for mail clusters) 3252 I 3253 J 3254 K 3255 L Luser Relay 3256 M Masquerade (who you claim to be) 3257 N 3258 O 3259 P 3260 Q 3261 R Relay (for unqualified names) 3262 S Smart Host 3263 T 3264 U my UUCP name (if you have a UUCP connection) 3265 V UUCP Relay (class {V} hosts) 3266 W UUCP Relay (class {W} hosts) 3267 X UUCP Relay (class {X} hosts) 3268 Y UUCP Relay (all other hosts) 3269 Z Version number 3270 3271 3272CLASSES 3273 3274 A 3275 B domains that are candidates for bestmx lookup 3276 C 3277 D 3278 E addresses that should not seem to come from $M 3279 F hosts this system forward for 3280 G domains that should be looked up in genericstable 3281 H 3282 I 3283 J 3284 K 3285 L addresses that should not be forwarded to $R 3286 M domains that should be mapped to $M 3287 N host/domains that should not be mapped to $M 3288 O operators that indicate network operations (cannot be in local names) 3289 P top level pseudo-domains: BITNET, DECNET, FAX, UUCP, etc. 3290 Q 3291 R domains this system is willing to relay (pass anti-spam filters) 3292 S 3293 T 3294 U locally connected UUCP hosts 3295 V UUCP hosts connected to relay $V 3296 W UUCP hosts connected to relay $W 3297 X UUCP hosts connected to relay $X 3298 Y locally connected smart UUCP hosts 3299 Z locally connected domain-ized UUCP hosts 3300 . the class containing only a dot 3301 [ the class containing only a left bracket 3302 3303 3304M4 DIVERSIONS 3305 3306 1 Local host detection and resolution 3307 2 Local Ruleset 3 additions 3308 3 Local Ruleset 0 additions 3309 4 UUCP Ruleset 0 additions 3310 5 locally interpreted names (overrides $R) 3311 6 local configuration (at top of file) 3312 7 mailer definitions 3313 8 DNS based blacklists 3314 9 special local rulesets (1 and 2) 3315 3316$Revision: 8.383.2.1.2.49 $, Last updated $Date: 2001/08/14 15:25:36 $ 3317