Section E.3. m4 sendmail Macros

The sendmail distribution comes with several sample configuration files. Chapter 10 provides an example of how the tcpproto.mc file is modified to produce a configuration file suitable for a Linux system. The prototype files are m4 macro configuration files that produce usable sendmail.cf files as output. The prototype files are located in the sendmail/cf/cf directory of the sendmail distribution. Use those prototypes as examples of reasonable sendmail configurations.

All of the sendmail configuration files are composed of the following m4 macros: [E]

[E] By convention, m4 macros are shown in uppercase, and built-in m4 commands are shown in lowercase.

divert

Directs the output of the m4 process.

dnl

Deletes all characters up to the next newline.

VERSIONID

Defines the version number of the .mc source file. RCS or SCCS version numbers are commonly used. This command is optional.

OSTYPE

Points to the m4 source file that contains the operating system-specific information for this configuration. This is required.

DOMAIN

Points to the m4 source file that contains configuration information specific to this domain. This is optional.

LOCAL_DOMAIN

Defines the hostname aliases for the server.

CANONIFY_DOMAIN

Defines domains that should be converted to canonical format even if the nocanonify feature is set.

CANONIFY_DOMAIN_FILE

Identifies a file that contains the list of domains that should be converted to canonical format even if the nocanonify feature is set.

GENERICS_DOMAIN

Defines domain names that should be processed through the genericstable database.

GENERICS_DOMAIN_FILE

Identifies a file that contains the list of domains that should be processed through the genericstable database.

LDAPROUTE_DOMAIN

Defines domains that should be routed according to directions found in the LDAP directory.

LDAPROUTE_DOMAIN_FILE

Identifies a file that lists the domains that should be routed according to directions found in the LDAP directory.

RELAY_DOMAIN

Defines the domains for which this server should relay mail.

RELAY_DOMAIN_FILE

Identifies a file that lists the domains for which this server should relay mail.

VIRTUSER_DOMAIN

Defines the virtual domains that should be processed through the virtusertable.

VIRTUSER_DOMAIN_FILE

Identifies a file that lists the virtual domains that should be processed through the virtusertable.

FEATURE

Points to an m4 source file that defines an optional sendmail feature. This is not required for m4 to process the .mc source file, but many configurations have multiple FEATURE entries.

MASQUERADE_AS

Defines the domain name used to masquerade outgoing mail.

MASQUERADE_DOMAIN

Defines domains that should be masqueraded.

MASQUERADE_DOMAIN_FILE

Identifies a file that lists the domains that should be masqueraded.

MASQUERADE_EXCEPTION

Defines a host that should not be masqueraded even if the domain is being masqueraded.

EXPOSED_USER

Defines usernames that prevent masquerading. If the user portion of the address contains one of these names, the host portion of the address is not masqueraded.

HACK

Points to an m4 source file that contains site-specific configuration information. This is a temporary configuration used to fix a temporary problem. The use of HACK is discouraged.

SITE

Identifies a locally connected UUCP host.

SITECONFIG

Points to a source file that contains m4 SITE commands that define the UUCP sites connected to this host. The format of the command is: SITECONFIG(file, local-hostname, class), which reads the UUCP hostnames from file into class.

UUCPSMTP

Maps a UUCP hostname to an Internet hostname.

define

Defines a local value. Most "defines" are done in the m4 source files that are called by the .mc file, not in the .mc file itself. It can define a value for a sendmail.cf macro, option, or other command.

undefine

Clears the value set for a configuration parameter.

MAILER

Points to an m4 source file that contains the configuration commands that define a sendmail mailer. At least one MAILER command must appear in the configuration file. Generally more than one MAILER command is used.

MAILER_DEFINITIONS

Heads a section of sendmail.cf commands that define a custom mailer.

MODIFY_MAILER_FLAGS

Overrides the flags defined for a mailer.

MAIL_FILTER

Defines a mail filter.

INPUT_MAIL_FILTER

Defines a mail filter and the variables necessary to call the filter.

DAEMON_OPTIONS

Defines runtime options for the sendmail daemon.

TRUST_AUTH_MECH

Defines a list of trusted authorization mechanisms.

LOCAL_RULE_ n

Heads a section of code to be added to ruleset n, where n is 0, 1, 2, or 3. The code that follows the LOCAL_RULE_n command is composed of standard sendmail.cf rewrite rules.[E] The LOCAL_RULE_n command is rarely used.

