Deleted Added
full compact
op.me (223067) op.me (244833)
1.\" Copyright (c) 1998-2005 Sendmail, Inc. and its suppliers.
2.\" All rights reserved.
3.\" Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
4.\" Copyright (c) 1983, 1993
5.\" The Regents of the University of California. All rights reserved.
6.\"
7.\" By using this file, you agree to the terms and conditions set
8.\" forth in the LICENSE file which can be found at the top level of
9.\" the sendmail distribution.
10.\"
11.\"
1.\" Copyright (c) 1998-2005 Sendmail, Inc. and its suppliers.
2.\" All rights reserved.
3.\" Copyright (c) 1983, 1995 Eric P. Allman. All rights reserved.
4.\" Copyright (c) 1983, 1993
5.\" The Regents of the University of California. All rights reserved.
6.\"
7.\" By using this file, you agree to the terms and conditions set
8.\" forth in the LICENSE file which can be found at the top level of
9.\" the sendmail distribution.
10.\"
11.\"
12.\" $Id: op.me,v 8.747 2010/05/08 04:18:27 ca Exp $
12.\" $Id: op.me,v 8.749 2012/03/02 22:37:11 ca Exp $
13.\"
14.\" eqn op.me | pic | troff -me
15.\"
16.\" Define \(sc if not defined (for text output)
17.\"
18.if !c \(sc .char \(sc S
19.\"
20.\" Define \(dg as "*" for text output and create a new .DG macro
21.\" which describes the symbol.
22.\"
23.if n .ds { [
24.if n .ds } ]
25.ie !c \(dg \{\
26.char \(dg *
27.de DG
28an asterick
29..
30.\}
31.el \{\
32.de DG
33a dagger
34..
35.\}
36.\"
37.\" Define \(dd as "#" for text output and create a new .DD macro
38.\" which describes the symbol.
39.\"
40.ie !c \(dd \{\
41.char \(dd #
42.de DD
43a pound sign
44..
45.\}
46.el \{\
47.de DD
48a double dagger
49..
50.\}
51.eh 'SMM:08-%''Sendmail Installation and Operation Guide'
52.oh 'Sendmail Installation and Operation Guide''SMM:08-%'
53.\" SD is lib if sendmail is installed in /usr/lib, sbin if in /usr/sbin
54.ds SD sbin
55.\" SB is bin if newaliases/mailq are installed in /usr/bin, ucb if in /usr/ucb
56.ds SB bin
57.nr si 3n
58.de $0
59.(x
60.in \\$3u*3n
61.ti -3n
62\\$2. \\$1
63.)x
64..
65.de $C
66.(x
67.in 0
68\\$1 \\$2. \\$3
69.)x
70..
71.+c
72.(l C
73.sz 16
74.b SENDMAIL\u\s-6TM\s0\d
75.sz 12
76.sp
77.b "INSTALLATION AND OPERATION GUIDE"
78.(f
79.b DISCLAIMER:
80This documentation is under modification.
81.)f
82.sz 10
83.sp
84.r
85Eric Allman
86Claus Assmann
87Gregory Neil Shapiro
88Sendmail, Inc.
89.sp
90.de Ve
91Version \\$2
92..
13.\"
14.\" eqn op.me | pic | troff -me
15.\"
16.\" Define \(sc if not defined (for text output)
17.\"
18.if !c \(sc .char \(sc S
19.\"
20.\" Define \(dg as "*" for text output and create a new .DG macro
21.\" which describes the symbol.
22.\"
23.if n .ds { [
24.if n .ds } ]
25.ie !c \(dg \{\
26.char \(dg *
27.de DG
28an asterick
29..
30.\}
31.el \{\
32.de DG
33a dagger
34..
35.\}
36.\"
37.\" Define \(dd as "#" for text output and create a new .DD macro
38.\" which describes the symbol.
39.\"
40.ie !c \(dd \{\
41.char \(dd #
42.de DD
43a pound sign
44..
45.\}
46.el \{\
47.de DD
48a double dagger
49..
50.\}
51.eh 'SMM:08-%''Sendmail Installation and Operation Guide'
52.oh 'Sendmail Installation and Operation Guide''SMM:08-%'
53.\" SD is lib if sendmail is installed in /usr/lib, sbin if in /usr/sbin
54.ds SD sbin
55.\" SB is bin if newaliases/mailq are installed in /usr/bin, ucb if in /usr/ucb
56.ds SB bin
57.nr si 3n
58.de $0
59.(x
60.in \\$3u*3n
61.ti -3n
62\\$2. \\$1
63.)x
64..
65.de $C
66.(x
67.in 0
68\\$1 \\$2. \\$3
69.)x
70..
71.+c
72.(l C
73.sz 16
74.b SENDMAIL\u\s-6TM\s0\d
75.sz 12
76.sp
77.b "INSTALLATION AND OPERATION GUIDE"
78.(f
79.b DISCLAIMER:
80This documentation is under modification.
81.)f
82.sz 10
83.sp
84.r
85Eric Allman
86Claus Assmann
87Gregory Neil Shapiro
88Sendmail, Inc.
89.sp
90.de Ve
91Version \\$2
92..
93.Ve $Revision: 8.747 $
93.Ve $Revision: 8.749 $
94.rm Ve
95.sp
96For Sendmail Version 8.14
97.)l
98.(f
99Sendmail is a trademark of Sendmail, Inc.
100US Patent Numbers 6865671, 6986037.
101.)f
102.sp 2
103.pp
104.i Sendmail \u\s-2TM\s0\d
105implements a general purpose internetwork mail routing facility
106under the UNIX\(rg
107operating system.
108It is not tied to any one transport protocol \*-
109its function may be likened to a crossbar switch,
110relaying messages from one domain into another.
111In the process,
112it can do a limited amount of message header editing
113to put the message into a format that is appropriate
114for the receiving domain.
115All of this is done under the control of a configuration file.
116.pp
117Due to the requirements of flexibility
118for
119.i sendmail ,
120the configuration file can seem somewhat unapproachable.
121However, there are only a few basic configurations
122for most sites,
123for which standard configuration files have been supplied.
124Most other configurations
125can be built by adjusting an existing configuration file
126incrementally.
127.pp
128.i Sendmail
129is based on
130RFC 821 (Simple Mail Transport Protocol),
131RFC 822 (Internet Mail Headers Format),
132RFC 974 (MX routing),
133RFC 1123 (Internet Host Requirements),
134RFC 1413 (Identification server),
135RFC 1652 (SMTP 8BITMIME Extension),
136RFC 1869 (SMTP Service Extensions),
137RFC 1870 (SMTP SIZE Extension),
138RFC 1891 (SMTP Delivery Status Notifications),
139RFC 1892 (Multipart/Report),
140RFC 1893 (Enhanced Mail System Status Codes),
141RFC 1894 (Delivery Status Notifications),
142RFC 1985 (SMTP Service Extension for Remote Message Queue Starting),
143RFC 2033 (Local Message Transmission Protocol),
144RFC 2034 (SMTP Service Extension for Returning Enhanced Error Codes),
145RFC 2045 (MIME),
146RFC 2476 (Message Submission),
147RFC 2487 (SMTP Service Extension for Secure SMTP over TLS),
148RFC 2554 (SMTP Service Extension for Authentication),
149RFC 2821 (Simple Mail Transfer Protocol),
150RFC 2822 (Internet Message Format),
151RFC 2852 (Deliver By SMTP Service Extension),
152and
153RFC 2920 (SMTP Service Extension for Command Pipelining).
154However, since
155.i sendmail
156is designed to work in a wider world,
157in many cases it can be configured to exceed these protocols.
158These cases are described herein.
159.pp
160Although
161.i sendmail
162is intended to run
163without the need for monitoring,
164it has a number of features
165that may be used to monitor or adjust the operation
166under unusual circumstances.
167These features are described.
168.pp
169Section one describes how to do a basic
170.i sendmail
171installation.
172Section two
173explains the day-to-day information you should know
174to maintain your mail system.
175If you have a relatively normal site,
176these two sections should contain sufficient information
177for you to install
178.i sendmail
179and keep it happy.
180Section three
181has information regarding the command line arguments.
182Section four
183describes some parameters that may be safely tweaked.
184Section five
185contains the nitty-gritty information about the configuration
186file.
187This section is for masochists
188and people who must write their own configuration file.
189Section six
190describes configuration that can be done at compile time.
191The appendixes give a brief
192but detailed explanation of a number of features
193not described in the rest of the paper.
194.bp 7
195.sh 1 "BASIC INSTALLATION"
196.pp
197There are two basic steps to installing
198.i sendmail .
199First, you have to compile and install the binary.
200If
201.i sendmail
202has already been ported to your operating system
203that should be simple.
204Second, you must build a run-time configuration file.
205This is a file that
206.i sendmail
207reads when it starts up
208that describes the mailers it knows about,
209how to parse addresses,
210how to rewrite the message header,
211and the settings of various options.
212Although the configuration file can be quite complex,
213a configuration can usually be built
214using an M4-based configuration language.
215Assuming you have the standard
216.i sendmail
217distribution, see
218.i cf/README
219for further information.
220.pp
221The remainder of this section will describe the installation of
222.i sendmail
223assuming you can use one of the existing configurations
224and that the standard installation parameters are acceptable.
225All pathnames and examples
226are given from the root of the
227.i sendmail
228subtree,
229normally
230.i /usr/src/usr.\*(SD/sendmail
231on 4.4BSD-based systems.
232.pp
233Continue with the next section if you need/want to compile
234.i sendmail
235yourself.
236If you have a running binary already on your system,
237you should probably skip to section 1.2.
238.sh 2 "Compiling Sendmail"
239.pp
240All
241.i sendmail
242source is in the
243.i sendmail
244subdirectory.
245To compile sendmail,
246.q cd
247into the
248.i sendmail
249directory and type
250.(b
251\&./Build
252.)b
253This will leave the binary in an appropriately named subdirectory,
254e.g.,
255obj.BSD-OS.2.1.i386.
256It works for multiple object versions
257compiled out of the same directory.
258.sh 3 "Tweaking the Build Invocation"
259.pp
260You can give parameters on the
261.i Build
262command.
263In most cases these are only used when the
264.i obj.*
265directory is first created.
266To restart from scratch, use
267.i -c .
268These commands include:
269.nr ii 0.5i
270.ip "\-L \fIlibdirs\fP"
271A list of directories to search for libraries.
272.ip "\-I \fIincdirs\fP"
273A list of directories to search for include files.
274.ip "\-E \fIenvar\fP=\fIvalue\fP"
275Set an environment variable to an indicated
276.i value
277before compiling.
278.ip "\-c"
279Create a new
280.i obj.*
281tree before running.
282.ip "\-f \fIsiteconfig\fP"
283Read the indicated site configuration file.
284If this parameter is not specified,
285.i Build
286includes
287.i all
288of the files
289.i $BUILDTOOLS/Site/site.$oscf.m4
290and
291.i $BUILDTOOLS/Site/site.config.m4 ,
292where $BUILDTOOLS is normally
293.i \&../devtools
294and $oscf is the same name as used on the
295.i obj.*
296directory.
297See below for a description of the site configuration file.
298.ip "\-S"
299Skip auto-configuration.
300.i Build
301will avoid auto-detecting libraries if this is set.
302All libraries and map definitions must be specified
303in the site configuration file.
304.lp
305Most other parameters are passed to the
306.i make
307program; for details see
308.i $BUILDTOOLS/README .
309.sh 3 "Creating a Site Configuration File"
310.\"XXX
311.pp
312(This section is not yet complete.
313For now, see the file devtools/README for details.)
314See sendmail/README for various compilation flags that can be set.
315.sh 3 "Tweaking the Makefile"
316.pp
317.\" .b "XXX This should all be in the Site Configuration File section."
318.i Sendmail
319supports two different formats
320for the local (on disk) version of databases,
321notably the
322.i aliases
323database.
324At least one of these should be defined if at all possible.
325.nr ii 1i
326.ip NDBM
327The ``new DBM'' format,
328available on nearly all systems around today.
329This was the preferred format prior to 4.4BSD.
330It allows such complex things as multiple databases
331and closing a currently open database.
332.ip NEWDB
333The Berkeley DB package.
334If you have this, use it.
335It allows
336long records,
337multiple open databases,
338real in-memory caching,
339and so forth.
340You can define this in conjunction with
341.sm NDBM ;
342if you do,
343old alias databases are read,
344but when a new database is created it will be in NEWDB format.
345As a nasty hack,
346if you have NEWDB, NDBM, and NIS defined,
347and if the alias file name includes the substring
348.q /yp/ ,
349.i sendmail
350will create both new and old versions of the alias file
351during a
352.i newalias
353command.
354This is required because the Sun NIS/YP system
355reads the DBM version of the alias file.
356It's ugly as sin,
357but it works.
358.lp
359If neither of these are defined,
360.i sendmail
361reads the alias file into memory on every invocation.
362This can be slow and should be avoided.
363There are also several methods for remote database access:
364.ip LDAP
365Lightweight Directory Access Protocol.
366.ip NIS
367Sun's Network Information Services (formerly YP).
368.ip NISPLUS
369Sun's NIS+ services.
370.ip NETINFO
371NeXT's NetInfo service.
372.ip HESIOD
373Hesiod service (from Athena).
374.lp
375Other compilation flags are set in
376.i conf.h
377and should be predefined for you
378unless you are porting to a new environment.
379For more options see
380.i sendmail/README .
381.sh 3 "Compilation and installation"
382.pp
383After making the local system configuration described above,
384You should be able to compile and install the system.
385The script
386.q Build
387is the best approach on most systems:
388.(b
389\&./Build
390.)b
391This will use
392.i uname (1)
393to create a custom Makefile for your environment.
394.pp
395If you are installing in the standard places,
396you should be able to install using
397.(b
398\&./Build install
399.)b
400This should install the binary in
401/usr/\*(SD
402and create links from
403/usr/\*(SB/newaliases
404and
405/usr/\*(SB/mailq
406to
407/usr/\*(SD/sendmail.
408On most systems it will also format and install man pages.
409Notice: as of version 8.12
410.i sendmail
411will no longer be installed set-user-ID root by default.
412If you really want to use the old method, you can specify it as target:
413.(b
414\&./Build install-set-user-id
415.)b
416.sh 2 "Configuration Files"
417.pp
418.i Sendmail
419cannot operate without a configuration file.
420The configuration defines the mail delivery mechanisms understood at this site,
421how to access them,
422how to forward email to remote mail systems,
423and a number of tuning parameters.
424This configuration file is detailed
425in the later portion of this document.
426.pp
427The
428.i sendmail
429configuration can be daunting at first.
430The world is complex,
431and the mail configuration reflects that.
432The distribution includes an m4-based configuration package
433that hides a lot of the complexity.
434See
435.i cf/README
436for details.
437.pp
438Our configuration files are processed by
439.i m4
440to facilitate local customization;
441the directory
442.i cf
443of the
444.i sendmail
445distribution directory
446contains the source files.
447This directory contains several subdirectories:
448.nr ii 1i
449.ip cf
450Both site-dependent and site-independent descriptions of hosts.
451These can be literal host names
452(e.g.,
453.q ucbvax.mc )
454when the hosts are gateways
455or more general descriptions
456(such as
457.q "generic-solaris2.mc"
458as a general description of an SMTP-connected host
459running Solaris 2.x.
460Files ending
461.b \&.mc
462(``M4 Configuration'')
463are the input descriptions;
464the output is in the corresponding
465.b \&.cf
466file.
467The general structure of these files is described below.
468.ip domain
469Site-dependent subdomain descriptions.
470These are tied to the way your organization wants to do addressing.
471For example,
472.b domain/CS.Berkeley.EDU.m4
473is our description for hosts in the CS.Berkeley.EDU subdomain.
474These are referenced using the
475.sm DOMAIN
476.b m4
477macro in the
478.b \&.mc
479file.
480.ip feature
481Definitions of specific features that some particular host in your site
482might want.
483These are referenced using the
484.sm FEATURE
485.b m4
486macro.
487An example feature is
488use_cw_file
489(which tells
490.i sendmail
491to read an /etc/mail/local-host-names file on startup
492to find the set of local names).
493.ip hack
494Local hacks, referenced using the
495.sm HACK
496.b m4
497macro.
498Try to avoid these.
499The point of having them here is to make it clear that they smell.
500.ip m4
501Site-independent
502.i m4 (1)
503include files that have information common to all configuration files.
504This can be thought of as a
505.q #include
506directory.
507.ip mailer
508Definitions of mailers,
509referenced using the
510.sm MAILER
511.b m4
512macro.
513The mailer types that are known in this distribution are
514fax,
515local,
516smtp,
517uucp,
518and usenet.
519For example, to include support for the UUCP-based mailers,
520use
521.q MAILER(uucp) .
522.ip ostype
523Definitions describing various operating system environments
524(such as the location of support files).
525These are referenced using the
526.sm OSTYPE
527.b m4
528macro.
529.ip sh
530Shell files used by the
531.b m4
532build process.
533You shouldn't have to mess with these.
534.ip siteconfig
535Local UUCP connectivity information.
536This directory has been supplanted by the mailertable feature;
537any new configurations should use that feature to do UUCP
538(and other) routing.
539The use of this directory is deprecated.
540.pp
541If you are in a new domain
542(e.g., a company),
543you will probably want to create a
544cf/domain
545file for your domain.
546This consists primarily of relay definitions
547and features you want enabled site-wide:
548for example, Berkeley's domain definition
549defines relays for
550BitNET
551and UUCP.
552These are specific to Berkeley,
553and should be fully-qualified internet-style domain names.
554Please check to make certain they are reasonable for your domain.
555.pp
556Subdomains at Berkeley are also represented in the
557cf/domain
558directory.
559For example,
560the domain
561CS.Berkeley.EDU
562is the Computer Science subdomain,
563EECS.Berkeley.EDU
564is the Electrical Engineering and Computer Sciences subdomain,
565and
566S2K.Berkeley.EDU
567is the Sequoia 2000 subdomain.
568You will probably have to add an entry to this directory
569to be appropriate for your domain.
570.pp
571You will have to use or create
572.b \&.mc
573files in the
574.i cf/cf
575subdirectory for your hosts.
576This is detailed in the
577cf/README
578file.
579.sh 2 "Details of Installation Files"
580.pp
581This subsection describes the files that
582comprise the
583.i sendmail
584installation.
585.sh 3 "/usr/\*(SD/sendmail"
586.pp
587The binary for
588.i sendmail
589is located in /usr/\*(SD\**.
590.(f
591\**This is usually
592/usr/sbin
593on 4.4BSD and newer systems;
594many systems install it in
595/usr/lib.
596I understand it is in /usr/ucblib
597on System V Release 4.
598.)f
599It should be set-group-ID smmsp as described in
600sendmail/SECURITY.
601For security reasons,
602/, /usr, and /usr/\*(SD
603should be owned by root, mode 0755\**.
604.(f
605\**Some vendors ship them owned by bin;
606this creates a security hole that is not actually related to
607.i sendmail .
608Other important directories that should have restrictive ownerships
609and permissions are
610/bin, /usr/bin, /etc, /etc/mail, /usr/etc, /lib, and /usr/lib.
611.)f
612.sh 3 "/etc/mail/sendmail.cf"
613.pp
614This is the main configuration file for
615.i sendmail \**.
616.(f
617\**Actually, the pathname varies depending on the operating system;
618/etc/mail is the preferred directory.
619Some older systems install it in
620.b /usr/lib/sendmail.cf ,
621and I've also seen it in
622.b /usr/ucblib .
623If you want to move this file,
624add -D_PATH_SENDMAILCF=\e"/file/name\e"
625to the flags passed to the C compiler.
626Moving this file is not recommended:
627other programs and scripts know of this location.
628.)f
629This is one of the two non-library file names compiled into
630.i sendmail \**,
631the other is /etc/mail/submit.cf.
632.(f
633\**The system libraries can reference other files;
634in particular, system library subroutines that
635.i sendmail
636calls probably reference
637.i /etc/passwd
638and
639.i /etc/resolv.conf .
640.)f
641.pp
642The configuration file is normally created
643using the distribution files described above.
644If you have a particularly unusual system configuration
645you may need to create a special version.
646The format of this file is detailed in later sections
647of this document.
648.sh 3 "/etc/mail/submit.cf"
649.pp
650This is the configuration file for
651.i sendmail
652when it is used for initial mail submission, in which case
653it is also called ``Mail Submission Program'' (MSP)
654in contrast to ``Mail Transfer Agent'' (MTA).
655Starting with version 8.12,
656.i sendmail
657uses one of two different configuration files based on its operation mode
658(or the new
659.b \-A
660option).
661For initial mail submission, i.e., if one of the options
662.b \-bm
663(default),
664.b \-bs ,
665or
666.b \-t
667is specified, submit.cf is used (if available),
668for other operations sendmail.cf is used.
669Details can be found in
670.i sendmail/SECURITY .
671submit.cf is shipped with sendmail (in cf/cf/) and is installed by default.
672If changes to the configuration need to be made, start with
673cf/cf/submit.mc and follow the instruction in cf/README.
674.sh 3 "/usr/\*(SB/newaliases"
675.pp
676The
677.i newaliases
678command should just be a link to
679.i sendmail :
680.(b
681rm \-f /usr/\*(SB/newaliases
682ln \-s /usr/\*(SD/sendmail /usr/\*(SB/newaliases
683.)b
684This can be installed in whatever search path you prefer
685for your system.
686.sh 3 "/usr/\*(SB/hoststat"
687.pp
688The
689.i hoststat
690command should just be a link to
691.i sendmail ,
692in a fashion similar to
693.i newaliases .
694This command lists the status of the last mail transaction
695with all remote hosts. The
696.b \-v
697flag will prevent the status display from being truncated.
698It functions only when the
699.b HostStatusDirectory
700option is set.
701.sh 3 "/usr/\*(SB/purgestat"
702.pp
703This command is also a link to
704.i sendmail .
705It flushes expired (Timeout.hoststatus) information that is stored in the
706.b HostStatusDirectory
707tree.
708.sh 3 "/var/spool/mqueue"
709.pp
710The directory
711.i /var/spool/mqueue
712should be created to hold the mail queue.
713This directory should be mode 0700
714and owned by root.
715.pp
716The actual path of this directory
717is defined by the
718.b QueueDirectory
719option of the
720.i sendmail.cf
721file.
722To use multiple queues,
723supply a value ending with an asterisk.
724For example,
725.i /var/spool/mqueue/qd*
726will use all of the directories or symbolic links to directories
727beginning with `qd' in
728.i /var/spool/mqueue
729as queue directories.
730Do not change the queue directory structure
731while sendmail is running.
732.pp
733If these directories have subdirectories or symbolic links to directories
734named `qf', `df', and `xf', then these will be used for the different
735queue file types.
736That is, the data files are stored in the `df' subdirectory,
737the transcript files are stored in the `xf' subdirectory, and
738all others are stored in the `qf' subdirectory.
739.pp
740If shared memory support is compiled in,
741.i sendmail
742stores the available diskspace in a shared memory segment
743to make the values readily available to all children without
744incurring system overhead.
745In this case, only the daemon updates the data;
746i.e., the sendmail daemon creates the shared memory segment
747and deletes it if it is terminated.
748To use this,
749.i sendmail
750must have been compiled with support for shared memory
751(-DSM_CONF_SHM)
752and the option
753.b SharedMemoryKey
754must be set.
755Notice: do not use the same key for
756.i sendmail
757invocations with different queue directories
758or different queue group declarations.
759Access to shared memory is not controlled by locks,
760i.e., there is a race condition when data in the shared memory is updated.
761However, since operation of
762.i sendmail
763does not rely on the data in the shared memory, this does not negatively
764influence the behavior.
765.sh 3 "/var/spool/clientmqueue"
766.pp
767The directory
768.i /var/spool/clientmqueue
769should be created to hold the mail queue.
770This directory should be mode 0770
771and owned by user smmsp, group smmsp.
772.pp
773The actual path of this directory
774is defined by the
775.b QueueDirectory
776option of the
777.i submit.cf
778file.
779.sh 3 "/var/spool/mqueue/.hoststat"
780.pp
781This is a typical value for the
782.b HostStatusDirectory
783option,
784containing one file per host
785that this sendmail has chatted with recently.
786It is normally a subdirectory of
787.i mqueue .
788.sh 3 "/etc/mail/aliases*"
789.pp
790The system aliases are held in
791.q /etc/mail/aliases .
792A sample is given in
793.q sendmail/aliases
794which includes some aliases which
795.i must
796be defined:
797.(b
798cp sendmail/aliases /etc/mail/aliases
799.i "edit /etc/mail/aliases"
800.)b
801You should extend this file with any aliases that are apropos to your system.
802.pp
803Normally
804.i sendmail
805looks at a database version of the files,
806stored either in
807.q /etc/mail/aliases.dir
808and
809.q /etc/mail/aliases.pag
810or
811.q /etc/mail/aliases.db
812depending on which database package you are using.
813The actual path of this file
814is defined in the
815.b AliasFile
816option of the
817.i sendmail.cf
818file.
819.pp
820The permissions of the alias file and the database versions
821should be 0640 to prevent local denial of service attacks
822as explained in the top level
823.b README
824in the sendmail distribution.
825If the permissions 0640 are used, be sure that only trusted users belong
826to the group assigned to those files. Otherwise, files should not even
827be group readable.
828.sh 3 "/etc/rc or /etc/init.d/sendmail"
829.pp
830It will be necessary to start up the
831.i sendmail
832daemon when your system reboots.
833This daemon performs two functions:
834it listens on the SMTP socket for connections
835(to receive mail from a remote system)
836and it processes the queue periodically
837to insure that mail gets delivered when hosts come up.
838.pp
839If necessary, add the following lines to
840.q /etc/rc
841(or
842.q /etc/rc.local
843as appropriate)
844in the area where it is starting up the daemons
845on a BSD-base system,
846or on a System-V-based system
847in one of the startup files, typically
848.q /etc/init.d/sendmail :
849.(b
850if [ \-f /usr/\*(SD/sendmail \-a \-f /etc/mail/sendmail.cf ]; then
851 (cd /var/spool/mqueue; rm \-f xf*)
852 /usr/\*(SD/sendmail \-bd \-q30m &
853 echo \-n ' sendmail' >/dev/console
854fi
855.)b
856The
857.q cd
858and
859.q rm
860commands insure that all transcript files have been removed;
861extraneous transcript files may be left around
862if the system goes down in the middle of processing a message.
863The line that actually invokes
864.i sendmail
865has two flags:
866.q \-bd
867causes it to listen on the SMTP port,
868and
869.q \-q30m
870causes it to run the queue every half hour.
871.pp
872Some people use a more complex startup script,
873removing zero length qf/hf/Qf files and df files for which there is no
874qf/hf/Qf file.
875Note this is not advisable.
876For example, see Figure 1
877for an example of a complex script which does this clean up.
878.(z
879.hl
880#!/bin/sh
881# remove zero length qf/hf/Qf files
882for qffile in qf* hf* Qf*
883do
884 if [ \-r $qffile ]
885 then
886 if [ ! \-s $qffile ]
887 then
888 echo \-n " <zero: $qffile>" > /dev/console
889 rm \-f $qffile
890 fi
891 fi
892done
893# rename tf files to be qf if the qf does not exist
894for tffile in tf*
895do
896 qffile=`echo $tffile | sed 's/t/q/'`
897 if [ \-r $tffile \-a ! \-f $qffile ]
898 then
899 echo \-n " <recovering: $tffile>" > /dev/console
900 mv $tffile $qffile
901 else
902 if [ \-f $tffile ]
903 then
904 echo \-n " <extra: $tffile>" > /dev/console
905 rm \-f $tffile
906 fi
907 fi
908done
909# remove df files with no corresponding qf/hf/Qf files
910for dffile in df*
911do
912 qffile=`echo $dffile | sed 's/d/q/'`
913 hffile=`echo $dffile | sed 's/d/h/'`
914 Qffile=`echo $dffile | sed 's/d/Q/'`
915 if [ \-r $dffile \-a ! \-f $qffile \-a ! \-f $hffile \-a ! \-f $Qffile ]
916 then
917 echo \-n " <incomplete: $dffile>" > /dev/console
918 mv $dffile `echo $dffile | sed 's/d/D/'`
919 fi
920done
921# announce files that have been saved during disaster recovery
922for xffile in [A-Z]f*
923do
924 if [ \-f $xffile ]
925 then
926 echo \-n " <panic: $xffile>" > /dev/console
927 fi
928done
929.sp
930.ce
931Figure 1 \(em A complex startup script
932.hl
933.)z
934.sh 3 "/etc/mail/helpfile"
935.pp
936This is the help file used by the SMTP
937.b HELP
938command.
939It should be copied from
940.q sendmail/helpfile :
941.(b
942cp sendmail/helpfile /etc/mail/helpfile
943.)b
944The actual path of this file
945is defined in the
946.b HelpFile
947option of the
948.i sendmail.cf
949file.
950.sh 3 "/etc/mail/statistics"
951.pp
952If you wish to collect statistics
953about your mail traffic,
954you should create the file
955.q /etc/mail/statistics :
956.(b
957cp /dev/null /etc/mail/statistics
958chmod 0600 /etc/mail/statistics
959.)b
960This file does not grow.
961It is printed with the program
962.q mailstats/mailstats.c.
963The actual path of this file
964is defined in the
965.b S
966option of the
967.i sendmail.cf
968file.
969.sh 3 "/usr/\*(SB/mailq"
970.pp
971If
972.i sendmail
973is invoked as
974.q mailq,
975it will simulate the
976.b \-bp
977flag
978(i.e.,
979.i sendmail
980will print the contents of the mail queue;
981see below).
982This should be a link to /usr/\*(SD/sendmail.
983.sh 3 "sendmail.pid"
984.pp
985.i sendmail
986stores its current pid in the file specified by the
987.b PidFile
988option (default is _PATH_SENDMAILPID).
989.i sendmail
990uses
991.b TempFileMode
992(which defaults to 0600) as
993the permissions of that file
994to prevent local denial of service attacks
995as explained in the top level
996.b README
997in the sendmail distribution.
998If the file already exists, then it might be necessary to
999change the permissions accordingly, e.g.,
1000.(b
1001chmod 0600 /var/run/sendmail.pid
1002.)b
1003Note that as of version 8.13, this file is unlinked when
1004.i sendmail
1005exits.
1006As a result of this change, a script such as the following,
1007which may have worked prior to 8.13, will no longer work:
1008.(b
1009# stop & start sendmail
1010PIDFILE=/var/run/sendmail.pid
1011kill `head -1 $PIDFILE`
1012`tail -1 $PIDFILE`
1013.)b
1014because it assumes that the pidfile will still exist even
1015after killing the process to which it refers.
1016Below is a script which will work correctly
1017on both newer and older versions:
1018.(b
1019# stop & start sendmail
1020PIDFILE=/var/run/sendmail.pid
1021pid=`head -1 $PIDFILE`
1022cmd=`tail -1 $PIDFILE`
1023kill $pid
1024$cmd
1025.)b
1026This is just an example script, it does not perform any error checks,
1027e.g., whether the pidfile exists at all.
1028.sh 3 "Map Files"
1029.pp
1030To prevent local denial of service attacks
1031as explained in the top level
1032.b README
1033in the sendmail distribution,
1034the permissions of map files created by
1035.i makemap
1036should be 0640.
1037The use of 0640 implies that only trusted users belong to the group
1038assigned to those files.
1039If those files already exist, then it might be necessary to
1040change the permissions accordingly, e.g.,
1041.(b
1042cd /etc/mail
1043chmod 0640 *.db *.pag *.dir
1044.)b
1045.sh 1 "NORMAL OPERATIONS"
1046.sh 2 "The System Log"
1047.pp
1048The system log is supported by the
1049.i syslogd \|(8)
1050program.
1051All messages from
1052.i sendmail
1053are logged under the
1054.sm LOG_MAIL
1055facility\**.
1056.(f
1057\**Except on Ultrix,
1058which does not support facilities in the syslog.
1059.)f
1060.sh 3 "Format"
1061.pp
1062Each line in the system log
1063consists of a timestamp,
1064the name of the machine that generated it
1065(for logging from several machines
1066over the local area network),
1067the word
1068.q sendmail: ,
1069and a message\**.
1070.(f
1071\**This format may vary slightly if your vendor has changed
1072the syntax.
1073.)f
1074Most messages are a sequence of
1075.i name \c
1076=\c
1077.i value
1078pairs.
1079.pp
1080The two most common lines are logged when a message is processed.
1081The first logs the receipt of a message;
1082there will be exactly one of these per message.
1083Some fields may be omitted if they do not contain interesting information.
1084Fields are:
1085.ip from
1086The envelope sender address.
1087.ip size
1088The size of the message in bytes.
1089.ip class
1090The class (i.e., numeric precedence) of the message.
1091.ip pri
1092The initial message priority (used for queue sorting).
1093.ip nrcpts
1094The number of envelope recipients for this message
1095(after aliasing and forwarding).
1096.ip msgid
1097The message id of the message (from the header).
1098.ip bodytype
1099The message body type (7BIT or 8BITMIME),
1100as determined from the envelope.
1101.ip proto
1102The protocol used to receive this message (e.g., ESMTP or UUCP)
1103.ip daemon
1104The daemon name from the
1105.b DaemonPortOptions
1106setting.
1107.ip relay
1108The machine from which it was received.
1109.lp
1110There is also one line logged per delivery attempt
1111(so there can be several per message if delivery is deferred
1112or there are multiple recipients).
1113Fields are:
1114.ip to
1115A comma-separated list of the recipients to this mailer.
1116.ip ctladdr
1117The ``controlling user'', that is, the name of the user
1118whose credentials we use for delivery.
1119.ip delay
1120The total delay between the time this message was received
1121and the current delivery attempt.
1122.ip xdelay
1123The amount of time needed in this delivery attempt
1124(normally indicative of the speed of the connection).
1125.ip mailer
1126The name of the mailer used to deliver to this recipient.
1127.ip relay
1128The name of the host that actually accepted (or rejected) this recipient.
1129.ip dsn
1130The enhanced error code (RFC 2034) if available.
1131.ip stat
1132The delivery status.
1133.lp
1134Not all fields are present in all messages;
1135for example, the relay is usually not listed for local deliveries.
1136.sh 3 "Levels"
1137.pp
1138If you have
1139.i syslogd \|(8)
1140or an equivalent installed,
1141you will be able to do logging.
1142There is a large amount of information that can be logged.
1143The log is arranged as a succession of levels.
1144At the lowest level
1145only extremely strange situations are logged.
1146At the highest level,
1147even the most mundane and uninteresting events
1148are recorded for posterity.
1149As a convention,
1150log levels under ten
1151are considered generally
1152.q useful;
1153log levels above 64
1154are reserved for debugging purposes.
1155Levels from 11\-64 are reserved for verbose information
1156that some sites might want.
1157.pp
1158A complete description of the log levels
1159is given in section ``Log Level''.
1160.sh 2 "Dumping State"
1161.pp
1162You can ask
1163.i sendmail
1164to log a dump of the open files
1165and the connection cache
1166by sending it a
1167.sm SIGUSR1
1168signal.
1169The results are logged at
1170.sm LOG_DEBUG
1171priority.
1172.sh 2 "The Mail Queues"
1173.pp
1174Mail messages may either be delivered immediately or be held for later
1175delivery.
1176Held messages are placed into a holding directory called a mail queue.
1177.pp
1178A mail message may be queued for these reasons:
1179.bu
1180If a mail message is temporarily undeliverable, it is queued
1181and delivery is attempted later.
1182If the message is addressed to multiple recipients, it is queued
1183only for those recipients to whom delivery is not immediately possible.
1184.bu
1185If the SuperSafe option is set to true,
1186all mail messages are queued while delivery is attempted.
1187.bu
1188If the DeliveryMode option is set to queue-only or defer,
1189all mail is queued, and no immediate delivery is attempted.
1190.bu
1191If the load average becomes higher than the value of the QueueLA option
1192and the
1193.b QueueFactor
1194(\c
1195.b q )
1196option divided by the difference in the current load average and the
1197.b QueueLA
1198option plus one
1199is less than the priority of the message,
1200messages are queued rather than immediately delivered.
1201.bu
1202One or more addresses are marked as expensive and delivery is postponed
1203until the next queue run or one or more address are marked as held via
1204mailer which uses the hold mailer flag.
1205.bu
1206The mail message has been marked as quarantined via a mail filter or
1207rulesets.
1208.bu
1209.sh 3 "Queue Groups and Queue Directories"
1210.pp
1211There are one or more mail queues.
1212Each mail queue belongs to a queue group.
1213There is always a default queue group that is called ``mqueue''
1214(which is where messages go by default unless otherwise specified).
1215The directory or directories which comprise the default queue group
1216are specified by the QueueDirectory option.
1217There are zero or more
1218additional named queue groups declared using the
1219.b Q
1220command in the configuration file.
1221.pp
1222By default, a queued message is placed in the queue group
1223associated with the first recipient in the recipient list.
1224A recipient address is mapped to a queue group as follows.
1225First, if there is a ruleset called ``queuegroup'',
1226and if this ruleset maps the address to a queue group name,
1227then that queue group is chosen.
1228That is, the argument for the ruleset is the recipient address
1229and the result should be
1230.b $#
1231followed by the name of a queue group.
1232Otherwise, if the mailer associated with the address specifies
1233a queue group, then that queue group is chosen.
1234Otherwise, the default queue group is chosen.
1235.pp
1236A message with multiple recipients will be split
1237if different queue groups are chosen
1238by the mapping of recipients to queue groups.
1239.pp
1240When a message is placed in a queue group, and the queue group has
1241more than one queue, a queue is selected randomly.
1242.pp
1243If a message with multiple recipients is placed into a queue group
1244with the 'r' option (maximum number of recipients per message)
1245set to a positive value
1246.i N ,
1247and if there are more than
1248.i N
1249recipients
1250in the message, then the message will be split into multiple messages,
1251each of which have at most
1252.i N
1253recipients.
1254.pp
1255Notice: if multiple queue groups are used, do
1256.b not
1257move queue files around, e.g., into a different queue directory.
1258This may have weird effects and can cause mail not to be delivered.
1259Queue files and directories should be treated as opaque
1260and should not be manipulated directly.
1261.sh 3 "Queue Runs"
1262.pp
1263.i sendmail
1264has two different ways to process the queue(s).
1265The first one is to start queue runners after certain intervals
1266(``normal'' queue runners),
1267the second one is to keep queue runner processes around
1268(``persistent'' queue runners).
1269How to select either of these types is discussed in the appendix
1270``COMMAND LINE FLAGS''.
1271Persistent queue runners have the advantage that no new processes
1272need to be spawned at certain intervals; they just sleep for
1273a specified time after they finished a queue run.
1274Another advantage of persistent queue runners is that only one process
1275belonging to a workgroup (a workgroup is a set of queue groups)
1276collects the data for a queue run
1277and then multiple queue runner may go ahead using that data.
1278This can significantly reduce the disk I/O necessary to read the
1279queue files compared to starting multiple queue runners directly.
1280Their disadvantage is that a new queue run is only started
1281after all queue runners belonging to a group finished their tasks.
1282In case one of the queue runners tries delivery to a slow recipient site
1283at the end of a queue run, the next queue run may be substantially delayed.
1284In general this should be smoothed out due to the distribution of
1285those slow jobs, however, for sites with small number of
1286queue entries this might introduce noticable delays.
1287In general, persistent queue runners are only useful for
1288sites with big queues.
1289.sh 3 "Manual Intervention"
1290.pp
1291Under normal conditions the mail queue will be processed transparently.
1292However, you may find that manual intervention is sometimes necessary.
1293For example,
1294if a major host is down for a period of time
1295the queue may become clogged.
1296Although
1297.i sendmail
1298ought to recover gracefully when the host comes up,
1299you may find performance unacceptably bad in the meantime.
1300In that case you want to check the content of the queue
1301and manipulate it as explained in the next two sections.
1302.sh 3 "Printing the queue"
1303.pp
1304The contents of the queue(s) can be printed
1305using the
1306.i mailq
1307command
1308(or by specifying the
1309.b \-bp
1310flag to
1311.i sendmail ):
1312.(b
1313mailq
1314.)b
1315This will produce a listing of the queue id's,
1316the size of the message,
1317the date the message entered the queue,
1318and the sender and recipients.
1319If shared memory support is compiled in,
1320the flag
1321.b \-bP
1322can be used to print the number of entries in the queue(s),
1323provided a process updates the data.
1324However, as explained earlier, the output might be slightly wrong,
1325since access to the shared memory is not locked.
1326For example,
1327``unknown number of entries''
1328might be shown.
1329The internal counters are updated after each queue run
1330to the correct value again.
1331.sh 3 "Forcing the queue"
1332.pp
1333.i Sendmail
1334should run the queue automatically at intervals.
1335When using multiple queues,
1336a separate process will by default be created to
1337run each of the queues
1338unless the queue run is initiated by a user
1339with the verbose flag.
1340The algorithm is to read and sort the queue,
1341and then to attempt to process all jobs in order.
1342When it attempts to run the job,
1343.i sendmail
1344first checks to see if the job is locked.
1345If so, it ignores the job.
1346.pp
1347There is no attempt to insure that only one queue processor
1348exists at any time,
1349since there is no guarantee that a job cannot take forever
1350to process
1351(however,
1352.i sendmail
1353does include heuristics to try to abort jobs
1354that are taking absurd amounts of time;
1355technically, this violates RFC 821, but is blessed by RFC 1123).
1356Due to the locking algorithm,
1357it is impossible for one job to freeze the entire queue.
1358However,
1359an uncooperative recipient host
1360or a program recipient
1361that never returns
1362can accumulate many processes in your system.
1363Unfortunately,
1364there is no completely general way to solve this.
1365.pp
1366In some cases,
1367you may find that a major host going down
1368for a couple of days
1369may create a prohibitively large queue.
1370This will result in
1371.i sendmail
1372spending an inordinate amount of time
1373sorting the queue.
1374This situation can be fixed by moving the queue to a temporary place
1375and creating a new queue.
1376The old queue can be run later when the offending host returns to service.
1377.pp
1378To do this,
1379it is acceptable to move the entire queue directory:
1380.(b
1381cd /var/spool
1382mv mqueue omqueue; mkdir mqueue; chmod 0700 mqueue
1383.)b
1384You should then kill the existing daemon
1385(since it will still be processing in the old queue directory)
1386and create a new daemon.
1387.pp
1388To run the old mail queue, issue the following command:
1389.(b
1390/usr/\*(SD/sendmail \-C /etc/mail/queue.cf \-q
1391.)b
1392The
1393.b \-C
1394flag specifies an alternate configuration file
1395.b queue.cf
1396which should refer to the moved queue directory
1397.(b
1398O QueueDirectory=/var/spool/omqueue
1399.)b
1400and the
1401.b \-q
1402flag says to just run every job in the queue.
1403You can also specify the moved queue directory on the command line
1404.(b
1405/usr/\*(SD/sendmail \-oQ/var/spool/omqueue \-q
1406.)b
1407but this requires that you do not have
1408queue groups in the configuration file,
1409because those are not subdirectories of the moved directory.
1410See the section about ``Queue Group Declaration'' for details;
1411you most likely need a different configuration file to correctly deal
1412with this problem.
1413However, a proper configuration of queue groups should avoid
1414filling up queue directories, so you shouldn't run into
1415this problem.
1416If you have a tendency toward voyeurism,
1417you can use the
1418.b \-v
1419flag to watch what is going on.
1420.pp
1421When the queue is finally emptied,
1422you can remove the directory:
1423.(b
1424rmdir /var/spool/omqueue
1425.)b
1426.sh 3 "Quarantined Queue Items"
1427.pp
1428It is possible to "quarantine" mail messages,
1429otherwise known as envelopes.
1430Envelopes (queue files) are stored but not considered for delivery or
1431display unless the "quarantine" state of the envelope is undone or
1432delivery or display of quarantined items is requested.
1433Quarantined messages are tagged by using a different name for the queue
1434file, 'hf' instead of 'qf', and by adding the quarantine reason to the
1435queue file.
1436.pp
1437Delivery or display of quarantined items can be requested using the
1438.b \-qQ
1439flag to
1440.i sendmail
1441or
1442.i mailq .
1443Additionally, messages already in the queue can be quarantined or
1444unquarantined using the new
1445.b \-Q
1446flag to sendmail.
1447For example,
1448.(b
1449sendmail -Qreason -q[!][I|R|S][matchstring]
1450.)b
1451Quarantines the normal queue items matching the criteria specified by the
1452.b "-q[!][I|R|S][matchstring]"
1453using the reason given on the
1454.b \-Q
1455flag.
1456Likewise,
1457.(b
1458sendmail -qQ -Q[reason] -q[!][I|R|S|Q][matchstring]
1459.)b
1460Change the quarantine reason for the quarantined items matching the
1461criteria specified by the
1462.b "-q[!][I|R|S|Q][matchstring]"
1463using the reason given on the
1464.b \-Q
1465flag.
1466If there is no reason,
1467 unquarantine the matching items and make them normal queue items.
1468Note that the
1469.b \-qQ
1470flag tells sendmail to operate on quarantined items instead of normal items.
1471.sh 2 "Disk Based Connection Information"
1472.pp
1473.i Sendmail
1474stores a large amount of information about each remote system it
1475has connected to in memory. It is possible to preserve some
1476of this information on disk as well, by using the
1477.b HostStatusDirectory
1478option, so that it may be shared between several invocations of
1479.i sendmail .
1480This allows mail to be queued immediately or skipped during a queue run if
1481there has been a recent failure in connecting to a remote machine.
1482Note: information about a remote system is stored in a file
1483whose pathname consists of the components of the hostname in reverse order.
1484For example, the information for
1485.b host.example.com
1486is stored in
1487.b com./example./host .
1488For top-level domains like
1489.b com
1490this can create a large number of subdirectories
1491which on some filesystems can exhaust some limits.
1492Moreover, the performance of lookups in directory with thousands of entries
1493can be fairly slow depending on the filesystem implementation.
1494.pp
1495Additionally enabling
1496.b SingleThreadDelivery
1497has the added effect of single-threading mail delivery to a destination.
1498This can be quite helpful
1499if the remote machine is running an SMTP server that is easily overloaded
1500or cannot accept more than a single connection at a time,
1501but can cause some messages to be punted to a future queue run.
1502It also applies to
1503.i all
1504hosts, so setting this because you have one machine on site
1505that runs some software that is easily overrun
1506can cause mail to other hosts to be slowed down.
1507If this option is set,
1508you probably want to set the
1509.b MinQueueAge
1510option as well and run the queue fairly frequently;
1511this way jobs that are skipped because another
1512.i sendmail
1513is talking to the same host will be tried again quickly
1514rather than being delayed for a long time.
1515.pp
1516The disk based host information is stored in a subdirectory of the
1517.b mqueue
1518directory called
1519.b \&.hoststat \**.
1520.(f
1521\**This is the usual value of the
1522.b HostStatusDirectory
1523option;
1524it can, of course, go anywhere you like in your filesystem.
1525.)f
1526Removing this directory and its subdirectories has an effect similar to
1527the
1528.i purgestat
1529command and is completely safe.
1530However,
1531.i purgestat
1532only removes expired (Timeout.hoststatus) data.
1533The information in these directories can
1534be perused with the
1535.i hoststat
1536command, which will indicate the host name, the last access, and the
1537status of that access.
1538An asterisk in the left most column indicates that a
1539.i sendmail
1540process currently has the host locked for mail delivery.
1541.pp
1542The disk based connection information is treated the same way as memory based
1543connection information for the purpose of timeouts.
1544By default, information about host failures is valid for 30 minutes.
1545This can be adjusted with
1546the
1547.b Timeout.hoststatus
1548option.
1549.pp
1550The connection information stored on disk may be expired at any time
1551with the
1552.i purgestat
1553command or by invoking sendmail with the
1554.b \-bH
1555switch.
1556The connection information may be viewed with the
1557.i hoststat
1558command or by invoking sendmail with the
1559.b \-bh
1560switch.
1561.sh 2 "The Service Switch"
1562.pp
1563The implementation of certain system services
1564such as host and user name lookup
1565is controlled by the service switch.
1566If the host operating system supports such a switch,
1567and sendmail knows about it,
1568.i sendmail
1569will use the native version.
1570Ultrix, Solaris, and DEC OSF/1 are examples of such systems\**.
1571.(f
1572\**HP-UX 10 has service switch support,
1573but since the APIs are apparently not available in the libraries
1574.i sendmail
1575does not use the native service switch in this release.
1576.)f
1577.pp
1578If the underlying operating system does not support a service switch
1579(e.g., SunOS 4.X, HP-UX, BSD)
1580then
1581.i sendmail
1582will provide a stub implementation.
1583The
1584.b ServiceSwitchFile
1585option points to the name of a file that has the service definitions.
1586Each line has the name of a service
1587and the possible implementations of that service.
1588For example, the file:
1589.(b
1590hosts dns files nis
1591aliases files nis
1592.)b
1593will ask
1594.i sendmail
1595to look for hosts in the Domain Name System first.
1596If the requested host name is not found, it tries local files,
1597and if that fails it tries NIS.
1598Similarly, when looking for aliases
1599it will try the local files first followed by NIS.
1600.pp
1601Notice: since
1602.i sendmail
1603must access MX records for correct operation, it will use
1604DNS if it is configured in the
1605.b ServiceSwitchFile
1606file.
1607Hence an entry like
1608.(b
1609hosts files dns
1610.)b
1611will not avoid DNS lookups even if a host can be found
1612in /etc/hosts.
1613.pp
1614Service switches are not completely integrated.
1615For example, despite the fact that the host entry listed in the above example
1616specifies to look in NIS,
1617on SunOS this won't happen because the system implementation of
1618.i gethostbyname \|(3)
1619doesn't understand this.
1620.sh 2 "The Alias Database"
1621.pp
1622After recipient addresses are read from the SMTP connection
1623or command line
1624they are parsed by ruleset 0,
1625which must resolve to a
1626{\c
1627.i mailer ,
1628.i host ,
1629.i address }
1630triple.
1631If the flags selected by the
1632.i mailer
1633include the
1634.b A
1635(aliasable) flag,
1636the
1637.i address
1638part of the triple is looked up as the key
1639(i.e., the left hand side)
1640in the alias database.
1641If there is a match, the address is deleted from the send queue
1642and all addresses on the right hand side of the alias
1643are added in place of the alias that was found.
1644This is a recursive operation,
1645so aliases found in the right hand side of the alias
1646are similarly expanded.
1647.pp
1648The alias database exists in two forms.
1649One is a text form,
1650maintained in the file
1651.i /etc/mail/aliases.
1652The aliases are of the form
1653.(b
1654name: name1, name2, ...
1655.)b
1656Only local names may be aliased;
1657e.g.,
1658.(b
1659eric@prep.ai.MIT.EDU: eric@CS.Berkeley.EDU
1660.)b
1661will not have the desired effect
1662(except on prep.ai.MIT.EDU,
1663and they probably don't want me)\**.
1664.(f
1665\**Actually, any mailer that has the `A' mailer flag set
1666will permit aliasing;
1667this is normally limited to the local mailer.
1668.)f
1669Aliases may be continued by starting any continuation lines
1670with a space or a tab or by putting a backslash directly before
1671the newline.
1672Blank lines and lines beginning with a sharp sign
1673(\c
1674.q # )
1675are comments.
1676.pp
1677The second form is processed by the
1678.i ndbm \|(3)\**
1679.(f
1680\**The
1681.i gdbm
1682package does not work.
1683.)f
1684or the Berkeley DB library.
1685This form is in the file
1686.i /etc/mail/aliases.db
1687(if using NEWDB)
1688or
1689.i /etc/mail/aliases.dir
1690and
1691.i /etc/mail/aliases.pag
1692(if using NDBM).
1693This is the form that
1694.i sendmail
1695actually uses to resolve aliases.
1696This technique is used to improve performance.
1697.pp
1698The control of search order is actually set by the service switch.
1699Essentially, the entry
1700.(b
1701O AliasFile=switch:aliases
1702.)b
1703is always added as the first alias entry;
1704also, the first alias file name without a class
1705(e.g., without
1706.q nis:
1707on the front)
1708will be used as the name of the file for a ``files'' entry
1709in the aliases switch.
1710For example, if the configuration file contains
1711.(b
1712O AliasFile=/etc/mail/aliases
1713.)b
1714and the service switch contains
1715.(b
1716aliases nis files nisplus
1717.)b
1718then aliases will first be searched in the NIS database,
1719then in /etc/mail/aliases,
1720then in the NIS+ database.
1721.pp
1722You can also use
1723.sm NIS -based
1724alias files.
1725For example, the specification:
1726.(b
1727O AliasFile=/etc/mail/aliases
1728O AliasFile=nis:mail.aliases@my.nis.domain
1729.)b
1730will first search the /etc/mail/aliases file
1731and then the map named
1732.q mail.aliases
1733in
1734.q my.nis.domain .
1735Warning: if you build your own
1736.sm NIS -based
1737alias files,
1738be sure to provide the
1739.b \-l
1740flag to
1741.i makedbm (8)
1742to map upper case letters in the keys to lower case;
1743otherwise, aliases with upper case letters in their names
1744won't match incoming addresses.
1745.pp
1746Additional flags can be added after the colon
1747exactly like a
1748.b K
1749line \(em for example:
1750.(b
1751O AliasFile=nis:\-N mail.aliases@my.nis.domain
1752.)b
1753will search the appropriate NIS map and always include null bytes in the key.
1754Also:
1755.(b
1756O AliasFile=nis:\-f mail.aliases@my.nis.domain
1757.)b
1758will prevent sendmail from downcasing the key before the alias lookup.
1759.sh 3 "Rebuilding the alias database"
1760.pp
1761The
1762.i hash
1763or
1764.i dbm
1765version of the database
1766may be rebuilt explicitly by executing the command
1767.(b
1768newaliases
1769.)b
1770This is equivalent to giving
1771.i sendmail
1772the
1773.b \-bi
1774flag:
1775.(b
1776/usr/\*(SD/sendmail \-bi
1777.)b
1778.pp
1779If you have multiple aliases databases specified,
1780the
1781.b \-bi
1782flag rebuilds all the database types it understands
1783(for example, it can rebuild NDBM databases but not NIS databases).
1784.sh 3 "Potential problems"
1785.pp
1786There are a number of problems that can occur
1787with the alias database.
1788They all result from a
1789.i sendmail
1790process accessing the DBM version
1791while it is only partially built.
1792This can happen under two circumstances:
1793One process accesses the database
1794while another process is rebuilding it,
1795or the process rebuilding the database dies
1796(due to being killed or a system crash)
1797before completing the rebuild.
1798.pp
1799Sendmail has three techniques to try to relieve these problems.
1800First, it ignores interrupts while rebuilding the database;
1801this avoids the problem of someone aborting the process
1802leaving a partially rebuilt database.
1803Second,
1804it locks the database source file during the rebuild \(em
1805but that may not work over NFS or if the file is unwritable.
1806Third,
1807at the end of the rebuild
1808it adds an alias of the form
1809.(b
1810@: @
1811.)b
1812(which is not normally legal).
1813Before
1814.i sendmail
1815will access the database,
1816it checks to insure that this entry exists\**.
1817.(f
1818\**The
1819.b AliasWait
1820option is required in the configuration
1821for this action to occur.
1822This should normally be specified.
1823.)f
1824.sh 3 "List owners"
1825.pp
1826If an error occurs on sending to a certain address,
1827say
1828.q \fIx\fP ,
1829.i sendmail
1830will look for an alias
1831of the form
1832.q owner-\fIx\fP
1833to receive the errors.
1834This is typically useful
1835for a mailing list
1836where the submitter of the list
1837has no control over the maintenance of the list itself;
1838in this case the list maintainer would be the owner of the list.
1839For example:
1840.(b
1841unix-wizards: eric@ucbarpa, wnj@monet, nosuchuser,
1842 sam@matisse
1843owner-unix-wizards: unix-wizards-request
1844unix-wizards-request: eric@ucbarpa
1845.)b
1846would cause
1847.q eric@ucbarpa
1848to get the error that will occur
1849when someone sends to
1850unix-wizards
1851due to the inclusion of
1852.q nosuchuser
1853on the list.
1854.pp
1855List owners also cause the envelope sender address to be modified.
1856The contents of the owner alias are used if they point to a single user,
1857otherwise the name of the alias itself is used.
1858For this reason, and to obey Internet conventions,
1859the
1860.q owner-
1861address normally points at the
1862.q -request
1863address; this causes messages to go out with the typical Internet convention
1864of using ``\c
1865.i list -request''
1866as the return address.
1867.sh 2 "User Information Database"
1868.pp
1869This option is deprecated, use virtusertable and genericstable instead
1870as explained in
1871.i cf/README .
1872If you have a version of
1873.i sendmail
1874with the user information database
1875compiled in,
1876and you have specified one or more databases using the
1877.b U
1878option,
1879the databases will be searched for a
1880.i user :maildrop
1881entry.
1882If found, the mail will be sent to the specified address.
1883.sh 2 "Per-User Forwarding (.forward Files)"
1884.pp
1885As an alternative to the alias database,
1886any user may put a file with the name
1887.q .forward
1888in his or her home directory.
1889If this file exists,
1890.i sendmail
1891redirects mail for that user
1892to the list of addresses listed in the .forward file.
1893Note that aliases are fully expanded before forward files are referenced.
1894For example, if the home directory for user
1895.q mckusick
1896has a .forward file with contents:
1897.(b
1898mckusick@ernie
1899kirk@calder
1900.)b
1901then any mail arriving for
1902.q mckusick
1903will be redirected to the specified accounts.
1904.pp
1905Actually, the configuration file defines a sequence of filenames to check.
1906By default, this is the user's .forward file,
1907but can be defined to be more generally using the
1908.b ForwardPath
1909option.
1910If you change this,
1911you will have to inform your user base of the change;
1912\&.forward is pretty well incorporated into the collective subconscious.
1913.sh 2 "Special Header Lines"
1914.pp
1915Several header lines have special interpretations
1916defined by the configuration file.
1917Others have interpretations built into
1918.i sendmail
1919that cannot be changed without changing the code.
1920These built-ins are described here.
1921.sh 3 "Errors-To:"
1922.pp
1923If errors occur anywhere during processing,
1924this header will cause error messages to go to
1925the listed addresses.
1926This is intended for mailing lists.
1927.pp
1928The Errors-To: header was created in the bad old days
1929when UUCP didn't understand the distinction between an envelope and a header;
1930this was a hack to provide what should now be passed
1931as the envelope sender address.
1932It should go away.
1933It is only used if the
1934.b UseErrorsTo
1935option is set.
1936.pp
1937The Errors-To: header is officially deprecated
1938and will go away in a future release.
1939.sh 3 "Apparently-To:"
1940.pp
1941RFC 822 requires at least one recipient field
1942(To:, Cc:, or Bcc: line)
1943in every message.
1944If a message comes in with no recipients listed in the message
1945then
1946.i sendmail
1947will adjust the header based on the
1948.q NoRecipientAction
1949option.
1950One of the possible actions is to add an
1951.q "Apparently-To:"
1952header line for any recipients it is aware of.
1953.pp
1954The Apparently-To: header is non-standard
1955and is both deprecated and strongly discouraged.
1956.sh 3 "Precedence"
1957.pp
1958The Precedence: header can be used as a crude control of message priority.
1959It tweaks the sort order in the queue
1960and can be configured to change the message timeout values.
1961The precedence of a message also controls how
1962delivery status notifications (DSNs)
1963are processed for that message.
1964.sh 2 "IDENT Protocol Support"
1965.pp
1966.i Sendmail
1967supports the IDENT protocol as defined in RFC 1413.
1968Note that the RFC states
1969a client should wait at least 30 seconds for a response.
1970The default Timeout.ident is 5 seconds
1971as many sites have adopted the practice of dropping IDENT queries.
1972This has lead to delays processing mail.
1973Although this enhances identification
1974of the author of an email message
1975by doing a ``call back'' to the originating system to include
1976the owner of a particular TCP connection
1977in the audit trail
1978it is in no sense perfect;
1979a determined forger can easily spoof the IDENT protocol.
1980The following description is excerpted from RFC 1413:
1981.ba +5
1982.lp
19836. Security Considerations
1984.lp
1985The information returned by this protocol is at most as trustworthy
1986as the host providing it OR the organization operating the host. For
1987example, a PC in an open lab has few if any controls on it to prevent
1988a user from having this protocol return any identifier the user
1989wants. Likewise, if the host has been compromised the information
1990returned may be completely erroneous and misleading.
1991.lp
1992The Identification Protocol is not intended as an authorization or
1993access control protocol. At best, it provides some additional
1994auditing information with respect to TCP connections. At worst, it
1995can provide misleading, incorrect, or maliciously incorrect
1996information.
1997.lp
1998The use of the information returned by this protocol for other than
1999auditing is strongly discouraged. Specifically, using Identification
2000Protocol information to make access control decisions - either as the
2001primary method (i.e., no other checks) or as an adjunct to other
2002methods may result in a weakening of normal host security.
2003.lp
2004An Identification server may reveal information about users,
2005entities, objects or processes which might normally be considered
2006private. An Identification server provides service which is a rough
2007analog of the CallerID services provided by some phone companies and
2008many of the same privacy considerations and arguments that apply to
2009the CallerID service apply to Identification. If you wouldn't run a
2010"finger" server due to privacy considerations you may not want to run
2011this protocol.
2012.ba
2013.lp
2014In some cases your system may not work properly with IDENT support
2015due to a bug in the TCP/IP implementation.
2016The symptoms will be that for some hosts
2017the SMTP connection will be closed
2018almost immediately.
2019If this is true or if you do not want to use IDENT,
2020you should set the IDENT timeout to zero;
2021this will disable the IDENT protocol.
2022.sh 1 "ARGUMENTS"
2023.pp
2024The complete list of arguments to
2025.i sendmail
2026is described in detail in Appendix A.
2027Some important arguments are described here.
2028.sh 2 "Queue Interval"
2029.pp
2030The amount of time between forking a process
2031to run through the queue is defined by the
2032.b \-q
2033flag.
2034If you run with delivery mode set to
2035.b i
2036or
2037.b b
2038this can be relatively large, since it will only be relevant
2039when a host that was down comes back up.
2040If you run in
2041.b q
2042mode it should be relatively short,
2043since it defines the maximum amount of time that a message
2044may sit in the queue.
2045(See also the MinQueueAge option.)
2046.pp
2047RFC 1123 section 5.3.1.1 says that this value should be at least 30 minutes
2048(although that probably doesn't make sense if you use ``queue-only'' mode).
2049.pp
2050Notice: the meaning of the interval time depends on whether normal
2051queue runners or persistent queue runners are used.
2052For the former, it is the time between subsequent starts of a queue run.
2053For the latter, it is the time sendmail waits after a persistent queue
2054runner has finished its work to start the next one.
2055Hence for persistent queue runners this interval should be very low,
2056typically no more than two minutes.
2057.sh 2 "Daemon Mode"
2058.pp
2059If you allow incoming mail over an IPC connection,
2060you should have a daemon running.
2061This should be set by your
2062.i /etc/rc
2063file using the
2064.b \-bd
2065flag.
2066The
2067.b \-bd
2068flag and the
2069.b \-q
2070flag may be combined in one call:
2071.(b
2072/usr/\*(SD/sendmail \-bd \-q30m
2073.)b
2074.pp
2075An alternative approach is to invoke sendmail from
2076.i inetd (8)
2077(use the
2078.b \-bs \ \-Am
2079flags to ask sendmail to speak SMTP on its standard input and output
2080and to run as MTA).
2081This works and allows you to wrap
2082.i sendmail
2083in a TCP wrapper program,
2084but may be a bit slower since the configuration file
2085has to be re-read on every message that comes in.
2086If you do this, you still need to have a
2087.i sendmail
2088running to flush the queue:
2089.(b
2090/usr/\*(SD/sendmail \-q30m
2091.)b
2092.sh 2 "Forcing the Queue"
2093.pp
2094In some cases you may find that the queue has gotten clogged for some reason.
2095You can force a queue run
2096using the
2097.b \-q
2098flag (with no value).
2099It is entertaining to use the
2100.b \-v
2101flag (verbose)
2102when this is done to watch what happens:
2103.(b
2104/usr/\*(SD/sendmail \-q \-v
2105.)b
2106.pp
2107You can also limit the jobs to those with a particular queue identifier,
2108recipient, sender, quarantine reason, or queue group
2109using one of the queue modifiers.
2110For example,
2111.q \-qRberkeley
2112restricts the queue run to jobs that have the string
2113.q berkeley
2114somewhere in one of the recipient addresses.
2115Similarly,
2116.q \-qSstring
2117limits the run to particular senders,
2118.q \-qIstring
2119limits it to particular queue identifiers, and
2120.q \-qQstring
2121limits it to particular quarantined reasons and only operated on
2122quarantined queue items, and
2123.q \-qGstring
2124limits it to a particular queue group.
2125The named queue group will be run even if it is set to have 0 runners.
2126You may also place an
2127.b !
2128before the
2129.b I
2130or
2131.b R
2132or
2133.b S
2134or
2135.b Q
2136to indicate that jobs are limited to not including a particular queue
2137identifier, recipient or sender.
2138For example,
2139.q \-q!Rseattle
2140limits the queue run to jobs that do not have the string
2141.q seattle
2142somewhere in one of the recipient addresses.
2143Should you need to terminate the queue jobs currently active then a SIGTERM
2144to the parent of the process (or processes) will cleanly stop the jobs.
2145.sh 2 "Debugging"
2146.pp
2147There are a fairly large number of debug flags
2148built into
2149.i sendmail .
2150Each debug flag has a category and a level.
2151Higher levels increase the level of debugging activity;
2152in most cases, this means to print out more information.
2153The convention is that levels greater than nine are
2154.q absurd,
2155i.e.,
2156they print out so much information that you wouldn't normally
2157want to see them except for debugging that particular piece of code.
2158.pp
2159You should
2160.b never
2161run a production sendmail server in debug mode.
2162Many of the debug flags will result in debug output being sent over the
2163SMTP channel unless the option
2164.b \-D
2165is used.
2166This will confuse many mail programs.
2167However, for testing purposes, it can be useful
2168when sending mail manually via
2169telnet to the port you are using while debugging.
2170.pp
2171A debug category is either an integer, like 42,
2172or a name, like ANSI.
2173You can specify a range of numeric debug categories
2174using the syntax 17-42.
2175You can specify a set of named debug categories using
2176a glob pattern like
2177.q sm_trace_* .
2178At present, only
2179.q *
2180and
2181.q ?
2182are supported in these glob patterns.
2183.pp
2184Debug flags are set using the
2185.b \-d
2186option;
2187the syntax is:
2188.(b
2189.ta \w'debug-categories:M 'u
2190debug-flag: \fB\-d\fP debug-list
2191debug-list: debug-option [ , debug-option ]*
2192debug-option: debug-categories [ . debug-level ]
2193debug-categories: integer | integer \- integer | category-pattern
2194category-pattern: [a-zA-Z_*?][a-zA-Z0-9_*?]*
2195debug-level: integer
2196.)b
2197where spaces are for reading ease only.
2198For example,
2199.(b
2200\-d12 Set category 12 to level 1
2201\-d12.3 Set category 12 to level 3
2202\-d3\-17 Set categories 3 through 17 to level 1
2203\-d3\-17.4 Set categories 3 through 17 to level 4
2204\-dANSI Set category ANSI to level 1
2205\-dsm_trace_*.3 Set all named categories matching sm_trace_* to level 3
2206.)b
2207For a complete list of the available debug flags
2208you will have to look at the code
2209and the
2210.i TRACEFLAGS
2211file in the sendmail distribution
2212(they are too dynamic to keep this document up to date).
2213For a list of named debug categories in the sendmail binary, use
2214.(b
2215ident /usr/sbin/sendmail | grep Debug
2216.)b
2217.sh 2 "Changing the Values of Options"
2218.pp
2219Options can be overridden using the
2220.b \-o
2221or
2222.b \-O
2223command line flags.
2224For example,
2225.(b
2226/usr/\*(SD/sendmail \-oT2m
2227.)b
2228sets the
2229.b T
2230(timeout) option to two minutes
2231for this run only;
2232the equivalent line using the long option name is
2233.(b
2234/usr/\*(SD/sendmail -OTimeout.queuereturn=2m
2235.)b
2236.pp
2237Some options have security implications.
2238Sendmail allows you to set these,
2239but relinquishes its set-user-ID or set-group-ID permissions thereafter\**.
2240.(f
2241\**That is, it sets its effective uid to the real uid;
2242thus, if you are executing as root,
2243as from root's crontab file or during system startup
2244the root permissions will still be honored.
2245.)f
2246.sh 2 "Trying a Different Configuration File"
2247.pp
2248An alternative configuration file
2249can be specified using the
2250.b \-C
2251flag; for example,
2252.(b
2253/usr/\*(SD/sendmail \-Ctest.cf \-oQ/tmp/mqueue
2254.)b
2255uses the configuration file
2256.i test.cf
2257instead of the default
2258.i /etc/mail/sendmail.cf.
2259If the
2260.b \-C
2261flag has no value
2262it defaults to
2263.i sendmail.cf
2264in the current directory.
2265.pp
2266.i Sendmail
2267gives up set-user-ID root permissions
2268(if it has been installed set-user-ID root)
2269when you use this flag, so it is common to use a publicly writable directory
2270(such as /tmp)
2271as the queue directory (QueueDirectory or Q option) while testing.
2272.sh 2 "Logging Traffic"
2273.pp
2274Many SMTP implementations do not fully implement the protocol.
2275For example, some personal computer based SMTPs
2276do not understand continuation lines in reply codes.
2277These can be very hard to trace.
2278If you suspect such a problem, you can set traffic logging using the
2279.b \-X
2280flag.
2281For example,
2282.(b
2283/usr/\*(SD/sendmail \-X /tmp/traffic \-bd
2284.)b
2285will log all traffic in the file
2286.i /tmp/traffic .
2287.pp
2288This logs a lot of data very quickly and should
2289.b NEVER
2290be used
2291during normal operations.
2292After starting up such a daemon,
2293force the errant implementation to send a message to your host.
2294All message traffic in and out of
2295.i sendmail ,
2296including the incoming SMTP traffic,
2297will be logged in this file.
2298.sh 2 "Testing Configuration Files"
2299.pp
2300When you build a configuration table,
2301you can do a certain amount of testing
2302using the
2303.q "test mode"
2304of
2305.i sendmail .
2306For example,
2307you could invoke
2308.i sendmail
2309as:
2310.(b
2311sendmail \-bt \-Ctest.cf
2312.)b
2313which would read the configuration file
2314.q test.cf
2315and enter test mode.
2316In this mode,
2317you enter lines of the form:
2318.(b
2319rwset address
2320.)b
2321where
2322.i rwset
2323is the rewriting set you want to use
2324and
2325.i address
2326is an address to apply the set to.
2327Test mode shows you the steps it takes
2328as it proceeds,
2329finally showing you the address it ends up with.
2330You may use a comma separated list of rwsets
2331for sequential application of rules to an input.
2332For example:
2333.(b
23343,1,21,4 monet:bollard
2335.)b
2336first applies ruleset three to the input
2337.q monet:bollard.
2338Ruleset one is then applied to the output of ruleset three,
2339followed similarly by rulesets twenty-one and four.
2340.pp
2341If you need more detail,
2342you can also use the
2343.q \-d21
2344flag to turn on more debugging.
2345For example,
2346.(b
2347sendmail \-bt \-d21.99
2348.)b
2349turns on an incredible amount of information;
2350a single word address
2351is probably going to print out several pages worth of information.
2352.pp
2353You should be warned that internally,
2354.i sendmail
2355applies ruleset 3 to all addresses.
2356In test mode
2357you will have to do that manually.
2358For example, older versions allowed you to use
2359.(b
23600 bruce@broadcast.sony.com
2361.)b
2362This version requires that you use:
2363.(b
23643,0 bruce@broadcast.sony.com
2365.)b
2366.pp
2367As of version 8.7,
2368some other syntaxes are available in test mode:
2369.nr ii 1i
2370.ip \&.D\|x\|value
2371defines macro
2372.i x
2373to have the indicated
2374.i value .
2375This is useful when debugging rules that use the
2376.b $& \c
2377.i x
2378syntax.
2379.ip \&.C\|c\|value
2380adds the indicated
2381.i value
2382to class
2383.i c .
2384.ip \&=S\|ruleset
2385dumps the contents of the indicated ruleset.
2386.ip \-d\|debug-spec
2387is equivalent to the command-line flag.
2388.lp
2389Version 8.9 introduced more features:
2390.nr ii 1i
2391.ip ?
2392shows a help message.
2393.ip =M
2394display the known mailers.
2395.ip $m
2396print the value of macro m.
2397.ip $=c
2398print the contents of class c.
2399.ip /mx\ host
2400returns the MX records for `host'.
2401.ip /parse\ address
2402parse address, returning the value of
2403.i crackaddr ,
2404and the parsed address.
2405.ip /try\ mailer\ addr
2406rewrite address into the form it will have when
2407presented to the indicated mailer.
2408.ip /tryflags\ flags
2409set flags used by parsing. The flags can be `H' for
2410Header or `E' for Envelope, and `S' for Sender or `R'
2411for Recipient. These can be combined, `HR' sets
2412flags for header recipients.
2413.ip /canon\ hostname
2414try to canonify hostname.
2415.ip /map\ mapname\ key
2416look up `key' in the indicated `mapname'.
2417.ip /quit
2418quit address test mode.
2419.lp
2420.sh 2 "Persistent Host Status Information"
2421.pp
2422When
2423.b HostStatusDirectory
2424is enabled,
2425information about the status of hosts is maintained on disk
2426and can thus be shared between different instantiations of
2427.i sendmail .
2428The status of the last connection with each remote host
2429may be viewed with the command:
2430.(b
2431sendmail \-bh
2432.)b
2433This information may be flushed with the command:
2434.(b
2435sendmail \-bH
2436.)b
2437Flushing the information prevents new
2438.i sendmail
2439processes from loading it,
2440but does not prevent existing processes from using the status information
2441that they already have.
2442.sh 1 "TUNING"
2443.pp
2444There are a number of configuration parameters
2445you may want to change,
2446depending on the requirements of your site.
2447Most of these are set
2448using an option in the configuration file.
2449For example,
2450the line
2451.q "O Timeout.queuereturn=5d"
2452sets option
2453.q Timeout.queuereturn
2454to the value
2455.q 5d
2456(five days).
2457.pp
2458Most of these options have appropriate defaults for most sites.
2459However,
2460sites having very high mail loads may find they need to tune them
2461as appropriate for their mail load.
2462In particular,
2463sites experiencing a large number of small messages,
2464many of which are delivered to many recipients,
2465may find that they need to adjust the parameters
2466dealing with queue priorities.
2467.pp
2468All versions of
2469.i sendmail
2470prior to 8.7
2471had single character option names.
2472As of 8.7,
2473options have long (multi-character names).
2474Although old short names are still accepted,
2475most new options do not have short equivalents.
2476.pp
2477This section only describes the options you are most likely
2478to want to tweak;
2479read section
2480.\"XREF
24815
2482for more details.
2483.sh 2 "Timeouts"
2484.pp
2485All time intervals are set
2486using a scaled syntax.
2487For example,
2488.q 10m
2489represents ten minutes, whereas
2490.q 2h30m
2491represents two and a half hours.
2492The full set of scales is:
2493.(b
2494.ta 4n
2495s seconds
2496m minutes
2497h hours
2498d days
2499w weeks
2500.)b
2501.sh 3 "Queue interval"
2502.pp
2503The argument to the
2504.b \-q
2505flag specifies how often a sub-daemon will run the queue.
2506This is typically set to between fifteen minutes and one hour.
2507If not set, or set to zero,
2508the queue will not be run automatically.
2509RFC 1123 section 5.3.1.1 recommends that this be at least 30 minutes.
2510Should you need to terminate the queue jobs currently active then a SIGTERM
2511to the parent of the process (or processes) will cleanly stop the jobs.
2512.sh 3 "Read timeouts"
2513.pp
2514Timeouts all have option names
2515.q Timeout.\fIsuboption\fP .
2516Most of these control SMTP operations.
2517The recognized
2518.i suboption s,
2519their default values, and the minimum values
2520allowed by RFC 2821 section 4.5.3.2 (or RFC 1123 section 5.3.2) are:
2521.nr ii 1i
2522.ip connect
2523The time to wait for an SMTP connection to open
2524(the
2525.i connect (2)
2526system call)
2527[0, unspecified].
2528If zero, uses the kernel default.
2529In no case can this option extend the timeout
2530longer than the kernel provides, but it can shorten it.
2531This is to get around kernels that provide an absurdly long connection timeout
2532(90 minutes in one case).
2533.ip iconnect
2534The same as
2535.i connect,
2536except it applies only to the initial attempt to connect to a host
2537for a given message
2538[0, unspecified].
2539The concept is that this should be very short (a few seconds);
2540hosts that are well connected and responsive will thus be serviced immediately.
2541Hosts that are slow will not hold up other deliveries in the initial
2542delivery attempt.
2543.ip aconnect
2544[0, unspecified]
2545The overall timeout waiting for all connection for a single delivery
2546attempt to succeed.
2547If 0, no overall limit is applied.
2548This can be used to restrict the total amount of time trying to connect to
2549a long list of host that could accept an e-mail for the recipient.
2550This timeout does not apply to
2551.b FallbackMXhost ,
2552i.e., if the time is exhausted, the
2553.b FallbackMXhost
2554is tried next.
2555.ip initial
2556The wait for the initial 220 greeting message
2557[5m, 5m].
2558.ip helo
2559The wait for a reply from a HELO or EHLO command
2560[5m, unspecified].
2561This may require a host name lookup, so
2562five minutes is probably a reasonable minimum.
2563.ip mail\(dg
2564The wait for a reply from a MAIL command
2565[10m, 5m].
2566.ip rcpt\(dg
2567The wait for a reply from a RCPT command
2568[1h, 5m].
2569This should be long
2570because it could be pointing at a list
2571that takes a long time to expand
2572(see below).
2573.ip datainit\(dg
2574The wait for a reply from a DATA command
2575[5m, 2m].
2576.ip datablock\(dg\(dd
2577The wait for reading a data block
2578(that is, the body of the message).
2579[1h, 3m].
2580This should be long because it also applies to programs
2581piping input to
2582.i sendmail
2583which have no guarantee of promptness.
2584.ip datafinal\(dg
2585The wait for a reply from the dot terminating a message.
2586[1h, 10m].
2587If this is shorter than the time actually needed
2588for the receiver to deliver the message,
2589duplicates will be generated.
2590This is discussed in RFC 1047.
2591.ip rset
2592The wait for a reply from a RSET command
2593[5m, unspecified].
2594.ip quit
2595The wait for a reply from a QUIT command
2596[2m, unspecified].
2597.ip misc
2598The wait for a reply from miscellaneous (but short) commands
2599such as NOOP (no-operation) and VERB (go into verbose mode).
2600[2m, unspecified].
2601.ip command\(dg\(dd
2602In server SMTP,
2603the time to wait for another command.
2604[1h, 5m].
2605.ip ident\(dd
2606The timeout waiting for a reply to an IDENT query
2607[5s\**, unspecified].
2608.(f
2609\**On some systems the default is zero to turn the protocol off entirely.
2610.)f
2611.ip lhlo
2612The wait for a reply to an LMTP LHLO command
2613[2m, unspecified].
2614.ip auth
2615The timeout for a reply in an SMTP AUTH dialogue
2616[10m, unspecified].
2617.ip starttls
2618The timeout for a reply to an SMTP STARTTLS command and the TLS handshake
2619[1h, unspecified].
2620.ip fileopen\(dd
2621The timeout for opening .forward and :include: files [60s, none].
2622.ip control\(dd
2623The timeout for a complete control socket transaction to complete [2m, none].
2624.ip hoststatus\(dd
2625How long status information about a host
2626(e.g., host down)
2627will be cached before it is considered stale
2628[30m, unspecified].
2629.ip resolver.retrans\(dd
2630The resolver's
2631retransmission time interval
2632(in seconds)
2633[varies].
2634Sets both
2635.i Timeout.resolver.retrans.first
2636and
2637.i Timeout.resolver.retrans.normal .
2638.ip resolver.retrans.first\(dd
2639The resolver's
2640retransmission time interval
2641(in seconds)
2642for the first attempt to
2643deliver a message
2644[varies].
2645.ip resolver.retrans.normal\(dd
2646The resolver's
2647retransmission time interval
2648(in seconds)
2649for all resolver lookups
2650except the first delivery attempt
2651[varies].
2652.ip resolver.retry\(dd
2653The number of times
2654to retransmit a resolver query.
2655Sets both
2656.i Timeout.resolver.retry.first
2657and
2658.i Timeout.resolver.retry.normal
2659[varies].
2660.ip resolver.retry.first\(dd
2661The number of times
2662to retransmit a resolver query
2663for the first attempt
2664to deliver a message
2665[varies].
2666.ip resolver.retry.normal\(dd
2667The number of times
2668to retransmit a resolver query
2669for all resolver lookups
2670 except the first delivery attempt
2671[varies].
2672.lp
2673For compatibility with old configuration files,
2674if no
2675.i suboption
2676is specified,
2677all the timeouts marked with
2678.DG
2679(\(dg) are set to the indicated value.
2680All but those marked with
2681.DD
2682(\(dd) apply to client SMTP.
2683.pp
2684For example, the lines:
2685.(b
2686O Timeout.command=25m
2687O Timeout.datablock=3h
2688.)b
2689sets the server SMTP command timeout to 25 minutes
2690and the input data block timeout to three hours.
2691.sh 3 "Message timeouts"
2692.pp
2693After sitting in the queue for a few days,
2694an undeliverable message will time out.
2695This is to insure that at least the sender is aware
2696of the inability to send a message.
2697The timeout is typically set to five days.
2698It is sometimes considered convenient to also send a warning message
2699if the message is in the queue longer than a few hours
2700(assuming you normally have good connectivity;
2701if your messages normally took several hours to send
2702you wouldn't want to do this because it wouldn't be an unusual event).
2703These timeouts are set using the
2704.b Timeout.queuereturn
2705and
2706.b Timeout.queuewarn
2707options in the configuration file
2708(previously both were set using the
2709.b T
2710option).
2711.pp
2712If the message is submitted using the
2713.sm NOTIFY
2714.sm SMTP
2715extension,
2716warning messages will only be sent if
2717.sm NOTIFY=DELAY
2718is specified.
2719The queuereturn and queuewarn timeouts
2720can be further qualified with a tag based on the Precedence: field
2721in the message;
2722they must be one of
2723.q urgent
2724(indicating a positive non-zero precedence),
2725.q normal
2726(indicating a zero precedence), or
2727.q non-urgent
2728(indicating negative precedences).
2729For example, setting
2730.q Timeout.queuewarn.urgent=1h
2731sets the warning timeout for urgent messages only
2732to one hour.
2733The default if no precedence is indicated
2734is to set the timeout for all precedences.
2735If the message has a normal (default) precedence
2736and it is a delivery status notification (DSN),
2737.b Timeout.queuereturn.dsn
2738and
2739.b Timeout.queuewarn.dsn
2740can be used to give an alternative warn and return time
2741for DSNs.
2742The value "now" can be used for
2743-O Timeout.queuereturn
2744to return entries immediately during a queue run,
2745e.g., to bounce messages independent of their time in the queue.
2746.pp
2747Since these options are global,
2748and since you cannot know
2749.i "a priori"
2750how long another host outside your domain will be down,
2751a five day timeout is recommended.
2752This allows a recipient to fix the problem even if it occurs
2753at the beginning of a long weekend.
2754RFC 1123 section 5.3.1.1 says that this parameter
2755should be ``at least 4\-5 days''.
2756.pp
2757The
2758.b Timeout.queuewarn
2759value can be piggybacked on the
2760.b T
2761option by indicating a time after which
2762a warning message should be sent;
2763the two timeouts are separated by a slash.
2764For example, the line
2765.(b
2766OT5d/4h
2767.)b
2768causes email to fail after five days,
2769but a warning message will be sent after four hours.
2770This should be large enough that the message will have been tried
2771several times.
2772.sh 2 "Forking During Queue Runs"
2773.pp
2774By setting the
2775.b ForkEachJob
2776(\c
2777.b Y )
2778option,
2779.i sendmail
2780will fork before each individual message
2781while running the queue.
2782This option was used with earlier releases to prevent
2783.i sendmail
2784from consuming large amounts of memory.
2785It should no longer be necessary with
2786.i sendmail
27878.12.
2788If the
2789.b ForkEachJob
2790option is not set,
2791.i sendmail
2792will keep track of hosts that are down during a queue run,
2793which can improve performance dramatically.
2794.pp
2795If the
2796.b ForkEachJob
2797option is set,
2798.i sendmail
2799cannot use connection caching.
2800.sh 2 "Queue Priorities"
2801.pp
2802Every message is assigned a priority when it is first instantiated,
2803consisting of the message size (in bytes)
2804offset by the message class
2805(which is determined from the Precedence: header)
2806times the
2807.q "work class factor"
2808and the number of recipients times the
2809.q "work recipient factor."
2810The priority is used to order the queue.
2811Higher numbers for the priority mean that the message will be processed later
2812when running the queue.
2813.pp
2814The message size is included so that large messages are penalized
2815relative to small messages.
2816The message class allows users to send
2817.q "high priority"
2818messages by including a
2819.q Precedence:
2820field in their message;
2821the value of this field is looked up in the
2822.b P
2823lines of the configuration file.
2824Since the number of recipients affects the amount of load a message presents
2825to the system,
2826this is also included into the priority.
2827.pp
2828The recipient and class factors
2829can be set in the configuration file using the
2830.b RecipientFactor
2831(\c
2832.b y )
2833and
2834.b ClassFactor
2835(\c
2836.b z )
2837options respectively.
2838They default to 30000 (for the recipient factor)
2839and 1800
2840(for the class factor).
2841The initial priority is:
2842.EQ
2843pri = msgsize - (class times bold ClassFactor) + (nrcpt times bold RecipientFactor)
2844.EN
2845(Remember, higher values for this parameter actually mean
2846that the job will be treated with lower priority.)
2847.pp
2848The priority of a job can also be adjusted each time it is processed
2849(that is, each time an attempt is made to deliver it)
2850using the
2851.q "work time factor,"
2852set by the
2853.b RetryFactor
2854(\c
2855.b Z )
2856option.
2857This is added to the priority,
2858so it normally decreases the precedence of the job,
2859on the grounds that jobs that have failed many times
2860will tend to fail again in the future.
2861The
2862.b RetryFactor
2863option defaults to 90000.
2864.sh 2 "Load Limiting"
2865.pp
2866.i Sendmail
2867can be asked to queue (but not deliver) mail
2868if the system load average gets too high using the
2869.b QueueLA
2870(\c
2871.b x )
2872option.
2873When the load average exceeds the value of the
2874.b QueueLA
2875option, the delivery mode is set to
2876.b q
2877(queue only) if the
2878.b QueueFactor
2879(\c
2880.b q )
2881option divided by the difference in the current load average and the
2882.b QueueLA
2883option plus one
2884is less than the priority of the message \(em
2885that is, the message is queued iff:
2886.EQ
2887pri > { bold QueueFactor } over { LA - { bold QueueLA } + 1 }
2888.EN
2889The
2890.b QueueFactor
2891option defaults to 600000,
2892so each point of load average is worth 600000 priority points
2893(as described above).
2894.pp
2895For drastic cases, the
2896.b RefuseLA
2897(\c
2898.b X )
2899option defines a load average at which
2900.i sendmail
2901will refuse to accept network connections.
2902Locally generated mail, i.e., mail which is not submitted via SMTP
2903(including incoming UUCP mail),
2904is still accepted.
2905Notice that the MSP submits mail to the MTA via SMTP, and hence
2906mail will be queued in the client queue in such a case.
2907Therefore it is necessary to run the client mail queue periodically.
2908.sh 2 "Resource Limits"
2909.pp
2910.i Sendmail
2911has several parameters to control resource usage.
2912Besides those mentionted in the previous section, there are at least
2913.b MaxDaemonChildren ,
2914.b ConnectionRateThrottle ,
2915.b MaxQueueChildren ,
2916and
2917.b MaxRunnersPerQueue .
2918The latter two limit the number of
2919.i sendmail
2920processes that operate on the queue.
2921These are discussed in the section
2922``Queue Group Declaration''.
2923The former two can be used to limit the number of incoming connections.
2924Their appropriate values depend on the host operating system and
2925the hardware, e.g., amount of memory.
2926In many situations it might be useful to set limits to prevent
2927to have too many
2928.i sendmail
2929processes, however, these limits can be abused to mount a
2930denial of service attack.
2931For example, if
2932.b MaxDaemonChildren=10
2933then an attacker needs to open only 10 SMTP sessions to the server,
2934leave them idle for most of the time,
2935and no more connections will be accepted.
2936If this option is set then the timeouts used in a SMTP session
2937should be lowered from their default values to
2938their minimum values as specified in RFC 2821 and listed in
2939section
2940.\"XREF
29414.1.2.
2942.sh 2 "Measures against Denial of Service Attacks"
2943.pp
2944.i Sendmail
2945has some built-in measures against simple denial of service (DoS) attacks.
2946The SMTP server by default slows down if too many bad commands are
2947issued or if some commands are repeated too often within a session.
2948Details can be found in the source file
2949.b sendmail/srvrsmtp.c
2950by looking for the macro definitions of
2951.b MAXBADCOMMANDS ,
2952.b MAXNOOPCOMMANDS ,
2953.b MAXHELOCOMMANDS ,
2954.b MAXVRFYCOMMANDS ,
2955and
2956.b MAXETRNCOMMANDS .
2957If an SMTP command is issued more often than the corresponding
2958.b MAXcmdCOMMANDS
2959value, then the response is delayed exponentially,
2960starting with a sleep time of one second,
2961up to a maximum of four minutes (as defined by
2962.b MAXTIMEOUT ).
2963If the option
2964.b MaxDaemonChildren
2965is set to a value greater than zero,
2966then this could make a DoS attack even worse since it
2967keeps a connection open longer than necessary.
2968Therefore a connection is terminated with a 421 SMTP reply code
2969if the number of commands exceeds the limit by a factor of two and
2970.b MAXBADCOMMANDS
2971is set to a value greater than zero (the default is 25).
2972.sh 2 "Delivery Mode"
2973.pp
2974There are a number of delivery modes that
2975.i sendmail
2976can operate in,
2977set by the
2978.b DeliveryMode
2979(\c
2980.b d )
2981configuration option.
2982These modes
2983specify how quickly mail will be delivered.
2984Legal modes are:
2985.(b
2986.ta 4n
2987i deliver interactively (synchronously)
2988b deliver in background (asynchronously)
2989q queue only (don't deliver)
2990d defer delivery attempts (don't deliver)
2991.)b
2992There are tradeoffs.
2993Mode
2994.q i
2995gives the sender the quickest feedback,
2996but may slow down some mailers and
2997is hardly ever necessary.
2998Mode
2999.q b
3000delivers promptly but
3001can cause large numbers of processes
3002if you have a mailer that takes a long time to deliver a message.
3003Mode
3004.q q
3005minimizes the load on your machine,
3006but means that delivery may be delayed for up to the queue interval.
3007Mode
3008.q d
3009is identical to mode
3010.q q
3011except that it also prevents lookups in maps including the
3012.b -D
3013flag from working during the initial queue phase;
3014it is intended for ``dial on demand'' sites where DNS lookups
3015might cost real money.
3016Some simple error messages
3017(e.g., host unknown during the SMTP protocol)
3018will be delayed using this mode.
3019Mode
3020.q b
3021is the usual default.
3022.pp
3023If you run in mode
3024.q q
3025(queue only),
3026.q d
3027(defer),
3028or
3029.q b
3030(deliver in background)
3031.i sendmail
3032will not expand aliases and follow .forward files
3033upon initial receipt of the mail.
3034This speeds up the response to RCPT commands.
3035Mode
3036.q i
3037should not be used by the SMTP server.
3038.sh 2 "Log Level"
3039.pp
3040The level of logging can be set for
3041.i sendmail .
3042The default using a standard configuration table is level 9.
3043The levels are as follows:
3044.nr ii 0.5i
3045.ip 0
3046Minimal logging.
3047.ip 1
3048Serious system failures and potential security problems.
3049.ip 2
3050Lost communications (network problems) and protocol failures.
3051.ip 3
3052Other serious failures, malformed addresses, transient forward/include
3053errors, connection timeouts.
3054.ip 4
3055Minor failures, out of date alias databases, connection rejections
3056via check_ rulesets.
3057.ip 5
3058Message collection statistics.
3059.ip 6
3060Creation of error messages,
3061VRFY and EXPN commands.
3062.ip 7
3063Delivery failures (host or user unknown, etc.).
3064.ip 8
3065Successful deliveries and alias database rebuilds.
3066.ip 9
3067Messages being deferred
3068(due to a host being down, etc.).
3069.ip 10
3070Database expansion (alias, forward, and userdb lookups)
3071and authentication information.
3072.ip 11
3073NIS errors and end of job processing.
3074.ip 12
3075Logs all SMTP connections.
3076.ip 13
3077Log bad user shells, files with improper permissions, and other
3078questionable situations.
3079.ip 14
3080Logs refused connections.
3081.ip 15
3082Log all incoming and outgoing SMTP commands.
3083.ip 20
3084Logs attempts to run locked queue files.
3085These are not errors,
3086but can be useful to note if your queue appears to be clogged.
3087.ip 30
3088Lost locks (only if using lockf instead of flock).
3089.lp
3090Additionally,
3091values above 64 are reserved for extremely verbose debugging output.
3092No normal site would ever set these.
3093.sh 2 "File Modes"
3094.pp
3095The modes used for files depend on what functionality you want
3096and the level of security you require.
3097In many cases
3098.i sendmail
3099does careful checking of the modes
3100of files and directories
3101to avoid accidental compromise;
3102if you want to make it possible to have group-writable support files
3103you may need to use the
3104.b DontBlameSendmail
3105option to turn off some of these checks.
3106.sh 3 "To suid or not to suid?"
3107.pp
3108.i Sendmail
3109is no longer installed
3110set-user-ID to root.
3111sendmail/SECURITY
3112explains how to configure and install
3113.i sendmail
3114without set-user-ID to root but set-group-ID
3115which is the default configuration starting with 8.12.
3116.pp
3117The daemon usually runs as root, unless other measures are taken.
3118At the point where
3119.i sendmail
3120is about to
3121.i exec \|(2)
3122a mailer,
3123it checks to see if the userid is zero (root);
3124if so,
3125it resets the userid and groupid to a default
3126(set by the
3127.b U=
3128equate in the mailer line;
3129if that is not set, the
3130.b DefaultUser
3131option is used).
3132This can be overridden
3133by setting the
3134.b S
3135flag to the mailer
3136for mailers that are trusted
3137and must be called as root.
3138However,
3139this will cause mail processing
3140to be accounted
3141(using
3142.i sa \|(8))
3143to root
3144rather than to the user sending the mail.
3145.pp
3146A middle ground is to set the
3147.b RunAsUser
3148option.
3149This causes
3150.i sendmail
3151to become the indicated user as soon as it has done the startup
3152that requires root privileges
3153(primarily, opening the
3154.sm SMTP
3155socket).
3156If you use
3157.b RunAsUser ,
3158the queue directory
3159(normally
3160.i /var/spool/mqueue )
3161should be owned by that user,
3162and all files and databases
3163(including user
3164.i \&.forward
3165files,
3166alias files,
3167:include: files,
3168and external databases)
3169must be readable by that user.
3170Also, since sendmail will not be able to change its uid,
3171delivery to programs or files will be marked as unsafe,
3172e.g., undeliverable,
3173in
3174.i \&.forward ,
3175aliases,
3176and :include: files.
3177Administrators can override this by setting the
3178.b DontBlameSendmail
3179option to the setting
3180.b NonRootSafeAddr .
3181.b RunAsUser
3182is probably best suited for firewall configurations
3183that don't have regular user logins.
3184If the option is used on a system which performs local delivery,
3185then the local delivery agent must have the proper permissions
3186(i.e., usually set-user-ID root)
3187since it will be invoked by the
3188.b RunAsUser ,
3189not by root.
3190.sh 3 "Turning off security checks"
3191.pp
3192.i Sendmail
3193is very particular about the modes of files that it reads or writes.
3194For example, by default it will refuse to read most files
3195that are group writable
3196on the grounds that they might have been tampered with
3197by someone other than the owner;
3198it will even refuse to read files in group writable directories.
3199Also, sendmail will refuse to create a new aliases database in an
3200unsafe directory. You can get around this by manually creating the
3201database file as a trusted user ahead of time and then rebuilding the
3202aliases database with
3203.b newaliases .
3204.pp
3205If you are
3206.i quite
3207sure that your configuration is safe and you want
3208.i sendmail
3209to avoid these security checks,
3210you can turn off certain checks using the
3211.b DontBlameSendmail
3212option.
3213This option takes one or more names that disable checks.
3214In the descriptions that follow,
3215.q "unsafe directory"
3216means a directory that is writable by anyone other than the owner.
3217The values are:
3218.nr ii 0.5i
3219.ip Safe
3220No special handling.
3221.ip AssumeSafeChown
3222Assume that the
3223.i chown
3224system call is restricted to root.
3225Since some versions of UNIX permit regular users
3226to give away their files to other users on some filesystems,
3227.i sendmail
3228often cannot assume that a given file was created by the owner,
3229particularly when it is in a writable directory.
3230You can set this flag if you know that file giveaway is restricted
3231on your system.
3232.ip ClassFileInUnsafeDirPath
3233When reading class files (using the
3234.b F
3235line in the configuration file),
3236allow files that are in unsafe directories.
3237.ip DontWarnForwardFileInUnsafeDirPath
3238Prevent logging of
3239unsafe directory path warnings
3240for non-existent forward files.
3241.ip ErrorHeaderInUnsafeDirPath
3242Allow the file named in the
3243.b ErrorHeader
3244option to be in an unsafe directory.
3245.ip FileDeliveryToHardLink
3246Allow delivery to files that are hard links.
3247.ip FileDeliveryToSymLink
3248Allow delivery to files that are symbolic links.
3249.ip ForwardFileInGroupWritableDirPath
3250Allow
3251.i \&.forward
3252files in group writable directories.
3253.ip ForwardFileInUnsafeDirPath
3254Allow
3255.i \&.forward
3256files in unsafe directories.
3257.ip ForwardFileInUnsafeDirPathSafe
3258Allow a
3259.i \&.forward
3260file that is in an unsafe directory to include references
3261to program and files.
3262.ip GroupReadableKeyFile
3263Accept a group-readable key file for STARTTLS.
3264.ip GroupReadableSASLDBFile
3265Accept a group-readable Cyrus SASL password file.
3266.ip GroupWritableAliasFile
3267Allow group-writable alias files.
3268.ip GroupWritableDirPathSafe
3269Change the definition of
3270.q "unsafe directory"
3271to consider group-writable directories to be safe.
3272World-writable directories are always unsafe.
3273.ip GroupWritableForwardFile
3274Allow group writable
3275.i \&.forward
3276files.
3277.ip GroupWritableForwardFileSafe
3278Accept group-writable
3279.i \&.forward
3280files as safe for program and file delivery.
3281.ip GroupWritableIncludeFile
3282Allow group wriable
3283.i :include:
3284files.
3285.ip GroupWritableIncludeFileSafe
3286Accept group-writable
3287.i :include:
3288files as safe for program and file delivery.
3289.ip GroupWritableSASLDBFile
3290Accept a group-writable Cyrus SASL password file.
3291.ip HelpFileInUnsafeDirPath
3292Allow the file named in the
3293.b HelpFile
3294option to be in an unsafe directory.
3295.ip IncludeFileInGroupWritableDirPath
3296Allow
3297.i :include:
3298files in group writable directories.
3299.ip IncludeFileInUnsafeDirPath
3300Allow
3301.i :include:
3302files in unsafe directories.
3303.ip IncludeFileInUnsafeDirPathSafe
3304Allow a
3305.i :include:
3306file that is in an unsafe directory to include references
3307to program and files.
3308.ip InsufficientEntropy
3309Try to use STARTTLS even if the PRNG for OpenSSL is not properly seeded
3310despite the security problems.
3311.ip LinkedAliasFileInWritableDir
3312Allow an alias file that is a link in a writable directory.
3313.ip LinkedClassFileInWritableDir
3314Allow class files that are links in writable directories.
3315.ip LinkedForwardFileInWritableDir
3316Allow
3317.i \&.forward
3318files that are links in writable directories.
3319.ip LinkedIncludeFileInWritableDir
3320Allow
3321.i :include:
3322files that are links in writable directories.
3323.ip LinkedMapInWritableDir
3324Allow map files that are links in writable directories.
3325This includes alias database files.
3326.ip LinkedServiceSwitchFileInWritableDir
3327Allow the service switch file to be a link
3328even if the directory is writable.
3329.ip MapInUnsafeDirPath
3330Allow maps (e.g.,
3331.i hash ,
3332.i btree ,
3333and
3334.i dbm
3335files)
3336in unsafe directories.
3337This includes alias database files.
3338.ip NonRootSafeAddr
3339Do not mark file and program deliveries as unsafe
3340if sendmail is not running with root privileges.
3341.ip RunProgramInUnsafeDirPath
3342Run programs that are in writable directories without logging a warning.
3343.ip RunWritableProgram
3344Run programs that are group- or world-writable without logging a warning.
3345.ip TrustStickyBit
3346Allow group or world writable directories
3347if the sticky bit is set on the directory.
3348Do not set this on systems which do not honor
3349the sticky bit on directories.
3350.ip WorldWritableAliasFile
3351Accept world-writable alias files.
3352.ip WorldWritableForwardfile
3353Allow world writable
3354.i \&.forward
3355files.
3356.ip WorldWritableIncludefile
3357Allow world wriable
3358.i :include:
3359files.
3360.ip WriteMapToHardLink
3361Allow writes to maps that are hard links.
3362.ip WriteMapToSymLink
3363Allow writes to maps that are symbolic links.
3364.ip WriteStatsToHardLink
3365Allow the status file to be a hard link.
3366.ip WriteStatsToSymLink
3367Allow the status file to be a symbolic link.
3368.sh 2 "Connection Caching"
3369.pp
3370When processing the queue,
3371.i sendmail
3372will try to keep the last few open connections open
3373to avoid startup and shutdown costs.
3374This only applies to IPC and LPC connections.
3375.pp
3376When trying to open a connection
3377the cache is first searched.
3378If an open connection is found, it is probed to see if it is still active
3379by sending a
3380.sm RSET
3381command.
3382It is not an error if this fails;
3383instead, the connection is closed and reopened.
3384.pp
3385Two parameters control the connection cache.
3386The
3387.b ConnectionCacheSize
3388(\c
3389.b k )
3390option defines the number of simultaneous open connections
3391that will be permitted.
3392If it is set to zero,
3393connections will be closed as quickly as possible.
3394The default is one.
3395This should be set as appropriate for your system size;
3396it will limit the amount of system resources that
3397.i sendmail
3398will use during queue runs.
3399Never set this higher than 4.
3400.pp
3401The
3402.b ConnectionCacheTimeout
3403(\c
3404.b K )
3405option specifies the maximum time that any cached connection
3406will be permitted to idle.
3407When the idle time exceeds this value
3408the connection is closed.
3409This number should be small
3410(under ten minutes)
3411to prevent you from grabbing too many resources
3412from other hosts.
3413The default is five minutes.
3414.sh 2 "Name Server Access"
3415.pp
3416Control of host address lookups is set by the
3417.b hosts
3418service entry in your service switch file.
3419If you are on a system that has built-in service switch support
3420(e.g., Ultrix, Solaris, or DEC OSF/1)
3421then your system is probably configured properly already.
3422Otherwise,
3423.i sendmail
3424will consult the file
3425.b /etc/mail/service.switch ,
3426which should be created.
3427.i Sendmail
3428only uses two entries:
3429.b hosts
3430and
3431.b aliases ,
3432although system routines may use other services
3433(notably the
3434.b passwd
3435service for user name lookups by
3436.i getpwname ).
3437.pp
3438However, some systems (such as SunOS 4.X)
3439will do DNS lookups
3440regardless of the setting of the service switch entry.
3441In particular, the system routine
3442.i gethostbyname (3)
3443is used to look up host names,
3444and many vendor versions try some combination of DNS, NIS,
3445and file lookup in /etc/hosts
3446without consulting a service switch.
3447.i Sendmail
3448makes no attempt to work around this problem,
3449and the DNS lookup will be done anyway.
3450If you do not have a nameserver configured at all,
3451such as at a UUCP-only site,
3452.i sendmail
3453will get a
3454.q "connection refused"
3455message when it tries to connect to the name server.
3456If the
3457.b hosts
3458switch entry has the service
3459.q dns
3460listed somewhere in the list,
3461.i sendmail
3462will interpret this to mean a temporary failure
3463and will queue the mail for later processing;
3464otherwise, it ignores the name server data.
3465.pp
3466The same technique is used to decide whether to do MX lookups.
3467If you want MX support, you
3468.i must
3469have
3470.q dns
3471listed as a service in the
3472.b hosts
3473switch entry.
3474.pp
3475The
3476.b ResolverOptions
3477(\c
3478.b I )
3479option allows you to tweak name server options.
3480The command line takes a series of flags as documented in
3481.i resolver (3)
3482(with the leading
3483.q RES_
3484deleted).
3485Each can be preceded by an optional `+' or `\(mi'.
3486For example, the line
3487.(b
3488O ResolverOptions=+AAONLY \(miDNSRCH
3489.)b
3490turns on the AAONLY (accept authoritative answers only)
3491and turns off the DNSRCH (search the domain path) options.
3492Most resolver libraries default DNSRCH, DEFNAMES, and RECURSE
3493flags on and all others off.
3494If NETINET6 is enabled, most libraries default to USE_INET6 as well.
3495You can also include
3496.q HasWildcardMX
3497to specify that there is a wildcard MX record matching your domain;
3498this turns off MX matching when canonifying names,
3499which can lead to inappropriate canonifications.
3500Use
3501.q WorkAroundBrokenAAAA
3502when faced with a broken nameserver that returns SERVFAIL
3503(a temporary failure)
3504on T_AAAA (IPv6) lookups
3505during hostname canonification.
3506Notice: it might be necessary to apply the same (or similar) options to
3507.i submit.cf
3508too.
3509.pp
3510Version level 1 configurations (see the section about
3511``Configuration Version Level'')
3512turn DNSRCH and DEFNAMES off when doing delivery lookups,
3513but leave them on everywhere else.
3514Version 8 of
3515.i sendmail
3516ignores them when doing canonification lookups
3517(that is, when using $[ ... $]),
3518and always does the search.
3519If you don't want to do automatic name extension,
3520don't call $[ ... $].
3521.pp
3522The search rules for $[ ... $] are somewhat different than usual.
3523If the name being looked up
3524has at least one dot, it always tries the unmodified name first.
3525If that fails, it tries the reduced search path,
3526and lastly tries the unmodified name
3527(but only for names without a dot,
3528since names with a dot have already been tried).
3529This allows names such as
3530``utc.CS''
3531to match the site in Czechoslovakia
3532rather than the site in your local Computer Science department.
3533It also prefers A and CNAME records over MX records \*-
3534that is, if it finds an MX record it makes note of it,
3535but keeps looking.
3536This way, if you have a wildcard MX record matching your domain,
3537it will not assume that all names match.
3538.pp
3539To completely turn off all name server access
3540on systems without service switch support
3541(such as SunOS 4.X)
3542you will have to recompile with
3543\-DNAMED_BIND=0
3544and remove \-lresolv from the list of libraries to be searched
3545when linking.
3546.sh 2 "Moving the Per-User Forward Files"
3547.pp
3548Some sites mount each user's home directory
3549from a local disk on their workstation,
3550so that local access is fast.
3551However, the result is that .forward file lookups
3552from a central mail server are slow.
3553In some cases,
3554mail can even be delivered on machines inappropriately
3555because of a file server being down.
3556The performance can be especially bad if you run the automounter.
3557.pp
3558The
3559.b ForwardPath
3560(\c
3561.b J )
3562option allows you to set a path of forward files.
3563For example, the config file line
3564.(b
3565O ForwardPath=/var/forward/$u:$z/.forward.$w
3566.)b
3567would first look for a file with the same name as the user's login
3568in /var/forward;
3569if that is not found (or is inaccessible)
3570the file
3571``.forward.\c
3572.i machinename ''
3573in the user's home directory is searched.
3574A truly perverse site could also search by sender
3575by using $r, $s, or $f.
3576.pp
3577If you create a directory such as /var/forward,
3578it should be mode 1777
3579(that is, the sticky bit should be set).
3580Users should create the files mode 0644.
3581Note that you must use the
3582ForwardFileInUnsafeDirPath and
3583ForwardFileInUnsafeDirPathSafe
3584flags with the
3585.b DontBlameSendmail
3586option to allow forward files in a world writable directory.
3587This might also be used as a denial of service attack
3588(users could create forward files for other users);
3589a better approach might be to create
3590/var/forward
3591mode 0755
3592and create empty files for each user,
3593owned by that user,
3594mode 0644.
3595If you do this, you don't have to set the DontBlameSendmail options
3596indicated above.
3597.sh 2 "Free Space"
3598.pp
3599On systems that have one of the system calls in the
3600.i statfs (2)
3601family
3602(including
3603.i statvfs
3604and
3605.i ustat ),
3606you can specify a minimum number of free blocks on the queue filesystem
3607using the
3608.b MinFreeBlocks
3609(\c
3610.b b )
3611option.
3612If there are fewer than the indicated number of blocks free
3613on the filesystem on which the queue is mounted
3614the SMTP server will reject mail
3615with the
3616452 error code.
3617This invites the SMTP client to try again later.
3618.pp
3619Beware of setting this option too high;
3620it can cause rejection of email
3621when that mail would be processed without difficulty.
3622.sh 2 "Maximum Message Size"
3623.pp
3624To avoid overflowing your system with a large message,
3625the
3626.b MaxMessageSize
3627option can be set to set an absolute limit
3628on the size of any one message.
3629This will be advertised in the ESMTP dialogue
3630and checked during message collection.
3631.sh 2 "Privacy Flags"
3632.pp
3633The
3634.b PrivacyOptions
3635(\c
3636.b p )
3637option allows you to set certain
3638``privacy''
3639flags.
3640Actually, many of them don't give you any extra privacy,
3641rather just insisting that client SMTP servers
3642use the HELO command
3643before using certain commands
3644or adding extra headers to indicate possible spoof attempts.
3645.pp
3646The option takes a series of flag names;
3647the final privacy is the inclusive or of those flags.
3648For example:
3649.(b
3650O PrivacyOptions=needmailhelo, noexpn
3651.)b
3652insists that the HELO or EHLO command be used before a MAIL command is accepted
3653and disables the EXPN command.
3654.pp
3655The flags are detailed in section
3656.\"XREF
36575.6.
3658.sh 2 "Send to Me Too"
3659.pp
3660Beginning with version 8.10,
3661.i sendmail
3662includes by default the (envelope) sender in any list expansions.
3663For example, if
3664.q matt
3665sends to a list that contains
3666.q matt
3667as one of the members he will get a copy of the message.
3668If the
3669.b MeToo
3670option is set to
3671.sm FALSE
3672(in the configuration file or via the command line),
3673this behavior is changed, i.e.,
3674the (envelope) sender is excluded in list expansions.
3675.sh 1 "THE WHOLE SCOOP ON THE CONFIGURATION FILE"
3676.pp
3677This section describes the configuration file
3678in detail.
3679.pp
3680There is one point that should be made clear immediately:
3681the syntax of the configuration file
3682is designed to be reasonably easy to parse,
3683since this is done every time
3684.i sendmail
3685starts up,
3686rather than easy for a human to read or write.
3687The configuration file should be generated via the method described in
3688.b cf/README ,
3689it should not be edited directly unless someone is familiar
3690with the internals of the syntax described here and it is
3691not possible to achieve the desired result via the default method.
3692.pp
3693The configuration file is organized as a series of lines,
3694each of which begins with a single character
3695defining the semantics for the rest of the line.
3696Lines beginning with a space or a tab
3697are continuation lines
3698(although the semantics are not well defined in many places).
3699Blank lines and lines beginning with a sharp symbol
3700(`#')
3701are comments.
3702.sh 2 "R and S \*- Rewriting Rules"
3703.pp
3704The core of address parsing
3705are the rewriting rules.
3706These are an ordered production system.
3707.i Sendmail
3708scans through the set of rewriting rules
3709looking for a match on the left hand side
3710(LHS)
3711of the rule.
3712When a rule matches,
3713the address is replaced by the right hand side
3714(RHS)
3715of the rule.
3716.pp
3717There are several sets of rewriting rules.
3718Some of the rewriting sets are used internally
3719and must have specific semantics.
3720Other rewriting sets
3721do not have specifically assigned semantics,
3722and may be referenced by the mailer definitions
3723or by other rewriting sets.
3724.pp
3725The syntax of these two commands are:
3726.(b F
3727.b S \c
3728.i n
3729.)b
3730Sets the current ruleset being collected to
3731.i n .
3732If you begin a ruleset more than once
3733it appends to the old definition.
3734.(b F
3735.b R \c
3736.i lhs
3737.i rhs
3738.i comments
3739.)b
3740The
3741fields must be separated
3742by at least one tab character;
3743there may be embedded spaces
3744in the fields.
3745The
3746.i lhs
3747is a pattern that is applied to the input.
3748If it matches,
3749the input is rewritten to the
3750.i rhs .
3751The
3752.i comments
3753are ignored.
3754.pp
3755Macro expansions of the form
3756.b $ \c
3757.i x
3758are performed when the configuration file is read.
3759A literal
3760.b $
3761can be included using
3762.b $$ .
3763Expansions of the form
3764.b $& \c
3765.i x
3766are performed at run time using a somewhat less general algorithm.
3767This is intended only for referencing internally defined macros
3768such as
3769.b $h
3770that are changed at runtime.
3771.sh 3 "The left hand side"
3772.pp
3773The left hand side of rewriting rules contains a pattern.
3774Normal words are simply matched directly.
3775Metasyntax is introduced using a dollar sign.
3776The metasymbols are:
3777.(b
3778.ta \w'\fB$=\fP\fIx\fP 'u
3779\fB$*\fP Match zero or more tokens
3780\fB$+\fP Match one or more tokens
3781\fB$\-\fP Match exactly one token
3782\fB$=\fP\fIx\fP Match any phrase in class \fIx\fP
3783\fB$~\fP\fIx\fP Match any word not in class \fIx\fP
3784.)b
3785If any of these match,
3786they are assigned to the symbol
3787.b $ \c
3788.i n
3789for replacement on the right hand side,
3790where
3791.i n
3792is the index in the LHS.
3793For example,
3794if the LHS:
3795.(b
3796$\-:$+
3797.)b
3798is applied to the input:
3799.(b
3800UCBARPA:eric
3801.)b
3802the rule will match, and the values passed to the RHS will be:
3803.(b
3804.ta 4n
3805$1 UCBARPA
3806$2 eric
3807.)b
3808.pp
3809Additionally, the LHS can include
3810.b $@
3811to match zero tokens.
3812This is
3813.i not
3814bound to a
3815.b $ \c
3816.i n
3817on the RHS, and is normally only used when it stands alone
3818in order to match the null input.
3819.sh 3 "The right hand side"
3820.pp
3821When the left hand side of a rewriting rule matches,
3822the input is deleted and replaced by the right hand side.
3823Tokens are copied directly from the RHS
3824unless they begin with a dollar sign.
3825Metasymbols are:
3826.(b
3827.ta \w'$#mailer\0\0\0'u
3828\fB$\fP\fIn\fP Substitute indefinite token \fIn\fP from LHS
3829\fB$[\fP\fIname\fP\fB$]\fP Canonicalize \fIname\fP
3830\fB$(\fP\fImap key\fP \fB$@\fP\fIarguments\fP \fB$:\fP\fIdefault\fP \fB$)\fP
3831 Generalized keyed mapping function
3832\fB$>\fP\fIn\fP \*(lqCall\*(rq ruleset \fIn\fP
3833\fB$#\fP\fImailer\fP Resolve to \fImailer\fP
3834\fB$@\fP\fIhost\fP Specify \fIhost\fP
3835\fB$:\fP\fIuser\fP Specify \fIuser\fP
3836.)b
3837.pp
3838The
3839.b $ \c
3840.i n
3841syntax substitutes the corresponding value from a
3842.b $+ ,
3843.b $\- ,
3844.b $* ,
3845.b $= ,
3846or
3847.b $~
3848match on the LHS.
3849It may be used anywhere.
3850.pp
3851A host name enclosed between
3852.b $[
3853and
3854.b $]
3855is looked up in the host database(s)
3856and replaced by the canonical name\**.
3857.(f
3858\**This is actually
3859completely equivalent
3860to $(host \fIhostname\fP$).
3861In particular, a
3862.b $:
3863default can be used.
3864.)f
3865For example,
3866.q $[ftp$]
3867might become
3868.q ftp.CS.Berkeley.EDU
3869and
3870.q $[[128.32.130.2]$]
3871would become
3872.q vangogh.CS.Berkeley.EDU.
3873.i Sendmail
3874recognizes its numeric IP address
3875without calling the name server
3876and replaces it with its canonical name.
3877.pp
3878The
3879.b $(
3880\&...
3881.b $)
3882syntax is a more general form of lookup;
3883it uses a named map instead of an implicit map.
3884If no lookup is found, the indicated
3885.i default
3886is inserted;
3887if no default is specified and no lookup matches,
3888the value is left unchanged.
3889The
3890.i arguments
3891are passed to the map for possible use.
3892.pp
3893The
3894.b $> \c
3895.i n
3896syntax
3897causes the remainder of the line to be substituted as usual
3898and then passed as the argument to ruleset
3899.i n .
3900The final value of ruleset
3901.i n
3902then becomes
3903the substitution for this rule.
3904The
3905.b $>
3906syntax expands everything after the ruleset name
3907to the end of the replacement string
3908and then passes that as the initial input to the ruleset.
3909Recursive calls are allowed.
3910For example,
3911.(b
3912$>0 $>3 $1
3913.)b
3914expands $1, passes that to ruleset 3, and then passes the result
3915of ruleset 3 to ruleset 0.
3916.pp
3917The
3918.b $#
3919syntax should
3920.i only
3921be used in ruleset zero,
3922a subroutine of ruleset zero,
3923or rulesets that return decisions (e.g., check_rcpt).
3924It causes evaluation of the ruleset to terminate immediately,
3925and signals to
3926.i sendmail
3927that the address has completely resolved.
3928The complete syntax for ruleset 0 is:
3929.(b
3930\fB$#\fP\fImailer\fP \fB$@\fP\fIhost\fP \fB$:\fP\fIuser\fP
3931.)b
3932This specifies the
3933{mailer, host, user}
39343-tuple necessary to direct the mailer.
3935Note: the third element (
3936.i user
3937) is often also called
3938.i address
3939part.
3940If the mailer is local
3941the host part may be omitted\**.
3942.(f
3943\**You may want to use it for special
3944.q "per user"
3945extensions.
3946For example, in the address
3947.q jgm+foo@CMU.EDU ;
3948the
3949.q +foo
3950part is not part of the user name,
3951and is passed to the local mailer for local use.
3952.)f
3953The
3954.i mailer
3955must be a single word,
3956but the
3957.i host
3958and
3959.i user
3960may be multi-part.
3961If the
3962.i mailer
3963is the built-in IPC mailer,
3964the
3965.i host
3966may be a colon-separated list of hosts
3967that are searched in order for the first working address
3968(exactly like MX records).
3969The
3970.i user
3971is later rewritten by the mailer-specific envelope rewriting set
3972and assigned to the
3973.b $u
3974macro.
3975As a special case, if the mailer specified has the
3976.b F=@
3977flag specified
3978and the first character of the
3979.b $:
3980value is
3981.q @ ,
3982the
3983.q @
3984is stripped off, and a flag is set in the address descriptor
3985that causes sendmail to not do ruleset 5 processing.
3986.pp
3987Normally, a rule that matches is retried,
3988that is,
3989the rule loops until it fails.
3990A RHS may also be preceded by a
3991.b $@
3992or a
3993.b $:
3994to change this behavior.
3995A
3996.b $@
3997prefix causes the ruleset to return with the remainder of the RHS
3998as the value.
3999A
4000.b $:
4001prefix causes the rule to terminate immediately,
4002but the ruleset to continue;
4003this can be used to avoid continued application of a rule.
4004The prefix is stripped before continuing.
4005.pp
4006The
4007.b $@
4008and
4009.b $:
4010prefixes may precede a
4011.b $>
4012spec;
4013for example:
4014.(b
4015.ta 8n
4016R$+ $: $>7 $1
4017.)b
4018matches anything,
4019passes that to ruleset seven,
4020and continues;
4021the
4022.b $:
4023is necessary to avoid an infinite loop.
4024.pp
4025Substitution occurs in the order described,
4026that is,
4027parameters from the LHS are substituted,
4028hostnames are canonicalized,
4029.q subroutines
4030are called,
4031and finally
4032.b $# ,
4033.b $@ ,
4034and
4035.b $:
4036are processed.
4037.sh 3 "Semantics of rewriting rule sets"
4038.pp
4039There are six rewriting sets
4040that have specific semantics.
4041Five of these are related as depicted by figure 1.
4042.(z
4043.hl
4044.ie n \{\
4045.(c
4046 +---+
4047 -->| 0 |-->resolved address
4048 / +---+
4049 / +---+ +---+
4050 / ---->| 1 |-->| S |--
4051 +---+ / +---+ / +---+ +---+ \e +---+
4052addr-->| 3 |-->| D |-- --->| 4 |-->msg
4053 +---+ +---+ \e +---+ +---+ / +---+
4054 --->| 2 |-->| R |--
4055 +---+ +---+
4056.)c
4057
4058.\}
4059.el \{\
4060.ie !"\*(.T"" \{\
4061.PS
4062boxwid = 0.3i
4063boxht = 0.3i
4064movewid = 0.3i
4065moveht = 0.3i
4066linewid = 0.3i
4067lineht = 0.3i
4068
4069 box invis "addr"; arrow
4070Box3: box "3"
4071A1: arrow
4072BoxD: box "D"; line; L1: Here
4073C: [
4074 C1: arrow; box "1"; arrow; box "S"; line; E1: Here
4075 move to C1 down 0.5; right
4076 C2: arrow; box "2"; arrow; box "R"; line; E2: Here
4077 ] with .w at L1 + (0.5, 0)
4078 move to C.e right 0.5
4079L4: arrow; box "4"; arrow; box invis "msg"
4080 line from L1 to C.C1
4081 line from L1 to C.C2
4082 line from C.E1 to L4
4083 line from C.E2 to L4
4084 move to BoxD.n up 0.6; right
4085Box0: arrow; box "0"
4086 arrow; box invis "resolved address" width 1.3
4087 line from 1/3 of the way between A1 and BoxD.w to Box0
4088.PE
4089.\}
4090.el .sp 2i
4091.\}
4092.ce
4093Figure 1 \*- Rewriting set semantics
4094.(c
4095D \*- sender domain addition
4096S \*- mailer-specific sender rewriting
4097R \*- mailer-specific recipient rewriting
4098.)c
4099.hl
4100.)z
4101.pp
4102Ruleset three
4103should turn the address into
4104.q "canonical form."
4105This form should have the basic syntax:
4106.(b
4107local-part@host-domain-spec
4108.)b
4109Ruleset three
4110is applied by
4111.i sendmail
4112before doing anything with any address.
4113.pp
4114If no
4115.q @
4116sign is specified,
4117then the
4118host-domain-spec
4119.i may
4120be appended (box
4121.q D
4122in Figure 1)
4123from the
4124sender address
4125(if the
4126.b C
4127flag is set in the mailer definition
4128corresponding to the
4129.i sending
4130mailer).
4131.pp
4132Ruleset zero
4133is applied after ruleset three
4134to addresses that are going to actually specify recipients.
4135It must resolve to a
4136.i "{mailer, host, address}"
4137triple.
4138The
4139.i mailer
4140must be defined in the mailer definitions
4141from the configuration file.
4142The
4143.i host
4144is defined into the
4145.b $h
4146macro
4147for use in the argv expansion of the specified mailer.
4148Notice: since the envelope sender address will be used if
4149a delivery status notification must be send,
4150i.e., is may specify a recipient,
4151it is also run through ruleset zero.
4152If ruleset zero returns a temporary error
4153.b 4xy
4154then delivery is deferred.
4155This can be used to temporarily disable delivery,
4156e.g., based on the time of the day or other varying parameters.
4157It should not be used to quarantine e-mails.
4158.pp
4159Rulesets one and two
4160are applied to all sender and recipient addresses respectively.
4161They are applied before any specification
4162in the mailer definition.
4163They must never resolve.
4164.pp
4165Ruleset four is applied to all addresses
4166in the message.
4167It is typically used
4168to translate internal to external form.
4169.pp
4170In addition,
4171ruleset 5 is applied to all local addresses
4172(specifically, those that resolve to a mailer with the `F=5'
4173flag set)
4174that do not have aliases.
4175This allows a last minute hook for local names.
4176.sh 3 "Ruleset hooks"
4177.pp
4178A few extra rulesets are defined as
4179.q hooks
4180that can be defined to get special features.
4181They are all named rulesets.
4182The
4183.q check_*
4184forms all give accept/reject status;
4185falling off the end or returning normally is an accept,
4186and resolving to
4187.b $#error
4188is a reject or quarantine.
4189Quarantining is chosen by specifying
4190.b quarantine
4191in the second part of the mailer triplet:
4192.(b
4193$#error $@ quarantine $: Reason for quarantine
4194.)b
4195Many of these can also resolve to the special mailer name
4196.b $#discard ;
4197this accepts the message as though it were successful
4198but then discards it without delivery.
4199Note,
4200this mailer cannot be chosen as a mailer in ruleset 0.
4201Note also that all
4202.q check_*
4203rulesets have to deal with temporary failures, especially for map lookups,
4204themselves, i.e., they should return a temporary error code
4205or at least they should make a proper decision in those cases.
4206.sh 4 "check_relay"
4207.pp
4208The
4209.i check_relay
4210ruleset is called after a connection is accepted by the daemon.
4211It is not called when sendmail is started using the
4212.b \-bs
4213option.
4214It is passed
4215.(b
4216client.host.name $| client.host.address
4217.)b
4218where
4219.b $|
4220is a metacharacter separating the two parts.
4221This ruleset can reject connections from various locations.
4222Note that it only checks the connecting SMTP client IP address and hostname.
4223It does not check for third party message relaying.
4224The
4225.i check_rcpt
4226ruleset discussed below usually does third party message relay checking.
4227.sh 4 "check_mail"
4228.pp
4229The
4230.i check_mail
4231ruleset is passed the user name parameter of the
4232.sm "SMTP MAIL"
4233command.
4234It can accept or reject the address.
4235.sh 4 "check_rcpt"
4236.pp
4237The
4238.i check_rcpt
4239ruleset is passed the user name parameter of the
4240.sm "SMTP RCPT"
4241command.
4242It can accept or reject the address.
4243.sh 4 "check_data"
4244.pp
4245The
4246.i check_data
4247ruleset is called after the
4248.sm "SMTP DATA"
4249command, its parameter is the number of recipients.
4250It can accept or reject the command.
4251.sh 4 "check_compat"
4252.pp
4253The
4254.i check_compat
4255ruleset is passed
4256.(b
4257sender-address $| recipient-address
4258.)b
4259where
4260.b $|
4261is a metacharacter separating the addresses.
4262It can accept or reject mail transfer between these two addresses
4263much like the
4264.i checkcompat()
4265function.
4266Note:
4267while other
4268.i check_*
4269rulesets are invoked during the SMTP mail receiption stage
4270(i.e., in the SMTP server),
4271.i check_compat
4272is invoked during the mail delivery stage.
4273.sh 4 "check_eoh"
4274.pp
4275The
4276.i check_eoh
4277ruleset is passed
4278.(b
4279number-of-headers $| size-of-headers
4280.)b
4281where
4282.b $|
4283is a metacharacter separating the numbers.
4284These numbers can be used for size comparisons with the
4285.b arith
4286map.
4287The ruleset is triggered after
4288all of the headers have been read.
4289It can be used to correlate information gathered
4290from those headers using the
4291.b macro
4292storage map.
4293One possible use is to check for a missing header.
4294For example:
4295.(b
4296.ta 1.5i
4297Kstorage macro
4298HMessage-Id: $>CheckMessageId
4299
4300SCheckMessageId
4301# Record the presence of the header
4302R$* $: $(storage {MessageIdCheck} $@ OK $) $1
4303R< $+ @ $+ > $@ OK
4304R$* $#error $: 553 Header Error
4305
4306Scheck_eoh
4307# Check the macro
4308R$* $: < $&{MessageIdCheck} >
4309# Clear the macro for the next message
4310R$* $: $(storage {MessageIdCheck} $) $1
4311# Has a Message-Id: header
4312R< $+ > $@ OK
4313# Allow missing Message-Id: from local mail
4314R$* $: < $&{client_name} >
4315R< > $@ OK
4316R< $=w > $@ OK
4317# Otherwise, reject the mail
4318R$* $#error $: 553 Header Error
4319.)b
4320Keep in mind the Message-Id: header is not a required header and
4321is not a guaranteed spam indicator.
4322This ruleset is an example and
4323should probably not be used in production.
4324.sh 4 "check_eom"
4325.pp
4326The
4327.i check_eom
4328ruleset is called after the end of a message,
4329its parameter is the message size.
4330It can accept or reject the message.
4331.sh 4 "check_etrn"
4332.pp
4333The
4334.i check_etrn
4335ruleset is passed the parameter of the
4336.sm "SMTP ETRN"
4337command.
4338It can accept or reject the command.
4339.sh 4 "check_expn"
4340.pp
4341The
4342.i check_expn
4343ruleset is passed the user name parameter of the
4344.sm "SMTP EXPN"
4345command.
4346It can accept or reject the address.
4347.sh 4 "check_vrfy"
4348.pp
4349The
4350.i check_vrfy
4351ruleset is passed the user name parameter of the
4352.sm "SMTP VRFY"
4353command.
4354It can accept or reject the command.
4355.sh 4 "trust_auth"
4356.pp
4357The
4358.i trust_auth
4359ruleset is passed the AUTH= parameter of the
4360.sm "SMTP MAIL"
4361command.
4362It is used to determine whether this value should be
4363trusted. In order to make this decision, the ruleset
4364may make use of the various
4365.b ${auth_*}
4366macros.
4367If the ruleset does resolve to the
4368.q error
4369mailer the AUTH= parameter is not trusted and hence
4370not passed on to the next relay.
4371.sh 4 "tls_client"
4372.pp
4373The
4374.i tls_client
4375ruleset is called when sendmail acts as server, after a STARTTLS command
4376has been issued, and from
4377.i check_mail.
4378The parameter is the value of
4379.b ${verify}
4380and STARTTLS or MAIL, respectively.
4381If the ruleset does resolve to the
4382.q error
4383mailer, the appropriate error code is returned to the client.
4384.sh 4 "tls_server"
4385.pp
4386The
4387.i tls_server
4388ruleset is called when sendmail acts as client after a STARTTLS command
4389(should) have been issued.
4390The parameter is the value of
4391.b ${verify} .
4392If the ruleset does resolve to the
4393.q error
4394mailer, the connection is aborted
4395(treated as non-deliverable with a permanent or temporary error).
4396.sh 4 "tls_rcpt"
4397.pp
4398The
4399.i tls_rcpt
4400ruleset is called each time before a RCPT TO command is sent.
4401The parameter is the current recipient.
4402If the ruleset does resolve to the
4403.q error
4404mailer, the RCPT TO command is suppressed
4405(treated as non-deliverable with a permanent or temporary error).
4406This ruleset allows to require encryption or verification of
4407the recipient's MTA even if the mail is somehow redirected
4408to another host.
4409For example, sending mail to
4410.i luke@endmail.org
4411may get redirected to a host named
4412.i death.star
4413and hence the tls_server ruleset won't apply.
4414By introducing per recipient restrictions such attacks
4415(e.g., via DNS spoofing) can be made impossible.
4416See
4417.i cf/README
4418how this ruleset can be used.
4419.sh 4 "srv_features"
4420.pp
4421The
4422.i srv_features
4423ruleset is called with the connecting client's host name
4424when a client connects to sendmail.
4425This ruleset should return
4426.b $#
4427followed by a list of options (single characters
4428delimited by white space).
4429If the return value starts with anything else it is silently ignored.
4430Generally upper case characters turn off a feature
4431while lower case characters turn it on.
4432Option `S' causes the server not to offer STARTTLS,
4433which is useful to interact with MTAs/MUAs that have broken
4434STARTTLS implementations by simply not offering it.
4435`V' turns off the request for a client certificate during the TLS handshake.
4436Options `A' and `P' suppress SMTP AUTH and PIPELINING, respectively.
4437`c' is the equivalent to AuthOptions=p, i.e.,
4438it doesn't permit mechanisms susceptible to simple
4439passive attack (e.g., PLAIN, LOGIN), unless a security layer is active.
4440Option `l' requires SMTP AUTH for a connection.
4441Options 'B', 'D', 'E', and 'X' suppress SMTP VERB, DSN, ETRN, and EXPN,
4442respectively.
4443.(b
4444.ta 9n
4445A Do not offer AUTH
4446a Offer AUTH (default)
4447B Do not offer VERB
4448b Offer VERB (default)
4449C Do not require security layer for
4450 plaintext AUTH (default)
4451c Require security layer for plaintext AUTH
4452D Do not offer DSN
4453d Offer DSN (default)
4454E Do not offer ETRN
4455e Offer ETRN (default)
4456L Do not require AUTH (default)
4457l Require AUTH
4458P Do not offer PIPELINING
4459p Offer PIPELINING (default)
4460S Do not offer STARTTLS
4461s Offer STARTTLS (default)
4462V Do not request a client certificate
4463v Request a client certificate (default)
4464X Do not offer EXPN
4465x Offer EXPN (default)
4466.)b
4467Note: the entries marked as ``(default)'' may require that some
4468configuration has been made, e.g., SMTP AUTH is only available if
4469properly configured.
4470Moreover, many options can be changed on a global basis via other
4471settings as explained in this document, e.g., via DaemonPortOptions.
4472.pp
4473The ruleset may return `$#temp' to indicate that there is a temporary
4474problem determining the correct features, e.g., if a map is unavailable.
4475In that case, the SMTP server issues a temporary failure and does not
4476accept email.
4477.sh 4 "try_tls"
4478.pp
4479The
4480.i try_tls
4481ruleset is called when sendmail connects to another MTA.
4482If the ruleset does resolve to the
4483.q error
4484mailer, sendmail does not try STARTTLS even if it is offered.
4485This is useful to interact with MTAs that have broken
4486STARTTLS implementations by simply not using it.
4487.sh 4 "authinfo"
4488.pp
4489The
4490.i authinfo
4491ruleset is called when sendmail tries to authenticate to another MTA.
4492It should return
4493.b $#
4494followed by a list of tokens that are used for SMTP AUTH.
4495If the return value starts with anything else it is silently ignored.
4496Each token is a tagged string of the form:
4497"TDstring"
4498(including the quotes), where
4499.(b
4500.ta 9n
4501T Tag which describes the item
4502D Delimiter: ':' simple text follows
4503 '=' string is base64 encoded
4504string Value of the item
4505.)b
4506Valid values for the tag are:
4507.(b
4508.ta 9n
4509U user (authorization) id
4510I authentication id
4511P password
4512R realm
4513M list of mechanisms delimited by spaces
4514.)b
4515If this ruleset is defined, the option
4516.b DefaultAuthInfo
4517is ignored (even if the ruleset does not return a ``useful'' result).
4518.sh 4 "queuegroup"
4519.pp
4520The
4521.i queuegroup
4522ruleset is used to map a recipient address to a queue group name.
4523The input for the ruleset is a recipient address as specified by the
4524.sm "SMTP RCPT"
4525command.
4526The ruleset should return
4527.b $#
4528followed by the name of a queue group.
4529If the return value starts with anything else it is silently ignored.
4530See the section about ``Queue Groups and Queue Directories''
4531for further information.
4532.sh 4 "greet_pause"
4533.pp
4534The
4535.i greet_pause
4536ruleset is used to specify the amount of time to pause before sending the
4537initial SMTP 220 greeting.
4538If any traffic is received during that pause, an SMTP 554 rejection
4539response is given instead of the 220 greeting and all SMTP commands are
4540rejected during that connection.
4541This helps protect sites from open proxies and SMTP slammers.
4542The ruleset should return
4543.b $#
4544followed by the number of milliseconds (thousandths of a second) to
4545pause.
4546If the return value starts with anything else or is not a number,
4547it is silently ignored.
4548Note: this ruleset is not invoked (and hence the feature is disabled)
4549when the smtps (SMTP over SSL) is used, i.e.,
4550the
4551.i s
4552modifier is set for the daemon via
4553.b DaemonPortOptions ,
4554because in this case the SSL handshake is performed before
4555the greeting is sent.
4556.sh 3 "IPC mailers"
4557.pp
4558Some special processing occurs
4559if the ruleset zero resolves to an IPC mailer
4560(that is, a mailer that has
4561.q [IPC]
4562listed as the Path in the
4563.b M
4564configuration line.
4565The host name passed after
4566.q $@
4567has MX expansion performed if not delivering via a named socket;
4568this looks the name up in DNS to find alternate delivery sites.
4569.pp
4570The host name can also be provided as a dotted quad
4571or an IPv6 address in square brackets;
4572for example:
4573.(b
4574[128.32.149.78]
4575.)b
4576or
4577.(b
4578[IPv6:2002:c0a8:51d2::23f4]
4579.)b
4580This causes direct conversion of the numeric value
4581to an IP host address.
4582.pp
4583The host name passed in after the
4584.q $@
4585may also be a colon-separated list of hosts.
4586Each is separately MX expanded and the results are concatenated
4587to make (essentially) one long MX list.
4588The intent here is to create
4589.q fake
4590MX records that are not published in DNS
4591for private internal networks.
4592.pp
4593As a final special case, the host name can be passed in
4594as a text string
4595in square brackets:
4596.(b
4597[ucbvax.berkeley.edu]
4598.)b
4599This form avoids the MX mapping.
4600.b N.B.:
4601.i
4602This is intended only for situations where you have a network firewall
4603or other host that will do special processing for all your mail,
4604so that your MX record points to a gateway machine;
4605this machine could then do direct delivery to machines
4606within your local domain.
4607Use of this feature directly violates RFC 1123 section 5.3.5:
4608it should not be used lightly.
4609.r
4610.sh 2 "D \*- Define Macro"
4611.pp
4612Macros are named with a single character
4613or with a word in {braces}.
4614The names ``x'' and ``{x}'' denote the same macro
4615for every single character ``x''.
4616Single character names may be selected from the entire ASCII set,
4617but user-defined macros
4618should be selected from the set of upper case letters only.
4619Lower case letters
4620and special symbols
4621are used internally.
4622Long names beginning with a lower case letter or a punctuation character
4623are reserved for use by sendmail,
4624so user-defined long macro names should begin with an upper case letter.
4625.pp
4626The syntax for macro definitions is:
4627.(b F
4628.b D \c
4629.i x\|val
4630.)b
4631where
4632.i x
4633is the name of the macro
4634(which may be a single character
4635or a word in braces)
4636and
4637.i val
4638is the value it should have.
4639There should be no spaces given
4640that do not actually belong in the macro value.
4641.pp
4642Macros are interpolated
4643using the construct
4644.b $ \c
4645.i x ,
4646where
4647.i x
4648is the name of the macro to be interpolated.
4649This interpolation is done when the configuration file is read,
4650except in
4651.b M
4652lines.
4653The special construct
4654.b $& \c
4655.i x
4656can be used in
4657.b R
4658lines to get deferred interpolation.
4659.pp
4660Conditionals can be specified using the syntax:
4661.(b
4662$?x text1 $| text2 $.
4663.)b
4664This interpolates
4665.i text1
4666if the macro
4667.b $x
4668is set and non-null,
4669and
4670.i text2
4671otherwise.
4672The
4673.q else
4674(\c
4675.b $| )
4676clause may be omitted.
4677.pp
4678The following macros are defined and/or used internally by
4679.i sendmail
4680for interpolation into argv's for mailers
4681or for other contexts.
4682The ones marked \(dg are information passed into sendmail\**,
4683.(f
4684\**As of version 8.6,
4685all of these macros have reasonable defaults.
4686Previous versions required that they be defined.
4687.)f
4688the ones marked \(dd are information passed both in and out of sendmail,
4689and the unmarked macros are passed out of sendmail
4690but are not otherwise used internally.
4691These macros are:
4692.nr ii 5n
4693.ip $a
4694The origination date in RFC 822 format.
4695This is extracted from the Date: line.
4696.ip $b
4697The current date in RFC 822 format.
4698.ip $c
4699The hop count.
4700This is a count of the number of Received: lines
4701plus the value of the
4702.b \-h
4703command line flag.
4704.ip $d
4705The current date in UNIX (ctime) format.
4706.ip $e\(dg
4707(Obsolete; use SmtpGreetingMessage option instead.)
4708The SMTP entry message.
4709This is printed out when SMTP starts up.
4710The first word must be the
4711.b $j
4712macro as specified by RFC 821.
4713Defaults to
4714.q "$j Sendmail $v ready at $b" .
4715Commonly redefined to include the configuration version number, e.g.,
4716.q "$j Sendmail $v/$Z ready at $b"
4717.ip $f
4718The envelope sender (from) address.
4719.ip $g
4720The sender address relative to the recipient.
4721For example, if
4722.b $f
4723is
4724.q foo ,
4725.b $g
4726will be
4727.q host!foo ,
4728.q foo@host.domain ,
4729or whatever is appropriate for the receiving mailer.
4730.ip $h
4731The recipient host.
4732This is set in ruleset 0 from the $@ field of a parsed address.
4733.ip $i
4734The queue id,
4735e.g.,
4736.q f344MXxp018717 .
4737.ip $j\(dd
4738The \*(lqofficial\*(rq domain name for this site.
4739This is fully qualified if the full qualification can be found.
4740It
4741.i must
4742be redefined to be the fully qualified domain name
4743if your system is not configured so that information can find
4744it automatically.
4745.ip $k
4746The UUCP node name (from the uname system call).
4747.ip $l\(dg
4748(Obsolete; use UnixFromLine option instead.)
4749The format of the UNIX from line.
4750Unless you have changed the UNIX mailbox format,
4751you should not change the default,
4752which is
4753.q "From $g $d" .
4754.ip $m
4755The domain part of the \fIgethostname\fP return value.
4756Under normal circumstances,
4757.b $j
4758is equivalent to
4759.b $w.$m .
4760.ip $n\(dg
4761The name of the daemon (for error messages).
4762Defaults to
4763.q MAILER-DAEMON .
4764.ip $o\(dg
4765(Obsolete: use OperatorChars option instead.)
4766The set of \*(lqoperators\*(rq in addresses.
4767A list of characters
4768which will be considered tokens
4769and which will separate tokens
4770when doing parsing.
4771For example, if
4772.q @
4773were in the
4774.b $o
4775macro, then the input
4776.q a@b
4777would be scanned as three tokens:
4778.q a,
4779.q @,
4780and
4781.q b.
4782Defaults to
4783.q ".:@[]" ,
4784which is the minimum set necessary to do RFC 822 parsing;
4785a richer set of operators is
4786.q ".:%@!/[]" ,
4787which adds support for UUCP, the %-hack, and X.400 addresses.
4788.ip $p
4789Sendmail's process id.
4790.ip $q\(dg
4791Default format of sender address.
4792The
4793.b $q
4794macro specifies how an address should appear in a message
4795when it is defaulted.
4796Defaults to
4797.q "<$g>" .
4798It is commonly redefined to be
4799.q "$?x$x <$g>$|$g$."
4800or
4801.q "$g$?x ($x)$." ,
4802corresponding to the following two formats:
4803.(b
4804Eric Allman <eric@CS.Berkeley.EDU>
4805eric@CS.Berkeley.EDU (Eric Allman)
4806.)b
4807.i Sendmail
4808properly quotes names that have special characters
4809if the first form is used.
4810.ip $r
4811Protocol used to receive the message.
4812Set from the
4813.b \-p
4814command line flag or by the SMTP server code.
4815.ip $s
4816Sender's host name.
4817Set from the
4818.b \-p
4819command line flag or by the SMTP server code
4820(in which case it is set to the EHLO/HELO parameter).
4821.ip $t
4822A numeric representation of the current time in the format YYYYMMDDHHmm
4823(4 digit year 1900-9999, 2 digit month 01-12, 2 digit day 01-31,
48242 digit hours 00-23, 2 digit minutes 00-59).
4825.ip $u
4826The recipient user.
4827.ip $v
4828The version number of the
4829.i sendmail
4830binary.
4831.ip $w\(dd
4832The hostname of this site.
4833This is the root name of this host (but see below for caveats).
4834.ip $x
4835The full name of the sender.
4836.ip $z
4837The home directory of the recipient.
4838.ip $_
4839The validated sender address.
4840See also
4841.b ${client_resolve} .
4842.ip ${addr_type}
4843The type of the address which is currently being rewritten.
4844This macro contains up to three characters, the first
4845is either `e' or `h' for envelope/header address,
4846the second is a space,
4847and the third is either `s' or `r' for sender/recipient address.
4848.ip ${alg_bits}
4849The maximum keylength (in bits) of the symmetric encryption algorithm
4850used for a TLS connection.
4851This may be less than the effective keylength,
4852which is stored in
4853.b ${cipher_bits} ,
4854for ``export controlled'' algorithms.
4855.ip ${auth_authen}
4856The client's authentication credentials as determined by authentication
4857(only set if successful).
4858The format depends on the mechanism used, it might be just `user',
4859or `user@realm', or something similar (SMTP AUTH only).
4860.ip ${auth_author}
4861The authorization identity, i.e. the AUTH= parameter of the
4862.sm "SMTP MAIL"
4863command if supplied.
4864.ip ${auth_type}
4865The mechanism used for SMTP authentication
4866(only set if successful).
4867.ip ${auth_ssf}
4868The keylength (in bits) of the symmetric encryption algorithm
4869used for the security layer of a SASL mechanism.
4870.ip ${bodytype}
4871The message body type
4872(7BIT or 8BITMIME),
4873as determined from the envelope.
4874.ip ${cert_issuer}
4875The DN (distinguished name) of the CA (certificate authority)
4876that signed the presented certificate (the cert issuer)
4877(STARTTLS only).
4878.ip ${cert_md5}
4879The MD5 hash of the presented certificate (STARTTLS only).
4880.ip ${cert_subject}
4881The DN of the presented certificate (called the cert subject)
4882(STARTTLS only).
4883.ip ${cipher}
4884The cipher suite used for the connection, e.g., EDH-DSS-DES-CBC3-SHA,
4885EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA
4886(STARTTLS only).
4887.ip ${cipher_bits}
4888The effective keylength (in bits) of the symmetric encryption algorithm
4889used for a TLS connection.
4890.ip ${client_addr}
4891The IP address of the SMTP client.
4892IPv6 addresses are tagged with "IPv6:" before the address.
4893Defined in the SMTP server only.
4894.ip ${client_connections}
4895The number of open connections in the SMTP server for the client IP address.
4896.ip ${client_flags}
4897The flags specified by the
4898Modifier= part of
4899.b ClientPortOptions
4900where flags are separated from each other by spaces
4901and upper case flags are doubled.
4902That is,
4903Modifier=hA
4904will be represented as
4905"h AA" in
4906.b ${client_flags} ,
4907which is required for testing the flags in rulesets.
4908.ip ${client_name}
4909The host name of the SMTP client.
4910This may be the client's bracketed IP address
4911in the form [ nnn.nnn.nnn.nnn ] for IPv4
4912and [ IPv6:nnnn:...:nnnn ] for IPv6
4913if the client's
4914IP address is not resolvable, or if it is resolvable
4915but the IP address of the resolved hostname
4916doesn't match the original IP address.
4917Defined in the SMTP server only.
4918See also
4919.b ${client_resolve} .
4920.ip ${client_port}
4921The port number of the SMTP client.
4922Defined in the SMTP server only.
4923.ip ${client_ptr}
4924The result of the PTR lookup for the client IP address.
4925Note: this is the same as
4926.b ${client_name}
4927if and only if
4928.b ${client_resolve}
4929is OK.
4930Defined in the SMTP server only.
4931.ip ${client_rate}
4932The number of incoming connections for the client IP address
4933over the time interval specified by ConnectionRateWindowSize.
4934.ip ${client_resolve}
4935Holds the result of the resolve call for
4936.b ${client_name} .
4937Possible values are:
4938.(b
4939.ta 10n
4940OK resolved successfully
4941FAIL permanent lookup failure
4942FORGED forward lookup doesn't match reverse lookup
4943TEMP temporary lookup failure
4944.)b
4945Defined in the SMTP server only.
4946.i sendmail
4947performs a hostname lookup on the IP address of the connecting client.
4948Next the IP addresses of that hostname are looked up.
4949If the client IP address does not appear in that list,
4950then the hostname is maybe forged.
4951This is reflected as the value FORGED for
4952.b ${client_resolve}
4953and it also shows up in
4954.b $_
4955as "(may be forged)".
4956.ip ${cn_issuer}
4957The CN (common name) of the CA that signed the presented certificate
4958(STARTTLS only).
4959Note: if the CN cannot be extracted properly it will be replaced by
4960one of these strings based on the encountered error:
4961.(b
4962.ta 25n
4963BadCertificateContainsNUL CN contains a NUL character
4964BadCertificateTooLong CN is too long
4965BadCertificateUnknown CN could not be extracted
4966.)b
4967In the last case, some other (unspecific) error occurred.
4968.ip ${cn_subject}
4969The CN (common name) of the presented certificate
4970(STARTTLS only).
4971See
4972.b ${cn_issuer}
4973for possible replacements.
4974.ip ${currHeader}
4975Header value as quoted string
4976(possibly truncated to
4977.b MAXNAME ).
4978This macro is only available in header check rulesets.
4979.ip ${daemon_addr}
4980The IP address the daemon is listening on for connections.
4981.ip ${daemon_family}
4982The network family
4983if the daemon is accepting network connections.
4984Possible values include
4985.q inet ,
4986.q inet6 ,
4987.q iso ,
4988.q ns ,
4989.q x.25
4990.ip ${daemon_flags}
4991The flags for the daemon as specified by the
4992Modifier= part of
4993.b DaemonPortOptions
4994whereby the flags are separated from each other by spaces,
4995and upper case flags are doubled.
4996That is,
4997Modifier=Ea
4998will be represented as
4999"EE a" in
5000.b ${daemon_flags} ,
5001which is required for testing the flags in rulesets.
5002.ip ${daemon_info}
5003Some information about a daemon as a text string.
5004For example,
5005.q SMTP+queueing@00:30:00 .
5006.ip ${daemon_name}
5007The name of the daemon from
5008.b DaemonPortOptions
5009Name= suboption.
5010If this suboption is not set,
5011"Daemon#",
5012where # is the daemon number,
5013is used.
5014.ip ${daemon_port}
5015The port the daemon is accepting connection on.
5016Unless
5017.b DaemonPortOptions
5018is set, this will most likely be
5019.q 25 .
5020.ip ${deliveryMode}
5021The current delivery mode sendmail is using.
5022It is initially set to the value of the
5023.b DeliveryMode
5024option.
5025.ip ${envid}
5026The envelope id parameter (ENVID=) passed to sendmail as part of the envelope.
5027.ip ${hdrlen}
5028The length of the header value which is stored in
5029${currHeader} (before possible truncation).
5030If this value is greater than or equal to
5031.b MAXNAME
5032the header has been truncated.
5033.ip ${hdr_name}
5034The name of the header field for which the current header
5035check ruleset has been called.
5036This is useful for a default header check ruleset to get
5037the name of the header;
5038the macro is only available in header check rulesets.
5039.ip ${if_addr}
5040The IP address of the interface of an incoming connection
5041unless it is in the loopback net.
5042IPv6 addresses are tagged with "IPv6:" before the address.
5043.ip ${if_addr_out}
5044The IP address of the interface of an outgoing connection
5045unless it is in the loopback net.
5046IPv6 addresses are tagged with "IPv6:" before the address.
5047.ip ${if_family}
5048The IP family of the interface of an incoming connection
5049unless it is in the loopback net.
5050.ip ${if_family_out}
5051The IP family of the interface of an outgoing connection
5052unless it is in the loopback net.
5053.ip ${if_name}
5054The hostname associated with the interface of an incoming connection.
5055This macro can be used for
5056SmtpGreetingMessage and HReceived for virtual hosting.
5057For example:
5058.(b
5059O SmtpGreetingMessage=$?{if_name}${if_name}$|$j$. MTA
5060.)b
5061.ip ${if_name_out}
5062The name of the interface of an outgoing connection.
5063.ip ${load_avg}
5064The current load average.
5065.ip ${mail_addr}
5066The address part of the resolved triple of the address given for the
5067.sm "SMTP MAIL"
5068command.
5069Defined in the SMTP server only.
5070.ip ${mail_host}
5071The host from the resolved triple of the address given for the
5072.sm "SMTP MAIL"
5073command.
5074Defined in the SMTP server only.
5075.ip ${mail_mailer}
5076The mailer from the resolved triple of the address given for the
5077.sm "SMTP MAIL"
5078command.
5079Defined in the SMTP server only.
5080.ip ${msg_id}
5081The value of the Message-Id: header.
5082.ip ${msg_size}
5083The value of the SIZE= parameter,
5084i.e., usually the size of the message (in an ESMTP dialogue),
5085before the message has been collected, thereafter
5086the message size as computed by
5087.i sendmail
5088(and can be used in check_compat).
5089.ip ${nbadrcpts}
5090The number of bad recipients for a single message.
5091.ip ${nrcpts}
5092The number of validated recipients for a single message.
5093Note: since recipient validation happens after
5094.i check_rcpt
5095has been called, the value in this ruleset
5096is one less than what might be expected.
5097.ip ${ntries}
5098The number of delivery attempts.
5099.ip ${opMode}
5100The current operation mode (from the
5101.b \-b
5102flag).
5103.ip ${quarantine}
5104The quarantine reason for the envelope,
5105if it is quarantined.
5106.ip ${queue_interval}
5107The queue run interval given by the
5108.b \-q
5109flag.
5110For example,
5111.b \-q30m
5112would set
5113.b ${queue_interval}
5114to
5115.q 00:30:00 .
5116.ip ${rcpt_addr}
5117The address part of the resolved triple of the address given for the
5118.sm "SMTP RCPT"
5119command.
5120Defined in the SMTP server only after a RCPT command.
5121.ip ${rcpt_host}
5122The host from the resolved triple of the address given for the
5123.sm "SMTP RCPT"
5124command.
5125Defined in the SMTP server only after a RCPT command.
5126.ip ${rcpt_mailer}
5127The mailer from the resolved triple of the address given for the
5128.sm "SMTP RCPT"
5129command.
5130Defined in the SMTP server only after a RCPT command.
5131.ip ${server_addr}
5132The address of the server of the current outgoing SMTP connection.
5133For LMTP delivery the macro is set to the name of the mailer.
5134.ip ${server_name}
5135The name of the server of the current outgoing SMTP or LMTP connection.
5136.ip ${time}
5137The output of the
5138.i time (3)
5139function, i.e., the number of seconds since 0 hours, 0 minutes,
51400 seconds, January 1, 1970, Coordinated Universal Time (UTC).
5141.ip ${tls_version}
5142The TLS/SSL version used for the connection, e.g., TLSv1, SSLv3, SSLv2;
5143defined after STARTTLS has been used.
5144.ip ${total_rate}
5145The total number of incoming connections over the time interval specified
5146by ConnectionRateWindowSize.
5147.ip ${verify}
5148The result of the verification of the presented cert;
5149only defined after STARTTLS has been used (or attempted).
5150Possible values are:
5151.(b
5152.ta 13n
5153OK verification succeeded.
5154NO no cert presented.
5155NOT no cert requested.
5156FAIL cert presented but could not be verified,
5157 e.g., the signing CA is missing.
5158NONE STARTTLS has not been performed.
5159TEMP temporary error occurred.
5160PROTOCOL some protocol error occurred
5161 at the ESMTP level (not TLS).
5162SOFTWARE STARTTLS handshake failed,
5163 which is a fatal error for this session,
5164 the e-mail will be queued.
5165.)b
5166.pp
5167There are three types of dates that can be used.
5168The
5169.b $a
5170and
5171.b $b
5172macros are in RFC 822 format;
5173.b $a
5174is the time as extracted from the
5175.q Date:
5176line of the message
5177(if there was one),
5178and
5179.b $b
5180is the current date and time
5181(used for postmarks).
5182If no
5183.q Date:
5184line is found in the incoming message,
5185.b $a
5186is set to the current time also.
5187The
5188.b $d
5189macro is equivalent to the
5190.b $b
5191macro in UNIX
5192(ctime)
5193format.
5194.pp
5195The macros
5196.b $w ,
5197.b $j ,
5198and
5199.b $m
5200are set to the identity of this host.
5201.i Sendmail
5202tries to find the fully qualified name of the host
5203if at all possible;
5204it does this by calling
5205.i gethostname (2)
5206to get the current hostname
5207and then passing that to
5208.i gethostbyname (3)
5209which is supposed to return the canonical version of that host name.\**
5210.(f
5211\**For example, on some systems
5212.i gethostname
5213might return
5214.q foo
5215which would be mapped to
5216.q foo.bar.com
5217by
5218.i gethostbyname .
5219.)f
5220Assuming this is successful,
5221.b $j
5222is set to the fully qualified name
5223and
5224.b $m
5225is set to the domain part of the name
5226(everything after the first dot).
5227The
5228.b $w
5229macro is set to the first word
5230(everything before the first dot)
5231if you have a level 5 or higher configuration file;
5232otherwise, it is set to the same value as
5233.b $j .
5234If the canonification is not successful,
5235it is imperative that the config file set
5236.b $j
5237to the fully qualified domain name\**.
5238.(f
5239\**Older versions of sendmail didn't pre-define
5240.b $j
5241at all, so up until 8.6,
5242config files
5243.i always
5244had to define
5245.b $j .
5246.)f
5247.pp
5248The
5249.b $f
5250macro is the id of the sender
5251as originally determined;
5252when mailing to a specific host
5253the
5254.b $g
5255macro is set to the address of the sender
5256.ul
5257relative to the recipient.
5258For example,
5259if I send to
5260.q bollard@matisse.CS.Berkeley.EDU
5261from the machine
5262.q vangogh.CS.Berkeley.EDU
5263the
5264.b $f
5265macro will be
5266.q eric
5267and the
5268.b $g
5269macro will be
5270.q eric@vangogh.CS.Berkeley.EDU.
5271.pp
5272The
5273.b $x
5274macro is set to the full name of the sender.
5275This can be determined in several ways.
5276It can be passed as flag to
5277.i sendmail .
5278It can be defined in the
5279.sm NAME
5280environment variable.
5281The third choice is the value of the
5282.q Full-Name:
5283line in the header if it exists,
5284and the fourth choice is the comment field
5285of a
5286.q From:
5287line.
5288If all of these fail,
5289and if the message is being originated locally,
5290the full name is looked up in the
5291.i /etc/passwd
5292file.
5293.pp
5294When sending,
5295the
5296.b $h ,
5297.b $u ,
5298and
5299.b $z
5300macros get set to the host, user, and home directory
5301(if local)
5302of the recipient.
5303The first two are set from the
5304.b $@
5305and
5306.b $:
5307part of the rewriting rules, respectively.
5308.pp
5309The
5310.b $p
5311and
5312.b $t
5313macros are used to create unique strings
5314(e.g., for the
5315.q Message-Id:
5316field).
5317The
5318.b $i
5319macro is set to the queue id on this host;
5320if put into the timestamp line
5321it can be extremely useful for tracking messages.
5322The
5323.b $v
5324macro is set to be the version number of
5325.i sendmail ;
5326this is normally put in timestamps
5327and has been proven extremely useful for debugging.
5328.pp
5329The
5330.b $c
5331field is set to the
5332.q "hop count,"
5333i.e., the number of times this message has been processed.
5334This can be determined
5335by the
5336.b \-h
5337flag on the command line
5338or by counting the timestamps in the message.
5339.pp
5340The
5341.b $r
5342and
5343.b $s
5344fields are set to the protocol used to communicate with
5345.i sendmail
5346and the sending hostname.
5347They can be set together using the
5348.b \-p
5349command line flag or separately using the
5350.b \-M
5351or
5352.b \-oM
5353flags.
5354.pp
5355The
5356.b $_
5357is set to a validated sender host name.
5358If the sender is running an RFC 1413 compliant IDENT server
5359and the receiver has the IDENT protocol turned on,
5360it will include the user name on that host.
5361.pp
5362The
5363.b ${client_name} ,
5364.b ${client_addr} ,
5365and
5366.b ${client_port}
5367macros
5368are set to the name, address, and port number of the SMTP client
5369who is invoking
5370.i sendmail
5371as a server.
5372These can be used in the
5373.i check_*
5374rulesets (using the
5375.b $&
5376deferred evaluation form, of course!).
5377.sh 2 "C and F \*- Define Classes"
5378.pp
5379Classes of phrases may be defined
5380to match on the left hand side of rewriting rules,
5381where a
5382.q phrase
5383is a sequence of characters that does not contain space characters.
5384For example
5385a class of all local names for this site
5386might be created
5387so that attempts to send to oneself
5388can be eliminated.
5389These can either be defined directly in the configuration file
5390or read in from another file.
5391Classes are named as a single letter or a word in {braces}.
5392Class names beginning with lower case letters
5393and special characters are reserved for system use.
5394Classes defined in config files may be given names
5395from the set of upper case letters for short names
5396or beginning with an upper case letter for long names.
5397.pp
5398The syntax is:
5399.(b F
5400.b C \c
5401.i c\|phrase1
5402.i phrase2...
5403.br
5404.b F \c
5405.i c\|file
5406.br
5407.b F \c
5408.i c\||program
5409.br
5410.b F \c
5411.i c\|[mapkey]@mapclass:mapspec
5412.)b
5413The first form defines the class
5414.i c
5415to match any of the named words.
5416If
5417.i phrase1
5418or
5419.i phrase2
5420is another class,
5421e.g.,
5422.i $=S ,
5423the contents of class
5424.i S
5425are added to class
5426.i c .
5427It is permissible to split them among multiple lines;
5428for example, the two forms:
5429.(b
5430CHmonet ucbmonet
5431.)b
5432and
5433.(b
5434CHmonet
5435CHucbmonet
5436.)b
5437are equivalent.
5438The ``F'' forms
5439read the elements of the class
5440.i c
5441from the named
5442.i file ,
5443.i program ,
5444or
5445.i "map specification" .
5446Each element should be listed on a separate line.
5447To specify an optional file, use ``\-o'' between the class
5448name and the file name, e.g.,
5449.(b
5450Fc \-o /path/to/file
5451.)b
5452If the file can't be used,
5453.i sendmail
5454will not complain but silently ignore it.
5455The map form should be an optional map key, an at sign,
5456and a map class followed by the specification for that map.
5457Examples include:
5458.(b
5459F{VirtHosts}@ldap:\-k (&(objectClass=virtHosts)(host=*)) \-v host
5460F{MyClass}foo@hash:/etc/mail/classes
5461.)b
5462will fill the class
5463.b $={VirtHosts}
5464from an LDAP map lookup and
5465.b $={MyClass}
5466from a hash database map lookup of the
5467.b foo .
5468There is also a built-in schema that can be accessed by only specifying:
5469.(b
5470F{\c
5471.i ClassName }@LDAP
5472.)b
5473This will tell sendmail to use the default schema:
5474.(b
5475\-k (&(objectClass=sendmailMTAClass)
5476 (sendmailMTAClassName=\c
5477.i ClassName )
5478 (|(sendmailMTACluster=${sendmailMTACluster})
5479 (sendmailMTAHost=$j)))
5480\-v sendmailMTAClassValue
5481.)b
5482Note that the lookup is only done when sendmail is initially started.
5483.pp
5484Elements of classes can be accessed in rules using
5485.b $=
5486or
5487.b $~ .
5488The
5489.b $~
5490(match entries not in class)
5491only matches a single word;
5492multi-word entries in the class are ignored in this context.
5493.pp
5494Some classes have internal meaning to
5495.i sendmail :
5496.nr ii 0.5i
5497.\".ip $=b
5498.\"A set of Content-Types that will not have the newline character
5499.\"translated to CR-LF before encoding into base64 MIME.
5500.\"The class can have major times
5501.\"(e.g.,
5502.\".q image )
5503.\"or full types
5504.\"(such as
5505.\".q application/octet-stream ).
5506.\"The class is initialized with
5507.\".q application/octet-stream ,
5508.\".q image ,
5509.\".q audio ,
5510.\"and
5511.\".q video .
5512.ip $=e
5513contains the Content-Transfer-Encodings that can be 8\(->7 bit encoded.
5514It is predefined to contain
5515.q 7bit ,
5516.q 8bit ,
5517and
5518.q binary .
5519.ip $=k
5520set to be the same as
5521.b $k ,
5522that is, the UUCP node name.
5523.ip $=m
5524set to the set of domains by which this host is known,
5525initially just
5526.b $m .
5527.ip $=n
5528can be set to the set of MIME body types
5529that can never be eight to seven bit encoded.
5530It defaults to
5531.q multipart/signed .
5532Message types
5533.q message/*
5534and
5535.q multipart/*
5536are never encoded directly.
5537Multipart messages are always handled recursively.
5538The handling of message/* messages
5539are controlled by class
5540.b $=s .
5541.ip $=q
5542A set of Content-Types that will never be encoded as base64
5543(if they have to be encoded, they will be encoded as quoted-printable).
5544It can have primary types
5545(e.g.,
5546.q text )
5547or full types
5548(such as
5549.q text/plain ).
5550The class is initialized to have
5551.q text/plain
5552only.
5553.ip $=s
5554contains the set of subtypes of message that can be treated recursively.
5555By default it contains only
5556.q rfc822 .
5557Other
5558.q message/*
5559types cannot be 8\(->7 bit encoded.
5560If a message containing eight bit data is sent to a seven bit host,
5561and that message cannot be encoded into seven bits,
5562it will be stripped to 7 bits.
5563.ip $=t
5564set to the set of trusted users by the
5565.b T
5566configuration line.
5567If you want to read trusted users from a file, use
5568.b Ft \c
5569.i /file/name .
5570.ip $=w
5571set to be the set of all names
5572this host is known by.
5573This can be used to match local hostnames.
5574.ip $={persistentMacros}
5575set to the macros that should be saved across queue runs.
5576Care should be taken when adding macro names to this class.
5577.pp
5578.i Sendmail
5579can be compiled to allow a
5580.i scanf (3)
5581string on the
5582.b F
5583line.
5584This lets you do simplistic parsing of text files.
5585For example, to read all the user names in your system
5586.i /etc/passwd
5587file into a class, use
5588.(b
5589FL/etc/passwd %[^:]
5590.)b
5591which reads every line up to the first colon.
5592.sh 2 "M \*- Define Mailer"
5593.pp
5594Programs and interfaces to mailers
5595are defined in this line.
5596The format is:
5597.(b F
5598.b M \c
5599.i name ,
5600{\c
5601.i field =\c
5602.i value \|}*
5603.)b
5604where
5605.i name
5606is the name of the mailer
5607(used internally only)
5608and the
5609.q field=name
5610pairs define attributes of the mailer.
5611Fields are:
5612.(b
5613.ta 1i
5614Path The pathname of the mailer
5615Flags Special flags for this mailer
5616Sender Rewriting set(s) for sender addresses
5617Recipient Rewriting set(s) for recipient addresses
5618recipients Maximum number of recipients per connection
5619Argv An argument vector to pass to this mailer
5620Eol The end-of-line string for this mailer
5621Maxsize The maximum message length to this mailer
5622maxmessages The maximum message deliveries per connection
5623Linelimit The maximum line length in the message body
5624Directory The working directory for the mailer
5625Userid The default user and group id to run as
5626Nice The nice(2) increment for the mailer
5627Charset The default character set for 8-bit characters
5628Type Type information for DSN diagnostics
5629Wait The maximum time to wait for the mailer
5630Queuegroup The default queue group for the mailer
5631/ The root directory for the mailer
5632.)b
5633Only the first character of the field name is checked
5634(it's case-sensitive).
5635.pp
5636The following flags may be set in the mailer description.
5637Any other flags may be used freely
5638to conditionally assign headers to messages
5639destined for particular mailers.
5640Flags marked with \(dg
5641are not interpreted by the
5642.i sendmail
5643binary;
5644these are the conventionally used to correlate to the flags portion
5645of the
5646.b H
5647line.
5648Flags marked with \(dd
5649apply to the mailers for the sender address
5650rather than the usual recipient mailers.
5651.nr ii 4n
5652.ip a
5653Run Extended SMTP (ESMTP) protocol (defined in RFCs 1869, 1652, and 1870).
5654This flag defaults on if the SMTP greeting message includes the word
5655.q ESMTP .
5656.ip A
5657Look up the user (address) part of the resolved mailer triple,
5658in the alias database.
5659Normally this is only set for local mailers.
5660.ip b
5661Force a blank line on the end of a message.
5662This is intended to work around some stupid versions of
5663/bin/mail
5664that require a blank line, but do not provide it themselves.
5665It would not normally be used on network mail.
5666.ip B
5667Strip leading backslashes (\e) off of the address;
5668this is a subset of the functionality of the
5669.b s
5670flag.
5671.ip c
5672Do not include comments in addresses.
5673This should only be used if you have to work around
5674a remote mailer that gets confused by comments.
5675This strips addresses of the form
5676.q "Phrase <address>"
5677or
5678.q "address (Comment)"
5679down to just
5680.q address .
5681.ip C\(dd
5682If mail is
5683.i received
5684from a mailer with this flag set,
5685any addresses in the header that do not have an at sign
5686(\c
5687.q @ )
5688after being rewritten by ruleset three
5689will have the
5690.q @domain
5691clause from the sender envelope address
5692tacked on.
5693This allows mail with headers of the form:
5694.(b
5695From: usera@hosta
5696To: userb@hostb, userc
5697.)b
5698to be rewritten as:
5699.(b
5700From: usera@hosta
5701To: userb@hostb, userc@hosta
5702.)b
5703automatically.
5704However, it doesn't really work reliably.
5705.ip d
5706Do not include angle brackets around route-address syntax addresses.
5707This is useful on mailers that are going to pass addresses to a shell
5708that might interpret angle brackets as I/O redirection.
5709However, it does not protect against other shell metacharacters.
5710Therefore, passing addresses to a shell should not be considered secure.
5711.ip D\(dg
5712This mailer wants a
5713.q Date:
5714header line.
5715.ip e
5716This mailer is expensive to connect to,
5717so try to avoid connecting normally;
5718any necessary connection will occur during a queue run.
5719See also option
5720.b HoldExpensive .
5721.ip E
5722Escape lines beginning with
5723.q From\0
5724in the message with a `>' sign.
5725.ip f
5726The mailer wants a
5727.b \-f
5728.i from
5729flag,
5730but only if this is a network forward operation
5731(i.e.,
5732the mailer will give an error
5733if the executing user
5734does not have special permissions).
5735.ip F\(dg
5736This mailer wants a
5737.q From:
5738header line.
5739.ip g
5740Normally,
5741.i sendmail
5742sends internally generated email (e.g., error messages)
5743using the null return address
5744as required by RFC 1123.
5745However, some mailers don't accept a null return address.
5746If necessary,
5747you can set the
5748.b g
5749flag to prevent
5750.i sendmail
5751from obeying the standards;
5752error messages will be sent as from the MAILER-DAEMON
5753(actually, the value of the
5754.b $n
5755macro).
5756.ip h
5757Upper case should be preserved in host names
5758(the $@ portion of the mailer triplet resolved from ruleset 0)
5759for this mailer.
5760.ip i
5761Do User Database rewriting on envelope sender address.
5762.ip I
5763This mailer will be speaking SMTP
5764to another
5765.i sendmail
5766\*-
5767as such it can use special protocol features.
5768This flag should not be used except for debugging purposes
5769because it uses
5770.b VERB
5771as SMTP command.
5772.ip j
5773Do User Database rewriting on recipients as well as senders.
5774.ip k
5775Normally when
5776.i sendmail
5777connects to a host via SMTP,
5778it checks to make sure that this isn't accidently the same host name
5779as might happen if
5780.i sendmail
5781is misconfigured or if a long-haul network interface is set in loopback mode.
5782This flag disables the loopback check.
5783It should only be used under very unusual circumstances.
5784.ip K
5785Currently unimplemented.
5786Reserved for chunking.
5787.ip l
5788This mailer is local
5789(i.e.,
5790final delivery will be performed).
5791.ip L
5792Limit the line lengths as specified in RFC 821.
5793This deprecated option should be replaced by the
5794.b L=
5795mail declaration.
5796For historic reasons, the
5797.b L
5798flag also sets the
5799.b 7
5800flag.
5801.ip m
5802This mailer can send to multiple users
5803on the same host
5804in one transaction.
5805When a
5806.b $u
5807macro occurs in the
5808.i argv
5809part of the mailer definition,
5810that field will be repeated as necessary
5811for all qualifying users.
5812Removing this flag can defeat duplicate supression on a remote site
5813as each recipient is sent in a separate transaction.
5814.ip M\(dg
5815This mailer wants a
5816.q Message-Id:
5817header line.
5818.ip n
5819Do not insert a UNIX-style
5820.q From
5821line on the front of the message.
5822.ip o
5823Always run as the owner of the recipient mailbox.
5824Normally
5825.i sendmail
5826runs as the sender for locally generated mail
5827or as
5828.q daemon
5829(actually, the user specified in the
5830.b u
5831option)
5832when delivering network mail.
5833The normal behavior is required by most local mailers,
5834which will not allow the envelope sender address
5835to be set unless the mailer is running as daemon.
5836This flag is ignored if the
5837.b S
5838flag is set.
5839.ip p
5840Use the route-addr style reverse-path in the SMTP
5841.q "MAIL FROM:"
5842command
5843rather than just the return address;
5844although this is required in RFC 821 section 3.1,
5845many hosts do not process reverse-paths properly.
5846Reverse-paths are officially discouraged by RFC 1123.
5847.ip P\(dg
5848This mailer wants a
5849.q Return-Path:
5850line.
5851.ip q
5852When an address that resolves to this mailer is verified
5853(SMTP VRFY command),
5854generate 250 responses instead of 252 responses.
5855This will imply that the address is local.
5856.ip r
5857Same as
5858.b f ,
5859but sends a
5860.b \-r
5861flag.
5862.ip R
5863Open SMTP connections from a
5864.q secure
5865port.
5866Secure ports aren't
5867(secure, that is)
5868except on UNIX machines,
5869so it is unclear that this adds anything.
5870.i sendmail
5871must be running as root to be able to use this flag.
5872.ip s
5873Strip quote characters (" and \e) off of the address
5874before calling the mailer.
5875.ip S
5876Don't reset the userid
5877before calling the mailer.
5878This would be used in a secure environment
5879where
5880.i sendmail
5881ran as root.
5882This could be used to avoid forged addresses.
5883If the
5884.b U=
5885field is also specified,
5886this flag causes the effective user id to be set to that user.
5887.ip u
5888Upper case should be preserved in user names for this mailer. Standards
5889require preservation of case in the local part of addresses, except for
5890those address for which your system accepts responsibility.
5891RFC 2142 provides a long list of addresses which should be case
5892insensitive.
5893If you use this flag, you may be violating RFC 2142.
5894Note that postmaster is always treated as a case insensitive address
5895regardless of this flag.
5896.ip U
5897This mailer wants UUCP-style
5898.q From
5899lines with the ugly
5900.q "remote from <host>"
5901on the end.
5902.ip w
5903The user must have a valid account on this machine,
5904i.e.,
5905.i getpwnam
5906must succeed.
5907If not, the mail is bounced.
5908See also the
5909.b MailBoxDatabase
5910option.
5911This is required to get
5912.q \&.forward
5913capability.
5914.ip W
5915Ignore long term host status information (see Section
5916"Persistent Host Status Information").
5917.ip x\(dg
5918This mailer wants a
5919.q Full-Name:
5920header line.
5921.ip X
5922This mailer wants to use the hidden dot algorithm as specified in RFC 821;
5923basically, any line beginning with a dot will have an extra dot prepended
5924(to be stripped at the other end).
5925This insures that lines in the message containing a dot
5926will not terminate the message prematurely.
5927.ip z
5928Run Local Mail Transfer Protocol (LMTP)
5929between
5930.i sendmail
5931and the local mailer.
5932This is a variant on SMTP
5933defined in RFC 2033
5934that is specifically designed for delivery to a local mailbox.
5935.ip Z
5936Apply DialDelay (if set) to this mailer.
5937.ip 0
5938Don't look up MX records for hosts sent via SMTP/LMTP.
5939Do not apply
5940.b FallbackMXhost
5941either.
5942.ip 1
5943Don't send null characters ('\\0') to this mailer.
5944.ip 2
5945Don't use ESMTP even if offered; this is useful for broken
5946systems that offer ESMTP but fail on EHLO (without recovering
5947when HELO is tried next).
5948.ip 3
5949Extend the list of characters converted to =XX notation
5950when converting to Quoted-Printable
5951to include those that don't map cleanly between ASCII and EBCDIC.
5952Useful if you have IBM mainframes on site.
5953.ip 5
5954If no aliases are found for this address,
5955pass the address through ruleset 5 for possible alternate resolution.
5956This is intended to forward the mail to an alternate delivery spot.
5957.ip 6
5958Strip headers to seven bits.
5959.ip 7
5960Strip all output to seven bits.
5961This is the default if the
5962.b L
5963flag is set.
5964Note that clearing this option is not
5965sufficient to get full eight bit data passed through
5966.i sendmail .
5967If the
5968.b 7
5969option is set, this is essentially always set,
5970since the eighth bit was stripped on input.
5971Note that this option will only impact messages
5972that didn't have 8\(->7 bit MIME conversions performed.
5973.ip 8
5974If set,
5975it is acceptable to send eight bit data to this mailer;
5976the usual attempt to do 8\(->7 bit MIME conversions will be bypassed.
5977.ip 9
5978If set,
5979do
5980.i limited
59817\(->8 bit MIME conversions.
5982These conversions are limited to text/plain data.
5983.ip :
5984Check addresses to see if they begin
5985.q :include: ;
5986if they do, convert them to the
5987.q *include*
5988mailer.
5989.ip |
5990Check addresses to see if they begin with a `|';
5991if they do, convert them to the
5992.q prog
5993mailer.
5994.ip /
5995Check addresses to see if they begin with a `/';
5996if they do, convert them to the
5997.q *file*
5998mailer.
5999.ip @
6000Look up addresses in the user database.
6001.ip %
94.rm Ve
95.sp
96For Sendmail Version 8.14
97.)l
98.(f
99Sendmail is a trademark of Sendmail, Inc.
100US Patent Numbers 6865671, 6986037.
101.)f
102.sp 2
103.pp
104.i Sendmail \u\s-2TM\s0\d
105implements a general purpose internetwork mail routing facility
106under the UNIX\(rg
107operating system.
108It is not tied to any one transport protocol \*-
109its function may be likened to a crossbar switch,
110relaying messages from one domain into another.
111In the process,
112it can do a limited amount of message header editing
113to put the message into a format that is appropriate
114for the receiving domain.
115All of this is done under the control of a configuration file.
116.pp
117Due to the requirements of flexibility
118for
119.i sendmail ,
120the configuration file can seem somewhat unapproachable.
121However, there are only a few basic configurations
122for most sites,
123for which standard configuration files have been supplied.
124Most other configurations
125can be built by adjusting an existing configuration file
126incrementally.
127.pp
128.i Sendmail
129is based on
130RFC 821 (Simple Mail Transport Protocol),
131RFC 822 (Internet Mail Headers Format),
132RFC 974 (MX routing),
133RFC 1123 (Internet Host Requirements),
134RFC 1413 (Identification server),
135RFC 1652 (SMTP 8BITMIME Extension),
136RFC 1869 (SMTP Service Extensions),
137RFC 1870 (SMTP SIZE Extension),
138RFC 1891 (SMTP Delivery Status Notifications),
139RFC 1892 (Multipart/Report),
140RFC 1893 (Enhanced Mail System Status Codes),
141RFC 1894 (Delivery Status Notifications),
142RFC 1985 (SMTP Service Extension for Remote Message Queue Starting),
143RFC 2033 (Local Message Transmission Protocol),
144RFC 2034 (SMTP Service Extension for Returning Enhanced Error Codes),
145RFC 2045 (MIME),
146RFC 2476 (Message Submission),
147RFC 2487 (SMTP Service Extension for Secure SMTP over TLS),
148RFC 2554 (SMTP Service Extension for Authentication),
149RFC 2821 (Simple Mail Transfer Protocol),
150RFC 2822 (Internet Message Format),
151RFC 2852 (Deliver By SMTP Service Extension),
152and
153RFC 2920 (SMTP Service Extension for Command Pipelining).
154However, since
155.i sendmail
156is designed to work in a wider world,
157in many cases it can be configured to exceed these protocols.
158These cases are described herein.
159.pp
160Although
161.i sendmail
162is intended to run
163without the need for monitoring,
164it has a number of features
165that may be used to monitor or adjust the operation
166under unusual circumstances.
167These features are described.
168.pp
169Section one describes how to do a basic
170.i sendmail
171installation.
172Section two
173explains the day-to-day information you should know
174to maintain your mail system.
175If you have a relatively normal site,
176these two sections should contain sufficient information
177for you to install
178.i sendmail
179and keep it happy.
180Section three
181has information regarding the command line arguments.
182Section four
183describes some parameters that may be safely tweaked.
184Section five
185contains the nitty-gritty information about the configuration
186file.
187This section is for masochists
188and people who must write their own configuration file.
189Section six
190describes configuration that can be done at compile time.
191The appendixes give a brief
192but detailed explanation of a number of features
193not described in the rest of the paper.
194.bp 7
195.sh 1 "BASIC INSTALLATION"
196.pp
197There are two basic steps to installing
198.i sendmail .
199First, you have to compile and install the binary.
200If
201.i sendmail
202has already been ported to your operating system
203that should be simple.
204Second, you must build a run-time configuration file.
205This is a file that
206.i sendmail
207reads when it starts up
208that describes the mailers it knows about,
209how to parse addresses,
210how to rewrite the message header,
211and the settings of various options.
212Although the configuration file can be quite complex,
213a configuration can usually be built
214using an M4-based configuration language.
215Assuming you have the standard
216.i sendmail
217distribution, see
218.i cf/README
219for further information.
220.pp
221The remainder of this section will describe the installation of
222.i sendmail
223assuming you can use one of the existing configurations
224and that the standard installation parameters are acceptable.
225All pathnames and examples
226are given from the root of the
227.i sendmail
228subtree,
229normally
230.i /usr/src/usr.\*(SD/sendmail
231on 4.4BSD-based systems.
232.pp
233Continue with the next section if you need/want to compile
234.i sendmail
235yourself.
236If you have a running binary already on your system,
237you should probably skip to section 1.2.
238.sh 2 "Compiling Sendmail"
239.pp
240All
241.i sendmail
242source is in the
243.i sendmail
244subdirectory.
245To compile sendmail,
246.q cd
247into the
248.i sendmail
249directory and type
250.(b
251\&./Build
252.)b
253This will leave the binary in an appropriately named subdirectory,
254e.g.,
255obj.BSD-OS.2.1.i386.
256It works for multiple object versions
257compiled out of the same directory.
258.sh 3 "Tweaking the Build Invocation"
259.pp
260You can give parameters on the
261.i Build
262command.
263In most cases these are only used when the
264.i obj.*
265directory is first created.
266To restart from scratch, use
267.i -c .
268These commands include:
269.nr ii 0.5i
270.ip "\-L \fIlibdirs\fP"
271A list of directories to search for libraries.
272.ip "\-I \fIincdirs\fP"
273A list of directories to search for include files.
274.ip "\-E \fIenvar\fP=\fIvalue\fP"
275Set an environment variable to an indicated
276.i value
277before compiling.
278.ip "\-c"
279Create a new
280.i obj.*
281tree before running.
282.ip "\-f \fIsiteconfig\fP"
283Read the indicated site configuration file.
284If this parameter is not specified,
285.i Build
286includes
287.i all
288of the files
289.i $BUILDTOOLS/Site/site.$oscf.m4
290and
291.i $BUILDTOOLS/Site/site.config.m4 ,
292where $BUILDTOOLS is normally
293.i \&../devtools
294and $oscf is the same name as used on the
295.i obj.*
296directory.
297See below for a description of the site configuration file.
298.ip "\-S"
299Skip auto-configuration.
300.i Build
301will avoid auto-detecting libraries if this is set.
302All libraries and map definitions must be specified
303in the site configuration file.
304.lp
305Most other parameters are passed to the
306.i make
307program; for details see
308.i $BUILDTOOLS/README .
309.sh 3 "Creating a Site Configuration File"
310.\"XXX
311.pp
312(This section is not yet complete.
313For now, see the file devtools/README for details.)
314See sendmail/README for various compilation flags that can be set.
315.sh 3 "Tweaking the Makefile"
316.pp
317.\" .b "XXX This should all be in the Site Configuration File section."
318.i Sendmail
319supports two different formats
320for the local (on disk) version of databases,
321notably the
322.i aliases
323database.
324At least one of these should be defined if at all possible.
325.nr ii 1i
326.ip NDBM
327The ``new DBM'' format,
328available on nearly all systems around today.
329This was the preferred format prior to 4.4BSD.
330It allows such complex things as multiple databases
331and closing a currently open database.
332.ip NEWDB
333The Berkeley DB package.
334If you have this, use it.
335It allows
336long records,
337multiple open databases,
338real in-memory caching,
339and so forth.
340You can define this in conjunction with
341.sm NDBM ;
342if you do,
343old alias databases are read,
344but when a new database is created it will be in NEWDB format.
345As a nasty hack,
346if you have NEWDB, NDBM, and NIS defined,
347and if the alias file name includes the substring
348.q /yp/ ,
349.i sendmail
350will create both new and old versions of the alias file
351during a
352.i newalias
353command.
354This is required because the Sun NIS/YP system
355reads the DBM version of the alias file.
356It's ugly as sin,
357but it works.
358.lp
359If neither of these are defined,
360.i sendmail
361reads the alias file into memory on every invocation.
362This can be slow and should be avoided.
363There are also several methods for remote database access:
364.ip LDAP
365Lightweight Directory Access Protocol.
366.ip NIS
367Sun's Network Information Services (formerly YP).
368.ip NISPLUS
369Sun's NIS+ services.
370.ip NETINFO
371NeXT's NetInfo service.
372.ip HESIOD
373Hesiod service (from Athena).
374.lp
375Other compilation flags are set in
376.i conf.h
377and should be predefined for you
378unless you are porting to a new environment.
379For more options see
380.i sendmail/README .
381.sh 3 "Compilation and installation"
382.pp
383After making the local system configuration described above,
384You should be able to compile and install the system.
385The script
386.q Build
387is the best approach on most systems:
388.(b
389\&./Build
390.)b
391This will use
392.i uname (1)
393to create a custom Makefile for your environment.
394.pp
395If you are installing in the standard places,
396you should be able to install using
397.(b
398\&./Build install
399.)b
400This should install the binary in
401/usr/\*(SD
402and create links from
403/usr/\*(SB/newaliases
404and
405/usr/\*(SB/mailq
406to
407/usr/\*(SD/sendmail.
408On most systems it will also format and install man pages.
409Notice: as of version 8.12
410.i sendmail
411will no longer be installed set-user-ID root by default.
412If you really want to use the old method, you can specify it as target:
413.(b
414\&./Build install-set-user-id
415.)b
416.sh 2 "Configuration Files"
417.pp
418.i Sendmail
419cannot operate without a configuration file.
420The configuration defines the mail delivery mechanisms understood at this site,
421how to access them,
422how to forward email to remote mail systems,
423and a number of tuning parameters.
424This configuration file is detailed
425in the later portion of this document.
426.pp
427The
428.i sendmail
429configuration can be daunting at first.
430The world is complex,
431and the mail configuration reflects that.
432The distribution includes an m4-based configuration package
433that hides a lot of the complexity.
434See
435.i cf/README
436for details.
437.pp
438Our configuration files are processed by
439.i m4
440to facilitate local customization;
441the directory
442.i cf
443of the
444.i sendmail
445distribution directory
446contains the source files.
447This directory contains several subdirectories:
448.nr ii 1i
449.ip cf
450Both site-dependent and site-independent descriptions of hosts.
451These can be literal host names
452(e.g.,
453.q ucbvax.mc )
454when the hosts are gateways
455or more general descriptions
456(such as
457.q "generic-solaris2.mc"
458as a general description of an SMTP-connected host
459running Solaris 2.x.
460Files ending
461.b \&.mc
462(``M4 Configuration'')
463are the input descriptions;
464the output is in the corresponding
465.b \&.cf
466file.
467The general structure of these files is described below.
468.ip domain
469Site-dependent subdomain descriptions.
470These are tied to the way your organization wants to do addressing.
471For example,
472.b domain/CS.Berkeley.EDU.m4
473is our description for hosts in the CS.Berkeley.EDU subdomain.
474These are referenced using the
475.sm DOMAIN
476.b m4
477macro in the
478.b \&.mc
479file.
480.ip feature
481Definitions of specific features that some particular host in your site
482might want.
483These are referenced using the
484.sm FEATURE
485.b m4
486macro.
487An example feature is
488use_cw_file
489(which tells
490.i sendmail
491to read an /etc/mail/local-host-names file on startup
492to find the set of local names).
493.ip hack
494Local hacks, referenced using the
495.sm HACK
496.b m4
497macro.
498Try to avoid these.
499The point of having them here is to make it clear that they smell.
500.ip m4
501Site-independent
502.i m4 (1)
503include files that have information common to all configuration files.
504This can be thought of as a
505.q #include
506directory.
507.ip mailer
508Definitions of mailers,
509referenced using the
510.sm MAILER
511.b m4
512macro.
513The mailer types that are known in this distribution are
514fax,
515local,
516smtp,
517uucp,
518and usenet.
519For example, to include support for the UUCP-based mailers,
520use
521.q MAILER(uucp) .
522.ip ostype
523Definitions describing various operating system environments
524(such as the location of support files).
525These are referenced using the
526.sm OSTYPE
527.b m4
528macro.
529.ip sh
530Shell files used by the
531.b m4
532build process.
533You shouldn't have to mess with these.
534.ip siteconfig
535Local UUCP connectivity information.
536This directory has been supplanted by the mailertable feature;
537any new configurations should use that feature to do UUCP
538(and other) routing.
539The use of this directory is deprecated.
540.pp
541If you are in a new domain
542(e.g., a company),
543you will probably want to create a
544cf/domain
545file for your domain.
546This consists primarily of relay definitions
547and features you want enabled site-wide:
548for example, Berkeley's domain definition
549defines relays for
550BitNET
551and UUCP.
552These are specific to Berkeley,
553and should be fully-qualified internet-style domain names.
554Please check to make certain they are reasonable for your domain.
555.pp
556Subdomains at Berkeley are also represented in the
557cf/domain
558directory.
559For example,
560the domain
561CS.Berkeley.EDU
562is the Computer Science subdomain,
563EECS.Berkeley.EDU
564is the Electrical Engineering and Computer Sciences subdomain,
565and
566S2K.Berkeley.EDU
567is the Sequoia 2000 subdomain.
568You will probably have to add an entry to this directory
569to be appropriate for your domain.
570.pp
571You will have to use or create
572.b \&.mc
573files in the
574.i cf/cf
575subdirectory for your hosts.
576This is detailed in the
577cf/README
578file.
579.sh 2 "Details of Installation Files"
580.pp
581This subsection describes the files that
582comprise the
583.i sendmail
584installation.
585.sh 3 "/usr/\*(SD/sendmail"
586.pp
587The binary for
588.i sendmail
589is located in /usr/\*(SD\**.
590.(f
591\**This is usually
592/usr/sbin
593on 4.4BSD and newer systems;
594many systems install it in
595/usr/lib.
596I understand it is in /usr/ucblib
597on System V Release 4.
598.)f
599It should be set-group-ID smmsp as described in
600sendmail/SECURITY.
601For security reasons,
602/, /usr, and /usr/\*(SD
603should be owned by root, mode 0755\**.
604.(f
605\**Some vendors ship them owned by bin;
606this creates a security hole that is not actually related to
607.i sendmail .
608Other important directories that should have restrictive ownerships
609and permissions are
610/bin, /usr/bin, /etc, /etc/mail, /usr/etc, /lib, and /usr/lib.
611.)f
612.sh 3 "/etc/mail/sendmail.cf"
613.pp
614This is the main configuration file for
615.i sendmail \**.
616.(f
617\**Actually, the pathname varies depending on the operating system;
618/etc/mail is the preferred directory.
619Some older systems install it in
620.b /usr/lib/sendmail.cf ,
621and I've also seen it in
622.b /usr/ucblib .
623If you want to move this file,
624add -D_PATH_SENDMAILCF=\e"/file/name\e"
625to the flags passed to the C compiler.
626Moving this file is not recommended:
627other programs and scripts know of this location.
628.)f
629This is one of the two non-library file names compiled into
630.i sendmail \**,
631the other is /etc/mail/submit.cf.
632.(f
633\**The system libraries can reference other files;
634in particular, system library subroutines that
635.i sendmail
636calls probably reference
637.i /etc/passwd
638and
639.i /etc/resolv.conf .
640.)f
641.pp
642The configuration file is normally created
643using the distribution files described above.
644If you have a particularly unusual system configuration
645you may need to create a special version.
646The format of this file is detailed in later sections
647of this document.
648.sh 3 "/etc/mail/submit.cf"
649.pp
650This is the configuration file for
651.i sendmail
652when it is used for initial mail submission, in which case
653it is also called ``Mail Submission Program'' (MSP)
654in contrast to ``Mail Transfer Agent'' (MTA).
655Starting with version 8.12,
656.i sendmail
657uses one of two different configuration files based on its operation mode
658(or the new
659.b \-A
660option).
661For initial mail submission, i.e., if one of the options
662.b \-bm
663(default),
664.b \-bs ,
665or
666.b \-t
667is specified, submit.cf is used (if available),
668for other operations sendmail.cf is used.
669Details can be found in
670.i sendmail/SECURITY .
671submit.cf is shipped with sendmail (in cf/cf/) and is installed by default.
672If changes to the configuration need to be made, start with
673cf/cf/submit.mc and follow the instruction in cf/README.
674.sh 3 "/usr/\*(SB/newaliases"
675.pp
676The
677.i newaliases
678command should just be a link to
679.i sendmail :
680.(b
681rm \-f /usr/\*(SB/newaliases
682ln \-s /usr/\*(SD/sendmail /usr/\*(SB/newaliases
683.)b
684This can be installed in whatever search path you prefer
685for your system.
686.sh 3 "/usr/\*(SB/hoststat"
687.pp
688The
689.i hoststat
690command should just be a link to
691.i sendmail ,
692in a fashion similar to
693.i newaliases .
694This command lists the status of the last mail transaction
695with all remote hosts. The
696.b \-v
697flag will prevent the status display from being truncated.
698It functions only when the
699.b HostStatusDirectory
700option is set.
701.sh 3 "/usr/\*(SB/purgestat"
702.pp
703This command is also a link to
704.i sendmail .
705It flushes expired (Timeout.hoststatus) information that is stored in the
706.b HostStatusDirectory
707tree.
708.sh 3 "/var/spool/mqueue"
709.pp
710The directory
711.i /var/spool/mqueue
712should be created to hold the mail queue.
713This directory should be mode 0700
714and owned by root.
715.pp
716The actual path of this directory
717is defined by the
718.b QueueDirectory
719option of the
720.i sendmail.cf
721file.
722To use multiple queues,
723supply a value ending with an asterisk.
724For example,
725.i /var/spool/mqueue/qd*
726will use all of the directories or symbolic links to directories
727beginning with `qd' in
728.i /var/spool/mqueue
729as queue directories.
730Do not change the queue directory structure
731while sendmail is running.
732.pp
733If these directories have subdirectories or symbolic links to directories
734named `qf', `df', and `xf', then these will be used for the different
735queue file types.
736That is, the data files are stored in the `df' subdirectory,
737the transcript files are stored in the `xf' subdirectory, and
738all others are stored in the `qf' subdirectory.
739.pp
740If shared memory support is compiled in,
741.i sendmail
742stores the available diskspace in a shared memory segment
743to make the values readily available to all children without
744incurring system overhead.
745In this case, only the daemon updates the data;
746i.e., the sendmail daemon creates the shared memory segment
747and deletes it if it is terminated.
748To use this,
749.i sendmail
750must have been compiled with support for shared memory
751(-DSM_CONF_SHM)
752and the option
753.b SharedMemoryKey
754must be set.
755Notice: do not use the same key for
756.i sendmail
757invocations with different queue directories
758or different queue group declarations.
759Access to shared memory is not controlled by locks,
760i.e., there is a race condition when data in the shared memory is updated.
761However, since operation of
762.i sendmail
763does not rely on the data in the shared memory, this does not negatively
764influence the behavior.
765.sh 3 "/var/spool/clientmqueue"
766.pp
767The directory
768.i /var/spool/clientmqueue
769should be created to hold the mail queue.
770This directory should be mode 0770
771and owned by user smmsp, group smmsp.
772.pp
773The actual path of this directory
774is defined by the
775.b QueueDirectory
776option of the
777.i submit.cf
778file.
779.sh 3 "/var/spool/mqueue/.hoststat"
780.pp
781This is a typical value for the
782.b HostStatusDirectory
783option,
784containing one file per host
785that this sendmail has chatted with recently.
786It is normally a subdirectory of
787.i mqueue .
788.sh 3 "/etc/mail/aliases*"
789.pp
790The system aliases are held in
791.q /etc/mail/aliases .
792A sample is given in
793.q sendmail/aliases
794which includes some aliases which
795.i must
796be defined:
797.(b
798cp sendmail/aliases /etc/mail/aliases
799.i "edit /etc/mail/aliases"
800.)b
801You should extend this file with any aliases that are apropos to your system.
802.pp
803Normally
804.i sendmail
805looks at a database version of the files,
806stored either in
807.q /etc/mail/aliases.dir
808and
809.q /etc/mail/aliases.pag
810or
811.q /etc/mail/aliases.db
812depending on which database package you are using.
813The actual path of this file
814is defined in the
815.b AliasFile
816option of the
817.i sendmail.cf
818file.
819.pp
820The permissions of the alias file and the database versions
821should be 0640 to prevent local denial of service attacks
822as explained in the top level
823.b README
824in the sendmail distribution.
825If the permissions 0640 are used, be sure that only trusted users belong
826to the group assigned to those files. Otherwise, files should not even
827be group readable.
828.sh 3 "/etc/rc or /etc/init.d/sendmail"
829.pp
830It will be necessary to start up the
831.i sendmail
832daemon when your system reboots.
833This daemon performs two functions:
834it listens on the SMTP socket for connections
835(to receive mail from a remote system)
836and it processes the queue periodically
837to insure that mail gets delivered when hosts come up.
838.pp
839If necessary, add the following lines to
840.q /etc/rc
841(or
842.q /etc/rc.local
843as appropriate)
844in the area where it is starting up the daemons
845on a BSD-base system,
846or on a System-V-based system
847in one of the startup files, typically
848.q /etc/init.d/sendmail :
849.(b
850if [ \-f /usr/\*(SD/sendmail \-a \-f /etc/mail/sendmail.cf ]; then
851 (cd /var/spool/mqueue; rm \-f xf*)
852 /usr/\*(SD/sendmail \-bd \-q30m &
853 echo \-n ' sendmail' >/dev/console
854fi
855.)b
856The
857.q cd
858and
859.q rm
860commands insure that all transcript files have been removed;
861extraneous transcript files may be left around
862if the system goes down in the middle of processing a message.
863The line that actually invokes
864.i sendmail
865has two flags:
866.q \-bd
867causes it to listen on the SMTP port,
868and
869.q \-q30m
870causes it to run the queue every half hour.
871.pp
872Some people use a more complex startup script,
873removing zero length qf/hf/Qf files and df files for which there is no
874qf/hf/Qf file.
875Note this is not advisable.
876For example, see Figure 1
877for an example of a complex script which does this clean up.
878.(z
879.hl
880#!/bin/sh
881# remove zero length qf/hf/Qf files
882for qffile in qf* hf* Qf*
883do
884 if [ \-r $qffile ]
885 then
886 if [ ! \-s $qffile ]
887 then
888 echo \-n " <zero: $qffile>" > /dev/console
889 rm \-f $qffile
890 fi
891 fi
892done
893# rename tf files to be qf if the qf does not exist
894for tffile in tf*
895do
896 qffile=`echo $tffile | sed 's/t/q/'`
897 if [ \-r $tffile \-a ! \-f $qffile ]
898 then
899 echo \-n " <recovering: $tffile>" > /dev/console
900 mv $tffile $qffile
901 else
902 if [ \-f $tffile ]
903 then
904 echo \-n " <extra: $tffile>" > /dev/console
905 rm \-f $tffile
906 fi
907 fi
908done
909# remove df files with no corresponding qf/hf/Qf files
910for dffile in df*
911do
912 qffile=`echo $dffile | sed 's/d/q/'`
913 hffile=`echo $dffile | sed 's/d/h/'`
914 Qffile=`echo $dffile | sed 's/d/Q/'`
915 if [ \-r $dffile \-a ! \-f $qffile \-a ! \-f $hffile \-a ! \-f $Qffile ]
916 then
917 echo \-n " <incomplete: $dffile>" > /dev/console
918 mv $dffile `echo $dffile | sed 's/d/D/'`
919 fi
920done
921# announce files that have been saved during disaster recovery
922for xffile in [A-Z]f*
923do
924 if [ \-f $xffile ]
925 then
926 echo \-n " <panic: $xffile>" > /dev/console
927 fi
928done
929.sp
930.ce
931Figure 1 \(em A complex startup script
932.hl
933.)z
934.sh 3 "/etc/mail/helpfile"
935.pp
936This is the help file used by the SMTP
937.b HELP
938command.
939It should be copied from
940.q sendmail/helpfile :
941.(b
942cp sendmail/helpfile /etc/mail/helpfile
943.)b
944The actual path of this file
945is defined in the
946.b HelpFile
947option of the
948.i sendmail.cf
949file.
950.sh 3 "/etc/mail/statistics"
951.pp
952If you wish to collect statistics
953about your mail traffic,
954you should create the file
955.q /etc/mail/statistics :
956.(b
957cp /dev/null /etc/mail/statistics
958chmod 0600 /etc/mail/statistics
959.)b
960This file does not grow.
961It is printed with the program
962.q mailstats/mailstats.c.
963The actual path of this file
964is defined in the
965.b S
966option of the
967.i sendmail.cf
968file.
969.sh 3 "/usr/\*(SB/mailq"
970.pp
971If
972.i sendmail
973is invoked as
974.q mailq,
975it will simulate the
976.b \-bp
977flag
978(i.e.,
979.i sendmail
980will print the contents of the mail queue;
981see below).
982This should be a link to /usr/\*(SD/sendmail.
983.sh 3 "sendmail.pid"
984.pp
985.i sendmail
986stores its current pid in the file specified by the
987.b PidFile
988option (default is _PATH_SENDMAILPID).
989.i sendmail
990uses
991.b TempFileMode
992(which defaults to 0600) as
993the permissions of that file
994to prevent local denial of service attacks
995as explained in the top level
996.b README
997in the sendmail distribution.
998If the file already exists, then it might be necessary to
999change the permissions accordingly, e.g.,
1000.(b
1001chmod 0600 /var/run/sendmail.pid
1002.)b
1003Note that as of version 8.13, this file is unlinked when
1004.i sendmail
1005exits.
1006As a result of this change, a script such as the following,
1007which may have worked prior to 8.13, will no longer work:
1008.(b
1009# stop & start sendmail
1010PIDFILE=/var/run/sendmail.pid
1011kill `head -1 $PIDFILE`
1012`tail -1 $PIDFILE`
1013.)b
1014because it assumes that the pidfile will still exist even
1015after killing the process to which it refers.
1016Below is a script which will work correctly
1017on both newer and older versions:
1018.(b
1019# stop & start sendmail
1020PIDFILE=/var/run/sendmail.pid
1021pid=`head -1 $PIDFILE`
1022cmd=`tail -1 $PIDFILE`
1023kill $pid
1024$cmd
1025.)b
1026This is just an example script, it does not perform any error checks,
1027e.g., whether the pidfile exists at all.
1028.sh 3 "Map Files"
1029.pp
1030To prevent local denial of service attacks
1031as explained in the top level
1032.b README
1033in the sendmail distribution,
1034the permissions of map files created by
1035.i makemap
1036should be 0640.
1037The use of 0640 implies that only trusted users belong to the group
1038assigned to those files.
1039If those files already exist, then it might be necessary to
1040change the permissions accordingly, e.g.,
1041.(b
1042cd /etc/mail
1043chmod 0640 *.db *.pag *.dir
1044.)b
1045.sh 1 "NORMAL OPERATIONS"
1046.sh 2 "The System Log"
1047.pp
1048The system log is supported by the
1049.i syslogd \|(8)
1050program.
1051All messages from
1052.i sendmail
1053are logged under the
1054.sm LOG_MAIL
1055facility\**.
1056.(f
1057\**Except on Ultrix,
1058which does not support facilities in the syslog.
1059.)f
1060.sh 3 "Format"
1061.pp
1062Each line in the system log
1063consists of a timestamp,
1064the name of the machine that generated it
1065(for logging from several machines
1066over the local area network),
1067the word
1068.q sendmail: ,
1069and a message\**.
1070.(f
1071\**This format may vary slightly if your vendor has changed
1072the syntax.
1073.)f
1074Most messages are a sequence of
1075.i name \c
1076=\c
1077.i value
1078pairs.
1079.pp
1080The two most common lines are logged when a message is processed.
1081The first logs the receipt of a message;
1082there will be exactly one of these per message.
1083Some fields may be omitted if they do not contain interesting information.
1084Fields are:
1085.ip from
1086The envelope sender address.
1087.ip size
1088The size of the message in bytes.
1089.ip class
1090The class (i.e., numeric precedence) of the message.
1091.ip pri
1092The initial message priority (used for queue sorting).
1093.ip nrcpts
1094The number of envelope recipients for this message
1095(after aliasing and forwarding).
1096.ip msgid
1097The message id of the message (from the header).
1098.ip bodytype
1099The message body type (7BIT or 8BITMIME),
1100as determined from the envelope.
1101.ip proto
1102The protocol used to receive this message (e.g., ESMTP or UUCP)
1103.ip daemon
1104The daemon name from the
1105.b DaemonPortOptions
1106setting.
1107.ip relay
1108The machine from which it was received.
1109.lp
1110There is also one line logged per delivery attempt
1111(so there can be several per message if delivery is deferred
1112or there are multiple recipients).
1113Fields are:
1114.ip to
1115A comma-separated list of the recipients to this mailer.
1116.ip ctladdr
1117The ``controlling user'', that is, the name of the user
1118whose credentials we use for delivery.
1119.ip delay
1120The total delay between the time this message was received
1121and the current delivery attempt.
1122.ip xdelay
1123The amount of time needed in this delivery attempt
1124(normally indicative of the speed of the connection).
1125.ip mailer
1126The name of the mailer used to deliver to this recipient.
1127.ip relay
1128The name of the host that actually accepted (or rejected) this recipient.
1129.ip dsn
1130The enhanced error code (RFC 2034) if available.
1131.ip stat
1132The delivery status.
1133.lp
1134Not all fields are present in all messages;
1135for example, the relay is usually not listed for local deliveries.
1136.sh 3 "Levels"
1137.pp
1138If you have
1139.i syslogd \|(8)
1140or an equivalent installed,
1141you will be able to do logging.
1142There is a large amount of information that can be logged.
1143The log is arranged as a succession of levels.
1144At the lowest level
1145only extremely strange situations are logged.
1146At the highest level,
1147even the most mundane and uninteresting events
1148are recorded for posterity.
1149As a convention,
1150log levels under ten
1151are considered generally
1152.q useful;
1153log levels above 64
1154are reserved for debugging purposes.
1155Levels from 11\-64 are reserved for verbose information
1156that some sites might want.
1157.pp
1158A complete description of the log levels
1159is given in section ``Log Level''.
1160.sh 2 "Dumping State"
1161.pp
1162You can ask
1163.i sendmail
1164to log a dump of the open files
1165and the connection cache
1166by sending it a
1167.sm SIGUSR1
1168signal.
1169The results are logged at
1170.sm LOG_DEBUG
1171priority.
1172.sh 2 "The Mail Queues"
1173.pp
1174Mail messages may either be delivered immediately or be held for later
1175delivery.
1176Held messages are placed into a holding directory called a mail queue.
1177.pp
1178A mail message may be queued for these reasons:
1179.bu
1180If a mail message is temporarily undeliverable, it is queued
1181and delivery is attempted later.
1182If the message is addressed to multiple recipients, it is queued
1183only for those recipients to whom delivery is not immediately possible.
1184.bu
1185If the SuperSafe option is set to true,
1186all mail messages are queued while delivery is attempted.
1187.bu
1188If the DeliveryMode option is set to queue-only or defer,
1189all mail is queued, and no immediate delivery is attempted.
1190.bu
1191If the load average becomes higher than the value of the QueueLA option
1192and the
1193.b QueueFactor
1194(\c
1195.b q )
1196option divided by the difference in the current load average and the
1197.b QueueLA
1198option plus one
1199is less than the priority of the message,
1200messages are queued rather than immediately delivered.
1201.bu
1202One or more addresses are marked as expensive and delivery is postponed
1203until the next queue run or one or more address are marked as held via
1204mailer which uses the hold mailer flag.
1205.bu
1206The mail message has been marked as quarantined via a mail filter or
1207rulesets.
1208.bu
1209.sh 3 "Queue Groups and Queue Directories"
1210.pp
1211There are one or more mail queues.
1212Each mail queue belongs to a queue group.
1213There is always a default queue group that is called ``mqueue''
1214(which is where messages go by default unless otherwise specified).
1215The directory or directories which comprise the default queue group
1216are specified by the QueueDirectory option.
1217There are zero or more
1218additional named queue groups declared using the
1219.b Q
1220command in the configuration file.
1221.pp
1222By default, a queued message is placed in the queue group
1223associated with the first recipient in the recipient list.
1224A recipient address is mapped to a queue group as follows.
1225First, if there is a ruleset called ``queuegroup'',
1226and if this ruleset maps the address to a queue group name,
1227then that queue group is chosen.
1228That is, the argument for the ruleset is the recipient address
1229and the result should be
1230.b $#
1231followed by the name of a queue group.
1232Otherwise, if the mailer associated with the address specifies
1233a queue group, then that queue group is chosen.
1234Otherwise, the default queue group is chosen.
1235.pp
1236A message with multiple recipients will be split
1237if different queue groups are chosen
1238by the mapping of recipients to queue groups.
1239.pp
1240When a message is placed in a queue group, and the queue group has
1241more than one queue, a queue is selected randomly.
1242.pp
1243If a message with multiple recipients is placed into a queue group
1244with the 'r' option (maximum number of recipients per message)
1245set to a positive value
1246.i N ,
1247and if there are more than
1248.i N
1249recipients
1250in the message, then the message will be split into multiple messages,
1251each of which have at most
1252.i N
1253recipients.
1254.pp
1255Notice: if multiple queue groups are used, do
1256.b not
1257move queue files around, e.g., into a different queue directory.
1258This may have weird effects and can cause mail not to be delivered.
1259Queue files and directories should be treated as opaque
1260and should not be manipulated directly.
1261.sh 3 "Queue Runs"
1262.pp
1263.i sendmail
1264has two different ways to process the queue(s).
1265The first one is to start queue runners after certain intervals
1266(``normal'' queue runners),
1267the second one is to keep queue runner processes around
1268(``persistent'' queue runners).
1269How to select either of these types is discussed in the appendix
1270``COMMAND LINE FLAGS''.
1271Persistent queue runners have the advantage that no new processes
1272need to be spawned at certain intervals; they just sleep for
1273a specified time after they finished a queue run.
1274Another advantage of persistent queue runners is that only one process
1275belonging to a workgroup (a workgroup is a set of queue groups)
1276collects the data for a queue run
1277and then multiple queue runner may go ahead using that data.
1278This can significantly reduce the disk I/O necessary to read the
1279queue files compared to starting multiple queue runners directly.
1280Their disadvantage is that a new queue run is only started
1281after all queue runners belonging to a group finished their tasks.
1282In case one of the queue runners tries delivery to a slow recipient site
1283at the end of a queue run, the next queue run may be substantially delayed.
1284In general this should be smoothed out due to the distribution of
1285those slow jobs, however, for sites with small number of
1286queue entries this might introduce noticable delays.
1287In general, persistent queue runners are only useful for
1288sites with big queues.
1289.sh 3 "Manual Intervention"
1290.pp
1291Under normal conditions the mail queue will be processed transparently.
1292However, you may find that manual intervention is sometimes necessary.
1293For example,
1294if a major host is down for a period of time
1295the queue may become clogged.
1296Although
1297.i sendmail
1298ought to recover gracefully when the host comes up,
1299you may find performance unacceptably bad in the meantime.
1300In that case you want to check the content of the queue
1301and manipulate it as explained in the next two sections.
1302.sh 3 "Printing the queue"
1303.pp
1304The contents of the queue(s) can be printed
1305using the
1306.i mailq
1307command
1308(or by specifying the
1309.b \-bp
1310flag to
1311.i sendmail ):
1312.(b
1313mailq
1314.)b
1315This will produce a listing of the queue id's,
1316the size of the message,
1317the date the message entered the queue,
1318and the sender and recipients.
1319If shared memory support is compiled in,
1320the flag
1321.b \-bP
1322can be used to print the number of entries in the queue(s),
1323provided a process updates the data.
1324However, as explained earlier, the output might be slightly wrong,
1325since access to the shared memory is not locked.
1326For example,
1327``unknown number of entries''
1328might be shown.
1329The internal counters are updated after each queue run
1330to the correct value again.
1331.sh 3 "Forcing the queue"
1332.pp
1333.i Sendmail
1334should run the queue automatically at intervals.
1335When using multiple queues,
1336a separate process will by default be created to
1337run each of the queues
1338unless the queue run is initiated by a user
1339with the verbose flag.
1340The algorithm is to read and sort the queue,
1341and then to attempt to process all jobs in order.
1342When it attempts to run the job,
1343.i sendmail
1344first checks to see if the job is locked.
1345If so, it ignores the job.
1346.pp
1347There is no attempt to insure that only one queue processor
1348exists at any time,
1349since there is no guarantee that a job cannot take forever
1350to process
1351(however,
1352.i sendmail
1353does include heuristics to try to abort jobs
1354that are taking absurd amounts of time;
1355technically, this violates RFC 821, but is blessed by RFC 1123).
1356Due to the locking algorithm,
1357it is impossible for one job to freeze the entire queue.
1358However,
1359an uncooperative recipient host
1360or a program recipient
1361that never returns
1362can accumulate many processes in your system.
1363Unfortunately,
1364there is no completely general way to solve this.
1365.pp
1366In some cases,
1367you may find that a major host going down
1368for a couple of days
1369may create a prohibitively large queue.
1370This will result in
1371.i sendmail
1372spending an inordinate amount of time
1373sorting the queue.
1374This situation can be fixed by moving the queue to a temporary place
1375and creating a new queue.
1376The old queue can be run later when the offending host returns to service.
1377.pp
1378To do this,
1379it is acceptable to move the entire queue directory:
1380.(b
1381cd /var/spool
1382mv mqueue omqueue; mkdir mqueue; chmod 0700 mqueue
1383.)b
1384You should then kill the existing daemon
1385(since it will still be processing in the old queue directory)
1386and create a new daemon.
1387.pp
1388To run the old mail queue, issue the following command:
1389.(b
1390/usr/\*(SD/sendmail \-C /etc/mail/queue.cf \-q
1391.)b
1392The
1393.b \-C
1394flag specifies an alternate configuration file
1395.b queue.cf
1396which should refer to the moved queue directory
1397.(b
1398O QueueDirectory=/var/spool/omqueue
1399.)b
1400and the
1401.b \-q
1402flag says to just run every job in the queue.
1403You can also specify the moved queue directory on the command line
1404.(b
1405/usr/\*(SD/sendmail \-oQ/var/spool/omqueue \-q
1406.)b
1407but this requires that you do not have
1408queue groups in the configuration file,
1409because those are not subdirectories of the moved directory.
1410See the section about ``Queue Group Declaration'' for details;
1411you most likely need a different configuration file to correctly deal
1412with this problem.
1413However, a proper configuration of queue groups should avoid
1414filling up queue directories, so you shouldn't run into
1415this problem.
1416If you have a tendency toward voyeurism,
1417you can use the
1418.b \-v
1419flag to watch what is going on.
1420.pp
1421When the queue is finally emptied,
1422you can remove the directory:
1423.(b
1424rmdir /var/spool/omqueue
1425.)b
1426.sh 3 "Quarantined Queue Items"
1427.pp
1428It is possible to "quarantine" mail messages,
1429otherwise known as envelopes.
1430Envelopes (queue files) are stored but not considered for delivery or
1431display unless the "quarantine" state of the envelope is undone or
1432delivery or display of quarantined items is requested.
1433Quarantined messages are tagged by using a different name for the queue
1434file, 'hf' instead of 'qf', and by adding the quarantine reason to the
1435queue file.
1436.pp
1437Delivery or display of quarantined items can be requested using the
1438.b \-qQ
1439flag to
1440.i sendmail
1441or
1442.i mailq .
1443Additionally, messages already in the queue can be quarantined or
1444unquarantined using the new
1445.b \-Q
1446flag to sendmail.
1447For example,
1448.(b
1449sendmail -Qreason -q[!][I|R|S][matchstring]
1450.)b
1451Quarantines the normal queue items matching the criteria specified by the
1452.b "-q[!][I|R|S][matchstring]"
1453using the reason given on the
1454.b \-Q
1455flag.
1456Likewise,
1457.(b
1458sendmail -qQ -Q[reason] -q[!][I|R|S|Q][matchstring]
1459.)b
1460Change the quarantine reason for the quarantined items matching the
1461criteria specified by the
1462.b "-q[!][I|R|S|Q][matchstring]"
1463using the reason given on the
1464.b \-Q
1465flag.
1466If there is no reason,
1467 unquarantine the matching items and make them normal queue items.
1468Note that the
1469.b \-qQ
1470flag tells sendmail to operate on quarantined items instead of normal items.
1471.sh 2 "Disk Based Connection Information"
1472.pp
1473.i Sendmail
1474stores a large amount of information about each remote system it
1475has connected to in memory. It is possible to preserve some
1476of this information on disk as well, by using the
1477.b HostStatusDirectory
1478option, so that it may be shared between several invocations of
1479.i sendmail .
1480This allows mail to be queued immediately or skipped during a queue run if
1481there has been a recent failure in connecting to a remote machine.
1482Note: information about a remote system is stored in a file
1483whose pathname consists of the components of the hostname in reverse order.
1484For example, the information for
1485.b host.example.com
1486is stored in
1487.b com./example./host .
1488For top-level domains like
1489.b com
1490this can create a large number of subdirectories
1491which on some filesystems can exhaust some limits.
1492Moreover, the performance of lookups in directory with thousands of entries
1493can be fairly slow depending on the filesystem implementation.
1494.pp
1495Additionally enabling
1496.b SingleThreadDelivery
1497has the added effect of single-threading mail delivery to a destination.
1498This can be quite helpful
1499if the remote machine is running an SMTP server that is easily overloaded
1500or cannot accept more than a single connection at a time,
1501but can cause some messages to be punted to a future queue run.
1502It also applies to
1503.i all
1504hosts, so setting this because you have one machine on site
1505that runs some software that is easily overrun
1506can cause mail to other hosts to be slowed down.
1507If this option is set,
1508you probably want to set the
1509.b MinQueueAge
1510option as well and run the queue fairly frequently;
1511this way jobs that are skipped because another
1512.i sendmail
1513is talking to the same host will be tried again quickly
1514rather than being delayed for a long time.
1515.pp
1516The disk based host information is stored in a subdirectory of the
1517.b mqueue
1518directory called
1519.b \&.hoststat \**.
1520.(f
1521\**This is the usual value of the
1522.b HostStatusDirectory
1523option;
1524it can, of course, go anywhere you like in your filesystem.
1525.)f
1526Removing this directory and its subdirectories has an effect similar to
1527the
1528.i purgestat
1529command and is completely safe.
1530However,
1531.i purgestat
1532only removes expired (Timeout.hoststatus) data.
1533The information in these directories can
1534be perused with the
1535.i hoststat
1536command, which will indicate the host name, the last access, and the
1537status of that access.
1538An asterisk in the left most column indicates that a
1539.i sendmail
1540process currently has the host locked for mail delivery.
1541.pp
1542The disk based connection information is treated the same way as memory based
1543connection information for the purpose of timeouts.
1544By default, information about host failures is valid for 30 minutes.
1545This can be adjusted with
1546the
1547.b Timeout.hoststatus
1548option.
1549.pp
1550The connection information stored on disk may be expired at any time
1551with the
1552.i purgestat
1553command or by invoking sendmail with the
1554.b \-bH
1555switch.
1556The connection information may be viewed with the
1557.i hoststat
1558command or by invoking sendmail with the
1559.b \-bh
1560switch.
1561.sh 2 "The Service Switch"
1562.pp
1563The implementation of certain system services
1564such as host and user name lookup
1565is controlled by the service switch.
1566If the host operating system supports such a switch,
1567and sendmail knows about it,
1568.i sendmail
1569will use the native version.
1570Ultrix, Solaris, and DEC OSF/1 are examples of such systems\**.
1571.(f
1572\**HP-UX 10 has service switch support,
1573but since the APIs are apparently not available in the libraries
1574.i sendmail
1575does not use the native service switch in this release.
1576.)f
1577.pp
1578If the underlying operating system does not support a service switch
1579(e.g., SunOS 4.X, HP-UX, BSD)
1580then
1581.i sendmail
1582will provide a stub implementation.
1583The
1584.b ServiceSwitchFile
1585option points to the name of a file that has the service definitions.
1586Each line has the name of a service
1587and the possible implementations of that service.
1588For example, the file:
1589.(b
1590hosts dns files nis
1591aliases files nis
1592.)b
1593will ask
1594.i sendmail
1595to look for hosts in the Domain Name System first.
1596If the requested host name is not found, it tries local files,
1597and if that fails it tries NIS.
1598Similarly, when looking for aliases
1599it will try the local files first followed by NIS.
1600.pp
1601Notice: since
1602.i sendmail
1603must access MX records for correct operation, it will use
1604DNS if it is configured in the
1605.b ServiceSwitchFile
1606file.
1607Hence an entry like
1608.(b
1609hosts files dns
1610.)b
1611will not avoid DNS lookups even if a host can be found
1612in /etc/hosts.
1613.pp
1614Service switches are not completely integrated.
1615For example, despite the fact that the host entry listed in the above example
1616specifies to look in NIS,
1617on SunOS this won't happen because the system implementation of
1618.i gethostbyname \|(3)
1619doesn't understand this.
1620.sh 2 "The Alias Database"
1621.pp
1622After recipient addresses are read from the SMTP connection
1623or command line
1624they are parsed by ruleset 0,
1625which must resolve to a
1626{\c
1627.i mailer ,
1628.i host ,
1629.i address }
1630triple.
1631If the flags selected by the
1632.i mailer
1633include the
1634.b A
1635(aliasable) flag,
1636the
1637.i address
1638part of the triple is looked up as the key
1639(i.e., the left hand side)
1640in the alias database.
1641If there is a match, the address is deleted from the send queue
1642and all addresses on the right hand side of the alias
1643are added in place of the alias that was found.
1644This is a recursive operation,
1645so aliases found in the right hand side of the alias
1646are similarly expanded.
1647.pp
1648The alias database exists in two forms.
1649One is a text form,
1650maintained in the file
1651.i /etc/mail/aliases.
1652The aliases are of the form
1653.(b
1654name: name1, name2, ...
1655.)b
1656Only local names may be aliased;
1657e.g.,
1658.(b
1659eric@prep.ai.MIT.EDU: eric@CS.Berkeley.EDU
1660.)b
1661will not have the desired effect
1662(except on prep.ai.MIT.EDU,
1663and they probably don't want me)\**.
1664.(f
1665\**Actually, any mailer that has the `A' mailer flag set
1666will permit aliasing;
1667this is normally limited to the local mailer.
1668.)f
1669Aliases may be continued by starting any continuation lines
1670with a space or a tab or by putting a backslash directly before
1671the newline.
1672Blank lines and lines beginning with a sharp sign
1673(\c
1674.q # )
1675are comments.
1676.pp
1677The second form is processed by the
1678.i ndbm \|(3)\**
1679.(f
1680\**The
1681.i gdbm
1682package does not work.
1683.)f
1684or the Berkeley DB library.
1685This form is in the file
1686.i /etc/mail/aliases.db
1687(if using NEWDB)
1688or
1689.i /etc/mail/aliases.dir
1690and
1691.i /etc/mail/aliases.pag
1692(if using NDBM).
1693This is the form that
1694.i sendmail
1695actually uses to resolve aliases.
1696This technique is used to improve performance.
1697.pp
1698The control of search order is actually set by the service switch.
1699Essentially, the entry
1700.(b
1701O AliasFile=switch:aliases
1702.)b
1703is always added as the first alias entry;
1704also, the first alias file name without a class
1705(e.g., without
1706.q nis:
1707on the front)
1708will be used as the name of the file for a ``files'' entry
1709in the aliases switch.
1710For example, if the configuration file contains
1711.(b
1712O AliasFile=/etc/mail/aliases
1713.)b
1714and the service switch contains
1715.(b
1716aliases nis files nisplus
1717.)b
1718then aliases will first be searched in the NIS database,
1719then in /etc/mail/aliases,
1720then in the NIS+ database.
1721.pp
1722You can also use
1723.sm NIS -based
1724alias files.
1725For example, the specification:
1726.(b
1727O AliasFile=/etc/mail/aliases
1728O AliasFile=nis:mail.aliases@my.nis.domain
1729.)b
1730will first search the /etc/mail/aliases file
1731and then the map named
1732.q mail.aliases
1733in
1734.q my.nis.domain .
1735Warning: if you build your own
1736.sm NIS -based
1737alias files,
1738be sure to provide the
1739.b \-l
1740flag to
1741.i makedbm (8)
1742to map upper case letters in the keys to lower case;
1743otherwise, aliases with upper case letters in their names
1744won't match incoming addresses.
1745.pp
1746Additional flags can be added after the colon
1747exactly like a
1748.b K
1749line \(em for example:
1750.(b
1751O AliasFile=nis:\-N mail.aliases@my.nis.domain
1752.)b
1753will search the appropriate NIS map and always include null bytes in the key.
1754Also:
1755.(b
1756O AliasFile=nis:\-f mail.aliases@my.nis.domain
1757.)b
1758will prevent sendmail from downcasing the key before the alias lookup.
1759.sh 3 "Rebuilding the alias database"
1760.pp
1761The
1762.i hash
1763or
1764.i dbm
1765version of the database
1766may be rebuilt explicitly by executing the command
1767.(b
1768newaliases
1769.)b
1770This is equivalent to giving
1771.i sendmail
1772the
1773.b \-bi
1774flag:
1775.(b
1776/usr/\*(SD/sendmail \-bi
1777.)b
1778.pp
1779If you have multiple aliases databases specified,
1780the
1781.b \-bi
1782flag rebuilds all the database types it understands
1783(for example, it can rebuild NDBM databases but not NIS databases).
1784.sh 3 "Potential problems"
1785.pp
1786There are a number of problems that can occur
1787with the alias database.
1788They all result from a
1789.i sendmail
1790process accessing the DBM version
1791while it is only partially built.
1792This can happen under two circumstances:
1793One process accesses the database
1794while another process is rebuilding it,
1795or the process rebuilding the database dies
1796(due to being killed or a system crash)
1797before completing the rebuild.
1798.pp
1799Sendmail has three techniques to try to relieve these problems.
1800First, it ignores interrupts while rebuilding the database;
1801this avoids the problem of someone aborting the process
1802leaving a partially rebuilt database.
1803Second,
1804it locks the database source file during the rebuild \(em
1805but that may not work over NFS or if the file is unwritable.
1806Third,
1807at the end of the rebuild
1808it adds an alias of the form
1809.(b
1810@: @
1811.)b
1812(which is not normally legal).
1813Before
1814.i sendmail
1815will access the database,
1816it checks to insure that this entry exists\**.
1817.(f
1818\**The
1819.b AliasWait
1820option is required in the configuration
1821for this action to occur.
1822This should normally be specified.
1823.)f
1824.sh 3 "List owners"
1825.pp
1826If an error occurs on sending to a certain address,
1827say
1828.q \fIx\fP ,
1829.i sendmail
1830will look for an alias
1831of the form
1832.q owner-\fIx\fP
1833to receive the errors.
1834This is typically useful
1835for a mailing list
1836where the submitter of the list
1837has no control over the maintenance of the list itself;
1838in this case the list maintainer would be the owner of the list.
1839For example:
1840.(b
1841unix-wizards: eric@ucbarpa, wnj@monet, nosuchuser,
1842 sam@matisse
1843owner-unix-wizards: unix-wizards-request
1844unix-wizards-request: eric@ucbarpa
1845.)b
1846would cause
1847.q eric@ucbarpa
1848to get the error that will occur
1849when someone sends to
1850unix-wizards
1851due to the inclusion of
1852.q nosuchuser
1853on the list.
1854.pp
1855List owners also cause the envelope sender address to be modified.
1856The contents of the owner alias are used if they point to a single user,
1857otherwise the name of the alias itself is used.
1858For this reason, and to obey Internet conventions,
1859the
1860.q owner-
1861address normally points at the
1862.q -request
1863address; this causes messages to go out with the typical Internet convention
1864of using ``\c
1865.i list -request''
1866as the return address.
1867.sh 2 "User Information Database"
1868.pp
1869This option is deprecated, use virtusertable and genericstable instead
1870as explained in
1871.i cf/README .
1872If you have a version of
1873.i sendmail
1874with the user information database
1875compiled in,
1876and you have specified one or more databases using the
1877.b U
1878option,
1879the databases will be searched for a
1880.i user :maildrop
1881entry.
1882If found, the mail will be sent to the specified address.
1883.sh 2 "Per-User Forwarding (.forward Files)"
1884.pp
1885As an alternative to the alias database,
1886any user may put a file with the name
1887.q .forward
1888in his or her home directory.
1889If this file exists,
1890.i sendmail
1891redirects mail for that user
1892to the list of addresses listed in the .forward file.
1893Note that aliases are fully expanded before forward files are referenced.
1894For example, if the home directory for user
1895.q mckusick
1896has a .forward file with contents:
1897.(b
1898mckusick@ernie
1899kirk@calder
1900.)b
1901then any mail arriving for
1902.q mckusick
1903will be redirected to the specified accounts.
1904.pp
1905Actually, the configuration file defines a sequence of filenames to check.
1906By default, this is the user's .forward file,
1907but can be defined to be more generally using the
1908.b ForwardPath
1909option.
1910If you change this,
1911you will have to inform your user base of the change;
1912\&.forward is pretty well incorporated into the collective subconscious.
1913.sh 2 "Special Header Lines"
1914.pp
1915Several header lines have special interpretations
1916defined by the configuration file.
1917Others have interpretations built into
1918.i sendmail
1919that cannot be changed without changing the code.
1920These built-ins are described here.
1921.sh 3 "Errors-To:"
1922.pp
1923If errors occur anywhere during processing,
1924this header will cause error messages to go to
1925the listed addresses.
1926This is intended for mailing lists.
1927.pp
1928The Errors-To: header was created in the bad old days
1929when UUCP didn't understand the distinction between an envelope and a header;
1930this was a hack to provide what should now be passed
1931as the envelope sender address.
1932It should go away.
1933It is only used if the
1934.b UseErrorsTo
1935option is set.
1936.pp
1937The Errors-To: header is officially deprecated
1938and will go away in a future release.
1939.sh 3 "Apparently-To:"
1940.pp
1941RFC 822 requires at least one recipient field
1942(To:, Cc:, or Bcc: line)
1943in every message.
1944If a message comes in with no recipients listed in the message
1945then
1946.i sendmail
1947will adjust the header based on the
1948.q NoRecipientAction
1949option.
1950One of the possible actions is to add an
1951.q "Apparently-To:"
1952header line for any recipients it is aware of.
1953.pp
1954The Apparently-To: header is non-standard
1955and is both deprecated and strongly discouraged.
1956.sh 3 "Precedence"
1957.pp
1958The Precedence: header can be used as a crude control of message priority.
1959It tweaks the sort order in the queue
1960and can be configured to change the message timeout values.
1961The precedence of a message also controls how
1962delivery status notifications (DSNs)
1963are processed for that message.
1964.sh 2 "IDENT Protocol Support"
1965.pp
1966.i Sendmail
1967supports the IDENT protocol as defined in RFC 1413.
1968Note that the RFC states
1969a client should wait at least 30 seconds for a response.
1970The default Timeout.ident is 5 seconds
1971as many sites have adopted the practice of dropping IDENT queries.
1972This has lead to delays processing mail.
1973Although this enhances identification
1974of the author of an email message
1975by doing a ``call back'' to the originating system to include
1976the owner of a particular TCP connection
1977in the audit trail
1978it is in no sense perfect;
1979a determined forger can easily spoof the IDENT protocol.
1980The following description is excerpted from RFC 1413:
1981.ba +5
1982.lp
19836. Security Considerations
1984.lp
1985The information returned by this protocol is at most as trustworthy
1986as the host providing it OR the organization operating the host. For
1987example, a PC in an open lab has few if any controls on it to prevent
1988a user from having this protocol return any identifier the user
1989wants. Likewise, if the host has been compromised the information
1990returned may be completely erroneous and misleading.
1991.lp
1992The Identification Protocol is not intended as an authorization or
1993access control protocol. At best, it provides some additional
1994auditing information with respect to TCP connections. At worst, it
1995can provide misleading, incorrect, or maliciously incorrect
1996information.
1997.lp
1998The use of the information returned by this protocol for other than
1999auditing is strongly discouraged. Specifically, using Identification
2000Protocol information to make access control decisions - either as the
2001primary method (i.e., no other checks) or as an adjunct to other
2002methods may result in a weakening of normal host security.
2003.lp
2004An Identification server may reveal information about users,
2005entities, objects or processes which might normally be considered
2006private. An Identification server provides service which is a rough
2007analog of the CallerID services provided by some phone companies and
2008many of the same privacy considerations and arguments that apply to
2009the CallerID service apply to Identification. If you wouldn't run a
2010"finger" server due to privacy considerations you may not want to run
2011this protocol.
2012.ba
2013.lp
2014In some cases your system may not work properly with IDENT support
2015due to a bug in the TCP/IP implementation.
2016The symptoms will be that for some hosts
2017the SMTP connection will be closed
2018almost immediately.
2019If this is true or if you do not want to use IDENT,
2020you should set the IDENT timeout to zero;
2021this will disable the IDENT protocol.
2022.sh 1 "ARGUMENTS"
2023.pp
2024The complete list of arguments to
2025.i sendmail
2026is described in detail in Appendix A.
2027Some important arguments are described here.
2028.sh 2 "Queue Interval"
2029.pp
2030The amount of time between forking a process
2031to run through the queue is defined by the
2032.b \-q
2033flag.
2034If you run with delivery mode set to
2035.b i
2036or
2037.b b
2038this can be relatively large, since it will only be relevant
2039when a host that was down comes back up.
2040If you run in
2041.b q
2042mode it should be relatively short,
2043since it defines the maximum amount of time that a message
2044may sit in the queue.
2045(See also the MinQueueAge option.)
2046.pp
2047RFC 1123 section 5.3.1.1 says that this value should be at least 30 minutes
2048(although that probably doesn't make sense if you use ``queue-only'' mode).
2049.pp
2050Notice: the meaning of the interval time depends on whether normal
2051queue runners or persistent queue runners are used.
2052For the former, it is the time between subsequent starts of a queue run.
2053For the latter, it is the time sendmail waits after a persistent queue
2054runner has finished its work to start the next one.
2055Hence for persistent queue runners this interval should be very low,
2056typically no more than two minutes.
2057.sh 2 "Daemon Mode"
2058.pp
2059If you allow incoming mail over an IPC connection,
2060you should have a daemon running.
2061This should be set by your
2062.i /etc/rc
2063file using the
2064.b \-bd
2065flag.
2066The
2067.b \-bd
2068flag and the
2069.b \-q
2070flag may be combined in one call:
2071.(b
2072/usr/\*(SD/sendmail \-bd \-q30m
2073.)b
2074.pp
2075An alternative approach is to invoke sendmail from
2076.i inetd (8)
2077(use the
2078.b \-bs \ \-Am
2079flags to ask sendmail to speak SMTP on its standard input and output
2080and to run as MTA).
2081This works and allows you to wrap
2082.i sendmail
2083in a TCP wrapper program,
2084but may be a bit slower since the configuration file
2085has to be re-read on every message that comes in.
2086If you do this, you still need to have a
2087.i sendmail
2088running to flush the queue:
2089.(b
2090/usr/\*(SD/sendmail \-q30m
2091.)b
2092.sh 2 "Forcing the Queue"
2093.pp
2094In some cases you may find that the queue has gotten clogged for some reason.
2095You can force a queue run
2096using the
2097.b \-q
2098flag (with no value).
2099It is entertaining to use the
2100.b \-v
2101flag (verbose)
2102when this is done to watch what happens:
2103.(b
2104/usr/\*(SD/sendmail \-q \-v
2105.)b
2106.pp
2107You can also limit the jobs to those with a particular queue identifier,
2108recipient, sender, quarantine reason, or queue group
2109using one of the queue modifiers.
2110For example,
2111.q \-qRberkeley
2112restricts the queue run to jobs that have the string
2113.q berkeley
2114somewhere in one of the recipient addresses.
2115Similarly,
2116.q \-qSstring
2117limits the run to particular senders,
2118.q \-qIstring
2119limits it to particular queue identifiers, and
2120.q \-qQstring
2121limits it to particular quarantined reasons and only operated on
2122quarantined queue items, and
2123.q \-qGstring
2124limits it to a particular queue group.
2125The named queue group will be run even if it is set to have 0 runners.
2126You may also place an
2127.b !
2128before the
2129.b I
2130or
2131.b R
2132or
2133.b S
2134or
2135.b Q
2136to indicate that jobs are limited to not including a particular queue
2137identifier, recipient or sender.
2138For example,
2139.q \-q!Rseattle
2140limits the queue run to jobs that do not have the string
2141.q seattle
2142somewhere in one of the recipient addresses.
2143Should you need to terminate the queue jobs currently active then a SIGTERM
2144to the parent of the process (or processes) will cleanly stop the jobs.
2145.sh 2 "Debugging"
2146.pp
2147There are a fairly large number of debug flags
2148built into
2149.i sendmail .
2150Each debug flag has a category and a level.
2151Higher levels increase the level of debugging activity;
2152in most cases, this means to print out more information.
2153The convention is that levels greater than nine are
2154.q absurd,
2155i.e.,
2156they print out so much information that you wouldn't normally
2157want to see them except for debugging that particular piece of code.
2158.pp
2159You should
2160.b never
2161run a production sendmail server in debug mode.
2162Many of the debug flags will result in debug output being sent over the
2163SMTP channel unless the option
2164.b \-D
2165is used.
2166This will confuse many mail programs.
2167However, for testing purposes, it can be useful
2168when sending mail manually via
2169telnet to the port you are using while debugging.
2170.pp
2171A debug category is either an integer, like 42,
2172or a name, like ANSI.
2173You can specify a range of numeric debug categories
2174using the syntax 17-42.
2175You can specify a set of named debug categories using
2176a glob pattern like
2177.q sm_trace_* .
2178At present, only
2179.q *
2180and
2181.q ?
2182are supported in these glob patterns.
2183.pp
2184Debug flags are set using the
2185.b \-d
2186option;
2187the syntax is:
2188.(b
2189.ta \w'debug-categories:M 'u
2190debug-flag: \fB\-d\fP debug-list
2191debug-list: debug-option [ , debug-option ]*
2192debug-option: debug-categories [ . debug-level ]
2193debug-categories: integer | integer \- integer | category-pattern
2194category-pattern: [a-zA-Z_*?][a-zA-Z0-9_*?]*
2195debug-level: integer
2196.)b
2197where spaces are for reading ease only.
2198For example,
2199.(b
2200\-d12 Set category 12 to level 1
2201\-d12.3 Set category 12 to level 3
2202\-d3\-17 Set categories 3 through 17 to level 1
2203\-d3\-17.4 Set categories 3 through 17 to level 4
2204\-dANSI Set category ANSI to level 1
2205\-dsm_trace_*.3 Set all named categories matching sm_trace_* to level 3
2206.)b
2207For a complete list of the available debug flags
2208you will have to look at the code
2209and the
2210.i TRACEFLAGS
2211file in the sendmail distribution
2212(they are too dynamic to keep this document up to date).
2213For a list of named debug categories in the sendmail binary, use
2214.(b
2215ident /usr/sbin/sendmail | grep Debug
2216.)b
2217.sh 2 "Changing the Values of Options"
2218.pp
2219Options can be overridden using the
2220.b \-o
2221or
2222.b \-O
2223command line flags.
2224For example,
2225.(b
2226/usr/\*(SD/sendmail \-oT2m
2227.)b
2228sets the
2229.b T
2230(timeout) option to two minutes
2231for this run only;
2232the equivalent line using the long option name is
2233.(b
2234/usr/\*(SD/sendmail -OTimeout.queuereturn=2m
2235.)b
2236.pp
2237Some options have security implications.
2238Sendmail allows you to set these,
2239but relinquishes its set-user-ID or set-group-ID permissions thereafter\**.
2240.(f
2241\**That is, it sets its effective uid to the real uid;
2242thus, if you are executing as root,
2243as from root's crontab file or during system startup
2244the root permissions will still be honored.
2245.)f
2246.sh 2 "Trying a Different Configuration File"
2247.pp
2248An alternative configuration file
2249can be specified using the
2250.b \-C
2251flag; for example,
2252.(b
2253/usr/\*(SD/sendmail \-Ctest.cf \-oQ/tmp/mqueue
2254.)b
2255uses the configuration file
2256.i test.cf
2257instead of the default
2258.i /etc/mail/sendmail.cf.
2259If the
2260.b \-C
2261flag has no value
2262it defaults to
2263.i sendmail.cf
2264in the current directory.
2265.pp
2266.i Sendmail
2267gives up set-user-ID root permissions
2268(if it has been installed set-user-ID root)
2269when you use this flag, so it is common to use a publicly writable directory
2270(such as /tmp)
2271as the queue directory (QueueDirectory or Q option) while testing.
2272.sh 2 "Logging Traffic"
2273.pp
2274Many SMTP implementations do not fully implement the protocol.
2275For example, some personal computer based SMTPs
2276do not understand continuation lines in reply codes.
2277These can be very hard to trace.
2278If you suspect such a problem, you can set traffic logging using the
2279.b \-X
2280flag.
2281For example,
2282.(b
2283/usr/\*(SD/sendmail \-X /tmp/traffic \-bd
2284.)b
2285will log all traffic in the file
2286.i /tmp/traffic .
2287.pp
2288This logs a lot of data very quickly and should
2289.b NEVER
2290be used
2291during normal operations.
2292After starting up such a daemon,
2293force the errant implementation to send a message to your host.
2294All message traffic in and out of
2295.i sendmail ,
2296including the incoming SMTP traffic,
2297will be logged in this file.
2298.sh 2 "Testing Configuration Files"
2299.pp
2300When you build a configuration table,
2301you can do a certain amount of testing
2302using the
2303.q "test mode"
2304of
2305.i sendmail .
2306For example,
2307you could invoke
2308.i sendmail
2309as:
2310.(b
2311sendmail \-bt \-Ctest.cf
2312.)b
2313which would read the configuration file
2314.q test.cf
2315and enter test mode.
2316In this mode,
2317you enter lines of the form:
2318.(b
2319rwset address
2320.)b
2321where
2322.i rwset
2323is the rewriting set you want to use
2324and
2325.i address
2326is an address to apply the set to.
2327Test mode shows you the steps it takes
2328as it proceeds,
2329finally showing you the address it ends up with.
2330You may use a comma separated list of rwsets
2331for sequential application of rules to an input.
2332For example:
2333.(b
23343,1,21,4 monet:bollard
2335.)b
2336first applies ruleset three to the input
2337.q monet:bollard.
2338Ruleset one is then applied to the output of ruleset three,
2339followed similarly by rulesets twenty-one and four.
2340.pp
2341If you need more detail,
2342you can also use the
2343.q \-d21
2344flag to turn on more debugging.
2345For example,
2346.(b
2347sendmail \-bt \-d21.99
2348.)b
2349turns on an incredible amount of information;
2350a single word address
2351is probably going to print out several pages worth of information.
2352.pp
2353You should be warned that internally,
2354.i sendmail
2355applies ruleset 3 to all addresses.
2356In test mode
2357you will have to do that manually.
2358For example, older versions allowed you to use
2359.(b
23600 bruce@broadcast.sony.com
2361.)b
2362This version requires that you use:
2363.(b
23643,0 bruce@broadcast.sony.com
2365.)b
2366.pp
2367As of version 8.7,
2368some other syntaxes are available in test mode:
2369.nr ii 1i
2370.ip \&.D\|x\|value
2371defines macro
2372.i x
2373to have the indicated
2374.i value .
2375This is useful when debugging rules that use the
2376.b $& \c
2377.i x
2378syntax.
2379.ip \&.C\|c\|value
2380adds the indicated
2381.i value
2382to class
2383.i c .
2384.ip \&=S\|ruleset
2385dumps the contents of the indicated ruleset.
2386.ip \-d\|debug-spec
2387is equivalent to the command-line flag.
2388.lp
2389Version 8.9 introduced more features:
2390.nr ii 1i
2391.ip ?
2392shows a help message.
2393.ip =M
2394display the known mailers.
2395.ip $m
2396print the value of macro m.
2397.ip $=c
2398print the contents of class c.
2399.ip /mx\ host
2400returns the MX records for `host'.
2401.ip /parse\ address
2402parse address, returning the value of
2403.i crackaddr ,
2404and the parsed address.
2405.ip /try\ mailer\ addr
2406rewrite address into the form it will have when
2407presented to the indicated mailer.
2408.ip /tryflags\ flags
2409set flags used by parsing. The flags can be `H' for
2410Header or `E' for Envelope, and `S' for Sender or `R'
2411for Recipient. These can be combined, `HR' sets
2412flags for header recipients.
2413.ip /canon\ hostname
2414try to canonify hostname.
2415.ip /map\ mapname\ key
2416look up `key' in the indicated `mapname'.
2417.ip /quit
2418quit address test mode.
2419.lp
2420.sh 2 "Persistent Host Status Information"
2421.pp
2422When
2423.b HostStatusDirectory
2424is enabled,
2425information about the status of hosts is maintained on disk
2426and can thus be shared between different instantiations of
2427.i sendmail .
2428The status of the last connection with each remote host
2429may be viewed with the command:
2430.(b
2431sendmail \-bh
2432.)b
2433This information may be flushed with the command:
2434.(b
2435sendmail \-bH
2436.)b
2437Flushing the information prevents new
2438.i sendmail
2439processes from loading it,
2440but does not prevent existing processes from using the status information
2441that they already have.
2442.sh 1 "TUNING"
2443.pp
2444There are a number of configuration parameters
2445you may want to change,
2446depending on the requirements of your site.
2447Most of these are set
2448using an option in the configuration file.
2449For example,
2450the line
2451.q "O Timeout.queuereturn=5d"
2452sets option
2453.q Timeout.queuereturn
2454to the value
2455.q 5d
2456(five days).
2457.pp
2458Most of these options have appropriate defaults for most sites.
2459However,
2460sites having very high mail loads may find they need to tune them
2461as appropriate for their mail load.
2462In particular,
2463sites experiencing a large number of small messages,
2464many of which are delivered to many recipients,
2465may find that they need to adjust the parameters
2466dealing with queue priorities.
2467.pp
2468All versions of
2469.i sendmail
2470prior to 8.7
2471had single character option names.
2472As of 8.7,
2473options have long (multi-character names).
2474Although old short names are still accepted,
2475most new options do not have short equivalents.
2476.pp
2477This section only describes the options you are most likely
2478to want to tweak;
2479read section
2480.\"XREF
24815
2482for more details.
2483.sh 2 "Timeouts"
2484.pp
2485All time intervals are set
2486using a scaled syntax.
2487For example,
2488.q 10m
2489represents ten minutes, whereas
2490.q 2h30m
2491represents two and a half hours.
2492The full set of scales is:
2493.(b
2494.ta 4n
2495s seconds
2496m minutes
2497h hours
2498d days
2499w weeks
2500.)b
2501.sh 3 "Queue interval"
2502.pp
2503The argument to the
2504.b \-q
2505flag specifies how often a sub-daemon will run the queue.
2506This is typically set to between fifteen minutes and one hour.
2507If not set, or set to zero,
2508the queue will not be run automatically.
2509RFC 1123 section 5.3.1.1 recommends that this be at least 30 minutes.
2510Should you need to terminate the queue jobs currently active then a SIGTERM
2511to the parent of the process (or processes) will cleanly stop the jobs.
2512.sh 3 "Read timeouts"
2513.pp
2514Timeouts all have option names
2515.q Timeout.\fIsuboption\fP .
2516Most of these control SMTP operations.
2517The recognized
2518.i suboption s,
2519their default values, and the minimum values
2520allowed by RFC 2821 section 4.5.3.2 (or RFC 1123 section 5.3.2) are:
2521.nr ii 1i
2522.ip connect
2523The time to wait for an SMTP connection to open
2524(the
2525.i connect (2)
2526system call)
2527[0, unspecified].
2528If zero, uses the kernel default.
2529In no case can this option extend the timeout
2530longer than the kernel provides, but it can shorten it.
2531This is to get around kernels that provide an absurdly long connection timeout
2532(90 minutes in one case).
2533.ip iconnect
2534The same as
2535.i connect,
2536except it applies only to the initial attempt to connect to a host
2537for a given message
2538[0, unspecified].
2539The concept is that this should be very short (a few seconds);
2540hosts that are well connected and responsive will thus be serviced immediately.
2541Hosts that are slow will not hold up other deliveries in the initial
2542delivery attempt.
2543.ip aconnect
2544[0, unspecified]
2545The overall timeout waiting for all connection for a single delivery
2546attempt to succeed.
2547If 0, no overall limit is applied.
2548This can be used to restrict the total amount of time trying to connect to
2549a long list of host that could accept an e-mail for the recipient.
2550This timeout does not apply to
2551.b FallbackMXhost ,
2552i.e., if the time is exhausted, the
2553.b FallbackMXhost
2554is tried next.
2555.ip initial
2556The wait for the initial 220 greeting message
2557[5m, 5m].
2558.ip helo
2559The wait for a reply from a HELO or EHLO command
2560[5m, unspecified].
2561This may require a host name lookup, so
2562five minutes is probably a reasonable minimum.
2563.ip mail\(dg
2564The wait for a reply from a MAIL command
2565[10m, 5m].
2566.ip rcpt\(dg
2567The wait for a reply from a RCPT command
2568[1h, 5m].
2569This should be long
2570because it could be pointing at a list
2571that takes a long time to expand
2572(see below).
2573.ip datainit\(dg
2574The wait for a reply from a DATA command
2575[5m, 2m].
2576.ip datablock\(dg\(dd
2577The wait for reading a data block
2578(that is, the body of the message).
2579[1h, 3m].
2580This should be long because it also applies to programs
2581piping input to
2582.i sendmail
2583which have no guarantee of promptness.
2584.ip datafinal\(dg
2585The wait for a reply from the dot terminating a message.
2586[1h, 10m].
2587If this is shorter than the time actually needed
2588for the receiver to deliver the message,
2589duplicates will be generated.
2590This is discussed in RFC 1047.
2591.ip rset
2592The wait for a reply from a RSET command
2593[5m, unspecified].
2594.ip quit
2595The wait for a reply from a QUIT command
2596[2m, unspecified].
2597.ip misc
2598The wait for a reply from miscellaneous (but short) commands
2599such as NOOP (no-operation) and VERB (go into verbose mode).
2600[2m, unspecified].
2601.ip command\(dg\(dd
2602In server SMTP,
2603the time to wait for another command.
2604[1h, 5m].
2605.ip ident\(dd
2606The timeout waiting for a reply to an IDENT query
2607[5s\**, unspecified].
2608.(f
2609\**On some systems the default is zero to turn the protocol off entirely.
2610.)f
2611.ip lhlo
2612The wait for a reply to an LMTP LHLO command
2613[2m, unspecified].
2614.ip auth
2615The timeout for a reply in an SMTP AUTH dialogue
2616[10m, unspecified].
2617.ip starttls
2618The timeout for a reply to an SMTP STARTTLS command and the TLS handshake
2619[1h, unspecified].
2620.ip fileopen\(dd
2621The timeout for opening .forward and :include: files [60s, none].
2622.ip control\(dd
2623The timeout for a complete control socket transaction to complete [2m, none].
2624.ip hoststatus\(dd
2625How long status information about a host
2626(e.g., host down)
2627will be cached before it is considered stale
2628[30m, unspecified].
2629.ip resolver.retrans\(dd
2630The resolver's
2631retransmission time interval
2632(in seconds)
2633[varies].
2634Sets both
2635.i Timeout.resolver.retrans.first
2636and
2637.i Timeout.resolver.retrans.normal .
2638.ip resolver.retrans.first\(dd
2639The resolver's
2640retransmission time interval
2641(in seconds)
2642for the first attempt to
2643deliver a message
2644[varies].
2645.ip resolver.retrans.normal\(dd
2646The resolver's
2647retransmission time interval
2648(in seconds)
2649for all resolver lookups
2650except the first delivery attempt
2651[varies].
2652.ip resolver.retry\(dd
2653The number of times
2654to retransmit a resolver query.
2655Sets both
2656.i Timeout.resolver.retry.first
2657and
2658.i Timeout.resolver.retry.normal
2659[varies].
2660.ip resolver.retry.first\(dd
2661The number of times
2662to retransmit a resolver query
2663for the first attempt
2664to deliver a message
2665[varies].
2666.ip resolver.retry.normal\(dd
2667The number of times
2668to retransmit a resolver query
2669for all resolver lookups
2670 except the first delivery attempt
2671[varies].
2672.lp
2673For compatibility with old configuration files,
2674if no
2675.i suboption
2676is specified,
2677all the timeouts marked with
2678.DG
2679(\(dg) are set to the indicated value.
2680All but those marked with
2681.DD
2682(\(dd) apply to client SMTP.
2683.pp
2684For example, the lines:
2685.(b
2686O Timeout.command=25m
2687O Timeout.datablock=3h
2688.)b
2689sets the server SMTP command timeout to 25 minutes
2690and the input data block timeout to three hours.
2691.sh 3 "Message timeouts"
2692.pp
2693After sitting in the queue for a few days,
2694an undeliverable message will time out.
2695This is to insure that at least the sender is aware
2696of the inability to send a message.
2697The timeout is typically set to five days.
2698It is sometimes considered convenient to also send a warning message
2699if the message is in the queue longer than a few hours
2700(assuming you normally have good connectivity;
2701if your messages normally took several hours to send
2702you wouldn't want to do this because it wouldn't be an unusual event).
2703These timeouts are set using the
2704.b Timeout.queuereturn
2705and
2706.b Timeout.queuewarn
2707options in the configuration file
2708(previously both were set using the
2709.b T
2710option).
2711.pp
2712If the message is submitted using the
2713.sm NOTIFY
2714.sm SMTP
2715extension,
2716warning messages will only be sent if
2717.sm NOTIFY=DELAY
2718is specified.
2719The queuereturn and queuewarn timeouts
2720can be further qualified with a tag based on the Precedence: field
2721in the message;
2722they must be one of
2723.q urgent
2724(indicating a positive non-zero precedence),
2725.q normal
2726(indicating a zero precedence), or
2727.q non-urgent
2728(indicating negative precedences).
2729For example, setting
2730.q Timeout.queuewarn.urgent=1h
2731sets the warning timeout for urgent messages only
2732to one hour.
2733The default if no precedence is indicated
2734is to set the timeout for all precedences.
2735If the message has a normal (default) precedence
2736and it is a delivery status notification (DSN),
2737.b Timeout.queuereturn.dsn
2738and
2739.b Timeout.queuewarn.dsn
2740can be used to give an alternative warn and return time
2741for DSNs.
2742The value "now" can be used for
2743-O Timeout.queuereturn
2744to return entries immediately during a queue run,
2745e.g., to bounce messages independent of their time in the queue.
2746.pp
2747Since these options are global,
2748and since you cannot know
2749.i "a priori"
2750how long another host outside your domain will be down,
2751a five day timeout is recommended.
2752This allows a recipient to fix the problem even if it occurs
2753at the beginning of a long weekend.
2754RFC 1123 section 5.3.1.1 says that this parameter
2755should be ``at least 4\-5 days''.
2756.pp
2757The
2758.b Timeout.queuewarn
2759value can be piggybacked on the
2760.b T
2761option by indicating a time after which
2762a warning message should be sent;
2763the two timeouts are separated by a slash.
2764For example, the line
2765.(b
2766OT5d/4h
2767.)b
2768causes email to fail after five days,
2769but a warning message will be sent after four hours.
2770This should be large enough that the message will have been tried
2771several times.
2772.sh 2 "Forking During Queue Runs"
2773.pp
2774By setting the
2775.b ForkEachJob
2776(\c
2777.b Y )
2778option,
2779.i sendmail
2780will fork before each individual message
2781while running the queue.
2782This option was used with earlier releases to prevent
2783.i sendmail
2784from consuming large amounts of memory.
2785It should no longer be necessary with
2786.i sendmail
27878.12.
2788If the
2789.b ForkEachJob
2790option is not set,
2791.i sendmail
2792will keep track of hosts that are down during a queue run,
2793which can improve performance dramatically.
2794.pp
2795If the
2796.b ForkEachJob
2797option is set,
2798.i sendmail
2799cannot use connection caching.
2800.sh 2 "Queue Priorities"
2801.pp
2802Every message is assigned a priority when it is first instantiated,
2803consisting of the message size (in bytes)
2804offset by the message class
2805(which is determined from the Precedence: header)
2806times the
2807.q "work class factor"
2808and the number of recipients times the
2809.q "work recipient factor."
2810The priority is used to order the queue.
2811Higher numbers for the priority mean that the message will be processed later
2812when running the queue.
2813.pp
2814The message size is included so that large messages are penalized
2815relative to small messages.
2816The message class allows users to send
2817.q "high priority"
2818messages by including a
2819.q Precedence:
2820field in their message;
2821the value of this field is looked up in the
2822.b P
2823lines of the configuration file.
2824Since the number of recipients affects the amount of load a message presents
2825to the system,
2826this is also included into the priority.
2827.pp
2828The recipient and class factors
2829can be set in the configuration file using the
2830.b RecipientFactor
2831(\c
2832.b y )
2833and
2834.b ClassFactor
2835(\c
2836.b z )
2837options respectively.
2838They default to 30000 (for the recipient factor)
2839and 1800
2840(for the class factor).
2841The initial priority is:
2842.EQ
2843pri = msgsize - (class times bold ClassFactor) + (nrcpt times bold RecipientFactor)
2844.EN
2845(Remember, higher values for this parameter actually mean
2846that the job will be treated with lower priority.)
2847.pp
2848The priority of a job can also be adjusted each time it is processed
2849(that is, each time an attempt is made to deliver it)
2850using the
2851.q "work time factor,"
2852set by the
2853.b RetryFactor
2854(\c
2855.b Z )
2856option.
2857This is added to the priority,
2858so it normally decreases the precedence of the job,
2859on the grounds that jobs that have failed many times
2860will tend to fail again in the future.
2861The
2862.b RetryFactor
2863option defaults to 90000.
2864.sh 2 "Load Limiting"
2865.pp
2866.i Sendmail
2867can be asked to queue (but not deliver) mail
2868if the system load average gets too high using the
2869.b QueueLA
2870(\c
2871.b x )
2872option.
2873When the load average exceeds the value of the
2874.b QueueLA
2875option, the delivery mode is set to
2876.b q
2877(queue only) if the
2878.b QueueFactor
2879(\c
2880.b q )
2881option divided by the difference in the current load average and the
2882.b QueueLA
2883option plus one
2884is less than the priority of the message \(em
2885that is, the message is queued iff:
2886.EQ
2887pri > { bold QueueFactor } over { LA - { bold QueueLA } + 1 }
2888.EN
2889The
2890.b QueueFactor
2891option defaults to 600000,
2892so each point of load average is worth 600000 priority points
2893(as described above).
2894.pp
2895For drastic cases, the
2896.b RefuseLA
2897(\c
2898.b X )
2899option defines a load average at which
2900.i sendmail
2901will refuse to accept network connections.
2902Locally generated mail, i.e., mail which is not submitted via SMTP
2903(including incoming UUCP mail),
2904is still accepted.
2905Notice that the MSP submits mail to the MTA via SMTP, and hence
2906mail will be queued in the client queue in such a case.
2907Therefore it is necessary to run the client mail queue periodically.
2908.sh 2 "Resource Limits"
2909.pp
2910.i Sendmail
2911has several parameters to control resource usage.
2912Besides those mentionted in the previous section, there are at least
2913.b MaxDaemonChildren ,
2914.b ConnectionRateThrottle ,
2915.b MaxQueueChildren ,
2916and
2917.b MaxRunnersPerQueue .
2918The latter two limit the number of
2919.i sendmail
2920processes that operate on the queue.
2921These are discussed in the section
2922``Queue Group Declaration''.
2923The former two can be used to limit the number of incoming connections.
2924Their appropriate values depend on the host operating system and
2925the hardware, e.g., amount of memory.
2926In many situations it might be useful to set limits to prevent
2927to have too many
2928.i sendmail
2929processes, however, these limits can be abused to mount a
2930denial of service attack.
2931For example, if
2932.b MaxDaemonChildren=10
2933then an attacker needs to open only 10 SMTP sessions to the server,
2934leave them idle for most of the time,
2935and no more connections will be accepted.
2936If this option is set then the timeouts used in a SMTP session
2937should be lowered from their default values to
2938their minimum values as specified in RFC 2821 and listed in
2939section
2940.\"XREF
29414.1.2.
2942.sh 2 "Measures against Denial of Service Attacks"
2943.pp
2944.i Sendmail
2945has some built-in measures against simple denial of service (DoS) attacks.
2946The SMTP server by default slows down if too many bad commands are
2947issued or if some commands are repeated too often within a session.
2948Details can be found in the source file
2949.b sendmail/srvrsmtp.c
2950by looking for the macro definitions of
2951.b MAXBADCOMMANDS ,
2952.b MAXNOOPCOMMANDS ,
2953.b MAXHELOCOMMANDS ,
2954.b MAXVRFYCOMMANDS ,
2955and
2956.b MAXETRNCOMMANDS .
2957If an SMTP command is issued more often than the corresponding
2958.b MAXcmdCOMMANDS
2959value, then the response is delayed exponentially,
2960starting with a sleep time of one second,
2961up to a maximum of four minutes (as defined by
2962.b MAXTIMEOUT ).
2963If the option
2964.b MaxDaemonChildren
2965is set to a value greater than zero,
2966then this could make a DoS attack even worse since it
2967keeps a connection open longer than necessary.
2968Therefore a connection is terminated with a 421 SMTP reply code
2969if the number of commands exceeds the limit by a factor of two and
2970.b MAXBADCOMMANDS
2971is set to a value greater than zero (the default is 25).
2972.sh 2 "Delivery Mode"
2973.pp
2974There are a number of delivery modes that
2975.i sendmail
2976can operate in,
2977set by the
2978.b DeliveryMode
2979(\c
2980.b d )
2981configuration option.
2982These modes
2983specify how quickly mail will be delivered.
2984Legal modes are:
2985.(b
2986.ta 4n
2987i deliver interactively (synchronously)
2988b deliver in background (asynchronously)
2989q queue only (don't deliver)
2990d defer delivery attempts (don't deliver)
2991.)b
2992There are tradeoffs.
2993Mode
2994.q i
2995gives the sender the quickest feedback,
2996but may slow down some mailers and
2997is hardly ever necessary.
2998Mode
2999.q b
3000delivers promptly but
3001can cause large numbers of processes
3002if you have a mailer that takes a long time to deliver a message.
3003Mode
3004.q q
3005minimizes the load on your machine,
3006but means that delivery may be delayed for up to the queue interval.
3007Mode
3008.q d
3009is identical to mode
3010.q q
3011except that it also prevents lookups in maps including the
3012.b -D
3013flag from working during the initial queue phase;
3014it is intended for ``dial on demand'' sites where DNS lookups
3015might cost real money.
3016Some simple error messages
3017(e.g., host unknown during the SMTP protocol)
3018will be delayed using this mode.
3019Mode
3020.q b
3021is the usual default.
3022.pp
3023If you run in mode
3024.q q
3025(queue only),
3026.q d
3027(defer),
3028or
3029.q b
3030(deliver in background)
3031.i sendmail
3032will not expand aliases and follow .forward files
3033upon initial receipt of the mail.
3034This speeds up the response to RCPT commands.
3035Mode
3036.q i
3037should not be used by the SMTP server.
3038.sh 2 "Log Level"
3039.pp
3040The level of logging can be set for
3041.i sendmail .
3042The default using a standard configuration table is level 9.
3043The levels are as follows:
3044.nr ii 0.5i
3045.ip 0
3046Minimal logging.
3047.ip 1
3048Serious system failures and potential security problems.
3049.ip 2
3050Lost communications (network problems) and protocol failures.
3051.ip 3
3052Other serious failures, malformed addresses, transient forward/include
3053errors, connection timeouts.
3054.ip 4
3055Minor failures, out of date alias databases, connection rejections
3056via check_ rulesets.
3057.ip 5
3058Message collection statistics.
3059.ip 6
3060Creation of error messages,
3061VRFY and EXPN commands.
3062.ip 7
3063Delivery failures (host or user unknown, etc.).
3064.ip 8
3065Successful deliveries and alias database rebuilds.
3066.ip 9
3067Messages being deferred
3068(due to a host being down, etc.).
3069.ip 10
3070Database expansion (alias, forward, and userdb lookups)
3071and authentication information.
3072.ip 11
3073NIS errors and end of job processing.
3074.ip 12
3075Logs all SMTP connections.
3076.ip 13
3077Log bad user shells, files with improper permissions, and other
3078questionable situations.
3079.ip 14
3080Logs refused connections.
3081.ip 15
3082Log all incoming and outgoing SMTP commands.
3083.ip 20
3084Logs attempts to run locked queue files.
3085These are not errors,
3086but can be useful to note if your queue appears to be clogged.
3087.ip 30
3088Lost locks (only if using lockf instead of flock).
3089.lp
3090Additionally,
3091values above 64 are reserved for extremely verbose debugging output.
3092No normal site would ever set these.
3093.sh 2 "File Modes"
3094.pp
3095The modes used for files depend on what functionality you want
3096and the level of security you require.
3097In many cases
3098.i sendmail
3099does careful checking of the modes
3100of files and directories
3101to avoid accidental compromise;
3102if you want to make it possible to have group-writable support files
3103you may need to use the
3104.b DontBlameSendmail
3105option to turn off some of these checks.
3106.sh 3 "To suid or not to suid?"
3107.pp
3108.i Sendmail
3109is no longer installed
3110set-user-ID to root.
3111sendmail/SECURITY
3112explains how to configure and install
3113.i sendmail
3114without set-user-ID to root but set-group-ID
3115which is the default configuration starting with 8.12.
3116.pp
3117The daemon usually runs as root, unless other measures are taken.
3118At the point where
3119.i sendmail
3120is about to
3121.i exec \|(2)
3122a mailer,
3123it checks to see if the userid is zero (root);
3124if so,
3125it resets the userid and groupid to a default
3126(set by the
3127.b U=
3128equate in the mailer line;
3129if that is not set, the
3130.b DefaultUser
3131option is used).
3132This can be overridden
3133by setting the
3134.b S
3135flag to the mailer
3136for mailers that are trusted
3137and must be called as root.
3138However,
3139this will cause mail processing
3140to be accounted
3141(using
3142.i sa \|(8))
3143to root
3144rather than to the user sending the mail.
3145.pp
3146A middle ground is to set the
3147.b RunAsUser
3148option.
3149This causes
3150.i sendmail
3151to become the indicated user as soon as it has done the startup
3152that requires root privileges
3153(primarily, opening the
3154.sm SMTP
3155socket).
3156If you use
3157.b RunAsUser ,
3158the queue directory
3159(normally
3160.i /var/spool/mqueue )
3161should be owned by that user,
3162and all files and databases
3163(including user
3164.i \&.forward
3165files,
3166alias files,
3167:include: files,
3168and external databases)
3169must be readable by that user.
3170Also, since sendmail will not be able to change its uid,
3171delivery to programs or files will be marked as unsafe,
3172e.g., undeliverable,
3173in
3174.i \&.forward ,
3175aliases,
3176and :include: files.
3177Administrators can override this by setting the
3178.b DontBlameSendmail
3179option to the setting
3180.b NonRootSafeAddr .
3181.b RunAsUser
3182is probably best suited for firewall configurations
3183that don't have regular user logins.
3184If the option is used on a system which performs local delivery,
3185then the local delivery agent must have the proper permissions
3186(i.e., usually set-user-ID root)
3187since it will be invoked by the
3188.b RunAsUser ,
3189not by root.
3190.sh 3 "Turning off security checks"
3191.pp
3192.i Sendmail
3193is very particular about the modes of files that it reads or writes.
3194For example, by default it will refuse to read most files
3195that are group writable
3196on the grounds that they might have been tampered with
3197by someone other than the owner;
3198it will even refuse to read files in group writable directories.
3199Also, sendmail will refuse to create a new aliases database in an
3200unsafe directory. You can get around this by manually creating the
3201database file as a trusted user ahead of time and then rebuilding the
3202aliases database with
3203.b newaliases .
3204.pp
3205If you are
3206.i quite
3207sure that your configuration is safe and you want
3208.i sendmail
3209to avoid these security checks,
3210you can turn off certain checks using the
3211.b DontBlameSendmail
3212option.
3213This option takes one or more names that disable checks.
3214In the descriptions that follow,
3215.q "unsafe directory"
3216means a directory that is writable by anyone other than the owner.
3217The values are:
3218.nr ii 0.5i
3219.ip Safe
3220No special handling.
3221.ip AssumeSafeChown
3222Assume that the
3223.i chown
3224system call is restricted to root.
3225Since some versions of UNIX permit regular users
3226to give away their files to other users on some filesystems,
3227.i sendmail
3228often cannot assume that a given file was created by the owner,
3229particularly when it is in a writable directory.
3230You can set this flag if you know that file giveaway is restricted
3231on your system.
3232.ip ClassFileInUnsafeDirPath
3233When reading class files (using the
3234.b F
3235line in the configuration file),
3236allow files that are in unsafe directories.
3237.ip DontWarnForwardFileInUnsafeDirPath
3238Prevent logging of
3239unsafe directory path warnings
3240for non-existent forward files.
3241.ip ErrorHeaderInUnsafeDirPath
3242Allow the file named in the
3243.b ErrorHeader
3244option to be in an unsafe directory.
3245.ip FileDeliveryToHardLink
3246Allow delivery to files that are hard links.
3247.ip FileDeliveryToSymLink
3248Allow delivery to files that are symbolic links.
3249.ip ForwardFileInGroupWritableDirPath
3250Allow
3251.i \&.forward
3252files in group writable directories.
3253.ip ForwardFileInUnsafeDirPath
3254Allow
3255.i \&.forward
3256files in unsafe directories.
3257.ip ForwardFileInUnsafeDirPathSafe
3258Allow a
3259.i \&.forward
3260file that is in an unsafe directory to include references
3261to program and files.
3262.ip GroupReadableKeyFile
3263Accept a group-readable key file for STARTTLS.
3264.ip GroupReadableSASLDBFile
3265Accept a group-readable Cyrus SASL password file.
3266.ip GroupWritableAliasFile
3267Allow group-writable alias files.
3268.ip GroupWritableDirPathSafe
3269Change the definition of
3270.q "unsafe directory"
3271to consider group-writable directories to be safe.
3272World-writable directories are always unsafe.
3273.ip GroupWritableForwardFile
3274Allow group writable
3275.i \&.forward
3276files.
3277.ip GroupWritableForwardFileSafe
3278Accept group-writable
3279.i \&.forward
3280files as safe for program and file delivery.
3281.ip GroupWritableIncludeFile
3282Allow group wriable
3283.i :include:
3284files.
3285.ip GroupWritableIncludeFileSafe
3286Accept group-writable
3287.i :include:
3288files as safe for program and file delivery.
3289.ip GroupWritableSASLDBFile
3290Accept a group-writable Cyrus SASL password file.
3291.ip HelpFileInUnsafeDirPath
3292Allow the file named in the
3293.b HelpFile
3294option to be in an unsafe directory.
3295.ip IncludeFileInGroupWritableDirPath
3296Allow
3297.i :include:
3298files in group writable directories.
3299.ip IncludeFileInUnsafeDirPath
3300Allow
3301.i :include:
3302files in unsafe directories.
3303.ip IncludeFileInUnsafeDirPathSafe
3304Allow a
3305.i :include:
3306file that is in an unsafe directory to include references
3307to program and files.
3308.ip InsufficientEntropy
3309Try to use STARTTLS even if the PRNG for OpenSSL is not properly seeded
3310despite the security problems.
3311.ip LinkedAliasFileInWritableDir
3312Allow an alias file that is a link in a writable directory.
3313.ip LinkedClassFileInWritableDir
3314Allow class files that are links in writable directories.
3315.ip LinkedForwardFileInWritableDir
3316Allow
3317.i \&.forward
3318files that are links in writable directories.
3319.ip LinkedIncludeFileInWritableDir
3320Allow
3321.i :include:
3322files that are links in writable directories.
3323.ip LinkedMapInWritableDir
3324Allow map files that are links in writable directories.
3325This includes alias database files.
3326.ip LinkedServiceSwitchFileInWritableDir
3327Allow the service switch file to be a link
3328even if the directory is writable.
3329.ip MapInUnsafeDirPath
3330Allow maps (e.g.,
3331.i hash ,
3332.i btree ,
3333and
3334.i dbm
3335files)
3336in unsafe directories.
3337This includes alias database files.
3338.ip NonRootSafeAddr
3339Do not mark file and program deliveries as unsafe
3340if sendmail is not running with root privileges.
3341.ip RunProgramInUnsafeDirPath
3342Run programs that are in writable directories without logging a warning.
3343.ip RunWritableProgram
3344Run programs that are group- or world-writable without logging a warning.
3345.ip TrustStickyBit
3346Allow group or world writable directories
3347if the sticky bit is set on the directory.
3348Do not set this on systems which do not honor
3349the sticky bit on directories.
3350.ip WorldWritableAliasFile
3351Accept world-writable alias files.
3352.ip WorldWritableForwardfile
3353Allow world writable
3354.i \&.forward
3355files.
3356.ip WorldWritableIncludefile
3357Allow world wriable
3358.i :include:
3359files.
3360.ip WriteMapToHardLink
3361Allow writes to maps that are hard links.
3362.ip WriteMapToSymLink
3363Allow writes to maps that are symbolic links.
3364.ip WriteStatsToHardLink
3365Allow the status file to be a hard link.
3366.ip WriteStatsToSymLink
3367Allow the status file to be a symbolic link.
3368.sh 2 "Connection Caching"
3369.pp
3370When processing the queue,
3371.i sendmail
3372will try to keep the last few open connections open
3373to avoid startup and shutdown costs.
3374This only applies to IPC and LPC connections.
3375.pp
3376When trying to open a connection
3377the cache is first searched.
3378If an open connection is found, it is probed to see if it is still active
3379by sending a
3380.sm RSET
3381command.
3382It is not an error if this fails;
3383instead, the connection is closed and reopened.
3384.pp
3385Two parameters control the connection cache.
3386The
3387.b ConnectionCacheSize
3388(\c
3389.b k )
3390option defines the number of simultaneous open connections
3391that will be permitted.
3392If it is set to zero,
3393connections will be closed as quickly as possible.
3394The default is one.
3395This should be set as appropriate for your system size;
3396it will limit the amount of system resources that
3397.i sendmail
3398will use during queue runs.
3399Never set this higher than 4.
3400.pp
3401The
3402.b ConnectionCacheTimeout
3403(\c
3404.b K )
3405option specifies the maximum time that any cached connection
3406will be permitted to idle.
3407When the idle time exceeds this value
3408the connection is closed.
3409This number should be small
3410(under ten minutes)
3411to prevent you from grabbing too many resources
3412from other hosts.
3413The default is five minutes.
3414.sh 2 "Name Server Access"
3415.pp
3416Control of host address lookups is set by the
3417.b hosts
3418service entry in your service switch file.
3419If you are on a system that has built-in service switch support
3420(e.g., Ultrix, Solaris, or DEC OSF/1)
3421then your system is probably configured properly already.
3422Otherwise,
3423.i sendmail
3424will consult the file
3425.b /etc/mail/service.switch ,
3426which should be created.
3427.i Sendmail
3428only uses two entries:
3429.b hosts
3430and
3431.b aliases ,
3432although system routines may use other services
3433(notably the
3434.b passwd
3435service for user name lookups by
3436.i getpwname ).
3437.pp
3438However, some systems (such as SunOS 4.X)
3439will do DNS lookups
3440regardless of the setting of the service switch entry.
3441In particular, the system routine
3442.i gethostbyname (3)
3443is used to look up host names,
3444and many vendor versions try some combination of DNS, NIS,
3445and file lookup in /etc/hosts
3446without consulting a service switch.
3447.i Sendmail
3448makes no attempt to work around this problem,
3449and the DNS lookup will be done anyway.
3450If you do not have a nameserver configured at all,
3451such as at a UUCP-only site,
3452.i sendmail
3453will get a
3454.q "connection refused"
3455message when it tries to connect to the name server.
3456If the
3457.b hosts
3458switch entry has the service
3459.q dns
3460listed somewhere in the list,
3461.i sendmail
3462will interpret this to mean a temporary failure
3463and will queue the mail for later processing;
3464otherwise, it ignores the name server data.
3465.pp
3466The same technique is used to decide whether to do MX lookups.
3467If you want MX support, you
3468.i must
3469have
3470.q dns
3471listed as a service in the
3472.b hosts
3473switch entry.
3474.pp
3475The
3476.b ResolverOptions
3477(\c
3478.b I )
3479option allows you to tweak name server options.
3480The command line takes a series of flags as documented in
3481.i resolver (3)
3482(with the leading
3483.q RES_
3484deleted).
3485Each can be preceded by an optional `+' or `\(mi'.
3486For example, the line
3487.(b
3488O ResolverOptions=+AAONLY \(miDNSRCH
3489.)b
3490turns on the AAONLY (accept authoritative answers only)
3491and turns off the DNSRCH (search the domain path) options.
3492Most resolver libraries default DNSRCH, DEFNAMES, and RECURSE
3493flags on and all others off.
3494If NETINET6 is enabled, most libraries default to USE_INET6 as well.
3495You can also include
3496.q HasWildcardMX
3497to specify that there is a wildcard MX record matching your domain;
3498this turns off MX matching when canonifying names,
3499which can lead to inappropriate canonifications.
3500Use
3501.q WorkAroundBrokenAAAA
3502when faced with a broken nameserver that returns SERVFAIL
3503(a temporary failure)
3504on T_AAAA (IPv6) lookups
3505during hostname canonification.
3506Notice: it might be necessary to apply the same (or similar) options to
3507.i submit.cf
3508too.
3509.pp
3510Version level 1 configurations (see the section about
3511``Configuration Version Level'')
3512turn DNSRCH and DEFNAMES off when doing delivery lookups,
3513but leave them on everywhere else.
3514Version 8 of
3515.i sendmail
3516ignores them when doing canonification lookups
3517(that is, when using $[ ... $]),
3518and always does the search.
3519If you don't want to do automatic name extension,
3520don't call $[ ... $].
3521.pp
3522The search rules for $[ ... $] are somewhat different than usual.
3523If the name being looked up
3524has at least one dot, it always tries the unmodified name first.
3525If that fails, it tries the reduced search path,
3526and lastly tries the unmodified name
3527(but only for names without a dot,
3528since names with a dot have already been tried).
3529This allows names such as
3530``utc.CS''
3531to match the site in Czechoslovakia
3532rather than the site in your local Computer Science department.
3533It also prefers A and CNAME records over MX records \*-
3534that is, if it finds an MX record it makes note of it,
3535but keeps looking.
3536This way, if you have a wildcard MX record matching your domain,
3537it will not assume that all names match.
3538.pp
3539To completely turn off all name server access
3540on systems without service switch support
3541(such as SunOS 4.X)
3542you will have to recompile with
3543\-DNAMED_BIND=0
3544and remove \-lresolv from the list of libraries to be searched
3545when linking.
3546.sh 2 "Moving the Per-User Forward Files"
3547.pp
3548Some sites mount each user's home directory
3549from a local disk on their workstation,
3550so that local access is fast.
3551However, the result is that .forward file lookups
3552from a central mail server are slow.
3553In some cases,
3554mail can even be delivered on machines inappropriately
3555because of a file server being down.
3556The performance can be especially bad if you run the automounter.
3557.pp
3558The
3559.b ForwardPath
3560(\c
3561.b J )
3562option allows you to set a path of forward files.
3563For example, the config file line
3564.(b
3565O ForwardPath=/var/forward/$u:$z/.forward.$w
3566.)b
3567would first look for a file with the same name as the user's login
3568in /var/forward;
3569if that is not found (or is inaccessible)
3570the file
3571``.forward.\c
3572.i machinename ''
3573in the user's home directory is searched.
3574A truly perverse site could also search by sender
3575by using $r, $s, or $f.
3576.pp
3577If you create a directory such as /var/forward,
3578it should be mode 1777
3579(that is, the sticky bit should be set).
3580Users should create the files mode 0644.
3581Note that you must use the
3582ForwardFileInUnsafeDirPath and
3583ForwardFileInUnsafeDirPathSafe
3584flags with the
3585.b DontBlameSendmail
3586option to allow forward files in a world writable directory.
3587This might also be used as a denial of service attack
3588(users could create forward files for other users);
3589a better approach might be to create
3590/var/forward
3591mode 0755
3592and create empty files for each user,
3593owned by that user,
3594mode 0644.
3595If you do this, you don't have to set the DontBlameSendmail options
3596indicated above.
3597.sh 2 "Free Space"
3598.pp
3599On systems that have one of the system calls in the
3600.i statfs (2)
3601family
3602(including
3603.i statvfs
3604and
3605.i ustat ),
3606you can specify a minimum number of free blocks on the queue filesystem
3607using the
3608.b MinFreeBlocks
3609(\c
3610.b b )
3611option.
3612If there are fewer than the indicated number of blocks free
3613on the filesystem on which the queue is mounted
3614the SMTP server will reject mail
3615with the
3616452 error code.
3617This invites the SMTP client to try again later.
3618.pp
3619Beware of setting this option too high;
3620it can cause rejection of email
3621when that mail would be processed without difficulty.
3622.sh 2 "Maximum Message Size"
3623.pp
3624To avoid overflowing your system with a large message,
3625the
3626.b MaxMessageSize
3627option can be set to set an absolute limit
3628on the size of any one message.
3629This will be advertised in the ESMTP dialogue
3630and checked during message collection.
3631.sh 2 "Privacy Flags"
3632.pp
3633The
3634.b PrivacyOptions
3635(\c
3636.b p )
3637option allows you to set certain
3638``privacy''
3639flags.
3640Actually, many of them don't give you any extra privacy,
3641rather just insisting that client SMTP servers
3642use the HELO command
3643before using certain commands
3644or adding extra headers to indicate possible spoof attempts.
3645.pp
3646The option takes a series of flag names;
3647the final privacy is the inclusive or of those flags.
3648For example:
3649.(b
3650O PrivacyOptions=needmailhelo, noexpn
3651.)b
3652insists that the HELO or EHLO command be used before a MAIL command is accepted
3653and disables the EXPN command.
3654.pp
3655The flags are detailed in section
3656.\"XREF
36575.6.
3658.sh 2 "Send to Me Too"
3659.pp
3660Beginning with version 8.10,
3661.i sendmail
3662includes by default the (envelope) sender in any list expansions.
3663For example, if
3664.q matt
3665sends to a list that contains
3666.q matt
3667as one of the members he will get a copy of the message.
3668If the
3669.b MeToo
3670option is set to
3671.sm FALSE
3672(in the configuration file or via the command line),
3673this behavior is changed, i.e.,
3674the (envelope) sender is excluded in list expansions.
3675.sh 1 "THE WHOLE SCOOP ON THE CONFIGURATION FILE"
3676.pp
3677This section describes the configuration file
3678in detail.
3679.pp
3680There is one point that should be made clear immediately:
3681the syntax of the configuration file
3682is designed to be reasonably easy to parse,
3683since this is done every time
3684.i sendmail
3685starts up,
3686rather than easy for a human to read or write.
3687The configuration file should be generated via the method described in
3688.b cf/README ,
3689it should not be edited directly unless someone is familiar
3690with the internals of the syntax described here and it is
3691not possible to achieve the desired result via the default method.
3692.pp
3693The configuration file is organized as a series of lines,
3694each of which begins with a single character
3695defining the semantics for the rest of the line.
3696Lines beginning with a space or a tab
3697are continuation lines
3698(although the semantics are not well defined in many places).
3699Blank lines and lines beginning with a sharp symbol
3700(`#')
3701are comments.
3702.sh 2 "R and S \*- Rewriting Rules"
3703.pp
3704The core of address parsing
3705are the rewriting rules.
3706These are an ordered production system.
3707.i Sendmail
3708scans through the set of rewriting rules
3709looking for a match on the left hand side
3710(LHS)
3711of the rule.
3712When a rule matches,
3713the address is replaced by the right hand side
3714(RHS)
3715of the rule.
3716.pp
3717There are several sets of rewriting rules.
3718Some of the rewriting sets are used internally
3719and must have specific semantics.
3720Other rewriting sets
3721do not have specifically assigned semantics,
3722and may be referenced by the mailer definitions
3723or by other rewriting sets.
3724.pp
3725The syntax of these two commands are:
3726.(b F
3727.b S \c
3728.i n
3729.)b
3730Sets the current ruleset being collected to
3731.i n .
3732If you begin a ruleset more than once
3733it appends to the old definition.
3734.(b F
3735.b R \c
3736.i lhs
3737.i rhs
3738.i comments
3739.)b
3740The
3741fields must be separated
3742by at least one tab character;
3743there may be embedded spaces
3744in the fields.
3745The
3746.i lhs
3747is a pattern that is applied to the input.
3748If it matches,
3749the input is rewritten to the
3750.i rhs .
3751The
3752.i comments
3753are ignored.
3754.pp
3755Macro expansions of the form
3756.b $ \c
3757.i x
3758are performed when the configuration file is read.
3759A literal
3760.b $
3761can be included using
3762.b $$ .
3763Expansions of the form
3764.b $& \c
3765.i x
3766are performed at run time using a somewhat less general algorithm.
3767This is intended only for referencing internally defined macros
3768such as
3769.b $h
3770that are changed at runtime.
3771.sh 3 "The left hand side"
3772.pp
3773The left hand side of rewriting rules contains a pattern.
3774Normal words are simply matched directly.
3775Metasyntax is introduced using a dollar sign.
3776The metasymbols are:
3777.(b
3778.ta \w'\fB$=\fP\fIx\fP 'u
3779\fB$*\fP Match zero or more tokens
3780\fB$+\fP Match one or more tokens
3781\fB$\-\fP Match exactly one token
3782\fB$=\fP\fIx\fP Match any phrase in class \fIx\fP
3783\fB$~\fP\fIx\fP Match any word not in class \fIx\fP
3784.)b
3785If any of these match,
3786they are assigned to the symbol
3787.b $ \c
3788.i n
3789for replacement on the right hand side,
3790where
3791.i n
3792is the index in the LHS.
3793For example,
3794if the LHS:
3795.(b
3796$\-:$+
3797.)b
3798is applied to the input:
3799.(b
3800UCBARPA:eric
3801.)b
3802the rule will match, and the values passed to the RHS will be:
3803.(b
3804.ta 4n
3805$1 UCBARPA
3806$2 eric
3807.)b
3808.pp
3809Additionally, the LHS can include
3810.b $@
3811to match zero tokens.
3812This is
3813.i not
3814bound to a
3815.b $ \c
3816.i n
3817on the RHS, and is normally only used when it stands alone
3818in order to match the null input.
3819.sh 3 "The right hand side"
3820.pp
3821When the left hand side of a rewriting rule matches,
3822the input is deleted and replaced by the right hand side.
3823Tokens are copied directly from the RHS
3824unless they begin with a dollar sign.
3825Metasymbols are:
3826.(b
3827.ta \w'$#mailer\0\0\0'u
3828\fB$\fP\fIn\fP Substitute indefinite token \fIn\fP from LHS
3829\fB$[\fP\fIname\fP\fB$]\fP Canonicalize \fIname\fP
3830\fB$(\fP\fImap key\fP \fB$@\fP\fIarguments\fP \fB$:\fP\fIdefault\fP \fB$)\fP
3831 Generalized keyed mapping function
3832\fB$>\fP\fIn\fP \*(lqCall\*(rq ruleset \fIn\fP
3833\fB$#\fP\fImailer\fP Resolve to \fImailer\fP
3834\fB$@\fP\fIhost\fP Specify \fIhost\fP
3835\fB$:\fP\fIuser\fP Specify \fIuser\fP
3836.)b
3837.pp
3838The
3839.b $ \c
3840.i n
3841syntax substitutes the corresponding value from a
3842.b $+ ,
3843.b $\- ,
3844.b $* ,
3845.b $= ,
3846or
3847.b $~
3848match on the LHS.
3849It may be used anywhere.
3850.pp
3851A host name enclosed between
3852.b $[
3853and
3854.b $]
3855is looked up in the host database(s)
3856and replaced by the canonical name\**.
3857.(f
3858\**This is actually
3859completely equivalent
3860to $(host \fIhostname\fP$).
3861In particular, a
3862.b $:
3863default can be used.
3864.)f
3865For example,
3866.q $[ftp$]
3867might become
3868.q ftp.CS.Berkeley.EDU
3869and
3870.q $[[128.32.130.2]$]
3871would become
3872.q vangogh.CS.Berkeley.EDU.
3873.i Sendmail
3874recognizes its numeric IP address
3875without calling the name server
3876and replaces it with its canonical name.
3877.pp
3878The
3879.b $(
3880\&...
3881.b $)
3882syntax is a more general form of lookup;
3883it uses a named map instead of an implicit map.
3884If no lookup is found, the indicated
3885.i default
3886is inserted;
3887if no default is specified and no lookup matches,
3888the value is left unchanged.
3889The
3890.i arguments
3891are passed to the map for possible use.
3892.pp
3893The
3894.b $> \c
3895.i n
3896syntax
3897causes the remainder of the line to be substituted as usual
3898and then passed as the argument to ruleset
3899.i n .
3900The final value of ruleset
3901.i n
3902then becomes
3903the substitution for this rule.
3904The
3905.b $>
3906syntax expands everything after the ruleset name
3907to the end of the replacement string
3908and then passes that as the initial input to the ruleset.
3909Recursive calls are allowed.
3910For example,
3911.(b
3912$>0 $>3 $1
3913.)b
3914expands $1, passes that to ruleset 3, and then passes the result
3915of ruleset 3 to ruleset 0.
3916.pp
3917The
3918.b $#
3919syntax should
3920.i only
3921be used in ruleset zero,
3922a subroutine of ruleset zero,
3923or rulesets that return decisions (e.g., check_rcpt).
3924It causes evaluation of the ruleset to terminate immediately,
3925and signals to
3926.i sendmail
3927that the address has completely resolved.
3928The complete syntax for ruleset 0 is:
3929.(b
3930\fB$#\fP\fImailer\fP \fB$@\fP\fIhost\fP \fB$:\fP\fIuser\fP
3931.)b
3932This specifies the
3933{mailer, host, user}
39343-tuple necessary to direct the mailer.
3935Note: the third element (
3936.i user
3937) is often also called
3938.i address
3939part.
3940If the mailer is local
3941the host part may be omitted\**.
3942.(f
3943\**You may want to use it for special
3944.q "per user"
3945extensions.
3946For example, in the address
3947.q jgm+foo@CMU.EDU ;
3948the
3949.q +foo
3950part is not part of the user name,
3951and is passed to the local mailer for local use.
3952.)f
3953The
3954.i mailer
3955must be a single word,
3956but the
3957.i host
3958and
3959.i user
3960may be multi-part.
3961If the
3962.i mailer
3963is the built-in IPC mailer,
3964the
3965.i host
3966may be a colon-separated list of hosts
3967that are searched in order for the first working address
3968(exactly like MX records).
3969The
3970.i user
3971is later rewritten by the mailer-specific envelope rewriting set
3972and assigned to the
3973.b $u
3974macro.
3975As a special case, if the mailer specified has the
3976.b F=@
3977flag specified
3978and the first character of the
3979.b $:
3980value is
3981.q @ ,
3982the
3983.q @
3984is stripped off, and a flag is set in the address descriptor
3985that causes sendmail to not do ruleset 5 processing.
3986.pp
3987Normally, a rule that matches is retried,
3988that is,
3989the rule loops until it fails.
3990A RHS may also be preceded by a
3991.b $@
3992or a
3993.b $:
3994to change this behavior.
3995A
3996.b $@
3997prefix causes the ruleset to return with the remainder of the RHS
3998as the value.
3999A
4000.b $:
4001prefix causes the rule to terminate immediately,
4002but the ruleset to continue;
4003this can be used to avoid continued application of a rule.
4004The prefix is stripped before continuing.
4005.pp
4006The
4007.b $@
4008and
4009.b $:
4010prefixes may precede a
4011.b $>
4012spec;
4013for example:
4014.(b
4015.ta 8n
4016R$+ $: $>7 $1
4017.)b
4018matches anything,
4019passes that to ruleset seven,
4020and continues;
4021the
4022.b $:
4023is necessary to avoid an infinite loop.
4024.pp
4025Substitution occurs in the order described,
4026that is,
4027parameters from the LHS are substituted,
4028hostnames are canonicalized,
4029.q subroutines
4030are called,
4031and finally
4032.b $# ,
4033.b $@ ,
4034and
4035.b $:
4036are processed.
4037.sh 3 "Semantics of rewriting rule sets"
4038.pp
4039There are six rewriting sets
4040that have specific semantics.
4041Five of these are related as depicted by figure 1.
4042.(z
4043.hl
4044.ie n \{\
4045.(c
4046 +---+
4047 -->| 0 |-->resolved address
4048 / +---+
4049 / +---+ +---+
4050 / ---->| 1 |-->| S |--
4051 +---+ / +---+ / +---+ +---+ \e +---+
4052addr-->| 3 |-->| D |-- --->| 4 |-->msg
4053 +---+ +---+ \e +---+ +---+ / +---+
4054 --->| 2 |-->| R |--
4055 +---+ +---+
4056.)c
4057
4058.\}
4059.el \{\
4060.ie !"\*(.T"" \{\
4061.PS
4062boxwid = 0.3i
4063boxht = 0.3i
4064movewid = 0.3i
4065moveht = 0.3i
4066linewid = 0.3i
4067lineht = 0.3i
4068
4069 box invis "addr"; arrow
4070Box3: box "3"
4071A1: arrow
4072BoxD: box "D"; line; L1: Here
4073C: [
4074 C1: arrow; box "1"; arrow; box "S"; line; E1: Here
4075 move to C1 down 0.5; right
4076 C2: arrow; box "2"; arrow; box "R"; line; E2: Here
4077 ] with .w at L1 + (0.5, 0)
4078 move to C.e right 0.5
4079L4: arrow; box "4"; arrow; box invis "msg"
4080 line from L1 to C.C1
4081 line from L1 to C.C2
4082 line from C.E1 to L4
4083 line from C.E2 to L4
4084 move to BoxD.n up 0.6; right
4085Box0: arrow; box "0"
4086 arrow; box invis "resolved address" width 1.3
4087 line from 1/3 of the way between A1 and BoxD.w to Box0
4088.PE
4089.\}
4090.el .sp 2i
4091.\}
4092.ce
4093Figure 1 \*- Rewriting set semantics
4094.(c
4095D \*- sender domain addition
4096S \*- mailer-specific sender rewriting
4097R \*- mailer-specific recipient rewriting
4098.)c
4099.hl
4100.)z
4101.pp
4102Ruleset three
4103should turn the address into
4104.q "canonical form."
4105This form should have the basic syntax:
4106.(b
4107local-part@host-domain-spec
4108.)b
4109Ruleset three
4110is applied by
4111.i sendmail
4112before doing anything with any address.
4113.pp
4114If no
4115.q @
4116sign is specified,
4117then the
4118host-domain-spec
4119.i may
4120be appended (box
4121.q D
4122in Figure 1)
4123from the
4124sender address
4125(if the
4126.b C
4127flag is set in the mailer definition
4128corresponding to the
4129.i sending
4130mailer).
4131.pp
4132Ruleset zero
4133is applied after ruleset three
4134to addresses that are going to actually specify recipients.
4135It must resolve to a
4136.i "{mailer, host, address}"
4137triple.
4138The
4139.i mailer
4140must be defined in the mailer definitions
4141from the configuration file.
4142The
4143.i host
4144is defined into the
4145.b $h
4146macro
4147for use in the argv expansion of the specified mailer.
4148Notice: since the envelope sender address will be used if
4149a delivery status notification must be send,
4150i.e., is may specify a recipient,
4151it is also run through ruleset zero.
4152If ruleset zero returns a temporary error
4153.b 4xy
4154then delivery is deferred.
4155This can be used to temporarily disable delivery,
4156e.g., based on the time of the day or other varying parameters.
4157It should not be used to quarantine e-mails.
4158.pp
4159Rulesets one and two
4160are applied to all sender and recipient addresses respectively.
4161They are applied before any specification
4162in the mailer definition.
4163They must never resolve.
4164.pp
4165Ruleset four is applied to all addresses
4166in the message.
4167It is typically used
4168to translate internal to external form.
4169.pp
4170In addition,
4171ruleset 5 is applied to all local addresses
4172(specifically, those that resolve to a mailer with the `F=5'
4173flag set)
4174that do not have aliases.
4175This allows a last minute hook for local names.
4176.sh 3 "Ruleset hooks"
4177.pp
4178A few extra rulesets are defined as
4179.q hooks
4180that can be defined to get special features.
4181They are all named rulesets.
4182The
4183.q check_*
4184forms all give accept/reject status;
4185falling off the end or returning normally is an accept,
4186and resolving to
4187.b $#error
4188is a reject or quarantine.
4189Quarantining is chosen by specifying
4190.b quarantine
4191in the second part of the mailer triplet:
4192.(b
4193$#error $@ quarantine $: Reason for quarantine
4194.)b
4195Many of these can also resolve to the special mailer name
4196.b $#discard ;
4197this accepts the message as though it were successful
4198but then discards it without delivery.
4199Note,
4200this mailer cannot be chosen as a mailer in ruleset 0.
4201Note also that all
4202.q check_*
4203rulesets have to deal with temporary failures, especially for map lookups,
4204themselves, i.e., they should return a temporary error code
4205or at least they should make a proper decision in those cases.
4206.sh 4 "check_relay"
4207.pp
4208The
4209.i check_relay
4210ruleset is called after a connection is accepted by the daemon.
4211It is not called when sendmail is started using the
4212.b \-bs
4213option.
4214It is passed
4215.(b
4216client.host.name $| client.host.address
4217.)b
4218where
4219.b $|
4220is a metacharacter separating the two parts.
4221This ruleset can reject connections from various locations.
4222Note that it only checks the connecting SMTP client IP address and hostname.
4223It does not check for third party message relaying.
4224The
4225.i check_rcpt
4226ruleset discussed below usually does third party message relay checking.
4227.sh 4 "check_mail"
4228.pp
4229The
4230.i check_mail
4231ruleset is passed the user name parameter of the
4232.sm "SMTP MAIL"
4233command.
4234It can accept or reject the address.
4235.sh 4 "check_rcpt"
4236.pp
4237The
4238.i check_rcpt
4239ruleset is passed the user name parameter of the
4240.sm "SMTP RCPT"
4241command.
4242It can accept or reject the address.
4243.sh 4 "check_data"
4244.pp
4245The
4246.i check_data
4247ruleset is called after the
4248.sm "SMTP DATA"
4249command, its parameter is the number of recipients.
4250It can accept or reject the command.
4251.sh 4 "check_compat"
4252.pp
4253The
4254.i check_compat
4255ruleset is passed
4256.(b
4257sender-address $| recipient-address
4258.)b
4259where
4260.b $|
4261is a metacharacter separating the addresses.
4262It can accept or reject mail transfer between these two addresses
4263much like the
4264.i checkcompat()
4265function.
4266Note:
4267while other
4268.i check_*
4269rulesets are invoked during the SMTP mail receiption stage
4270(i.e., in the SMTP server),
4271.i check_compat
4272is invoked during the mail delivery stage.
4273.sh 4 "check_eoh"
4274.pp
4275The
4276.i check_eoh
4277ruleset is passed
4278.(b
4279number-of-headers $| size-of-headers
4280.)b
4281where
4282.b $|
4283is a metacharacter separating the numbers.
4284These numbers can be used for size comparisons with the
4285.b arith
4286map.
4287The ruleset is triggered after
4288all of the headers have been read.
4289It can be used to correlate information gathered
4290from those headers using the
4291.b macro
4292storage map.
4293One possible use is to check for a missing header.
4294For example:
4295.(b
4296.ta 1.5i
4297Kstorage macro
4298HMessage-Id: $>CheckMessageId
4299
4300SCheckMessageId
4301# Record the presence of the header
4302R$* $: $(storage {MessageIdCheck} $@ OK $) $1
4303R< $+ @ $+ > $@ OK
4304R$* $#error $: 553 Header Error
4305
4306Scheck_eoh
4307# Check the macro
4308R$* $: < $&{MessageIdCheck} >
4309# Clear the macro for the next message
4310R$* $: $(storage {MessageIdCheck} $) $1
4311# Has a Message-Id: header
4312R< $+ > $@ OK
4313# Allow missing Message-Id: from local mail
4314R$* $: < $&{client_name} >
4315R< > $@ OK
4316R< $=w > $@ OK
4317# Otherwise, reject the mail
4318R$* $#error $: 553 Header Error
4319.)b
4320Keep in mind the Message-Id: header is not a required header and
4321is not a guaranteed spam indicator.
4322This ruleset is an example and
4323should probably not be used in production.
4324.sh 4 "check_eom"
4325.pp
4326The
4327.i check_eom
4328ruleset is called after the end of a message,
4329its parameter is the message size.
4330It can accept or reject the message.
4331.sh 4 "check_etrn"
4332.pp
4333The
4334.i check_etrn
4335ruleset is passed the parameter of the
4336.sm "SMTP ETRN"
4337command.
4338It can accept or reject the command.
4339.sh 4 "check_expn"
4340.pp
4341The
4342.i check_expn
4343ruleset is passed the user name parameter of the
4344.sm "SMTP EXPN"
4345command.
4346It can accept or reject the address.
4347.sh 4 "check_vrfy"
4348.pp
4349The
4350.i check_vrfy
4351ruleset is passed the user name parameter of the
4352.sm "SMTP VRFY"
4353command.
4354It can accept or reject the command.
4355.sh 4 "trust_auth"
4356.pp
4357The
4358.i trust_auth
4359ruleset is passed the AUTH= parameter of the
4360.sm "SMTP MAIL"
4361command.
4362It is used to determine whether this value should be
4363trusted. In order to make this decision, the ruleset
4364may make use of the various
4365.b ${auth_*}
4366macros.
4367If the ruleset does resolve to the
4368.q error
4369mailer the AUTH= parameter is not trusted and hence
4370not passed on to the next relay.
4371.sh 4 "tls_client"
4372.pp
4373The
4374.i tls_client
4375ruleset is called when sendmail acts as server, after a STARTTLS command
4376has been issued, and from
4377.i check_mail.
4378The parameter is the value of
4379.b ${verify}
4380and STARTTLS or MAIL, respectively.
4381If the ruleset does resolve to the
4382.q error
4383mailer, the appropriate error code is returned to the client.
4384.sh 4 "tls_server"
4385.pp
4386The
4387.i tls_server
4388ruleset is called when sendmail acts as client after a STARTTLS command
4389(should) have been issued.
4390The parameter is the value of
4391.b ${verify} .
4392If the ruleset does resolve to the
4393.q error
4394mailer, the connection is aborted
4395(treated as non-deliverable with a permanent or temporary error).
4396.sh 4 "tls_rcpt"
4397.pp
4398The
4399.i tls_rcpt
4400ruleset is called each time before a RCPT TO command is sent.
4401The parameter is the current recipient.
4402If the ruleset does resolve to the
4403.q error
4404mailer, the RCPT TO command is suppressed
4405(treated as non-deliverable with a permanent or temporary error).
4406This ruleset allows to require encryption or verification of
4407the recipient's MTA even if the mail is somehow redirected
4408to another host.
4409For example, sending mail to
4410.i luke@endmail.org
4411may get redirected to a host named
4412.i death.star
4413and hence the tls_server ruleset won't apply.
4414By introducing per recipient restrictions such attacks
4415(e.g., via DNS spoofing) can be made impossible.
4416See
4417.i cf/README
4418how this ruleset can be used.
4419.sh 4 "srv_features"
4420.pp
4421The
4422.i srv_features
4423ruleset is called with the connecting client's host name
4424when a client connects to sendmail.
4425This ruleset should return
4426.b $#
4427followed by a list of options (single characters
4428delimited by white space).
4429If the return value starts with anything else it is silently ignored.
4430Generally upper case characters turn off a feature
4431while lower case characters turn it on.
4432Option `S' causes the server not to offer STARTTLS,
4433which is useful to interact with MTAs/MUAs that have broken
4434STARTTLS implementations by simply not offering it.
4435`V' turns off the request for a client certificate during the TLS handshake.
4436Options `A' and `P' suppress SMTP AUTH and PIPELINING, respectively.
4437`c' is the equivalent to AuthOptions=p, i.e.,
4438it doesn't permit mechanisms susceptible to simple
4439passive attack (e.g., PLAIN, LOGIN), unless a security layer is active.
4440Option `l' requires SMTP AUTH for a connection.
4441Options 'B', 'D', 'E', and 'X' suppress SMTP VERB, DSN, ETRN, and EXPN,
4442respectively.
4443.(b
4444.ta 9n
4445A Do not offer AUTH
4446a Offer AUTH (default)
4447B Do not offer VERB
4448b Offer VERB (default)
4449C Do not require security layer for
4450 plaintext AUTH (default)
4451c Require security layer for plaintext AUTH
4452D Do not offer DSN
4453d Offer DSN (default)
4454E Do not offer ETRN
4455e Offer ETRN (default)
4456L Do not require AUTH (default)
4457l Require AUTH
4458P Do not offer PIPELINING
4459p Offer PIPELINING (default)
4460S Do not offer STARTTLS
4461s Offer STARTTLS (default)
4462V Do not request a client certificate
4463v Request a client certificate (default)
4464X Do not offer EXPN
4465x Offer EXPN (default)
4466.)b
4467Note: the entries marked as ``(default)'' may require that some
4468configuration has been made, e.g., SMTP AUTH is only available if
4469properly configured.
4470Moreover, many options can be changed on a global basis via other
4471settings as explained in this document, e.g., via DaemonPortOptions.
4472.pp
4473The ruleset may return `$#temp' to indicate that there is a temporary
4474problem determining the correct features, e.g., if a map is unavailable.
4475In that case, the SMTP server issues a temporary failure and does not
4476accept email.
4477.sh 4 "try_tls"
4478.pp
4479The
4480.i try_tls
4481ruleset is called when sendmail connects to another MTA.
4482If the ruleset does resolve to the
4483.q error
4484mailer, sendmail does not try STARTTLS even if it is offered.
4485This is useful to interact with MTAs that have broken
4486STARTTLS implementations by simply not using it.
4487.sh 4 "authinfo"
4488.pp
4489The
4490.i authinfo
4491ruleset is called when sendmail tries to authenticate to another MTA.
4492It should return
4493.b $#
4494followed by a list of tokens that are used for SMTP AUTH.
4495If the return value starts with anything else it is silently ignored.
4496Each token is a tagged string of the form:
4497"TDstring"
4498(including the quotes), where
4499.(b
4500.ta 9n
4501T Tag which describes the item
4502D Delimiter: ':' simple text follows
4503 '=' string is base64 encoded
4504string Value of the item
4505.)b
4506Valid values for the tag are:
4507.(b
4508.ta 9n
4509U user (authorization) id
4510I authentication id
4511P password
4512R realm
4513M list of mechanisms delimited by spaces
4514.)b
4515If this ruleset is defined, the option
4516.b DefaultAuthInfo
4517is ignored (even if the ruleset does not return a ``useful'' result).
4518.sh 4 "queuegroup"
4519.pp
4520The
4521.i queuegroup
4522ruleset is used to map a recipient address to a queue group name.
4523The input for the ruleset is a recipient address as specified by the
4524.sm "SMTP RCPT"
4525command.
4526The ruleset should return
4527.b $#
4528followed by the name of a queue group.
4529If the return value starts with anything else it is silently ignored.
4530See the section about ``Queue Groups and Queue Directories''
4531for further information.
4532.sh 4 "greet_pause"
4533.pp
4534The
4535.i greet_pause
4536ruleset is used to specify the amount of time to pause before sending the
4537initial SMTP 220 greeting.
4538If any traffic is received during that pause, an SMTP 554 rejection
4539response is given instead of the 220 greeting and all SMTP commands are
4540rejected during that connection.
4541This helps protect sites from open proxies and SMTP slammers.
4542The ruleset should return
4543.b $#
4544followed by the number of milliseconds (thousandths of a second) to
4545pause.
4546If the return value starts with anything else or is not a number,
4547it is silently ignored.
4548Note: this ruleset is not invoked (and hence the feature is disabled)
4549when the smtps (SMTP over SSL) is used, i.e.,
4550the
4551.i s
4552modifier is set for the daemon via
4553.b DaemonPortOptions ,
4554because in this case the SSL handshake is performed before
4555the greeting is sent.
4556.sh 3 "IPC mailers"
4557.pp
4558Some special processing occurs
4559if the ruleset zero resolves to an IPC mailer
4560(that is, a mailer that has
4561.q [IPC]
4562listed as the Path in the
4563.b M
4564configuration line.
4565The host name passed after
4566.q $@
4567has MX expansion performed if not delivering via a named socket;
4568this looks the name up in DNS to find alternate delivery sites.
4569.pp
4570The host name can also be provided as a dotted quad
4571or an IPv6 address in square brackets;
4572for example:
4573.(b
4574[128.32.149.78]
4575.)b
4576or
4577.(b
4578[IPv6:2002:c0a8:51d2::23f4]
4579.)b
4580This causes direct conversion of the numeric value
4581to an IP host address.
4582.pp
4583The host name passed in after the
4584.q $@
4585may also be a colon-separated list of hosts.
4586Each is separately MX expanded and the results are concatenated
4587to make (essentially) one long MX list.
4588The intent here is to create
4589.q fake
4590MX records that are not published in DNS
4591for private internal networks.
4592.pp
4593As a final special case, the host name can be passed in
4594as a text string
4595in square brackets:
4596.(b
4597[ucbvax.berkeley.edu]
4598.)b
4599This form avoids the MX mapping.
4600.b N.B.:
4601.i
4602This is intended only for situations where you have a network firewall
4603or other host that will do special processing for all your mail,
4604so that your MX record points to a gateway machine;
4605this machine could then do direct delivery to machines
4606within your local domain.
4607Use of this feature directly violates RFC 1123 section 5.3.5:
4608it should not be used lightly.
4609.r
4610.sh 2 "D \*- Define Macro"
4611.pp
4612Macros are named with a single character
4613or with a word in {braces}.
4614The names ``x'' and ``{x}'' denote the same macro
4615for every single character ``x''.
4616Single character names may be selected from the entire ASCII set,
4617but user-defined macros
4618should be selected from the set of upper case letters only.
4619Lower case letters
4620and special symbols
4621are used internally.
4622Long names beginning with a lower case letter or a punctuation character
4623are reserved for use by sendmail,
4624so user-defined long macro names should begin with an upper case letter.
4625.pp
4626The syntax for macro definitions is:
4627.(b F
4628.b D \c
4629.i x\|val
4630.)b
4631where
4632.i x
4633is the name of the macro
4634(which may be a single character
4635or a word in braces)
4636and
4637.i val
4638is the value it should have.
4639There should be no spaces given
4640that do not actually belong in the macro value.
4641.pp
4642Macros are interpolated
4643using the construct
4644.b $ \c
4645.i x ,
4646where
4647.i x
4648is the name of the macro to be interpolated.
4649This interpolation is done when the configuration file is read,
4650except in
4651.b M
4652lines.
4653The special construct
4654.b $& \c
4655.i x
4656can be used in
4657.b R
4658lines to get deferred interpolation.
4659.pp
4660Conditionals can be specified using the syntax:
4661.(b
4662$?x text1 $| text2 $.
4663.)b
4664This interpolates
4665.i text1
4666if the macro
4667.b $x
4668is set and non-null,
4669and
4670.i text2
4671otherwise.
4672The
4673.q else
4674(\c
4675.b $| )
4676clause may be omitted.
4677.pp
4678The following macros are defined and/or used internally by
4679.i sendmail
4680for interpolation into argv's for mailers
4681or for other contexts.
4682The ones marked \(dg are information passed into sendmail\**,
4683.(f
4684\**As of version 8.6,
4685all of these macros have reasonable defaults.
4686Previous versions required that they be defined.
4687.)f
4688the ones marked \(dd are information passed both in and out of sendmail,
4689and the unmarked macros are passed out of sendmail
4690but are not otherwise used internally.
4691These macros are:
4692.nr ii 5n
4693.ip $a
4694The origination date in RFC 822 format.
4695This is extracted from the Date: line.
4696.ip $b
4697The current date in RFC 822 format.
4698.ip $c
4699The hop count.
4700This is a count of the number of Received: lines
4701plus the value of the
4702.b \-h
4703command line flag.
4704.ip $d
4705The current date in UNIX (ctime) format.
4706.ip $e\(dg
4707(Obsolete; use SmtpGreetingMessage option instead.)
4708The SMTP entry message.
4709This is printed out when SMTP starts up.
4710The first word must be the
4711.b $j
4712macro as specified by RFC 821.
4713Defaults to
4714.q "$j Sendmail $v ready at $b" .
4715Commonly redefined to include the configuration version number, e.g.,
4716.q "$j Sendmail $v/$Z ready at $b"
4717.ip $f
4718The envelope sender (from) address.
4719.ip $g
4720The sender address relative to the recipient.
4721For example, if
4722.b $f
4723is
4724.q foo ,
4725.b $g
4726will be
4727.q host!foo ,
4728.q foo@host.domain ,
4729or whatever is appropriate for the receiving mailer.
4730.ip $h
4731The recipient host.
4732This is set in ruleset 0 from the $@ field of a parsed address.
4733.ip $i
4734The queue id,
4735e.g.,
4736.q f344MXxp018717 .
4737.ip $j\(dd
4738The \*(lqofficial\*(rq domain name for this site.
4739This is fully qualified if the full qualification can be found.
4740It
4741.i must
4742be redefined to be the fully qualified domain name
4743if your system is not configured so that information can find
4744it automatically.
4745.ip $k
4746The UUCP node name (from the uname system call).
4747.ip $l\(dg
4748(Obsolete; use UnixFromLine option instead.)
4749The format of the UNIX from line.
4750Unless you have changed the UNIX mailbox format,
4751you should not change the default,
4752which is
4753.q "From $g $d" .
4754.ip $m
4755The domain part of the \fIgethostname\fP return value.
4756Under normal circumstances,
4757.b $j
4758is equivalent to
4759.b $w.$m .
4760.ip $n\(dg
4761The name of the daemon (for error messages).
4762Defaults to
4763.q MAILER-DAEMON .
4764.ip $o\(dg
4765(Obsolete: use OperatorChars option instead.)
4766The set of \*(lqoperators\*(rq in addresses.
4767A list of characters
4768which will be considered tokens
4769and which will separate tokens
4770when doing parsing.
4771For example, if
4772.q @
4773were in the
4774.b $o
4775macro, then the input
4776.q a@b
4777would be scanned as three tokens:
4778.q a,
4779.q @,
4780and
4781.q b.
4782Defaults to
4783.q ".:@[]" ,
4784which is the minimum set necessary to do RFC 822 parsing;
4785a richer set of operators is
4786.q ".:%@!/[]" ,
4787which adds support for UUCP, the %-hack, and X.400 addresses.
4788.ip $p
4789Sendmail's process id.
4790.ip $q\(dg
4791Default format of sender address.
4792The
4793.b $q
4794macro specifies how an address should appear in a message
4795when it is defaulted.
4796Defaults to
4797.q "<$g>" .
4798It is commonly redefined to be
4799.q "$?x$x <$g>$|$g$."
4800or
4801.q "$g$?x ($x)$." ,
4802corresponding to the following two formats:
4803.(b
4804Eric Allman <eric@CS.Berkeley.EDU>
4805eric@CS.Berkeley.EDU (Eric Allman)
4806.)b
4807.i Sendmail
4808properly quotes names that have special characters
4809if the first form is used.
4810.ip $r
4811Protocol used to receive the message.
4812Set from the
4813.b \-p
4814command line flag or by the SMTP server code.
4815.ip $s
4816Sender's host name.
4817Set from the
4818.b \-p
4819command line flag or by the SMTP server code
4820(in which case it is set to the EHLO/HELO parameter).
4821.ip $t
4822A numeric representation of the current time in the format YYYYMMDDHHmm
4823(4 digit year 1900-9999, 2 digit month 01-12, 2 digit day 01-31,
48242 digit hours 00-23, 2 digit minutes 00-59).
4825.ip $u
4826The recipient user.
4827.ip $v
4828The version number of the
4829.i sendmail
4830binary.
4831.ip $w\(dd
4832The hostname of this site.
4833This is the root name of this host (but see below for caveats).
4834.ip $x
4835The full name of the sender.
4836.ip $z
4837The home directory of the recipient.
4838.ip $_
4839The validated sender address.
4840See also
4841.b ${client_resolve} .
4842.ip ${addr_type}
4843The type of the address which is currently being rewritten.
4844This macro contains up to three characters, the first
4845is either `e' or `h' for envelope/header address,
4846the second is a space,
4847and the third is either `s' or `r' for sender/recipient address.
4848.ip ${alg_bits}
4849The maximum keylength (in bits) of the symmetric encryption algorithm
4850used for a TLS connection.
4851This may be less than the effective keylength,
4852which is stored in
4853.b ${cipher_bits} ,
4854for ``export controlled'' algorithms.
4855.ip ${auth_authen}
4856The client's authentication credentials as determined by authentication
4857(only set if successful).
4858The format depends on the mechanism used, it might be just `user',
4859or `user@realm', or something similar (SMTP AUTH only).
4860.ip ${auth_author}
4861The authorization identity, i.e. the AUTH= parameter of the
4862.sm "SMTP MAIL"
4863command if supplied.
4864.ip ${auth_type}
4865The mechanism used for SMTP authentication
4866(only set if successful).
4867.ip ${auth_ssf}
4868The keylength (in bits) of the symmetric encryption algorithm
4869used for the security layer of a SASL mechanism.
4870.ip ${bodytype}
4871The message body type
4872(7BIT or 8BITMIME),
4873as determined from the envelope.
4874.ip ${cert_issuer}
4875The DN (distinguished name) of the CA (certificate authority)
4876that signed the presented certificate (the cert issuer)
4877(STARTTLS only).
4878.ip ${cert_md5}
4879The MD5 hash of the presented certificate (STARTTLS only).
4880.ip ${cert_subject}
4881The DN of the presented certificate (called the cert subject)
4882(STARTTLS only).
4883.ip ${cipher}
4884The cipher suite used for the connection, e.g., EDH-DSS-DES-CBC3-SHA,
4885EDH-RSA-DES-CBC-SHA, DES-CBC-MD5, DES-CBC3-SHA
4886(STARTTLS only).
4887.ip ${cipher_bits}
4888The effective keylength (in bits) of the symmetric encryption algorithm
4889used for a TLS connection.
4890.ip ${client_addr}
4891The IP address of the SMTP client.
4892IPv6 addresses are tagged with "IPv6:" before the address.
4893Defined in the SMTP server only.
4894.ip ${client_connections}
4895The number of open connections in the SMTP server for the client IP address.
4896.ip ${client_flags}
4897The flags specified by the
4898Modifier= part of
4899.b ClientPortOptions
4900where flags are separated from each other by spaces
4901and upper case flags are doubled.
4902That is,
4903Modifier=hA
4904will be represented as
4905"h AA" in
4906.b ${client_flags} ,
4907which is required for testing the flags in rulesets.
4908.ip ${client_name}
4909The host name of the SMTP client.
4910This may be the client's bracketed IP address
4911in the form [ nnn.nnn.nnn.nnn ] for IPv4
4912and [ IPv6:nnnn:...:nnnn ] for IPv6
4913if the client's
4914IP address is not resolvable, or if it is resolvable
4915but the IP address of the resolved hostname
4916doesn't match the original IP address.
4917Defined in the SMTP server only.
4918See also
4919.b ${client_resolve} .
4920.ip ${client_port}
4921The port number of the SMTP client.
4922Defined in the SMTP server only.
4923.ip ${client_ptr}
4924The result of the PTR lookup for the client IP address.
4925Note: this is the same as
4926.b ${client_name}
4927if and only if
4928.b ${client_resolve}
4929is OK.
4930Defined in the SMTP server only.
4931.ip ${client_rate}
4932The number of incoming connections for the client IP address
4933over the time interval specified by ConnectionRateWindowSize.
4934.ip ${client_resolve}
4935Holds the result of the resolve call for
4936.b ${client_name} .
4937Possible values are:
4938.(b
4939.ta 10n
4940OK resolved successfully
4941FAIL permanent lookup failure
4942FORGED forward lookup doesn't match reverse lookup
4943TEMP temporary lookup failure
4944.)b
4945Defined in the SMTP server only.
4946.i sendmail
4947performs a hostname lookup on the IP address of the connecting client.
4948Next the IP addresses of that hostname are looked up.
4949If the client IP address does not appear in that list,
4950then the hostname is maybe forged.
4951This is reflected as the value FORGED for
4952.b ${client_resolve}
4953and it also shows up in
4954.b $_
4955as "(may be forged)".
4956.ip ${cn_issuer}
4957The CN (common name) of the CA that signed the presented certificate
4958(STARTTLS only).
4959Note: if the CN cannot be extracted properly it will be replaced by
4960one of these strings based on the encountered error:
4961.(b
4962.ta 25n
4963BadCertificateContainsNUL CN contains a NUL character
4964BadCertificateTooLong CN is too long
4965BadCertificateUnknown CN could not be extracted
4966.)b
4967In the last case, some other (unspecific) error occurred.
4968.ip ${cn_subject}
4969The CN (common name) of the presented certificate
4970(STARTTLS only).
4971See
4972.b ${cn_issuer}
4973for possible replacements.
4974.ip ${currHeader}
4975Header value as quoted string
4976(possibly truncated to
4977.b MAXNAME ).
4978This macro is only available in header check rulesets.
4979.ip ${daemon_addr}
4980The IP address the daemon is listening on for connections.
4981.ip ${daemon_family}
4982The network family
4983if the daemon is accepting network connections.
4984Possible values include
4985.q inet ,
4986.q inet6 ,
4987.q iso ,
4988.q ns ,
4989.q x.25
4990.ip ${daemon_flags}
4991The flags for the daemon as specified by the
4992Modifier= part of
4993.b DaemonPortOptions
4994whereby the flags are separated from each other by spaces,
4995and upper case flags are doubled.
4996That is,
4997Modifier=Ea
4998will be represented as
4999"EE a" in
5000.b ${daemon_flags} ,
5001which is required for testing the flags in rulesets.
5002.ip ${daemon_info}
5003Some information about a daemon as a text string.
5004For example,
5005.q SMTP+queueing@00:30:00 .
5006.ip ${daemon_name}
5007The name of the daemon from
5008.b DaemonPortOptions
5009Name= suboption.
5010If this suboption is not set,
5011"Daemon#",
5012where # is the daemon number,
5013is used.
5014.ip ${daemon_port}
5015The port the daemon is accepting connection on.
5016Unless
5017.b DaemonPortOptions
5018is set, this will most likely be
5019.q 25 .
5020.ip ${deliveryMode}
5021The current delivery mode sendmail is using.
5022It is initially set to the value of the
5023.b DeliveryMode
5024option.
5025.ip ${envid}
5026The envelope id parameter (ENVID=) passed to sendmail as part of the envelope.
5027.ip ${hdrlen}
5028The length of the header value which is stored in
5029${currHeader} (before possible truncation).
5030If this value is greater than or equal to
5031.b MAXNAME
5032the header has been truncated.
5033.ip ${hdr_name}
5034The name of the header field for which the current header
5035check ruleset has been called.
5036This is useful for a default header check ruleset to get
5037the name of the header;
5038the macro is only available in header check rulesets.
5039.ip ${if_addr}
5040The IP address of the interface of an incoming connection
5041unless it is in the loopback net.
5042IPv6 addresses are tagged with "IPv6:" before the address.
5043.ip ${if_addr_out}
5044The IP address of the interface of an outgoing connection
5045unless it is in the loopback net.
5046IPv6 addresses are tagged with "IPv6:" before the address.
5047.ip ${if_family}
5048The IP family of the interface of an incoming connection
5049unless it is in the loopback net.
5050.ip ${if_family_out}
5051The IP family of the interface of an outgoing connection
5052unless it is in the loopback net.
5053.ip ${if_name}
5054The hostname associated with the interface of an incoming connection.
5055This macro can be used for
5056SmtpGreetingMessage and HReceived for virtual hosting.
5057For example:
5058.(b
5059O SmtpGreetingMessage=$?{if_name}${if_name}$|$j$. MTA
5060.)b
5061.ip ${if_name_out}
5062The name of the interface of an outgoing connection.
5063.ip ${load_avg}
5064The current load average.
5065.ip ${mail_addr}
5066The address part of the resolved triple of the address given for the
5067.sm "SMTP MAIL"
5068command.
5069Defined in the SMTP server only.
5070.ip ${mail_host}
5071The host from the resolved triple of the address given for the
5072.sm "SMTP MAIL"
5073command.
5074Defined in the SMTP server only.
5075.ip ${mail_mailer}
5076The mailer from the resolved triple of the address given for the
5077.sm "SMTP MAIL"
5078command.
5079Defined in the SMTP server only.
5080.ip ${msg_id}
5081The value of the Message-Id: header.
5082.ip ${msg_size}
5083The value of the SIZE= parameter,
5084i.e., usually the size of the message (in an ESMTP dialogue),
5085before the message has been collected, thereafter
5086the message size as computed by
5087.i sendmail
5088(and can be used in check_compat).
5089.ip ${nbadrcpts}
5090The number of bad recipients for a single message.
5091.ip ${nrcpts}
5092The number of validated recipients for a single message.
5093Note: since recipient validation happens after
5094.i check_rcpt
5095has been called, the value in this ruleset
5096is one less than what might be expected.
5097.ip ${ntries}
5098The number of delivery attempts.
5099.ip ${opMode}
5100The current operation mode (from the
5101.b \-b
5102flag).
5103.ip ${quarantine}
5104The quarantine reason for the envelope,
5105if it is quarantined.
5106.ip ${queue_interval}
5107The queue run interval given by the
5108.b \-q
5109flag.
5110For example,
5111.b \-q30m
5112would set
5113.b ${queue_interval}
5114to
5115.q 00:30:00 .
5116.ip ${rcpt_addr}
5117The address part of the resolved triple of the address given for the
5118.sm "SMTP RCPT"
5119command.
5120Defined in the SMTP server only after a RCPT command.
5121.ip ${rcpt_host}
5122The host from the resolved triple of the address given for the
5123.sm "SMTP RCPT"
5124command.
5125Defined in the SMTP server only after a RCPT command.
5126.ip ${rcpt_mailer}
5127The mailer from the resolved triple of the address given for the
5128.sm "SMTP RCPT"
5129command.
5130Defined in the SMTP server only after a RCPT command.
5131.ip ${server_addr}
5132The address of the server of the current outgoing SMTP connection.
5133For LMTP delivery the macro is set to the name of the mailer.
5134.ip ${server_name}
5135The name of the server of the current outgoing SMTP or LMTP connection.
5136.ip ${time}
5137The output of the
5138.i time (3)
5139function, i.e., the number of seconds since 0 hours, 0 minutes,
51400 seconds, January 1, 1970, Coordinated Universal Time (UTC).
5141.ip ${tls_version}
5142The TLS/SSL version used for the connection, e.g., TLSv1, SSLv3, SSLv2;
5143defined after STARTTLS has been used.
5144.ip ${total_rate}
5145The total number of incoming connections over the time interval specified
5146by ConnectionRateWindowSize.
5147.ip ${verify}
5148The result of the verification of the presented cert;
5149only defined after STARTTLS has been used (or attempted).
5150Possible values are:
5151.(b
5152.ta 13n
5153OK verification succeeded.
5154NO no cert presented.
5155NOT no cert requested.
5156FAIL cert presented but could not be verified,
5157 e.g., the signing CA is missing.
5158NONE STARTTLS has not been performed.
5159TEMP temporary error occurred.
5160PROTOCOL some protocol error occurred
5161 at the ESMTP level (not TLS).
5162SOFTWARE STARTTLS handshake failed,
5163 which is a fatal error for this session,
5164 the e-mail will be queued.
5165.)b
5166.pp
5167There are three types of dates that can be used.
5168The
5169.b $a
5170and
5171.b $b
5172macros are in RFC 822 format;
5173.b $a
5174is the time as extracted from the
5175.q Date:
5176line of the message
5177(if there was one),
5178and
5179.b $b
5180is the current date and time
5181(used for postmarks).
5182If no
5183.q Date:
5184line is found in the incoming message,
5185.b $a
5186is set to the current time also.
5187The
5188.b $d
5189macro is equivalent to the
5190.b $b
5191macro in UNIX
5192(ctime)
5193format.
5194.pp
5195The macros
5196.b $w ,
5197.b $j ,
5198and
5199.b $m
5200are set to the identity of this host.
5201.i Sendmail
5202tries to find the fully qualified name of the host
5203if at all possible;
5204it does this by calling
5205.i gethostname (2)
5206to get the current hostname
5207and then passing that to
5208.i gethostbyname (3)
5209which is supposed to return the canonical version of that host name.\**
5210.(f
5211\**For example, on some systems
5212.i gethostname
5213might return
5214.q foo
5215which would be mapped to
5216.q foo.bar.com
5217by
5218.i gethostbyname .
5219.)f
5220Assuming this is successful,
5221.b $j
5222is set to the fully qualified name
5223and
5224.b $m
5225is set to the domain part of the name
5226(everything after the first dot).
5227The
5228.b $w
5229macro is set to the first word
5230(everything before the first dot)
5231if you have a level 5 or higher configuration file;
5232otherwise, it is set to the same value as
5233.b $j .
5234If the canonification is not successful,
5235it is imperative that the config file set
5236.b $j
5237to the fully qualified domain name\**.
5238.(f
5239\**Older versions of sendmail didn't pre-define
5240.b $j
5241at all, so up until 8.6,
5242config files
5243.i always
5244had to define
5245.b $j .
5246.)f
5247.pp
5248The
5249.b $f
5250macro is the id of the sender
5251as originally determined;
5252when mailing to a specific host
5253the
5254.b $g
5255macro is set to the address of the sender
5256.ul
5257relative to the recipient.
5258For example,
5259if I send to
5260.q bollard@matisse.CS.Berkeley.EDU
5261from the machine
5262.q vangogh.CS.Berkeley.EDU
5263the
5264.b $f
5265macro will be
5266.q eric
5267and the
5268.b $g
5269macro will be
5270.q eric@vangogh.CS.Berkeley.EDU.
5271.pp
5272The
5273.b $x
5274macro is set to the full name of the sender.
5275This can be determined in several ways.
5276It can be passed as flag to
5277.i sendmail .
5278It can be defined in the
5279.sm NAME
5280environment variable.
5281The third choice is the value of the
5282.q Full-Name:
5283line in the header if it exists,
5284and the fourth choice is the comment field
5285of a
5286.q From:
5287line.
5288If all of these fail,
5289and if the message is being originated locally,
5290the full name is looked up in the
5291.i /etc/passwd
5292file.
5293.pp
5294When sending,
5295the
5296.b $h ,
5297.b $u ,
5298and
5299.b $z
5300macros get set to the host, user, and home directory
5301(if local)
5302of the recipient.
5303The first two are set from the
5304.b $@
5305and
5306.b $:
5307part of the rewriting rules, respectively.
5308.pp
5309The
5310.b $p
5311and
5312.b $t
5313macros are used to create unique strings
5314(e.g., for the
5315.q Message-Id:
5316field).
5317The
5318.b $i
5319macro is set to the queue id on this host;
5320if put into the timestamp line
5321it can be extremely useful for tracking messages.
5322The
5323.b $v
5324macro is set to be the version number of
5325.i sendmail ;
5326this is normally put in timestamps
5327and has been proven extremely useful for debugging.
5328.pp
5329The
5330.b $c
5331field is set to the
5332.q "hop count,"
5333i.e., the number of times this message has been processed.
5334This can be determined
5335by the
5336.b \-h
5337flag on the command line
5338or by counting the timestamps in the message.
5339.pp
5340The
5341.b $r
5342and
5343.b $s
5344fields are set to the protocol used to communicate with
5345.i sendmail
5346and the sending hostname.
5347They can be set together using the
5348.b \-p
5349command line flag or separately using the
5350.b \-M
5351or
5352.b \-oM
5353flags.
5354.pp
5355The
5356.b $_
5357is set to a validated sender host name.
5358If the sender is running an RFC 1413 compliant IDENT server
5359and the receiver has the IDENT protocol turned on,
5360it will include the user name on that host.
5361.pp
5362The
5363.b ${client_name} ,
5364.b ${client_addr} ,
5365and
5366.b ${client_port}
5367macros
5368are set to the name, address, and port number of the SMTP client
5369who is invoking
5370.i sendmail
5371as a server.
5372These can be used in the
5373.i check_*
5374rulesets (using the
5375.b $&
5376deferred evaluation form, of course!).
5377.sh 2 "C and F \*- Define Classes"
5378.pp
5379Classes of phrases may be defined
5380to match on the left hand side of rewriting rules,
5381where a
5382.q phrase
5383is a sequence of characters that does not contain space characters.
5384For example
5385a class of all local names for this site
5386might be created
5387so that attempts to send to oneself
5388can be eliminated.
5389These can either be defined directly in the configuration file
5390or read in from another file.
5391Classes are named as a single letter or a word in {braces}.
5392Class names beginning with lower case letters
5393and special characters are reserved for system use.
5394Classes defined in config files may be given names
5395from the set of upper case letters for short names
5396or beginning with an upper case letter for long names.
5397.pp
5398The syntax is:
5399.(b F
5400.b C \c
5401.i c\|phrase1
5402.i phrase2...
5403.br
5404.b F \c
5405.i c\|file
5406.br
5407.b F \c
5408.i c\||program
5409.br
5410.b F \c
5411.i c\|[mapkey]@mapclass:mapspec
5412.)b
5413The first form defines the class
5414.i c
5415to match any of the named words.
5416If
5417.i phrase1
5418or
5419.i phrase2
5420is another class,
5421e.g.,
5422.i $=S ,
5423the contents of class
5424.i S
5425are added to class
5426.i c .
5427It is permissible to split them among multiple lines;
5428for example, the two forms:
5429.(b
5430CHmonet ucbmonet
5431.)b
5432and
5433.(b
5434CHmonet
5435CHucbmonet
5436.)b
5437are equivalent.
5438The ``F'' forms
5439read the elements of the class
5440.i c
5441from the named
5442.i file ,
5443.i program ,
5444or
5445.i "map specification" .
5446Each element should be listed on a separate line.
5447To specify an optional file, use ``\-o'' between the class
5448name and the file name, e.g.,
5449.(b
5450Fc \-o /path/to/file
5451.)b
5452If the file can't be used,
5453.i sendmail
5454will not complain but silently ignore it.
5455The map form should be an optional map key, an at sign,
5456and a map class followed by the specification for that map.
5457Examples include:
5458.(b
5459F{VirtHosts}@ldap:\-k (&(objectClass=virtHosts)(host=*)) \-v host
5460F{MyClass}foo@hash:/etc/mail/classes
5461.)b
5462will fill the class
5463.b $={VirtHosts}
5464from an LDAP map lookup and
5465.b $={MyClass}
5466from a hash database map lookup of the
5467.b foo .
5468There is also a built-in schema that can be accessed by only specifying:
5469.(b
5470F{\c
5471.i ClassName }@LDAP
5472.)b
5473This will tell sendmail to use the default schema:
5474.(b
5475\-k (&(objectClass=sendmailMTAClass)
5476 (sendmailMTAClassName=\c
5477.i ClassName )
5478 (|(sendmailMTACluster=${sendmailMTACluster})
5479 (sendmailMTAHost=$j)))
5480\-v sendmailMTAClassValue
5481.)b
5482Note that the lookup is only done when sendmail is initially started.
5483.pp
5484Elements of classes can be accessed in rules using
5485.b $=
5486or
5487.b $~ .
5488The
5489.b $~
5490(match entries not in class)
5491only matches a single word;
5492multi-word entries in the class are ignored in this context.
5493.pp
5494Some classes have internal meaning to
5495.i sendmail :
5496.nr ii 0.5i
5497.\".ip $=b
5498.\"A set of Content-Types that will not have the newline character
5499.\"translated to CR-LF before encoding into base64 MIME.
5500.\"The class can have major times
5501.\"(e.g.,
5502.\".q image )
5503.\"or full types
5504.\"(such as
5505.\".q application/octet-stream ).
5506.\"The class is initialized with
5507.\".q application/octet-stream ,
5508.\".q image ,
5509.\".q audio ,
5510.\"and
5511.\".q video .
5512.ip $=e
5513contains the Content-Transfer-Encodings that can be 8\(->7 bit encoded.
5514It is predefined to contain
5515.q 7bit ,
5516.q 8bit ,
5517and
5518.q binary .
5519.ip $=k
5520set to be the same as
5521.b $k ,
5522that is, the UUCP node name.
5523.ip $=m
5524set to the set of domains by which this host is known,
5525initially just
5526.b $m .
5527.ip $=n
5528can be set to the set of MIME body types
5529that can never be eight to seven bit encoded.
5530It defaults to
5531.q multipart/signed .
5532Message types
5533.q message/*
5534and
5535.q multipart/*
5536are never encoded directly.
5537Multipart messages are always handled recursively.
5538The handling of message/* messages
5539are controlled by class
5540.b $=s .
5541.ip $=q
5542A set of Content-Types that will never be encoded as base64
5543(if they have to be encoded, they will be encoded as quoted-printable).
5544It can have primary types
5545(e.g.,
5546.q text )
5547or full types
5548(such as
5549.q text/plain ).
5550The class is initialized to have
5551.q text/plain
5552only.
5553.ip $=s
5554contains the set of subtypes of message that can be treated recursively.
5555By default it contains only
5556.q rfc822 .
5557Other
5558.q message/*
5559types cannot be 8\(->7 bit encoded.
5560If a message containing eight bit data is sent to a seven bit host,
5561and that message cannot be encoded into seven bits,
5562it will be stripped to 7 bits.
5563.ip $=t
5564set to the set of trusted users by the
5565.b T
5566configuration line.
5567If you want to read trusted users from a file, use
5568.b Ft \c
5569.i /file/name .
5570.ip $=w
5571set to be the set of all names
5572this host is known by.
5573This can be used to match local hostnames.
5574.ip $={persistentMacros}
5575set to the macros that should be saved across queue runs.
5576Care should be taken when adding macro names to this class.
5577.pp
5578.i Sendmail
5579can be compiled to allow a
5580.i scanf (3)
5581string on the
5582.b F
5583line.
5584This lets you do simplistic parsing of text files.
5585For example, to read all the user names in your system
5586.i /etc/passwd
5587file into a class, use
5588.(b
5589FL/etc/passwd %[^:]
5590.)b
5591which reads every line up to the first colon.
5592.sh 2 "M \*- Define Mailer"
5593.pp
5594Programs and interfaces to mailers
5595are defined in this line.
5596The format is:
5597.(b F
5598.b M \c
5599.i name ,
5600{\c
5601.i field =\c
5602.i value \|}*
5603.)b
5604where
5605.i name
5606is the name of the mailer
5607(used internally only)
5608and the
5609.q field=name
5610pairs define attributes of the mailer.
5611Fields are:
5612.(b
5613.ta 1i
5614Path The pathname of the mailer
5615Flags Special flags for this mailer
5616Sender Rewriting set(s) for sender addresses
5617Recipient Rewriting set(s) for recipient addresses
5618recipients Maximum number of recipients per connection
5619Argv An argument vector to pass to this mailer
5620Eol The end-of-line string for this mailer
5621Maxsize The maximum message length to this mailer
5622maxmessages The maximum message deliveries per connection
5623Linelimit The maximum line length in the message body
5624Directory The working directory for the mailer
5625Userid The default user and group id to run as
5626Nice The nice(2) increment for the mailer
5627Charset The default character set for 8-bit characters
5628Type Type information for DSN diagnostics
5629Wait The maximum time to wait for the mailer
5630Queuegroup The default queue group for the mailer
5631/ The root directory for the mailer
5632.)b
5633Only the first character of the field name is checked
5634(it's case-sensitive).
5635.pp
5636The following flags may be set in the mailer description.
5637Any other flags may be used freely
5638to conditionally assign headers to messages
5639destined for particular mailers.
5640Flags marked with \(dg
5641are not interpreted by the
5642.i sendmail
5643binary;
5644these are the conventionally used to correlate to the flags portion
5645of the
5646.b H
5647line.
5648Flags marked with \(dd
5649apply to the mailers for the sender address
5650rather than the usual recipient mailers.
5651.nr ii 4n
5652.ip a
5653Run Extended SMTP (ESMTP) protocol (defined in RFCs 1869, 1652, and 1870).
5654This flag defaults on if the SMTP greeting message includes the word
5655.q ESMTP .
5656.ip A
5657Look up the user (address) part of the resolved mailer triple,
5658in the alias database.
5659Normally this is only set for local mailers.
5660.ip b
5661Force a blank line on the end of a message.
5662This is intended to work around some stupid versions of
5663/bin/mail
5664that require a blank line, but do not provide it themselves.
5665It would not normally be used on network mail.
5666.ip B
5667Strip leading backslashes (\e) off of the address;
5668this is a subset of the functionality of the
5669.b s
5670flag.
5671.ip c
5672Do not include comments in addresses.
5673This should only be used if you have to work around
5674a remote mailer that gets confused by comments.
5675This strips addresses of the form
5676.q "Phrase <address>"
5677or
5678.q "address (Comment)"
5679down to just
5680.q address .
5681.ip C\(dd
5682If mail is
5683.i received
5684from a mailer with this flag set,
5685any addresses in the header that do not have an at sign
5686(\c
5687.q @ )
5688after being rewritten by ruleset three
5689will have the
5690.q @domain
5691clause from the sender envelope address
5692tacked on.
5693This allows mail with headers of the form:
5694.(b
5695From: usera@hosta
5696To: userb@hostb, userc
5697.)b
5698to be rewritten as:
5699.(b
5700From: usera@hosta
5701To: userb@hostb, userc@hosta
5702.)b
5703automatically.
5704However, it doesn't really work reliably.
5705.ip d
5706Do not include angle brackets around route-address syntax addresses.
5707This is useful on mailers that are going to pass addresses to a shell
5708that might interpret angle brackets as I/O redirection.
5709However, it does not protect against other shell metacharacters.
5710Therefore, passing addresses to a shell should not be considered secure.
5711.ip D\(dg
5712This mailer wants a
5713.q Date:
5714header line.
5715.ip e
5716This mailer is expensive to connect to,
5717so try to avoid connecting normally;
5718any necessary connection will occur during a queue run.
5719See also option
5720.b HoldExpensive .
5721.ip E
5722Escape lines beginning with
5723.q From\0
5724in the message with a `>' sign.
5725.ip f
5726The mailer wants a
5727.b \-f
5728.i from
5729flag,
5730but only if this is a network forward operation
5731(i.e.,
5732the mailer will give an error
5733if the executing user
5734does not have special permissions).
5735.ip F\(dg
5736This mailer wants a
5737.q From:
5738header line.
5739.ip g
5740Normally,
5741.i sendmail
5742sends internally generated email (e.g., error messages)
5743using the null return address
5744as required by RFC 1123.
5745However, some mailers don't accept a null return address.
5746If necessary,
5747you can set the
5748.b g
5749flag to prevent
5750.i sendmail
5751from obeying the standards;
5752error messages will be sent as from the MAILER-DAEMON
5753(actually, the value of the
5754.b $n
5755macro).
5756.ip h
5757Upper case should be preserved in host names
5758(the $@ portion of the mailer triplet resolved from ruleset 0)
5759for this mailer.
5760.ip i
5761Do User Database rewriting on envelope sender address.
5762.ip I
5763This mailer will be speaking SMTP
5764to another
5765.i sendmail
5766\*-
5767as such it can use special protocol features.
5768This flag should not be used except for debugging purposes
5769because it uses
5770.b VERB
5771as SMTP command.
5772.ip j
5773Do User Database rewriting on recipients as well as senders.
5774.ip k
5775Normally when
5776.i sendmail
5777connects to a host via SMTP,
5778it checks to make sure that this isn't accidently the same host name
5779as might happen if
5780.i sendmail
5781is misconfigured or if a long-haul network interface is set in loopback mode.
5782This flag disables the loopback check.
5783It should only be used under very unusual circumstances.
5784.ip K
5785Currently unimplemented.
5786Reserved for chunking.
5787.ip l
5788This mailer is local
5789(i.e.,
5790final delivery will be performed).
5791.ip L
5792Limit the line lengths as specified in RFC 821.
5793This deprecated option should be replaced by the
5794.b L=
5795mail declaration.
5796For historic reasons, the
5797.b L
5798flag also sets the
5799.b 7
5800flag.
5801.ip m
5802This mailer can send to multiple users
5803on the same host
5804in one transaction.
5805When a
5806.b $u
5807macro occurs in the
5808.i argv
5809part of the mailer definition,
5810that field will be repeated as necessary
5811for all qualifying users.
5812Removing this flag can defeat duplicate supression on a remote site
5813as each recipient is sent in a separate transaction.
5814.ip M\(dg
5815This mailer wants a
5816.q Message-Id:
5817header line.
5818.ip n
5819Do not insert a UNIX-style
5820.q From
5821line on the front of the message.
5822.ip o
5823Always run as the owner of the recipient mailbox.
5824Normally
5825.i sendmail
5826runs as the sender for locally generated mail
5827or as
5828.q daemon
5829(actually, the user specified in the
5830.b u
5831option)
5832when delivering network mail.
5833The normal behavior is required by most local mailers,
5834which will not allow the envelope sender address
5835to be set unless the mailer is running as daemon.
5836This flag is ignored if the
5837.b S
5838flag is set.
5839.ip p
5840Use the route-addr style reverse-path in the SMTP
5841.q "MAIL FROM:"
5842command
5843rather than just the return address;
5844although this is required in RFC 821 section 3.1,
5845many hosts do not process reverse-paths properly.
5846Reverse-paths are officially discouraged by RFC 1123.
5847.ip P\(dg
5848This mailer wants a
5849.q Return-Path:
5850line.
5851.ip q
5852When an address that resolves to this mailer is verified
5853(SMTP VRFY command),
5854generate 250 responses instead of 252 responses.
5855This will imply that the address is local.
5856.ip r
5857Same as
5858.b f ,
5859but sends a
5860.b \-r
5861flag.
5862.ip R
5863Open SMTP connections from a
5864.q secure
5865port.
5866Secure ports aren't
5867(secure, that is)
5868except on UNIX machines,
5869so it is unclear that this adds anything.
5870.i sendmail
5871must be running as root to be able to use this flag.
5872.ip s
5873Strip quote characters (" and \e) off of the address
5874before calling the mailer.
5875.ip S
5876Don't reset the userid
5877before calling the mailer.
5878This would be used in a secure environment
5879where
5880.i sendmail
5881ran as root.
5882This could be used to avoid forged addresses.
5883If the
5884.b U=
5885field is also specified,
5886this flag causes the effective user id to be set to that user.
5887.ip u
5888Upper case should be preserved in user names for this mailer. Standards
5889require preservation of case in the local part of addresses, except for
5890those address for which your system accepts responsibility.
5891RFC 2142 provides a long list of addresses which should be case
5892insensitive.
5893If you use this flag, you may be violating RFC 2142.
5894Note that postmaster is always treated as a case insensitive address
5895regardless of this flag.
5896.ip U
5897This mailer wants UUCP-style
5898.q From
5899lines with the ugly
5900.q "remote from <host>"
5901on the end.
5902.ip w
5903The user must have a valid account on this machine,
5904i.e.,
5905.i getpwnam
5906must succeed.
5907If not, the mail is bounced.
5908See also the
5909.b MailBoxDatabase
5910option.
5911This is required to get
5912.q \&.forward
5913capability.
5914.ip W
5915Ignore long term host status information (see Section
5916"Persistent Host Status Information").
5917.ip x\(dg
5918This mailer wants a
5919.q Full-Name:
5920header line.
5921.ip X
5922This mailer wants to use the hidden dot algorithm as specified in RFC 821;
5923basically, any line beginning with a dot will have an extra dot prepended
5924(to be stripped at the other end).
5925This insures that lines in the message containing a dot
5926will not terminate the message prematurely.
5927.ip z
5928Run Local Mail Transfer Protocol (LMTP)
5929between
5930.i sendmail
5931and the local mailer.
5932This is a variant on SMTP
5933defined in RFC 2033
5934that is specifically designed for delivery to a local mailbox.
5935.ip Z
5936Apply DialDelay (if set) to this mailer.
5937.ip 0
5938Don't look up MX records for hosts sent via SMTP/LMTP.
5939Do not apply
5940.b FallbackMXhost
5941either.
5942.ip 1
5943Don't send null characters ('\\0') to this mailer.
5944.ip 2
5945Don't use ESMTP even if offered; this is useful for broken
5946systems that offer ESMTP but fail on EHLO (without recovering
5947when HELO is tried next).
5948.ip 3
5949Extend the list of characters converted to =XX notation
5950when converting to Quoted-Printable
5951to include those that don't map cleanly between ASCII and EBCDIC.
5952Useful if you have IBM mainframes on site.
5953.ip 5
5954If no aliases are found for this address,
5955pass the address through ruleset 5 for possible alternate resolution.
5956This is intended to forward the mail to an alternate delivery spot.
5957.ip 6
5958Strip headers to seven bits.
5959.ip 7
5960Strip all output to seven bits.
5961This is the default if the
5962.b L
5963flag is set.
5964Note that clearing this option is not
5965sufficient to get full eight bit data passed through
5966.i sendmail .
5967If the
5968.b 7
5969option is set, this is essentially always set,
5970since the eighth bit was stripped on input.
5971Note that this option will only impact messages
5972that didn't have 8\(->7 bit MIME conversions performed.
5973.ip 8
5974If set,
5975it is acceptable to send eight bit data to this mailer;
5976the usual attempt to do 8\(->7 bit MIME conversions will be bypassed.
5977.ip 9
5978If set,
5979do
5980.i limited
59817\(->8 bit MIME conversions.
5982These conversions are limited to text/plain data.
5983.ip :
5984Check addresses to see if they begin
5985.q :include: ;
5986if they do, convert them to the
5987.q *include*
5988mailer.
5989.ip |
5990Check addresses to see if they begin with a `|';
5991if they do, convert them to the
5992.q prog
5993mailer.
5994.ip /
5995Check addresses to see if they begin with a `/';
5996if they do, convert them to the
5997.q *file*
5998mailer.
5999.ip @
6000Look up addresses in the user database.
6001.ip %
6002Do not attempt delivery on initial recipient of a message
6002Do not attempt delivery on initial receipt of a message
6003or on queue runs
6004unless the queued message is selected
6005using one of the -qI/-qR/-qS queue run modifiers
6006or an ETRN request.
6007.pp
6008Configuration files prior to level 6
6009assume the `A', `w', `5', `:', `|', `/', and `@' options
6010on the mailer named
6011.q local .
6012.pp
6013The mailer with the special name
6014.q error
6015can be used to generate a user error.
6016The (optional) host field is an exit status to be returned,
6017and the user field is a message to be printed.
6018The exit status may be numeric or one of the values
6019USAGE, NOUSER, NOHOST, UNAVAILABLE, SOFTWARE, TEMPFAIL, PROTOCOL, or CONFIG
6020to return the corresponding EX_ exit code,
6021or an enhanced error code as described in RFC 1893,
6022.ul
6023Enhanced Mail System Status Codes.
6024For example, the entry:
6025.(b
6026$#error $@ NOHOST $: Host unknown in this domain
6027.)b
6028on the RHS of a rule
6029will cause the specified error to be generated
6030and the
6031.q "Host unknown"
6032exit status to be returned
6033if the LHS matches.
6034This mailer is only functional in rulesets 0, 5,
6035or one of the check_* rulesets.
6036The host field can also contain the special token
6037.b quarantine
6038which instructs sendmail to quarantine the current message.
6039.pp
6040The mailer with the special name
6041.q discard
6042causes any mail sent to it to be discarded
6043but otherwise treated as though it were successfully delivered.
6044This mailer cannot be used in ruleset 0,
6045only in the various address checking rulesets.
6046.pp
6047The mailer named
6048.q local
6049.i must
6050be defined in every configuration file.
6051This is used to deliver local mail,
6052and is treated specially in several ways.
6053Additionally, three other mailers named
6054.q prog ,
6055.q *file* ,
6056and
6057.q *include*
6058may be defined to tune the delivery of messages to programs,
6059files,
6060and :include: lists respectively.
6061They default to:
6062.(b
6063Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh \-c $u
6064M*file*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u
6065M*include*, P=/dev/null, F=su, A=INCLUDE $u
6066.)b
6067.pp
6068Builtin pathnames are [FILE] and [IPC], the former is used for
6069delivery to files, the latter for delivery via interprocess communication.
6070For mailers that use [IPC] as pathname the argument vector (A=)
6071must start with TCP or FILE for delivery via a TCP or a Unix domain socket.
6072If TCP is used, the second argument must be the name of the host
6073to contact.
6074Optionally a third argument can be used to specify a port,
6075the default is smtp (port 25).
6076If FILE is used, the second argument must be the name of
6077the Unix domain socket.
6078.pp
6079If the argument vector does not contain $u then
6080.i sendmail
6081will speak SMTP (or LMTP if the mailer flag z is specified) to the mailer.
6082.pp
6083If no Eol field is defined, then the default is "\\r\\n" for
6084SMTP mailers and "\\n" of others.
6085.pp
6086The Sender and Recipient rewriting sets
6087may either be a simple ruleset id
6088or may be two ids separated by a slash;
6089if so, the first rewriting set is applied to envelope
6090addresses
6091and the second is applied to headers.
6092Setting any value to zero disables corresponding mailer-specific rewriting.
6093.pp
6094The Directory
6095is actually a colon-separated path of directories to try.
6096For example, the definition
6097.q D=$z:/
6098first tries to execute in the recipient's home directory;
6099if that is not available,
6100it tries to execute in the root of the filesystem.
6101This is intended to be used only on the
6102.q prog
6103mailer,
6104since some shells (such as
6105.i csh )
6106refuse to execute if they cannot read the current directory.
6107Since the queue directory is not normally readable by unprivileged users
6108.i csh
6109scripts as recipients can fail.
6110.pp
6111The Userid
6112specifies the default user and group id to run as,
6113overriding the
6114.b DefaultUser
6115option (q.v.).
6116If the
6117.b S
6118mailer flag is also specified,
6119this user and group will be set as the
6120effective uid and gid for the process.
6121This may be given as
6122.i user:group
6123to set both the user and group id;
6124either may be an integer or a symbolic name to be looked up
6125in the
6126.i passwd
6127and
6128.i group
6129files respectively.
6130If only a symbolic user name is specified,
6131the group id in the
6132.i passwd
6133file for that user is used as the group id.
6134.pp
6135The Charset field
6136is used when converting a message to MIME;
6137this is the character set used in the
6138Content-Type: header.
6139If this is not set, the
6140.b DefaultCharset
6141option is used,
6142and if that is not set, the value
6143.q unknown-8bit
6144is used.
6145.b WARNING:
6146this field applies to the sender's mailer,
6147not the recipient's mailer.
6148For example, if the envelope sender address
6149lists an address on the local network
6150and the recipient is on an external network,
6151the character set will be set from the Charset= field
6152for the local network mailer,
6153not that of the external network mailer.
6154.pp
6155The Type= field
6156sets the type information
6157used in MIME error messages
6158as defined by
6159RFC 1894.
6160It is actually three values separated by slashes:
6161the MTA-type (that is, the description of how hosts are named),
6162the address type (the description of e-mail addresses),
6163and the diagnostic type (the description of error diagnostic codes).
6164Each of these must be a registered value
6165or begin with
6166.q X\- .
6167The default is
6168.q dns/rfc822/smtp .
6169.pp
6170The m= field specifies the maximum number of messages
6171to attempt to deliver on a single SMTP or LMTP connection.
6172The default is infinite.
6173.pp
6174The r= field specifies the maximum number of recipients
6175to attempt to deliver in a single envelope.
6176It defaults to 100.
6177.pp
6178The /= field specifies a new root directory for the mailer. The path is
6179macro expanded and then passed to the
6180.q chroot
6181system call. The root directory is changed before the Directory field is
6182consulted or the uid is changed.
6183.pp
6184The Wait= field specifies the maximum time to wait for the
6185mailer to return after sending all data to it.
6186This applies to mailers that have been forked by
6187.i sendmail .
6188.pp
6189The Queuegroup= field specifies the default queue group in which
6190received mail should be queued.
6191This can be overridden by other means as explained in section
6192``Queue Groups and Queue Directories''.
6193.sh 2 "H \*- Define Header"
6194.pp
6195The format of the header lines that
6196.i sendmail
6197inserts into the message
6198are defined by the
6199.b H
6200line.
6201The syntax of this line is one of the following:
6202.(b F
6203.b H \c
6204.i hname \c
6205.b :
6206.i htemplate
6207.)b
6208.(b F
6209.b H [\c
6210.b ? \c
6211.i mflags \c
6212.b ? \c
6213.b ]\c
6214.i hname \c
6215.b :
6216.i htemplate
6217.)b
6218.(b F
6219.b H [\c
6220.b ?$ \c
6221.i {macro} \c
6222.b ? \c
6223.b ]\c
6224.i hname \c
6225.b :
6226.i htemplate
6227.)b
6228Continuation lines in this spec
6229are reflected directly into the outgoing message.
6230The
6231.i htemplate
6232is macro-expanded before insertion into the message.
6233If the
6234.i mflags
6235(surrounded by question marks)
6236are specified,
6237at least one of the specified flags
6238must be stated in the mailer definition
6239for this header to be automatically output.
6240If a
6241.i ${macro}
6242(surrounded by question marks)
6243is specified,
6244the header will be automatically output
6245if the macro is set.
6246The macro may be set using any of the normal methods,
6247including using the
6248.b macro
6249storage map in a ruleset.
6250If one of these headers is in the input
6251it is reflected to the output
6252regardless of these flags or macros.
6253Notice:
6254If a
6255.i ${macro}
6256is used to set a header, then it is useful to add that macro to class
6257.i $={persistentMacros}
6258which consists of the macros that should be saved across queue runs.
6259.pp
6260Some headers have special semantics
6261that will be described later.
6262.pp
6263A secondary syntax allows validation of headers as they are being read.
6264To enable validation, use:
6265.(b
6266.b H \c
6267.i Header \c
6268.b ": $>" \c
6269.i Ruleset
6270.b H \c
6271.i Header \c
6272.b ": $>+" \c
6273.i Ruleset
6274.)b
6275The indicated
6276.i Ruleset
6277is called for the specified
6278.i Header ,
6279and can return
6280.b $#error
6281to reject or quarantine the message or
6282.b $#discard
6283to discard the message
6284(as with the other
6285.b check_ *
6286rulesets).
6287The ruleset receives the header field-body as argument,
6288i.e., not the header field-name; see also
6289${hdr_name} and ${currHeader}.
6290The header is treated as a structured field,
6291that is,
6292text in parentheses is deleted before processing,
6293unless the second form
6294.b $>+
6295is used.
6296Note: only one ruleset can be associated with a header;
6297.i sendmail
6298will silently ignore multiple entries.
6299.pp
6300For example, the configuration lines:
6301.(b
6302HMessage-Id: $>CheckMessageId
6303
6304SCheckMessageId
6305R< $+ @ $+ > $@ OK
6306R$* $#error $: Illegal Message-Id header
6307.)b
6308would refuse any message that had a Message-Id: header of any of the
6309following forms:
6310.(b
6311Message-Id: <>
6312Message-Id: some text
6313Message-Id: <legal text@domain> extra crud
6314.)b
6315A default ruleset that is called for headers which don't have a
6316specific ruleset defined for them can be specified by:
6317.(b
6318.b H \c
6319.i * \c
6320.b ": $>" \c
6321.i Ruleset
6322.)b
6323or
6324.(b
6325.b H \c
6326.i * \c
6327.b ": $>+" \c
6328.i Ruleset
6329.)b
6330.sh 2 "O \*- Set Option"
6331.pp
6332There are a number of global options that
6333can be set from a configuration file.
6334Options are represented by full words;
6335some are also representable as single characters for back compatibility.
6336The syntax of this line is:
6337.(b F
6338.b O \0
6339.i option \c
6340.b = \c
6341.i value
6342.)b
6343This sets option
6344.i option
6345to be
6346.i value .
6347Note that there
6348.i must
6349be a space between the letter `O' and the name of the option.
6350An older version is:
6351.(b F
6352.b O \c
6353.i o\|value
6354.)b
6355where the option
6356.i o
6357is a single character.
6358Depending on the option,
6359.i value
6360may be a string, an integer,
6361a boolean
6362(with legal values
6363.q t ,
6364.q T ,
6365.q f ,
6366or
6367.q F ;
6368the default is TRUE),
6369or
6370a time interval.
6371.pp
6372All filenames used in options should be absolute paths,
6373i.e., starting with '/'.
6374Relative filenames most likely cause surprises during operation
6375(unless otherwise noted).
6376.pp
6377The options supported (with the old, one character names in brackets) are:
6378.nr ii 1i
6379.ip "AliasFile=\fIspec, spec, ...\fP"
6380[A]
6381Specify possible alias file(s).
6382Each
6383.i spec
6384should be in the format
6385``\c
6386.i class \c
6387.b :
6388.i info ''
6389where
6390.i class \c
6391.b :
6392is optional and defaults to ``implicit''.
6393Note that
6394.i info
6395is required for all
6396.i class es
6397except
6398.q ldap .
6399For the
6400.q ldap
6401class,
6402if
6403.i info
6404is not specified,
6405a default
6406.i info
6407value is used as follows:
6408.(b
6409\-k (&(objectClass=sendmailMTAAliasObject)
6410 (sendmailMTAAliasName=aliases)
6411 (|(sendmailMTACluster=${sendmailMTACluster})
6412 (sendmailMTAHost=$j))
6413 (sendmailMTAKey=%0))
6414\-v sendmailMTAAliasValue
6415.)b
6416Depending on how
6417.i sendmail
6418is compiled, valid classes are
6419.q implicit
6420(search through a compiled-in list of alias file types,
6421for back compatibility),
6422.q hash
6423(if
6424.sm NEWDB
6425is specified),
6426.q btree
6427(if
6428.sm NEWDB
6429is specified),
6430.q dbm
6431(if
6432.sm NDBM
6433is specified),
6434.q stab
6435(internal symbol table \*- not normally used
6436unless you have no other database lookup),
6437.q sequence
6438(use a sequence of maps
6439previously declared),
6440.q ldap
6441(if
6442.sm LDAPMAP
6443is specified),
6444or
6445.q nis
6446(if
6447.sm NIS
6448is specified).
6449If a list of
6450.i spec s
6451are provided,
6452.i sendmail
6453searches them in order.
6454.ip AliasWait=\fItimeout\fP
6455[a]
6456If set,
6457wait up to
6458.i timeout
6459(units default to minutes)
6460for an
6461.q @:@
6462entry to exist in the alias database
6463before starting up.
6464If it does not appear in the
6465.i timeout
6466interval issue a warning.
6467.ip AllowBogusHELO
6468[no short name]
6469If set, allow HELO SMTP commands that don't include a host name.
6470Setting this violates RFC 1123 section 5.2.5,
6471but is necessary to interoperate with several SMTP clients.
6472If there is a value, it is still checked for legitimacy.
6473.ip AuthMaxBits=\fIN\fP
6474[no short name]
6475Limit the maximum encryption strength for the security layer in
6476SMTP AUTH (SASL). Default is essentially unlimited.
6477This allows to turn off additional encryption in SASL if
6478STARTTLS is already encrypting the communication, because the
6479existing encryption strength is taken into account when choosing
6480an algorithm for the security layer.
6481For example, if STARTTLS is used and the symmetric cipher is 3DES,
6482then the the keylength (in bits) is 168.
6483Hence setting
6484.b AuthMaxBits
6485to 168 will disable any encryption in SASL.
6486.ip AuthMechanisms
6487[no short name]
6488List of authentication mechanisms for AUTH (separated by spaces).
6489The advertised list of authentication mechanisms will be the
6490intersection of this list and the list of available mechanisms as
6491determined by the Cyrus SASL library.
6492If STARTTLS is active, EXTERNAL will be added to this list.
6493In that case, the value of {cert_subject} is used as authentication id.
6494.ip AuthOptions
6495[no short name]
6496List of options for SMTP AUTH consisting of single characters
6497with intervening white space or commas.
6498.(b
6499.ta 4n
6500A Use the AUTH= parameter for the MAIL FROM
6501 command only when authentication succeeded.
6502 This can be used as a workaround for broken
6503 MTAs that do not implement RFC 2554 correctly.
6504a protection from active (non-dictionary) attacks
6505 during authentication exchange.
6506c require mechanisms which pass client credentials,
6507 and allow mechanisms which can pass credentials
6508 to do so.
6509d don't permit mechanisms susceptible to passive
6510 dictionary attack.
6511f require forward secrecy between sessions
6512 (breaking one won't help break next).
6513m require mechanisms which provide mutual authentication
6514 (only available if using Cyrus SASL v2 or later).
6515p don't permit mechanisms susceptible to simple
6516 passive attack (e.g., PLAIN, LOGIN), unless a
6517 security layer is active.
6518y don't permit mechanisms that allow anonymous login.
6519.)b
6520The first option applies to sendmail as a client, the others to a server.
6521Example:
6522.(b
6523O AuthOptions=p,y
6524.)b
6525would disallow ANONYMOUS as AUTH mechanism and would
6526allow PLAIN and LOGIN only if a security layer (e.g.,
6527provided by STARTTLS) is already active.
6528The options 'a', 'c', 'd', 'f', 'p', and 'y' refer to properties of the
6529selected SASL mechanisms.
6530Explanations of these properties can be found in the Cyrus SASL documentation.
6531.ip AuthRealm
6532[no short name]
6533The authentication realm that is passed to the Cyrus SASL library.
6534If no realm is specified,
6535.b $j
6536is used.
6537.ip BadRcptThrottle=\fIN\fP
6538[no short name]
6539If set and the specified number of recipients in a single SMTP
6540transaction have been rejected, sleep for one second after each subsequent
6541RCPT command in that transaction.
6542.ip BlankSub=\fIc\fP
6543[B]
6544Set the blank substitution character to
6545.i c .
6546Unquoted spaces in addresses are replaced by this character.
6547Defaults to space (i.e., no change is made).
6548.ip CACertPath
6549[no short name]
6550Path to directory with certificates of CAs.
6551This directory directory must contain the hashes of each CA certificate
6552as filenames (or as links to them).
6553.ip CACertFile
6554[no short name]
6555File containing one or more CA certificates;
6556see section about STARTTLS for more information.
6557.ip CheckAliases
6558[n]
6559Validate the RHS of aliases when rebuilding the alias database.
6560.ip CheckpointInterval=\fIN\fP
6561[C]
6562Checkpoints the queue every
6563.i N
6564(default 10)
6565addresses sent.
6566If your system crashes during delivery to a large list,
6567this prevents retransmission to any but the last
6568.i N
6569recipients.
6570.ip ClassFactor=\fIfact\fP
6571[z]
6572The indicated
6573.i fact or
6574is multiplied by the message class
6575(determined by the Precedence: field in the user header
6576and the
6577.b P
6578lines in the configuration file)
6579and subtracted from the priority.
6580Thus, messages with a higher Priority: will be favored.
6581Defaults to 1800.
6582.ip ClientCertFile
6583[no short name]
6584File containing the certificate of the client, i.e., this certificate
6585is used when
6586.i sendmail
6587acts as client (for STARTTLS).
6588.ip ClientKeyFile
6589[no short name]
6590File containing the private key belonging to the client certificate
6591(for STARTTLS if
6592.i sendmail
6593runs as client).
6594.ip ClientPortOptions=\fIoptions\fP
6595[O]
6596Set client SMTP options.
6597The options are
6598.i key=value
6599pairs separated by commas.
6600Known keys are:
6601.(b
6602.ta 1i
6603Port Name/number of source port for connection (defaults to any free port)
6604Addr Address mask (defaults INADDR_ANY)
6605Family Address family (defaults to INET)
6606SndBufSize Size of TCP send buffer
6607RcvBufSize Size of TCP receive buffer
6608Modifier Options (flags) for the client
6609.)b
6610The
6611.i Addr ess
6612mask may be a numeric address in dot notation
6613or a network name.
6614.i Modifier
6615can be the following character:
6616.(b
6617.ta 1i
6618h use name of interface for HELO command
6619A don't use AUTH when sending e-mail
6620S don't use STARTTLS when sending e-mail
6621.)b
6622If ``h'' is set, the name corresponding to the outgoing interface
6623address (whether chosen via the Connection parameter or
6624the default) is used for the HELO/EHLO command.
6625However, the name must not start with a square bracket
6626and it must contain at least one dot.
6627This is a simple test whether the name is not
6628an IP address (in square brackets) but a qualified hostname.
6629Note that multiple ClientPortOptions settings are allowed
6630in order to give settings for each protocol family
6631(e.g., one for Family=inet and one for Family=inet6).
6632A restriction placed on one family only affects
6633outgoing connections on that particular family.
6634.ip ColonOkInAddr
6635[no short name]
6636If set, colons are acceptable in e-mail addresses
6637(e.g.,
6638.q host:user ).
6639If not set, colons indicate the beginning of a RFC 822 group construct
6640(\c
6641.q "groupname: member1, member2, ... memberN;" ).
6642Doubled colons are always acceptable
6643(\c
6644.q nodename::user )
6645and proper route-addr nesting is understood
6646(\c
6647.q <@relay:user@host> ).
6648Furthermore, this option defaults on if the configuration version level
6649is less than 6 (for back compatibility).
6650However, it must be off for full compatibility with RFC 822.
6651.ip ConnectionCacheSize=\fIN\fP
6652[k]
6653The maximum number of open connections that will be cached at a time.
6654The default is one.
6655This delays closing the current connection until
6656either this invocation of
6657.i sendmail
6658needs to connect to another host
6659or it terminates.
6660Setting it to zero defaults to the old behavior,
6661that is, connections are closed immediately.
6662Since this consumes file descriptors,
6663the connection cache should be kept small:
66644 is probably a practical maximum.
6665.ip ConnectionCacheTimeout=\fItimeout\fP
6666[K]
6667The maximum amount of time a cached connection will be permitted to idle
6668without activity.
6669If this time is exceeded,
6670the connection is immediately closed.
6671This value should be small (on the order of ten minutes).
6672Before
6673.i sendmail
6674uses a cached connection,
6675it always sends a RSET command
6676to check the connection;
6677if this fails, it reopens the connection.
6678This keeps your end from failing if the other end times out.
6679The point of this option is to be a good network neighbor
6680and avoid using up excessive resources
6681on the other end.
6682The default is five minutes.
6683.ip ConnectOnlyTo=\fIaddress\fP
6684[no short name]
6685This can be used to
6686override the connection address (for testing purposes).
6687.ip ConnectionRateThrottle=\fIN\fP
6688[no short name]
6689If set to a positive value,
6690allow no more than
6691.i N
6692incoming connections in a one second period per daemon.
6693This is intended to flatten out peaks
6694and allow the load average checking to cut in.
6695Defaults to zero (no limits).
6696.ip ConnectionRateWindowSize=\fIN\fP
6697[no short name]
6698Define the length of the interval for which
6699the number of incoming connections is maintained.
6700The default is 60 seconds.
6701.ip ControlSocketName=\fIname\fP
6702[no short name]
6703Name of the control socket for daemon management.
6704A running
6705.i sendmail
6706daemon can be controlled through this named socket.
6707Available commands are:
6708.i help,
6709.i mstat,
6710.i restart,
6711.i shutdown,
6712and
6713.i status.
6714The
6715.i status
6716command returns the current number of daemon children,
6717the maximum number of daemon children,
6718the free disk space (in blocks) of the queue directory,
6719and the load average of the machine expressed as an integer.
6720If not set, no control socket will be available.
6721Solaris and pre-4.4BSD kernel users should see the note in sendmail/README .
6722.ip CRLFile=\fIname\fP
6723[no short name]
6724Name of file that contains certificate
6725revocation status, useful for X.509v3 authentication.
6726CRL checking requires at least OpenSSL version 0.9.7.
6727Note: if a CRLFile is specified but the file is unusable,
6728STARTTLS is disabled.
6729.ip DHParameters
6730Possible values are:
6731.(b
6732.ta 1i
67335 use 512 bit prime
67341 use 1024 bit prime
6735none do not use Diffie-Hellman
6736NAME load prime from file
6737.)b
6738This is only required if a ciphersuite containing DSA/DH is used.
6739If ``5'' is selected, then precomputed, fixed primes are used.
6740This is the default for the client side.
6741If ``1'' is selected, then prime values are computed during startup.
6742This is the default for the server side.
6743Note: this operation can take a significant amount of time on a
6744slow machine (several seconds), but it is only done once at startup.
6745If ``none'' is selected, then TLS ciphersuites containing DSA/DH
6746cannot be used.
6747If a file name is specified (which must be an absolute path),
6748then the primes are read from it.
6749.ip DaemonPortOptions=\fIoptions\fP
6750[O]
6751Set server SMTP options.
6752Each instance of
6753.b DaemonPortOptions
6754leads to an additional incoming socket.
6755The options are
6756.i key=value
6757pairs.
6758Known keys are:
6759.(b
6760.ta 1i
6761Name User-definable name for the daemon (defaults to "Daemon#")
6762Port Name/number of listening port (defaults to "smtp")
6763Addr Address mask (defaults INADDR_ANY)
6764Family Address family (defaults to INET)
6765InputMailFilters List of input mail filters for the daemon
6766Listen Size of listen queue (defaults to 10)
6767Modifier Options (flags) for the daemon
6768SndBufSize Size of TCP send buffer
6769RcvBufSize Size of TCP receive buffer
6770children maximum number of children per daemon, see \fBMaxDaemonChildren\fP.
6771DeliveryMode Delivery mode per daemon, see \fBDeliveryMode\fP.
6772refuseLA RefuseLA per daemon
6773delayLA DelayLA per daemon
6774queueLA QueueLA per daemon
6775.)b
6776The
6777.i Name
6778key is used for error messages and logging.
6779The
6780.i Addr ess
6781mask may be a numeric address in dot notation
6782or a network name.
6783The
6784.i Family
6785key defaults to INET (IPv4).
6786IPv6 users who wish to also accept IPv6 connections
6787should add additional Family=inet6
6788.b DaemonPortOptions
6789lines.
6790The
6791.i InputMailFilters
6792key overrides the default list of input mail filters listed in the
6793.b InputMailFilters
6794option.
6795If multiple input mail filters are required, they must be separated
6796by semicolons (not commas).
6797.i Modifier
6798can be a sequence (without any delimiters)
6799of the following characters:
6800.(b
6801.ta 1i
6802a always require authentication
6803b bind to interface through which mail has been received
6804c perform hostname canonification (.cf)
6805f require fully qualified hostname (.cf)
6806s Run smtps (SMTP over SSL) instead of smtp
6807u allow unqualified addresses (.cf)
6808A disable AUTH (overrides 'a' modifier)
6809C don't perform hostname canonification
6810E disallow ETRN (see RFC 2476)
6811O optional; if opening the socket fails ignore it
6812S don't offer STARTTLS
6813.)b
6814That is, one way to specify a message submission agent (MSA) that
6815always requires authentication is:
6816.(b
6817O DaemonPortOptions=Name=MSA, Port=587, M=Ea
6818.)b
6819The modifiers that are marked with "(.cf)" have only
6820effect in the standard configuration file, in which
6821they are available via
6822.b ${daemon_flags} .
6823Notice: Do
6824.b not
6825use the ``a'' modifier on a public accessible MTA!
6826It should only be used for a MSA that is accessed by authorized
6827users for initial mail submission.
6828Users must authenticate to use a MSA which has this option turned on.
6829The flags ``c'' and ``C'' can change the default for
6830hostname canonification in the
6831.i sendmail.cf
6832file.
6833See the relevant documentation for
6834.sm FEATURE(nocanonify) .
6835The modifier ``f'' disallows addresses of the form
6836.b user@host
6837unless they are submitted directly.
6838The flag ``u'' allows unqualified sender addresses,
6839i.e., those without @host.
6840``b'' forces sendmail to bind to the interface
6841through which the e-mail has been
6842received for the outgoing connection.
6843.b WARNING:
6844Use ``b''
6845only if outgoing mail can be routed through the incoming connection's
6846interface to its destination. No attempt is made to catch problems due to a
6847misconfiguration of this parameter, use it only for virtual hosting
6848where each virtual interface can connect to every possible location.
6849This will also override possible settings via
6850.b ClientPortOptions.
6851Note,
6852.i sendmail
6853will listen on a new socket
6854for each occurence of the
6855.b DaemonPortOptions
6856option in a configuration file.
6857The modifier ``O'' causes sendmail to ignore a socket
6858if it can't be opened.
6859This applies to failures from the socket(2) and bind(2) calls.
6860.ip DefaultAuthInfo
6861[no short name]
6862Filename that contains default authentication information for outgoing
6863connections. This file must contain the user id, the authorization id,
6864the password (plain text), the realm and the list of mechanisms to use
6865on separate lines and must be readable by
6866root (or the trusted user) only.
6867If no realm is specified,
6868.b $j
6869is used.
6870If no mechanisms are specified, the list given by
6871.b AuthMechanisms
6872is used.
6873Notice: this option is deprecated and will be removed in future versions.
6874Moreover, it doesn't work for the MSP since it can't read the file
6875(the file must not be group/world-readable otherwise
6876.i sendmail
6877will complain).
6878Use the authinfo ruleset instead which provides more control over
6879the usage of the data anyway.
6880.ip DefaultCharSet=\fIcharset\fP
6881[no short name]
6882When a message that has 8-bit characters but is not in MIME format
6883is converted to MIME
6884(see the EightBitMode option)
6885a character set must be included in the Content-Type: header.
6886This character set is normally set from the Charset= field
6887of the mailer descriptor.
6888If that is not set, the value of this option is used.
6889If this option is not set, the value
6890.q unknown-8bit
6891is used.
6892.ip DataFileBufferSize=\fIthreshold\fP
6893[no short name]
6894Set the
6895.i threshold ,
6896in bytes,
6897before a memory-based
6898queue data file
6899becomes disk-based.
6900The default is 4096 bytes.
6901.ip DeadLetterDrop=\fIfile\fP
6902[no short name]
6903Defines the location of the system-wide dead.letter file,
6904formerly hardcoded to /usr/tmp/dead.letter.
6905If this option is not set (the default),
6906sendmail will not attempt to save to a system-wide dead.letter file
6907in the event
6908it cannot bounce the mail to the user or postmaster.
6909Instead, it will rename the qf file
6910as it has in the past
6911when the dead.letter file could not be opened.
6912.ip DefaultUser=\fIuser:group\fP
6913[u]
6914Set the default userid for mailers to
6915.i user:group .
6916If
6917.i group
6918is omitted and
6919.i user
6920is a user name
6921(as opposed to a numeric user id)
6922the default group listed in the /etc/passwd file for that user is used
6923as the default group.
6924Both
6925.i user
6926and
6927.i group
6928may be numeric.
6929Mailers without the
6930.i S
6931flag in the mailer definition
6932will run as this user.
6933Defaults to 1:1.
6934The value can also be given as a symbolic user name.\**
6935.(f
6936\**The old
6937.b g
6938option has been combined into the
6939.b DefaultUser
6940option.
6941.)f
6942.ip DelayLA=\fILA\fP
6943[no short name]
6944When the system load average exceeds
6945.i LA ,
6946.i sendmail
6947will sleep for one second on most SMTP commands and
6948before accepting connections.
6949.ip DeliverByMin=\fItime\fP
6950[0]
6951Set minimum time for Deliver By SMTP Service Extension (RFC 2852).
6952If 0, no time is listed, if less than 0, the extension is not offered,
6953if greater than 0, it is listed as minimum time
6954for the EHLO keyword DELIVERBY.
6955.ip DeliveryMode=\fIx\fP
6956[d]
6957Deliver in mode
6958.i x .
6959Legal modes are:
6960.(b
6961.ta 4n
6962i Deliver interactively (synchronously)
6963b Deliver in background (asynchronously)
6964q Just queue the message (deliver during queue run)
6965d Defer delivery and all map lookups (deliver during queue run)
6966.)b
6967Defaults to ``b'' if no option is specified,
6968``i'' if it is specified but given no argument
6969(i.e., ``Od'' is equivalent to ``Odi'').
6970The
6971.b \-v
6972command line flag sets this to
6973.b i .
6974Note: for internal reasons,
6975``i'' does not work
6976if a milter is enabled which can reject or delete recipients.
6977In that case the mode will be changed to ``b''.
6978.ip DialDelay=\fIsleeptime\fP
6979[no short name]
6980Dial-on-demand network connections can see timeouts
6981if a connection is opened before the call is set up.
6982If this is set to an interval and a connection times out
6983on the first connection being attempted
6984.i sendmail
6985will sleep for this amount of time and try again.
6986This should give your system time to establish the connection
6987to your service provider.
6988Units default to seconds, so
6989.q DialDelay=5
6990uses a five second delay.
6991Defaults to zero
6992(no retry).
6993This delay only applies to mailers which have the
6994Z flag set.
6995.ip DirectSubmissionModifiers=\fImodifiers\fP
6996Defines
6997.b ${daemon_flags}
6998for direct (command line) submissions.
6999If not set,
7000.b ${daemon_flags}
7001is either "CC f" if the option
7002.b \-G
7003is used or "c u" otherwise.
7004Note that only the the "CC", "c", "f", and "u" flags are checked.
7005.ip DontBlameSendmail=\fIoption,option,...\fP
7006[no short name]
7007In order to avoid possible cracking attempts
7008caused by world- and group-writable files and directories,
7009.i sendmail
7010does paranoid checking when opening most of its support files.
7011If for some reason you absolutely must run with,
7012for example,
7013a group-writable
7014.i /etc
7015directory,
7016then you will have to turn off this checking
7017(at the cost of making your system more vulnerable to attack).
7018The possible arguments have been described earlier.
7019The details of these flags are described above.
7020.\"XXX should have more here!!! XXX
7021.b "Use of this option is not recommended."
7022.ip DontExpandCnames
7023[no short name]
7024The standards say that all host addresses used in a mail message
7025must be fully canonical.
7026For example, if your host is named
7027.q Cruft.Foo.ORG
7028and also has an alias of
7029.q FTP.Foo.ORG ,
7030the former name must be used at all times.
7031This is enforced during host name canonification
7032($[ ... $] lookups).
7033If this option is set, the protocols are ignored and the
7034.q wrong
7035thing is done.
7036However, the IETF is moving toward changing this standard,
7037so the behavior may become acceptable.
7038Please note that hosts downstream may still rewrite the address
7039to be the true canonical name however.
7040.ip DontInitGroups
7041[no short name]
7042If set,
7043.i sendmail
7044will avoid using the initgroups(3) call.
7045If you are running NIS,
7046this causes a sequential scan of the groups.byname map,
7047which can cause your NIS server to be badly overloaded in a large domain.
7048The cost of this is that the only group found for users
7049will be their primary group (the one in the password file),
7050which will make file access permissions somewhat more restrictive.
7051Has no effect on systems that don't have group lists.
7052.ip DontProbeInterfaces
7053[no short name]
7054.i Sendmail
7055normally finds the names of all interfaces active on your machine
7056when it starts up
7057and adds their name to the
7058.b $=w
7059class of known host aliases.
7060If you have a large number of virtual interfaces
7061or if your DNS inverse lookups are slow
7062this can be time consuming.
7063This option turns off that probing.
7064However, you will need to be certain to include all variant names
7065in the
7066.b $=w
7067class by some other mechanism.
7068If set to
7069.b loopback ,
7070loopback interfaces (e.g., lo0) will not be probed.
7071.ip DontPruneRoutes
7072[R]
7073Normally,
7074.i sendmail
7075tries to eliminate any unnecessary explicit routes
7076when sending an error message
7077(as discussed in RFC 1123 \(sc 5.2.6).
7078For example,
7079when sending an error message to
7080.(b
7081<@known1,@known2,@known3:user@unknown>
7082.)b
7083.i sendmail
7084will strip off the
7085.q @known1,@known2
7086in order to make the route as direct as possible.
7087However, if the
7088.b R
7089option is set, this will be disabled,
7090and the mail will be sent to the first address in the route,
7091even if later addresses are known.
7092This may be useful if you are caught behind a firewall.
7093.ip DoubleBounceAddress=\fIerror-address\fP
7094[no short name]
7095If an error occurs when sending an error message,
7096send the error report
7097(termed a
7098.q "double bounce"
7099because it is an error
7100.q bounce
7101that occurs when trying to send another error
7102.q bounce )
7103to the indicated address.
7104The address is macro expanded
7105at the time of delivery.
7106If not set, defaults to
7107.q postmaster .
7108If set to an empty string, double bounces are dropped.
7109.ip EightBitMode=\fIaction\fP
7110[8]
7111Set handling of eight-bit data.
7112There are two kinds of eight-bit data:
7113that declared as such using the
7114.b BODY=8BITMIME
7115ESMTP declaration or the
7116.b \-B8BITMIME
7117command line flag,
7118and undeclared 8-bit data, that is,
7119input that just happens to be eight bits.
7120There are three basic operations that can happen:
7121undeclared 8-bit data can be automatically converted to 8BITMIME,
7122undeclared 8-bit data can be passed as-is without conversion to MIME
7123(``just send 8''),
7124and declared 8-bit data can be converted to 7-bits
7125for transmission to a non-8BITMIME mailer.
7126The possible
7127.i action s
7128are:
7129.(b
7130.\" r Reject undeclared 8-bit data;
7131.\" don't convert 8BITMIME\(->7BIT (``reject'')
7132 s Reject undeclared 8-bit data (``strict'')
7133.\" do convert 8BITMIME\(->7BIT (``strict'')
7134.\" c Convert undeclared 8-bit data to MIME;
7135.\" don't convert 8BITMIME\(->7BIT (``convert'')
7136 m Convert undeclared 8-bit data to MIME (``mime'')
7137.\" do convert 8BITMIME\(->7BIT (``mime'')
7138.\" j Pass undeclared 8-bit data;
7139.\" don't convert 8BITMIME\(->7BIT (``just send 8'')
7140 p Pass undeclared 8-bit data (``pass'')
7141.\" do convert 8BITMIME\(->7BIT (``pass'')
7142.\" a Adaptive algorithm: see below
7143.)b
7144.\"The adaptive algorithm is to accept 8-bit data,
7145.\"converting it to 8BITMIME only if the receiver understands that,
7146.\"otherwise just passing it as undeclared 8-bit data;
7147.\"8BITMIME\(->7BIT conversions are done.
7148In all cases properly declared 8BITMIME data will be converted to 7BIT
7149as needed.
7150.ip ErrorHeader=\fIfile-or-message\fP
7151[E]
7152Prepend error messages with the indicated message.
7153If it begins with a slash,
7154it is assumed to be the pathname of a file
7155containing a message (this is the recommended setting).
7156Otherwise, it is a literal message.
7157The error file might contain the name, email address, and/or phone number
7158of a local postmaster who could provide assistance
7159to end users.
7160If the option is missing or null,
7161or if it names a file which does not exist or which is not readable,
7162no message is printed.
7163.ip ErrorMode=\fIx\fP
7164[e]
7165Dispose of errors using mode
7166.i x .
7167The values for
7168.i x
7169are:
7170.(b
7171p Print error messages (default)
7172q No messages, just give exit status
7173m Mail back errors
7174w Write back errors (mail if user not logged in)
7175e Mail back errors (when applicable) and give zero exit stat always
7176.)b
7177Note that the last mode,
7178.q e ,
7179is for Berknet error processing and
7180should not be used in normal circumstances.
7181Note, too, that mode
7182.q q ,
7183only applies to errors recognized before sendmail forks for
7184background delivery.
7185.ip FallbackMXhost=\fIfallbackhost\fP
7186[V]
7187If specified, the
7188.i fallbackhost
7189acts like a very low priority MX
7190on every host.
7191MX records will be looked up for this host,
7192unless the name is surrounded by square brackets.
7193This is intended to be used by sites with poor network connectivity.
7194Messages which are undeliverable due to temporary address failures
7195(e.g., DNS failure)
7196also go to the FallbackMXhost.
7197.ip FallBackSmartHost=\fIhostname\fP
7198If specified, the
7199.i FallBackSmartHost
7200will be used in a last-ditch effort for each host.
7201This is intended to be used by sites with "fake internal DNS",
7202e.g., a company whose DNS accurately reflects the world
7203inside that company's domain but not outside.
7204.ip FastSplit
7205[no short name]
7206If set to a value greater than zero (the default is one),
7207it suppresses the MX lookups on addresses
7208when they are initially sorted, i.e., for the first delivery attempt.
7209This usually results in faster envelope splitting unless the MX records
7210are readily available in a local DNS cache.
7211To enforce initial sorting based on MX records set
7212.b FastSplit
7213to zero.
7214If the mail is submitted directly from the command line, then
7215the value also limits the number of processes to deliver the envelopes;
7216if more envelopes are created they are only queued up
7217and must be taken care of by a queue run.
7218Since the default submission method is via SMTP (either from a MUA
7219or via the MSP), the value of
7220.b FastSplit
7221is seldom used to limit the number of processes to deliver the envelopes.
7222.ip ForkEachJob
7223[Y]
7224If set,
7225deliver each job that is run from the queue in a separate process.
7226.ip ForwardPath=\fIpath\fP
7227[J]
7228Set the path for searching for users' .forward files.
7229The default is
7230.q $z/.forward .
7231Some sites that use the automounter may prefer to change this to
7232.q /var/forward/$u
7233to search a file with the same name as the user in a system directory.
7234It can also be set to a sequence of paths separated by colons;
7235.i sendmail
7236stops at the first file it can successfully and safely open.
7237For example,
7238.q /var/forward/$u:$z/.forward
7239will search first in /var/forward/\c
7240.i username
7241and then in
7242.i ~username /.forward
7243(but only if the first file does not exist).
7244.ip HeloName=\fIname\fP
7245[no short name]
7246Set the name to be used for HELO/EHLO (instead of $j).
7247.ip HoldExpensive
7248[c]
7249If an outgoing mailer is marked as being expensive,
7250don't connect immediately.
7251.ip HostsFile=\fIpath\fP
7252[no short name]
7253The path to the hosts database,
7254normally
7255.q /etc/hosts .
7256This option is only consulted when sendmail
7257is canonifying addresses,
7258and then only when
7259.q files
7260is in the
7261.q hosts
7262service switch entry.
7263In particular, this file is
7264.i never
7265used when looking up host addresses;
7266that is under the control of the system
7267.i gethostbyname (3)
7268routine.
7269.ip HostStatusDirectory=\fIpath\fP
7270[no short name]
7271The location of the long term host status information.
7272When set,
7273information about the status of hosts
7274(e.g., host down or not accepting connections)
7275will be shared between all
7276.i sendmail
7277processes;
7278normally, this information is only held within a single queue run.
7279This option requires a connection cache of at least 1 to function.
7280If the option begins with a leading `/',
7281it is an absolute pathname;
7282otherwise,
7283it is relative to the mail queue directory.
7284A suggested value for sites desiring persistent host status is
7285.q \&.hoststat
7286(i.e., a subdirectory of the queue directory).
7287.ip IgnoreDots
7288[i]
7289Ignore dots in incoming messages.
7290This is always disabled (that is, dots are always accepted)
7291when reading SMTP mail.
7292.ip InputMailFilters=\fIname,name,...\fP
7293A comma separated list of filters which determines which filters
7294(see the "X \*- Mail Filter (Milter) Definitions" section)
7295and the invocation sequence are contacted for incoming SMTP messages.
7296If none are set, no filters will be contacted.
7297.ip LDAPDefaultSpec=\fIspec\fP
7298[no short name]
7299Sets a default map specification for LDAP maps.
7300The value should only contain LDAP specific settings
7301such as
7302.q "-h host -p port -d bindDN" .
7303The settings will be used for all LDAP maps
7304unless the individual map specification overrides a setting.
7305This option should be set before any LDAP maps are defined.
7306.ip LogLevel=\fIn\fP
7307[L]
7308Set the log level to
7309.i n .
7310Defaults to 9.
7311.ip M\fIx\|value\fP
7312[no long version]
7313Set the macro
7314.i x
7315to
7316.i value .
7317This is intended only for use from the command line.
7318The
7319.b \-M
7320flag is preferred.
7321.ip MailboxDatabase
7322[no short name]
7323Type of lookup to find information about local mailboxes,
7324defaults to ``pw'' which uses
7325.i getpwnam .
7326Other types can be introduced by adding them to the source code,
7327see libsm/mbdb.c for details.
7328.ip UseMSP
7329[no short name]
7330Use as mail submission program, i.e.,
7331allow group writable queue files
7332if the group is the same as that of a set-group-ID sendmail binary.
7333See the file
7334.b sendmail/SECURITY
7335in the distribution tarball.
7336.ip MatchGECOS
7337[G]
7338Allow fuzzy matching on the GECOS field.
7339If this flag is set,
7340and the usual user name lookups fail
7341(that is, there is no alias with this name and a
7342.i getpwnam
7343fails),
7344sequentially search the password file
7345for a matching entry in the GECOS field.
7346This also requires that MATCHGECOS
7347be turned on during compilation.
7348This option is not recommended.
7349.ip MaxAliasRecursion=\fIN\fP
7350[no short name]
7351The maximum depth of alias recursion (default: 10).
7352.ip MaxDaemonChildren=\fIN\fP
7353[no short name]
7354If set,
7355.i sendmail
7356will refuse connections when it has more than
7357.i N
7358children processing incoming mail or automatic queue runs.
7359This does not limit the number of outgoing connections.
7360If the default
7361.b DeliveryMode
7362(background) is used, then
7363.i sendmail
7364may create an almost unlimited number of children
7365(depending on the number of transactions and the
7366relative execution times of mail receiption and mail delivery).
7367If the limit should be enforced, then a
7368.b DeliveryMode
7369other than background must be used.
7370If not set, there is no limit to the number of children --
7371that is, the system load average controls this.
7372.ip MaxHeadersLength=\fIN\fP
7373[no short name]
7374The maximum length of the sum of all headers.
7375This can be used to prevent a denial of service attack.
7376The default is no limit.
7377.ip MaxHopCount=\fIN\fP
7378[h]
7379The maximum hop count.
7380Messages that have been processed more than
7381.i N
7382times are assumed to be in a loop and are rejected.
7383Defaults to 25.
7384.ip MaxMessageSize=\fIN\fP
7385[no short name]
7386Specify the maximum message size
7387to be advertised in the ESMTP EHLO response.
7388Messages larger than this will be rejected.
7389If set to a value greater than zero,
7390that value will be listed in the SIZE response,
7391otherwise SIZE is advertised in the ESMTP EHLO response
7392without a parameter.
7393.ip MaxMimeHeaderLength=\fIN[/M]\fP
7394[no short name]
7395Sets the maximum length of certain MIME header field values to
7396.i N
7397characters.
7398These MIME header fields are determined by being a member of
7399class {checkMIMETextHeaders}, which currently contains only
7400the header Content-Description.
7401For some of these headers which take parameters,
7402the maximum length of each parameter is set to
7403.i M
7404if specified. If
7405.i /M
7406is not specified, one half of
7407.i N
7408will be used.
7409By default,
7410these values are 2048 and 1024, respectively.
7411To allow any length, a value of 0 can be specified.
7412.ip MaxNOOPCommands=\fIN\fP
7413Override the default of
7414.b MAXNOOPCOMMANDS
7415for the number of
7416.i useless
7417commands, see Section
7418"Measures against Denial of Service Attacks".
7419.ip MaxQueueChildren=\fIN\fP
7420[no short name]
7421When set, this limits the number of concurrent queue runner processes to
7422.i N.
7423This helps to control the amount of system resources used when processing
7424the queue. When there are multiple queue groups defined and the total number
7425of queue runners for these queue groups would exceed
7426.i MaxQueueChildren
7427then the queue groups will not all run concurrently. That is, some portion
7428of the queue groups will run concurrently such that
7429.i MaxQueueChildren
7430will not be exceeded, while the remaining queue groups will be run later (in
7431round robin order). See also
7432.i MaxRunnersPerQueue
7433and the section \fBQueue Group Declaration\fP.
7434Notice:
7435.i sendmail
7436does not count individual queue runners, but only sets of processes
7437that act on a workgroup.
7438Hence the actual number of queue runners may be lower than the limit
7439imposed by
7440.i MaxQueueChildren .
7441This discrepancy can be large if some queue runners have to wait
7442for a slow server and if short intervals are used.
7443.ip MaxQueueRunSize=\fIN\fP
7444[no short name]
7445The maximum number of jobs that will be processed
7446in a single queue run.
7447If not set, there is no limit on the size.
7448If you have very large queues or a very short queue run interval
7449this could be unstable.
7450However, since the first
7451.i N
7452jobs in queue directory order are run (rather than the
7453.i N
7454highest priority jobs)
7455this should be set as high as possible to avoid
7456.q losing
7457jobs that happen to fall late in the queue directory.
7458Note: this option also restricts the number of entries printed by
7459.i mailq .
7460That is, if
7461.i MaxQueueRunSize
7462is set to a value
7463.b N
7464larger than zero,
7465then only
7466.b N
7467entries are printed per queue group.
7468.ip MaxRecipientsPerMessage=\fIN\fP
7469[no short name]
7470The maximum number of recipients that will be accepted per message
7471in an SMTP transaction.
7472Note: setting this too low can interfere with sending mail from
7473MUAs that use SMTP for initial submission.
7474If not set, there is no limit on the number of recipients per envelope.
7475.ip MaxRunnersPerQueue=\fIN\fP
7476[no short name]
7477This sets the default maximum number of queue runners for queue groups.
7478Up to
7479.i N
7480queue runners will work in parallel on a queue group's messages.
7481This is useful where the processing of a message in the queue might
7482delay the processing of subsequent messages. Such a delay may be the result
7483of non-erroneous situations such as a low bandwidth connection.
7484May be overridden on a per queue group basis by setting the
7485.i Runners
7486option; see the section \fBQueue Group Declaration\fP.
7487The default is 1 when not set.
7488.ip MeToo
7489[m]
7490Send to me too,
7491even if I am in an alias expansion.
7492This option is deprecated
7493and will be removed from a future version.
7494.ip Milter
7495[no short name]
7496This option has several sub(sub)options.
7497The names of the suboptions are separated by dots.
7498At the first level the following options are available:
7499.(b
7500.ta \w'LogLevel'u+3n
7501LogLevel Log level for input mail filter actions, defaults to LogLevel.
7502macros Specifies list of macro to transmit to filters.
7503 See list below.
7504.)b
7505The ``macros'' option has the following suboptions
7506which specify the list of macro to transmit to milters
7507after a certain event occurred.
7508.(b
7509.ta \w'envfrom'u+3n
7510connect After session connection start
7511helo After EHLO/HELO command
7512envfrom After MAIL From command
7513envrcpt After RCPT To command
7514data After DATA command.
7515eoh After DATA command and header
7516eom After DATA command and terminating ``.''
7517.)b
7518By default the lists of macros are empty.
7519Example:
7520.(b
7521O Milter.LogLevel=12
7522O Milter.macros.connect=j, _, {daemon_name}
7523.)b
7524.ip MinFreeBlocks=\fIN\fP
7525[b]
7526Insist on at least
7527.i N
7528blocks free on the filesystem that holds the queue files
7529before accepting email via SMTP.
7530If there is insufficient space
7531.i sendmail
7532gives a 452 response
7533to the MAIL command.
7534This invites the sender to try again later.
7535.ip MinQueueAge=\fIage\fP
7536[no short name]
7537Don't process any queued jobs
7538that have been in the queue less than the indicated time interval.
7539This is intended to allow you to get responsiveness
7540by processing the queue fairly frequently
7541without thrashing your system by trying jobs too often.
7542The default units are minutes.
6003or on queue runs
6004unless the queued message is selected
6005using one of the -qI/-qR/-qS queue run modifiers
6006or an ETRN request.
6007.pp
6008Configuration files prior to level 6
6009assume the `A', `w', `5', `:', `|', `/', and `@' options
6010on the mailer named
6011.q local .
6012.pp
6013The mailer with the special name
6014.q error
6015can be used to generate a user error.
6016The (optional) host field is an exit status to be returned,
6017and the user field is a message to be printed.
6018The exit status may be numeric or one of the values
6019USAGE, NOUSER, NOHOST, UNAVAILABLE, SOFTWARE, TEMPFAIL, PROTOCOL, or CONFIG
6020to return the corresponding EX_ exit code,
6021or an enhanced error code as described in RFC 1893,
6022.ul
6023Enhanced Mail System Status Codes.
6024For example, the entry:
6025.(b
6026$#error $@ NOHOST $: Host unknown in this domain
6027.)b
6028on the RHS of a rule
6029will cause the specified error to be generated
6030and the
6031.q "Host unknown"
6032exit status to be returned
6033if the LHS matches.
6034This mailer is only functional in rulesets 0, 5,
6035or one of the check_* rulesets.
6036The host field can also contain the special token
6037.b quarantine
6038which instructs sendmail to quarantine the current message.
6039.pp
6040The mailer with the special name
6041.q discard
6042causes any mail sent to it to be discarded
6043but otherwise treated as though it were successfully delivered.
6044This mailer cannot be used in ruleset 0,
6045only in the various address checking rulesets.
6046.pp
6047The mailer named
6048.q local
6049.i must
6050be defined in every configuration file.
6051This is used to deliver local mail,
6052and is treated specially in several ways.
6053Additionally, three other mailers named
6054.q prog ,
6055.q *file* ,
6056and
6057.q *include*
6058may be defined to tune the delivery of messages to programs,
6059files,
6060and :include: lists respectively.
6061They default to:
6062.(b
6063Mprog, P=/bin/sh, F=lsoDq9, T=DNS/RFC822/X-Unix, A=sh \-c $u
6064M*file*, P=[FILE], F=lsDFMPEouq9, T=DNS/RFC822/X-Unix, A=FILE $u
6065M*include*, P=/dev/null, F=su, A=INCLUDE $u
6066.)b
6067.pp
6068Builtin pathnames are [FILE] and [IPC], the former is used for
6069delivery to files, the latter for delivery via interprocess communication.
6070For mailers that use [IPC] as pathname the argument vector (A=)
6071must start with TCP or FILE for delivery via a TCP or a Unix domain socket.
6072If TCP is used, the second argument must be the name of the host
6073to contact.
6074Optionally a third argument can be used to specify a port,
6075the default is smtp (port 25).
6076If FILE is used, the second argument must be the name of
6077the Unix domain socket.
6078.pp
6079If the argument vector does not contain $u then
6080.i sendmail
6081will speak SMTP (or LMTP if the mailer flag z is specified) to the mailer.
6082.pp
6083If no Eol field is defined, then the default is "\\r\\n" for
6084SMTP mailers and "\\n" of others.
6085.pp
6086The Sender and Recipient rewriting sets
6087may either be a simple ruleset id
6088or may be two ids separated by a slash;
6089if so, the first rewriting set is applied to envelope
6090addresses
6091and the second is applied to headers.
6092Setting any value to zero disables corresponding mailer-specific rewriting.
6093.pp
6094The Directory
6095is actually a colon-separated path of directories to try.
6096For example, the definition
6097.q D=$z:/
6098first tries to execute in the recipient's home directory;
6099if that is not available,
6100it tries to execute in the root of the filesystem.
6101This is intended to be used only on the
6102.q prog
6103mailer,
6104since some shells (such as
6105.i csh )
6106refuse to execute if they cannot read the current directory.
6107Since the queue directory is not normally readable by unprivileged users
6108.i csh
6109scripts as recipients can fail.
6110.pp
6111The Userid
6112specifies the default user and group id to run as,
6113overriding the
6114.b DefaultUser
6115option (q.v.).
6116If the
6117.b S
6118mailer flag is also specified,
6119this user and group will be set as the
6120effective uid and gid for the process.
6121This may be given as
6122.i user:group
6123to set both the user and group id;
6124either may be an integer or a symbolic name to be looked up
6125in the
6126.i passwd
6127and
6128.i group
6129files respectively.
6130If only a symbolic user name is specified,
6131the group id in the
6132.i passwd
6133file for that user is used as the group id.
6134.pp
6135The Charset field
6136is used when converting a message to MIME;
6137this is the character set used in the
6138Content-Type: header.
6139If this is not set, the
6140.b DefaultCharset
6141option is used,
6142and if that is not set, the value
6143.q unknown-8bit
6144is used.
6145.b WARNING:
6146this field applies to the sender's mailer,
6147not the recipient's mailer.
6148For example, if the envelope sender address
6149lists an address on the local network
6150and the recipient is on an external network,
6151the character set will be set from the Charset= field
6152for the local network mailer,
6153not that of the external network mailer.
6154.pp
6155The Type= field
6156sets the type information
6157used in MIME error messages
6158as defined by
6159RFC 1894.
6160It is actually three values separated by slashes:
6161the MTA-type (that is, the description of how hosts are named),
6162the address type (the description of e-mail addresses),
6163and the diagnostic type (the description of error diagnostic codes).
6164Each of these must be a registered value
6165or begin with
6166.q X\- .
6167The default is
6168.q dns/rfc822/smtp .
6169.pp
6170The m= field specifies the maximum number of messages
6171to attempt to deliver on a single SMTP or LMTP connection.
6172The default is infinite.
6173.pp
6174The r= field specifies the maximum number of recipients
6175to attempt to deliver in a single envelope.
6176It defaults to 100.
6177.pp
6178The /= field specifies a new root directory for the mailer. The path is
6179macro expanded and then passed to the
6180.q chroot
6181system call. The root directory is changed before the Directory field is
6182consulted or the uid is changed.
6183.pp
6184The Wait= field specifies the maximum time to wait for the
6185mailer to return after sending all data to it.
6186This applies to mailers that have been forked by
6187.i sendmail .
6188.pp
6189The Queuegroup= field specifies the default queue group in which
6190received mail should be queued.
6191This can be overridden by other means as explained in section
6192``Queue Groups and Queue Directories''.
6193.sh 2 "H \*- Define Header"
6194.pp
6195The format of the header lines that
6196.i sendmail
6197inserts into the message
6198are defined by the
6199.b H
6200line.
6201The syntax of this line is one of the following:
6202.(b F
6203.b H \c
6204.i hname \c
6205.b :
6206.i htemplate
6207.)b
6208.(b F
6209.b H [\c
6210.b ? \c
6211.i mflags \c
6212.b ? \c
6213.b ]\c
6214.i hname \c
6215.b :
6216.i htemplate
6217.)b
6218.(b F
6219.b H [\c
6220.b ?$ \c
6221.i {macro} \c
6222.b ? \c
6223.b ]\c
6224.i hname \c
6225.b :
6226.i htemplate
6227.)b
6228Continuation lines in this spec
6229are reflected directly into the outgoing message.
6230The
6231.i htemplate
6232is macro-expanded before insertion into the message.
6233If the
6234.i mflags
6235(surrounded by question marks)
6236are specified,
6237at least one of the specified flags
6238must be stated in the mailer definition
6239for this header to be automatically output.
6240If a
6241.i ${macro}
6242(surrounded by question marks)
6243is specified,
6244the header will be automatically output
6245if the macro is set.
6246The macro may be set using any of the normal methods,
6247including using the
6248.b macro
6249storage map in a ruleset.
6250If one of these headers is in the input
6251it is reflected to the output
6252regardless of these flags or macros.
6253Notice:
6254If a
6255.i ${macro}
6256is used to set a header, then it is useful to add that macro to class
6257.i $={persistentMacros}
6258which consists of the macros that should be saved across queue runs.
6259.pp
6260Some headers have special semantics
6261that will be described later.
6262.pp
6263A secondary syntax allows validation of headers as they are being read.
6264To enable validation, use:
6265.(b
6266.b H \c
6267.i Header \c
6268.b ": $>" \c
6269.i Ruleset
6270.b H \c
6271.i Header \c
6272.b ": $>+" \c
6273.i Ruleset
6274.)b
6275The indicated
6276.i Ruleset
6277is called for the specified
6278.i Header ,
6279and can return
6280.b $#error
6281to reject or quarantine the message or
6282.b $#discard
6283to discard the message
6284(as with the other
6285.b check_ *
6286rulesets).
6287The ruleset receives the header field-body as argument,
6288i.e., not the header field-name; see also
6289${hdr_name} and ${currHeader}.
6290The header is treated as a structured field,
6291that is,
6292text in parentheses is deleted before processing,
6293unless the second form
6294.b $>+
6295is used.
6296Note: only one ruleset can be associated with a header;
6297.i sendmail
6298will silently ignore multiple entries.
6299.pp
6300For example, the configuration lines:
6301.(b
6302HMessage-Id: $>CheckMessageId
6303
6304SCheckMessageId
6305R< $+ @ $+ > $@ OK
6306R$* $#error $: Illegal Message-Id header
6307.)b
6308would refuse any message that had a Message-Id: header of any of the
6309following forms:
6310.(b
6311Message-Id: <>
6312Message-Id: some text
6313Message-Id: <legal text@domain> extra crud
6314.)b
6315A default ruleset that is called for headers which don't have a
6316specific ruleset defined for them can be specified by:
6317.(b
6318.b H \c
6319.i * \c
6320.b ": $>" \c
6321.i Ruleset
6322.)b
6323or
6324.(b
6325.b H \c
6326.i * \c
6327.b ": $>+" \c
6328.i Ruleset
6329.)b
6330.sh 2 "O \*- Set Option"
6331.pp
6332There are a number of global options that
6333can be set from a configuration file.
6334Options are represented by full words;
6335some are also representable as single characters for back compatibility.
6336The syntax of this line is:
6337.(b F
6338.b O \0
6339.i option \c
6340.b = \c
6341.i value
6342.)b
6343This sets option
6344.i option
6345to be
6346.i value .
6347Note that there
6348.i must
6349be a space between the letter `O' and the name of the option.
6350An older version is:
6351.(b F
6352.b O \c
6353.i o\|value
6354.)b
6355where the option
6356.i o
6357is a single character.
6358Depending on the option,
6359.i value
6360may be a string, an integer,
6361a boolean
6362(with legal values
6363.q t ,
6364.q T ,
6365.q f ,
6366or
6367.q F ;
6368the default is TRUE),
6369or
6370a time interval.
6371.pp
6372All filenames used in options should be absolute paths,
6373i.e., starting with '/'.
6374Relative filenames most likely cause surprises during operation
6375(unless otherwise noted).
6376.pp
6377The options supported (with the old, one character names in brackets) are:
6378.nr ii 1i
6379.ip "AliasFile=\fIspec, spec, ...\fP"
6380[A]
6381Specify possible alias file(s).
6382Each
6383.i spec
6384should be in the format
6385``\c
6386.i class \c
6387.b :
6388.i info ''
6389where
6390.i class \c
6391.b :
6392is optional and defaults to ``implicit''.
6393Note that
6394.i info
6395is required for all
6396.i class es
6397except
6398.q ldap .
6399For the
6400.q ldap
6401class,
6402if
6403.i info
6404is not specified,
6405a default
6406.i info
6407value is used as follows:
6408.(b
6409\-k (&(objectClass=sendmailMTAAliasObject)
6410 (sendmailMTAAliasName=aliases)
6411 (|(sendmailMTACluster=${sendmailMTACluster})
6412 (sendmailMTAHost=$j))
6413 (sendmailMTAKey=%0))
6414\-v sendmailMTAAliasValue
6415.)b
6416Depending on how
6417.i sendmail
6418is compiled, valid classes are
6419.q implicit
6420(search through a compiled-in list of alias file types,
6421for back compatibility),
6422.q hash
6423(if
6424.sm NEWDB
6425is specified),
6426.q btree
6427(if
6428.sm NEWDB
6429is specified),
6430.q dbm
6431(if
6432.sm NDBM
6433is specified),
6434.q stab
6435(internal symbol table \*- not normally used
6436unless you have no other database lookup),
6437.q sequence
6438(use a sequence of maps
6439previously declared),
6440.q ldap
6441(if
6442.sm LDAPMAP
6443is specified),
6444or
6445.q nis
6446(if
6447.sm NIS
6448is specified).
6449If a list of
6450.i spec s
6451are provided,
6452.i sendmail
6453searches them in order.
6454.ip AliasWait=\fItimeout\fP
6455[a]
6456If set,
6457wait up to
6458.i timeout
6459(units default to minutes)
6460for an
6461.q @:@
6462entry to exist in the alias database
6463before starting up.
6464If it does not appear in the
6465.i timeout
6466interval issue a warning.
6467.ip AllowBogusHELO
6468[no short name]
6469If set, allow HELO SMTP commands that don't include a host name.
6470Setting this violates RFC 1123 section 5.2.5,
6471but is necessary to interoperate with several SMTP clients.
6472If there is a value, it is still checked for legitimacy.
6473.ip AuthMaxBits=\fIN\fP
6474[no short name]
6475Limit the maximum encryption strength for the security layer in
6476SMTP AUTH (SASL). Default is essentially unlimited.
6477This allows to turn off additional encryption in SASL if
6478STARTTLS is already encrypting the communication, because the
6479existing encryption strength is taken into account when choosing
6480an algorithm for the security layer.
6481For example, if STARTTLS is used and the symmetric cipher is 3DES,
6482then the the keylength (in bits) is 168.
6483Hence setting
6484.b AuthMaxBits
6485to 168 will disable any encryption in SASL.
6486.ip AuthMechanisms
6487[no short name]
6488List of authentication mechanisms for AUTH (separated by spaces).
6489The advertised list of authentication mechanisms will be the
6490intersection of this list and the list of available mechanisms as
6491determined by the Cyrus SASL library.
6492If STARTTLS is active, EXTERNAL will be added to this list.
6493In that case, the value of {cert_subject} is used as authentication id.
6494.ip AuthOptions
6495[no short name]
6496List of options for SMTP AUTH consisting of single characters
6497with intervening white space or commas.
6498.(b
6499.ta 4n
6500A Use the AUTH= parameter for the MAIL FROM
6501 command only when authentication succeeded.
6502 This can be used as a workaround for broken
6503 MTAs that do not implement RFC 2554 correctly.
6504a protection from active (non-dictionary) attacks
6505 during authentication exchange.
6506c require mechanisms which pass client credentials,
6507 and allow mechanisms which can pass credentials
6508 to do so.
6509d don't permit mechanisms susceptible to passive
6510 dictionary attack.
6511f require forward secrecy between sessions
6512 (breaking one won't help break next).
6513m require mechanisms which provide mutual authentication
6514 (only available if using Cyrus SASL v2 or later).
6515p don't permit mechanisms susceptible to simple
6516 passive attack (e.g., PLAIN, LOGIN), unless a
6517 security layer is active.
6518y don't permit mechanisms that allow anonymous login.
6519.)b
6520The first option applies to sendmail as a client, the others to a server.
6521Example:
6522.(b
6523O AuthOptions=p,y
6524.)b
6525would disallow ANONYMOUS as AUTH mechanism and would
6526allow PLAIN and LOGIN only if a security layer (e.g.,
6527provided by STARTTLS) is already active.
6528The options 'a', 'c', 'd', 'f', 'p', and 'y' refer to properties of the
6529selected SASL mechanisms.
6530Explanations of these properties can be found in the Cyrus SASL documentation.
6531.ip AuthRealm
6532[no short name]
6533The authentication realm that is passed to the Cyrus SASL library.
6534If no realm is specified,
6535.b $j
6536is used.
6537.ip BadRcptThrottle=\fIN\fP
6538[no short name]
6539If set and the specified number of recipients in a single SMTP
6540transaction have been rejected, sleep for one second after each subsequent
6541RCPT command in that transaction.
6542.ip BlankSub=\fIc\fP
6543[B]
6544Set the blank substitution character to
6545.i c .
6546Unquoted spaces in addresses are replaced by this character.
6547Defaults to space (i.e., no change is made).
6548.ip CACertPath
6549[no short name]
6550Path to directory with certificates of CAs.
6551This directory directory must contain the hashes of each CA certificate
6552as filenames (or as links to them).
6553.ip CACertFile
6554[no short name]
6555File containing one or more CA certificates;
6556see section about STARTTLS for more information.
6557.ip CheckAliases
6558[n]
6559Validate the RHS of aliases when rebuilding the alias database.
6560.ip CheckpointInterval=\fIN\fP
6561[C]
6562Checkpoints the queue every
6563.i N
6564(default 10)
6565addresses sent.
6566If your system crashes during delivery to a large list,
6567this prevents retransmission to any but the last
6568.i N
6569recipients.
6570.ip ClassFactor=\fIfact\fP
6571[z]
6572The indicated
6573.i fact or
6574is multiplied by the message class
6575(determined by the Precedence: field in the user header
6576and the
6577.b P
6578lines in the configuration file)
6579and subtracted from the priority.
6580Thus, messages with a higher Priority: will be favored.
6581Defaults to 1800.
6582.ip ClientCertFile
6583[no short name]
6584File containing the certificate of the client, i.e., this certificate
6585is used when
6586.i sendmail
6587acts as client (for STARTTLS).
6588.ip ClientKeyFile
6589[no short name]
6590File containing the private key belonging to the client certificate
6591(for STARTTLS if
6592.i sendmail
6593runs as client).
6594.ip ClientPortOptions=\fIoptions\fP
6595[O]
6596Set client SMTP options.
6597The options are
6598.i key=value
6599pairs separated by commas.
6600Known keys are:
6601.(b
6602.ta 1i
6603Port Name/number of source port for connection (defaults to any free port)
6604Addr Address mask (defaults INADDR_ANY)
6605Family Address family (defaults to INET)
6606SndBufSize Size of TCP send buffer
6607RcvBufSize Size of TCP receive buffer
6608Modifier Options (flags) for the client
6609.)b
6610The
6611.i Addr ess
6612mask may be a numeric address in dot notation
6613or a network name.
6614.i Modifier
6615can be the following character:
6616.(b
6617.ta 1i
6618h use name of interface for HELO command
6619A don't use AUTH when sending e-mail
6620S don't use STARTTLS when sending e-mail
6621.)b
6622If ``h'' is set, the name corresponding to the outgoing interface
6623address (whether chosen via the Connection parameter or
6624the default) is used for the HELO/EHLO command.
6625However, the name must not start with a square bracket
6626and it must contain at least one dot.
6627This is a simple test whether the name is not
6628an IP address (in square brackets) but a qualified hostname.
6629Note that multiple ClientPortOptions settings are allowed
6630in order to give settings for each protocol family
6631(e.g., one for Family=inet and one for Family=inet6).
6632A restriction placed on one family only affects
6633outgoing connections on that particular family.
6634.ip ColonOkInAddr
6635[no short name]
6636If set, colons are acceptable in e-mail addresses
6637(e.g.,
6638.q host:user ).
6639If not set, colons indicate the beginning of a RFC 822 group construct
6640(\c
6641.q "groupname: member1, member2, ... memberN;" ).
6642Doubled colons are always acceptable
6643(\c
6644.q nodename::user )
6645and proper route-addr nesting is understood
6646(\c
6647.q <@relay:user@host> ).
6648Furthermore, this option defaults on if the configuration version level
6649is less than 6 (for back compatibility).
6650However, it must be off for full compatibility with RFC 822.
6651.ip ConnectionCacheSize=\fIN\fP
6652[k]
6653The maximum number of open connections that will be cached at a time.
6654The default is one.
6655This delays closing the current connection until
6656either this invocation of
6657.i sendmail
6658needs to connect to another host
6659or it terminates.
6660Setting it to zero defaults to the old behavior,
6661that is, connections are closed immediately.
6662Since this consumes file descriptors,
6663the connection cache should be kept small:
66644 is probably a practical maximum.
6665.ip ConnectionCacheTimeout=\fItimeout\fP
6666[K]
6667The maximum amount of time a cached connection will be permitted to idle
6668without activity.
6669If this time is exceeded,
6670the connection is immediately closed.
6671This value should be small (on the order of ten minutes).
6672Before
6673.i sendmail
6674uses a cached connection,
6675it always sends a RSET command
6676to check the connection;
6677if this fails, it reopens the connection.
6678This keeps your end from failing if the other end times out.
6679The point of this option is to be a good network neighbor
6680and avoid using up excessive resources
6681on the other end.
6682The default is five minutes.
6683.ip ConnectOnlyTo=\fIaddress\fP
6684[no short name]
6685This can be used to
6686override the connection address (for testing purposes).
6687.ip ConnectionRateThrottle=\fIN\fP
6688[no short name]
6689If set to a positive value,
6690allow no more than
6691.i N
6692incoming connections in a one second period per daemon.
6693This is intended to flatten out peaks
6694and allow the load average checking to cut in.
6695Defaults to zero (no limits).
6696.ip ConnectionRateWindowSize=\fIN\fP
6697[no short name]
6698Define the length of the interval for which
6699the number of incoming connections is maintained.
6700The default is 60 seconds.
6701.ip ControlSocketName=\fIname\fP
6702[no short name]
6703Name of the control socket for daemon management.
6704A running
6705.i sendmail
6706daemon can be controlled through this named socket.
6707Available commands are:
6708.i help,
6709.i mstat,
6710.i restart,
6711.i shutdown,
6712and
6713.i status.
6714The
6715.i status
6716command returns the current number of daemon children,
6717the maximum number of daemon children,
6718the free disk space (in blocks) of the queue directory,
6719and the load average of the machine expressed as an integer.
6720If not set, no control socket will be available.
6721Solaris and pre-4.4BSD kernel users should see the note in sendmail/README .
6722.ip CRLFile=\fIname\fP
6723[no short name]
6724Name of file that contains certificate
6725revocation status, useful for X.509v3 authentication.
6726CRL checking requires at least OpenSSL version 0.9.7.
6727Note: if a CRLFile is specified but the file is unusable,
6728STARTTLS is disabled.
6729.ip DHParameters
6730Possible values are:
6731.(b
6732.ta 1i
67335 use 512 bit prime
67341 use 1024 bit prime
6735none do not use Diffie-Hellman
6736NAME load prime from file
6737.)b
6738This is only required if a ciphersuite containing DSA/DH is used.
6739If ``5'' is selected, then precomputed, fixed primes are used.
6740This is the default for the client side.
6741If ``1'' is selected, then prime values are computed during startup.
6742This is the default for the server side.
6743Note: this operation can take a significant amount of time on a
6744slow machine (several seconds), but it is only done once at startup.
6745If ``none'' is selected, then TLS ciphersuites containing DSA/DH
6746cannot be used.
6747If a file name is specified (which must be an absolute path),
6748then the primes are read from it.
6749.ip DaemonPortOptions=\fIoptions\fP
6750[O]
6751Set server SMTP options.
6752Each instance of
6753.b DaemonPortOptions
6754leads to an additional incoming socket.
6755The options are
6756.i key=value
6757pairs.
6758Known keys are:
6759.(b
6760.ta 1i
6761Name User-definable name for the daemon (defaults to "Daemon#")
6762Port Name/number of listening port (defaults to "smtp")
6763Addr Address mask (defaults INADDR_ANY)
6764Family Address family (defaults to INET)
6765InputMailFilters List of input mail filters for the daemon
6766Listen Size of listen queue (defaults to 10)
6767Modifier Options (flags) for the daemon
6768SndBufSize Size of TCP send buffer
6769RcvBufSize Size of TCP receive buffer
6770children maximum number of children per daemon, see \fBMaxDaemonChildren\fP.
6771DeliveryMode Delivery mode per daemon, see \fBDeliveryMode\fP.
6772refuseLA RefuseLA per daemon
6773delayLA DelayLA per daemon
6774queueLA QueueLA per daemon
6775.)b
6776The
6777.i Name
6778key is used for error messages and logging.
6779The
6780.i Addr ess
6781mask may be a numeric address in dot notation
6782or a network name.
6783The
6784.i Family
6785key defaults to INET (IPv4).
6786IPv6 users who wish to also accept IPv6 connections
6787should add additional Family=inet6
6788.b DaemonPortOptions
6789lines.
6790The
6791.i InputMailFilters
6792key overrides the default list of input mail filters listed in the
6793.b InputMailFilters
6794option.
6795If multiple input mail filters are required, they must be separated
6796by semicolons (not commas).
6797.i Modifier
6798can be a sequence (without any delimiters)
6799of the following characters:
6800.(b
6801.ta 1i
6802a always require authentication
6803b bind to interface through which mail has been received
6804c perform hostname canonification (.cf)
6805f require fully qualified hostname (.cf)
6806s Run smtps (SMTP over SSL) instead of smtp
6807u allow unqualified addresses (.cf)
6808A disable AUTH (overrides 'a' modifier)
6809C don't perform hostname canonification
6810E disallow ETRN (see RFC 2476)
6811O optional; if opening the socket fails ignore it
6812S don't offer STARTTLS
6813.)b
6814That is, one way to specify a message submission agent (MSA) that
6815always requires authentication is:
6816.(b
6817O DaemonPortOptions=Name=MSA, Port=587, M=Ea
6818.)b
6819The modifiers that are marked with "(.cf)" have only
6820effect in the standard configuration file, in which
6821they are available via
6822.b ${daemon_flags} .
6823Notice: Do
6824.b not
6825use the ``a'' modifier on a public accessible MTA!
6826It should only be used for a MSA that is accessed by authorized
6827users for initial mail submission.
6828Users must authenticate to use a MSA which has this option turned on.
6829The flags ``c'' and ``C'' can change the default for
6830hostname canonification in the
6831.i sendmail.cf
6832file.
6833See the relevant documentation for
6834.sm FEATURE(nocanonify) .
6835The modifier ``f'' disallows addresses of the form
6836.b user@host
6837unless they are submitted directly.
6838The flag ``u'' allows unqualified sender addresses,
6839i.e., those without @host.
6840``b'' forces sendmail to bind to the interface
6841through which the e-mail has been
6842received for the outgoing connection.
6843.b WARNING:
6844Use ``b''
6845only if outgoing mail can be routed through the incoming connection's
6846interface to its destination. No attempt is made to catch problems due to a
6847misconfiguration of this parameter, use it only for virtual hosting
6848where each virtual interface can connect to every possible location.
6849This will also override possible settings via
6850.b ClientPortOptions.
6851Note,
6852.i sendmail
6853will listen on a new socket
6854for each occurence of the
6855.b DaemonPortOptions
6856option in a configuration file.
6857The modifier ``O'' causes sendmail to ignore a socket
6858if it can't be opened.
6859This applies to failures from the socket(2) and bind(2) calls.
6860.ip DefaultAuthInfo
6861[no short name]
6862Filename that contains default authentication information for outgoing
6863connections. This file must contain the user id, the authorization id,
6864the password (plain text), the realm and the list of mechanisms to use
6865on separate lines and must be readable by
6866root (or the trusted user) only.
6867If no realm is specified,
6868.b $j
6869is used.
6870If no mechanisms are specified, the list given by
6871.b AuthMechanisms
6872is used.
6873Notice: this option is deprecated and will be removed in future versions.
6874Moreover, it doesn't work for the MSP since it can't read the file
6875(the file must not be group/world-readable otherwise
6876.i sendmail
6877will complain).
6878Use the authinfo ruleset instead which provides more control over
6879the usage of the data anyway.
6880.ip DefaultCharSet=\fIcharset\fP
6881[no short name]
6882When a message that has 8-bit characters but is not in MIME format
6883is converted to MIME
6884(see the EightBitMode option)
6885a character set must be included in the Content-Type: header.
6886This character set is normally set from the Charset= field
6887of the mailer descriptor.
6888If that is not set, the value of this option is used.
6889If this option is not set, the value
6890.q unknown-8bit
6891is used.
6892.ip DataFileBufferSize=\fIthreshold\fP
6893[no short name]
6894Set the
6895.i threshold ,
6896in bytes,
6897before a memory-based
6898queue data file
6899becomes disk-based.
6900The default is 4096 bytes.
6901.ip DeadLetterDrop=\fIfile\fP
6902[no short name]
6903Defines the location of the system-wide dead.letter file,
6904formerly hardcoded to /usr/tmp/dead.letter.
6905If this option is not set (the default),
6906sendmail will not attempt to save to a system-wide dead.letter file
6907in the event
6908it cannot bounce the mail to the user or postmaster.
6909Instead, it will rename the qf file
6910as it has in the past
6911when the dead.letter file could not be opened.
6912.ip DefaultUser=\fIuser:group\fP
6913[u]
6914Set the default userid for mailers to
6915.i user:group .
6916If
6917.i group
6918is omitted and
6919.i user
6920is a user name
6921(as opposed to a numeric user id)
6922the default group listed in the /etc/passwd file for that user is used
6923as the default group.
6924Both
6925.i user
6926and
6927.i group
6928may be numeric.
6929Mailers without the
6930.i S
6931flag in the mailer definition
6932will run as this user.
6933Defaults to 1:1.
6934The value can also be given as a symbolic user name.\**
6935.(f
6936\**The old
6937.b g
6938option has been combined into the
6939.b DefaultUser
6940option.
6941.)f
6942.ip DelayLA=\fILA\fP
6943[no short name]
6944When the system load average exceeds
6945.i LA ,
6946.i sendmail
6947will sleep for one second on most SMTP commands and
6948before accepting connections.
6949.ip DeliverByMin=\fItime\fP
6950[0]
6951Set minimum time for Deliver By SMTP Service Extension (RFC 2852).
6952If 0, no time is listed, if less than 0, the extension is not offered,
6953if greater than 0, it is listed as minimum time
6954for the EHLO keyword DELIVERBY.
6955.ip DeliveryMode=\fIx\fP
6956[d]
6957Deliver in mode
6958.i x .
6959Legal modes are:
6960.(b
6961.ta 4n
6962i Deliver interactively (synchronously)
6963b Deliver in background (asynchronously)
6964q Just queue the message (deliver during queue run)
6965d Defer delivery and all map lookups (deliver during queue run)
6966.)b
6967Defaults to ``b'' if no option is specified,
6968``i'' if it is specified but given no argument
6969(i.e., ``Od'' is equivalent to ``Odi'').
6970The
6971.b \-v
6972command line flag sets this to
6973.b i .
6974Note: for internal reasons,
6975``i'' does not work
6976if a milter is enabled which can reject or delete recipients.
6977In that case the mode will be changed to ``b''.
6978.ip DialDelay=\fIsleeptime\fP
6979[no short name]
6980Dial-on-demand network connections can see timeouts
6981if a connection is opened before the call is set up.
6982If this is set to an interval and a connection times out
6983on the first connection being attempted
6984.i sendmail
6985will sleep for this amount of time and try again.
6986This should give your system time to establish the connection
6987to your service provider.
6988Units default to seconds, so
6989.q DialDelay=5
6990uses a five second delay.
6991Defaults to zero
6992(no retry).
6993This delay only applies to mailers which have the
6994Z flag set.
6995.ip DirectSubmissionModifiers=\fImodifiers\fP
6996Defines
6997.b ${daemon_flags}
6998for direct (command line) submissions.
6999If not set,
7000.b ${daemon_flags}
7001is either "CC f" if the option
7002.b \-G
7003is used or "c u" otherwise.
7004Note that only the the "CC", "c", "f", and "u" flags are checked.
7005.ip DontBlameSendmail=\fIoption,option,...\fP
7006[no short name]
7007In order to avoid possible cracking attempts
7008caused by world- and group-writable files and directories,
7009.i sendmail
7010does paranoid checking when opening most of its support files.
7011If for some reason you absolutely must run with,
7012for example,
7013a group-writable
7014.i /etc
7015directory,
7016then you will have to turn off this checking
7017(at the cost of making your system more vulnerable to attack).
7018The possible arguments have been described earlier.
7019The details of these flags are described above.
7020.\"XXX should have more here!!! XXX
7021.b "Use of this option is not recommended."
7022.ip DontExpandCnames
7023[no short name]
7024The standards say that all host addresses used in a mail message
7025must be fully canonical.
7026For example, if your host is named
7027.q Cruft.Foo.ORG
7028and also has an alias of
7029.q FTP.Foo.ORG ,
7030the former name must be used at all times.
7031This is enforced during host name canonification
7032($[ ... $] lookups).
7033If this option is set, the protocols are ignored and the
7034.q wrong
7035thing is done.
7036However, the IETF is moving toward changing this standard,
7037so the behavior may become acceptable.
7038Please note that hosts downstream may still rewrite the address
7039to be the true canonical name however.
7040.ip DontInitGroups
7041[no short name]
7042If set,
7043.i sendmail
7044will avoid using the initgroups(3) call.
7045If you are running NIS,
7046this causes a sequential scan of the groups.byname map,
7047which can cause your NIS server to be badly overloaded in a large domain.
7048The cost of this is that the only group found for users
7049will be their primary group (the one in the password file),
7050which will make file access permissions somewhat more restrictive.
7051Has no effect on systems that don't have group lists.
7052.ip DontProbeInterfaces
7053[no short name]
7054.i Sendmail
7055normally finds the names of all interfaces active on your machine
7056when it starts up
7057and adds their name to the
7058.b $=w
7059class of known host aliases.
7060If you have a large number of virtual interfaces
7061or if your DNS inverse lookups are slow
7062this can be time consuming.
7063This option turns off that probing.
7064However, you will need to be certain to include all variant names
7065in the
7066.b $=w
7067class by some other mechanism.
7068If set to
7069.b loopback ,
7070loopback interfaces (e.g., lo0) will not be probed.
7071.ip DontPruneRoutes
7072[R]
7073Normally,
7074.i sendmail
7075tries to eliminate any unnecessary explicit routes
7076when sending an error message
7077(as discussed in RFC 1123 \(sc 5.2.6).
7078For example,
7079when sending an error message to
7080.(b
7081<@known1,@known2,@known3:user@unknown>
7082.)b
7083.i sendmail
7084will strip off the
7085.q @known1,@known2
7086in order to make the route as direct as possible.
7087However, if the
7088.b R
7089option is set, this will be disabled,
7090and the mail will be sent to the first address in the route,
7091even if later addresses are known.
7092This may be useful if you are caught behind a firewall.
7093.ip DoubleBounceAddress=\fIerror-address\fP
7094[no short name]
7095If an error occurs when sending an error message,
7096send the error report
7097(termed a
7098.q "double bounce"
7099because it is an error
7100.q bounce
7101that occurs when trying to send another error
7102.q bounce )
7103to the indicated address.
7104The address is macro expanded
7105at the time of delivery.
7106If not set, defaults to
7107.q postmaster .
7108If set to an empty string, double bounces are dropped.
7109.ip EightBitMode=\fIaction\fP
7110[8]
7111Set handling of eight-bit data.
7112There are two kinds of eight-bit data:
7113that declared as such using the
7114.b BODY=8BITMIME
7115ESMTP declaration or the
7116.b \-B8BITMIME
7117command line flag,
7118and undeclared 8-bit data, that is,
7119input that just happens to be eight bits.
7120There are three basic operations that can happen:
7121undeclared 8-bit data can be automatically converted to 8BITMIME,
7122undeclared 8-bit data can be passed as-is without conversion to MIME
7123(``just send 8''),
7124and declared 8-bit data can be converted to 7-bits
7125for transmission to a non-8BITMIME mailer.
7126The possible
7127.i action s
7128are:
7129.(b
7130.\" r Reject undeclared 8-bit data;
7131.\" don't convert 8BITMIME\(->7BIT (``reject'')
7132 s Reject undeclared 8-bit data (``strict'')
7133.\" do convert 8BITMIME\(->7BIT (``strict'')
7134.\" c Convert undeclared 8-bit data to MIME;
7135.\" don't convert 8BITMIME\(->7BIT (``convert'')
7136 m Convert undeclared 8-bit data to MIME (``mime'')
7137.\" do convert 8BITMIME\(->7BIT (``mime'')
7138.\" j Pass undeclared 8-bit data;
7139.\" don't convert 8BITMIME\(->7BIT (``just send 8'')
7140 p Pass undeclared 8-bit data (``pass'')
7141.\" do convert 8BITMIME\(->7BIT (``pass'')
7142.\" a Adaptive algorithm: see below
7143.)b
7144.\"The adaptive algorithm is to accept 8-bit data,
7145.\"converting it to 8BITMIME only if the receiver understands that,
7146.\"otherwise just passing it as undeclared 8-bit data;
7147.\"8BITMIME\(->7BIT conversions are done.
7148In all cases properly declared 8BITMIME data will be converted to 7BIT
7149as needed.
7150.ip ErrorHeader=\fIfile-or-message\fP
7151[E]
7152Prepend error messages with the indicated message.
7153If it begins with a slash,
7154it is assumed to be the pathname of a file
7155containing a message (this is the recommended setting).
7156Otherwise, it is a literal message.
7157The error file might contain the name, email address, and/or phone number
7158of a local postmaster who could provide assistance
7159to end users.
7160If the option is missing or null,
7161or if it names a file which does not exist or which is not readable,
7162no message is printed.
7163.ip ErrorMode=\fIx\fP
7164[e]
7165Dispose of errors using mode
7166.i x .
7167The values for
7168.i x
7169are:
7170.(b
7171p Print error messages (default)
7172q No messages, just give exit status
7173m Mail back errors
7174w Write back errors (mail if user not logged in)
7175e Mail back errors (when applicable) and give zero exit stat always
7176.)b
7177Note that the last mode,
7178.q e ,
7179is for Berknet error processing and
7180should not be used in normal circumstances.
7181Note, too, that mode
7182.q q ,
7183only applies to errors recognized before sendmail forks for
7184background delivery.
7185.ip FallbackMXhost=\fIfallbackhost\fP
7186[V]
7187If specified, the
7188.i fallbackhost
7189acts like a very low priority MX
7190on every host.
7191MX records will be looked up for this host,
7192unless the name is surrounded by square brackets.
7193This is intended to be used by sites with poor network connectivity.
7194Messages which are undeliverable due to temporary address failures
7195(e.g., DNS failure)
7196also go to the FallbackMXhost.
7197.ip FallBackSmartHost=\fIhostname\fP
7198If specified, the
7199.i FallBackSmartHost
7200will be used in a last-ditch effort for each host.
7201This is intended to be used by sites with "fake internal DNS",
7202e.g., a company whose DNS accurately reflects the world
7203inside that company's domain but not outside.
7204.ip FastSplit
7205[no short name]
7206If set to a value greater than zero (the default is one),
7207it suppresses the MX lookups on addresses
7208when they are initially sorted, i.e., for the first delivery attempt.
7209This usually results in faster envelope splitting unless the MX records
7210are readily available in a local DNS cache.
7211To enforce initial sorting based on MX records set
7212.b FastSplit
7213to zero.
7214If the mail is submitted directly from the command line, then
7215the value also limits the number of processes to deliver the envelopes;
7216if more envelopes are created they are only queued up
7217and must be taken care of by a queue run.
7218Since the default submission method is via SMTP (either from a MUA
7219or via the MSP), the value of
7220.b FastSplit
7221is seldom used to limit the number of processes to deliver the envelopes.
7222.ip ForkEachJob
7223[Y]
7224If set,
7225deliver each job that is run from the queue in a separate process.
7226.ip ForwardPath=\fIpath\fP
7227[J]
7228Set the path for searching for users' .forward files.
7229The default is
7230.q $z/.forward .
7231Some sites that use the automounter may prefer to change this to
7232.q /var/forward/$u
7233to search a file with the same name as the user in a system directory.
7234It can also be set to a sequence of paths separated by colons;
7235.i sendmail
7236stops at the first file it can successfully and safely open.
7237For example,
7238.q /var/forward/$u:$z/.forward
7239will search first in /var/forward/\c
7240.i username
7241and then in
7242.i ~username /.forward
7243(but only if the first file does not exist).
7244.ip HeloName=\fIname\fP
7245[no short name]
7246Set the name to be used for HELO/EHLO (instead of $j).
7247.ip HoldExpensive
7248[c]
7249If an outgoing mailer is marked as being expensive,
7250don't connect immediately.
7251.ip HostsFile=\fIpath\fP
7252[no short name]
7253The path to the hosts database,
7254normally
7255.q /etc/hosts .
7256This option is only consulted when sendmail
7257is canonifying addresses,
7258and then only when
7259.q files
7260is in the
7261.q hosts
7262service switch entry.
7263In particular, this file is
7264.i never
7265used when looking up host addresses;
7266that is under the control of the system
7267.i gethostbyname (3)
7268routine.
7269.ip HostStatusDirectory=\fIpath\fP
7270[no short name]
7271The location of the long term host status information.
7272When set,
7273information about the status of hosts
7274(e.g., host down or not accepting connections)
7275will be shared between all
7276.i sendmail
7277processes;
7278normally, this information is only held within a single queue run.
7279This option requires a connection cache of at least 1 to function.
7280If the option begins with a leading `/',
7281it is an absolute pathname;
7282otherwise,
7283it is relative to the mail queue directory.
7284A suggested value for sites desiring persistent host status is
7285.q \&.hoststat
7286(i.e., a subdirectory of the queue directory).
7287.ip IgnoreDots
7288[i]
7289Ignore dots in incoming messages.
7290This is always disabled (that is, dots are always accepted)
7291when reading SMTP mail.
7292.ip InputMailFilters=\fIname,name,...\fP
7293A comma separated list of filters which determines which filters
7294(see the "X \*- Mail Filter (Milter) Definitions" section)
7295and the invocation sequence are contacted for incoming SMTP messages.
7296If none are set, no filters will be contacted.
7297.ip LDAPDefaultSpec=\fIspec\fP
7298[no short name]
7299Sets a default map specification for LDAP maps.
7300The value should only contain LDAP specific settings
7301such as
7302.q "-h host -p port -d bindDN" .
7303The settings will be used for all LDAP maps
7304unless the individual map specification overrides a setting.
7305This option should be set before any LDAP maps are defined.
7306.ip LogLevel=\fIn\fP
7307[L]
7308Set the log level to
7309.i n .
7310Defaults to 9.
7311.ip M\fIx\|value\fP
7312[no long version]
7313Set the macro
7314.i x
7315to
7316.i value .
7317This is intended only for use from the command line.
7318The
7319.b \-M
7320flag is preferred.
7321.ip MailboxDatabase
7322[no short name]
7323Type of lookup to find information about local mailboxes,
7324defaults to ``pw'' which uses
7325.i getpwnam .
7326Other types can be introduced by adding them to the source code,
7327see libsm/mbdb.c for details.
7328.ip UseMSP
7329[no short name]
7330Use as mail submission program, i.e.,
7331allow group writable queue files
7332if the group is the same as that of a set-group-ID sendmail binary.
7333See the file
7334.b sendmail/SECURITY
7335in the distribution tarball.
7336.ip MatchGECOS
7337[G]
7338Allow fuzzy matching on the GECOS field.
7339If this flag is set,
7340and the usual user name lookups fail
7341(that is, there is no alias with this name and a
7342.i getpwnam
7343fails),
7344sequentially search the password file
7345for a matching entry in the GECOS field.
7346This also requires that MATCHGECOS
7347be turned on during compilation.
7348This option is not recommended.
7349.ip MaxAliasRecursion=\fIN\fP
7350[no short name]
7351The maximum depth of alias recursion (default: 10).
7352.ip MaxDaemonChildren=\fIN\fP
7353[no short name]
7354If set,
7355.i sendmail
7356will refuse connections when it has more than
7357.i N
7358children processing incoming mail or automatic queue runs.
7359This does not limit the number of outgoing connections.
7360If the default
7361.b DeliveryMode
7362(background) is used, then
7363.i sendmail
7364may create an almost unlimited number of children
7365(depending on the number of transactions and the
7366relative execution times of mail receiption and mail delivery).
7367If the limit should be enforced, then a
7368.b DeliveryMode
7369other than background must be used.
7370If not set, there is no limit to the number of children --
7371that is, the system load average controls this.
7372.ip MaxHeadersLength=\fIN\fP
7373[no short name]
7374The maximum length of the sum of all headers.
7375This can be used to prevent a denial of service attack.
7376The default is no limit.
7377.ip MaxHopCount=\fIN\fP
7378[h]
7379The maximum hop count.
7380Messages that have been processed more than
7381.i N
7382times are assumed to be in a loop and are rejected.
7383Defaults to 25.
7384.ip MaxMessageSize=\fIN\fP
7385[no short name]
7386Specify the maximum message size
7387to be advertised in the ESMTP EHLO response.
7388Messages larger than this will be rejected.
7389If set to a value greater than zero,
7390that value will be listed in the SIZE response,
7391otherwise SIZE is advertised in the ESMTP EHLO response
7392without a parameter.
7393.ip MaxMimeHeaderLength=\fIN[/M]\fP
7394[no short name]
7395Sets the maximum length of certain MIME header field values to
7396.i N
7397characters.
7398These MIME header fields are determined by being a member of
7399class {checkMIMETextHeaders}, which currently contains only
7400the header Content-Description.
7401For some of these headers which take parameters,
7402the maximum length of each parameter is set to
7403.i M
7404if specified. If
7405.i /M
7406is not specified, one half of
7407.i N
7408will be used.
7409By default,
7410these values are 2048 and 1024, respectively.
7411To allow any length, a value of 0 can be specified.
7412.ip MaxNOOPCommands=\fIN\fP
7413Override the default of
7414.b MAXNOOPCOMMANDS
7415for the number of
7416.i useless
7417commands, see Section
7418"Measures against Denial of Service Attacks".
7419.ip MaxQueueChildren=\fIN\fP
7420[no short name]
7421When set, this limits the number of concurrent queue runner processes to
7422.i N.
7423This helps to control the amount of system resources used when processing
7424the queue. When there are multiple queue groups defined and the total number
7425of queue runners for these queue groups would exceed
7426.i MaxQueueChildren
7427then the queue groups will not all run concurrently. That is, some portion
7428of the queue groups will run concurrently such that
7429.i MaxQueueChildren
7430will not be exceeded, while the remaining queue groups will be run later (in
7431round robin order). See also
7432.i MaxRunnersPerQueue
7433and the section \fBQueue Group Declaration\fP.
7434Notice:
7435.i sendmail
7436does not count individual queue runners, but only sets of processes
7437that act on a workgroup.
7438Hence the actual number of queue runners may be lower than the limit
7439imposed by
7440.i MaxQueueChildren .
7441This discrepancy can be large if some queue runners have to wait
7442for a slow server and if short intervals are used.
7443.ip MaxQueueRunSize=\fIN\fP
7444[no short name]
7445The maximum number of jobs that will be processed
7446in a single queue run.
7447If not set, there is no limit on the size.
7448If you have very large queues or a very short queue run interval
7449this could be unstable.
7450However, since the first
7451.i N
7452jobs in queue directory order are run (rather than the
7453.i N
7454highest priority jobs)
7455this should be set as high as possible to avoid
7456.q losing
7457jobs that happen to fall late in the queue directory.
7458Note: this option also restricts the number of entries printed by
7459.i mailq .
7460That is, if
7461.i MaxQueueRunSize
7462is set to a value
7463.b N
7464larger than zero,
7465then only
7466.b N
7467entries are printed per queue group.
7468.ip MaxRecipientsPerMessage=\fIN\fP
7469[no short name]
7470The maximum number of recipients that will be accepted per message
7471in an SMTP transaction.
7472Note: setting this too low can interfere with sending mail from
7473MUAs that use SMTP for initial submission.
7474If not set, there is no limit on the number of recipients per envelope.
7475.ip MaxRunnersPerQueue=\fIN\fP
7476[no short name]
7477This sets the default maximum number of queue runners for queue groups.
7478Up to
7479.i N
7480queue runners will work in parallel on a queue group's messages.
7481This is useful where the processing of a message in the queue might
7482delay the processing of subsequent messages. Such a delay may be the result
7483of non-erroneous situations such as a low bandwidth connection.
7484May be overridden on a per queue group basis by setting the
7485.i Runners
7486option; see the section \fBQueue Group Declaration\fP.
7487The default is 1 when not set.
7488.ip MeToo
7489[m]
7490Send to me too,
7491even if I am in an alias expansion.
7492This option is deprecated
7493and will be removed from a future version.
7494.ip Milter
7495[no short name]
7496This option has several sub(sub)options.
7497The names of the suboptions are separated by dots.
7498At the first level the following options are available:
7499.(b
7500.ta \w'LogLevel'u+3n
7501LogLevel Log level for input mail filter actions, defaults to LogLevel.
7502macros Specifies list of macro to transmit to filters.
7503 See list below.
7504.)b
7505The ``macros'' option has the following suboptions
7506which specify the list of macro to transmit to milters
7507after a certain event occurred.
7508.(b
7509.ta \w'envfrom'u+3n
7510connect After session connection start
7511helo After EHLO/HELO command
7512envfrom After MAIL From command
7513envrcpt After RCPT To command
7514data After DATA command.
7515eoh After DATA command and header
7516eom After DATA command and terminating ``.''
7517.)b
7518By default the lists of macros are empty.
7519Example:
7520.(b
7521O Milter.LogLevel=12
7522O Milter.macros.connect=j, _, {daemon_name}
7523.)b
7524.ip MinFreeBlocks=\fIN\fP
7525[b]
7526Insist on at least
7527.i N
7528blocks free on the filesystem that holds the queue files
7529before accepting email via SMTP.
7530If there is insufficient space
7531.i sendmail
7532gives a 452 response
7533to the MAIL command.
7534This invites the sender to try again later.
7535.ip MinQueueAge=\fIage\fP
7536[no short name]
7537Don't process any queued jobs
7538that have been in the queue less than the indicated time interval.
7539This is intended to allow you to get responsiveness
7540by processing the queue fairly frequently
7541without thrashing your system by trying jobs too often.
7542The default units are minutes.
7543Note:
7544This option is ignored for queue runs that select a subset
7545of the queue, i.e.,
7546.q \-q[!][I|R|S|Q][string]
7543.ip MustQuoteChars=\fIs\fP
7544[no short name]
7545Sets the list of characters that must be quoted if used in a full name
7546that is in the phrase part of a ``phrase <address>'' syntax.
7547The default is ``\'.''.
7548The characters ``@,;:\e()[]'' are always added to this list.
7549.ip NiceQueueRun
7550[no short name]
7551The priority of queue runners (nice(3)).
7552This value must be greater or equal zero.
7553.ip NoRecipientAction
7554[no short name]
7555The action to take when you receive a message that has no valid
7556recipient headers (To:, Cc:, Bcc:, or Apparently-To: \(em
7557the last included for back compatibility with old
7558.i sendmail s).
7559It can be
7560.b None
7561to pass the message on unmodified,
7562which violates the protocol,
7563.b Add-To
7564to add a To: header with any recipients it can find in the envelope
7565(which might expose Bcc: recipients),
7566.b Add-Apparently-To
7567to add an Apparently-To: header
7568(this is only for back-compatibility
7569and is officially deprecated),
7570.b Add-To-Undisclosed
7571to add a header
7572.q "To: undisclosed-recipients:;"
7573to make the header legal without disclosing anything,
7574or
7575.b Add-Bcc
7576to add an empty Bcc: header.
7577.ip OldStyleHeaders
7578[o]
7579Assume that the headers may be in old format,
7580i.e.,
7581spaces delimit names.
7582This actually turns on
7583an adaptive algorithm:
7584if any recipient address contains a comma, parenthesis,
7585or angle bracket,
7586it will be assumed that commas already exist.
7587If this flag is not on,
7588only commas delimit names.
7589Headers are always output with commas between the names.
7590Defaults to off.
7591.ip OperatorChars=\fIcharlist\fP
7592[$o macro]
7593The list of characters that are considered to be
7594.q operators ,
7595that is, characters that delimit tokens.
7596All operator characters are tokens by themselves;
7597sequences of non-operator characters are also tokens.
7598White space characters separate tokens
7599but are not tokens themselves \(em for example,
7600.q AAA.BBB
7601has three tokens, but
7602.q "AAA BBB"
7603has two.
7604If not set, OperatorChars defaults to
7605.q \&.\|:\|@\|[\|] ;
7606additionally, the characters
7607.q (\|)\|<\|>\|,\|;
7608are always operators.
7609Note that OperatorChars must be set in the
7610configuration file before any rulesets.
7611.ip PidFile=\fIfilename\fP
7612[no short name]
7613Filename of the pid file.
7614(default is _PATH_SENDMAILPID).
7615The
7616.i filename
7617is macro-expanded before it is opened, and unlinked when
7618.i sendmail
7619exits.
7620.ip PostmasterCopy=\fIpostmaster\fP
7621[P]
7622If set,
7623copies of error messages will be sent to the named
7624.i postmaster .
7625Only the header of the failed message is sent.
7626Errors resulting from messages with a negative precedence will not be sent.
7627Since most errors are user problems,
7628this is probably not a good idea on large sites,
7629and arguably contains all sorts of privacy violations,
7630but it seems to be popular with certain operating systems vendors.
7631The address is macro expanded
7632at the time of delivery.
7633Defaults to no postmaster copies.
7634.ip PrivacyOptions=\fI\|opt,opt,...\fP
7635[p]
7636Set the privacy
7637.i opt ions.
7638``Privacy'' is really a misnomer;
7639many of these are just a way of insisting on stricter adherence
7640to the SMTP protocol.
7641The
7642.i opt ions
7643can be selected from:
7644.(b
7645.ta \w'noactualrecipient'u+3n
7646public Allow open access
7647needmailhelo Insist on HELO or EHLO command before MAIL
7648needexpnhelo Insist on HELO or EHLO command before EXPN
7649noexpn Disallow EXPN entirely, implies noverb.
7650needvrfyhelo Insist on HELO or EHLO command before VRFY
7651novrfy Disallow VRFY entirely
7652noetrn Disallow ETRN entirely
7653noverb Disallow VERB entirely
7654restrictmailq Restrict mailq command
7655restrictqrun Restrict \-q command line flag
7656restrictexpand Restrict \-bv and \-v command line flags
7657noreceipts Don't return success DSNs\**
7658nobodyreturn Don't return the body of a message with DSNs
7659goaway Disallow essentially all SMTP status queries
7660authwarnings Put X-Authentication-Warning: headers in messages
7661 and log warnings
7662noactualrecipient Don't put X-Actual-Recipient lines in DSNs
7663 which reveal the actual account that addresses map to.
7664.)b
7665.(f
7666\**N.B.:
7667the
7668.b noreceipts
7669flag turns off support for RFC 1891
7670(Delivery Status Notification).
7671.)f
7672The
7673.q goaway
7674pseudo-flag sets all flags except
7675.q noreceipts ,
7676.q restrictmailq ,
7677.q restrictqrun ,
7678.q restrictexpand ,
7679.q noetrn ,
7680and
7681.q nobodyreturn .
7682If mailq is restricted,
7683only people in the same group as the queue directory
7684can print the queue.
7685If queue runs are restricted,
7686only root and the owner of the queue directory
7687can run the queue.
7688The
7689.q restrictexpand
7690pseudo-flag instructs
7691.i sendmail
7692to drop privileges when the
7693.b \-bv
7694option is given by users who are neither root nor the TrustedUser
7695so users cannot read private aliases, forwards, or :include: files.
7696It will add the
7697.q NonRootSafeAddr
7698to the
7699.q DontBlameSendmail
7700option to prevent misleading unsafe address warnings.
7701It also overrides the
7702.b \-v
7703(verbose) command line option to prevent information leakage.
7704Authentication Warnings add warnings about various conditions
7705that may indicate attempts to spoof the mail system,
7706such as using a non-standard queue directory.
7707.ip ProcessTitlePrefix=\fIstring\fP
7708[no short name]
7709Prefix the process title shown on 'ps' listings with
7710.i string .
7711The
7712.i string
7713will be macro processed.
7714.ip QueueDirectory=\fIdir\fP
7715[Q]
7716The QueueDirectory option serves two purposes.
7717First, it specifies the directory or set of directories that comprise
7718the default queue group.
7719Second, it specifies the directory D which is the ancestor of all queue
7720directories, and which sendmail uses as its current working directory.
7721When sendmail dumps core, it leaves its core files in D.
7722There are two cases.
7723If \fIdir\fR ends with an asterisk (eg, \fI/var/spool/mqueue/qd*\fR),
7724then all of the directories or symbolic links to directories
7725beginning with `qd' in
7726.i /var/spool/mqueue
7727will be used as queue directories of the default queue group,
7728and
7729.i /var/spool/mqueue
7730will be used as the working directory D.
7731Otherwise,
7732\fIdir\fR must name a directory (usually \fI/var/spool/mqueue\fR):
7733the default queue group consists of the single queue directory \fIdir\fR,
7734and the working directory D is set to \fIdir\fR.
7735To define additional groups of queue directories,
7736use the configuration file `Q' command.
7737Do not change the queue directory structure
7738while sendmail is running.
7739.ip QueueFactor=\fIfactor\fP
7740[q]
7741Use
7742.i factor
7743as the multiplier in the map function
7744to decide when to just queue up jobs rather than run them.
7745This value is divided by the difference between the current load average
7746and the load average limit
7747(\c
7748.b QueueLA
7749option)
7750to determine the maximum message priority
7751that will be sent.
7752Defaults to 600000.
7753.ip QueueLA=\fILA\fP
7754[x]
7755When the system load average exceeds
7756.i LA
7757and the
7758.b QueueFactor
7759(\c
7760.b q )
7761option divided by the difference in the current load average and the
7762.b QueueLA
7763option plus one
7764is less than the priority of the message,
7765just queue messages
7766(i.e., don't try to send them).
7767Defaults to 8 multiplied by
7768the number of processors online on the system
7769(if that can be determined).
7770.ip QueueFileMode=\fImode\fP
7771[no short name]
7772Default permissions for queue files (octal).
7773If not set, sendmail uses 0600 unless its real
7774and effective uid are different in which case it uses 0644.
7775.ip QueueSortOrder=\fIalgorithm\fP
7776[no short name]
7777Sets the
7778.i algorithm
7779used for sorting the queue.
7780Only the first character of the value is used.
7781Legal values are
7782.q host
7783(to order by the name of the first host name of the first recipient),
7784.q filename
7785(to order by the name of the queue file name),
7786.q time
7787(to order by the submission/creation time),
7788.q random
7789(to order randomly),
7790.q modification
7791(to order by the modification time of the qf file (older entries first)),
7792.q none
7793(to not order),
7794and
7795.q priority
7796(to order by message priority).
7797Host ordering makes better use of the connection cache,
7798but may tend to process low priority messages
7799that go to a single host
7800over high priority messages that go to several hosts;
7801it probably shouldn't be used on slow network links.
7802Filename and modification time ordering saves the overhead of
7803reading all of the queued items
7804before starting the queue run.
7805Creation (submission) time ordering is almost always a bad idea,
7806since it allows large, bulk mail to go out
7807before smaller, personal mail,
7808but may have applicability on some hosts with very fast connections.
7809Random is useful if several queue runners are started by hand
7810which try to drain the same queue since odds are they will be working
7811on different parts of the queue at the same time.
7812Priority ordering is the default.
7813.ip QueueTimeout=\fItimeout\fP
7814[T]
7815A synonym for
7816.q Timeout.queuereturn .
7817Use that form instead of the
7818.q QueueTimeout
7819form.
7820.ip RandFile
7821[no short name]
7822Name of file containing random data or the name of the UNIX socket
7823if EGD is used.
7824A (required) prefix "egd:" or "file:" specifies the type.
7825STARTTLS requires this filename if the compile flag HASURANDOMDEV is not set
7826(see sendmail/README).
7827.ip ResolverOptions=\fIoptions\fP
7828[I]
7829Set resolver options.
7830Values can be set using
7831.b + \c
7832.i flag
7833and cleared using
7834.b \- \c
7835.i flag ;
7836the
7837.i flag s
7838can be
7839.q debug ,
7840.q aaonly ,
7841.q usevc ,
7842.q primary ,
7843.q igntc ,
7844.q recurse ,
7845.q defnames ,
7846.q stayopen ,
7847.q use_inet6 ,
7848or
7849.q dnsrch .
7850The string
7851.q HasWildcardMX
7852(without a
7853.b +
7854or
7855.b \- )
7856can be specified to turn off matching against MX records
7857when doing name canonifications.
7858The string
7859.q WorkAroundBrokenAAAA
7860(without a
7861.b +
7862or
7863.b \- )
7864can be specified to work around some broken nameservers
7865which return SERVFAIL (a temporary failure) on T_AAAA (IPv6) lookups.
7866Notice: it might be necessary to apply the same (or similar) options to
7867.i submit.cf
7868too.
7869.ip RequiresDirfsync
7870[no short name]
7871This option can be used to override the compile time flag
7872.b REQUIRES_DIR_FSYNC
7873at runtime by setting it to
7874.sm false .
7875If the compile time flag is not set, the option is ignored.
7876The flag turns on support for file systems that require to call
7877.i fsync()
7878for a directory if the meta-data in it has been changed.
7879This should be turned on at least for older versions of ReiserFS;
7880it is enabled by default for Linux.
7881According to some information this flag is not needed
7882anymore for kernel 2.4.16 and newer.
7883.ip RrtImpliesDsn
7884[R]
7885If this option is set, a
7886.q Return-Receipt-To:
7887header causes the request of a DSN, which is sent to
7888the envelope sender as required by RFC 1891,
7889not to the address given in the header.
7890.ip RunAsUser=\fIuser\fP
7891[no short name]
7892The
7893.i user
7894parameter may be a user name
7895(looked up in
7896.i /etc/passwd )
7897or a numeric user id;
7898either form can have
7899.q ":group"
7900attached
7901(where group can be numeric or symbolic).
7902If set to a non-zero (non-root) value,
7903.i sendmail
7904will change to this user id shortly after startup\**.
7905.(f
7906\**When running as a daemon,
7907it changes to this user after accepting a connection
7908but before reading any
7909.sm SMTP
7910commands.
7911.)f
7912This avoids a certain class of security problems.
7913However, this means that all
7914.q \&.forward
7915and
7916.q :include:
7917files must be readable by the indicated
7918.i user
7919and all files to be written must be writable by
7920.i user
7921Also, all file and program deliveries will be marked unsafe
7922unless the option
7923.b DontBlameSendmail=NonRootSafeAddr
7924is set,
7925in which case the delivery will be done as
7926.i user .
7927It is also incompatible with the
7928.b SafeFileEnvironment
7929option.
7930In other words, it may not actually add much to security on an average system,
7931and may in fact detract from security
7932(because other file permissions must be loosened).
7933However, it should be useful on firewalls and other
7934places where users don't have accounts and the aliases file is
7935well constrained.
7936.ip RecipientFactor=\fIfact\fP
7937[y]
7938The indicated
7939.i fact or
7940is added to the priority (thus
7941.i lowering
7942the priority of the job)
7943for each recipient,
7944i.e., this value penalizes jobs with large numbers of recipients.
7945Defaults to 30000.
7946.ip RefuseLA=\fILA\fP
7947[X]
7948When the system load average exceeds
7949.i LA ,
7950refuse incoming SMTP connections.
7951Defaults to 12 multiplied by
7952the number of processors online on the system
7953(if that can be determined).
7954.ip RejectLogInterval=\fItimeout\fP
7955[no short name]
7956Log interval when refusing connections for this long
7957(default: 3h).
7958.ip RetryFactor=\fIfact\fP
7959[Z]
7960The
7961.i fact or
7962is added to the priority
7963every time a job is processed.
7964Thus,
7965each time a job is processed,
7966its priority will be decreased by the indicated value.
7967In most environments this should be positive,
7968since hosts that are down are all too often down for a long time.
7969Defaults to 90000.
7970.ip SafeFileEnvironment=\fIdir\fP
7971[no short name]
7972If this option is set,
7973.i sendmail
7974will do a
7975.i chroot (2)
7976call into the indicated
7977.i dir ectory
7978before doing any file writes.
7979If the file name specified by the user begins with
7980.i dir ,
7981that partial path name will be stripped off before writing,
7982so (for example)
7983if the SafeFileEnvironment variable is set to
7984.q /safe
7985then aliases of
7986.q /safe/logs/file
7987and
7988.q /logs/file
7989actually indicate the same file.
7990Additionally, if this option is set,
7991.i sendmail
7992refuses to deliver to symbolic links.
7993.ip SaveFromLine
7994[f]
7995Save
7996UNIX-style
7997.q From
7998lines at the front of headers.
7999Normally they are assumed redundant
8000and discarded.
8001.ip SendMimeErrors
8002[j]
8003If set, send error messages in MIME format
8004(see RFC 2045 and RFC 1344 for details).
8005If disabled,
8006.i sendmail
8007will not return the DSN keyword in response to an EHLO
8008and will not do Delivery Status Notification processing as described in
8009RFC 1891.
8010.ip ServerCertFile
8011[no short name]
8012File containing the certificate of the server, i.e., this certificate
8013is used when sendmail acts as server
8014(used for STARTTLS).
8015.ip ServerKeyFile
8016[no short name]
8017File containing the private key belonging to the server certificate
8018(used for STARTTLS).
8019.ip ServiceSwitchFile=\fIfilename\fP
8020[no short name]
8021If your host operating system has a service switch abstraction
8022(e.g., /etc/nsswitch.conf on Solaris
8023or /etc/svc.conf on Ultrix and DEC OSF/1)
8024that service will be consulted and this option is ignored.
8025Otherwise, this is the name of a file
8026that provides the list of methods used to implement particular services.
8027The syntax is a series of lines,
8028each of which is a sequence of words.
8029The first word is the service name,
8030and following words are service types.
8031The services that
8032.i sendmail
8033consults directly are
8034.q aliases
8035and
8036.q hosts.
8037Service types can be
8038.q dns ,
8039.q nis ,
8040.q nisplus ,
8041or
8042.q files
8043(with the caveat that the appropriate support
8044must be compiled in
8045before the service can be referenced).
8046If ServiceSwitchFile is not specified, it defaults to
8047/etc/mail/service.switch.
8048If that file does not exist, the default switch is:
8049.(b
8050aliases files
8051hosts dns nis files
8052.)b
8053The default file is
8054.q /etc/mail/service.switch .
8055.ip SevenBitInput
8056[7]
8057Strip input to seven bits for compatibility with old systems.
8058This shouldn't be necessary.
8059.ip SharedMemoryKey
8060[no short name]
8061Key to use for shared memory segment;
8062if not set (or 0), shared memory will not be used.
8063If set to
8064-1
8065.i sendmail
8066can select a key itself provided that also
8067.b SharedMemoryKeyFile
8068is set.
8069Requires support for shared memory to be compiled into
8070.i sendmail .
8071If this option is set,
8072.i sendmail
8073can share some data between different instances.
8074For example, the number of entries in a queue directory
8075or the available space in a file system.
8076This allows for more efficient program execution, since only
8077one process needs to update the data instead of each individual
8078process gathering the data each time it is required.
8079.ip SharedMemoryKeyFile
8080[no short name]
8081If
8082.b SharedMemoryKey
8083is set to
8084-1
8085then the automatically selected shared memory key will be stored
8086in the specified file.
8087.ip SingleLineFromHeader
8088[no short name]
8089If set, From: lines that have embedded newlines are unwrapped
8090onto one line.
8091This is to get around a botch in Lotus Notes
8092that apparently cannot understand legally wrapped RFC 822 headers.
8093.ip SingleThreadDelivery
8094[no short name]
8095If set, a client machine will never try to open two SMTP connections
8096to a single server machine at the same time,
8097even in different processes.
8098That is, if another
8099.i sendmail
8100is already talking to some host a new
8101.i sendmail
8102will not open another connection.
8103This property is of mixed value;
8104although this reduces the load on the other machine,
8105it can cause mail to be delayed
8106(for example, if one
8107.i sendmail
8108is delivering a huge message, other
8109.i sendmail s
8110won't be able to send even small messages).
8111Also, it requires another file descriptor
8112(for the lock file)
8113per connection, so you may have to reduce the
8114.b ConnectionCacheSize
8115option to avoid running out of per-process file descriptors.
8116Requires the
8117.b HostStatusDirectory
8118option.
8119.ip SmtpGreetingMessage=\fImessage\fP
8120[$e macro]
8121The message printed when the SMTP server starts up.
8122Defaults to
8123.q "$j Sendmail $v ready at $b".
8124.ip SoftBounce
8125If set, issue temporary errors (4xy) instead of permanent errors (5xy).
8126This can be useful during testing of a new configuration to avoid
8127erroneous bouncing of mails.
8128.ip StatusFile=\fIfile\fP
8129[S]
8130Log summary statistics in the named
8131.i file .
8132If no file name is specified, "statistics" is used.
8133If not set,
8134no summary statistics are saved.
8135This file does not grow in size.
8136It can be printed using the
8137.i mailstats (8)
8138program.
8139.ip SuperSafe
8140[s]
8141This option can be set to True, False, Interactive, or PostMilter.
8142If set to True,
8143.i sendmail
8144will be super-safe when running things,
8145i.e., always instantiate the queue file,
8146even if you are going to attempt immediate delivery.
8147.i Sendmail
8148always instantiates the queue file
8149before returning control to the client
8150under any circumstances.
8151This should really
8152.i always
8153be set to True.
8154The Interactive value has been introduced in 8.12 and can
8155be used together with
8156.b DeliveryMode=i .
8157It skips some synchronization calls which are effectively
8158doubled in the code execution path for this mode.
8159If set to PostMilter,
8160.i sendmail
8161defers synchronizing the queue file until any milters have
8162signaled acceptance of the message.
8163PostMilter is useful only when
8164.i sendmail
8165is running as an SMTP server; in all other situations it
8166acts the same as True.
8167.ip TLSSrvOptions
8168[no short name]
8169List of options for SMTP STARTTLS for the server
8170consisting of single characters
8171with intervening white space or commas.
8172The flag ``V'' disables client verification, and hence
8173it is not possible to use a client certificate for relaying.
8174Currently there are no other flags available.
8175.ip TempFileMode=\fImode\fP
8176[F]
8177The file mode for transcript files, files to which
8178.i sendmail
8179delivers directly, files in the
8180.b HostStatusDirectory ,
8181and
8182.b StatusFile .
8183It is interpreted in octal by default.
8184Defaults to 0600.
8185.ip Timeout.\fItype\fP=\|\fItimeout\fP
8186[r; subsumes old T option as well]
8187Set timeout values.
8188For more information,
8189see section
8190.\" XREF
81914.1.
8192.ip TimeZoneSpec=\fItzinfo\fP
8193[t]
8194Set the local time zone info to
8195.i tzinfo
8196\*- for example,
8197.q PST8PDT .
8198Actually, if this is not set,
8199the TZ environment variable is cleared (so the system default is used);
8200if set but null, the user's TZ variable is used,
8201and if set and non-null the TZ variable is set to this value.
8202.ip TrustedUser=\fIuser\fP
8203[no short name]
8204The
8205.i user
8206parameter may be a user name
8207(looked up in
8208.i /etc/passwd )
8209or a numeric user id.
8210Trusted user for file ownership and starting the daemon. If set, generated
8211alias databases and the control socket (if configured) will automatically
8212be owned by this user.
8213.ip TryNullMXList
8214[w]
8215If this system is the
8216.q best
8217(that is, lowest preference)
8218MX for a given host,
8219its configuration rules should normally detect this situation
8220and treat that condition specially
8221by forwarding the mail to a UUCP feed,
8222treating it as local,
8223or whatever.
8224However, in some cases (such as Internet firewalls)
8225you may want to try to connect directly to that host
8226as though it had no MX records at all.
8227Setting this option causes
8228.i sendmail
8229to try this.
8230The downside is that errors in your configuration
8231are likely to be diagnosed as
8232.q "host unknown"
8233or
8234.q "message timed out"
8235instead of something more meaningful.
8236This option is disrecommended.
8237.ip UnixFromLine=\fIfromline\fP
8238[$l macro]
8239Defines the format used when
8240.i sendmail
8241must add a UNIX-style From_ line
8242(that is, a line beginning
8243.q From<space>user ).
8244Defaults to
8245.q "From $g $d" .
8246Don't change this unless your system uses a different UNIX mailbox format
8247(very unlikely).
8248.ip UnsafeGroupWrites
8249[no short name]
8250If set (default),
8251:include: and .forward files that are group writable are considered
8252.q unsafe ,
8253that is,
8254they cannot reference programs or write directly to files.
8255World writable :include: and .forward files
8256are always unsafe.
8257Note: use
8258.b DontBlameSendmail
8259instead; this option is deprecated.
8260.ip UseErrorsTo
8261[l]
8262If there is an
8263.q Errors-To:
8264header, send error messages to the addresses listed there.
8265They normally go to the envelope sender.
8266Use of this option causes
8267.i sendmail
8268to violate RFC 1123.
8269This option is disrecommended and deprecated.
8270.ip UserDatabaseSpec=\fIudbspec\fP
8271[U]
8272The user database specification.
8273.ip Verbose
8274[v]
8275Run in verbose mode.
8276If this is set,
8277.i sendmail
8278adjusts options
8279.b HoldExpensive
8280(old
8281.b c )
8282and
8283.b DeliveryMode
8284(old
8285.b d )
8286so that all mail is delivered completely
8287in a single job
8288so that you can see the entire delivery process.
8289Option
8290.b Verbose
8291should
8292.i never
8293be set in the configuration file;
8294it is intended for command line use only.
8295Note that the use of option
8296.b Verbose
8297can cause authentication information to leak, if you use a
8298sendmail client to authenticate to a server.
8299If the authentication mechanism uses plain text passwords
8300(as with LOGIN or PLAIN),
8301then the password could be compromised.
8302To avoid this, do not install sendmail set-user-ID root,
8303and disable the
8304.b VERB
8305SMTP command with a suitable
8306.b PrivacyOptions
8307setting.
8308.ip XscriptFileBufferSize=\fIthreshold\fP
8309[no short name]
8310Set the
8311.i threshold ,
8312in bytes,
8313before a memory-based
8314queue transcript file
8315becomes disk-based.
8316The default is 4096 bytes.
8317.lp
8318All options can be specified on the command line using the
8319\-O or \-o flag,
8320but most will cause
8321.i sendmail
8322to relinquish its set-user-ID permissions.
8323The options that will not cause this are
8324SevenBitInput [7],
8325EightBitMode [8],
8326MinFreeBlocks [b],
8327CheckpointInterval [C],
8328DeliveryMode [d],
8329ErrorMode [e],
8330IgnoreDots [i],
8331SendMimeErrors [j],
8332LogLevel [L],
8333MeToo [m],
8334OldStyleHeaders [o],
8335PrivacyOptions [p],
8336SuperSafe [s],
8337Verbose [v],
8338QueueSortOrder,
8339MinQueueAge,
8340DefaultCharSet,
8341Dial Delay,
8342NoRecipientAction,
8343ColonOkInAddr,
8344MaxQueueRunSize,
8345SingleLineFromHeader,
8346and
8347AllowBogusHELO.
8348Actually, PrivacyOptions [p] given on the command line
8349are added to those already specified in the
8350.i sendmail.cf
8351file, i.e., they can't be reset.
8352Also, M (define macro) when defining the r or s macros
8353is also considered
8354.q safe .
8355.sh 2 "P \*- Precedence Definitions"
8356.pp
8357Values for the
8358.q "Precedence:"
8359field may be defined using the
8360.b P
8361control line.
8362The syntax of this field is:
8363.(b
8364\fBP\fP\fIname\fP\fB=\fP\fInum\fP
8365.)b
8366When the
8367.i name
8368is found in a
8369.q Precedence:
8370field,
8371the message class is set to
8372.i num .
8373Higher numbers mean higher precedence.
8374Numbers less than zero
8375have the special property
8376that if an error occurs during processing
8377the body of the message will not be returned;
8378this is expected to be used for
8379.q "bulk"
8380mail such as through mailing lists.
8381The default precedence is zero.
8382For example,
8383our list of precedences is:
8384.(b
8385Pfirst-class=0
8386Pspecial-delivery=100
8387Plist=\-30
8388Pbulk=\-60
8389Pjunk=\-100
8390.)b
8391People writing mailing list exploders
8392are encouraged to use
8393.q "Precedence: list" .
8394Older versions of
8395.i sendmail
8396(which discarded all error returns for negative precedences)
8397didn't recognize this name, giving it a default precedence of zero.
8398This allows list maintainers to see error returns
8399on both old and new versions of
8400.i sendmail .
8401.sh 2 "V \*- Configuration Version Level"
8402.pp
8403To provide compatibility with old configuration files,
8404the
8405.b V
8406line has been added to define some very basic semantics
8407of the configuration file.
8408These are not intended to be long term supports;
8409rather, they describe compatibility features
8410which will probably be removed in future releases.
8411.pp
8412.b N.B.:
8413these version
8414.i levels
8415have nothing
8416to do with the version
8417.i number
8418on the files.
8419For example,
8420as of this writing
8421version 10 config files
8422(specifically, 8.10)
8423used version level 9 configurations.
8424.pp
8425.q Old
8426configuration files are defined as version level one.
8427Version level two files make the following changes:
8428.np
8429Host name canonification ($[ ... $])
8430appends a dot if the name is recognized;
8431this gives the config file a way of finding out if anything matched.
8432(Actually, this just initializes the
8433.q host
8434map with the
8435.q \-a.
8436flag \*- you can reset it to anything you prefer
8437by declaring the map explicitly.)
8438.np
8439Default host name extension is consistent throughout processing;
8440version level one configurations turned off domain extension
8441(that is, adding the local domain name)
8442during certain points in processing.
8443Version level two configurations are expected to include a trailing dot
8444to indicate that the name is already canonical.
8445.np
8446Local names that are not aliases
8447are passed through a new distinguished ruleset five;
8448this can be used to append a local relay.
8449This behavior can be prevented by resolving the local name
8450with an initial `@'.
8451That is, something that resolves to a local mailer and a user name of
8452.q vikki
8453will be passed through ruleset five,
8454but a user name of
8455.q @vikki
8456will have the `@' stripped,
8457will not be passed through ruleset five,
8458but will otherwise be treated the same as the prior example.
8459The expectation is that this might be used to implement a policy
8460where mail sent to
8461.q vikki
8462was handled by a central hub,
8463but mail sent to
8464.q vikki@localhost
8465was delivered directly.
8466.pp
8467Version level three files
8468allow # initiated comments on all lines.
8469Exceptions are backslash escaped # marks
8470and the $# syntax.
8471.pp
8472Version level four configurations
8473are completely equivalent to level three
8474for historical reasons.
8475.pp
8476Version level five configuration files
8477change the default definition of
8478.b $w
8479to be just the first component of the hostname.
8480.pp
8481Version level six configuration files
8482change many of the local processing options
8483(such as aliasing and matching the beginning of the address for
8484`|' characters)
8485to be mailer flags;
8486this allows fine-grained control over the special local processing.
8487Level six configuration files may also use long option names.
8488The
8489.b ColonOkInAddr
8490option (to allow colons in the local-part of addresses)
8491defaults
8492.b on
8493for lower numbered configuration files;
8494the configuration file requires some additional intelligence
8495to properly handle the RFC 822 group construct.
8496.pp
8497Version level seven configuration files
8498used new option names to replace old macros
8499(\c
8500.b $e
8501became
8502.b SmtpGreetingMessage ,
8503.b $l
8504became
8505.b UnixFromLine ,
8506and
8507.b $o
8508became
8509.b OperatorChars .
8510Also, prior to version seven,
8511the
8512.b F=q
8513flag (use 250 instead of 252 return value for
8514.sm "SMTP VRFY"
8515commands)
8516was assumed.
8517.pp
8518Version level eight configuration files allow
8519.b $#
8520on the left hand side of ruleset lines.
8521.pp
8522Version level nine configuration files allow
8523parentheses in rulesets, i.e. they are not treated
8524as comments and hence removed.
8525.pp
8526Version level ten configuration files allow
8527queue group definitions.
8528.pp
8529The
8530.b V
8531line may have an optional
8532.b / \c
8533.i vendor
8534to indicate that this configuration file uses modifications
8535specific to a particular vendor\**.
8536.(f
8537\**And of course, vendors are encouraged to add themselves
8538to the list of recognized vendors by editing the routine
8539.i setvendor
8540in
8541.i conf.c .
8542Please send e-mail to sendmail@Sendmail.ORG
8543to register your vendor dialect.
8544.)f
8545You may use
8546.q /Berkeley
8547to emphasize that this configuration file
8548uses the Berkeley dialect of
8549.i sendmail .
8550.sh 2 "K \*- Key File Declaration"
8551.pp
8552Special maps can be defined using the line:
8553.(b
8554Kmapname mapclass arguments
8555.)b
8556The
8557.i mapname
8558is the handle by which this map is referenced in the rewriting rules.
8559The
8560.i mapclass
8561is the name of a type of map;
8562these are compiled in to
8563.i sendmail .
8564The
8565.i arguments
8566are interpreted depending on the class;
8567typically,
8568there would be a single argument naming the file containing the map.
8569.pp
8570Maps are referenced using the syntax:
8571.(b
8572$( \fImap\fP \fIkey\fP $@ \fIarguments\fP $: \fIdefault\fP $)
8573.)b
8574where either or both of the
8575.i arguments
8576or
8577.i default
8578portion may be omitted.
8579The
8580.i "$@ arguments"
8581may appear more than once.
8582The indicated
8583.i key
8584and
8585.i arguments
8586are passed to the appropriate mapping function.
8587If it returns a value, it replaces the input.
8588If it does not return a value and the
8589.i default
8590is specified, the
8591.i default
8592replaces the input.
8593Otherwise, the input is unchanged.
8594.pp
8595The
8596.i arguments
8597are passed to the map for arbitrary use.
8598Most map classes can interpolate these arguments
8599into their values using the syntax
8600.q %\fIn\fP
8601(where
8602.i n
8603is a digit)
8604to indicate the corresponding
8605.i argument .
8606Argument
8607.q %0
8608indicates the database key.
8609For example, the rule
8610.(b
8611.ta 1.5i
8612R$\- ! $+ $: $(uucp $1 $@ $2 $: $2 @ $1 . UUCP $)
8613.)b
8614Looks up the UUCP name in a (user defined) UUCP map;
8615if not found it turns it into
8616.q \&.UUCP
8617form.
8618The database might contain records like:
8619.(b
8620decvax %1@%0.DEC.COM
8621research %1@%0.ATT.COM
8622.)b
8623Note that
8624.i default
8625clauses never do this mapping.
8626.pp
8627The built-in map with both name and class
8628.q host
8629is the host name canonicalization lookup.
8630Thus,
8631the syntax:
8632.(b
8633$(host \fIhostname\fP$)
8634.)b
8635is equivalent to:
8636.(b
8637$[\fIhostname\fP$]
8638.)b
8639.pp
8640There are many defined classes.
8641.ip dbm
8642Database lookups using the ndbm(3) library.
8643.i Sendmail
8644must be compiled with
8645.b NDBM
8646defined.
8647.ip btree
8648Database lookups using the btree interface to the Berkeley DB
8649library.
8650.i Sendmail
8651must be compiled with
8652.b NEWDB
8653defined.
8654.ip hash
8655Database lookups using the hash interface to the Berkeley DB
8656library.
8657.i Sendmail
8658must be compiled with
8659.b NEWDB
8660defined.
8661.ip nis
8662NIS lookups.
8663.i Sendmail
8664must be compiled with
8665.b NIS
8666defined.
8667.ip nisplus
8668NIS+ lookups.
8669.i Sendmail
8670must be compiled with
8671.b NISPLUS
8672defined.
8673The argument is the name of the table to use for lookups,
8674and the
8675.b \-k
8676and
8677.b \-v
8678flags may be used to set the key and value columns respectively.
8679.ip hesiod
8680Hesiod lookups.
8681.i Sendmail
8682must be compiled with
8683.b HESIOD
8684defined.
8685.ip ldap
8686LDAP X500 directory lookups.
8687.i Sendmail
8688must be compiled with
8689.b LDAPMAP
8690defined.
8691The map supports most of the standard arguments
8692and most of the command line arguments of the
8693.i ldapsearch
8694program.
8695Note that,
8696by default,
8697if a single query matches multiple values,
8698only the first value will be returned
8699unless the
8700.b \-z
8701(value separator)
8702map flag is set.
8703Also, the
8704.b \-1
8705map flag will treat a multiple value return
8706as if there were no matches.
8707.ip netinfo
8708NeXT NetInfo lookups.
8709.i Sendmail
8710must be compiled with
8711.b NETINFO
8712defined.
8713.ip text
8714Text file lookups.
8715The format of the text file is defined by the
8716.b \-k
8717(key field number),
8718.b \-v
8719(value field number),
8720and
8721.b \-z
8722(field delimiter)
8723flags.
8724.ip ph
8725PH query map.
8726Contributed and supported by
8727Mark Roth, roth@uiuc.edu.
8728For more information,
8729consult the web site
8730.q http://www-dev.cites.uiuc.edu/sendmail/ .
8731.ip nsd
8732nsd map for IRIX 6.5 and later.
8733Contributed and supported by Bob Mende of SGI,
8734mende@sgi.com.
8735.ip stab
8736Internal symbol table lookups.
8737Used internally for aliasing.
8738.ip implicit
8739Really should be called
8740.q alias
8741\(em this is used to get the default lookups
8742for alias files,
8743and is the default if no class is specified for alias files.
8744.ip user
8745Looks up users using
8746.i getpwnam (3).
8747The
8748.b \-v
8749flag can be used to specify the name of the field to return
8750(although this is normally used only to check the existence
8751of a user).
8752.ip host
8753Canonifies host domain names.
8754Given a host name it calls the name server
8755to find the canonical name for that host.
8756.ip bestmx
8757Returns the best MX record for a host name given as the key.
8758The current machine is always preferred \*-
8759that is, if the current machine is one of the hosts listed as a
8760lowest-preference MX record, then it will be guaranteed to be returned.
8761This can be used to find out if this machine is the target for an MX record,
8762and mail can be accepted on that basis.
8763If the
8764.b \-z
8765flag is given, then all MX names are returned,
8766separated by the given delimiter.
8767.ip dns
8768This map requires the option -R to specify the DNS resource record
8769type to lookup. The following types are supported:
8770A, AAAA, AFSDB, CNAME, MX, NS, PTR, SRV, and TXT.
8771A map lookup will return only one record.
8772Hence for some types, e.g., MX records, the return value might be a random
8773element of the list due to randomizing in the DNS resolver.
8774.ip sequence
8775The arguments on the `K' line are a list of maps;
8776the resulting map searches the argument maps in order
8777until it finds a match for the indicated key.
8778For example, if the key definition is:
8779.(b
8780Kmap1 ...
8781Kmap2 ...
8782Kseqmap sequence map1 map2
8783.)b
8784then a lookup against
8785.q seqmap
8786first does a lookup in map1.
8787If that is found, it returns immediately.
8788Otherwise, the same key is used for map2.
8789.ip syslog
8790the key is logged via
8791.i syslogd \|(8).
8792The lookup returns the empty string.
8793.ip switch
8794Much like the
8795.q sequence
8796map except that the order of maps is determined by the service switch.
8797The argument is the name of the service to be looked up;
8798the values from the service switch are appended to the map name
8799to create new map names.
8800For example, consider the key definition:
8801.(b
8802Kali switch aliases
8803.)b
8804together with the service switch entry:
8805.(b
8806aliases nis files
8807.)b
8808This causes a query against the map
8809.q ali
8810to search maps named
8811.q ali.nis
8812and
8813.q ali.files
8814in that order.
8815.ip dequote
8816Strip double quotes (") from a name.
8817It does not strip backslashes,
8818and will not strip quotes if the resulting string
8819would contain unscannable syntax
8820(that is, basic errors like unbalanced angle brackets;
8821more sophisticated errors such as unknown hosts are not checked).
8822The intent is for use when trying to accept mail from systems such as
8823DECnet
8824that routinely quote odd syntax such as
8825.(b
8826"49ers::ubell"
8827.)b
8828A typical usage is probably something like:
8829.(b
8830Kdequote dequote
8831
8832\&...
8833
8834R$\- $: $(dequote $1 $)
8835R$\- $+ $: $>3 $1 $2
8836.)b
8837Care must be taken to prevent unexpected results;
8838for example,
8839.(b
8840"|someprogram < input > output"
8841.)b
8842will have quotes stripped,
8843but the result is probably not what you had in mind.
8844Fortunately these cases are rare.
8845.ip regex
8846The map definition on the
8847.b K
8848line contains a regular expression.
8849Any key input is compared to that expression using the
8850POSIX regular expressions routines regcomp(), regerr(), and regexec().
8851Refer to the documentation for those routines for more information
8852about the regular expression matching.
8853No rewriting of the key is done if the
8854.b \-m
8855flag is used. Without it, the key is discarded or if
8856.b \-s
8857if used, it is substituted by the substring matches, delimited by
8858.b $|
8859or the string specified with the the
8860.b \-d
8861flag. The flags available for the map are
8862.(b
8863.ta 4n
8864-n not
8865-f case sensitive
8866-b basic regular expressions (default is extended)
8867-s substring match
8868-d set the delimiter used for -s
8869-a append string to key
8870-m match only, do not replace/discard value
8871-D perform no lookup in deferred delivery mode.
8872.)b
8873The
8874.b \-s
8875flag can include an optional parameter which can be used
8876to select the substrings in the result of the lookup. For example,
8877.(b
8878-s1,3,4
8879.)b
8880Notes: to match a
8881.b $
8882in a string,
8883\\$$
8884must be used.
8885If the pattern contains spaces, they must be replaced
8886with the blank substitution character, unless it is
8887space itself.
8888.ip program
8889The arguments on the
8890.b K
8891line are the pathname to a program and any initial parameters to be passed.
8892When the map is called,
8893the key is added to the initial parameters
8894and the program is invoked
8895as the default user/group id.
8896The first line of standard output is returned as the value of the lookup.
8897This has many potential security problems,
8898and has terrible performance;
8899it should be used only when absolutely necessary.
8900.ip macro
8901Set or clear a macro value.
8902To set a macro,
8903pass the value as the first argument in the map lookup.
8904To clear a macro,
8905do not pass an argument in the map lookup.
8906The map always returns the empty string.
8907Example of typical usage include:
8908.(b
8909Kstorage macro
8910
8911\&...
8912
8913# set macro ${MyMacro} to the ruleset match
8914R$+ $: $(storage {MyMacro} $@ $1 $) $1
8915# set macro ${MyMacro} to an empty string
8916R$* $: $(storage {MyMacro} $@ $) $1
8917# clear macro ${MyMacro}
8918R$\- $: $(storage {MyMacro} $) $1
8919.)b
8920.ip arith
8921Perform simple arithmetic operations.
8922The operation is given as key, currently
8923+, -, *, /, %,
8924|, & (bitwise OR, AND),
8925l (for less than), =,
8926and r (for random) are supported.
8927The two operands are given as arguments.
8928The lookup returns the result of the computation,
8929i.e.,
8930.sm TRUE
8931or
8932.sm FALSE
8933for comparisons, integer values otherwise.
8934The r operator returns a pseudo-random number whose value
8935lies between the first and second operand
8936(which requires that the first operand is smaller than the second).
8937All options which are possible for maps are ignored.
8938A simple example is:
8939.(b
8940Kcomp arith
8941
8942\&...
8943
8944Scheck_etrn
8945R$* $: $(comp l $@ $&{load_avg} $@ 7 $) $1
8946RFALSE $# error \&...
8947.)b
8948.ip socket
8949The socket map uses a simple request/reply protocol over TCP or UNIX domain
8950sockets to query an external server.
8951Both requests and replies are text based and encoded as netstrings,
8952i.e., a string "hello there" becomes:
8953.(b
895411:hello there,
8955.)b
8956Note: neither requests nor replies end with CRLF.
8957
8958The request consists of the database map name and the lookup key separated
8959by a space character:
8960
8961.(b
8962<mapname> ' ' <key>
8963.)b
8964
8965The server responds with a status indicator and the result (if any):
8966
8967.(b
8968<status> ' ' <result>
8969.)b
8970
8971The status indicator specifies the result of the lookup operation itself
8972and is one of the following upper case words:
8973.(b
8974.ta 9n
8975OK the key was found, result contains the looked up value
8976NOTFOUND the key was not found, the result is empty
8977TEMP a temporary failure occured
8978TIMEOUT a timeout occured on the server side
8979PERM a permanent failure occured
8980.)b
8981
8982In case of errors (status TEMP, TIMEOUT or PERM) the result field may
8983contain an explanatory message.
8984However, the explanatory message is not used any further by
8985.i sendmail .
8986
8987Example replies:
8988.(b
898931:OK resolved.address@example.com,
8990.)b
8991
8992.(b
899356:OK error:550 5.7.1 User does not accept mail from sender,
8994.)b
8995
8996in case of successful lookups, or:
8997.(b
89988:NOTFOUND,
8999.)b
9000
9001in case the key was not found, or:
9002.(b
900355:TEMP this text explains that we had a temporary failure,
9004.)b
9005
9006in case of a temporary map lookup failure.
9007
9008The socket map uses the same syntax as milters
9009(see Section "X \*- Mail Filter (Milter) Definitions")
9010to specify the remote endpoint, e.g.,
9011.(b
9012Ksocket mySocketMap inet:12345@127.0.0.1
9013.)b
9014
9015If multiple socket maps define the same remote endpoint, they will share
9016a single connection to this endpoint.
9017.pp
9018Most of these accept as arguments the same optional flags
9019and a filename
9020(or a mapname for NIS;
9021the filename is the root of the database path,
9022so that
9023.q .db
9024or some other extension appropriate for the database type
9025will be added to get the actual database name).
9026Known flags are:
9027.ip "\-o"
9028Indicates that this map is optional \*- that is,
9029if it cannot be opened,
9030no error is produced,
9031and
9032.i sendmail
9033will behave as if the map existed but was empty.
9034.ip "\-N, \-O"
9035If neither
9036.b \-N
9037or
9038.b \-O
9039are specified,
9040.i sendmail
9041uses an adaptive algorithm to decide whether or not to look for null bytes
9042on the end of keys.
9043It starts by trying both;
9044if it finds any key with a null byte it never tries again without a null byte
9045and vice versa.
9046If
9047.b \-N
9048is specified it never tries without a null byte and
9049if
9050.b \-O
9051is specified it never tries with a null byte.
9052Setting one of
9053these can speed matches but are never necessary.
9054If both
9055.b \-N
9056and
9057.b \-O
9058are specified,
9059.i sendmail
9060will never try any matches at all \(em
9061that is, everything will appear to fail.
9062.ip "\-a\fIx\fP"
9063Append the string
9064.i x
9065on successful matches.
9066For example, the default
9067.i host
9068map appends a dot on successful matches.
9069.ip "\-T\fIx\fP"
9070Append the string
9071.i x
9072on temporary failures.
9073For example,
9074.i x
9075would be appended if a DNS lookup returned
9076.q "server failed"
9077or an NIS lookup could not locate a server.
9078See also the
9079.b \-t
9080flag.
9081.ip "\-f"
9082Do not fold upper to lower case before looking up the key.
9083.ip "\-m"
9084Match only (without replacing the value).
9085If you only care about the existence of a key and not the value
9086(as you might when searching the NIS map
9087.q hosts.byname
9088for example),
9089this flag prevents the map from substituting the value.
9090However,
9091The \-a argument is still appended on a match,
9092and the default is still taken if the match fails.
9093.ip "\-k\fIkeycol\fP"
9094The key column name (for NIS+) or number
9095(for text lookups).
9096For LDAP maps this is an LDAP filter string
9097in which %s is replaced with the literal contents of the lookup key
9098and %0 is replaced with the LDAP escaped contents of the lookup key
9099according to RFC 2254.
9100If the flag
9101.b \-K
9102is used, then %1 through %9 are replaced with the LDAP escaped contents
9103of the arguments specified in the map lookup.
9104.ip "\-v\fIvalcol\fP"
9105The value column name (for NIS+) or number
9106(for text lookups).
9107For LDAP maps this is the name of one or more
9108attributes to be returned;
9109multiple attributes can be separated by commas.
9110If not specified, all attributes found in the match
9111will be returned.
9112The attributes listed can also include a type and one or more
9113objectClass values for matching as described in the LDAP section.
9114.ip "\-z\fIdelim\fP"
9115The column delimiter (for text lookups).
9116It can be a single character or one of the special strings
9117.q \|\en
9118or
9119.q \|\et
9120to indicate newline or tab respectively.
9121If omitted entirely,
9122the column separator is any sequence of white space.
9123For LDAP maps this is the separator character
9124to combine multiple values
9125into a single return string.
9126If not set,
9127the LDAP lookup will only return the first match found.
9128For DNS maps this is the separator character at which
9129the result of a query is cut off if is too long.
9130.ip "\-t"
9131Normally, when a map attempts to do a lookup
9132and the server fails
9133(e.g.,
9134.i sendmail
9135couldn't contact any name server;
9136this is
9137.i not
9138the same as an entry not being found in the map),
9139the message being processed is queued for future processing.
9140The
9141.b \-t
9142flag turns off this behavior,
9143letting the temporary failure (server down)
9144act as though it were a permanent failure (entry not found).
9145It is particularly useful for DNS lookups,
9146where someone else's misconfigured name server can cause problems
9147on your machine.
9148However, care must be taken to ensure that you don't bounce mail
9149that would be resolved correctly if you tried again.
9150A common strategy is to forward such mail
9151to another, possibly better connected, mail server.
9152.ip "\-D"
9153Perform no lookup in deferred delivery mode.
9154This flag is set by default for the
9155.i host
9156map.
9157.ip "\-S\fIspacesub\fP
9158The character to use to replace space characters
9159after a successful map lookup (esp. useful for regex
9160and syslog maps).
9161.ip "\-s\fIspacesub\fP
9162For the dequote map only,
9163the character to use to replace space characters
9164after a successful dequote.
9165.ip "\-q"
9166Don't dequote the key before lookup.
9167.ip "\-L\fIlevel\fP
9168For the syslog map only, it specifies the level
9169to use for the syslog call.
9170.ip "\-A"
9171When rebuilding an alias file,
9172the
9173.b \-A
9174flag causes duplicate entries in the text version
9175to be merged.
9176For example, two entries:
9177.(b
9178list: user1, user2
9179list: user3
9180.)b
9181would be treated as though it were the single entry
9182.(b
9183list: user1, user2, user3
9184.)b
9185in the presence of the
9186.b \-A
9187flag.
9188.pp
9189Some additional flags are available for the host and dns maps:
9190.ip "\-d"
9191delay: specify the resolver's retransmission time interval (in seconds).
9192.ip "\-r"
9193retry: specify the number of times to retransmit a resolver query.
9194.pp
9195The dns map has another flag:
9196.ip "\-B"
9197basedomain: specify a domain that is always appended to queries.
9198.pp
9199The following additional flags are present in the ldap map only:
9200.ip "\-R"
9201Do not auto chase referrals. sendmail must be compiled with
9202.b \-DLDAP_REFERRALS
9203to use this flag.
9204.ip "\-n"
9205Retrieve attribute names only.
9206.ip "\-V\fIsep\fP"
9207Retrieve both attributes name and value(s),
9208separated by
9209.i sep .
9210.ip "\-r\fIderef\fP"
9211Set the alias dereference option to one of never, always, search, or find.
9212.ip "\-s\fIscope\fP"
9213Set search scope to one of base, one (one level), or sub (subtree).
9214.ip "\-h\fIhost\fP"
9215LDAP server hostname.
9216Some LDAP libraries allow you to specify multiple, space-separated hosts for
9217redundancy.
9218In addition, each of the hosts listed can be followed by a colon and a port
9219number to override the default LDAP port.
9220.ip "\-p\fIport\fP"
9221LDAP service port.
9222.ip "\-H \fILDAPURI\fP"
9223Use the specified LDAP URI instead of specifying the hostname and port
9224separately with the the
9225.b \-h
9226and
9227.b \-p
9228options shown above.
9229For example,
9230.(b
9231-h server.example.com -p 389 -b dc=example,dc=com
9232.)b
9233is equivalent to
9234.(b
9235-H ldap://server.example.com:389 -b dc=example,dc=com
9236.)b
9237If the LDAP library supports it,
9238the LDAP URI format however can also request LDAP over SSL by using
9239.b ldaps://
9240instead of
9241.b ldap:// .
9242For example:
9243.(b
9244O LDAPDefaultSpec=-H ldaps://ldap.example.com -b dc=example,dc=com
9245.)b
9246Similarly, if the LDAP library supports it,
9247It can also be used to specify a UNIX domain socket using
9248.b ldapi:// :
9249.(b
9250O LDAPDefaultSpec=-H ldapi://socketfile -b dc=example,dc=com
9251.)b
9252.ip "\-b\fIbase\fP"
9253LDAP search base.
9254.ip "\-l\fItimelimit\fP"
9255Time limit for LDAP queries.
9256.ip "\-Z\fIsizelimit\fP"
9257Size (number of matches) limit for LDAP or DNS queries.
9258.ip "\-d\fIdistinguished_name\fP"
9259The distinguished name to use to login to the LDAP server.
9260.ip "\-M\fImethod\fP"
9261The method to authenticate to the LDAP server.
9262Should be one of
9263.b LDAP_AUTH_NONE ,
9264.b LDAP_AUTH_SIMPLE ,
9265or
9266.b LDAP_AUTH_KRBV4 .
9267.ip "\-P\fIpasswordfile\fP"
9268The file containing the secret key for the
9269.b LDAP_AUTH_SIMPLE
9270authentication method
9271or the name of the Kerberos ticket file for
9272.b LDAP_AUTH_KRBV4 .
9273.ip "\-1"
9274Force LDAP searches to only succeed if a single match is found.
9275If multiple values are found,
9276the search is treated as if no match was found.
9277.ip "\-w\fIversion\fP"
9278Set the LDAP API/protocol version to use.
9279The default depends on the LDAP client libraries in use.
9280For example,
9281.b "\-w 3"
9282will cause
9283.i sendmail
9284to use LDAPv3 when communicating with the LDAP server.
9285.ip "\-K"
9286Treat the LDAP search key as multi-argument and
9287replace %1 through %9 in the key with
9288the LDAP escaped contents of the lookup arguments specified in the map lookup.
9289.pp
9290The
9291.i dbm
9292map appends the strings
9293.q \&.pag
9294and
9295.q \&.dir
9296to the given filename;
9297the
9298.i hash
9299and
9300.i btree
9301maps append
9302.q \&.db .
9303For example, the map specification
9304.(b
9305Kuucp dbm \-o \-N /etc/mail/uucpmap
9306.)b
9307specifies an optional map named
9308.q uucp
9309of class
9310.q dbm ;
9311it always has null bytes at the end of every string,
9312and the data is located in
9313/etc/mail/uucpmap.{dir,pag}.
9314.pp
9315The program
9316.i makemap (8)
9317can be used to build any of the three database-oriented maps.
9318It takes the following flags:
9319.ip \-f
9320Do not fold upper to lower case in the map.
9321.ip \-N
9322Include null bytes in keys.
9323.ip \-o
9324Append to an existing (old) file.
9325.ip \-r
9326Allow replacement of existing keys;
9327normally, re-inserting an existing key is an error.
9328.ip \-v
9329Print what is happening.
9330.lp
9331The
9332.i sendmail
9333daemon does not have to be restarted to read the new maps
9334as long as you change them in place;
9335file locking is used so that the maps won't be read
9336while they are being updated.
9337.pp
9338New classes can be added in the routine
9339.b setupmaps
9340in file
9341.b conf.c .
9342.sh 2 "Q \*- Queue Group Declaration"
9343.pp
9344In addition to the option
9345.i QueueDirectory,
9346queue groups can be declared that define a (group of) queue directories
9347under a common name.
9348The syntax is as follows:
9349.(b F
9350.b Q \c
9351.i name
9352{, \c
9353.i field =\c
9354.i value \|}+
9355.)b
9356where
9357.i name
9358is the symbolic name of the queue group under which
9359it can be referenced in various places
9360and the
9361.q field=value
9362pairs define attributes of the queue group.
9363The name must only consist of alphanumeric characters.
9364Fields are:
9365.ip Flags
9366Flags for this queue group.
9367.ip Nice
9368The nice(2) increment for the queue group.
9369This value must be greater or equal zero.
9370.ip Interval
9371The time between two queue runs.
9372.ip Path
9373The queue directory of the group (required).
9374.ip Runners
9375The number of parallel runners processing the queue.
9376Note that
9377.b F=f
9378must be set if this value is greater than one.
9379.ip Jobs
9380The maximum number of jobs (messages delivered) per queue run.
9381.ip recipients
9382The maximum number of recipients per envelope.
9383Envelopes with more than this number of recipients will be split
9384into multiple envelopes in the same queue directory.
9385The default value 0 means no limit.
9386.lp
9387Only the first character of the field name is checked.
9388.pp
9389By default, a queue group named
9390.i mqueue
9391is defined that uses the value of the
9392.i QueueDirectory
9393option as path.
9394Notice: all paths that are used for queue groups must
9395be subdirectories of
9396.i QueueDirectory .
9397Since they can be symbolic links, this isn't a real restriction,
9398If
9399.i QueueDirectory
9400uses a wildcard, then the directory one level up is considered
9401the ``base'' directory which all other queue directories must share.
9402Please make sure that the queue directories do not overlap,
9403e.g., do not specify
9404.(b
9405O QueueDirectory=/var/spool/mqueue/*
9406Qone, P=/var/spool/mqueue/dir1
9407Qtwo, P=/var/spool/mqueue/dir2
9408.)b
9409because this also includes
9410.q dir1
9411and
9412.q dir2
9413in the default queue group.
9414However,
9415.(b
9416O QueueDirectory=/var/spool/mqueue/main*
9417Qone, P=/var/spool/mqueue/dir
9418Qtwo, P=/var/spool/mqueue/other*
9419.)b
9420is a valid queue group specification.
9421.pp
9422Options listed in the ``Flags'' field can be used to modify
9423the behavior of a queue group.
9424The ``f'' flag must be set if multiple queue runners are
9425supposed to work on the entries in a queue group.
9426Otherwise
9427.i sendmail
9428will work on the entries strictly sequentially.
9429.pp
9430The ``Interval'' field sets the time between queue runs.
9431If no queue group specific interval is set, then the parameter of the
9432.b -q
9433option from the command line is used.
9434.pp
9435To control the overall number of concurrently active queue runners
9436the option
9437.b MaxQueueChildren
9438can be set.
9439This limits the number of processes used for running the queues to
9440.b MaxQueueChildren ,
9441though at any one time fewer processes may be active
9442as a result of queue options, completed queue runs, system load, etc.
9443.pp
9444The maximum number of queue runners for an individual queue group can be
9445controlled via the
9446.b Runners
9447option.
9448If set to 0, entries in the queue will not be processed, which
9449is useful to ``quarantine'' queue files.
9450The number of runners per queue group may also be set with the option
9451.b MaxRunnersPerQueue ,
9452which applies to queue groups that have no individual limit.
9453That is, the default value for
9454.b Runners
9455is
9456.b MaxRunnersPerQueue
9457if set, otherwise 1.
9458.pp
9459The field Jobs describes the maximum number of jobs
9460(messages delivered) per queue run, which is the queue group specific
9461value of
9462.b MaxQueueRunSize .
9463.pp
9464Notice: queue groups should be declared after all queue related options
9465have been set because queue groups take their defaults from those options.
9466If an option is set after a queue group declaration, the values of
9467options in the queue group are set to the defaults of
9468.i sendmail
9469unless explicitly set in the declaration.
9470.pp
9471Each envelope is assigned to a queue group based on the algorithm
9472described in section
9473``Queue Groups and Queue Directories''.
9474.sh 2 "X \*- Mail Filter (Milter) Definitions"
9475.pp
9476The
9477.i sendmail
9478Mail Filter API (Milter) is designed to allow third-party programs access
9479to mail messages as they are being processed in order to filter
9480meta-information and content.
9481They are declared in the configuration file as:
9482.(b F
9483.b X \c
9484.i name
9485{, \c
9486.i field =\c
9487.i value \|}*
9488.)b
9489where
9490.i name
9491is the name of the filter
9492(used internally only)
9493and the
9494.q field=name
9495pairs define attributes of the filter.
9496Also see the documentation for the
9497.b InputMailFilters
9498option for more information.
9499.pp
9500Fields are:
9501.(b
9502.ta 1i
9503Socket The socket specification
9504Flags Special flags for this filter
9505Timeouts Timeouts for this filter
9506.)b
9507Only the first character of the field name is checked
9508(it's case-sensitive).
9509.pp
9510The socket specification is one of the following forms:
9511.(b F
9512.b S= \c
9513.b inet \c
9514.b :
9515.i port
9516.b @
9517.i host
9518.)b
9519.(b F
9520.b S= \c
9521.b inet6 \c
9522.b :
9523.i port
9524.b @
9525.i host
9526.)b
9527.(b F
9528.b S= \c
9529.b local \c
9530.b :
9531.i path
9532.)b
9533The first two describe an IPv4 or IPv6 socket listening on a certain
9534.i port
9535at a given
9536.i host
9537or IP address.
9538The final form describes a named socket on the filesystem at the given
9539.i path .
9540.pp
9541The following flags may be set in the filter description.
9542.nr ii 4n
9543.ip R
9544Reject connection if filter unavailable.
9545.ip T
9546Temporary fail connection if filter unavailable.
9547.pp
9548If neither F=R nor F=T is specified, the message is passed through
9549.i sendmail
9550in case of filter errors as if the failing filters were not present.
9551.pp
9552The timeouts can be set using the four fields inside of the
9553.b T=
9554equate:
9555.nr ii 4n
9556.ip C
9557Timeout for connecting to a filter.
9558If set to 0, the system's
9559.i connect()
9560timeout will be used.
9561.ip S
9562Timeout for sending information from the MTA to a filter.
9563.ip R
9564Timeout for reading reply from the filter.
9565.ip E
9566Overall timeout between sending end-of-message to filter and waiting for
9567the final acknowledgment.
9568.pp
9569Note the separator between each timeout field is a
9570.b ';' .
9571The default values (if not set) are:
9572.b T=C:5m;S:10s;R:10s;E:5m
9573where
9574.b s
9575is seconds and
9576.b m
9577is minutes.
9578.pp
9579Examples:
9580.(b
9581Xfilter1, S=local:/var/run/f1.sock, F=R
9582Xfilter2, S=inet6:999@localhost, F=T, T=S:1s;R:1s;E:5m
9583Xfilter3, S=inet:3333@localhost, T=C:2m
9584.)b
9585.sh 2 "The User Database"
9586.pp
9587The user database is deprecated in favor of ``virtusertable''
9588and ``genericstable'' as explained in the file
9589.b cf/README .
9590If you have a version of
9591.i sendmail
9592with the user database package
9593compiled in,
9594the handling of sender and recipient addresses
9595is modified.
9596.pp
9597The location of this database is controlled with the
9598.b UserDatabaseSpec
9599option.
9600.sh 3 "Structure of the user database"
9601.pp
9602The database is a sorted (BTree-based) structure.
9603User records are stored with the key:
9604.(b
9605\fIuser-name\fP\fB:\fP\fIfield-name\fP
9606.)b
9607The sorted database format ensures that user records are clustered together.
9608Meta-information is always stored with a leading colon.
9609.pp
9610Field names define both the syntax and semantics of the value.
9611Defined fields include:
9612.nr ii 1i
9613.ip maildrop
9614The delivery address for this user.
9615There may be multiple values of this record.
9616In particular,
9617mailing lists will have one
9618.i maildrop
9619record for each user on the list.
9620.ip "mailname"
9621The outgoing mailname for this user.
9622For each outgoing name,
9623there should be an appropriate
9624.i maildrop
9625record for that name to allow return mail.
9626See also
9627.i :default:mailname .
9628.ip mailsender
9629Changes any mail sent to this address to have the indicated envelope sender.
9630This is intended for mailing lists,
9631and will normally be the name of an appropriate -request address.
9632It is very similar to the owner-\c
9633.i list
9634syntax in the alias file.
9635.ip fullname
9636The full name of the user.
9637.ip office-address
9638The office address for this user.
9639.ip office-phone
9640The office phone number for this user.
9641.ip office-fax
9642The office FAX number for this user.
9643.ip home-address
9644The home address for this user.
9645.ip home-phone
9646The home phone number for this user.
9647.ip home-fax
9648The home FAX number for this user.
9649.ip project
9650A (short) description of the project this person is affiliated with.
9651In the University this is often just the name of their graduate advisor.
9652.ip plan
9653A pointer to a file from which plan information can be gathered.
9654.pp
9655As of this writing,
9656only a few of these fields are actually being used by
9657.i sendmail :
9658.i maildrop
9659and
9660.i mailname .
9661A
9662.i finger
9663program that uses the other fields is planned.
9664.sh 3 "User database semantics"
9665.pp
9666When the rewriting rules submit an address to the local mailer,
9667the user name is passed through the alias file.
9668If no alias is found (or if the alias points back to the same address),
9669the name (with
9670.q :maildrop
9671appended)
9672is then used as a key in the user database.
9673If no match occurs (or if the maildrop points at the same address),
9674forwarding is tried.
9675.pp
9676If the first token of the user name returned by ruleset 0
9677is an
9678.q @
9679sign, the user database lookup is skipped.
9680The intent is that the user database will act as a set of defaults
9681for a cluster (in our case, the Computer Science Division);
9682mail sent to a specific machine should ignore these defaults.
9683.pp
9684When mail is sent,
9685the name of the sending user is looked up in the database.
9686If that user has a
9687.q mailname
9688record,
9689the value of that record is used as their outgoing name.
9690For example, I might have a record:
9691.(b
9692eric:mailname Eric.Allman@CS.Berkeley.EDU
9693.)b
9694This would cause my outgoing mail to be sent as Eric.Allman.
9695.pp
9696If a
9697.q maildrop
9698is found for the user,
9699but no corresponding
9700.q mailname
9701record exists,
9702the record
9703.q :default:mailname
9704is consulted.
9705If present, this is the name of a host to override the local host.
9706For example, in our case we would set it to
9707.q CS.Berkeley.EDU .
9708The effect is that anyone known in the database
9709gets their outgoing mail stamped as
9710.q user@CS.Berkeley.EDU ,
9711but people not listed in the database use the local hostname.
9712.sh 3 "Creating the database\**"
9713.(f
9714\**These instructions are known to be incomplete.
9715Other features are available which provide similar functionality,
9716e.g., virtual hosting and mapping local addresses into a
9717generic form as explained in cf/README.
9718.)f
9719.pp
9720The user database is built from a text file
9721using the
9722.i makemap
9723utility
9724(in the distribution in the makemap subdirectory).
9725The text file is a series of lines corresponding to userdb records;
9726each line has a key and a value separated by white space.
9727The key is always in the format described above \*-
9728for example:
9729.(b
9730eric:maildrop
9731.)b
9732This file is normally installed in a system directory;
9733for example, it might be called
9734.i /etc/mail/userdb .
9735To make the database version of the map, run the program:
9736.(b
9737makemap btree /etc/mail/userdb < /etc/mail/userdb
9738.)b
9739Then create a config file that uses this.
9740For example, using the V8 M4 configuration, include the
9741following line in your .mc file:
9742.(b
9743define(\`confUSERDB_SPEC\', /etc/mail/userdb)
9744.)b
9745.sh 1 "OTHER CONFIGURATION"
9746.pp
9747There are some configuration changes that can be made by
9748recompiling
9749.i sendmail .
9750This section describes what changes can be made
9751and what has to be modified to make them.
9752In most cases this should be unnecessary
9753unless you are porting
9754.i sendmail
9755to a new environment.
9756.sh 2 "Parameters in devtools/OS/$oscf"
9757.pp
9758These parameters are intended to describe the compilation environment,
9759not site policy,
9760and should normally be defined in the operating system
9761configuration file.
9762.b "This section needs a complete rewrite."
9763.ip NDBM
9764If set,
9765the new version of the DBM library
9766that allows multiple databases will be used.
9767If neither NDBM nor NEWDB are set,
9768a much less efficient method of alias lookup is used.
9769.ip NEWDB
9770If set, use the new database package from Berkeley (from 4.4BSD).
9771This package is substantially faster than DBM or NDBM.
9772If NEWDB and NDBM are both set,
9773.i sendmail
9774will read DBM files,
9775but will create and use NEWDB files.
9776.ip NIS
9777Include support for NIS.
9778If set together with
9779.i both
9780NEWDB and NDBM,
9781.i sendmail
9782will create both DBM and NEWDB files if and only if
9783an alias file includes the substring
9784.q /yp/
9785in the name.
9786This is intended for compatibility with Sun Microsystems'
9787.i mkalias
9788program used on YP masters.
9789.ip NISPLUS
9790Compile in support for NIS+.
9791.ip NETINFO
9792Compile in support for NetInfo (NeXT stations).
9793.ip LDAPMAP
9794Compile in support for LDAP X500 queries.
9795Requires libldap and liblber
9796from the Umich LDAP 3.2 or 3.3 release
9797or equivalent libraries for other LDAP libraries
9798such as OpenLDAP.
9799.ip HESIOD
9800Compile in support for Hesiod.
9801.ip MAP_NSD
9802Compile in support for IRIX NSD lookups.
9803.ip MAP_REGEX
9804Compile in support for regular expression matching.
9805.ip DNSMAP
9806Compile in support for DNS map lookups in the
9807.i sendmail.cf
9808file.
9809.ip PH_MAP
9810Compile in support for ph lookups.
9811.ip SASL
9812Compile in support for SASL,
9813a required component for SMTP Authentication support.
9814.ip STARTTLS
9815Compile in support for STARTTLS.
9816.ip EGD
9817Compile in support for the "Entropy Gathering Daemon"
9818to provide better random data for TLS.
9819.ip TCPWRAPPERS
9820Compile in support for TCP Wrappers.
9821.ip _PATH_SENDMAILCF
9822The pathname of the sendmail.cf file.
9823.ip _PATH_SENDMAILPID
9824The pathname of the sendmail.pid file.
9825.ip SM_CONF_SHM
9826Compile in support for shared memory, see section about
9827"/var/spool/mqueue".
9828.ip MILTER
9829Compile in support for contacting external mail filters built with the
9830Milter API.
9831.pp
9832There are also several compilation flags to indicate the environment
9833such as
9834.q _AIX3
9835and
9836.q _SCO_unix_ .
9837See the sendmail/README
9838file for the latest scoop on these flags.
9839.sh 2 "Parameters in sendmail/conf.h"
9840.pp
9841Parameters and compilation options
9842are defined in conf.h.
9843Most of these need not normally be tweaked;
9844common parameters are all in sendmail.cf.
9845However, the sizes of certain primitive vectors, etc.,
9846are included in this file.
9847The numbers following the parameters
9848are their default value.
9849.pp
9850This document is not the best source of information
9851for compilation flags in conf.h \(em
9852see sendmail/README or sendmail/conf.h itself.
9853.nr ii 1.2i
9854.ip "MAXLINE [2048]"
9855The maximum line length of any input line.
9856If message lines exceed this length
9857they will still be processed correctly;
9858however, header lines,
9859configuration file lines,
9860alias lines,
9861etc.,
9862must fit within this limit.
9863.ip "MAXNAME [256]"
9864The maximum length of any name,
9865such as a host or a user name.
9866.ip "MAXPV [256]"
9867The maximum number of parameters to any mailer.
9868This limits the number of recipients that may be passed in one transaction.
9869It can be set to any arbitrary number above about 10,
9870since
9871.i sendmail
9872will break up a delivery into smaller batches as needed.
9873A higher number may reduce load on your system, however.
9874.ip "MAXQUEUEGROUPS [50]"
9875The maximum number of queue groups.
9876.ip "MAXATOM [1000]"
9877The maximum number of atoms
9878(tokens)
9879in a single address.
9880For example,
9881the address
9882.q "eric@CS.Berkeley.EDU"
9883is seven atoms.
9884.ip "MAXMAILERS [25]"
9885The maximum number of mailers that may be defined
9886in the configuration file.
9887This value is defined in include/sendmail/sendmail.h.
9888.ip "MAXRWSETS [200]"
9889The maximum number of rewriting sets
9890that may be defined.
9891The first half of these are reserved for numeric specification
9892(e.g., ``S92''),
9893while the upper half are reserved for auto-numbering
9894(e.g., ``Sfoo'').
9895Thus, with a value of 200 an attempt to use ``S99'' will succeed,
9896but ``S100'' will fail.
9897.ip "MAXPRIORITIES [25]"
9898The maximum number of values for the
9899.q Precedence:
9900field that may be defined
9901(using the
9902.b P
9903line in sendmail.cf).
9904.ip "MAXUSERENVIRON [100]"
9905The maximum number of items in the user environment
9906that will be passed to subordinate mailers.
9907.ip "MAXMXHOSTS [100]"
9908The maximum number of MX records we will accept for any single host.
9909.ip "MAXMAPSTACK [12]"
9910The maximum number of maps that may be "stacked" in a
9911.b sequence
9912class map.
9913.ip "MAXMIMEARGS [20]"
9914The maximum number of arguments in a MIME Content-Type: header;
9915additional arguments will be ignored.
9916.ip "MAXMIMENESTING [20]"
9917The maximum depth to which MIME messages may be nested
9918(that is, nested Message or Multipart documents;
9919this does not limit the number of components in a single Multipart document).
9920.ip "MAXDAEMONS [10]"
9921The maximum number of sockets sendmail will open for accepting connections
9922on different ports.
9923.ip "MAXMACNAMELEN [25]"
9924The maximum length of a macro name.
9925.lp
9926A number of other compilation options exist.
9927These specify whether or not specific code should be compiled in.
9928Ones marked with \(dg
9929are 0/1 valued.
9930.nr ii 1.2i
9931.ip NETINET\(dg
9932If set,
9933support for Internet protocol networking is compiled in.
9934Previous versions of
9935.i sendmail
9936referred to this as
9937.sm DAEMON ;
9938this old usage is now incorrect.
9939Defaults on;
9940turn it off in the Makefile
9941if your system doesn't support the Internet protocols.
9942.ip NETINET6\(dg
9943If set,
9944support for IPv6 networking is compiled in.
9945It must be separately enabled by adding
9946.b DaemonPortOptions
9947settings.
9948.ip NETISO\(dg
9949If set,
9950support for ISO protocol networking is compiled in
9951(it may be appropriate to #define this in the Makefile instead of conf.h).
9952.ip NETUNIX\(dg
9953If set,
9954support for UNIX domain sockets is compiled in.
9955This is used for control socket support.
9956.ip LOG
9957If set,
9958the
9959.i syslog
9960routine in use at some sites is used.
9961This makes an informational log record
9962for each message processed,
9963and makes a higher priority log record
9964for internal system errors.
9965.b "STRONGLY RECOMMENDED"
9966\(em if you want no logging, turn it off in the configuration file.
9967.ip MATCHGECOS\(dg
9968Compile in the code to do ``fuzzy matching'' on the GECOS field
9969in /etc/passwd.
9970This also requires that the
9971.b MatchGECOS
9972option be turned on.
9973.ip NAMED_BIND\(dg
9974Compile in code to use the
9975Berkeley Internet Name Domain (BIND) server
9976to resolve TCP/IP host names.
9977.ip NOTUNIX
9978If you are using a non-UNIX mail format,
9979you can set this flag to turn off special processing
9980of UNIX-style
9981.q "From "
9982lines.
9983.ip USERDB\(dg
9984Include the
9985.b experimental
9986Berkeley user information database package.
9987This adds a new level of local name expansion
9988between aliasing and forwarding.
9989It also uses the NEWDB package.
9990This may change in future releases.
9991.lp
9992The following options are normally turned on
9993in per-operating-system clauses in conf.h.
9994.ip IDENTPROTO\(dg
9995Compile in the IDENT protocol as defined in RFC 1413.
9996This defaults on for all systems except Ultrix,
9997which apparently has the interesting
9998.q feature
9999that when it receives a
10000.q "host unreachable"
10001message it closes all open connections to that host.
10002Since some firewall gateways send this error code
10003when you access an unauthorized port (such as 113, used by IDENT),
10004Ultrix cannot receive email from such hosts.
10005.ip SYSTEM5
10006Set all of the compilation parameters appropriate for System V.
10007.ip HASFLOCK\(dg
10008Use Berkeley-style
10009.b flock
10010instead of System V
10011.b lockf
10012to do file locking.
10013Due to the highly unusual semantics of locks
10014across forks in
10015.b lockf ,
10016this should always be used if at all possible.
10017.ip HASINITGROUPS
10018Set this if your system has the
10019.i initgroups()
10020call
10021(if you have multiple group support).
10022This is the default if SYSTEM5 is
10023.i not
10024defined or if you are on HPUX.
10025.ip HASUNAME
10026Set this if you have the
10027.i uname (2)
10028system call (or corresponding library routine).
10029Set by default if
10030SYSTEM5
10031is set.
10032.ip HASGETDTABLESIZE
10033Set this if you have the
10034.i getdtablesize (2)
10035system call.
10036.ip HASWAITPID
10037Set this if you have the
10038.i haswaitpid (2)
10039system call.
10040.ip FAST_PID_RECYCLE
10041Set this if your system can possibly
10042reuse the same pid in the same second of time.
10043.ip SFS_TYPE
10044The mechanism that can be used to get file system capacity information.
10045The values can be one of
10046SFS_USTAT (use the ustat(2) syscall),
10047SFS_4ARGS (use the four argument statfs(2) syscall),
10048SFS_VFS (use the two argument statfs(2) syscall including <sys/vfs.h>),
10049SFS_MOUNT (use the two argument statfs(2) syscall including <sys/mount.h>),
10050SFS_STATFS (use the two argument statfs(2) syscall including <sys/statfs.h>),
10051SFS_STATVFS (use the two argument statfs(2) syscall including <sys/statvfs.h>),
10052or
10053SFS_NONE (no way to get this information).
10054.ip LA_TYPE
10055The load average type.
10056Details are described below.
10057.lp
10058The are several built-in ways of computing the load average.
10059.i Sendmail
10060tries to auto-configure them based on imperfect guesses;
10061you can select one using the
10062.i cc
10063option
10064.b \-DLA_TYPE= \c
10065.i type ,
10066where
10067.i type
10068is:
10069.ip LA_INT
10070The kernel stores the load average in the kernel as an array of long integers.
10071The actual values are scaled by a factor FSCALE
10072(default 256).
10073.ip LA_SHORT
10074The kernel stores the load average in the kernel as an array of short integers.
10075The actual values are scaled by a factor FSCALE
10076(default 256).
10077.ip LA_FLOAT
10078The kernel stores the load average in the kernel as an array of
10079double precision floats.
10080.ip LA_MACH
10081Use MACH-style load averages.
10082.ip LA_SUBR
10083Call the
10084.i getloadavg
10085routine to get the load average as an array of doubles.
10086.ip LA_ZERO
10087Always return zero as the load average.
10088This is the fallback case.
10089.lp
10090If type
10091.sm LA_INT ,
10092.sm LA_SHORT ,
10093or
10094.sm LA_FLOAT
10095is specified,
10096you may also need to specify
10097.sm _PATH_UNIX
10098(the path to your system binary)
10099and
10100.sm LA_AVENRUN
10101(the name of the variable containing the load average in the kernel;
10102usually
10103.q _avenrun
10104or
10105.q avenrun ).
10106.sh 2 "Configuration in sendmail/conf.c"
10107.pp
10108The following changes can be made in conf.c.
10109.sh 3 "Built-in Header Semantics"
10110.pp
10111Not all header semantics are defined in the configuration file.
10112Header lines that should only be included by certain mailers
10113(as well as other more obscure semantics)
10114must be specified in the
10115.i HdrInfo
10116table in
10117.i conf.c .
10118This table contains the header name
10119(which should be in all lower case)
10120and a set of header control flags (described below),
10121The flags are:
10122.ip H_ACHECK
10123Normally when the check is made to see if a header line is compatible
10124with a mailer,
10125.i sendmail
10126will not delete an existing line.
10127If this flag is set,
10128.i sendmail
10129will delete
10130even existing header lines.
10131That is,
10132if this bit is set and the mailer does not have flag bits set
10133that intersect with the required mailer flags
10134in the header definition in
10135sendmail.cf,
10136the header line is
10137.i always
10138deleted.
10139.ip H_EOH
10140If this header field is set,
10141treat it like a blank line,
10142i.e.,
10143it will signal the end of the header
10144and the beginning of the message text.
10145.ip H_FORCE
10146Add this header entry
10147even if one existed in the message before.
10148If a header entry does not have this bit set,
10149.i sendmail
10150will not add another header line if a header line
10151of this name already existed.
10152This would normally be used to stamp the message
10153by everyone who handled it.
10154.ip H_TRACE
10155If set,
10156this is a timestamp
10157(trace)
10158field.
10159If the number of trace fields in a message
10160exceeds a preset amount
10161the message is returned
10162on the assumption that it has an aliasing loop.
10163.ip H_RCPT
10164If set,
10165this field contains recipient addresses.
10166This is used by the
10167.b \-t
10168flag to determine who to send to
10169when it is collecting recipients from the message.
10170.ip H_FROM
10171This flag indicates that this field
10172specifies a sender.
10173The order of these fields in the
10174.i HdrInfo
10175table specifies
10176.i sendmail 's
10177preference
10178for which field to return error messages to.
10179.ip H_ERRORSTO
10180Addresses in this header should receive error messages.
10181.ip H_CTE
10182This header is a Content-Transfer-Encoding header.
10183.ip H_CTYPE
10184This header is a Content-Type header.
10185.ip H_STRIPVAL
10186Strip the value from the header (for Bcc:).
10187.nr ii 5n
10188.lp
10189Let's look at a sample
10190.i HdrInfo
10191specification:
10192.(b
10193.ta 4n +\w'"content-transfer-encoding", 'u
10194struct hdrinfo HdrInfo[] =
10195\&{
10196 /* originator fields, most to least significant */
10197 "resent-sender", H_FROM,
10198 "resent-from", H_FROM,
10199 "sender", H_FROM,
10200 "from", H_FROM,
10201 "full-name", H_ACHECK,
10202 "errors-to", H_FROM\^|\^H_ERRORSTO,
10203 /* destination fields */
10204 "to", H_RCPT,
10205 "resent-to", H_RCPT,
10206 "cc", H_RCPT,
10207 "bcc", H_RCPT\^|\^H_STRIPVAL,
10208 /* message identification and control */
10209 "message", H_EOH,
10210 "text", H_EOH,
10211 /* trace fields */
10212 "received", H_TRACE\^|\^H_FORCE,
10213 /* miscellaneous fields */
10214 "content-transfer-encoding", H_CTE,
10215 "content-type", H_CTYPE,
10216
10217 NULL, 0,
10218};
10219.)b
10220This structure indicates that the
10221.q To: ,
10222.q Resent-To: ,
10223and
10224.q Cc:
10225fields
10226all specify recipient addresses.
10227Any
10228.q Full-Name:
10229field will be deleted unless the required mailer flag
10230(indicated in the configuration file)
10231is specified.
10232The
10233.q Message:
10234and
10235.q Text:
10236fields will terminate the header;
10237these are used by random dissenters around the network world.
10238The
10239.q Received:
10240field will always be added,
10241and can be used to trace messages.
10242.pp
10243There are a number of important points here.
10244First,
10245header fields are not added automatically just because they are in the
10246.i HdrInfo
10247structure;
10248they must be specified in the configuration file
10249in order to be added to the message.
10250Any header fields mentioned in the configuration file but not
10251mentioned in the
10252.i HdrInfo
10253structure have default processing performed;
10254that is,
10255they are added unless they were in the message already.
10256Second,
10257the
10258.i HdrInfo
10259structure only specifies cliched processing;
10260certain headers are processed specially by ad hoc code
10261regardless of the status specified in
10262.i HdrInfo .
10263For example,
10264the
10265.q Sender:
10266and
10267.q From:
10268fields are always scanned on ARPANET mail
10269to determine the sender\**;
10270.(f
10271\**Actually, this is no longer true in SMTP;
10272this information is contained in the envelope.
10273The older ARPANET protocols did not completely distinguish
10274envelope from header.
10275.)f
10276this is used to perform the
10277.q "return to sender"
10278function.
10279The
10280.q "From:"
10281and
10282.q "Full-Name:"
10283fields are used to determine the full name of the sender
10284if possible;
10285this is stored in the macro
10286.b $x
10287and used in a number of ways.
10288.sh 3 "Restricting Use of Email"
10289.pp
10290If it is necessary to restrict mail through a relay,
10291the
10292.i checkcompat
10293routine can be modified.
10294This routine is called for every recipient address.
10295It returns an exit status
10296indicating the status of the message.
10297The status
10298.sm EX_OK
10299accepts the address,
10300.sm EX_TEMPFAIL
10301queues the message for a later try,
10302and other values
10303(commonly
10304.sm EX_UNAVAILABLE )
10305reject the message.
10306It is up to
10307.i checkcompat
10308to print an error message
10309(using
10310.i usrerr )
10311if the message is rejected.
10312For example,
10313.i checkcompat
10314could read:
10315.(b
10316.re
10317.sz -1
10318.ta 4n +4n +4n +4n +4n +4n +4n
10319int
10320checkcompat(to, e)
10321 register ADDRESS *to;
10322 register ENVELOPE *e;
10323\&{
10324 register STAB *s;
10325
10326 s = stab("private", ST_MAILER, ST_FIND);
10327 if (s != NULL && e\->e_from.q_mailer != LocalMailer &&
10328 to->q_mailer == s->s_mailer)
10329 {
10330 usrerr("No private net mail allowed through this machine");
10331 return (EX_UNAVAILABLE);
10332 }
10333 if (MsgSize > 50000 && bitnset(M_LOCALMAILER, to\->q_mailer))
10334 {
10335 usrerr("Message too large for non-local delivery");
10336 e\->e_flags |= EF_NORETURN;
10337 return (EX_UNAVAILABLE);
10338 }
10339 return (EX_OK);
10340}
10341.sz
10342.)b
10343This would reject messages greater than 50000 bytes
10344unless they were local.
10345The
10346.i EF_NORETURN
10347flag can be set in
10348.i e\(->e_flags
10349to suppress the return of the actual body
10350of the message in the error return.
10351The actual use of this routine is highly dependent on the
10352implementation,
10353and use should be limited.
10354.sh 3 "New Database Map Classes"
10355.pp
10356New key maps can be added by creating a class initialization function
10357and a lookup function.
10358These are then added to the routine
10359.i setupmaps.
10360.pp
10361The initialization function is called as
10362.(b
10363\fIxxx\fP_map_init(MAP *map, char *args)
10364.)b
10365The
10366.i map
10367is an internal data structure.
10368The
10369.i args
10370is a pointer to the portion of the configuration file line
10371following the map class name;
10372flags and filenames can be extracted from this line.
10373The initialization function must return
10374.sm true
10375if it successfully opened the map,
10376.sm false
10377otherwise.
10378.pp
10379The lookup function is called as
10380.(b
10381\fIxxx\fP_map_lookup(MAP *map, char buf[], char **av, int *statp)
10382.)b
10383The
10384.i map
10385defines the map internally.
10386The
10387.i buf
10388has the input key.
10389This may be (and often is) used destructively.
10390The
10391.i av
10392is a list of arguments passed in from the rewrite line.
10393The lookup function should return a pointer to the new value.
10394If the map lookup fails,
10395.i *statp
10396should be set to an exit status code;
10397in particular, it should be set to
10398.sm EX_TEMPFAIL
10399if recovery is to be attempted by the higher level code.
10400.sh 3 "Queueing Function"
10401.pp
10402The routine
10403.i shouldqueue
10404is called to decide if a message should be queued
10405or processed immediately.
10406Typically this compares the message priority to the current load average.
10407The default definition is:
10408.(b
10409bool
10410shouldqueue(pri, ctime)
10411 long pri;
10412 time_t ctime;
10413{
10414 if (CurrentLA < QueueLA)
10415 return false;
10416 return (pri > (QueueFactor / (CurrentLA \- QueueLA + 1)));
10417}
10418.)b
10419If the current load average
10420(global variable
10421.i CurrentLA ,
10422which is set before this function is called)
10423is less than the low threshold load average
10424(option
10425.b x ,
10426variable
10427.i QueueLA ),
10428.i shouldqueue
10429returns
10430.sm false
10431immediately
10432(that is, it should
10433.i not
10434queue).
10435If the current load average exceeds the high threshold load average
10436(option
10437.b X ,
10438variable
10439.i RefuseLA ),
10440.i shouldqueue
10441returns
10442.sm true
10443immediately.
10444Otherwise, it computes the function based on the message priority,
10445the queue factor
10446(option
10447.b q ,
10448global variable
10449.i QueueFactor ),
10450and the current and threshold load averages.
10451.pp
10452An implementation wishing to take the actual age of the message into account
10453can also use the
10454.i ctime
10455parameter,
10456which is the time that the message was first submitted to
10457.i sendmail .
10458Note that the
10459.i pri
10460parameter is already weighted
10461by the number of times the message has been tried
10462(although this tends to lower the priority of the message with time);
10463the expectation is that the
10464.i ctime
10465would be used as an
10466.q "escape clause"
10467to ensure that messages are eventually processed.
10468.sh 3 "Refusing Incoming SMTP Connections"
10469.pp
10470The function
10471.i refuseconnections
10472returns
10473.sm true
10474if incoming SMTP connections should be refused.
10475The current implementation is based exclusively on the current load average
10476and the refuse load average option
10477(option
10478.b X ,
10479global variable
10480.i RefuseLA ):
10481.(b
10482bool
10483refuseconnections()
10484{
10485 return (RefuseLA > 0 && CurrentLA >= RefuseLA);
10486}
10487.)b
10488A more clever implementation
10489could look at more system resources.
10490.sh 3 "Load Average Computation"
10491.pp
10492The routine
10493.i getla
10494returns the current load average (as a rounded integer).
10495The distribution includes several possible implementations.
10496If you are porting to a new environment
10497you may need to add some new tweaks.\**
10498.(f
10499\**If you do, please send updates to
10500sendmail@Sendmail.ORG.
10501.)f
10502.sh 2 "Configuration in sendmail/daemon.c"
10503.pp
10504The file
10505.i sendmail/daemon.c
10506contains a number of routines that are dependent
10507on the local networking environment.
10508The version supplied assumes you have BSD style sockets.
10509.pp
10510In previous releases,
10511we recommended that you modify the routine
10512.i maphostname
10513if you wanted to generalize
10514.b $[
10515\&...\&
10516.b $]
10517lookups.
10518We now recommend that you create a new keyed map instead.
10519.sh 2 "LDAP"
10520.pp
10521In this section we assume that
10522.i sendmail
10523has been compiled with support for LDAP.
10524.sh 3 "LDAP Recursion"
10525.pp
10526LDAP Recursion allows you to add types to the search attributes on an
10527LDAP map specification.
10528The syntax is:
10529.ip "\-v \fIATTRIBUTE\fP[:\fITYPE\fP[:\fIOBJECTCLASS\fP[|\fIOBJECTCLASS\fP|...]]]
10530.pp
10531The new \fITYPE\fPs are:
10532.nr ii 1i
10533.ip NORMAL
10534This attribute type specifies the attribute to add to the results string.
10535This is the default.
10536.ip DN
10537Any matches for this attribute are expected to have a value of a
10538fully qualified distinguished name.
10539.i sendmail
10540will lookup that DN and apply the attributes requested to the
10541returned DN record.
10542.ip FILTER
10543Any matches for this attribute are expected to have a value of an
10544LDAP search filter.
10545.i sendmail
10546will perform a lookup with the same parameters as the original
10547search but replaces the search filter with the one specified here.
10548.ip URL
10549Any matches for this attribute are expected to have a value of an LDAP URL.
10550.i sendmail
10551will perform a lookup of that URL and use the results from the attributes
10552named in that URL.
10553Note however that the search is done using the current LDAP connection,
10554regardless of what is specified as the scheme, LDAP host, and LDAP
10555port in the LDAP URL.
10556.lp
10557Any untyped attributes are considered
10558.sm NORMAL
10559attributes as described above.
10560.pp
10561The optional \fIOBJECTCLASS\fP (| separated) list contains the
10562objectClass values for which that attribute applies.
10563If the list is given,
10564the attribute named will only be used if the LDAP record being returned is a
10565member of that object class.
10566Note that if these new value attribute \fITYPE\fPs are used in an
10567AliasFile
10568option setting, it will need to be double quoted to prevent
10569.i sendmail
10570from misparsing the colons.
10571.pp
10572Note that LDAP recursion attributes which do not ultimately point to an
10573LDAP record are not considered an error.
10574.sh 4 "Example"
10575.pp
10576Since examples usually help clarify, here is an example which uses all
10577four of the new types:
10578.(b
10579O LDAPDefaultSpec=-h ldap.example.com -b dc=example,dc=com
10580
10581Kexample ldap
10582 -z,
10583 -k (&(objectClass=sendmailMTAAliasObject)(sendmailMTAKey=%0))
10584 -v sendmailMTAAliasValue,mail:NORMAL:inetOrgPerson,
10585 uniqueMember:DN:groupOfUniqueNames,
10586 sendmailMTAAliasSearch:FILTER:sendmailMTAAliasObject,
10587 sendmailMTAAliasURL:URL:sendmailMTAAliasObject
10588.)b
10589.pp
10590That definition specifies that:
10591.bu
10592Any value in a
10593.sm sendmailMTAAliasValue
10594attribute will be added to the result string regardless of object class.
10595.bu
10596The
10597.sm mail
10598attribute will be added to the result string if
10599the LDAP record is a member of the
10600.sm inetOrgPerson
10601object class.
10602.bu
10603The
10604.sm uniqueMember
10605attribute is a recursive attribute, used only in
10606.sm groupOfUniqueNames
10607records, and should contain an LDAP DN pointing to another LDAP record.
10608The desire here is to return the
10609.sm mail
10610attribute from those DNs.
10611.bu
10612The
10613.sm sendmailMTAAliasSearch
10614attribute and
10615.sm sendmailMTAAliasURL
10616are both used only if referenced in a
10617.sm sendmailMTAAliasObject .
10618They are both recursive, the first for a new LDAP search string and the
10619latter for an LDAP URL.
10620.sh 2 "STARTTLS"
10621.pp
10622In this section we assume that
10623.i sendmail
10624has been compiled with support for STARTTLS.
10625To properly understand the use of STARTTLS in
10626.i sendmail ,
10627it is necessary to understand at least some basics about X.509 certificates
10628and public key cryptography.
10629This information can be found in books about SSL/TLS
10630or on WWW sites, e.g.,
10631.q http://www.OpenSSL.org/ .
10632.sh 3 "Certificates for STARTTLS"
10633.pp
10634When acting as a server,
10635.i sendmail
10636requires X.509 certificates to support STARTTLS:
10637one as certificate for the server (ServerCertFile and corresponding
10638private ServerKeyFile)
10639at least one root CA (CACertFile),
10640i.e., a certificate that is used to sign other certificates,
10641and a path to a directory which contains other CAs (CACertPath).
10642The file specified via
10643CACertFile
10644can contain several certificates of CAs.
10645The DNs of these certificates are sent
10646to the client during the TLS handshake (as part of the
10647CertificateRequest) as the list of acceptable CAs.
10648However, do not list too many root CAs in that file, otherwise
10649the TLS handshake may fail; e.g.,
10650.(b
10651error:14094417:SSL routines:SSL3_READ_BYTES:
10652sslv3 alert illegal parameter:s3_pkt.c:964:SSL alert number 47
10653.)b
10654You should probably put only the CA cert into that file
10655that signed your own cert(s), or at least only those you trust.
10656The CACertPath directory must contain the hashes of each CA certificate
10657as filenames (or as links to them).
10658Symbolic links can be generated with the following
10659two (Bourne) shell commands:
10660.(b
10661C=FileName_of_CA_Certificate
10662ln -s $C `openssl x509 -noout -hash < $C`.0
10663.)b
10664An X.509 certificate is also required for authentication in client mode
10665(ClientCertFile and corresponding private ClientKeyFile), however,
10666.i sendmail
10667will always use STARTTLS when offered by a server.
10668The client and server certificates can be identical.
10669Certificates can be obtained from a certificate authority
10670or created with the help of OpenSSL.
10671The required format for certificates and private keys is PEM.
10672To allow for automatic startup of sendmail, private keys
10673(ServerKeyFile, ClientKeyFile)
10674must be stored unencrypted.
10675The keys are only protected by the permissions of the file system.
10676Never make a private key available to a third party.
10677.sh 3 "PRNG for STARTTLS"
10678.pp
10679STARTTLS requires a strong pseudo random number generator (PRNG)
10680to operate properly.
10681Depending on the TLS library you use, it may be required to explicitly
10682initialize the PRNG with random data.
10683OpenSSL makes use of
10684.b /dev/urandom(4)
10685if available (this corresponds to the compile flag HASURANDOMDEV).
10686On systems which lack this support, a random file must be specified in the
10687.i sendmail.cf
10688file using the option RandFile.
10689It is
10690.b strongly
10691advised to use the "Entropy Gathering Daemon" EGD
10692from Brian Warner on those systems to provide useful random data.
10693In this case,
10694.i sendmail
10695must be compiled with the flag EGD, and the
10696RandFile option must point to the EGD socket.
10697If neither
10698.b /dev/urandom(4)
10699nor EGD are available, you have to make sure
10700that useful random data is available all the time in RandFile.
10701If the file hasn't been modified in the last 10 minutes before
10702it is supposed to be used by
10703.i sendmail
10704the content is considered obsolete.
10705One method for generating this file is:
10706.(b
10707openssl rand -out /etc/mail/randfile -rand \c
10708.i /path/to/file:... \c
10709256
10710.)b
10711See the OpenSSL documentation for more information.
10712In this case, the PRNG for TLS is only
10713seeded with other random data if the
10714.b DontBlameSendmail
10715option
10716.b InsufficientEntropy
10717is set.
10718This is most likely not sufficient for certain actions, e.g.,
10719generation of (temporary) keys.
10720.pp
10721Please see the OpenSSL documentation or other sources
10722for further information about certificates, their creation and their usage,
10723the importance of a good PRNG, and other aspects of TLS.
10724.sh 2 "Encoding of STARTTLS and AUTH related Macros"
10725.pp
10726Macros that contain STARTTLS and AUTH related data which comes from outside
10727sources, e.g., all macros containing information from certificates,
10728are encoded to avoid problems with non-printable or special characters.
10729The latter are '\\', '<', '>', '(', ')', '"', '+', and ' '.
10730All of these characters are replaced by their value in hexadecimal
10731with a leading '+'.
10732For example:
10733.(b
10734/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/
10735Email=darth+cert@endmail.org
10736.)b
10737is encoded as:
10738.(b
10739/C=US/ST=California/O=endmail.org/OU=private/
10740CN=Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
10741.)b
10742(line breaks have been inserted for readability).
10743The macros which are subject to this encoding are
10744{cert_subject}, {cert_issuer}, {cn_subject}, {cn_issuer},
10745as well as
10746{auth_authen} and {auth_author}.
10747.sh 1 "ACKNOWLEDGEMENTS"
10748.pp
10749I've worked on
10750.i sendmail
10751for many years,
10752and many employers have been remarkably patient
10753about letting me work on a large project
10754that was not part of my official job.
10755This includes time on the INGRES Project at
10756the University of California at Berkeley,
10757at Britton Lee,
10758and again on the Mammoth and Titan Projects at Berkeley.
10759.pp
10760Much of the second wave of improvements
10761resulting in version 8.1
10762should be credited to Bryan Costales of the
10763International Computer Science Institute.
10764As he passed me drafts of his book on
10765.i sendmail
10766I was inspired to start working on things again.
10767Bryan was also available to bounce ideas off of.
10768.pp
10769Gregory Neil Shapiro
10770of Worcester Polytechnic Institute
10771has become instrumental in all phases of
10772.i sendmail
10773support and development,
10774and was largely responsible for getting versions 8.8 and 8.9
10775out the door.
10776.pp
10777Many, many people contributed chunks of code and ideas to
10778.i sendmail .
10779It has proven to be a group network effort.
10780Version 8 in particular was a group project.
10781The following people and organizations made notable contributions:
10782.(l
10783Claus Assmann
10784John Beck, Hewlett-Packard & Sun Microsystems
10785Keith Bostic, CSRG, University of California, Berkeley
10786Andrew Cheng, Sun Microsystems
10787Michael J. Corrigan, University of California, San Diego
10788Bryan Costales, International Computer Science Institute & InfoBeat
10789Pa\*:r (Pell) Emanuelsson
10790Craig Everhart, Transarc Corporation
10791Per Hedeland, Ericsson
10792Tom Ivar Helbekkmo, Norwegian School of Economics
10793Kari Hurtta, Finnish Meteorological Institute
10794Allan E. Johannesen, WPI
10795Jonathan Kamens, OpenVision Technologies, Inc.
10796Takahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.
10797Brian Kantor, University of California, San Diego
10798John Kennedy, Cal State University, Chico
10799Murray S. Kucherawy, HookUp Communication Corp.
10800Bruce Lilly, Sony U.S.
10801Karl London
10802Motonori Nakamura, Ritsumeikan University & Kyoto University
10803John Gardiner Myers, Carnegie Mellon University
10804Neil Rickert, Northern Illinois University
10805Gregory Neil Shapiro, WPI
10806Eric Schnoebelen, Convex Computer Corp.
10807Eric Wassenaar, National Institute for Nuclear and High Energy Physics, Amsterdam
10808Randall Winchester, University of Maryland
10809Christophe Wolfhugel, Pasteur Institute & Herve Schauer Consultants (Paris)
10810Exactis.com, Inc.
10811.)l
10812I apologize for anyone I have omitted, misspelled, misattributed, or
10813otherwise missed.
10814At this point, I suspect that at least a hundred people
10815have contributed code,
10816and many more have contributed ideas, comments, and encouragement.
10817I've tried to list them in the RELEASE_NOTES in the distribution directory.
10818I appreciate their contribution as well.
10819.pp
10820Special thanks are reserved for Michael Corrigan and Christophe Wolfhugel,
10821who besides being wonderful guinea pigs and contributors
10822have also consented to be added to the ``sendmail@Sendmail.ORG'' list
10823and, by answering the bulk of the questions sent to that list,
10824have freed me up to do other work.
10825.++ A
10826.+c "COMMAND LINE FLAGS"
10827.ba 0
10828.nr ii 1i
10829.pp
10830Arguments must be presented with flags before addresses.
10831The flags are:
10832.ip \-A\fIx\fP
10833Select an alternative .cf file which is either
10834.i sendmail.cf
10835for
10836.b \-Am
10837or
10838.i submit.cf
10839for
10840.b \-Ac .
10841By default the .cf file is chosen based on the operation mode.
10842For
10843.b -bm
10844(default),
10845.b -bs ,
10846and
10847.b -t
10848it is
10849.i submit.cf
10850if it exists, for all others it is
10851.i sendmail.cf .
10852.ip \-b\fIx\fP
10853Set operation mode to
10854.i x .
10855Operation modes are:
10856.(b
10857.ta 4n
10858m Deliver mail (default)
10859s Speak SMTP on input side
10860a\(dg ``Arpanet'' mode (get envelope sender information from header)
10861d Run as a daemon in background
10862D Run as a daemon in foreground
10863t Run in test mode
10864v Just verify addresses, don't collect or deliver
10865i Initialize the alias database
10866p Print the mail queue
10867P Print overview over the mail queue (requires shared memory)
10868h Print the persistent host status database
10869H Purge expired entries from the persistent host status database
10870.)b
10871.(f
10872\(dgDeprecated.
10873.)f
10874.ip \-B\fItype\fP
10875Indicate body type.
10876.ip \-C\fIfile\fP
10877Use a different configuration file.
10878.i Sendmail
10879runs as the invoking user (rather than root)
10880when this flag is specified.
10881.ip "\-D \fIlogfile\fP"
10882Send debugging output to the indicated
10883.i logfile
10884instead of stdout.
10885.ip \-d\fIlevel\fP
10886Set debugging level.
10887.ip "\-f\ \fIaddr\fP"
10888The envelope sender address is set to
10889.i addr .
10890This address may also be used in the From: header
10891if that header is missing during initial submission.
10892The envelope sender address is used as the recipient
10893for delivery status notifications
10894and may also appear in a Return-Path: header.
10895.ip \-F\ \fIname\fP
10896Sets the full name of this user to
10897.i name .
10898.ip \-G
10899When accepting messages via the command line,
10900indicate that they are for relay (gateway) submission.
10901sendmail may complain about syntactically invalid messages,
10902e.g., unqualified host names,
10903rather than fixing them when this flag is set.
10904sendmail will not do any canonicalization in this mode.
10905.ip "\-h\ \fIcnt\fP"
10906Sets the
10907.q "hop count"
10908to
10909.i cnt .
10910This represents the number of times this message has been processed
10911by
10912.i sendmail
10913(to the extent that it is supported by the underlying networks).
10914.i Cnt
10915is incremented during processing,
10916and if it reaches
10917MAXHOP
10918(currently 25)
10919.i sendmail
10920throws away the message with an error.
10921.ip "\-L \fItag\fP"
10922Sets the identifier used for syslog.
10923Note that this identifier is set
10924as early as possible.
10925However,
10926.i sendmail
10927may be used
10928if problems arise
10929before the command line arguments
10930are processed.
10931.ip \-n
10932Don't do aliasing or forwarding.
10933.ip "\-N \fInotifications\fP"
10934Tag all addresses being sent as wanting the indicated
10935.i notifications ,
10936which consists of the word
10937.q NEVER
10938or a comma-separated list of
10939.q SUCCESS ,
10940.q FAILURE ,
10941and
10942.q DELAY
10943for successful delivery,
10944failure,
10945and a message that is stuck in a queue somewhere.
10946The default is
10947.q FAILURE,DELAY .
10948.ip "\-r\ \fIaddr\fP"
10949An obsolete form of
10950.b \-f .
10951.ip \-o\fIx\|value\fP
10952Set option
10953.i x
10954to the specified
10955.i value .
10956These options are described in Section 5.6.
10957.ip \-O\fIoption\fP\fB=\fP\fIvalue\fP
10958Set
10959.i option
10960to the specified
10961.i value
10962(for long form option names).
10963These options are described in Section 5.6.
10964.ip \-M\fIx\|value\fP
10965Set macro
10966.i x
10967to the specified
10968.i value .
10969.ip \-p\fIprotocol\fP
10970Set the sending protocol.
10971Programs are encouraged to set this.
10972The protocol field can be in the form
10973.i protocol \c
10974.b : \c
10975.i host
10976to set both the sending protocol and sending host.
10977For example,
10978.q \-pUUCP:uunet
10979sets the sending protocol to UUCP
10980and the sending host to uunet.
10981(Some existing programs use \-oM to set the r and s macros;
10982this is equivalent to using \-p.)
10983.ip \-q\fItime\fP
10984Try to process the queued up mail.
10985If the time is given,
10986a
10987.i sendmail
10988will start one or more processes to run through the queue(s) at the specified
10989time interval to deliver queued mail; otherwise, it only runs once.
10990Each of these processes acts on a workgroup.
10991These processes are also known as workgroup processes or WGP's for short.
10992Each workgroup is responsible for controlling the processing of one or
10993more queues; workgroups help manage the use of system resources by sendmail.
10994Each workgroup may have one or more children concurrently processing
10995queues depending on the setting of \fIMaxQueueChildren\fP.
10996.ip \-qp\fItime\fP
10997Similar to \-q with a time argument,
10998except that instead of periodically starting WGP's
10999sendmail starts persistent WGP's
11000that alternate between processing queues and sleeping.
11001The sleep time is specified by the time argument; it defaults to 1 second,
11002except that a WGP always sleeps at least 5 seconds if their queues were
11003empty in the previous run.
11004Persistent processes are managed by a queue control process (QCP).
11005The QCP is the parent process of the WGP's.
11006Typically the QCP will be the sendmail daemon (when started with \-bd or \-bD)
11007or a special process (named Queue control) (when started without \-bd or \-bD).
11008If a persistent WGP ceases to be active for some reason
11009another WGP will be started by the QCP for the same workgroup
11010in most cases. When a persistent WGP has core dumped, the debug flag
11011\fIno_persistent_restart\fP is set or the specific persistent WGP has been
11012restarted too many times already then the WGP will not be started again
11013and a message will be logged to this effect.
11014To stop (SIGTERM) or restart (SIGHUP) persistent WGP's the appropriate
11015signal should be sent to the QCP. The QCP will propagate the signal to all of
11016the WGP's and if appropriate restart the persistent WGP's.
11017.ip \-q\fIGname\fP
11018Run the jobs in the queue group
11019.i name
11020once.
11021.ip \-q[!]\fIXstring\fP
11022Run the queue once,
11023limiting the jobs to those matching
11024.i Xstring .
11025The key letter
11026.i X
11027can be
11028.b I
11029to limit based on queue identifier,
11030.b R
11031to limit based on recipient,
11032.b S
11033to limit based on sender,
11034or
11035.b Q
11036to limit based on quarantine reason for quarantined jobs.
11037A particular queued job is accepted if one of the corresponding attributes
11038contains the indicated
11039.i string .
11040The optional ! character negates the condition tested.
11041Multiple
11042.i \-q\fIX\fP
11043flags are permitted,
11044with items with the same key letter
11045.q or'ed
11046together, and items with different key letters
11047.q and'ed
11048together.
11049.ip "\-Q[reason]"
11050Quarantine a normal queue items with the given reason or
11051unquarantine quarantined queue items if no reason is given.
11052This should only be used with some sort of item matching using
11053.b \-q[!]\fIXstring\fP
11054as described above.
11055.ip "\-R ret"
11056What information you want returned if the message bounces;
11057.i ret
11058can be
11059.q HDRS
11060for headers only or
11061.q FULL
11062for headers plus body.
11063This is a request only;
11064the other end is not required to honor the parameter.
11065If
11066.q HDRS
11067is specified local bounces also return only the headers.
11068.ip \-t
11069Read the header for
11070.q To: ,
11071.q Cc: ,
11072and
11073.q Bcc:
11074lines, and send to everyone listed in those lists.
11075The
11076.q Bcc:
11077line will be deleted before sending.
11078Any addresses in the argument vector will be deleted
11079from the send list.
11080.ip "\-V envid"
11081The indicated
11082.i envid
11083is passed with the envelope of the message
11084and returned if the message bounces.
11085.ip "\-X \fIlogfile\fP"
11086Log all traffic in and out of
11087.i sendmail
11088in the indicated
11089.i logfile
11090for debugging mailer problems.
11091This produces a lot of data very quickly and should be used sparingly.
11092.pp
11093There are a number of options that may be specified as
11094primitive flags.
11095These are the e, i, m, and v options.
11096Also,
11097the f option
11098may be specified as the
11099.b \-s
11100flag.
11101The DSN related options
11102.q "\-N" ,
11103.q "\-R" ,
11104and
11105.q "\-V"
11106have no effects on
11107.i sendmail
11108running as daemon.
11109.+c "QUEUE FILE FORMATS"
11110.pp
11111This appendix describes the format of the queue files.
11112These files live in a queue directory.
11113The individual qf, hf, Qf, df, and xf files
11114may be stored in separate
11115.i qf/ ,
11116.i df/ ,
11117and
11118.i xf/
11119subdirectories
11120if they are present in the queue directory.
11121.pp
11122All queue files have the name
11123.i ttYMDhmsNNppppp
11124where
11125.i YMDhmsNNppppp
11126is the
11127.i id
11128for this message
11129and the
11130.i tt
11131is a type.
11132The individual letters in the
11133.i id
11134are:
11135.nr ii 0.5i
11136.ip Y
11137Encoded year
11138.ip M
11139Encoded month
11140.ip D
11141Encoded day
11142.ip h
11143Encoded hour
11144.ip m
11145Encoded minute
11146.ip s
11147Encoded second
11148.ip NN
11149Encoded envelope number
11150.ip ppppp
11151At least five decimal digits of the process ID
11152.pp
11153All files with the same id collectively define one message.
11154Due to the use of memory-buffered files,
11155some of these files may never appear on disk.
11156.pp
11157The types are:
11158.nr ii 0.5i
11159.ip qf
11160The queue control file.
11161This file contains the information necessary to process the job.
11162.ip hf
11163The same as a queue control file, but for a quarantined queue job.
11164.ip df
11165The data file.
11166The message body (excluding the header) is kept in this file.
11167Sometimes the df file is not stored in the same directory as the qf file;
11168in this case,
11169the qf file contains a `d' record which names the queue directory
11170that contains the df file.
11171.ip tf
11172A temporary file.
11173This is an image of the
11174.b qf
11175file when it is being rebuilt.
11176It should be renamed to a
11177.b qf
11178file very quickly.
11179.ip xf
11180A transcript file,
11181existing during the life of a session
11182showing everything that happens
11183during that session.
11184Sometimes the xf file must be generated before a queue group has been selected;
11185in this case,
11186the xf file will be stored in a directory of the default queue group.
11187.ip Qf
11188A ``lost'' queue control file.
11189.i sendmail
11190renames a
11191.b qf
11192file to
11193.b Qf
11194if there is a severe (configuration) problem that cannot be solved without
11195human intervention.
11196Search the logfile for the queue file id to figure out what happened.
11197After you resolved the problem, you can rename the
11198.b Qf
11199file to
11200.b qf
11201and send it again.
11202.pp
11203The queue control file is structured as a series of lines
11204each beginning with a code letter.
11205The lines are as follows:
11206.ip V
11207The version number of the queue file format,
11208used to allow new
11209.i sendmail
11210binaries to read queue files created by older versions.
11211Defaults to version zero.
11212Must be the first line of the file if present.
11213For 8.12 the version number is 6.
11214.ip A
11215The information given by the AUTH= parameter of the
11216.q "MAIL FROM:"
11217command or $f@$j
11218if sendmail has been called directly.
11219.ip H
11220A header definition.
11221There may be any number of these lines.
11222The order is important:
11223they represent the order in the final message.
11224These use the same syntax
11225as header definitions in the configuration file.
11226.ip C
11227The controlling address.
11228The syntax is
11229.q localuser:aliasname .
11230Recipient addresses following this line
11231will be flagged so that deliveries will be run as the
11232.i localuser
11233(a user name from the /etc/passwd file);
11234.i aliasname
11235is the name of the alias that expanded to this address
11236(used for printing messages).
11237.ip q
11238The quarantine reason for quarantined queue items.
11239.ip Q
11240The ``original recipient'',
11241specified by the ORCPT= field in an ESMTP transaction.
11242Used exclusively for Delivery Status Notifications.
11243It applies only to the following `R' line.
11244.ip r
11245The ``final recipient''
11246used for Delivery Status Notifications.
11247It applies only to the following `R' line.
11248.ip R
11249A recipient address.
11250This will normally be completely aliased,
11251but is actually realiased when the job is processed.
11252There will be one line for each recipient.
11253Version 1 qf files
11254also include a leading colon-terminated list of flags,
11255which can be
11256`S' to return a message on successful final delivery,
11257`F' to return a message on failure,
11258`D' to return a message if the message is delayed,
11259`B' to indicate that the body should be returned,
11260`N' to suppress returning the body,
11261and
11262`P' to declare this as a ``primary'' (command line or SMTP-session) address.
11263.ip S
11264The sender address.
11265There may only be one of these lines.
11266.ip T
11267The job creation time.
11268This is used to compute when to time out the job.
11269.ip P
11270The current message priority.
11271This is used to order the queue.
11272Higher numbers mean lower priorities.
11273The priority changes
11274as the message sits in the queue.
11275The initial priority depends on the message class
11276and the size of the message.
11277.ip M
11278A message.
11279This line is printed by the
11280.i mailq
11281command,
11282and is generally used to store status information.
11283It can contain any text.
11284.ip F
11285Flag bits, represented as one letter per flag.
11286Defined flag bits are
11287.b r
11288indicating that this is a response message
11289and
11290.b w
11291indicating that a warning message has been sent
11292announcing that the mail has been delayed.
11293Other flag bits are:
11294.b 8 :
11295the body contains 8bit data,
11296.b b :
11297a Bcc: header should be removed,
11298.b d :
11299the mail has RET parameters (see RFC 1894),
11300.b n :
11301the body of the message should not be returned
11302in case of an error,
11303.b s :
11304the envelope has been split.
11305.ip N
11306The total number of delivery attempts.
11307.ip K
11308The time (as seconds since January 1, 1970)
11309of the last delivery attempt.
11310.ip d
11311If the df file is in a different directory than the qf file,
11312then a `d' record is present,
11313specifying the directory in which the df file resides.
11314.ip I
11315The i-number of the data file;
11316this can be used to recover your mail queue
11317after a disastrous disk crash.
11318.ip $
11319A macro definition.
11320The values of certain macros
11321are passed through to the queue run phase.
11322.ip B
11323The body type.
11324The remainder of the line is a text string defining the body type.
11325If this field is missing,
11326the body type is assumed to be
11327.q "undefined"
11328and no special processing is attempted.
11329Legal values are
11330.q 7BIT
11331and
11332.q 8BITMIME .
11333.ip Z
11334The original envelope id (from the ESMTP transaction).
11335For Deliver Status Notifications only.
11336.pp
11337As an example,
11338the following is a queue file sent to
11339.q eric@mammoth.Berkeley.EDU
11340and
11341.q bostic@okeeffe.CS.Berkeley.EDU \**:
11342.(f
11343\**This example is contrived and probably inaccurate for your environment.
11344Glance over it to get an idea;
11345nothing can replace looking at what your own system generates.
11346.)f
11347.(b
11348V4
11349T711358135
11350K904446490
11351N0
11352P2100941
11353$_eric@localhost
11354${daemon_flags}
11355Seric
11356Ceric:100:1000:sendmail@vangogh.CS.Berkeley.EDU
11357RPFD:eric@mammoth.Berkeley.EDU
11358RPFD:bostic@okeeffe.CS.Berkeley.EDU
11359H?P?Return-path: <^g>
11360H??Received: by vangogh.CS.Berkeley.EDU (5.108/2.7) id AAA06703;
11361 Fri, 17 Jul 1992 00:28:55 -0700
11362H??Received: from mail.CS.Berkeley.EDU by vangogh.CS.Berkeley.EDU (5.108/2.7)
11363 id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700
11364H??Received: from [128.32.31.21] by mail.CS.Berkeley.EDU (5.96/2.5)
11365 id AA22777; Fri, 17 Jul 1992 03:29:14 -0400
11366H??Received: by foo.bar.baz.de (5.57/Ultrix3.0-C)
11367 id AA22757; Fri, 17 Jul 1992 09:31:25 GMT
11368H?F?From: eric@foo.bar.baz.de (Eric Allman)
11369H?x?Full-name: Eric Allman
11370H??Message-id: <9207170931.AA22757@foo.bar.baz.de>
11371H??To: sendmail@vangogh.CS.Berkeley.EDU
11372H??Subject: this is an example message
11373.)b
11374This shows
11375the person who sent the message,
11376the submission time
11377(in seconds since January 1, 1970),
11378the message priority,
11379the message class,
11380the recipients,
11381and the headers for the message.
11382.+c "SUMMARY OF SUPPORT FILES"
11383.pp
11384This is a summary of the support files
11385that
11386.i sendmail
11387creates or generates.
11388Many of these can be changed by editing the sendmail.cf file;
11389check there to find the actual pathnames.
11390.nr ii 1i
11391.ip "/usr/\*(SD/sendmail"
11392The binary of
11393.i sendmail .
11394.ip /usr/\*(SB/newaliases
11395A link to /usr/\*(SD/sendmail;
11396causes the alias database to be rebuilt.
11397Running this program is completely equivalent to giving
11398.i sendmail
11399the
11400.b \-bi
11401flag.
11402.ip /usr/\*(SB/mailq
11403Prints a listing of the mail queue.
11404This program is equivalent to using the
11405.b \-bp
11406flag to
11407.i sendmail .
11408.ip /etc/mail/sendmail.cf
11409The configuration file,
11410in textual form.
11411.ip /etc/mail/helpfile
11412The SMTP help file.
11413.ip /etc/mail/statistics
11414A statistics file; need not be present.
11415.ip /etc/mail/sendmail.pid
11416Created in daemon mode;
11417it contains the process id of the current SMTP daemon.
11418If you use this in scripts;
11419use ``head \-1'' to get just the first line;
11420the second line contains the command line used to invoke the daemon,
11421and later versions of
11422.i sendmail
11423may add more information to subsequent lines.
11424.ip /etc/mail/aliases
11425The textual version of the alias file.
11426.ip /etc/mail/aliases.db
11427The alias file in
11428.i hash \|(3)
11429format.
11430.ip /etc/mail/aliases.{pag,dir}
11431The alias file in
11432.i ndbm \|(3)
11433format.
11434.ip /var/spool/mqueue
11435The directory in which the mail queue(s)
11436and temporary files reside.
11437.ip /var/spool/mqueue/qf*
11438Control (queue) files for messages.
11439.ip /var/spool/mqueue/df*
11440Data files.
11441.ip /var/spool/mqueue/tf*
11442Temporary versions of the qf files,
11443used during queue file rebuild.
11444.ip /var/spool/mqueue/xf*
11445A transcript of the current session.
11446.if o \
11447\{\
11448. bp
11449. rs
11450. sp |4i
11451. ce 2
11452This page intentionally left blank;
11453replace it with a blank sheet for double-sided output.
11454.\}
11455.\".ro
11456.\".ls 1
11457.\".tp
11458.\".sp 2i
11459.\".in 0
11460.\".ce 100
11461.\".sz 24
11462.\".b SENDMAIL
11463.\".sz 14
11464.\".sp
11465.\"INSTALLATION AND OPERATION GUIDE
11466.\".sp
11467.\".sz 10
11468.\"Eric Allman
11469.\".sp
7547.ip MustQuoteChars=\fIs\fP
7548[no short name]
7549Sets the list of characters that must be quoted if used in a full name
7550that is in the phrase part of a ``phrase <address>'' syntax.
7551The default is ``\'.''.
7552The characters ``@,;:\e()[]'' are always added to this list.
7553.ip NiceQueueRun
7554[no short name]
7555The priority of queue runners (nice(3)).
7556This value must be greater or equal zero.
7557.ip NoRecipientAction
7558[no short name]
7559The action to take when you receive a message that has no valid
7560recipient headers (To:, Cc:, Bcc:, or Apparently-To: \(em
7561the last included for back compatibility with old
7562.i sendmail s).
7563It can be
7564.b None
7565to pass the message on unmodified,
7566which violates the protocol,
7567.b Add-To
7568to add a To: header with any recipients it can find in the envelope
7569(which might expose Bcc: recipients),
7570.b Add-Apparently-To
7571to add an Apparently-To: header
7572(this is only for back-compatibility
7573and is officially deprecated),
7574.b Add-To-Undisclosed
7575to add a header
7576.q "To: undisclosed-recipients:;"
7577to make the header legal without disclosing anything,
7578or
7579.b Add-Bcc
7580to add an empty Bcc: header.
7581.ip OldStyleHeaders
7582[o]
7583Assume that the headers may be in old format,
7584i.e.,
7585spaces delimit names.
7586This actually turns on
7587an adaptive algorithm:
7588if any recipient address contains a comma, parenthesis,
7589or angle bracket,
7590it will be assumed that commas already exist.
7591If this flag is not on,
7592only commas delimit names.
7593Headers are always output with commas between the names.
7594Defaults to off.
7595.ip OperatorChars=\fIcharlist\fP
7596[$o macro]
7597The list of characters that are considered to be
7598.q operators ,
7599that is, characters that delimit tokens.
7600All operator characters are tokens by themselves;
7601sequences of non-operator characters are also tokens.
7602White space characters separate tokens
7603but are not tokens themselves \(em for example,
7604.q AAA.BBB
7605has three tokens, but
7606.q "AAA BBB"
7607has two.
7608If not set, OperatorChars defaults to
7609.q \&.\|:\|@\|[\|] ;
7610additionally, the characters
7611.q (\|)\|<\|>\|,\|;
7612are always operators.
7613Note that OperatorChars must be set in the
7614configuration file before any rulesets.
7615.ip PidFile=\fIfilename\fP
7616[no short name]
7617Filename of the pid file.
7618(default is _PATH_SENDMAILPID).
7619The
7620.i filename
7621is macro-expanded before it is opened, and unlinked when
7622.i sendmail
7623exits.
7624.ip PostmasterCopy=\fIpostmaster\fP
7625[P]
7626If set,
7627copies of error messages will be sent to the named
7628.i postmaster .
7629Only the header of the failed message is sent.
7630Errors resulting from messages with a negative precedence will not be sent.
7631Since most errors are user problems,
7632this is probably not a good idea on large sites,
7633and arguably contains all sorts of privacy violations,
7634but it seems to be popular with certain operating systems vendors.
7635The address is macro expanded
7636at the time of delivery.
7637Defaults to no postmaster copies.
7638.ip PrivacyOptions=\fI\|opt,opt,...\fP
7639[p]
7640Set the privacy
7641.i opt ions.
7642``Privacy'' is really a misnomer;
7643many of these are just a way of insisting on stricter adherence
7644to the SMTP protocol.
7645The
7646.i opt ions
7647can be selected from:
7648.(b
7649.ta \w'noactualrecipient'u+3n
7650public Allow open access
7651needmailhelo Insist on HELO or EHLO command before MAIL
7652needexpnhelo Insist on HELO or EHLO command before EXPN
7653noexpn Disallow EXPN entirely, implies noverb.
7654needvrfyhelo Insist on HELO or EHLO command before VRFY
7655novrfy Disallow VRFY entirely
7656noetrn Disallow ETRN entirely
7657noverb Disallow VERB entirely
7658restrictmailq Restrict mailq command
7659restrictqrun Restrict \-q command line flag
7660restrictexpand Restrict \-bv and \-v command line flags
7661noreceipts Don't return success DSNs\**
7662nobodyreturn Don't return the body of a message with DSNs
7663goaway Disallow essentially all SMTP status queries
7664authwarnings Put X-Authentication-Warning: headers in messages
7665 and log warnings
7666noactualrecipient Don't put X-Actual-Recipient lines in DSNs
7667 which reveal the actual account that addresses map to.
7668.)b
7669.(f
7670\**N.B.:
7671the
7672.b noreceipts
7673flag turns off support for RFC 1891
7674(Delivery Status Notification).
7675.)f
7676The
7677.q goaway
7678pseudo-flag sets all flags except
7679.q noreceipts ,
7680.q restrictmailq ,
7681.q restrictqrun ,
7682.q restrictexpand ,
7683.q noetrn ,
7684and
7685.q nobodyreturn .
7686If mailq is restricted,
7687only people in the same group as the queue directory
7688can print the queue.
7689If queue runs are restricted,
7690only root and the owner of the queue directory
7691can run the queue.
7692The
7693.q restrictexpand
7694pseudo-flag instructs
7695.i sendmail
7696to drop privileges when the
7697.b \-bv
7698option is given by users who are neither root nor the TrustedUser
7699so users cannot read private aliases, forwards, or :include: files.
7700It will add the
7701.q NonRootSafeAddr
7702to the
7703.q DontBlameSendmail
7704option to prevent misleading unsafe address warnings.
7705It also overrides the
7706.b \-v
7707(verbose) command line option to prevent information leakage.
7708Authentication Warnings add warnings about various conditions
7709that may indicate attempts to spoof the mail system,
7710such as using a non-standard queue directory.
7711.ip ProcessTitlePrefix=\fIstring\fP
7712[no short name]
7713Prefix the process title shown on 'ps' listings with
7714.i string .
7715The
7716.i string
7717will be macro processed.
7718.ip QueueDirectory=\fIdir\fP
7719[Q]
7720The QueueDirectory option serves two purposes.
7721First, it specifies the directory or set of directories that comprise
7722the default queue group.
7723Second, it specifies the directory D which is the ancestor of all queue
7724directories, and which sendmail uses as its current working directory.
7725When sendmail dumps core, it leaves its core files in D.
7726There are two cases.
7727If \fIdir\fR ends with an asterisk (eg, \fI/var/spool/mqueue/qd*\fR),
7728then all of the directories or symbolic links to directories
7729beginning with `qd' in
7730.i /var/spool/mqueue
7731will be used as queue directories of the default queue group,
7732and
7733.i /var/spool/mqueue
7734will be used as the working directory D.
7735Otherwise,
7736\fIdir\fR must name a directory (usually \fI/var/spool/mqueue\fR):
7737the default queue group consists of the single queue directory \fIdir\fR,
7738and the working directory D is set to \fIdir\fR.
7739To define additional groups of queue directories,
7740use the configuration file `Q' command.
7741Do not change the queue directory structure
7742while sendmail is running.
7743.ip QueueFactor=\fIfactor\fP
7744[q]
7745Use
7746.i factor
7747as the multiplier in the map function
7748to decide when to just queue up jobs rather than run them.
7749This value is divided by the difference between the current load average
7750and the load average limit
7751(\c
7752.b QueueLA
7753option)
7754to determine the maximum message priority
7755that will be sent.
7756Defaults to 600000.
7757.ip QueueLA=\fILA\fP
7758[x]
7759When the system load average exceeds
7760.i LA
7761and the
7762.b QueueFactor
7763(\c
7764.b q )
7765option divided by the difference in the current load average and the
7766.b QueueLA
7767option plus one
7768is less than the priority of the message,
7769just queue messages
7770(i.e., don't try to send them).
7771Defaults to 8 multiplied by
7772the number of processors online on the system
7773(if that can be determined).
7774.ip QueueFileMode=\fImode\fP
7775[no short name]
7776Default permissions for queue files (octal).
7777If not set, sendmail uses 0600 unless its real
7778and effective uid are different in which case it uses 0644.
7779.ip QueueSortOrder=\fIalgorithm\fP
7780[no short name]
7781Sets the
7782.i algorithm
7783used for sorting the queue.
7784Only the first character of the value is used.
7785Legal values are
7786.q host
7787(to order by the name of the first host name of the first recipient),
7788.q filename
7789(to order by the name of the queue file name),
7790.q time
7791(to order by the submission/creation time),
7792.q random
7793(to order randomly),
7794.q modification
7795(to order by the modification time of the qf file (older entries first)),
7796.q none
7797(to not order),
7798and
7799.q priority
7800(to order by message priority).
7801Host ordering makes better use of the connection cache,
7802but may tend to process low priority messages
7803that go to a single host
7804over high priority messages that go to several hosts;
7805it probably shouldn't be used on slow network links.
7806Filename and modification time ordering saves the overhead of
7807reading all of the queued items
7808before starting the queue run.
7809Creation (submission) time ordering is almost always a bad idea,
7810since it allows large, bulk mail to go out
7811before smaller, personal mail,
7812but may have applicability on some hosts with very fast connections.
7813Random is useful if several queue runners are started by hand
7814which try to drain the same queue since odds are they will be working
7815on different parts of the queue at the same time.
7816Priority ordering is the default.
7817.ip QueueTimeout=\fItimeout\fP
7818[T]
7819A synonym for
7820.q Timeout.queuereturn .
7821Use that form instead of the
7822.q QueueTimeout
7823form.
7824.ip RandFile
7825[no short name]
7826Name of file containing random data or the name of the UNIX socket
7827if EGD is used.
7828A (required) prefix "egd:" or "file:" specifies the type.
7829STARTTLS requires this filename if the compile flag HASURANDOMDEV is not set
7830(see sendmail/README).
7831.ip ResolverOptions=\fIoptions\fP
7832[I]
7833Set resolver options.
7834Values can be set using
7835.b + \c
7836.i flag
7837and cleared using
7838.b \- \c
7839.i flag ;
7840the
7841.i flag s
7842can be
7843.q debug ,
7844.q aaonly ,
7845.q usevc ,
7846.q primary ,
7847.q igntc ,
7848.q recurse ,
7849.q defnames ,
7850.q stayopen ,
7851.q use_inet6 ,
7852or
7853.q dnsrch .
7854The string
7855.q HasWildcardMX
7856(without a
7857.b +
7858or
7859.b \- )
7860can be specified to turn off matching against MX records
7861when doing name canonifications.
7862The string
7863.q WorkAroundBrokenAAAA
7864(without a
7865.b +
7866or
7867.b \- )
7868can be specified to work around some broken nameservers
7869which return SERVFAIL (a temporary failure) on T_AAAA (IPv6) lookups.
7870Notice: it might be necessary to apply the same (or similar) options to
7871.i submit.cf
7872too.
7873.ip RequiresDirfsync
7874[no short name]
7875This option can be used to override the compile time flag
7876.b REQUIRES_DIR_FSYNC
7877at runtime by setting it to
7878.sm false .
7879If the compile time flag is not set, the option is ignored.
7880The flag turns on support for file systems that require to call
7881.i fsync()
7882for a directory if the meta-data in it has been changed.
7883This should be turned on at least for older versions of ReiserFS;
7884it is enabled by default for Linux.
7885According to some information this flag is not needed
7886anymore for kernel 2.4.16 and newer.
7887.ip RrtImpliesDsn
7888[R]
7889If this option is set, a
7890.q Return-Receipt-To:
7891header causes the request of a DSN, which is sent to
7892the envelope sender as required by RFC 1891,
7893not to the address given in the header.
7894.ip RunAsUser=\fIuser\fP
7895[no short name]
7896The
7897.i user
7898parameter may be a user name
7899(looked up in
7900.i /etc/passwd )
7901or a numeric user id;
7902either form can have
7903.q ":group"
7904attached
7905(where group can be numeric or symbolic).
7906If set to a non-zero (non-root) value,
7907.i sendmail
7908will change to this user id shortly after startup\**.
7909.(f
7910\**When running as a daemon,
7911it changes to this user after accepting a connection
7912but before reading any
7913.sm SMTP
7914commands.
7915.)f
7916This avoids a certain class of security problems.
7917However, this means that all
7918.q \&.forward
7919and
7920.q :include:
7921files must be readable by the indicated
7922.i user
7923and all files to be written must be writable by
7924.i user
7925Also, all file and program deliveries will be marked unsafe
7926unless the option
7927.b DontBlameSendmail=NonRootSafeAddr
7928is set,
7929in which case the delivery will be done as
7930.i user .
7931It is also incompatible with the
7932.b SafeFileEnvironment
7933option.
7934In other words, it may not actually add much to security on an average system,
7935and may in fact detract from security
7936(because other file permissions must be loosened).
7937However, it should be useful on firewalls and other
7938places where users don't have accounts and the aliases file is
7939well constrained.
7940.ip RecipientFactor=\fIfact\fP
7941[y]
7942The indicated
7943.i fact or
7944is added to the priority (thus
7945.i lowering
7946the priority of the job)
7947for each recipient,
7948i.e., this value penalizes jobs with large numbers of recipients.
7949Defaults to 30000.
7950.ip RefuseLA=\fILA\fP
7951[X]
7952When the system load average exceeds
7953.i LA ,
7954refuse incoming SMTP connections.
7955Defaults to 12 multiplied by
7956the number of processors online on the system
7957(if that can be determined).
7958.ip RejectLogInterval=\fItimeout\fP
7959[no short name]
7960Log interval when refusing connections for this long
7961(default: 3h).
7962.ip RetryFactor=\fIfact\fP
7963[Z]
7964The
7965.i fact or
7966is added to the priority
7967every time a job is processed.
7968Thus,
7969each time a job is processed,
7970its priority will be decreased by the indicated value.
7971In most environments this should be positive,
7972since hosts that are down are all too often down for a long time.
7973Defaults to 90000.
7974.ip SafeFileEnvironment=\fIdir\fP
7975[no short name]
7976If this option is set,
7977.i sendmail
7978will do a
7979.i chroot (2)
7980call into the indicated
7981.i dir ectory
7982before doing any file writes.
7983If the file name specified by the user begins with
7984.i dir ,
7985that partial path name will be stripped off before writing,
7986so (for example)
7987if the SafeFileEnvironment variable is set to
7988.q /safe
7989then aliases of
7990.q /safe/logs/file
7991and
7992.q /logs/file
7993actually indicate the same file.
7994Additionally, if this option is set,
7995.i sendmail
7996refuses to deliver to symbolic links.
7997.ip SaveFromLine
7998[f]
7999Save
8000UNIX-style
8001.q From
8002lines at the front of headers.
8003Normally they are assumed redundant
8004and discarded.
8005.ip SendMimeErrors
8006[j]
8007If set, send error messages in MIME format
8008(see RFC 2045 and RFC 1344 for details).
8009If disabled,
8010.i sendmail
8011will not return the DSN keyword in response to an EHLO
8012and will not do Delivery Status Notification processing as described in
8013RFC 1891.
8014.ip ServerCertFile
8015[no short name]
8016File containing the certificate of the server, i.e., this certificate
8017is used when sendmail acts as server
8018(used for STARTTLS).
8019.ip ServerKeyFile
8020[no short name]
8021File containing the private key belonging to the server certificate
8022(used for STARTTLS).
8023.ip ServiceSwitchFile=\fIfilename\fP
8024[no short name]
8025If your host operating system has a service switch abstraction
8026(e.g., /etc/nsswitch.conf on Solaris
8027or /etc/svc.conf on Ultrix and DEC OSF/1)
8028that service will be consulted and this option is ignored.
8029Otherwise, this is the name of a file
8030that provides the list of methods used to implement particular services.
8031The syntax is a series of lines,
8032each of which is a sequence of words.
8033The first word is the service name,
8034and following words are service types.
8035The services that
8036.i sendmail
8037consults directly are
8038.q aliases
8039and
8040.q hosts.
8041Service types can be
8042.q dns ,
8043.q nis ,
8044.q nisplus ,
8045or
8046.q files
8047(with the caveat that the appropriate support
8048must be compiled in
8049before the service can be referenced).
8050If ServiceSwitchFile is not specified, it defaults to
8051/etc/mail/service.switch.
8052If that file does not exist, the default switch is:
8053.(b
8054aliases files
8055hosts dns nis files
8056.)b
8057The default file is
8058.q /etc/mail/service.switch .
8059.ip SevenBitInput
8060[7]
8061Strip input to seven bits for compatibility with old systems.
8062This shouldn't be necessary.
8063.ip SharedMemoryKey
8064[no short name]
8065Key to use for shared memory segment;
8066if not set (or 0), shared memory will not be used.
8067If set to
8068-1
8069.i sendmail
8070can select a key itself provided that also
8071.b SharedMemoryKeyFile
8072is set.
8073Requires support for shared memory to be compiled into
8074.i sendmail .
8075If this option is set,
8076.i sendmail
8077can share some data between different instances.
8078For example, the number of entries in a queue directory
8079or the available space in a file system.
8080This allows for more efficient program execution, since only
8081one process needs to update the data instead of each individual
8082process gathering the data each time it is required.
8083.ip SharedMemoryKeyFile
8084[no short name]
8085If
8086.b SharedMemoryKey
8087is set to
8088-1
8089then the automatically selected shared memory key will be stored
8090in the specified file.
8091.ip SingleLineFromHeader
8092[no short name]
8093If set, From: lines that have embedded newlines are unwrapped
8094onto one line.
8095This is to get around a botch in Lotus Notes
8096that apparently cannot understand legally wrapped RFC 822 headers.
8097.ip SingleThreadDelivery
8098[no short name]
8099If set, a client machine will never try to open two SMTP connections
8100to a single server machine at the same time,
8101even in different processes.
8102That is, if another
8103.i sendmail
8104is already talking to some host a new
8105.i sendmail
8106will not open another connection.
8107This property is of mixed value;
8108although this reduces the load on the other machine,
8109it can cause mail to be delayed
8110(for example, if one
8111.i sendmail
8112is delivering a huge message, other
8113.i sendmail s
8114won't be able to send even small messages).
8115Also, it requires another file descriptor
8116(for the lock file)
8117per connection, so you may have to reduce the
8118.b ConnectionCacheSize
8119option to avoid running out of per-process file descriptors.
8120Requires the
8121.b HostStatusDirectory
8122option.
8123.ip SmtpGreetingMessage=\fImessage\fP
8124[$e macro]
8125The message printed when the SMTP server starts up.
8126Defaults to
8127.q "$j Sendmail $v ready at $b".
8128.ip SoftBounce
8129If set, issue temporary errors (4xy) instead of permanent errors (5xy).
8130This can be useful during testing of a new configuration to avoid
8131erroneous bouncing of mails.
8132.ip StatusFile=\fIfile\fP
8133[S]
8134Log summary statistics in the named
8135.i file .
8136If no file name is specified, "statistics" is used.
8137If not set,
8138no summary statistics are saved.
8139This file does not grow in size.
8140It can be printed using the
8141.i mailstats (8)
8142program.
8143.ip SuperSafe
8144[s]
8145This option can be set to True, False, Interactive, or PostMilter.
8146If set to True,
8147.i sendmail
8148will be super-safe when running things,
8149i.e., always instantiate the queue file,
8150even if you are going to attempt immediate delivery.
8151.i Sendmail
8152always instantiates the queue file
8153before returning control to the client
8154under any circumstances.
8155This should really
8156.i always
8157be set to True.
8158The Interactive value has been introduced in 8.12 and can
8159be used together with
8160.b DeliveryMode=i .
8161It skips some synchronization calls which are effectively
8162doubled in the code execution path for this mode.
8163If set to PostMilter,
8164.i sendmail
8165defers synchronizing the queue file until any milters have
8166signaled acceptance of the message.
8167PostMilter is useful only when
8168.i sendmail
8169is running as an SMTP server; in all other situations it
8170acts the same as True.
8171.ip TLSSrvOptions
8172[no short name]
8173List of options for SMTP STARTTLS for the server
8174consisting of single characters
8175with intervening white space or commas.
8176The flag ``V'' disables client verification, and hence
8177it is not possible to use a client certificate for relaying.
8178Currently there are no other flags available.
8179.ip TempFileMode=\fImode\fP
8180[F]
8181The file mode for transcript files, files to which
8182.i sendmail
8183delivers directly, files in the
8184.b HostStatusDirectory ,
8185and
8186.b StatusFile .
8187It is interpreted in octal by default.
8188Defaults to 0600.
8189.ip Timeout.\fItype\fP=\|\fItimeout\fP
8190[r; subsumes old T option as well]
8191Set timeout values.
8192For more information,
8193see section
8194.\" XREF
81954.1.
8196.ip TimeZoneSpec=\fItzinfo\fP
8197[t]
8198Set the local time zone info to
8199.i tzinfo
8200\*- for example,
8201.q PST8PDT .
8202Actually, if this is not set,
8203the TZ environment variable is cleared (so the system default is used);
8204if set but null, the user's TZ variable is used,
8205and if set and non-null the TZ variable is set to this value.
8206.ip TrustedUser=\fIuser\fP
8207[no short name]
8208The
8209.i user
8210parameter may be a user name
8211(looked up in
8212.i /etc/passwd )
8213or a numeric user id.
8214Trusted user for file ownership and starting the daemon. If set, generated
8215alias databases and the control socket (if configured) will automatically
8216be owned by this user.
8217.ip TryNullMXList
8218[w]
8219If this system is the
8220.q best
8221(that is, lowest preference)
8222MX for a given host,
8223its configuration rules should normally detect this situation
8224and treat that condition specially
8225by forwarding the mail to a UUCP feed,
8226treating it as local,
8227or whatever.
8228However, in some cases (such as Internet firewalls)
8229you may want to try to connect directly to that host
8230as though it had no MX records at all.
8231Setting this option causes
8232.i sendmail
8233to try this.
8234The downside is that errors in your configuration
8235are likely to be diagnosed as
8236.q "host unknown"
8237or
8238.q "message timed out"
8239instead of something more meaningful.
8240This option is disrecommended.
8241.ip UnixFromLine=\fIfromline\fP
8242[$l macro]
8243Defines the format used when
8244.i sendmail
8245must add a UNIX-style From_ line
8246(that is, a line beginning
8247.q From<space>user ).
8248Defaults to
8249.q "From $g $d" .
8250Don't change this unless your system uses a different UNIX mailbox format
8251(very unlikely).
8252.ip UnsafeGroupWrites
8253[no short name]
8254If set (default),
8255:include: and .forward files that are group writable are considered
8256.q unsafe ,
8257that is,
8258they cannot reference programs or write directly to files.
8259World writable :include: and .forward files
8260are always unsafe.
8261Note: use
8262.b DontBlameSendmail
8263instead; this option is deprecated.
8264.ip UseErrorsTo
8265[l]
8266If there is an
8267.q Errors-To:
8268header, send error messages to the addresses listed there.
8269They normally go to the envelope sender.
8270Use of this option causes
8271.i sendmail
8272to violate RFC 1123.
8273This option is disrecommended and deprecated.
8274.ip UserDatabaseSpec=\fIudbspec\fP
8275[U]
8276The user database specification.
8277.ip Verbose
8278[v]
8279Run in verbose mode.
8280If this is set,
8281.i sendmail
8282adjusts options
8283.b HoldExpensive
8284(old
8285.b c )
8286and
8287.b DeliveryMode
8288(old
8289.b d )
8290so that all mail is delivered completely
8291in a single job
8292so that you can see the entire delivery process.
8293Option
8294.b Verbose
8295should
8296.i never
8297be set in the configuration file;
8298it is intended for command line use only.
8299Note that the use of option
8300.b Verbose
8301can cause authentication information to leak, if you use a
8302sendmail client to authenticate to a server.
8303If the authentication mechanism uses plain text passwords
8304(as with LOGIN or PLAIN),
8305then the password could be compromised.
8306To avoid this, do not install sendmail set-user-ID root,
8307and disable the
8308.b VERB
8309SMTP command with a suitable
8310.b PrivacyOptions
8311setting.
8312.ip XscriptFileBufferSize=\fIthreshold\fP
8313[no short name]
8314Set the
8315.i threshold ,
8316in bytes,
8317before a memory-based
8318queue transcript file
8319becomes disk-based.
8320The default is 4096 bytes.
8321.lp
8322All options can be specified on the command line using the
8323\-O or \-o flag,
8324but most will cause
8325.i sendmail
8326to relinquish its set-user-ID permissions.
8327The options that will not cause this are
8328SevenBitInput [7],
8329EightBitMode [8],
8330MinFreeBlocks [b],
8331CheckpointInterval [C],
8332DeliveryMode [d],
8333ErrorMode [e],
8334IgnoreDots [i],
8335SendMimeErrors [j],
8336LogLevel [L],
8337MeToo [m],
8338OldStyleHeaders [o],
8339PrivacyOptions [p],
8340SuperSafe [s],
8341Verbose [v],
8342QueueSortOrder,
8343MinQueueAge,
8344DefaultCharSet,
8345Dial Delay,
8346NoRecipientAction,
8347ColonOkInAddr,
8348MaxQueueRunSize,
8349SingleLineFromHeader,
8350and
8351AllowBogusHELO.
8352Actually, PrivacyOptions [p] given on the command line
8353are added to those already specified in the
8354.i sendmail.cf
8355file, i.e., they can't be reset.
8356Also, M (define macro) when defining the r or s macros
8357is also considered
8358.q safe .
8359.sh 2 "P \*- Precedence Definitions"
8360.pp
8361Values for the
8362.q "Precedence:"
8363field may be defined using the
8364.b P
8365control line.
8366The syntax of this field is:
8367.(b
8368\fBP\fP\fIname\fP\fB=\fP\fInum\fP
8369.)b
8370When the
8371.i name
8372is found in a
8373.q Precedence:
8374field,
8375the message class is set to
8376.i num .
8377Higher numbers mean higher precedence.
8378Numbers less than zero
8379have the special property
8380that if an error occurs during processing
8381the body of the message will not be returned;
8382this is expected to be used for
8383.q "bulk"
8384mail such as through mailing lists.
8385The default precedence is zero.
8386For example,
8387our list of precedences is:
8388.(b
8389Pfirst-class=0
8390Pspecial-delivery=100
8391Plist=\-30
8392Pbulk=\-60
8393Pjunk=\-100
8394.)b
8395People writing mailing list exploders
8396are encouraged to use
8397.q "Precedence: list" .
8398Older versions of
8399.i sendmail
8400(which discarded all error returns for negative precedences)
8401didn't recognize this name, giving it a default precedence of zero.
8402This allows list maintainers to see error returns
8403on both old and new versions of
8404.i sendmail .
8405.sh 2 "V \*- Configuration Version Level"
8406.pp
8407To provide compatibility with old configuration files,
8408the
8409.b V
8410line has been added to define some very basic semantics
8411of the configuration file.
8412These are not intended to be long term supports;
8413rather, they describe compatibility features
8414which will probably be removed in future releases.
8415.pp
8416.b N.B.:
8417these version
8418.i levels
8419have nothing
8420to do with the version
8421.i number
8422on the files.
8423For example,
8424as of this writing
8425version 10 config files
8426(specifically, 8.10)
8427used version level 9 configurations.
8428.pp
8429.q Old
8430configuration files are defined as version level one.
8431Version level two files make the following changes:
8432.np
8433Host name canonification ($[ ... $])
8434appends a dot if the name is recognized;
8435this gives the config file a way of finding out if anything matched.
8436(Actually, this just initializes the
8437.q host
8438map with the
8439.q \-a.
8440flag \*- you can reset it to anything you prefer
8441by declaring the map explicitly.)
8442.np
8443Default host name extension is consistent throughout processing;
8444version level one configurations turned off domain extension
8445(that is, adding the local domain name)
8446during certain points in processing.
8447Version level two configurations are expected to include a trailing dot
8448to indicate that the name is already canonical.
8449.np
8450Local names that are not aliases
8451are passed through a new distinguished ruleset five;
8452this can be used to append a local relay.
8453This behavior can be prevented by resolving the local name
8454with an initial `@'.
8455That is, something that resolves to a local mailer and a user name of
8456.q vikki
8457will be passed through ruleset five,
8458but a user name of
8459.q @vikki
8460will have the `@' stripped,
8461will not be passed through ruleset five,
8462but will otherwise be treated the same as the prior example.
8463The expectation is that this might be used to implement a policy
8464where mail sent to
8465.q vikki
8466was handled by a central hub,
8467but mail sent to
8468.q vikki@localhost
8469was delivered directly.
8470.pp
8471Version level three files
8472allow # initiated comments on all lines.
8473Exceptions are backslash escaped # marks
8474and the $# syntax.
8475.pp
8476Version level four configurations
8477are completely equivalent to level three
8478for historical reasons.
8479.pp
8480Version level five configuration files
8481change the default definition of
8482.b $w
8483to be just the first component of the hostname.
8484.pp
8485Version level six configuration files
8486change many of the local processing options
8487(such as aliasing and matching the beginning of the address for
8488`|' characters)
8489to be mailer flags;
8490this allows fine-grained control over the special local processing.
8491Level six configuration files may also use long option names.
8492The
8493.b ColonOkInAddr
8494option (to allow colons in the local-part of addresses)
8495defaults
8496.b on
8497for lower numbered configuration files;
8498the configuration file requires some additional intelligence
8499to properly handle the RFC 822 group construct.
8500.pp
8501Version level seven configuration files
8502used new option names to replace old macros
8503(\c
8504.b $e
8505became
8506.b SmtpGreetingMessage ,
8507.b $l
8508became
8509.b UnixFromLine ,
8510and
8511.b $o
8512became
8513.b OperatorChars .
8514Also, prior to version seven,
8515the
8516.b F=q
8517flag (use 250 instead of 252 return value for
8518.sm "SMTP VRFY"
8519commands)
8520was assumed.
8521.pp
8522Version level eight configuration files allow
8523.b $#
8524on the left hand side of ruleset lines.
8525.pp
8526Version level nine configuration files allow
8527parentheses in rulesets, i.e. they are not treated
8528as comments and hence removed.
8529.pp
8530Version level ten configuration files allow
8531queue group definitions.
8532.pp
8533The
8534.b V
8535line may have an optional
8536.b / \c
8537.i vendor
8538to indicate that this configuration file uses modifications
8539specific to a particular vendor\**.
8540.(f
8541\**And of course, vendors are encouraged to add themselves
8542to the list of recognized vendors by editing the routine
8543.i setvendor
8544in
8545.i conf.c .
8546Please send e-mail to sendmail@Sendmail.ORG
8547to register your vendor dialect.
8548.)f
8549You may use
8550.q /Berkeley
8551to emphasize that this configuration file
8552uses the Berkeley dialect of
8553.i sendmail .
8554.sh 2 "K \*- Key File Declaration"
8555.pp
8556Special maps can be defined using the line:
8557.(b
8558Kmapname mapclass arguments
8559.)b
8560The
8561.i mapname
8562is the handle by which this map is referenced in the rewriting rules.
8563The
8564.i mapclass
8565is the name of a type of map;
8566these are compiled in to
8567.i sendmail .
8568The
8569.i arguments
8570are interpreted depending on the class;
8571typically,
8572there would be a single argument naming the file containing the map.
8573.pp
8574Maps are referenced using the syntax:
8575.(b
8576$( \fImap\fP \fIkey\fP $@ \fIarguments\fP $: \fIdefault\fP $)
8577.)b
8578where either or both of the
8579.i arguments
8580or
8581.i default
8582portion may be omitted.
8583The
8584.i "$@ arguments"
8585may appear more than once.
8586The indicated
8587.i key
8588and
8589.i arguments
8590are passed to the appropriate mapping function.
8591If it returns a value, it replaces the input.
8592If it does not return a value and the
8593.i default
8594is specified, the
8595.i default
8596replaces the input.
8597Otherwise, the input is unchanged.
8598.pp
8599The
8600.i arguments
8601are passed to the map for arbitrary use.
8602Most map classes can interpolate these arguments
8603into their values using the syntax
8604.q %\fIn\fP
8605(where
8606.i n
8607is a digit)
8608to indicate the corresponding
8609.i argument .
8610Argument
8611.q %0
8612indicates the database key.
8613For example, the rule
8614.(b
8615.ta 1.5i
8616R$\- ! $+ $: $(uucp $1 $@ $2 $: $2 @ $1 . UUCP $)
8617.)b
8618Looks up the UUCP name in a (user defined) UUCP map;
8619if not found it turns it into
8620.q \&.UUCP
8621form.
8622The database might contain records like:
8623.(b
8624decvax %1@%0.DEC.COM
8625research %1@%0.ATT.COM
8626.)b
8627Note that
8628.i default
8629clauses never do this mapping.
8630.pp
8631The built-in map with both name and class
8632.q host
8633is the host name canonicalization lookup.
8634Thus,
8635the syntax:
8636.(b
8637$(host \fIhostname\fP$)
8638.)b
8639is equivalent to:
8640.(b
8641$[\fIhostname\fP$]
8642.)b
8643.pp
8644There are many defined classes.
8645.ip dbm
8646Database lookups using the ndbm(3) library.
8647.i Sendmail
8648must be compiled with
8649.b NDBM
8650defined.
8651.ip btree
8652Database lookups using the btree interface to the Berkeley DB
8653library.
8654.i Sendmail
8655must be compiled with
8656.b NEWDB
8657defined.
8658.ip hash
8659Database lookups using the hash interface to the Berkeley DB
8660library.
8661.i Sendmail
8662must be compiled with
8663.b NEWDB
8664defined.
8665.ip nis
8666NIS lookups.
8667.i Sendmail
8668must be compiled with
8669.b NIS
8670defined.
8671.ip nisplus
8672NIS+ lookups.
8673.i Sendmail
8674must be compiled with
8675.b NISPLUS
8676defined.
8677The argument is the name of the table to use for lookups,
8678and the
8679.b \-k
8680and
8681.b \-v
8682flags may be used to set the key and value columns respectively.
8683.ip hesiod
8684Hesiod lookups.
8685.i Sendmail
8686must be compiled with
8687.b HESIOD
8688defined.
8689.ip ldap
8690LDAP X500 directory lookups.
8691.i Sendmail
8692must be compiled with
8693.b LDAPMAP
8694defined.
8695The map supports most of the standard arguments
8696and most of the command line arguments of the
8697.i ldapsearch
8698program.
8699Note that,
8700by default,
8701if a single query matches multiple values,
8702only the first value will be returned
8703unless the
8704.b \-z
8705(value separator)
8706map flag is set.
8707Also, the
8708.b \-1
8709map flag will treat a multiple value return
8710as if there were no matches.
8711.ip netinfo
8712NeXT NetInfo lookups.
8713.i Sendmail
8714must be compiled with
8715.b NETINFO
8716defined.
8717.ip text
8718Text file lookups.
8719The format of the text file is defined by the
8720.b \-k
8721(key field number),
8722.b \-v
8723(value field number),
8724and
8725.b \-z
8726(field delimiter)
8727flags.
8728.ip ph
8729PH query map.
8730Contributed and supported by
8731Mark Roth, roth@uiuc.edu.
8732For more information,
8733consult the web site
8734.q http://www-dev.cites.uiuc.edu/sendmail/ .
8735.ip nsd
8736nsd map for IRIX 6.5 and later.
8737Contributed and supported by Bob Mende of SGI,
8738mende@sgi.com.
8739.ip stab
8740Internal symbol table lookups.
8741Used internally for aliasing.
8742.ip implicit
8743Really should be called
8744.q alias
8745\(em this is used to get the default lookups
8746for alias files,
8747and is the default if no class is specified for alias files.
8748.ip user
8749Looks up users using
8750.i getpwnam (3).
8751The
8752.b \-v
8753flag can be used to specify the name of the field to return
8754(although this is normally used only to check the existence
8755of a user).
8756.ip host
8757Canonifies host domain names.
8758Given a host name it calls the name server
8759to find the canonical name for that host.
8760.ip bestmx
8761Returns the best MX record for a host name given as the key.
8762The current machine is always preferred \*-
8763that is, if the current machine is one of the hosts listed as a
8764lowest-preference MX record, then it will be guaranteed to be returned.
8765This can be used to find out if this machine is the target for an MX record,
8766and mail can be accepted on that basis.
8767If the
8768.b \-z
8769flag is given, then all MX names are returned,
8770separated by the given delimiter.
8771.ip dns
8772This map requires the option -R to specify the DNS resource record
8773type to lookup. The following types are supported:
8774A, AAAA, AFSDB, CNAME, MX, NS, PTR, SRV, and TXT.
8775A map lookup will return only one record.
8776Hence for some types, e.g., MX records, the return value might be a random
8777element of the list due to randomizing in the DNS resolver.
8778.ip sequence
8779The arguments on the `K' line are a list of maps;
8780the resulting map searches the argument maps in order
8781until it finds a match for the indicated key.
8782For example, if the key definition is:
8783.(b
8784Kmap1 ...
8785Kmap2 ...
8786Kseqmap sequence map1 map2
8787.)b
8788then a lookup against
8789.q seqmap
8790first does a lookup in map1.
8791If that is found, it returns immediately.
8792Otherwise, the same key is used for map2.
8793.ip syslog
8794the key is logged via
8795.i syslogd \|(8).
8796The lookup returns the empty string.
8797.ip switch
8798Much like the
8799.q sequence
8800map except that the order of maps is determined by the service switch.
8801The argument is the name of the service to be looked up;
8802the values from the service switch are appended to the map name
8803to create new map names.
8804For example, consider the key definition:
8805.(b
8806Kali switch aliases
8807.)b
8808together with the service switch entry:
8809.(b
8810aliases nis files
8811.)b
8812This causes a query against the map
8813.q ali
8814to search maps named
8815.q ali.nis
8816and
8817.q ali.files
8818in that order.
8819.ip dequote
8820Strip double quotes (") from a name.
8821It does not strip backslashes,
8822and will not strip quotes if the resulting string
8823would contain unscannable syntax
8824(that is, basic errors like unbalanced angle brackets;
8825more sophisticated errors such as unknown hosts are not checked).
8826The intent is for use when trying to accept mail from systems such as
8827DECnet
8828that routinely quote odd syntax such as
8829.(b
8830"49ers::ubell"
8831.)b
8832A typical usage is probably something like:
8833.(b
8834Kdequote dequote
8835
8836\&...
8837
8838R$\- $: $(dequote $1 $)
8839R$\- $+ $: $>3 $1 $2
8840.)b
8841Care must be taken to prevent unexpected results;
8842for example,
8843.(b
8844"|someprogram < input > output"
8845.)b
8846will have quotes stripped,
8847but the result is probably not what you had in mind.
8848Fortunately these cases are rare.
8849.ip regex
8850The map definition on the
8851.b K
8852line contains a regular expression.
8853Any key input is compared to that expression using the
8854POSIX regular expressions routines regcomp(), regerr(), and regexec().
8855Refer to the documentation for those routines for more information
8856about the regular expression matching.
8857No rewriting of the key is done if the
8858.b \-m
8859flag is used. Without it, the key is discarded or if
8860.b \-s
8861if used, it is substituted by the substring matches, delimited by
8862.b $|
8863or the string specified with the the
8864.b \-d
8865flag. The flags available for the map are
8866.(b
8867.ta 4n
8868-n not
8869-f case sensitive
8870-b basic regular expressions (default is extended)
8871-s substring match
8872-d set the delimiter used for -s
8873-a append string to key
8874-m match only, do not replace/discard value
8875-D perform no lookup in deferred delivery mode.
8876.)b
8877The
8878.b \-s
8879flag can include an optional parameter which can be used
8880to select the substrings in the result of the lookup. For example,
8881.(b
8882-s1,3,4
8883.)b
8884Notes: to match a
8885.b $
8886in a string,
8887\\$$
8888must be used.
8889If the pattern contains spaces, they must be replaced
8890with the blank substitution character, unless it is
8891space itself.
8892.ip program
8893The arguments on the
8894.b K
8895line are the pathname to a program and any initial parameters to be passed.
8896When the map is called,
8897the key is added to the initial parameters
8898and the program is invoked
8899as the default user/group id.
8900The first line of standard output is returned as the value of the lookup.
8901This has many potential security problems,
8902and has terrible performance;
8903it should be used only when absolutely necessary.
8904.ip macro
8905Set or clear a macro value.
8906To set a macro,
8907pass the value as the first argument in the map lookup.
8908To clear a macro,
8909do not pass an argument in the map lookup.
8910The map always returns the empty string.
8911Example of typical usage include:
8912.(b
8913Kstorage macro
8914
8915\&...
8916
8917# set macro ${MyMacro} to the ruleset match
8918R$+ $: $(storage {MyMacro} $@ $1 $) $1
8919# set macro ${MyMacro} to an empty string
8920R$* $: $(storage {MyMacro} $@ $) $1
8921# clear macro ${MyMacro}
8922R$\- $: $(storage {MyMacro} $) $1
8923.)b
8924.ip arith
8925Perform simple arithmetic operations.
8926The operation is given as key, currently
8927+, -, *, /, %,
8928|, & (bitwise OR, AND),
8929l (for less than), =,
8930and r (for random) are supported.
8931The two operands are given as arguments.
8932The lookup returns the result of the computation,
8933i.e.,
8934.sm TRUE
8935or
8936.sm FALSE
8937for comparisons, integer values otherwise.
8938The r operator returns a pseudo-random number whose value
8939lies between the first and second operand
8940(which requires that the first operand is smaller than the second).
8941All options which are possible for maps are ignored.
8942A simple example is:
8943.(b
8944Kcomp arith
8945
8946\&...
8947
8948Scheck_etrn
8949R$* $: $(comp l $@ $&{load_avg} $@ 7 $) $1
8950RFALSE $# error \&...
8951.)b
8952.ip socket
8953The socket map uses a simple request/reply protocol over TCP or UNIX domain
8954sockets to query an external server.
8955Both requests and replies are text based and encoded as netstrings,
8956i.e., a string "hello there" becomes:
8957.(b
895811:hello there,
8959.)b
8960Note: neither requests nor replies end with CRLF.
8961
8962The request consists of the database map name and the lookup key separated
8963by a space character:
8964
8965.(b
8966<mapname> ' ' <key>
8967.)b
8968
8969The server responds with a status indicator and the result (if any):
8970
8971.(b
8972<status> ' ' <result>
8973.)b
8974
8975The status indicator specifies the result of the lookup operation itself
8976and is one of the following upper case words:
8977.(b
8978.ta 9n
8979OK the key was found, result contains the looked up value
8980NOTFOUND the key was not found, the result is empty
8981TEMP a temporary failure occured
8982TIMEOUT a timeout occured on the server side
8983PERM a permanent failure occured
8984.)b
8985
8986In case of errors (status TEMP, TIMEOUT or PERM) the result field may
8987contain an explanatory message.
8988However, the explanatory message is not used any further by
8989.i sendmail .
8990
8991Example replies:
8992.(b
899331:OK resolved.address@example.com,
8994.)b
8995
8996.(b
899756:OK error:550 5.7.1 User does not accept mail from sender,
8998.)b
8999
9000in case of successful lookups, or:
9001.(b
90028:NOTFOUND,
9003.)b
9004
9005in case the key was not found, or:
9006.(b
900755:TEMP this text explains that we had a temporary failure,
9008.)b
9009
9010in case of a temporary map lookup failure.
9011
9012The socket map uses the same syntax as milters
9013(see Section "X \*- Mail Filter (Milter) Definitions")
9014to specify the remote endpoint, e.g.,
9015.(b
9016Ksocket mySocketMap inet:12345@127.0.0.1
9017.)b
9018
9019If multiple socket maps define the same remote endpoint, they will share
9020a single connection to this endpoint.
9021.pp
9022Most of these accept as arguments the same optional flags
9023and a filename
9024(or a mapname for NIS;
9025the filename is the root of the database path,
9026so that
9027.q .db
9028or some other extension appropriate for the database type
9029will be added to get the actual database name).
9030Known flags are:
9031.ip "\-o"
9032Indicates that this map is optional \*- that is,
9033if it cannot be opened,
9034no error is produced,
9035and
9036.i sendmail
9037will behave as if the map existed but was empty.
9038.ip "\-N, \-O"
9039If neither
9040.b \-N
9041or
9042.b \-O
9043are specified,
9044.i sendmail
9045uses an adaptive algorithm to decide whether or not to look for null bytes
9046on the end of keys.
9047It starts by trying both;
9048if it finds any key with a null byte it never tries again without a null byte
9049and vice versa.
9050If
9051.b \-N
9052is specified it never tries without a null byte and
9053if
9054.b \-O
9055is specified it never tries with a null byte.
9056Setting one of
9057these can speed matches but are never necessary.
9058If both
9059.b \-N
9060and
9061.b \-O
9062are specified,
9063.i sendmail
9064will never try any matches at all \(em
9065that is, everything will appear to fail.
9066.ip "\-a\fIx\fP"
9067Append the string
9068.i x
9069on successful matches.
9070For example, the default
9071.i host
9072map appends a dot on successful matches.
9073.ip "\-T\fIx\fP"
9074Append the string
9075.i x
9076on temporary failures.
9077For example,
9078.i x
9079would be appended if a DNS lookup returned
9080.q "server failed"
9081or an NIS lookup could not locate a server.
9082See also the
9083.b \-t
9084flag.
9085.ip "\-f"
9086Do not fold upper to lower case before looking up the key.
9087.ip "\-m"
9088Match only (without replacing the value).
9089If you only care about the existence of a key and not the value
9090(as you might when searching the NIS map
9091.q hosts.byname
9092for example),
9093this flag prevents the map from substituting the value.
9094However,
9095The \-a argument is still appended on a match,
9096and the default is still taken if the match fails.
9097.ip "\-k\fIkeycol\fP"
9098The key column name (for NIS+) or number
9099(for text lookups).
9100For LDAP maps this is an LDAP filter string
9101in which %s is replaced with the literal contents of the lookup key
9102and %0 is replaced with the LDAP escaped contents of the lookup key
9103according to RFC 2254.
9104If the flag
9105.b \-K
9106is used, then %1 through %9 are replaced with the LDAP escaped contents
9107of the arguments specified in the map lookup.
9108.ip "\-v\fIvalcol\fP"
9109The value column name (for NIS+) or number
9110(for text lookups).
9111For LDAP maps this is the name of one or more
9112attributes to be returned;
9113multiple attributes can be separated by commas.
9114If not specified, all attributes found in the match
9115will be returned.
9116The attributes listed can also include a type and one or more
9117objectClass values for matching as described in the LDAP section.
9118.ip "\-z\fIdelim\fP"
9119The column delimiter (for text lookups).
9120It can be a single character or one of the special strings
9121.q \|\en
9122or
9123.q \|\et
9124to indicate newline or tab respectively.
9125If omitted entirely,
9126the column separator is any sequence of white space.
9127For LDAP maps this is the separator character
9128to combine multiple values
9129into a single return string.
9130If not set,
9131the LDAP lookup will only return the first match found.
9132For DNS maps this is the separator character at which
9133the result of a query is cut off if is too long.
9134.ip "\-t"
9135Normally, when a map attempts to do a lookup
9136and the server fails
9137(e.g.,
9138.i sendmail
9139couldn't contact any name server;
9140this is
9141.i not
9142the same as an entry not being found in the map),
9143the message being processed is queued for future processing.
9144The
9145.b \-t
9146flag turns off this behavior,
9147letting the temporary failure (server down)
9148act as though it were a permanent failure (entry not found).
9149It is particularly useful for DNS lookups,
9150where someone else's misconfigured name server can cause problems
9151on your machine.
9152However, care must be taken to ensure that you don't bounce mail
9153that would be resolved correctly if you tried again.
9154A common strategy is to forward such mail
9155to another, possibly better connected, mail server.
9156.ip "\-D"
9157Perform no lookup in deferred delivery mode.
9158This flag is set by default for the
9159.i host
9160map.
9161.ip "\-S\fIspacesub\fP
9162The character to use to replace space characters
9163after a successful map lookup (esp. useful for regex
9164and syslog maps).
9165.ip "\-s\fIspacesub\fP
9166For the dequote map only,
9167the character to use to replace space characters
9168after a successful dequote.
9169.ip "\-q"
9170Don't dequote the key before lookup.
9171.ip "\-L\fIlevel\fP
9172For the syslog map only, it specifies the level
9173to use for the syslog call.
9174.ip "\-A"
9175When rebuilding an alias file,
9176the
9177.b \-A
9178flag causes duplicate entries in the text version
9179to be merged.
9180For example, two entries:
9181.(b
9182list: user1, user2
9183list: user3
9184.)b
9185would be treated as though it were the single entry
9186.(b
9187list: user1, user2, user3
9188.)b
9189in the presence of the
9190.b \-A
9191flag.
9192.pp
9193Some additional flags are available for the host and dns maps:
9194.ip "\-d"
9195delay: specify the resolver's retransmission time interval (in seconds).
9196.ip "\-r"
9197retry: specify the number of times to retransmit a resolver query.
9198.pp
9199The dns map has another flag:
9200.ip "\-B"
9201basedomain: specify a domain that is always appended to queries.
9202.pp
9203The following additional flags are present in the ldap map only:
9204.ip "\-R"
9205Do not auto chase referrals. sendmail must be compiled with
9206.b \-DLDAP_REFERRALS
9207to use this flag.
9208.ip "\-n"
9209Retrieve attribute names only.
9210.ip "\-V\fIsep\fP"
9211Retrieve both attributes name and value(s),
9212separated by
9213.i sep .
9214.ip "\-r\fIderef\fP"
9215Set the alias dereference option to one of never, always, search, or find.
9216.ip "\-s\fIscope\fP"
9217Set search scope to one of base, one (one level), or sub (subtree).
9218.ip "\-h\fIhost\fP"
9219LDAP server hostname.
9220Some LDAP libraries allow you to specify multiple, space-separated hosts for
9221redundancy.
9222In addition, each of the hosts listed can be followed by a colon and a port
9223number to override the default LDAP port.
9224.ip "\-p\fIport\fP"
9225LDAP service port.
9226.ip "\-H \fILDAPURI\fP"
9227Use the specified LDAP URI instead of specifying the hostname and port
9228separately with the the
9229.b \-h
9230and
9231.b \-p
9232options shown above.
9233For example,
9234.(b
9235-h server.example.com -p 389 -b dc=example,dc=com
9236.)b
9237is equivalent to
9238.(b
9239-H ldap://server.example.com:389 -b dc=example,dc=com
9240.)b
9241If the LDAP library supports it,
9242the LDAP URI format however can also request LDAP over SSL by using
9243.b ldaps://
9244instead of
9245.b ldap:// .
9246For example:
9247.(b
9248O LDAPDefaultSpec=-H ldaps://ldap.example.com -b dc=example,dc=com
9249.)b
9250Similarly, if the LDAP library supports it,
9251It can also be used to specify a UNIX domain socket using
9252.b ldapi:// :
9253.(b
9254O LDAPDefaultSpec=-H ldapi://socketfile -b dc=example,dc=com
9255.)b
9256.ip "\-b\fIbase\fP"
9257LDAP search base.
9258.ip "\-l\fItimelimit\fP"
9259Time limit for LDAP queries.
9260.ip "\-Z\fIsizelimit\fP"
9261Size (number of matches) limit for LDAP or DNS queries.
9262.ip "\-d\fIdistinguished_name\fP"
9263The distinguished name to use to login to the LDAP server.
9264.ip "\-M\fImethod\fP"
9265The method to authenticate to the LDAP server.
9266Should be one of
9267.b LDAP_AUTH_NONE ,
9268.b LDAP_AUTH_SIMPLE ,
9269or
9270.b LDAP_AUTH_KRBV4 .
9271.ip "\-P\fIpasswordfile\fP"
9272The file containing the secret key for the
9273.b LDAP_AUTH_SIMPLE
9274authentication method
9275or the name of the Kerberos ticket file for
9276.b LDAP_AUTH_KRBV4 .
9277.ip "\-1"
9278Force LDAP searches to only succeed if a single match is found.
9279If multiple values are found,
9280the search is treated as if no match was found.
9281.ip "\-w\fIversion\fP"
9282Set the LDAP API/protocol version to use.
9283The default depends on the LDAP client libraries in use.
9284For example,
9285.b "\-w 3"
9286will cause
9287.i sendmail
9288to use LDAPv3 when communicating with the LDAP server.
9289.ip "\-K"
9290Treat the LDAP search key as multi-argument and
9291replace %1 through %9 in the key with
9292the LDAP escaped contents of the lookup arguments specified in the map lookup.
9293.pp
9294The
9295.i dbm
9296map appends the strings
9297.q \&.pag
9298and
9299.q \&.dir
9300to the given filename;
9301the
9302.i hash
9303and
9304.i btree
9305maps append
9306.q \&.db .
9307For example, the map specification
9308.(b
9309Kuucp dbm \-o \-N /etc/mail/uucpmap
9310.)b
9311specifies an optional map named
9312.q uucp
9313of class
9314.q dbm ;
9315it always has null bytes at the end of every string,
9316and the data is located in
9317/etc/mail/uucpmap.{dir,pag}.
9318.pp
9319The program
9320.i makemap (8)
9321can be used to build any of the three database-oriented maps.
9322It takes the following flags:
9323.ip \-f
9324Do not fold upper to lower case in the map.
9325.ip \-N
9326Include null bytes in keys.
9327.ip \-o
9328Append to an existing (old) file.
9329.ip \-r
9330Allow replacement of existing keys;
9331normally, re-inserting an existing key is an error.
9332.ip \-v
9333Print what is happening.
9334.lp
9335The
9336.i sendmail
9337daemon does not have to be restarted to read the new maps
9338as long as you change them in place;
9339file locking is used so that the maps won't be read
9340while they are being updated.
9341.pp
9342New classes can be added in the routine
9343.b setupmaps
9344in file
9345.b conf.c .
9346.sh 2 "Q \*- Queue Group Declaration"
9347.pp
9348In addition to the option
9349.i QueueDirectory,
9350queue groups can be declared that define a (group of) queue directories
9351under a common name.
9352The syntax is as follows:
9353.(b F
9354.b Q \c
9355.i name
9356{, \c
9357.i field =\c
9358.i value \|}+
9359.)b
9360where
9361.i name
9362is the symbolic name of the queue group under which
9363it can be referenced in various places
9364and the
9365.q field=value
9366pairs define attributes of the queue group.
9367The name must only consist of alphanumeric characters.
9368Fields are:
9369.ip Flags
9370Flags for this queue group.
9371.ip Nice
9372The nice(2) increment for the queue group.
9373This value must be greater or equal zero.
9374.ip Interval
9375The time between two queue runs.
9376.ip Path
9377The queue directory of the group (required).
9378.ip Runners
9379The number of parallel runners processing the queue.
9380Note that
9381.b F=f
9382must be set if this value is greater than one.
9383.ip Jobs
9384The maximum number of jobs (messages delivered) per queue run.
9385.ip recipients
9386The maximum number of recipients per envelope.
9387Envelopes with more than this number of recipients will be split
9388into multiple envelopes in the same queue directory.
9389The default value 0 means no limit.
9390.lp
9391Only the first character of the field name is checked.
9392.pp
9393By default, a queue group named
9394.i mqueue
9395is defined that uses the value of the
9396.i QueueDirectory
9397option as path.
9398Notice: all paths that are used for queue groups must
9399be subdirectories of
9400.i QueueDirectory .
9401Since they can be symbolic links, this isn't a real restriction,
9402If
9403.i QueueDirectory
9404uses a wildcard, then the directory one level up is considered
9405the ``base'' directory which all other queue directories must share.
9406Please make sure that the queue directories do not overlap,
9407e.g., do not specify
9408.(b
9409O QueueDirectory=/var/spool/mqueue/*
9410Qone, P=/var/spool/mqueue/dir1
9411Qtwo, P=/var/spool/mqueue/dir2
9412.)b
9413because this also includes
9414.q dir1
9415and
9416.q dir2
9417in the default queue group.
9418However,
9419.(b
9420O QueueDirectory=/var/spool/mqueue/main*
9421Qone, P=/var/spool/mqueue/dir
9422Qtwo, P=/var/spool/mqueue/other*
9423.)b
9424is a valid queue group specification.
9425.pp
9426Options listed in the ``Flags'' field can be used to modify
9427the behavior of a queue group.
9428The ``f'' flag must be set if multiple queue runners are
9429supposed to work on the entries in a queue group.
9430Otherwise
9431.i sendmail
9432will work on the entries strictly sequentially.
9433.pp
9434The ``Interval'' field sets the time between queue runs.
9435If no queue group specific interval is set, then the parameter of the
9436.b -q
9437option from the command line is used.
9438.pp
9439To control the overall number of concurrently active queue runners
9440the option
9441.b MaxQueueChildren
9442can be set.
9443This limits the number of processes used for running the queues to
9444.b MaxQueueChildren ,
9445though at any one time fewer processes may be active
9446as a result of queue options, completed queue runs, system load, etc.
9447.pp
9448The maximum number of queue runners for an individual queue group can be
9449controlled via the
9450.b Runners
9451option.
9452If set to 0, entries in the queue will not be processed, which
9453is useful to ``quarantine'' queue files.
9454The number of runners per queue group may also be set with the option
9455.b MaxRunnersPerQueue ,
9456which applies to queue groups that have no individual limit.
9457That is, the default value for
9458.b Runners
9459is
9460.b MaxRunnersPerQueue
9461if set, otherwise 1.
9462.pp
9463The field Jobs describes the maximum number of jobs
9464(messages delivered) per queue run, which is the queue group specific
9465value of
9466.b MaxQueueRunSize .
9467.pp
9468Notice: queue groups should be declared after all queue related options
9469have been set because queue groups take their defaults from those options.
9470If an option is set after a queue group declaration, the values of
9471options in the queue group are set to the defaults of
9472.i sendmail
9473unless explicitly set in the declaration.
9474.pp
9475Each envelope is assigned to a queue group based on the algorithm
9476described in section
9477``Queue Groups and Queue Directories''.
9478.sh 2 "X \*- Mail Filter (Milter) Definitions"
9479.pp
9480The
9481.i sendmail
9482Mail Filter API (Milter) is designed to allow third-party programs access
9483to mail messages as they are being processed in order to filter
9484meta-information and content.
9485They are declared in the configuration file as:
9486.(b F
9487.b X \c
9488.i name
9489{, \c
9490.i field =\c
9491.i value \|}*
9492.)b
9493where
9494.i name
9495is the name of the filter
9496(used internally only)
9497and the
9498.q field=name
9499pairs define attributes of the filter.
9500Also see the documentation for the
9501.b InputMailFilters
9502option for more information.
9503.pp
9504Fields are:
9505.(b
9506.ta 1i
9507Socket The socket specification
9508Flags Special flags for this filter
9509Timeouts Timeouts for this filter
9510.)b
9511Only the first character of the field name is checked
9512(it's case-sensitive).
9513.pp
9514The socket specification is one of the following forms:
9515.(b F
9516.b S= \c
9517.b inet \c
9518.b :
9519.i port
9520.b @
9521.i host
9522.)b
9523.(b F
9524.b S= \c
9525.b inet6 \c
9526.b :
9527.i port
9528.b @
9529.i host
9530.)b
9531.(b F
9532.b S= \c
9533.b local \c
9534.b :
9535.i path
9536.)b
9537The first two describe an IPv4 or IPv6 socket listening on a certain
9538.i port
9539at a given
9540.i host
9541or IP address.
9542The final form describes a named socket on the filesystem at the given
9543.i path .
9544.pp
9545The following flags may be set in the filter description.
9546.nr ii 4n
9547.ip R
9548Reject connection if filter unavailable.
9549.ip T
9550Temporary fail connection if filter unavailable.
9551.pp
9552If neither F=R nor F=T is specified, the message is passed through
9553.i sendmail
9554in case of filter errors as if the failing filters were not present.
9555.pp
9556The timeouts can be set using the four fields inside of the
9557.b T=
9558equate:
9559.nr ii 4n
9560.ip C
9561Timeout for connecting to a filter.
9562If set to 0, the system's
9563.i connect()
9564timeout will be used.
9565.ip S
9566Timeout for sending information from the MTA to a filter.
9567.ip R
9568Timeout for reading reply from the filter.
9569.ip E
9570Overall timeout between sending end-of-message to filter and waiting for
9571the final acknowledgment.
9572.pp
9573Note the separator between each timeout field is a
9574.b ';' .
9575The default values (if not set) are:
9576.b T=C:5m;S:10s;R:10s;E:5m
9577where
9578.b s
9579is seconds and
9580.b m
9581is minutes.
9582.pp
9583Examples:
9584.(b
9585Xfilter1, S=local:/var/run/f1.sock, F=R
9586Xfilter2, S=inet6:999@localhost, F=T, T=S:1s;R:1s;E:5m
9587Xfilter3, S=inet:3333@localhost, T=C:2m
9588.)b
9589.sh 2 "The User Database"
9590.pp
9591The user database is deprecated in favor of ``virtusertable''
9592and ``genericstable'' as explained in the file
9593.b cf/README .
9594If you have a version of
9595.i sendmail
9596with the user database package
9597compiled in,
9598the handling of sender and recipient addresses
9599is modified.
9600.pp
9601The location of this database is controlled with the
9602.b UserDatabaseSpec
9603option.
9604.sh 3 "Structure of the user database"
9605.pp
9606The database is a sorted (BTree-based) structure.
9607User records are stored with the key:
9608.(b
9609\fIuser-name\fP\fB:\fP\fIfield-name\fP
9610.)b
9611The sorted database format ensures that user records are clustered together.
9612Meta-information is always stored with a leading colon.
9613.pp
9614Field names define both the syntax and semantics of the value.
9615Defined fields include:
9616.nr ii 1i
9617.ip maildrop
9618The delivery address for this user.
9619There may be multiple values of this record.
9620In particular,
9621mailing lists will have one
9622.i maildrop
9623record for each user on the list.
9624.ip "mailname"
9625The outgoing mailname for this user.
9626For each outgoing name,
9627there should be an appropriate
9628.i maildrop
9629record for that name to allow return mail.
9630See also
9631.i :default:mailname .
9632.ip mailsender
9633Changes any mail sent to this address to have the indicated envelope sender.
9634This is intended for mailing lists,
9635and will normally be the name of an appropriate -request address.
9636It is very similar to the owner-\c
9637.i list
9638syntax in the alias file.
9639.ip fullname
9640The full name of the user.
9641.ip office-address
9642The office address for this user.
9643.ip office-phone
9644The office phone number for this user.
9645.ip office-fax
9646The office FAX number for this user.
9647.ip home-address
9648The home address for this user.
9649.ip home-phone
9650The home phone number for this user.
9651.ip home-fax
9652The home FAX number for this user.
9653.ip project
9654A (short) description of the project this person is affiliated with.
9655In the University this is often just the name of their graduate advisor.
9656.ip plan
9657A pointer to a file from which plan information can be gathered.
9658.pp
9659As of this writing,
9660only a few of these fields are actually being used by
9661.i sendmail :
9662.i maildrop
9663and
9664.i mailname .
9665A
9666.i finger
9667program that uses the other fields is planned.
9668.sh 3 "User database semantics"
9669.pp
9670When the rewriting rules submit an address to the local mailer,
9671the user name is passed through the alias file.
9672If no alias is found (or if the alias points back to the same address),
9673the name (with
9674.q :maildrop
9675appended)
9676is then used as a key in the user database.
9677If no match occurs (or if the maildrop points at the same address),
9678forwarding is tried.
9679.pp
9680If the first token of the user name returned by ruleset 0
9681is an
9682.q @
9683sign, the user database lookup is skipped.
9684The intent is that the user database will act as a set of defaults
9685for a cluster (in our case, the Computer Science Division);
9686mail sent to a specific machine should ignore these defaults.
9687.pp
9688When mail is sent,
9689the name of the sending user is looked up in the database.
9690If that user has a
9691.q mailname
9692record,
9693the value of that record is used as their outgoing name.
9694For example, I might have a record:
9695.(b
9696eric:mailname Eric.Allman@CS.Berkeley.EDU
9697.)b
9698This would cause my outgoing mail to be sent as Eric.Allman.
9699.pp
9700If a
9701.q maildrop
9702is found for the user,
9703but no corresponding
9704.q mailname
9705record exists,
9706the record
9707.q :default:mailname
9708is consulted.
9709If present, this is the name of a host to override the local host.
9710For example, in our case we would set it to
9711.q CS.Berkeley.EDU .
9712The effect is that anyone known in the database
9713gets their outgoing mail stamped as
9714.q user@CS.Berkeley.EDU ,
9715but people not listed in the database use the local hostname.
9716.sh 3 "Creating the database\**"
9717.(f
9718\**These instructions are known to be incomplete.
9719Other features are available which provide similar functionality,
9720e.g., virtual hosting and mapping local addresses into a
9721generic form as explained in cf/README.
9722.)f
9723.pp
9724The user database is built from a text file
9725using the
9726.i makemap
9727utility
9728(in the distribution in the makemap subdirectory).
9729The text file is a series of lines corresponding to userdb records;
9730each line has a key and a value separated by white space.
9731The key is always in the format described above \*-
9732for example:
9733.(b
9734eric:maildrop
9735.)b
9736This file is normally installed in a system directory;
9737for example, it might be called
9738.i /etc/mail/userdb .
9739To make the database version of the map, run the program:
9740.(b
9741makemap btree /etc/mail/userdb < /etc/mail/userdb
9742.)b
9743Then create a config file that uses this.
9744For example, using the V8 M4 configuration, include the
9745following line in your .mc file:
9746.(b
9747define(\`confUSERDB_SPEC\', /etc/mail/userdb)
9748.)b
9749.sh 1 "OTHER CONFIGURATION"
9750.pp
9751There are some configuration changes that can be made by
9752recompiling
9753.i sendmail .
9754This section describes what changes can be made
9755and what has to be modified to make them.
9756In most cases this should be unnecessary
9757unless you are porting
9758.i sendmail
9759to a new environment.
9760.sh 2 "Parameters in devtools/OS/$oscf"
9761.pp
9762These parameters are intended to describe the compilation environment,
9763not site policy,
9764and should normally be defined in the operating system
9765configuration file.
9766.b "This section needs a complete rewrite."
9767.ip NDBM
9768If set,
9769the new version of the DBM library
9770that allows multiple databases will be used.
9771If neither NDBM nor NEWDB are set,
9772a much less efficient method of alias lookup is used.
9773.ip NEWDB
9774If set, use the new database package from Berkeley (from 4.4BSD).
9775This package is substantially faster than DBM or NDBM.
9776If NEWDB and NDBM are both set,
9777.i sendmail
9778will read DBM files,
9779but will create and use NEWDB files.
9780.ip NIS
9781Include support for NIS.
9782If set together with
9783.i both
9784NEWDB and NDBM,
9785.i sendmail
9786will create both DBM and NEWDB files if and only if
9787an alias file includes the substring
9788.q /yp/
9789in the name.
9790This is intended for compatibility with Sun Microsystems'
9791.i mkalias
9792program used on YP masters.
9793.ip NISPLUS
9794Compile in support for NIS+.
9795.ip NETINFO
9796Compile in support for NetInfo (NeXT stations).
9797.ip LDAPMAP
9798Compile in support for LDAP X500 queries.
9799Requires libldap and liblber
9800from the Umich LDAP 3.2 or 3.3 release
9801or equivalent libraries for other LDAP libraries
9802such as OpenLDAP.
9803.ip HESIOD
9804Compile in support for Hesiod.
9805.ip MAP_NSD
9806Compile in support for IRIX NSD lookups.
9807.ip MAP_REGEX
9808Compile in support for regular expression matching.
9809.ip DNSMAP
9810Compile in support for DNS map lookups in the
9811.i sendmail.cf
9812file.
9813.ip PH_MAP
9814Compile in support for ph lookups.
9815.ip SASL
9816Compile in support for SASL,
9817a required component for SMTP Authentication support.
9818.ip STARTTLS
9819Compile in support for STARTTLS.
9820.ip EGD
9821Compile in support for the "Entropy Gathering Daemon"
9822to provide better random data for TLS.
9823.ip TCPWRAPPERS
9824Compile in support for TCP Wrappers.
9825.ip _PATH_SENDMAILCF
9826The pathname of the sendmail.cf file.
9827.ip _PATH_SENDMAILPID
9828The pathname of the sendmail.pid file.
9829.ip SM_CONF_SHM
9830Compile in support for shared memory, see section about
9831"/var/spool/mqueue".
9832.ip MILTER
9833Compile in support for contacting external mail filters built with the
9834Milter API.
9835.pp
9836There are also several compilation flags to indicate the environment
9837such as
9838.q _AIX3
9839and
9840.q _SCO_unix_ .
9841See the sendmail/README
9842file for the latest scoop on these flags.
9843.sh 2 "Parameters in sendmail/conf.h"
9844.pp
9845Parameters and compilation options
9846are defined in conf.h.
9847Most of these need not normally be tweaked;
9848common parameters are all in sendmail.cf.
9849However, the sizes of certain primitive vectors, etc.,
9850are included in this file.
9851The numbers following the parameters
9852are their default value.
9853.pp
9854This document is not the best source of information
9855for compilation flags in conf.h \(em
9856see sendmail/README or sendmail/conf.h itself.
9857.nr ii 1.2i
9858.ip "MAXLINE [2048]"
9859The maximum line length of any input line.
9860If message lines exceed this length
9861they will still be processed correctly;
9862however, header lines,
9863configuration file lines,
9864alias lines,
9865etc.,
9866must fit within this limit.
9867.ip "MAXNAME [256]"
9868The maximum length of any name,
9869such as a host or a user name.
9870.ip "MAXPV [256]"
9871The maximum number of parameters to any mailer.
9872This limits the number of recipients that may be passed in one transaction.
9873It can be set to any arbitrary number above about 10,
9874since
9875.i sendmail
9876will break up a delivery into smaller batches as needed.
9877A higher number may reduce load on your system, however.
9878.ip "MAXQUEUEGROUPS [50]"
9879The maximum number of queue groups.
9880.ip "MAXATOM [1000]"
9881The maximum number of atoms
9882(tokens)
9883in a single address.
9884For example,
9885the address
9886.q "eric@CS.Berkeley.EDU"
9887is seven atoms.
9888.ip "MAXMAILERS [25]"
9889The maximum number of mailers that may be defined
9890in the configuration file.
9891This value is defined in include/sendmail/sendmail.h.
9892.ip "MAXRWSETS [200]"
9893The maximum number of rewriting sets
9894that may be defined.
9895The first half of these are reserved for numeric specification
9896(e.g., ``S92''),
9897while the upper half are reserved for auto-numbering
9898(e.g., ``Sfoo'').
9899Thus, with a value of 200 an attempt to use ``S99'' will succeed,
9900but ``S100'' will fail.
9901.ip "MAXPRIORITIES [25]"
9902The maximum number of values for the
9903.q Precedence:
9904field that may be defined
9905(using the
9906.b P
9907line in sendmail.cf).
9908.ip "MAXUSERENVIRON [100]"
9909The maximum number of items in the user environment
9910that will be passed to subordinate mailers.
9911.ip "MAXMXHOSTS [100]"
9912The maximum number of MX records we will accept for any single host.
9913.ip "MAXMAPSTACK [12]"
9914The maximum number of maps that may be "stacked" in a
9915.b sequence
9916class map.
9917.ip "MAXMIMEARGS [20]"
9918The maximum number of arguments in a MIME Content-Type: header;
9919additional arguments will be ignored.
9920.ip "MAXMIMENESTING [20]"
9921The maximum depth to which MIME messages may be nested
9922(that is, nested Message or Multipart documents;
9923this does not limit the number of components in a single Multipart document).
9924.ip "MAXDAEMONS [10]"
9925The maximum number of sockets sendmail will open for accepting connections
9926on different ports.
9927.ip "MAXMACNAMELEN [25]"
9928The maximum length of a macro name.
9929.lp
9930A number of other compilation options exist.
9931These specify whether or not specific code should be compiled in.
9932Ones marked with \(dg
9933are 0/1 valued.
9934.nr ii 1.2i
9935.ip NETINET\(dg
9936If set,
9937support for Internet protocol networking is compiled in.
9938Previous versions of
9939.i sendmail
9940referred to this as
9941.sm DAEMON ;
9942this old usage is now incorrect.
9943Defaults on;
9944turn it off in the Makefile
9945if your system doesn't support the Internet protocols.
9946.ip NETINET6\(dg
9947If set,
9948support for IPv6 networking is compiled in.
9949It must be separately enabled by adding
9950.b DaemonPortOptions
9951settings.
9952.ip NETISO\(dg
9953If set,
9954support for ISO protocol networking is compiled in
9955(it may be appropriate to #define this in the Makefile instead of conf.h).
9956.ip NETUNIX\(dg
9957If set,
9958support for UNIX domain sockets is compiled in.
9959This is used for control socket support.
9960.ip LOG
9961If set,
9962the
9963.i syslog
9964routine in use at some sites is used.
9965This makes an informational log record
9966for each message processed,
9967and makes a higher priority log record
9968for internal system errors.
9969.b "STRONGLY RECOMMENDED"
9970\(em if you want no logging, turn it off in the configuration file.
9971.ip MATCHGECOS\(dg
9972Compile in the code to do ``fuzzy matching'' on the GECOS field
9973in /etc/passwd.
9974This also requires that the
9975.b MatchGECOS
9976option be turned on.
9977.ip NAMED_BIND\(dg
9978Compile in code to use the
9979Berkeley Internet Name Domain (BIND) server
9980to resolve TCP/IP host names.
9981.ip NOTUNIX
9982If you are using a non-UNIX mail format,
9983you can set this flag to turn off special processing
9984of UNIX-style
9985.q "From "
9986lines.
9987.ip USERDB\(dg
9988Include the
9989.b experimental
9990Berkeley user information database package.
9991This adds a new level of local name expansion
9992between aliasing and forwarding.
9993It also uses the NEWDB package.
9994This may change in future releases.
9995.lp
9996The following options are normally turned on
9997in per-operating-system clauses in conf.h.
9998.ip IDENTPROTO\(dg
9999Compile in the IDENT protocol as defined in RFC 1413.
10000This defaults on for all systems except Ultrix,
10001which apparently has the interesting
10002.q feature
10003that when it receives a
10004.q "host unreachable"
10005message it closes all open connections to that host.
10006Since some firewall gateways send this error code
10007when you access an unauthorized port (such as 113, used by IDENT),
10008Ultrix cannot receive email from such hosts.
10009.ip SYSTEM5
10010Set all of the compilation parameters appropriate for System V.
10011.ip HASFLOCK\(dg
10012Use Berkeley-style
10013.b flock
10014instead of System V
10015.b lockf
10016to do file locking.
10017Due to the highly unusual semantics of locks
10018across forks in
10019.b lockf ,
10020this should always be used if at all possible.
10021.ip HASINITGROUPS
10022Set this if your system has the
10023.i initgroups()
10024call
10025(if you have multiple group support).
10026This is the default if SYSTEM5 is
10027.i not
10028defined or if you are on HPUX.
10029.ip HASUNAME
10030Set this if you have the
10031.i uname (2)
10032system call (or corresponding library routine).
10033Set by default if
10034SYSTEM5
10035is set.
10036.ip HASGETDTABLESIZE
10037Set this if you have the
10038.i getdtablesize (2)
10039system call.
10040.ip HASWAITPID
10041Set this if you have the
10042.i haswaitpid (2)
10043system call.
10044.ip FAST_PID_RECYCLE
10045Set this if your system can possibly
10046reuse the same pid in the same second of time.
10047.ip SFS_TYPE
10048The mechanism that can be used to get file system capacity information.
10049The values can be one of
10050SFS_USTAT (use the ustat(2) syscall),
10051SFS_4ARGS (use the four argument statfs(2) syscall),
10052SFS_VFS (use the two argument statfs(2) syscall including <sys/vfs.h>),
10053SFS_MOUNT (use the two argument statfs(2) syscall including <sys/mount.h>),
10054SFS_STATFS (use the two argument statfs(2) syscall including <sys/statfs.h>),
10055SFS_STATVFS (use the two argument statfs(2) syscall including <sys/statvfs.h>),
10056or
10057SFS_NONE (no way to get this information).
10058.ip LA_TYPE
10059The load average type.
10060Details are described below.
10061.lp
10062The are several built-in ways of computing the load average.
10063.i Sendmail
10064tries to auto-configure them based on imperfect guesses;
10065you can select one using the
10066.i cc
10067option
10068.b \-DLA_TYPE= \c
10069.i type ,
10070where
10071.i type
10072is:
10073.ip LA_INT
10074The kernel stores the load average in the kernel as an array of long integers.
10075The actual values are scaled by a factor FSCALE
10076(default 256).
10077.ip LA_SHORT
10078The kernel stores the load average in the kernel as an array of short integers.
10079The actual values are scaled by a factor FSCALE
10080(default 256).
10081.ip LA_FLOAT
10082The kernel stores the load average in the kernel as an array of
10083double precision floats.
10084.ip LA_MACH
10085Use MACH-style load averages.
10086.ip LA_SUBR
10087Call the
10088.i getloadavg
10089routine to get the load average as an array of doubles.
10090.ip LA_ZERO
10091Always return zero as the load average.
10092This is the fallback case.
10093.lp
10094If type
10095.sm LA_INT ,
10096.sm LA_SHORT ,
10097or
10098.sm LA_FLOAT
10099is specified,
10100you may also need to specify
10101.sm _PATH_UNIX
10102(the path to your system binary)
10103and
10104.sm LA_AVENRUN
10105(the name of the variable containing the load average in the kernel;
10106usually
10107.q _avenrun
10108or
10109.q avenrun ).
10110.sh 2 "Configuration in sendmail/conf.c"
10111.pp
10112The following changes can be made in conf.c.
10113.sh 3 "Built-in Header Semantics"
10114.pp
10115Not all header semantics are defined in the configuration file.
10116Header lines that should only be included by certain mailers
10117(as well as other more obscure semantics)
10118must be specified in the
10119.i HdrInfo
10120table in
10121.i conf.c .
10122This table contains the header name
10123(which should be in all lower case)
10124and a set of header control flags (described below),
10125The flags are:
10126.ip H_ACHECK
10127Normally when the check is made to see if a header line is compatible
10128with a mailer,
10129.i sendmail
10130will not delete an existing line.
10131If this flag is set,
10132.i sendmail
10133will delete
10134even existing header lines.
10135That is,
10136if this bit is set and the mailer does not have flag bits set
10137that intersect with the required mailer flags
10138in the header definition in
10139sendmail.cf,
10140the header line is
10141.i always
10142deleted.
10143.ip H_EOH
10144If this header field is set,
10145treat it like a blank line,
10146i.e.,
10147it will signal the end of the header
10148and the beginning of the message text.
10149.ip H_FORCE
10150Add this header entry
10151even if one existed in the message before.
10152If a header entry does not have this bit set,
10153.i sendmail
10154will not add another header line if a header line
10155of this name already existed.
10156This would normally be used to stamp the message
10157by everyone who handled it.
10158.ip H_TRACE
10159If set,
10160this is a timestamp
10161(trace)
10162field.
10163If the number of trace fields in a message
10164exceeds a preset amount
10165the message is returned
10166on the assumption that it has an aliasing loop.
10167.ip H_RCPT
10168If set,
10169this field contains recipient addresses.
10170This is used by the
10171.b \-t
10172flag to determine who to send to
10173when it is collecting recipients from the message.
10174.ip H_FROM
10175This flag indicates that this field
10176specifies a sender.
10177The order of these fields in the
10178.i HdrInfo
10179table specifies
10180.i sendmail 's
10181preference
10182for which field to return error messages to.
10183.ip H_ERRORSTO
10184Addresses in this header should receive error messages.
10185.ip H_CTE
10186This header is a Content-Transfer-Encoding header.
10187.ip H_CTYPE
10188This header is a Content-Type header.
10189.ip H_STRIPVAL
10190Strip the value from the header (for Bcc:).
10191.nr ii 5n
10192.lp
10193Let's look at a sample
10194.i HdrInfo
10195specification:
10196.(b
10197.ta 4n +\w'"content-transfer-encoding", 'u
10198struct hdrinfo HdrInfo[] =
10199\&{
10200 /* originator fields, most to least significant */
10201 "resent-sender", H_FROM,
10202 "resent-from", H_FROM,
10203 "sender", H_FROM,
10204 "from", H_FROM,
10205 "full-name", H_ACHECK,
10206 "errors-to", H_FROM\^|\^H_ERRORSTO,
10207 /* destination fields */
10208 "to", H_RCPT,
10209 "resent-to", H_RCPT,
10210 "cc", H_RCPT,
10211 "bcc", H_RCPT\^|\^H_STRIPVAL,
10212 /* message identification and control */
10213 "message", H_EOH,
10214 "text", H_EOH,
10215 /* trace fields */
10216 "received", H_TRACE\^|\^H_FORCE,
10217 /* miscellaneous fields */
10218 "content-transfer-encoding", H_CTE,
10219 "content-type", H_CTYPE,
10220
10221 NULL, 0,
10222};
10223.)b
10224This structure indicates that the
10225.q To: ,
10226.q Resent-To: ,
10227and
10228.q Cc:
10229fields
10230all specify recipient addresses.
10231Any
10232.q Full-Name:
10233field will be deleted unless the required mailer flag
10234(indicated in the configuration file)
10235is specified.
10236The
10237.q Message:
10238and
10239.q Text:
10240fields will terminate the header;
10241these are used by random dissenters around the network world.
10242The
10243.q Received:
10244field will always be added,
10245and can be used to trace messages.
10246.pp
10247There are a number of important points here.
10248First,
10249header fields are not added automatically just because they are in the
10250.i HdrInfo
10251structure;
10252they must be specified in the configuration file
10253in order to be added to the message.
10254Any header fields mentioned in the configuration file but not
10255mentioned in the
10256.i HdrInfo
10257structure have default processing performed;
10258that is,
10259they are added unless they were in the message already.
10260Second,
10261the
10262.i HdrInfo
10263structure only specifies cliched processing;
10264certain headers are processed specially by ad hoc code
10265regardless of the status specified in
10266.i HdrInfo .
10267For example,
10268the
10269.q Sender:
10270and
10271.q From:
10272fields are always scanned on ARPANET mail
10273to determine the sender\**;
10274.(f
10275\**Actually, this is no longer true in SMTP;
10276this information is contained in the envelope.
10277The older ARPANET protocols did not completely distinguish
10278envelope from header.
10279.)f
10280this is used to perform the
10281.q "return to sender"
10282function.
10283The
10284.q "From:"
10285and
10286.q "Full-Name:"
10287fields are used to determine the full name of the sender
10288if possible;
10289this is stored in the macro
10290.b $x
10291and used in a number of ways.
10292.sh 3 "Restricting Use of Email"
10293.pp
10294If it is necessary to restrict mail through a relay,
10295the
10296.i checkcompat
10297routine can be modified.
10298This routine is called for every recipient address.
10299It returns an exit status
10300indicating the status of the message.
10301The status
10302.sm EX_OK
10303accepts the address,
10304.sm EX_TEMPFAIL
10305queues the message for a later try,
10306and other values
10307(commonly
10308.sm EX_UNAVAILABLE )
10309reject the message.
10310It is up to
10311.i checkcompat
10312to print an error message
10313(using
10314.i usrerr )
10315if the message is rejected.
10316For example,
10317.i checkcompat
10318could read:
10319.(b
10320.re
10321.sz -1
10322.ta 4n +4n +4n +4n +4n +4n +4n
10323int
10324checkcompat(to, e)
10325 register ADDRESS *to;
10326 register ENVELOPE *e;
10327\&{
10328 register STAB *s;
10329
10330 s = stab("private", ST_MAILER, ST_FIND);
10331 if (s != NULL && e\->e_from.q_mailer != LocalMailer &&
10332 to->q_mailer == s->s_mailer)
10333 {
10334 usrerr("No private net mail allowed through this machine");
10335 return (EX_UNAVAILABLE);
10336 }
10337 if (MsgSize > 50000 && bitnset(M_LOCALMAILER, to\->q_mailer))
10338 {
10339 usrerr("Message too large for non-local delivery");
10340 e\->e_flags |= EF_NORETURN;
10341 return (EX_UNAVAILABLE);
10342 }
10343 return (EX_OK);
10344}
10345.sz
10346.)b
10347This would reject messages greater than 50000 bytes
10348unless they were local.
10349The
10350.i EF_NORETURN
10351flag can be set in
10352.i e\(->e_flags
10353to suppress the return of the actual body
10354of the message in the error return.
10355The actual use of this routine is highly dependent on the
10356implementation,
10357and use should be limited.
10358.sh 3 "New Database Map Classes"
10359.pp
10360New key maps can be added by creating a class initialization function
10361and a lookup function.
10362These are then added to the routine
10363.i setupmaps.
10364.pp
10365The initialization function is called as
10366.(b
10367\fIxxx\fP_map_init(MAP *map, char *args)
10368.)b
10369The
10370.i map
10371is an internal data structure.
10372The
10373.i args
10374is a pointer to the portion of the configuration file line
10375following the map class name;
10376flags and filenames can be extracted from this line.
10377The initialization function must return
10378.sm true
10379if it successfully opened the map,
10380.sm false
10381otherwise.
10382.pp
10383The lookup function is called as
10384.(b
10385\fIxxx\fP_map_lookup(MAP *map, char buf[], char **av, int *statp)
10386.)b
10387The
10388.i map
10389defines the map internally.
10390The
10391.i buf
10392has the input key.
10393This may be (and often is) used destructively.
10394The
10395.i av
10396is a list of arguments passed in from the rewrite line.
10397The lookup function should return a pointer to the new value.
10398If the map lookup fails,
10399.i *statp
10400should be set to an exit status code;
10401in particular, it should be set to
10402.sm EX_TEMPFAIL
10403if recovery is to be attempted by the higher level code.
10404.sh 3 "Queueing Function"
10405.pp
10406The routine
10407.i shouldqueue
10408is called to decide if a message should be queued
10409or processed immediately.
10410Typically this compares the message priority to the current load average.
10411The default definition is:
10412.(b
10413bool
10414shouldqueue(pri, ctime)
10415 long pri;
10416 time_t ctime;
10417{
10418 if (CurrentLA < QueueLA)
10419 return false;
10420 return (pri > (QueueFactor / (CurrentLA \- QueueLA + 1)));
10421}
10422.)b
10423If the current load average
10424(global variable
10425.i CurrentLA ,
10426which is set before this function is called)
10427is less than the low threshold load average
10428(option
10429.b x ,
10430variable
10431.i QueueLA ),
10432.i shouldqueue
10433returns
10434.sm false
10435immediately
10436(that is, it should
10437.i not
10438queue).
10439If the current load average exceeds the high threshold load average
10440(option
10441.b X ,
10442variable
10443.i RefuseLA ),
10444.i shouldqueue
10445returns
10446.sm true
10447immediately.
10448Otherwise, it computes the function based on the message priority,
10449the queue factor
10450(option
10451.b q ,
10452global variable
10453.i QueueFactor ),
10454and the current and threshold load averages.
10455.pp
10456An implementation wishing to take the actual age of the message into account
10457can also use the
10458.i ctime
10459parameter,
10460which is the time that the message was first submitted to
10461.i sendmail .
10462Note that the
10463.i pri
10464parameter is already weighted
10465by the number of times the message has been tried
10466(although this tends to lower the priority of the message with time);
10467the expectation is that the
10468.i ctime
10469would be used as an
10470.q "escape clause"
10471to ensure that messages are eventually processed.
10472.sh 3 "Refusing Incoming SMTP Connections"
10473.pp
10474The function
10475.i refuseconnections
10476returns
10477.sm true
10478if incoming SMTP connections should be refused.
10479The current implementation is based exclusively on the current load average
10480and the refuse load average option
10481(option
10482.b X ,
10483global variable
10484.i RefuseLA ):
10485.(b
10486bool
10487refuseconnections()
10488{
10489 return (RefuseLA > 0 && CurrentLA >= RefuseLA);
10490}
10491.)b
10492A more clever implementation
10493could look at more system resources.
10494.sh 3 "Load Average Computation"
10495.pp
10496The routine
10497.i getla
10498returns the current load average (as a rounded integer).
10499The distribution includes several possible implementations.
10500If you are porting to a new environment
10501you may need to add some new tweaks.\**
10502.(f
10503\**If you do, please send updates to
10504sendmail@Sendmail.ORG.
10505.)f
10506.sh 2 "Configuration in sendmail/daemon.c"
10507.pp
10508The file
10509.i sendmail/daemon.c
10510contains a number of routines that are dependent
10511on the local networking environment.
10512The version supplied assumes you have BSD style sockets.
10513.pp
10514In previous releases,
10515we recommended that you modify the routine
10516.i maphostname
10517if you wanted to generalize
10518.b $[
10519\&...\&
10520.b $]
10521lookups.
10522We now recommend that you create a new keyed map instead.
10523.sh 2 "LDAP"
10524.pp
10525In this section we assume that
10526.i sendmail
10527has been compiled with support for LDAP.
10528.sh 3 "LDAP Recursion"
10529.pp
10530LDAP Recursion allows you to add types to the search attributes on an
10531LDAP map specification.
10532The syntax is:
10533.ip "\-v \fIATTRIBUTE\fP[:\fITYPE\fP[:\fIOBJECTCLASS\fP[|\fIOBJECTCLASS\fP|...]]]
10534.pp
10535The new \fITYPE\fPs are:
10536.nr ii 1i
10537.ip NORMAL
10538This attribute type specifies the attribute to add to the results string.
10539This is the default.
10540.ip DN
10541Any matches for this attribute are expected to have a value of a
10542fully qualified distinguished name.
10543.i sendmail
10544will lookup that DN and apply the attributes requested to the
10545returned DN record.
10546.ip FILTER
10547Any matches for this attribute are expected to have a value of an
10548LDAP search filter.
10549.i sendmail
10550will perform a lookup with the same parameters as the original
10551search but replaces the search filter with the one specified here.
10552.ip URL
10553Any matches for this attribute are expected to have a value of an LDAP URL.
10554.i sendmail
10555will perform a lookup of that URL and use the results from the attributes
10556named in that URL.
10557Note however that the search is done using the current LDAP connection,
10558regardless of what is specified as the scheme, LDAP host, and LDAP
10559port in the LDAP URL.
10560.lp
10561Any untyped attributes are considered
10562.sm NORMAL
10563attributes as described above.
10564.pp
10565The optional \fIOBJECTCLASS\fP (| separated) list contains the
10566objectClass values for which that attribute applies.
10567If the list is given,
10568the attribute named will only be used if the LDAP record being returned is a
10569member of that object class.
10570Note that if these new value attribute \fITYPE\fPs are used in an
10571AliasFile
10572option setting, it will need to be double quoted to prevent
10573.i sendmail
10574from misparsing the colons.
10575.pp
10576Note that LDAP recursion attributes which do not ultimately point to an
10577LDAP record are not considered an error.
10578.sh 4 "Example"
10579.pp
10580Since examples usually help clarify, here is an example which uses all
10581four of the new types:
10582.(b
10583O LDAPDefaultSpec=-h ldap.example.com -b dc=example,dc=com
10584
10585Kexample ldap
10586 -z,
10587 -k (&(objectClass=sendmailMTAAliasObject)(sendmailMTAKey=%0))
10588 -v sendmailMTAAliasValue,mail:NORMAL:inetOrgPerson,
10589 uniqueMember:DN:groupOfUniqueNames,
10590 sendmailMTAAliasSearch:FILTER:sendmailMTAAliasObject,
10591 sendmailMTAAliasURL:URL:sendmailMTAAliasObject
10592.)b
10593.pp
10594That definition specifies that:
10595.bu
10596Any value in a
10597.sm sendmailMTAAliasValue
10598attribute will be added to the result string regardless of object class.
10599.bu
10600The
10601.sm mail
10602attribute will be added to the result string if
10603the LDAP record is a member of the
10604.sm inetOrgPerson
10605object class.
10606.bu
10607The
10608.sm uniqueMember
10609attribute is a recursive attribute, used only in
10610.sm groupOfUniqueNames
10611records, and should contain an LDAP DN pointing to another LDAP record.
10612The desire here is to return the
10613.sm mail
10614attribute from those DNs.
10615.bu
10616The
10617.sm sendmailMTAAliasSearch
10618attribute and
10619.sm sendmailMTAAliasURL
10620are both used only if referenced in a
10621.sm sendmailMTAAliasObject .
10622They are both recursive, the first for a new LDAP search string and the
10623latter for an LDAP URL.
10624.sh 2 "STARTTLS"
10625.pp
10626In this section we assume that
10627.i sendmail
10628has been compiled with support for STARTTLS.
10629To properly understand the use of STARTTLS in
10630.i sendmail ,
10631it is necessary to understand at least some basics about X.509 certificates
10632and public key cryptography.
10633This information can be found in books about SSL/TLS
10634or on WWW sites, e.g.,
10635.q http://www.OpenSSL.org/ .
10636.sh 3 "Certificates for STARTTLS"
10637.pp
10638When acting as a server,
10639.i sendmail
10640requires X.509 certificates to support STARTTLS:
10641one as certificate for the server (ServerCertFile and corresponding
10642private ServerKeyFile)
10643at least one root CA (CACertFile),
10644i.e., a certificate that is used to sign other certificates,
10645and a path to a directory which contains other CAs (CACertPath).
10646The file specified via
10647CACertFile
10648can contain several certificates of CAs.
10649The DNs of these certificates are sent
10650to the client during the TLS handshake (as part of the
10651CertificateRequest) as the list of acceptable CAs.
10652However, do not list too many root CAs in that file, otherwise
10653the TLS handshake may fail; e.g.,
10654.(b
10655error:14094417:SSL routines:SSL3_READ_BYTES:
10656sslv3 alert illegal parameter:s3_pkt.c:964:SSL alert number 47
10657.)b
10658You should probably put only the CA cert into that file
10659that signed your own cert(s), or at least only those you trust.
10660The CACertPath directory must contain the hashes of each CA certificate
10661as filenames (or as links to them).
10662Symbolic links can be generated with the following
10663two (Bourne) shell commands:
10664.(b
10665C=FileName_of_CA_Certificate
10666ln -s $C `openssl x509 -noout -hash < $C`.0
10667.)b
10668An X.509 certificate is also required for authentication in client mode
10669(ClientCertFile and corresponding private ClientKeyFile), however,
10670.i sendmail
10671will always use STARTTLS when offered by a server.
10672The client and server certificates can be identical.
10673Certificates can be obtained from a certificate authority
10674or created with the help of OpenSSL.
10675The required format for certificates and private keys is PEM.
10676To allow for automatic startup of sendmail, private keys
10677(ServerKeyFile, ClientKeyFile)
10678must be stored unencrypted.
10679The keys are only protected by the permissions of the file system.
10680Never make a private key available to a third party.
10681.sh 3 "PRNG for STARTTLS"
10682.pp
10683STARTTLS requires a strong pseudo random number generator (PRNG)
10684to operate properly.
10685Depending on the TLS library you use, it may be required to explicitly
10686initialize the PRNG with random data.
10687OpenSSL makes use of
10688.b /dev/urandom(4)
10689if available (this corresponds to the compile flag HASURANDOMDEV).
10690On systems which lack this support, a random file must be specified in the
10691.i sendmail.cf
10692file using the option RandFile.
10693It is
10694.b strongly
10695advised to use the "Entropy Gathering Daemon" EGD
10696from Brian Warner on those systems to provide useful random data.
10697In this case,
10698.i sendmail
10699must be compiled with the flag EGD, and the
10700RandFile option must point to the EGD socket.
10701If neither
10702.b /dev/urandom(4)
10703nor EGD are available, you have to make sure
10704that useful random data is available all the time in RandFile.
10705If the file hasn't been modified in the last 10 minutes before
10706it is supposed to be used by
10707.i sendmail
10708the content is considered obsolete.
10709One method for generating this file is:
10710.(b
10711openssl rand -out /etc/mail/randfile -rand \c
10712.i /path/to/file:... \c
10713256
10714.)b
10715See the OpenSSL documentation for more information.
10716In this case, the PRNG for TLS is only
10717seeded with other random data if the
10718.b DontBlameSendmail
10719option
10720.b InsufficientEntropy
10721is set.
10722This is most likely not sufficient for certain actions, e.g.,
10723generation of (temporary) keys.
10724.pp
10725Please see the OpenSSL documentation or other sources
10726for further information about certificates, their creation and their usage,
10727the importance of a good PRNG, and other aspects of TLS.
10728.sh 2 "Encoding of STARTTLS and AUTH related Macros"
10729.pp
10730Macros that contain STARTTLS and AUTH related data which comes from outside
10731sources, e.g., all macros containing information from certificates,
10732are encoded to avoid problems with non-printable or special characters.
10733The latter are '\\', '<', '>', '(', ')', '"', '+', and ' '.
10734All of these characters are replaced by their value in hexadecimal
10735with a leading '+'.
10736For example:
10737.(b
10738/C=US/ST=California/O=endmail.org/OU=private/CN=Darth Mail (Cert)/
10739Email=darth+cert@endmail.org
10740.)b
10741is encoded as:
10742.(b
10743/C=US/ST=California/O=endmail.org/OU=private/
10744CN=Darth+20Mail+20+28Cert+29/Email=darth+2Bcert@endmail.org
10745.)b
10746(line breaks have been inserted for readability).
10747The macros which are subject to this encoding are
10748{cert_subject}, {cert_issuer}, {cn_subject}, {cn_issuer},
10749as well as
10750{auth_authen} and {auth_author}.
10751.sh 1 "ACKNOWLEDGEMENTS"
10752.pp
10753I've worked on
10754.i sendmail
10755for many years,
10756and many employers have been remarkably patient
10757about letting me work on a large project
10758that was not part of my official job.
10759This includes time on the INGRES Project at
10760the University of California at Berkeley,
10761at Britton Lee,
10762and again on the Mammoth and Titan Projects at Berkeley.
10763.pp
10764Much of the second wave of improvements
10765resulting in version 8.1
10766should be credited to Bryan Costales of the
10767International Computer Science Institute.
10768As he passed me drafts of his book on
10769.i sendmail
10770I was inspired to start working on things again.
10771Bryan was also available to bounce ideas off of.
10772.pp
10773Gregory Neil Shapiro
10774of Worcester Polytechnic Institute
10775has become instrumental in all phases of
10776.i sendmail
10777support and development,
10778and was largely responsible for getting versions 8.8 and 8.9
10779out the door.
10780.pp
10781Many, many people contributed chunks of code and ideas to
10782.i sendmail .
10783It has proven to be a group network effort.
10784Version 8 in particular was a group project.
10785The following people and organizations made notable contributions:
10786.(l
10787Claus Assmann
10788John Beck, Hewlett-Packard & Sun Microsystems
10789Keith Bostic, CSRG, University of California, Berkeley
10790Andrew Cheng, Sun Microsystems
10791Michael J. Corrigan, University of California, San Diego
10792Bryan Costales, International Computer Science Institute & InfoBeat
10793Pa\*:r (Pell) Emanuelsson
10794Craig Everhart, Transarc Corporation
10795Per Hedeland, Ericsson
10796Tom Ivar Helbekkmo, Norwegian School of Economics
10797Kari Hurtta, Finnish Meteorological Institute
10798Allan E. Johannesen, WPI
10799Jonathan Kamens, OpenVision Technologies, Inc.
10800Takahiro Kanbe, Fuji Xerox Information Systems Co., Ltd.
10801Brian Kantor, University of California, San Diego
10802John Kennedy, Cal State University, Chico
10803Murray S. Kucherawy, HookUp Communication Corp.
10804Bruce Lilly, Sony U.S.
10805Karl London
10806Motonori Nakamura, Ritsumeikan University & Kyoto University
10807John Gardiner Myers, Carnegie Mellon University
10808Neil Rickert, Northern Illinois University
10809Gregory Neil Shapiro, WPI
10810Eric Schnoebelen, Convex Computer Corp.
10811Eric Wassenaar, National Institute for Nuclear and High Energy Physics, Amsterdam
10812Randall Winchester, University of Maryland
10813Christophe Wolfhugel, Pasteur Institute & Herve Schauer Consultants (Paris)
10814Exactis.com, Inc.
10815.)l
10816I apologize for anyone I have omitted, misspelled, misattributed, or
10817otherwise missed.
10818At this point, I suspect that at least a hundred people
10819have contributed code,
10820and many more have contributed ideas, comments, and encouragement.
10821I've tried to list them in the RELEASE_NOTES in the distribution directory.
10822I appreciate their contribution as well.
10823.pp
10824Special thanks are reserved for Michael Corrigan and Christophe Wolfhugel,
10825who besides being wonderful guinea pigs and contributors
10826have also consented to be added to the ``sendmail@Sendmail.ORG'' list
10827and, by answering the bulk of the questions sent to that list,
10828have freed me up to do other work.
10829.++ A
10830.+c "COMMAND LINE FLAGS"
10831.ba 0
10832.nr ii 1i
10833.pp
10834Arguments must be presented with flags before addresses.
10835The flags are:
10836.ip \-A\fIx\fP
10837Select an alternative .cf file which is either
10838.i sendmail.cf
10839for
10840.b \-Am
10841or
10842.i submit.cf
10843for
10844.b \-Ac .
10845By default the .cf file is chosen based on the operation mode.
10846For
10847.b -bm
10848(default),
10849.b -bs ,
10850and
10851.b -t
10852it is
10853.i submit.cf
10854if it exists, for all others it is
10855.i sendmail.cf .
10856.ip \-b\fIx\fP
10857Set operation mode to
10858.i x .
10859Operation modes are:
10860.(b
10861.ta 4n
10862m Deliver mail (default)
10863s Speak SMTP on input side
10864a\(dg ``Arpanet'' mode (get envelope sender information from header)
10865d Run as a daemon in background
10866D Run as a daemon in foreground
10867t Run in test mode
10868v Just verify addresses, don't collect or deliver
10869i Initialize the alias database
10870p Print the mail queue
10871P Print overview over the mail queue (requires shared memory)
10872h Print the persistent host status database
10873H Purge expired entries from the persistent host status database
10874.)b
10875.(f
10876\(dgDeprecated.
10877.)f
10878.ip \-B\fItype\fP
10879Indicate body type.
10880.ip \-C\fIfile\fP
10881Use a different configuration file.
10882.i Sendmail
10883runs as the invoking user (rather than root)
10884when this flag is specified.
10885.ip "\-D \fIlogfile\fP"
10886Send debugging output to the indicated
10887.i logfile
10888instead of stdout.
10889.ip \-d\fIlevel\fP
10890Set debugging level.
10891.ip "\-f\ \fIaddr\fP"
10892The envelope sender address is set to
10893.i addr .
10894This address may also be used in the From: header
10895if that header is missing during initial submission.
10896The envelope sender address is used as the recipient
10897for delivery status notifications
10898and may also appear in a Return-Path: header.
10899.ip \-F\ \fIname\fP
10900Sets the full name of this user to
10901.i name .
10902.ip \-G
10903When accepting messages via the command line,
10904indicate that they are for relay (gateway) submission.
10905sendmail may complain about syntactically invalid messages,
10906e.g., unqualified host names,
10907rather than fixing them when this flag is set.
10908sendmail will not do any canonicalization in this mode.
10909.ip "\-h\ \fIcnt\fP"
10910Sets the
10911.q "hop count"
10912to
10913.i cnt .
10914This represents the number of times this message has been processed
10915by
10916.i sendmail
10917(to the extent that it is supported by the underlying networks).
10918.i Cnt
10919is incremented during processing,
10920and if it reaches
10921MAXHOP
10922(currently 25)
10923.i sendmail
10924throws away the message with an error.
10925.ip "\-L \fItag\fP"
10926Sets the identifier used for syslog.
10927Note that this identifier is set
10928as early as possible.
10929However,
10930.i sendmail
10931may be used
10932if problems arise
10933before the command line arguments
10934are processed.
10935.ip \-n
10936Don't do aliasing or forwarding.
10937.ip "\-N \fInotifications\fP"
10938Tag all addresses being sent as wanting the indicated
10939.i notifications ,
10940which consists of the word
10941.q NEVER
10942or a comma-separated list of
10943.q SUCCESS ,
10944.q FAILURE ,
10945and
10946.q DELAY
10947for successful delivery,
10948failure,
10949and a message that is stuck in a queue somewhere.
10950The default is
10951.q FAILURE,DELAY .
10952.ip "\-r\ \fIaddr\fP"
10953An obsolete form of
10954.b \-f .
10955.ip \-o\fIx\|value\fP
10956Set option
10957.i x
10958to the specified
10959.i value .
10960These options are described in Section 5.6.
10961.ip \-O\fIoption\fP\fB=\fP\fIvalue\fP
10962Set
10963.i option
10964to the specified
10965.i value
10966(for long form option names).
10967These options are described in Section 5.6.
10968.ip \-M\fIx\|value\fP
10969Set macro
10970.i x
10971to the specified
10972.i value .
10973.ip \-p\fIprotocol\fP
10974Set the sending protocol.
10975Programs are encouraged to set this.
10976The protocol field can be in the form
10977.i protocol \c
10978.b : \c
10979.i host
10980to set both the sending protocol and sending host.
10981For example,
10982.q \-pUUCP:uunet
10983sets the sending protocol to UUCP
10984and the sending host to uunet.
10985(Some existing programs use \-oM to set the r and s macros;
10986this is equivalent to using \-p.)
10987.ip \-q\fItime\fP
10988Try to process the queued up mail.
10989If the time is given,
10990a
10991.i sendmail
10992will start one or more processes to run through the queue(s) at the specified
10993time interval to deliver queued mail; otherwise, it only runs once.
10994Each of these processes acts on a workgroup.
10995These processes are also known as workgroup processes or WGP's for short.
10996Each workgroup is responsible for controlling the processing of one or
10997more queues; workgroups help manage the use of system resources by sendmail.
10998Each workgroup may have one or more children concurrently processing
10999queues depending on the setting of \fIMaxQueueChildren\fP.
11000.ip \-qp\fItime\fP
11001Similar to \-q with a time argument,
11002except that instead of periodically starting WGP's
11003sendmail starts persistent WGP's
11004that alternate between processing queues and sleeping.
11005The sleep time is specified by the time argument; it defaults to 1 second,
11006except that a WGP always sleeps at least 5 seconds if their queues were
11007empty in the previous run.
11008Persistent processes are managed by a queue control process (QCP).
11009The QCP is the parent process of the WGP's.
11010Typically the QCP will be the sendmail daemon (when started with \-bd or \-bD)
11011or a special process (named Queue control) (when started without \-bd or \-bD).
11012If a persistent WGP ceases to be active for some reason
11013another WGP will be started by the QCP for the same workgroup
11014in most cases. When a persistent WGP has core dumped, the debug flag
11015\fIno_persistent_restart\fP is set or the specific persistent WGP has been
11016restarted too many times already then the WGP will not be started again
11017and a message will be logged to this effect.
11018To stop (SIGTERM) or restart (SIGHUP) persistent WGP's the appropriate
11019signal should be sent to the QCP. The QCP will propagate the signal to all of
11020the WGP's and if appropriate restart the persistent WGP's.
11021.ip \-q\fIGname\fP
11022Run the jobs in the queue group
11023.i name
11024once.
11025.ip \-q[!]\fIXstring\fP
11026Run the queue once,
11027limiting the jobs to those matching
11028.i Xstring .
11029The key letter
11030.i X
11031can be
11032.b I
11033to limit based on queue identifier,
11034.b R
11035to limit based on recipient,
11036.b S
11037to limit based on sender,
11038or
11039.b Q
11040to limit based on quarantine reason for quarantined jobs.
11041A particular queued job is accepted if one of the corresponding attributes
11042contains the indicated
11043.i string .
11044The optional ! character negates the condition tested.
11045Multiple
11046.i \-q\fIX\fP
11047flags are permitted,
11048with items with the same key letter
11049.q or'ed
11050together, and items with different key letters
11051.q and'ed
11052together.
11053.ip "\-Q[reason]"
11054Quarantine a normal queue items with the given reason or
11055unquarantine quarantined queue items if no reason is given.
11056This should only be used with some sort of item matching using
11057.b \-q[!]\fIXstring\fP
11058as described above.
11059.ip "\-R ret"
11060What information you want returned if the message bounces;
11061.i ret
11062can be
11063.q HDRS
11064for headers only or
11065.q FULL
11066for headers plus body.
11067This is a request only;
11068the other end is not required to honor the parameter.
11069If
11070.q HDRS
11071is specified local bounces also return only the headers.
11072.ip \-t
11073Read the header for
11074.q To: ,
11075.q Cc: ,
11076and
11077.q Bcc:
11078lines, and send to everyone listed in those lists.
11079The
11080.q Bcc:
11081line will be deleted before sending.
11082Any addresses in the argument vector will be deleted
11083from the send list.
11084.ip "\-V envid"
11085The indicated
11086.i envid
11087is passed with the envelope of the message
11088and returned if the message bounces.
11089.ip "\-X \fIlogfile\fP"
11090Log all traffic in and out of
11091.i sendmail
11092in the indicated
11093.i logfile
11094for debugging mailer problems.
11095This produces a lot of data very quickly and should be used sparingly.
11096.pp
11097There are a number of options that may be specified as
11098primitive flags.
11099These are the e, i, m, and v options.
11100Also,
11101the f option
11102may be specified as the
11103.b \-s
11104flag.
11105The DSN related options
11106.q "\-N" ,
11107.q "\-R" ,
11108and
11109.q "\-V"
11110have no effects on
11111.i sendmail
11112running as daemon.
11113.+c "QUEUE FILE FORMATS"
11114.pp
11115This appendix describes the format of the queue files.
11116These files live in a queue directory.
11117The individual qf, hf, Qf, df, and xf files
11118may be stored in separate
11119.i qf/ ,
11120.i df/ ,
11121and
11122.i xf/
11123subdirectories
11124if they are present in the queue directory.
11125.pp
11126All queue files have the name
11127.i ttYMDhmsNNppppp
11128where
11129.i YMDhmsNNppppp
11130is the
11131.i id
11132for this message
11133and the
11134.i tt
11135is a type.
11136The individual letters in the
11137.i id
11138are:
11139.nr ii 0.5i
11140.ip Y
11141Encoded year
11142.ip M
11143Encoded month
11144.ip D
11145Encoded day
11146.ip h
11147Encoded hour
11148.ip m
11149Encoded minute
11150.ip s
11151Encoded second
11152.ip NN
11153Encoded envelope number
11154.ip ppppp
11155At least five decimal digits of the process ID
11156.pp
11157All files with the same id collectively define one message.
11158Due to the use of memory-buffered files,
11159some of these files may never appear on disk.
11160.pp
11161The types are:
11162.nr ii 0.5i
11163.ip qf
11164The queue control file.
11165This file contains the information necessary to process the job.
11166.ip hf
11167The same as a queue control file, but for a quarantined queue job.
11168.ip df
11169The data file.
11170The message body (excluding the header) is kept in this file.
11171Sometimes the df file is not stored in the same directory as the qf file;
11172in this case,
11173the qf file contains a `d' record which names the queue directory
11174that contains the df file.
11175.ip tf
11176A temporary file.
11177This is an image of the
11178.b qf
11179file when it is being rebuilt.
11180It should be renamed to a
11181.b qf
11182file very quickly.
11183.ip xf
11184A transcript file,
11185existing during the life of a session
11186showing everything that happens
11187during that session.
11188Sometimes the xf file must be generated before a queue group has been selected;
11189in this case,
11190the xf file will be stored in a directory of the default queue group.
11191.ip Qf
11192A ``lost'' queue control file.
11193.i sendmail
11194renames a
11195.b qf
11196file to
11197.b Qf
11198if there is a severe (configuration) problem that cannot be solved without
11199human intervention.
11200Search the logfile for the queue file id to figure out what happened.
11201After you resolved the problem, you can rename the
11202.b Qf
11203file to
11204.b qf
11205and send it again.
11206.pp
11207The queue control file is structured as a series of lines
11208each beginning with a code letter.
11209The lines are as follows:
11210.ip V
11211The version number of the queue file format,
11212used to allow new
11213.i sendmail
11214binaries to read queue files created by older versions.
11215Defaults to version zero.
11216Must be the first line of the file if present.
11217For 8.12 the version number is 6.
11218.ip A
11219The information given by the AUTH= parameter of the
11220.q "MAIL FROM:"
11221command or $f@$j
11222if sendmail has been called directly.
11223.ip H
11224A header definition.
11225There may be any number of these lines.
11226The order is important:
11227they represent the order in the final message.
11228These use the same syntax
11229as header definitions in the configuration file.
11230.ip C
11231The controlling address.
11232The syntax is
11233.q localuser:aliasname .
11234Recipient addresses following this line
11235will be flagged so that deliveries will be run as the
11236.i localuser
11237(a user name from the /etc/passwd file);
11238.i aliasname
11239is the name of the alias that expanded to this address
11240(used for printing messages).
11241.ip q
11242The quarantine reason for quarantined queue items.
11243.ip Q
11244The ``original recipient'',
11245specified by the ORCPT= field in an ESMTP transaction.
11246Used exclusively for Delivery Status Notifications.
11247It applies only to the following `R' line.
11248.ip r
11249The ``final recipient''
11250used for Delivery Status Notifications.
11251It applies only to the following `R' line.
11252.ip R
11253A recipient address.
11254This will normally be completely aliased,
11255but is actually realiased when the job is processed.
11256There will be one line for each recipient.
11257Version 1 qf files
11258also include a leading colon-terminated list of flags,
11259which can be
11260`S' to return a message on successful final delivery,
11261`F' to return a message on failure,
11262`D' to return a message if the message is delayed,
11263`B' to indicate that the body should be returned,
11264`N' to suppress returning the body,
11265and
11266`P' to declare this as a ``primary'' (command line or SMTP-session) address.
11267.ip S
11268The sender address.
11269There may only be one of these lines.
11270.ip T
11271The job creation time.
11272This is used to compute when to time out the job.
11273.ip P
11274The current message priority.
11275This is used to order the queue.
11276Higher numbers mean lower priorities.
11277The priority changes
11278as the message sits in the queue.
11279The initial priority depends on the message class
11280and the size of the message.
11281.ip M
11282A message.
11283This line is printed by the
11284.i mailq
11285command,
11286and is generally used to store status information.
11287It can contain any text.
11288.ip F
11289Flag bits, represented as one letter per flag.
11290Defined flag bits are
11291.b r
11292indicating that this is a response message
11293and
11294.b w
11295indicating that a warning message has been sent
11296announcing that the mail has been delayed.
11297Other flag bits are:
11298.b 8 :
11299the body contains 8bit data,
11300.b b :
11301a Bcc: header should be removed,
11302.b d :
11303the mail has RET parameters (see RFC 1894),
11304.b n :
11305the body of the message should not be returned
11306in case of an error,
11307.b s :
11308the envelope has been split.
11309.ip N
11310The total number of delivery attempts.
11311.ip K
11312The time (as seconds since January 1, 1970)
11313of the last delivery attempt.
11314.ip d
11315If the df file is in a different directory than the qf file,
11316then a `d' record is present,
11317specifying the directory in which the df file resides.
11318.ip I
11319The i-number of the data file;
11320this can be used to recover your mail queue
11321after a disastrous disk crash.
11322.ip $
11323A macro definition.
11324The values of certain macros
11325are passed through to the queue run phase.
11326.ip B
11327The body type.
11328The remainder of the line is a text string defining the body type.
11329If this field is missing,
11330the body type is assumed to be
11331.q "undefined"
11332and no special processing is attempted.
11333Legal values are
11334.q 7BIT
11335and
11336.q 8BITMIME .
11337.ip Z
11338The original envelope id (from the ESMTP transaction).
11339For Deliver Status Notifications only.
11340.pp
11341As an example,
11342the following is a queue file sent to
11343.q eric@mammoth.Berkeley.EDU
11344and
11345.q bostic@okeeffe.CS.Berkeley.EDU \**:
11346.(f
11347\**This example is contrived and probably inaccurate for your environment.
11348Glance over it to get an idea;
11349nothing can replace looking at what your own system generates.
11350.)f
11351.(b
11352V4
11353T711358135
11354K904446490
11355N0
11356P2100941
11357$_eric@localhost
11358${daemon_flags}
11359Seric
11360Ceric:100:1000:sendmail@vangogh.CS.Berkeley.EDU
11361RPFD:eric@mammoth.Berkeley.EDU
11362RPFD:bostic@okeeffe.CS.Berkeley.EDU
11363H?P?Return-path: <^g>
11364H??Received: by vangogh.CS.Berkeley.EDU (5.108/2.7) id AAA06703;
11365 Fri, 17 Jul 1992 00:28:55 -0700
11366H??Received: from mail.CS.Berkeley.EDU by vangogh.CS.Berkeley.EDU (5.108/2.7)
11367 id AAA06698; Fri, 17 Jul 1992 00:28:54 -0700
11368H??Received: from [128.32.31.21] by mail.CS.Berkeley.EDU (5.96/2.5)
11369 id AA22777; Fri, 17 Jul 1992 03:29:14 -0400
11370H??Received: by foo.bar.baz.de (5.57/Ultrix3.0-C)
11371 id AA22757; Fri, 17 Jul 1992 09:31:25 GMT
11372H?F?From: eric@foo.bar.baz.de (Eric Allman)
11373H?x?Full-name: Eric Allman
11374H??Message-id: <9207170931.AA22757@foo.bar.baz.de>
11375H??To: sendmail@vangogh.CS.Berkeley.EDU
11376H??Subject: this is an example message
11377.)b
11378This shows
11379the person who sent the message,
11380the submission time
11381(in seconds since January 1, 1970),
11382the message priority,
11383the message class,
11384the recipients,
11385and the headers for the message.
11386.+c "SUMMARY OF SUPPORT FILES"
11387.pp
11388This is a summary of the support files
11389that
11390.i sendmail
11391creates or generates.
11392Many of these can be changed by editing the sendmail.cf file;
11393check there to find the actual pathnames.
11394.nr ii 1i
11395.ip "/usr/\*(SD/sendmail"
11396The binary of
11397.i sendmail .
11398.ip /usr/\*(SB/newaliases
11399A link to /usr/\*(SD/sendmail;
11400causes the alias database to be rebuilt.
11401Running this program is completely equivalent to giving
11402.i sendmail
11403the
11404.b \-bi
11405flag.
11406.ip /usr/\*(SB/mailq
11407Prints a listing of the mail queue.
11408This program is equivalent to using the
11409.b \-bp
11410flag to
11411.i sendmail .
11412.ip /etc/mail/sendmail.cf
11413The configuration file,
11414in textual form.
11415.ip /etc/mail/helpfile
11416The SMTP help file.
11417.ip /etc/mail/statistics
11418A statistics file; need not be present.
11419.ip /etc/mail/sendmail.pid
11420Created in daemon mode;
11421it contains the process id of the current SMTP daemon.
11422If you use this in scripts;
11423use ``head \-1'' to get just the first line;
11424the second line contains the command line used to invoke the daemon,
11425and later versions of
11426.i sendmail
11427may add more information to subsequent lines.
11428.ip /etc/mail/aliases
11429The textual version of the alias file.
11430.ip /etc/mail/aliases.db
11431The alias file in
11432.i hash \|(3)
11433format.
11434.ip /etc/mail/aliases.{pag,dir}
11435The alias file in
11436.i ndbm \|(3)
11437format.
11438.ip /var/spool/mqueue
11439The directory in which the mail queue(s)
11440and temporary files reside.
11441.ip /var/spool/mqueue/qf*
11442Control (queue) files for messages.
11443.ip /var/spool/mqueue/df*
11444Data files.
11445.ip /var/spool/mqueue/tf*
11446Temporary versions of the qf files,
11447used during queue file rebuild.
11448.ip /var/spool/mqueue/xf*
11449A transcript of the current session.
11450.if o \
11451\{\
11452. bp
11453. rs
11454. sp |4i
11455. ce 2
11456This page intentionally left blank;
11457replace it with a blank sheet for double-sided output.
11458.\}
11459.\".ro
11460.\".ls 1
11461.\".tp
11462.\".sp 2i
11463.\".in 0
11464.\".ce 100
11465.\".sz 24
11466.\".b SENDMAIL
11467.\".sz 14
11468.\".sp
11469.\"INSTALLATION AND OPERATION GUIDE
11470.\".sp
11471.\".sz 10
11472.\"Eric Allman
11473.\".sp
11470.\"Version $Revision: 8.747 $
11474.\"Version $Revision: 8.749 $
11471.\".ce 0
11472.bp 3
11473.ce
11474.sz 12
11475TABLE OF CONTENTS
11476.sz 10
11477.sp
11478.\" remove some things to avoid "out of temp file space" problem
11479.rm sh
11480.rm (x
11481.rm )x
11482.rm ip
11483.rm pp
11484.rm lp
11485.rm he
11486.rm fo
11487.rm eh
11488.rm oh
11489.rm ef
11490.rm of
11491.xp
11492.if o \
11493\{\
11494. bp
11495. rs
11496. sp |4i
11497. ce 2
11498This page intentionally left blank;
11499replace it with a blank sheet for double-sided output.
11500.\}
11475.\".ce 0
11476.bp 3
11477.ce
11478.sz 12
11479TABLE OF CONTENTS
11480.sz 10
11481.sp
11482.\" remove some things to avoid "out of temp file space" problem
11483.rm sh
11484.rm (x
11485.rm )x
11486.rm ip
11487.rm pp
11488.rm lp
11489.rm he
11490.rm fo
11491.rm eh
11492.rm oh
11493.rm ef
11494.rm of
11495.xp
11496.if o \
11497\{\
11498. bp
11499. rs
11500. sp |4i
11501. ce 2
11502This page intentionally left blank;
11503replace it with a blank sheet for double-sided output.
11504.\}