[E] The one exception to this is the UUCPSMTP macro that can be used in the local rule.

LOCAL_RULESETS

Heads a section of code that defines a custom ruleset.

LOCAL_USER

Defines usernames that should be exempted from relaying even when local mail is being relayed.

LOCAL_NET_CONFIG

Heads a section of sendmail.cf code that defines how mail destined for the local host is processed.

LOCAL_CONFIG

Heads a section of code to be added to the sendmail.cf file after the local information section and before the rewrite rules. The section of code contains standard sendmail.cf configuration commands. This macro is rarely used.

The built-in m4 commands shown abovethose listed in lowercase charactersare divided between those that control the flow of output and those that set macro values. The two commands that control the flow of output are dnl and divert. Text following the dnl command is not sent to the output file. Thus it is used at the beginning of a line on a comment. The divert(-1) command sends output to the "bit-bucket" and marks the start of a block of comments. The divert(0) command directs output to standard m4 processing. In addition to -1 and 0, the divert command accepts nine other numeric arguments: the values 1 to 9. These other values are used in the m4 macro source code to direct data to various parts of the sendmail.cf file. You will not use these values in your own configuration. Instead you will use other commands to direct data to specific parts of the sendmail.cf file.

The commands LOCAL_CONFIG, LOCAL_USER, LOCAL_RULESETS, MAILER_DEFINITION, LOCAL_NET_CONFIG, and LOCAL_RULE allow you to send data to various parts of the sendmail.cf file without using the various divert values directly. Commands such as LOCAL_CONFIG and MAILER_DEFINITION mark the start of raw sendmail.cf code that should be included in some part of the output file. These commands make it possible for you to customize the sendmail.cf file in any possible way.

The built-in m4 commands define and undefine set macro values. define sets a variable to a value and undefine resets it to its default value. More configuration parameters can be controlled through the define command than through any other, and, correspondingly, more of this appendix is dedicated to define parameters than to anything else.

Almost half of the m4 macros act like the define command and simply set a parameter to a value. MASQUERADE_AS, MASQUERADE_DOMAIN, RELAY_DOMAIN, and VIRTUSER_DOMAIN_FILE are all examples of commands used to set variables.

The TRUST_AUTH_MECH macro is a good example of a macro that complements a define. As you'll see in Section E.3.1 of this appendix, the parameter confAUTH_MECHANISMS can be used to define the trusted authentication mechanisms your server advertises to other servers. The TRUST_AUTH_MECH macro is the inverse of this. It identifies the mechanism that your server accepts from other servers. The same list of keywords used to configure the confAUTH_MECHANISMS parameter in Section E.3.1 can be used to configure TRUST_AUTH_MECHANISMS.

The macro names OSTYPE, DOMAIN, FEATURE, MAILER, HACK, and SITECONFIG are all names of subdirectories within the cf directory. The value passed to each of these macros is the name of a file within the specified directory. For example, the command FEATURE(nouucp) tells m4 to load the file nouucp.m4 from the ostype directory and process the m4 source code found there. The .m4 source files pointed to by the OSTYPE, DOMAIN, FEATURE, and MAILER commands are built primarily from define and FEATURE commands.

Two of the macros that are also directory names, SITECONFIG and HACK, are rarely used. SITECONFIG points to a source file that contains SITE macros that define the UUCP sites connected to the local host. You create the file containing the SITE macros yourself and then invoke it with the SITECONFIG command. These commands, along with UUCPSMTP, are obsolete and maintained only for backward compatibility.

The HACK macro points to an m4 source file that contains a temporary site-specific fix to a sendmail problem. You create the file in the hack directory and then use the HACK command to add that file to the configuration. The use of hacks is discouraged and is generally unnecessary.

The following section provides additional information about the OSTYPE, DOMAIN, FEATURE, and MAILER macros and details of the various commands used to build the m4 source files they call. Chapter 10 provides an example of building a custom DOMAIN macro source file. The source files can contain any of the macros we have already mentioned as well as the additional ones documented below. The macro configuration (.mc) file also can contain any of the commands documented below. In fact, pretty much any macro can appear in any file.

To bring some order out of this chaos, the commands are organized according to the files they are most likely to appear in, which is similar to the organization found in the documentation that comes with the sendmail distribution. Just remember, actual implementation files may have a different organization. We start by examining the define macros and the FEATURE macros that are the primary building blocks of all the other files.

E.3.1 define

The syntax of the define macro is:

define( `parameter ', `value ')

where parameter is the keyword name of a sendmail configuration parameter and value is the value assigned to that configuration parameter. The parameter and the value are normally enclosed in single quotes to prevent inappropriate macro expansion. These are not balanced quotes. The opening quote is a grave sign (`), and the closing quote is an apostrophe (').

Many of the configuration parameters that can be set using the define command are shown below. Most of the parameters correspond to sendmail options, macros, or classes. The name of the option, macro, or class set by the parameter is listed in the parameter description enclosed in square brackets ([]). Macro names begin with a dollar sign ($j), class names begin with a dollar sign and an equals sign ($=w), and options are shown with long option names (SingleThreadDelivery). To find out more about these parameters, see the descriptions of the macros, options, and classes they represent that are provided later in this appendix.

Because many define parameters are equivalent to options, macros, and classes, the command:

define(`confDOMAIN_NAME', `rodent.wrotethebook.com')

placed in an m4 source file has the same effect as:

Djrodent.wrotethebook.com

placed directly in the sendmail.cf file. If you compile and install a new version of sendmail, build your configuration with m4 and set values for macros, classes, and options with the m4 define macro.

The list of define parameters is quite long. However, because most of the parameters default to a reasonable value, they do not have to be explicitly set in the m4 source file. The default value of each parameter is shown in the listingunless there is no default.

confMAILER_NAME

Default is MAILER-DAEMON. The sender name used on error messages. [$n]

confDOMAIN_NAME

The full hostname. [$j]

confCF_VERSION

The configuration file's version number. [$Z]

confFROM_HEADER

Default is $?x$x <$g>$|$g$. . The From: header format.

confRECEIVED_HEADER

Default is $?sfrom $s $.$?_($?s$|from $.$_) $.by $j ($v/$Z)$?r with $r$. id $i$?u for $u$.; $b . The Received: header format.

confCW_FILE

Default is /etc/sendmail.cw. The file of local host aliases. [$=w]

confCT_FILE

Default is /etc/sendmail.ct. The file of trusted usernames. [$=t]

confTRUSTED_USERS

Trusted usernames to add to root, uucp, and daemon.

confSMTP_MAILER

Default is esmtp. The mailer used for SMTP connections; must be smtp, smtp8, or esmtp.

confUUCP_MAILER

Default is uucp-old. The default UUCP mailer.

confLOCAL_MAILER

Default is local. The mailer used for local connections.

confRELAY_MAILER

Default is relay. The default mailer name for relaying.

confSEVEN_BIT_INPUT

Default is False. Forces input to seven bits. [SevenBitInput]

confEIGHT_BIT_HANDLING

Default is pass8. Defines how 8-bit data is handled. [EightBitMode]

confALIAS_WAIT

Default is 10m. The amount of time to wait for alias file rebuild. [AliasWait]

confMIN_FREE_BLOCKS

Default is 100. The minimum number of free blocks on the queue filesystem that must be available to accept SMTP mail. [MinFreeBlocks]

confMAX_MESSAGE_SIZE

Default is infinite. The maximum message size. [MaxMessageSize]

confBLANK_SUB

The character used to replace unquoted blank characters in email addresses. [BlankSub]

confCON_EXPENSIVE

Default is False. Tells system to hold mail bound for mailers that have the e flag set until the next queue run. [HoldExpensive]

confCHECKPOINT_INTERVAL

Default is 10. Tells system to checkpoint the queue files after this number of queued items are processed. [CheckpointInterval]

confDELIVERY_MODE

Default is background. Sets the default delivery mode. [DeliveryMode]

confAUTO_REBUILD

Default is False. Automatically rebuilds alias file. [AutoRebuildAliases]

confERROR_MODE

Default is print. Defines how errors are handled. [ErrorMode]

confERROR_MESSAGE

Points to a file containing a message that is prepended to error messages. [ErrorHeader]

confSAVE_FROM_LINES

Tells system not to discard Unix From: lines. They are discarded if this is not set. [SaveFromLine]

confTEMP_FILE_MODE

Default is 0600. File mode for temporary files. [TempFileMode]

confMATCH_GECOS

Tells system to match the email username to the GECOS field. This match is not done if this is not set. [MatchGECOS]

confMAX_HOP

Default is 25. The counter used to determine mail loops. [MaxHopCount]

confIGNORE_DOTS

Default is False. Tells system to ignore dots in incoming messages. [IgnoreDots]

confBIND_OPTS

Default is undefined. Sets options for DNS resolver. [ResolverOptions]

confMIME_FORMAT_ERRORS

Default is True. Tells system to send MIME-encapsulated error messages. [SendMimeErrors]

confFORWARD_PATH

Default is $z/.forward.$w:$z/.forward. Places to search for .forward files. [ForwardPath]

confMCI_CACHE_SIZE

Default is 2. The number of open connections that can be cached. [ConnectionCacheSize]

confMCI_CACHE_TIMEOUT

Default is 5m. The amount of time inactive open connections are held in the cache. [ConnectionCacheTimeout]

confHOST_STATUS_DIRECTORY

Directory in which host status is saved. [HostStatusDirectory]

confUSE_ERRORS_TO

Default is False. Delivers errors using the Errors-To: header. [UseErrorsTo]

confLOG_LEVEL

Default is 9. Level of detail for the log file. [LogLevel]

confME_TOO

Default is False. Sends a copy to the sender. [MeToo]

confCHECK_ALIASES

Default is False. Looks up every alias during alias file build. [CheckAliases]

confOLD_STYLE_HEADERS

Default is True. Treats headers without special characters as old style. [OldStyleHeaders]

confDAEMON_OPTIONS

SMTP daemon options. [DaemonPortOptions]

confPRIVACY_FLAGS

Default is authwarnings. These flags restrict the use of some mail commands. [PrivacyOptions]

confCOPY_ERRORS_TO

Address to receive copies of error messages. [PostmasterCopy]

confQUEUE_FACTOR

Default is 600000. Used to calculate when a loaded system should queue mail instead of attempting delivery. [QueueFactor]

confDONT_PRUNE_ROUTES

Default is False. Don't prune route-addresses to the minimum possible. [DontPruneRoutes]

confSAFE_QUEUE

Create a queue file, then attempt delivery. This is not done unless this parameter is specified. [SuperSafe]

confTO_INITIAL

Default is 5m. Maximum time to wait for the initial connect response. [Timeout.initial]

confTO_CONNECT

Default is 0. Maximum time to wait for a connect to complete. [Timeout.connect]

confTO_ICONNECT

Maximum time to wait for the very first connect attempt to a host. [Timeout.iconnect]

confTO_HELO

Default is 5m. Maximum time to wait for a HELO or EHLO response. [Timeout.helo]

confTO_MAIL

Default is 10m. Maximum time to wait for a MAIL command response. [Timeout.mail]

confTO_RCPT

Default is 1h. Maximum time to wait for a RCPT command response. [Timeout.rcpt]

confTO_DATAINIT

Default is 5m. Maximum time to wait for a DATA command response. [Timeout.datainit]

confTO_DATABLOCK

Default is 1h. Maximum time to wait for a block during DATA phase. [Timeout.datablock]

confTO_DATAFINAL

Default is 1h. Maximum time to wait for a response to the terminating ".". [Timeout.datafinal]

confTO_RSET

Default is 5m. Maximum time to wait for a RSET command response. [Timeout.rset]

confTO_QUIT

Default is 2m. Maximum time to wait for a QUIT command response. [Timeout.quit]

confTO_MISC

Default is 2m. Maximum time to wait for other SMTP command responses. [Timeout.misc]

confTO_COMMAND

Default is 1h. Maximum time to wait for a command to be issued. [Timeout.command]

confTO_IDENT

Default is 30s. Maximum time to wait for an IDENT query response. [Timeout.ident]

confTO_FILEOPEN

Default is 60s. Maximum time to wait for a file open. [Timeout.fileopen]

confTO_QUEUERETURN

Default is 5d. Time until a message is returned from the queue as undeliverable. [Timeout.queuereturn]

confTO_QUEUERETURN_NORMAL

"Undeliverable" timeout for normal priority messages. [Timeout.queuereturn.normal]

confTO_QUEUERETURN_URGENT

"Undeliverable" timeout for urgent priority messages. [Timeout.queuereturn.urgent]

confTO_QUEUERETURN_NONURGENT

"Undeliverable" timeout for low priority messages. [Timeout.queuereturn.non-urgent]

confTO_QUEUEWARN

Default is 4h. Time until a "still queued" warning is sent about a message. [Timeout.queuewarn]

confTO_QUEUEWARN_NORMAL

Time until a "still queued" warning is sent for normal priority messages. [Timeout.queuewarn.normal]

confTO_QUEUEWARN_URGENT

Time until a "still queued" warning is sent for urgent priority messages. [Timeout.queuewarn.urgent]

confTO_QUEUEWARN_NONURGENT

Time until a "still queued" warning is sent for low priority messages. [Timeout.queuewarn.non-urgent]

confTO_HOSTSTATUS

Default is 30m. Time for stale host status information. [Timeout.hoststatus]

confTIME_ZONE

Default is USE_SYSTEM. Sets time zone from the system (USE_SYSTEM) or the TZ variable (USE_TZ). [TimeZoneSpec]

confDEF_USER_ID

Default is 1:1. Default user ID and group ID. [DefaultUser]

confUSERDB_SPEC

Path of the user database file. [UserDatabaseSpec]

confFALLBACK_MX

Backup MX host. [FallbackMXhost]

confTRY_NULL_MX_LIST

Default is False. Instructs system to connect to the remote host directly if the MX points to the local host. [TryNullMXList]

confQUEUE_LA

Default is 8. Sends mail directly to the queue when this load average is reached. [QueueLA]

confREFUSE_LA

Default is 12. Refuses incoming SMTP connections at this load average. [RefuseLA]

confMAX_DAEMON_CHILDREN

If set, refuses connection when this number of children is reached. [MaxDaemonChildren]

confCONNECTION_RATE_THROTTLE

Maximum number of connections permitted per second, if set. [ConnectionRateThrottle]

confWORK_RECIPIENT_FACTOR

Default is 30000. Factor used to lower the priority of a job for each additional recipient. [RecipientFactor]

confSEPARATE_PROC

Default is False. Delivers messages with separate processes. [ForkEachJob]

confWORK_CLASS_FACTOR

Default is 1800. The factor used to favor a high-priority job. [ClassFactor]

confWORK_TIME_FACTOR

Default is 90000. Factor used to lower the priority of a job for each delivery attempt. [RetryFactor]

confQUEUE_SORT_ORDER

Default is Priority. Sorts queue by Priority or Host order. [QueueSortOrder]

confMIN_QUEUE_AGE

Default is 0. Minimum time a job must be queued. [MinQueueAge]

confDEF_CHAR_SET

Default is unknown-8bit. Default character set for unlabeled 8-bit MIME data. [DefaultCharSet]

confSERVICE_SWITCH_FILE

Default is /etc/service.switch. The path to the service switch file. [ServiceSwitchFile]

confHOSTS_FILE

Default is /etc/hosts. The path to the hostnames file. [HostsFile]

confDIAL_DELAY

Default is 0s. Amount of time to delay before retrying a "dial on demand" connection. 0s means "don't retry." [DialDelay]

confNO_RCPT_ACTION

Default is none. Handling for mail with no recipient headers: do nothing (none); add To: header (add-to); add Apparently-To: header (add-apparently-to); add a Bcc: header (add-bcc); add "To: undisclosed-recipients" header (add-to-undisclosed). [NoRecipientAction]

confSAFE_FILE_ENV

Default is undefined. chroot( ) to this directory before writing files. [SafeFileEnvironment]

confCOLON_OK_IN_ADDR

Default is True. Treats colons as regular characters in addresses. [ColonOkInAddr]

confMAX_QUEUE_RUN_SIZE

Default is 0. Limits the number of entries processed in a queue run. means no limit. [MaxQueueRunSize]

confDONT_EXPAND_CNAMES

Default is False. If true, don't convert nicknames to canonical names. False means to convert. [DontExpandCnames]

confFROM_LINE

Default is From $g $d. The format of the Unix From: line. [UnixFromLine]

confOPERATORS

Default is .:%@!^/[]+. Address operator characters. [OperatorChars]

confSMTP_LOGIN_MSG

Default is $j sendmail $v/$Z; $b. The SMTP greeting message. [SmtpGreetingMessage]

confDONT_INIT_GROUPS

Default is False. If true, disable the initgroups(3) routine. False means to use the initgroups(3) routine. [DontInitGroups]

confUNSAFE_GROUP_WRITES

Default is False. If true, don't reference programs or files from group-writable :include: and .forward files. [UnsafeGroupWrites]

confDOUBLE_BOUNCE_ADDRESS

Default is postmaster. When errors occur sending an error message, send the second error message to this address. [DoubleBounceAddress]

confRUN_AS_USER

Default is undefined. Run as this user to read and deliver mail. [RunAsUser]

confSINGLE_THREAD_DELIVERY

Default is False. Force single-threaded mail delivery when set with HostStatusDirectory. [SingleThreadDelivery]

confALLOW_BOGUS_HELO

Defines normally illegal special characters that will be allowed in the DNS hostname on a HELO or EHLO command line. [AllowBogusHELO]

confAUTH_MECHANISMS

Defines a space-separated list of authentication mechanisms that will be advertised by this server. Possible values are GSSAPI, KERBEROS_V4, DIGEST-MD5, and CRAM-MD5. [AuthMechanisms]

confAUTH_OPTIONS

The AUTH= argument is added to the MAIL FROM header only when authentication succeeds if this is set to A. [AuthOptions]

confCACERT

Identifies a file containing a cryptographic certificate from a certificate authority. [CACERTFile]

confCACERT_PATH

Defines the path to the directory that contains the cryptographic certificates. [CACERTPath]

confCLIENT_CERT

Identifies the file containing the cryptographic certificate sendmail uses when it acts as client. [ClientCertFile]

confCLIENT_KEY

Identifies the file containing the private key associated with the certificate used when sendmail acts as a client. [ClientKeyFile]

confCLIENT_OPTIONS

Defines the port options used for outbound SMTP client connections. [ClientPortOptions]

confCONNECT_ONLY_TO

Limits connectivity. Used for testing by the sendmail developers. This is not used in production environments. [ConnectOnlyTo]

confCONTROL_SOCKET_NAME

Defines a socket used for managing the sendmail daemon. [ControlSocketName]

confCR_FILE

Points to the file that lists the hosts for which this server will relay mail. Defaults to /etc/mail/relay-domains. [$=R]

confDEAD_LETTER_DROP

Defines the file where failed messages that could not be returned to the sender or sent to the postmaster are saved. [DeadLetterDrop]

confDEF_AUTH_INFO

Identifies the file that contains the authentication information used for outbound connections. [DefaultAuthInfo]

confDF_BUFFER_SIZE

Defines the maximum amount of buffer memory that will be used before a disk file is used. [DataFileBufferSize]

confDH_PARAMETERS

Identifies the file that contains the DH parameters for the DSA/DH digital signature algorithm. [DHParameters]

confDONT_BLAME_SENDMAIL

Tells sendmail to perform certain file security checks. By default, all checks are performed. This option weakens the security of your server. See the DontBlameSendmail option later in this appendix for a full list of the values that can be used with this parameter. [DontBlameSendmail]

confDONT_PROBE_INTERFACES

Tells sendmail not to automatically accept the addresses of the server's network interfaces as valid addresses if set to true. Defaults to false. [DontProbeInterface]

confEBINDIR

Defines the directory where executables for FEATURE(`local_lmtp') and FEATURE(`smrsh') are stored. The default directory is /usr/libexec.

confLDAP_DEFAULT_SPEC

Defines the defaults used for LDAP databases unless specifically overridden by a K command for an individual map. [LDAPDefaultSpec]

confMAX_ALIAS_RECURSION

Aliases can refer to other aliases. This sets the maximum depth that alias references can be nested. The default is 10. [MaxAliasRecursion]

confMAX_HEADERS_LENGTH

Defines the maximum length of the sum of all headers in bytes. [MaxHeadersLength]

confMAX_MIME_HEADER_LENGTH

Defines the maximum length of MIME headers. [MaxMimeHeaderLength]

confMAX_RCPTS_PER_MESSAGE

Defines the maximum number of recipients allowed for a piece of mail. [MaxRecipientsPerMessage]

confMUST_QUOTE_CHARS

Adds characters to the list of characters that must be quoted when they are included in the user's full name ($x). The characters @,;:\( )[] are always quoted. By default . and ` are added to the list. [MustQuoteChars]

confPID_FILE

Specifies the path of the PID file. [PidFile]

confPROCESS_TITLE_PREFIX

Identifies the string used on this system as the prefix for the process title in ps listings. [ProcessTitlePrefix]

confRAND_FILE

Identifies the file that contains random data needed by STARTTLS if sendmail was not compiled with the HASURANDOM flag. [RandFile]

confREJECT_MSG

Defines the message displayed when mail is rejected because of the access control database. Defaults to "550 Access denied".

confRRT_IMPLIES_DSN

True tells sendmail to interpret a Return-Receipt-To: header as a request for delivery status notification (DSN). The default is false. [RrtImpliesDsn]

confSERVER_CERT

Identifies the file that contains the cryptographic certificate used when this system acts as server. [ServerCertFile]

confSERVER_KEY

Identifies the file that contains the private key associated with the cryptographic certificate used when this system acts as server. [ServerKeyFile]

confSINGLE_LINE_FROM_HEADER

True forces a multiline From: line to a single line. The default is false. [SingleLineFromHeader]

confTO_RESOLVER_RETRANS

Defines, in seconds, the retransmission timer for all resolver lookups. [Timeout.resolver.retrans]

confTO_RESOLVER_RETRANS_FIRST

Defines, in seconds, the retransmission timer for the resolver lookup for the first attempt to deliver a message. [Timeout.resolver.retrans.first]

confTO_RESOLVER_RETRANS_NORMAL

Defines, in seconds, the retransmission timer for all resolver lookups after the first attempt to deliver a message. [Timeout.resolver.retrans.normal]

confTO_RESOLVER_RETRY

Defines the total number of times to retry a resolver query. [Timeout.resolver.retry]

confTO_RESOLVER_RETRY_FIRST

Defines the number of times the resolver query for the first delivery attempt is retried. [Timeout.resolver.retry.first]

confTO_RESOLVER_RETRY_NORMAL

Defines the number of times to retry resolver queries after the first delivery attempt. [Timeout.resolver.retry.normal]

confTRUSTED_USER

Defines the user who controls the sendmail daemon and owns the files created by sendmail. Do not confuse this option with confTRUSTED_USERS. [TrustedUser]

confXF_BUFFER_SIZE

Defines the maximum amount of buffer memory that can be used for a transcript file before the file must be written to disk. The default is 4096 bytes. [XScriptFileBufferSize]

define macros are the most common macros in the m4 source files. The next most commonly used macro is the FEATURE macro.

E.3.2 FEATURE

The FEATURE macro processes m4 source code from the cf/feature directory. Source files in that directory define optional sendmail features that you may wish to include in your configuration. The syntax of the FEATURE macro is:

FEATURE(name, [argument])

The FEATURE source file can be called with or without an optional argument. If an argument is passed to the source file, the argument is used by the source file to generate code for the sendmail.cf file. For example:

FEATURE(`mailertable', `hash /etc/mail/mailertable')

generates the code for accessing the mailertable and defines that table as being a hash database located in the file /etc/mail/mailertable.

There are several features available in sendmail V8. They are all listed in Table E-3. The table provides the name of each feature and its purpose.

Table E-3. sendmail features

Name

Purpose

use_cw_file

Load $=w from /etc/mail/local-host-names.

use_ct_file

Load $=t from /etc/mail/trusted-users.

relay_based_on_MX

Relay mail for any site whose MX points to this server.

relay_entire_domain

Relay mail for any host in your domain.

relay_hosts_only

Only relay mail for hosts listed in the access database.

relay_local_from

Relay mail if the source is a local host.

relay_mail_from

Relay mail if the sender is listed as RELAY in the access database.

promiscuous_relay

Relay mail from any site to any site.

rbl

The obsolete Realtime Blackhole List feature has been replaced by dnsbl.

dnsbl

Reject mail from hosts listed in a DNS-based rejection list. Replaces rbl.

blacklist_recipients

Filter incoming mail based on values set in the access database.

delay_checks

Delay the check_mail and check_relay rulesets until check_rcpt is called.

loose_relay_check

Disable validity checks for addresses that use the % hack.

redirect

Support the .REDIRECT pseudo-domain.

no_default_msa

Allow the default configuration of the Message Submission Agent to be overridden by the DAEMON_OPTIONS macro.

nouucp

Don't include UUCP address processing.

nocanonify

Don't convert names with $[name$] syntax.

stickyhost

Treat "user" differently than "user@local.host".[E]

mailertable

Mail routing using a mailer table.

domaintable