15899 lines
645 KiB
Groff
15899 lines
645 KiB
Groff
.TH POSTCONF 5
|
|
.SH NAME
|
|
postconf
|
|
\-
|
|
Postfix configuration parameters
|
|
.SH SYNOPSIS
|
|
.na
|
|
.nf
|
|
\fBpostconf\fR \fIparameter\fR ...
|
|
|
|
\fBpostconf \-e\fR "\fIparameter=value\fR" ...
|
|
.SH DESCRIPTION
|
|
.ad
|
|
.fi
|
|
The Postfix main.cf configuration file specifies parameters that
|
|
control the operation of the Postfix mail system. Typically the
|
|
file contains only a small subset of all parameters; parameters
|
|
not specified are left at their default values.
|
|
.PP
|
|
The general format of the main.cf file is as follows:
|
|
.IP \(bu
|
|
Each logical line has the form "parameter = value".
|
|
Whitespace around the "=" is ignored, as is whitespace at the
|
|
end of a logical line.
|
|
.IP \(bu
|
|
Empty lines and whitespace-only lines are ignored, as are lines
|
|
whose first non-whitespace character is a `#'.
|
|
.IP \(bu
|
|
A logical line starts with non-whitespace text. A line that starts
|
|
with whitespace continues a logical line.
|
|
.IP \(bu
|
|
A parameter value may refer to other parameters.
|
|
.RS
|
|
.IP \(bu
|
|
The expressions "$name" and "${name}" are recursively replaced with
|
|
the value of the named parameter. The parameter name must contain
|
|
only characters from the set [a-zA-Z0-9_]. An undefined parameter
|
|
value is replaced with the empty value.
|
|
.IP \(bu
|
|
The expressions "${name?value}" and "${name?{value}}" are replaced
|
|
with "value" when "$name" is non-empty. The parameter name must
|
|
contain only characters from the set [a-zA-Z0-9_]. These forms are
|
|
supported with Postfix versions >= 2.2 and >= 3.0, respectively.
|
|
.IP \(bu
|
|
The expressions "${name:value}" and "${name:{value}}" are replaced
|
|
with "value" when "$name" is empty. The parameter name must contain
|
|
only characters from the set [a-zA-Z0-9_]. These forms are supported
|
|
with Postfix versions >= 2.2 and >= 3.0, respectively.
|
|
.IP \(bu
|
|
The expression "${name?{value1}:{value2}}" is replaced with "value1"
|
|
when "$name" is non-empty, and with "value2" when "$name" is empty.
|
|
The "{}" is required for "value1", optional for "value2". The
|
|
parameter name must contain only characters from the set [a-zA-Z0-9_].
|
|
This form is supported with Postfix versions >= 3.0.
|
|
.IP \(bu
|
|
The first item inside "${...}" may be a relational expression of the
|
|
form: "{value3} == {value4}". Besides the "==" (equality) operator
|
|
Postfix supports "!=" (inequality), "<", "<=", ">=", and ">". The
|
|
comparison is numerical when both operands are all digits, otherwise
|
|
the comparison is lexicographical. These forms are supported with
|
|
Postfix versions >= 3.0.
|
|
.IP \(bu
|
|
Each "value" is subject to recursive named parameter and relational
|
|
expression evaluation, except where noted.
|
|
.IP \(bu
|
|
Whitespace before or after each "{value}" is ignored.
|
|
.IP \(bu
|
|
Specify "$$" to produce a single "$" character.
|
|
.IP \(bu
|
|
The legacy form "$(...)" is equivalent to the preferred form "${...}".
|
|
.RE
|
|
.IP \(bu
|
|
When the same parameter is defined multiple times, only the last
|
|
instance is remembered.
|
|
.IP \(bu
|
|
Otherwise, the order of main.cf parameter definitions does not matter.
|
|
.PP
|
|
The remainder of this document is a description of all Postfix
|
|
configuration parameters. Default values are shown after the
|
|
parameter name in parentheses, and can be looked up with the
|
|
"\fBpostconf \-d\fR" command.
|
|
.PP
|
|
Note: this is not an invitation to make changes to Postfix
|
|
configuration parameters. Unnecessary changes can impair the
|
|
operation of the mail system.
|
|
.SH 2bounce_notice_recipient (default: postmaster)
|
|
The recipient of undeliverable mail that cannot be returned to
|
|
the sender. This feature is enabled with the notify_classes
|
|
parameter.
|
|
.SH access_map_defer_code (default: 450)
|
|
The numerical Postfix SMTP server response code for
|
|
an \fBaccess\fR(5) map "defer" action, including "defer_if_permit"
|
|
or "defer_if_reject". Prior to Postfix 2.6, the response
|
|
is hard\-coded as "450".
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH access_map_reject_code (default: 554)
|
|
The numerical Postfix SMTP server response code for
|
|
an \fBaccess\fR(5) map "reject" action.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH address_verify_cache_cleanup_interval (default: 12h)
|
|
The amount of time between \fBverify\fR(8) address verification
|
|
database cleanup runs. This feature requires that the database
|
|
supports the "delete" and "sequence" operators. Specify a zero
|
|
interval to disable database cleanup.
|
|
.PP
|
|
After each database cleanup run, the \fBverify\fR(8) daemon logs the
|
|
number of entries that were retained and dropped. A cleanup run is
|
|
logged as "partial" when the daemon terminates early after "\fBpostfix
|
|
reload\fR", "\fBpostfix stop\fR", or no requests for $max_idle
|
|
seconds.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is h (hours).
|
|
.PP
|
|
This feature is available in Postfix 2.7.
|
|
.SH address_verify_default_transport (default: $default_transport)
|
|
Overrides the default_transport parameter setting for address
|
|
verification probes.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_local_transport (default: $local_transport)
|
|
Overrides the local_transport parameter setting for address
|
|
verification probes.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_map (default: see "postconf \-d" output)
|
|
Lookup table for persistent address verification status
|
|
storage. The table is maintained by the \fBverify\fR(8) service, and
|
|
is opened before the process releases privileges.
|
|
.PP
|
|
The lookup table is persistent by default (Postfix 2.7 and later).
|
|
Specify an empty table name to keep the information in volatile
|
|
memory which is lost after "\fBpostfix reload\fR" or "\fBpostfix
|
|
stop\fR". This is the default with Postfix version 2.6 and earlier.
|
|
.PP
|
|
Specify a location in a file system that will not fill up. If the
|
|
database becomes corrupted, the world comes to an end. To recover,
|
|
delete (NOT: truncate) the file and do "\fBpostfix reload\fR".
|
|
.PP
|
|
Postfix daemon processes do not use root privileges when opening
|
|
this file (Postfix 2.5 and later). The file must therefore be
|
|
stored under a Postfix\-owned directory such as the data_directory.
|
|
As a migration aid, an attempt to open the file under a non\-Postfix
|
|
directory is redirected to the Postfix\-owned data_directory, and a
|
|
warning is logged.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
address_verify_map = hash:/var/lib/postfix/verify
|
|
address_verify_map = btree:/var/lib/postfix/verify
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_negative_cache (default: yes)
|
|
Enable caching of failed address verification probe results. When
|
|
this feature is enabled, the cache may pollute quickly with garbage.
|
|
When this feature is disabled, Postfix will generate an address
|
|
probe for every lookup.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_negative_expire_time (default: 3d)
|
|
The time after which a failed probe expires from the address
|
|
verification cache.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_negative_refresh_time (default: 3h)
|
|
The time after which a failed address verification probe needs to
|
|
be refreshed.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is h (hours).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_pending_request_limit (default: see "postconf \-d" output)
|
|
A safety limit that prevents address verification requests from
|
|
overwhelming the Postfix queue. By default, the number of pending
|
|
requests is limited to 1/4 of the active queue maximum size
|
|
(qmgr_message_active_limit). The queue manager enforces the limit
|
|
by tempfailing requests that exceed the limit. This affects only
|
|
unknown addresses and inactive addresses that have expired, because
|
|
the \fBverify\fR(8) daemon automatically refreshes an active address
|
|
before it expires.
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH address_verify_poll_count (default: normal: 3, overload: 1)
|
|
How many times to query the \fBverify\fR(8) service for the completion
|
|
of an address verification request in progress.
|
|
.PP
|
|
By default, the Postfix SMTP server polls the \fBverify\fR(8) service
|
|
up to three times under non\-overload conditions, and only once when
|
|
under overload. With Postfix version 2.5 and earlier, the SMTP
|
|
server always polls the \fBverify\fR(8) service up to three times by
|
|
default.
|
|
.PP
|
|
Specify 1 to implement a crude form of greylisting, that is, always
|
|
defer the first delivery request for a new address.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Postfix <= 2.6 default
|
|
address_verify_poll_count = 3
|
|
# Poor man's greylisting
|
|
address_verify_poll_count = 1
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_poll_delay (default: 3s)
|
|
The delay between queries for the completion of an address
|
|
verification request in progress.
|
|
.PP
|
|
The default polling delay is 3 seconds.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_positive_expire_time (default: 31d)
|
|
The time after which a successful probe expires from the address
|
|
verification cache.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_positive_refresh_time (default: 7d)
|
|
The time after which a successful address verification probe needs
|
|
to be refreshed. The address verification status is not updated
|
|
when the probe fails (optimistic caching).
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_relay_transport (default: $relay_transport)
|
|
Overrides the relay_transport parameter setting for address
|
|
verification probes.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_relayhost (default: $relayhost)
|
|
Overrides the relayhost parameter setting for address verification
|
|
probes. This information can be overruled with the \fBtransport\fR(5) table.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_sender (default: $double_bounce_sender)
|
|
The sender address to use in address verification probes; prior
|
|
to Postfix 2.5 the default was "postmaster". To
|
|
avoid problems with address probes that are sent in response to
|
|
address probes, the Postfix SMTP server excludes the probe sender
|
|
address from all SMTPD access blocks.
|
|
.PP
|
|
Specify an empty value (address_verify_sender =) or <> if you want
|
|
to use the null sender address. Beware, some sites reject mail from
|
|
<>, even though RFCs require that such addresses be accepted.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
address_verify_sender = <>
|
|
address_verify_sender = postmaster@mydomain
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_sender_dependent_default_transport_maps (default: $sender_dependent_default_transport_maps)
|
|
Overrides the sender_dependent_default_transport_maps parameter
|
|
setting for address verification probes.
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH address_verify_sender_dependent_relayhost_maps (default: $sender_dependent_relayhost_maps)
|
|
Overrides the sender_dependent_relayhost_maps parameter setting for address
|
|
verification probes.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH address_verify_sender_ttl (default: 0s)
|
|
The time between changes in the time\-dependent portion of address
|
|
verification probe sender addresses. The time\-dependent portion is
|
|
appended to the localpart of the address specified with the
|
|
address_verify_sender parameter. This feature is ignored when the
|
|
probe sender addresses is the null sender, i.e. the address_verify_sender
|
|
value is empty or <>.
|
|
.PP
|
|
Historically, the probe sender address was fixed. This has
|
|
caused such addresses to end up on spammer mailing lists, and has
|
|
resulted in wasted network and processing resources.
|
|
.PP
|
|
To enable time\-dependent probe sender addresses, specify a
|
|
non\-zero time value. Specify a value of at least several hours,
|
|
to avoid problems with senders that use greylisting. Avoid nice
|
|
TTL values, to make the result less predictable.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH address_verify_service_name (default: verify)
|
|
The name of the \fBverify\fR(8) address verification service. This service
|
|
maintains the status of sender and/or recipient address verification
|
|
probes, and generates probes on request by other Postfix processes.
|
|
.SH address_verify_transport_maps (default: $transport_maps)
|
|
Overrides the transport_maps parameter setting for address verification
|
|
probes.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH address_verify_virtual_transport (default: $virtual_transport)
|
|
Overrides the virtual_transport parameter setting for address
|
|
verification probes.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH alias_database (default: see "postconf \-d" output)
|
|
The alias databases for \fBlocal\fR(8) delivery that are updated with
|
|
"\fBnewaliases\fR" or with "\fBsendmail \-bi\fR".
|
|
.PP
|
|
This is a separate configuration parameter because not all the
|
|
tables specified with $alias_maps have to be local files.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
alias_database = hash:/etc/aliases
|
|
alias_database = hash:/etc/mail/aliases
|
|
.fi
|
|
.ad
|
|
.SH alias_maps (default: see "postconf \-d" output)
|
|
Optional lookup tables that are searched only with an email address
|
|
localpart (no domain) and that apply only to \fBlocal\fR(8) recipients;
|
|
this is unlike virtual_alias_maps that are often searched with a
|
|
full email address (including domain) and that apply to all recipients:
|
|
\fBlocal\fR(8), virtual, and remote.
|
|
The alias_maps table format and lookups are documented in \fBaliases\fR(5).
|
|
For an overview of Postfix address manipulations see the
|
|
ADDRESS_REWRITING_README document.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
Note: these lookups are recursive.
|
|
.PP
|
|
The default list is system dependent. On systems with NIS, the
|
|
default is to search the local alias database, then the NIS alias
|
|
database.
|
|
.PP
|
|
If you change the alias database, run "\fBpostalias /etc/aliases\fR"
|
|
(or wherever your system stores the mail alias file), or simply
|
|
run "\fBnewaliases\fR" to build the necessary DBM or DB file.
|
|
.PP
|
|
The \fBlocal\fR(8) delivery agent disallows regular expression substitution
|
|
of $1 etc. in alias_maps, because that would open a security hole.
|
|
.PP
|
|
The \fBlocal\fR(8) delivery agent will silently ignore requests to use
|
|
the \fBproxymap\fR(8) server within alias_maps. Instead it will open the
|
|
table directly. Before Postfix version 2.2, the \fBlocal\fR(8) delivery
|
|
agent will terminate with a fatal error.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
alias_maps = hash:/etc/aliases, nis:mail.aliases
|
|
alias_maps = hash:/etc/aliases
|
|
.fi
|
|
.ad
|
|
.SH allow_mail_to_commands (default: alias, forward)
|
|
Restrict \fBlocal\fR(8) mail delivery to external commands. The default
|
|
is to disallow delivery to "|command" in :include: files (see
|
|
\fBaliases\fR(5) for the text that defines this terminology).
|
|
.PP
|
|
Specify zero or more of: \fBalias\fR, \fBforward\fR or \fBinclude\fR,
|
|
in order to allow commands in \fBaliases\fR(5), .forward files or in
|
|
:include: files, respectively.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
allow_mail_to_commands = alias,forward,include
|
|
.fi
|
|
.ad
|
|
.SH allow_mail_to_files (default: alias, forward)
|
|
Restrict \fBlocal\fR(8) mail delivery to external files. The default is
|
|
to disallow "/file/name" destinations in :include: files (see
|
|
\fBaliases\fR(5) for the text that defines this terminology).
|
|
.PP
|
|
Specify zero or more of: \fBalias\fR, \fBforward\fR or \fBinclude\fR,
|
|
in order to allow "/file/name" destinations in \fBaliases\fR(5), .forward
|
|
files and in :include: files, respectively.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
allow_mail_to_files = alias,forward,include
|
|
.fi
|
|
.ad
|
|
.SH allow_min_user (default: no)
|
|
Allow a sender or recipient address to have `\-' as the first
|
|
character. By
|
|
default, this is not allowed, to avoid accidents with software that
|
|
passes email addresses via the command line. Such software
|
|
would not be able to distinguish a malicious address from a
|
|
bona fide command\-line option. Although this can be prevented by
|
|
inserting a "\-\-" option terminator into the command line, this is
|
|
difficult to enforce consistently and globally.
|
|
.PP
|
|
As of Postfix version 2.5, this feature is implemented by
|
|
trivial\-\fBrewrite\fR(8). With earlier versions this feature was implemented
|
|
by \fBqmgr\fR(8) and was limited to recipient addresses only.
|
|
.SH allow_percent_hack (default: yes)
|
|
Enable the rewriting of the form "user%domain" to "user@domain".
|
|
This is enabled by default.
|
|
.PP
|
|
Note: as of Postfix version 2.2, message header address rewriting
|
|
happens only when one of the following conditions is true:
|
|
.IP \(bu
|
|
The message is received with the Postfix \fBsendmail\fR(1) command,
|
|
.IP \(bu
|
|
The message is received from a network client that matches
|
|
$local_header_rewrite_clients,
|
|
.IP \(bu
|
|
The message is received from the network, and the
|
|
remote_header_rewrite_domain parameter specifies a non\-empty value.
|
|
.br
|
|
.PP
|
|
To get the behavior before Postfix version 2.2, specify
|
|
"local_header_rewrite_clients = static:all".
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
allow_percent_hack = no
|
|
.fi
|
|
.ad
|
|
.SH allow_srv_lookup_fallback (default: no)
|
|
When SRV record lookup fails or no SRV record exists, fall back
|
|
to MX or IP address lookup as if SRV record lookup was not enabled.
|
|
.PP
|
|
This feature is available in Postfix 3.8 and later.
|
|
.SH allow_untrusted_routing (default: no)
|
|
Forward mail with sender\-specified routing (user[@%!]remote[@%!]site)
|
|
from untrusted clients to destinations matching $relay_domains.
|
|
.PP
|
|
By default, this feature is turned off. This closes a nasty open
|
|
relay loophole where a backup MX host can be tricked into forwarding
|
|
junk mail to a primary MX host which then spams it out to the world.
|
|
.PP
|
|
This parameter also controls if non\-local addresses with sender\-specified
|
|
routing can match Postfix access tables. By default, such addresses
|
|
cannot match Postfix access tables, because the address is ambiguous.
|
|
.SH alternate_config_directories (default: empty)
|
|
A list of non\-default Postfix configuration directories that may
|
|
be specified with "\-c config_directory" on the command line (in the
|
|
case of \fBsendmail\fR(1), with the "\-C" option), or via the MAIL_CONFIG
|
|
environment parameter.
|
|
.PP
|
|
This list must be specified in the default Postfix main.cf file,
|
|
and will be used by set\-gid Postfix commands such as \fBpostqueue\fR(1)
|
|
and \fBpostdrop\fR(1).
|
|
.PP
|
|
Specify absolute pathnames, separated by comma or space. Note: $name
|
|
expansion is not supported.
|
|
.SH always_add_missing_headers (default: no)
|
|
Always add (Resent\-) From:, To:, Date: or Message\-ID: headers
|
|
when not present. Postfix 2.6 and later add these headers only
|
|
when clients match the local_header_rewrite_clients parameter
|
|
setting. Earlier Postfix versions always add these headers; this
|
|
may break DKIM signatures that cover non\-existent headers.
|
|
The undisclosed_recipients_header parameter setting determines
|
|
whether a To: header will be added.
|
|
.SH always_bcc (default: empty)
|
|
Optional address that receives a "blind carbon copy" of each message
|
|
that is received by the Postfix mail system.
|
|
.PP
|
|
Note: with Postfix 2.3 and later the BCC address is added as if it
|
|
was specified with NOTIFY=NONE. The sender will not be notified
|
|
when the BCC address is undeliverable, as long as all down\-stream
|
|
software implements RFC 3461.
|
|
.PP
|
|
Note: with Postfix 2.2 and earlier the sender will be notified
|
|
when the BCC address is undeliverable.
|
|
.PP
|
|
Note: automatic BCC recipients are produced only for new mail.
|
|
To avoid mailer loops, automatic BCC recipients are not generated
|
|
after Postfix forwards mail internally, or after Postfix generates
|
|
mail itself.
|
|
.PP
|
|
Note: automatic BCC recipients are subject to address
|
|
canonicalization (add missing domain), canonical_maps, masquerade_domains,
|
|
and virtual_alias_maps.
|
|
.SH anvil_rate_time_unit (default: 60s)
|
|
The time unit over which client connection rates and other rates
|
|
are calculated.
|
|
.PP
|
|
This feature is implemented by the \fBanvil\fR(8) service which is available
|
|
in Postfix version 2.2 and later.
|
|
.PP
|
|
The default interval is relatively short. Because of the high
|
|
frequency of updates, the \fBanvil\fR(8) server uses volatile memory
|
|
only. Thus, information is lost whenever the process terminates.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH anvil_status_update_time (default: 600s)
|
|
How frequently the \fBanvil\fR(8) connection and rate limiting server
|
|
logs peak usage information.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH append_at_myorigin (default: yes)
|
|
With locally submitted mail, append the string "@$myorigin" to mail
|
|
addresses without domain information. With remotely submitted mail,
|
|
append the string "@$remote_header_rewrite_domain" instead.
|
|
.PP
|
|
Note 1: this feature is enabled by default and must not be turned off.
|
|
Postfix does not support domain\-less addresses.
|
|
.PP
|
|
Note 2: with Postfix version 2.2, message header address rewriting
|
|
happens only when one of the following conditions is true:
|
|
.IP \(bu
|
|
The message is received with the Postfix \fBsendmail\fR(1) command,
|
|
.IP \(bu
|
|
The message is received from a network client that matches
|
|
$local_header_rewrite_clients,
|
|
.IP \(bu
|
|
The message is received from the network, and the
|
|
remote_header_rewrite_domain parameter specifies a non\-empty value.
|
|
.br
|
|
.PP
|
|
To get the behavior before Postfix version 2.2, specify
|
|
"local_header_rewrite_clients = static:all".
|
|
.SH append_dot_mydomain (default: Postfix >= 3.0: no, Postfix < 3.0: yes)
|
|
With locally submitted mail, append the string ".$mydomain" to
|
|
addresses that have no ".domain" information. With remotely submitted
|
|
mail, append the string ".$remote_header_rewrite_domain"
|
|
instead.
|
|
.PP
|
|
Note 1: When disabled (Postfix 3.0 and later), users will not be
|
|
able to send mail to "user@partialdomainname" but will have to
|
|
specify full domain names instead.
|
|
.PP
|
|
Note 2: with Postfix version 2.2, message header address rewriting
|
|
happens only when one of the following conditions is true:
|
|
.IP \(bu
|
|
The message is received with the Postfix \fBsendmail\fR(1) command,
|
|
.IP \(bu
|
|
The message is received from a network client that matches
|
|
$local_header_rewrite_clients,
|
|
.IP \(bu
|
|
The message is received from the network, and the
|
|
remote_header_rewrite_domain parameter specifies a non\-empty value.
|
|
.br
|
|
.PP
|
|
To get the behavior before Postfix version 2.2, specify
|
|
"local_header_rewrite_clients = static:all".
|
|
.SH application_event_drain_time (default: 100s)
|
|
How long the \fBpostkick\fR(1) command waits for a request to enter the
|
|
Postfix daemon process input buffer before giving up.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH authorized_flush_users (default: static:anyone)
|
|
List of users who are authorized to flush the queue.
|
|
.PP
|
|
By default, all users are allowed to flush the queue. Access is
|
|
always granted if the invoking user is the super\-user or the
|
|
$mail_owner user. Otherwise, the real UID of the process is looked
|
|
up in the system password file, and access is granted only if the
|
|
corresponding login name is on the access list. The username
|
|
"unknown" is used for processes whose real UID is not found in the
|
|
password file.
|
|
.PP
|
|
Specify a list of user names, "/file/name" or "type:table" patterns,
|
|
separated by commas and/or whitespace. The list is matched left to
|
|
right, and the search stops on the first match. A "/file/name"
|
|
pattern is replaced
|
|
by its contents; a "type:table" lookup table is matched when a name
|
|
matches a lookup key (the lookup result is ignored). Continue long
|
|
lines by starting the next line with whitespace. Specify "!pattern"
|
|
to exclude a name from the list. The form "!/file/name" is supported
|
|
only in Postfix version 2.4 and later.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH authorized_mailq_users (default: static:anyone)
|
|
List of users who are authorized to view the queue.
|
|
.PP
|
|
By default, all users are allowed to view the queue. Access is
|
|
always granted if the invoking user is the super\-user or the
|
|
$mail_owner user. Otherwise, the real UID of the process is looked
|
|
up in the system password file, and access is granted only if the
|
|
corresponding login name is on the access list. The username
|
|
"unknown" is used for processes whose real UID is not found in the
|
|
password file.
|
|
.PP
|
|
Specify a list of user names, "/file/name" or "type:table" patterns,
|
|
separated by commas and/or whitespace. The list is matched left to
|
|
right, and the search stops on the first match. A "/file/name"
|
|
pattern is replaced
|
|
by its contents; a "type:table" lookup table is matched when a name
|
|
matches a lookup key (the lookup result is ignored). Continue long
|
|
lines by starting the next line with whitespace. Specify "!pattern"
|
|
to exclude a user name from the list. The form "!/file/name" is
|
|
supported only in Postfix version 2.4 and later.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH authorized_submit_users (default: static:anyone)
|
|
List of users who are authorized to submit mail with the \fBsendmail\fR(1)
|
|
command (and with the privileged \fBpostdrop\fR(1) helper command).
|
|
.PP
|
|
By default, all users are allowed to submit mail. Otherwise, the
|
|
real UID of the process is looked up in the system password file,
|
|
and access is granted only if the corresponding login name is on
|
|
the access list. The username "unknown" is used for processes
|
|
whose real UID is not found in the password file. To deny mail
|
|
submission access to all users specify an empty list.
|
|
.PP
|
|
Specify a list of user names, "/file/name" or "type:table" patterns,
|
|
separated by commas and/or whitespace. The list is matched left to right,
|
|
and the search stops on the first match. A "/file/name" pattern is
|
|
replaced by its contents;
|
|
a "type:table" lookup table is matched when a name matches a lookup key
|
|
(the lookup result is ignored). Continue long lines by starting the
|
|
next line with whitespace. Specify "!pattern" to exclude a user
|
|
name from the list. The form "!/file/name" is supported only in
|
|
Postfix version 2.4 and later.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
authorized_submit_users = !www, static:all
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH authorized_verp_clients (default: $mynetworks)
|
|
What remote SMTP clients are allowed to specify the XVERP command.
|
|
This command requests that mail be delivered one recipient at a
|
|
time with a per recipient return address.
|
|
.PP
|
|
By default, only trusted clients are allowed to specify XVERP.
|
|
.PP
|
|
This parameter was introduced with Postfix version 1.1. Postfix
|
|
version 2.1 renamed this parameter to smtpd_authorized_verp_clients
|
|
and changed the default to none.
|
|
.PP
|
|
Specify a list of network/netmask patterns, separated by commas
|
|
and/or whitespace. The mask specifies the number of bits in the
|
|
network part of a host address. You can also specify hostnames or
|
|
\&.domain names (the initial dot causes the domain to match any name
|
|
below it), "/file/name" or "type:table" patterns. A "/file/name"
|
|
pattern is replaced by its contents; a "type:table" lookup table
|
|
is matched when a table entry matches a lookup string (the lookup
|
|
result is ignored). Continue long lines by starting the next line
|
|
with whitespace. Specify "!pattern" to exclude an address or network
|
|
block from the list. The form "!/file/name" is supported only in
|
|
Postfix version 2.4 and later.
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the authorized_verp_clients value, and in files
|
|
specified with "/file/name". IP version 6 addresses contain the
|
|
":" character, and would otherwise be confused with a "type:table"
|
|
pattern.
|
|
.SH backwards_bounce_logfile_compatibility (default: yes)
|
|
Produce additional \fBbounce\fR(8) logfile records that can be read by
|
|
Postfix versions before 2.0. The current and more extensible "name =
|
|
value" format is needed in order to implement more sophisticated
|
|
functionality.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH berkeley_db_create_buffer_size (default: 16777216)
|
|
The per\-table I/O buffer size for programs that create Berkeley DB
|
|
hash or btree tables. Specify a byte count.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH berkeley_db_read_buffer_size (default: 131072)
|
|
The per\-table I/O buffer size for programs that read Berkeley DB
|
|
hash or btree tables. Specify a byte count.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH best_mx_transport (default: empty)
|
|
Where the Postfix SMTP client should deliver mail when it detects
|
|
a "mail loops back to myself" error condition. This happens when
|
|
the local MTA is the best SMTP mail exchanger for a destination
|
|
not listed in $mydestination, $inet_interfaces, $proxy_interfaces,
|
|
$virtual_alias_domains, or $virtual_mailbox_domains. By default,
|
|
the Postfix SMTP client returns such mail as undeliverable.
|
|
.PP
|
|
Specify, for example, "best_mx_transport = local" to pass the mail
|
|
from the Postfix SMTP client to the \fBlocal\fR(8) delivery agent. You
|
|
can specify
|
|
any message delivery "transport" or "transport:nexthop" that is
|
|
defined in the master.cf file. See the \fBtransport\fR(5) manual page
|
|
for the syntax and meaning of "transport" or "transport:nexthop".
|
|
.PP
|
|
However, this feature is expensive because it ties up a Postfix
|
|
SMTP client process while the \fBlocal\fR(8) delivery agent is doing its
|
|
work. It is more efficient (for Postfix) to list all hosted domains
|
|
in a table or database.
|
|
.SH biff (default: yes)
|
|
Whether or not to use the local biff service. This service sends
|
|
"new mail" notifications to users who have requested new mail
|
|
notification with the UNIX command "biff y".
|
|
.PP
|
|
For compatibility reasons this feature is on by default. On systems
|
|
with lots of interactive users, the biff service can be a performance
|
|
drain. Specify "biff = no" in main.cf to disable.
|
|
.SH body_checks (default: empty)
|
|
Optional lookup tables for content inspection as specified in
|
|
the \fBbody_checks\fR(5) manual page.
|
|
.PP
|
|
Note: with Postfix versions before 2.0, these rules inspect
|
|
all content after the primary message headers.
|
|
.SH body_checks_size_limit (default: 51200)
|
|
How much text in a message body segment (or attachment, if you
|
|
prefer to use that term) is subjected to body_checks inspection.
|
|
The amount of text is limited to avoid scanning huge attachments.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH bounce_notice_recipient (default: postmaster)
|
|
The recipient of postmaster notifications with the message headers
|
|
of mail that Postfix did not deliver and of SMTP conversation
|
|
transcripts of mail that Postfix did not receive. This feature is
|
|
enabled with the notify_classes parameter.
|
|
.SH bounce_queue_lifetime (default: 5d)
|
|
Consider a bounce message as undeliverable, when delivery fails
|
|
with a temporary error, and the time in the queue has reached the
|
|
bounce_queue_lifetime limit. By default, this limit is the same
|
|
as for regular mail.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
Specify 0 when mail delivery should be tried only once.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH bounce_service_name (default: bounce)
|
|
The name of the \fBbounce\fR(8) service. This service maintains a record
|
|
of failed delivery attempts and generates non\-delivery notifications.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH bounce_size_limit (default: 50000)
|
|
The maximal amount of original message text that is sent in a
|
|
non\-delivery notification. Specify a byte count. A message is
|
|
returned as either message/rfc822 (the complete original) or as
|
|
text/rfc822\-headers (the headers only). With Postfix version 2.4
|
|
and earlier, a message is always returned as message/rfc822 and is
|
|
truncated when it exceeds the size limit.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
If you increase this limit, then you should increase the
|
|
mime_nesting_limit value proportionally.
|
|
.IP \(bu
|
|
Be careful when making changes. Excessively large values
|
|
will result in the loss of non\-delivery notifications, when a bounce
|
|
message size exceeds a local or remote MTA's message size limit.
|
|
.br
|
|
.SH bounce_template_file (default: empty)
|
|
Pathname of a configuration file with bounce message templates.
|
|
These override the built\-in templates of delivery status notification
|
|
(DSN) messages for undeliverable mail, delayed mail, successful
|
|
delivery, or delivery verification. The \fBbounce\fR(5) manual page
|
|
describes how to edit and test template files.
|
|
.PP
|
|
Template message body text may contain $name references to
|
|
Postfix configuration parameters. The result of $name expansion can
|
|
be previewed with "\fBpostconf \-b \fIfile_name\fR\fR" before the file
|
|
is placed into the Postfix configuration directory.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH broken_sasl_auth_clients (default: no)
|
|
Enable interoperability with remote SMTP clients that implement an obsolete
|
|
version of the AUTH command (RFC 4954). Examples of such clients
|
|
are MicroSoft Outlook Express version 4 and MicroSoft Exchange
|
|
version 5.0.
|
|
.PP
|
|
Specify "broken_sasl_auth_clients = yes" to have Postfix advertise
|
|
AUTH support in a non\-standard way.
|
|
.SH canonical_classes (default: envelope_sender, envelope_recipient, header_sender, header_recipient)
|
|
What addresses are subject to canonical_maps address mapping.
|
|
By default, canonical_maps address mapping is applied to envelope
|
|
sender and recipient addresses, and to header sender and header
|
|
recipient addresses.
|
|
.PP
|
|
Specify one or more of: envelope_sender, envelope_recipient,
|
|
header_sender, header_recipient
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH canonical_maps (default: empty)
|
|
Optional address mapping lookup tables for message headers and
|
|
envelopes. The mapping is applied to both sender and recipient
|
|
addresses, in both envelopes and in headers, as controlled
|
|
with the canonical_classes parameter. This is typically used
|
|
to clean up dirty addresses from legacy mail systems, or to replace
|
|
login names by Firstname.Lastname. The table format and lookups
|
|
are documented in \fBcanonical\fR(5). For an overview of Postfix address
|
|
manipulations see the ADDRESS_REWRITING_README document.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
Note: these lookups are recursive.
|
|
.PP
|
|
If you use this feature, run "\fBpostmap /etc/postfix/canonical\fR" to
|
|
build the necessary DBM or DB file after every change. The changes
|
|
will become visible after a minute or so. Use "\fBpostfix reload\fR"
|
|
to eliminate the delay.
|
|
.PP
|
|
Note: with Postfix version 2.2, message header address mapping
|
|
happens only when message header address rewriting is enabled:
|
|
.IP \(bu
|
|
The message is received with the Postfix \fBsendmail\fR(1) command,
|
|
.IP \(bu
|
|
The message is received from a network client that matches
|
|
$local_header_rewrite_clients,
|
|
.IP \(bu
|
|
The message is received from the network, and the
|
|
remote_header_rewrite_domain parameter specifies a non\-empty value.
|
|
.br
|
|
.PP
|
|
To get the behavior before Postfix version 2.2, specify
|
|
"local_header_rewrite_clients = static:all".
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
canonical_maps = dbm:/etc/postfix/canonical
|
|
canonical_maps = hash:/etc/postfix/canonical
|
|
.fi
|
|
.ad
|
|
.SH cleanup_replace_stray_cr_lf (default: yes)
|
|
Replace each stray <CR> or <LF> character in message
|
|
content with a space character, to prevent outbound SMTP smuggling,
|
|
and to make the evaluation of Postfix\-added DKIM or other signatures
|
|
independent from how a remote mail server handles such characters.
|
|
.PP
|
|
SMTP does not allow such characters unless they are part of a
|
|
<CR><LF> sequence, and different mail systems handle
|
|
such stray characters in an implementation\-dependent manner. Stray
|
|
<CR> or <LF> characters could be used for outbound
|
|
SMTP smuggling, where an attacker uses a Postfix server to send
|
|
message content with a non\-standard End\-of\-DATA sequence that
|
|
triggers inbound SMTP smuggling at a remote SMTP server.
|
|
.PP
|
|
The replacement happens before all other content management,
|
|
and before Postfix may add a DKIM etc. signature; if the signature
|
|
were created first, the replacement could invalidate the signature.
|
|
.PP
|
|
In addition to preventing SMTP smuggling, replacing stray
|
|
<CR> or <LF> characters ensures that the result of
|
|
signature validation by later mail system will not depend on how
|
|
that mail system handles those stray characters in an
|
|
implementation\-dependent manner.
|
|
.PP
|
|
Note: this feature is disabled with "receive_override_options =
|
|
no_header_body_checks".
|
|
.PP
|
|
This feature is available in Postfix >= 3.9, 3.8.5, 3.7.10,
|
|
3.6.14, and 3.5.24.
|
|
.SH cleanup_service_name (default: cleanup)
|
|
The name of the \fBcleanup\fR(8) service. This service rewrites addresses
|
|
into the standard form, and performs \fBcanonical\fR(5) address mapping
|
|
and \fBvirtual\fR(5) aliasing.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH command_directory (default: see "postconf \-d" output)
|
|
The location of all postfix administrative commands.
|
|
.SH command_execution_directory (default: empty)
|
|
The \fBlocal\fR(8) delivery agent working directory for delivery to
|
|
external commands. Failure to change directory causes the delivery
|
|
to be deferred.
|
|
.PP
|
|
The command_execution_directory value is not subject to Postfix
|
|
configuration parameter $name expansion. Instead, the following
|
|
$name expansions are done on command_execution_directory before the
|
|
directory is used. Expansion happens in the context
|
|
of the delivery request. The result of $name expansion is filtered
|
|
with the character set that is specified with the
|
|
execution_directory_expansion_filter parameter.
|
|
.IP "\fB$user\fR"
|
|
The recipient's username.
|
|
.br
|
|
.IP "\fB$shell\fR"
|
|
The recipient's login shell pathname.
|
|
.br
|
|
.IP "\fB$home\fR"
|
|
The recipient's home directory.
|
|
.br
|
|
.IP "\fB$recipient\fR"
|
|
The full recipient address.
|
|
.br
|
|
.IP "\fB$extension\fR"
|
|
The optional recipient address extension.
|
|
.br
|
|
.IP "\fB$domain\fR"
|
|
The recipient domain.
|
|
.br
|
|
.IP "\fB$local\fR"
|
|
The entire recipient localpart.
|
|
.br
|
|
.IP "\fB$recipient_delimiter\fR"
|
|
The address extension delimiter that was found in the recipient
|
|
address (Postfix 2.11 and later), or the system\-wide recipient
|
|
address extension delimiter (Postfix 2.10 and earlier).
|
|
.br
|
|
.IP "\fB${name?value}\fR"
|
|
.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
|
|
.br
|
|
.IP "\fB${name:value}\fR"
|
|
.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is empty.
|
|
.br
|
|
.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
|
|
\fIvalue2\fR otherwise.
|
|
.br
|
|
.br
|
|
.PP
|
|
Instead of $name you can also specify ${name} or $(name).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH command_expansion_filter (default: see "postconf \-d" output)
|
|
Restrict the characters that the \fBlocal\fR(8) delivery agent allows in
|
|
$name expansions of $mailbox_command and $command_execution_directory.
|
|
Characters outside the
|
|
allowed set are replaced by underscores.
|
|
.SH command_time_limit (default: 1000s)
|
|
Time limit for delivery to external commands. This limit is used
|
|
by the \fBlocal\fR(8) delivery agent, and is the default time limit for
|
|
delivery by the \fBpipe\fR(8) delivery agent.
|
|
.PP
|
|
Note: if you set this time limit to a large value you must update the
|
|
global ipc_timeout parameter as well.
|
|
.SH compatibility_level (default: 0)
|
|
A safety net that causes Postfix to run with backwards\-compatible
|
|
default settings after an upgrade to a newer Postfix version.
|
|
.PP
|
|
With backwards compatibility turned on (the main.cf compatibility_level
|
|
value is less than the Postfix built\-in value), Postfix looks for
|
|
settings that are left at their implicit default value, and logs a
|
|
message when a backwards\-compatible default setting is required.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
using backwards\-compatible default setting \fIname=value\fR
|
|
to [accept a specific client request]
|
|
.sp
|
|
using backwards\-compatible default setting \fIname=value\fR
|
|
to [enable specific Postfix behavior]
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
See COMPATIBILITY_README for specific message details. If such
|
|
a message is logged in the context of a legitimate request, the
|
|
system administrator should make the backwards\-compatible setting
|
|
permanent in main.cf or master.cf, for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# \fBpostconf\fR \fIname=value\fR
|
|
# \fBpostfix reload\fR
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
When no more backwards\-compatible settings need to be made
|
|
permanent, the administrator should turn off backwards compatibility
|
|
by updating the compatibility_level setting in main.cf:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# \fBpostconf compatibility_level=\fIN\fR\fR
|
|
# \fBpostfix reload\fR
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
For \fIN\fR specify the number that is logged in your \fBpostfix\fR(1)
|
|
warning message:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
warning: To disable backwards compatibility use "postconf
|
|
compatibility_level=\fIN\fR" and "postfix reload"
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Starting with Postfix version 3.6, the compatibility level in
|
|
the above warning message is the Postfix version that introduced
|
|
the last incompatible change. The level is formatted as
|
|
\fImajor.minor.patch\fR, where \fIpatch\fR is usually omitted and
|
|
defaults to zero. Earlier compatibility levels are 0, 1 and 2.
|
|
.PP
|
|
NOTE: this also introduces support for the "<level",
|
|
"<=level", and other operators to compare compatibility levels.
|
|
With the standard operators "<", "<=", etc., compatibility
|
|
level "3.10" would be smaller than "3.9" which is undesirable.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH config_directory (default: see "postconf \-d" output)
|
|
The default location of the Postfix main.cf and master.cf
|
|
configuration files. This can be overruled via the following
|
|
mechanisms:
|
|
.IP \(bu
|
|
The MAIL_CONFIG environment variable (daemon processes
|
|
and commands).
|
|
.IP \(bu
|
|
The "\-c" command\-line option (commands only).
|
|
.br
|
|
.PP
|
|
With Postfix commands that run with set\-gid privileges, a
|
|
config_directory override either requires root privileges, or it
|
|
requires that the directory is listed with the alternate_config_directories
|
|
parameter in the default main.cf file.
|
|
.SH confirm_delay_cleared (default: no)
|
|
After sending a "your message is delayed" notification, inform
|
|
the sender when the delay clears up. This can result in a sudden
|
|
burst of notifications at the end of a prolonged network outage,
|
|
and is therefore disabled by default.
|
|
.PP
|
|
See also: delay_warning_time.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH connection_cache_protocol_timeout (default: 5s)
|
|
Time limit for connection cache connect, send or receive
|
|
operations. The time limit is enforced in the client.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH connection_cache_service_name (default: scache)
|
|
The name of the \fBscache\fR(8) connection cache service. This service
|
|
maintains a limited pool of cached sessions.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH connection_cache_status_update_time (default: 600s)
|
|
How frequently the \fBscache\fR(8) server logs usage statistics with
|
|
connection cache hit and miss rates for logical destinations and for
|
|
physical endpoints.
|
|
.SH connection_cache_ttl_limit (default: 2s)
|
|
The maximal time\-to\-live value that the \fBscache\fR(8) connection
|
|
cache server
|
|
allows. Requests that specify a larger TTL will be stored with the
|
|
maximum allowed TTL. The purpose of this additional control is to
|
|
protect the infrastructure against careless people. The cache TTL
|
|
is already bounded by $max_idle.
|
|
.SH content_filter (default: empty)
|
|
After the message is queued, send the entire message to the
|
|
specified \fItransport:destination\fR. The \fItransport\fR name
|
|
specifies the first field of a mail delivery agent definition in
|
|
master.cf; the syntax of the next\-hop \fIdestination\fR is described
|
|
in the manual page of the corresponding delivery agent. More
|
|
information about external content filters is in the Postfix
|
|
FILTER_README file.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
This setting has lower precedence than a FILTER action
|
|
that is specified in an \fBaccess\fR(5), \fBheader_checks\fR(5) or \fBbody_checks\fR(5)
|
|
table.
|
|
.IP \(bu
|
|
The meaning of an empty next\-hop filter \fIdestination\fR
|
|
is version dependent. Postfix 2.7 and later will use the recipient
|
|
domain; earlier versions will use $myhostname. Specify
|
|
"default_filter_nexthop = $myhostname" for compatibility with Postfix
|
|
2.6 or earlier, or specify a content_filter value with an explicit
|
|
next\-hop \fIdestination\fR.
|
|
.br
|
|
.SH cyrus_sasl_config_path (default: empty)
|
|
Search path for Cyrus SASL application configuration files,
|
|
currently used only to locate the $smtpd_sasl_path.conf file.
|
|
Specify zero or more directories separated by a colon character,
|
|
or an empty value to use Cyrus SASL's built\-in search path.
|
|
.PP
|
|
Note: some Debian\-based Postfix distributions ignore the
|
|
"cyrus_sasl_config_path" parameter setting, and force Postfix to
|
|
open the file <code>/etc/postfix/sasl/smtpd.conf</code>.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later when compiled
|
|
with Cyrus SASL 2.1.22 or later.
|
|
.SH daemon_directory (default: see "postconf \-d" output)
|
|
The directory with Postfix support programs and daemon programs.
|
|
These should not be invoked directly by humans. The directory must
|
|
be owned by root.
|
|
.SH daemon_table_open_error_is_fatal (default: no)
|
|
How a Postfix daemon process handles errors while opening lookup
|
|
tables: gradual degradation or immediate termination.
|
|
.IP "\fB no \fR (default)"
|
|
Gradual degradation: a
|
|
daemon process logs a message of type "error" and continues execution
|
|
with reduced functionality. Features that do not depend on the
|
|
unavailable table will work normally, while features that depend
|
|
on the table will result in a type "warning" message.
|
|
.br
|
|
When
|
|
the notify_classes parameter value contains the "data" class, the
|
|
Postfix SMTP server and client will report transcripts of sessions
|
|
with an error because a table is unavailable.
|
|
.br
|
|
.IP "\fB yes \fR (historical behavior)"
|
|
Immediate
|
|
termination: a daemon process logs a type "fatal" message and
|
|
terminates immediately. This option reduces the number of possible
|
|
code paths through Postfix, and may therefore be slightly more
|
|
secure than the default.
|
|
.br
|
|
.br
|
|
.PP
|
|
For the sake of sanity, the number of type "error" messages is
|
|
limited to 13 over the lifetime of a daemon process.
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH daemon_timeout (default: 18000s)
|
|
How much time a Postfix daemon process may take to handle a
|
|
request before it is terminated by a built\-in watchdog timer.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH data_directory (default: see "postconf \-d" output)
|
|
The directory with Postfix\-writable data files (for example:
|
|
caches, pseudo\-random numbers). This directory must be owned by
|
|
the mail_owner account, and must not be shared with non\-Postfix
|
|
software.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH debug_peer_level (default: 2)
|
|
The increment in verbose logging level when a nexthop destination,
|
|
remote client or server name or network address matches a pattern
|
|
given with the debug_peer_list parameter.
|
|
.PP
|
|
Per\-nexthop debug logging is available in Postfix 3.6 and later.
|
|
.SH debug_peer_list (default: empty)
|
|
Optional list of nexthop destination, remote client or server
|
|
name or network address patterns that, if matched, cause the verbose
|
|
logging level to increase by the amount specified in $debug_peer_level.
|
|
.PP
|
|
Per\-nexthop debug logging is available in Postfix 3.6 and later.
|
|
.PP
|
|
Specify domain names, network/netmask patterns, "/file/name"
|
|
patterns or "type:table" lookup tables. The right\-hand side result
|
|
from "type:table" lookups is ignored.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "debug_peer_list" in the parent_domain_matches_subdomains
|
|
parameter value.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
debug_peer_list = 127.0.0.1
|
|
debug_peer_list = example.com
|
|
.fi
|
|
.ad
|
|
.SH debugger_command (default: empty)
|
|
The external command to execute when a Postfix daemon program is
|
|
invoked with the \-D option.
|
|
.PP
|
|
Use "command .. & sleep 5" so that the debugger can attach before
|
|
the process marches on. If you use an X\-based debugger, be sure to
|
|
set up your XAUTHORITY environment variable before starting Postfix.
|
|
.PP
|
|
Note: the command is subject to $name expansion, before it is
|
|
passed to the default command interpreter. Specify "$$" to
|
|
produce a single "$" character.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
debugger_command =
|
|
PATH=/usr/bin:/usr/X11R6/bin
|
|
ddd $daemon_directory/$process_name $process_id & sleep 5
|
|
.fi
|
|
.ad
|
|
.SH default_database_type (default: see "postconf \-d" output)
|
|
The default database type for use in \fBnewaliases\fR(1), \fBpostalias\fR(1)
|
|
and \fBpostmap\fR(1) commands. On many UNIX systems the default type is
|
|
either \fBdbm\fR or \fBhash\fR. The default setting is frozen
|
|
when the Postfix system is built.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
default_database_type = hash
|
|
default_database_type = dbm
|
|
.fi
|
|
.ad
|
|
.SH default_delivery_slot_cost (default: 5)
|
|
How often the Postfix queue manager's scheduler is allowed to
|
|
preempt delivery of one message with another.
|
|
.PP
|
|
Each transport maintains a so\-called "available delivery slot counter"
|
|
for each message. One message can be preempted by another one when
|
|
the other message can be delivered using no more delivery slots
|
|
(i.e., invocations of delivery agents) than the current message
|
|
counter has accumulated (or will eventually accumulate \- see about
|
|
slot loans below). This parameter controls how often the counter is
|
|
incremented \- it happens after each default_delivery_slot_cost
|
|
recipients have been delivered.
|
|
.PP
|
|
The cost of 0 is used to disable the preempting scheduling completely.
|
|
The minimum value the scheduling algorithm can use is 2 \- use it
|
|
if you want to maximize the message throughput rate. Although there
|
|
is no maximum, it doesn't make much sense to use values above say
|
|
50.
|
|
.PP
|
|
The only reason why the value of 2 is not the default is the way
|
|
this parameter affects the delivery of mailing\-list mail. In the
|
|
worst case, delivery can take somewhere between (cost+1/cost)
|
|
and (cost/cost\-1) times more than if the preemptive scheduler was
|
|
disabled. The default value of 5 turns out to provide reasonable
|
|
message response times while making sure the mailing\-list deliveries
|
|
are not extended by more than 20\-25 percent even in the worst case.
|
|
.PP
|
|
Use \fItransport\fR_delivery_slot_cost to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
default_delivery_slot_cost = 0
|
|
default_delivery_slot_cost = 2
|
|
.fi
|
|
.ad
|
|
.SH default_delivery_slot_discount (default: 50)
|
|
The default value for transport\-specific _delivery_slot_discount
|
|
settings.
|
|
.PP
|
|
This parameter speeds up the moment when a message preemption can
|
|
happen. Instead of waiting until the full amount of delivery slots
|
|
required is available, the preemption can happen when
|
|
\fItransport\fR_delivery_slot_discount percent of the required amount
|
|
plus \fItransport\fR_delivery_slot_loan still remains to be accumulated.
|
|
Note that the full amount will still have to be accumulated before
|
|
another preemption can take place later.
|
|
.PP
|
|
Use \fItransport\fR_delivery_slot_discount to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_delivery_slot_loan (default: 3)
|
|
The default value for transport\-specific _delivery_slot_loan
|
|
settings.
|
|
.PP
|
|
This parameter speeds up the moment when a message preemption can
|
|
happen. Instead of waiting until the full amount of delivery slots
|
|
required is available, the preemption can happen when
|
|
transport_delivery_slot_discount percent of the required amount
|
|
plus transport_delivery_slot_loan still remains to be accumulated.
|
|
Note that the full amount will still have to be accumulated before
|
|
another preemption can take place later.
|
|
.PP
|
|
Use \fItransport\fR_delivery_slot_loan to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_delivery_status_filter (default: empty)
|
|
Optional filter in Postfix delivery agents, to replace the
|
|
delivery status code or explanatory text of successful or unsuccessful
|
|
deliveries. This allows the replacement of a temporary error status
|
|
code (4.X.X) with a permanent error status code (5.X.X) or vice
|
|
versa, but does not allow
|
|
the replacement of a successful status code (2.X.X) with an
|
|
unsuccessful status code (4.X.X or 5.X.X) or vice versa.
|
|
.PP
|
|
Note: the (smtp|lmtp)_delivery_status_filter is applied only
|
|
once per recipient: when delivery is successful, when delivery is
|
|
rejected with 5XX, or when there are no more alternate MX or A
|
|
destinations. Use smtp_reply_filter or lmtp_reply_filter to inspect
|
|
responses for all delivery attempts.
|
|
.PP
|
|
The following parameters can be used to implement a filter for
|
|
specific delivery agents: lmtp_delivery_status_filter,
|
|
local_delivery_status_filter, pipe_delivery_status_filter,
|
|
smtp_delivery_status_filter or virtual_delivery_status_filter. These
|
|
parameters support the same filter syntax as described here.
|
|
.PP
|
|
Specify zero or more "type:table" lookup table names, separated
|
|
by comma or whitespace. For each successful or unsuccessful delivery
|
|
to a recipient, the tables are queried in the specified order with
|
|
one line of text that is structured as follows:
|
|
.sp
|
|
.in +4
|
|
enhanced\-status\-code SPACE explanatory\-text
|
|
.in -4
|
|
.PP
|
|
The first table match wins. The lookup result must have the
|
|
same structure as the query, a successful status code (2.X.X) must
|
|
be replaced with a successful status code, an unsuccessful status
|
|
code (4.X.X or 5.X.X) must be replaced with an unsuccessful status
|
|
code, and the explanatory text field must be non\-empty. Other results
|
|
will result in a warning.
|
|
.PP
|
|
Example 1: convert specific soft TLS errors into hard errors,
|
|
by overriding the first number in the enhanced status code.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_delivery_status_filter = pcre:/etc/postfix/smtp_dsn_filter
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/smtp_dsn_filter:
|
|
/^4(\e.\ed+\e.\ed+ TLS is required, but host \eS+ refused to start TLS: .+)/
|
|
5$1
|
|
/^4(\e.\ed+\e.\ed+ TLS is required, but was not offered by host .+)/
|
|
5$1
|
|
# Do not change the following into hard bounces. They may
|
|
# result from a local configuration problem.
|
|
# 4.\ed+.\ed+ TLS is required, but our TLS engine is unavailable
|
|
# 4.\ed+.\ed+ TLS is required, but unavailable
|
|
# 4.\ed+.\ed+ Cannot start TLS: handshake failure
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Example 2: censor the per\-recipient delivery status text so
|
|
that it does not reveal the destination command or filename
|
|
when a remote sender requests confirmation of successful delivery.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
local_delivery_status_filter = pcre:/etc/postfix/local_dsn_filter
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/local_dsn_filter:
|
|
/^(2\eS+ delivered to file).+/ $1
|
|
/^(2\eS+ delivered to command).+/ $1
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
This feature will NOT override the soft_bounce safety net.
|
|
.IP \(bu
|
|
This feature will change the enhanced status code and text
|
|
that is logged to the maillog file, and that is reported to the
|
|
sender in delivery confirmation or non\-delivery notifications.
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH default_destination_concurrency_failed_cohort_limit (default: 1)
|
|
How many pseudo\-cohorts must suffer connection or handshake
|
|
failure before a specific destination is considered unavailable
|
|
(and further delivery is suspended). Specify zero to disable this
|
|
feature. A destination's pseudo\-cohort failure count is reset each
|
|
time a delivery completes without connection or handshake failure
|
|
for that specific destination.
|
|
.PP
|
|
A pseudo\-cohort is the number of deliveries equal to a destination's
|
|
delivery concurrency.
|
|
.PP
|
|
Use \fItransport\fR_destination_concurrency_failed_cohort_limit to specify
|
|
a transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.PP
|
|
This feature is available in Postfix 2.5. The default setting
|
|
is compatible with earlier Postfix versions.
|
|
.SH default_destination_concurrency_limit (default: 20)
|
|
The default maximal number of parallel deliveries to the same
|
|
destination. This is the default limit for delivery via the \fBlmtp\fR(8),
|
|
\fBpipe\fR(8), \fBsmtp\fR(8) and \fBvirtual\fR(8) delivery agents.
|
|
With a per\-destination recipient limit > 1, a destination is a domain,
|
|
otherwise it is a recipient.
|
|
.PP
|
|
Use \fItransport\fR_destination_concurrency_limit to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_destination_concurrency_negative_feedback (default: 1)
|
|
The per\-destination amount of delivery concurrency negative
|
|
feedback, after a delivery completes with a connection or handshake
|
|
failure. Feedback values are in the range 0..1 inclusive. With
|
|
negative feedback, concurrency is decremented at the beginning of
|
|
a sequence of length 1/feedback. This is unlike positive feedback,
|
|
where concurrency is incremented at the end of a sequence of length
|
|
1/feedback.
|
|
.PP
|
|
As of Postfix version 2.5, negative feedback cannot reduce
|
|
delivery concurrency to zero. Instead, a destination is marked
|
|
dead (further delivery suspended) after the failed pseudo\-cohort
|
|
count reaches $default_destination_concurrency_failed_cohort_limit
|
|
(or $\fItransport\fR_destination_concurrency_failed_cohort_limit).
|
|
To make the scheduler completely immune to connection or handshake
|
|
failures, specify a zero feedback value and a zero failed pseudo\-cohort
|
|
limit.
|
|
.PP
|
|
Specify one of the following forms:
|
|
.IP "\fB\fInumber\fR \fR"
|
|
.IP "\fB\fInumber\fR / \fInumber\fR \fR"
|
|
Constant feedback. The value must be in the range 0..1 inclusive.
|
|
The default setting of "1" is compatible with Postfix versions
|
|
before 2.5, where a destination's delivery concurrency is throttled
|
|
down to zero (and further delivery suspended) after a single failed
|
|
pseudo\-cohort.
|
|
.br
|
|
.IP "\fB\fInumber\fR / concurrency \fR"
|
|
Variable feedback of "\fInumber\fR / (delivery concurrency)".
|
|
The \fInumber\fR must be in the range 0..1 inclusive. With
|
|
\fInumber\fR equal to "1", a destination's delivery concurrency
|
|
is decremented by 1 after each failed pseudo\-cohort.
|
|
.br
|
|
.br
|
|
.PP
|
|
A pseudo\-cohort is the number of deliveries equal to a destination's
|
|
delivery concurrency.
|
|
.PP
|
|
Use \fItransport\fR_destination_concurrency_negative_feedback
|
|
to specify a transport\-specific override, where \fItransport\fR
|
|
is the master.cf
|
|
name of the message delivery transport.
|
|
.PP
|
|
This feature is available in Postfix 2.5. The default setting
|
|
is compatible with earlier Postfix versions.
|
|
.SH default_destination_concurrency_positive_feedback (default: 1)
|
|
The per\-destination amount of delivery concurrency positive
|
|
feedback, after a delivery completes without connection or handshake
|
|
failure. Feedback values are in the range 0..1 inclusive. The
|
|
concurrency increases until it reaches the per\-destination maximal
|
|
concurrency limit. With positive feedback, concurrency is incremented
|
|
at the end of a sequence with length 1/feedback. This is unlike
|
|
negative feedback, where concurrency is decremented at the start
|
|
of a sequence of length 1/feedback.
|
|
.PP
|
|
Specify one of the following forms:
|
|
.IP "\fB\fInumber\fR \fR"
|
|
.IP "\fB\fInumber\fR / \fInumber\fR \fR"
|
|
Constant feedback. The value must be in the range 0..1
|
|
inclusive. The default setting of "1" is compatible with Postfix
|
|
versions before 2.5, where a destination's delivery concurrency
|
|
doubles after each successful pseudo\-cohort.
|
|
.br
|
|
.IP "\fB\fInumber\fR / concurrency \fR"
|
|
Variable feedback of "\fInumber\fR / (delivery concurrency)".
|
|
The \fInumber\fR must be in the range 0..1 inclusive. With
|
|
\fInumber\fR equal to "1", a destination's delivery concurrency
|
|
is incremented by 1 after each successful pseudo\-cohort.
|
|
.br
|
|
.br
|
|
.PP
|
|
A pseudo\-cohort is the number of deliveries equal to a destination's
|
|
delivery concurrency.
|
|
.PP
|
|
Use \fItransport\fR_destination_concurrency_positive_feedback
|
|
to specify a transport\-specific override, where \fItransport\fR
|
|
is the master.cf name of the message delivery transport.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH default_destination_rate_delay (default: 0s)
|
|
The default amount of delay that is inserted between individual
|
|
message deliveries to the same destination and over the same message
|
|
delivery transport. Specify a non\-zero value to rate\-limit those
|
|
message deliveries to at most one per $default_destination_rate_delay.
|
|
.PP
|
|
The resulting behavior depends on the value of the corresponding
|
|
per\-destination recipient limit.
|
|
.IP \(bu
|
|
With a corresponding per\-destination recipient limit >
|
|
1, the rate delay specifies the time between deliveries to the
|
|
\fIsame domain\fR. Different domains are delivered in parallel,
|
|
subject to the process limits specified in master.cf.
|
|
.IP \(bu
|
|
With a corresponding per\-destination recipient limit equal
|
|
to 1, the rate delay specifies the time between deliveries to the
|
|
\fIsame recipient\fR. Different recipients are delivered in
|
|
parallel, subject to the process limits specified in master.cf.
|
|
.br
|
|
.PP
|
|
To enable the delay, specify a non\-zero time value (an integral
|
|
value plus an optional one\-letter suffix that specifies the time
|
|
unit).
|
|
.PP
|
|
Time units: s (seconds), m (minutes), h (hours), d (days), w
|
|
(weeks). The default time unit is s (seconds).
|
|
.PP
|
|
NOTE: the delay is enforced by the queue manager. The delay
|
|
timer state does not survive "\fBpostfix reload\fR" or "\fBpostfix
|
|
stop\fR".
|
|
.PP
|
|
Use \fItransport\fR_destination_rate_delay to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.PP
|
|
NOTE: with a non\-zero _destination_rate_delay, specify a
|
|
\fItransport\fR_destination_concurrency_failed_cohort_limit of 10
|
|
or more to prevent Postfix from deferring all mail for the same
|
|
destination after only one connection or handshake error.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH default_destination_recipient_limit (default: 50)
|
|
The default maximal number of recipients per message delivery.
|
|
This is the default limit for delivery via the \fBlmtp\fR(8), \fBpipe\fR(8),
|
|
\fBsmtp\fR(8) and \fBvirtual\fR(8) delivery agents.
|
|
.PP
|
|
Setting this parameter to a value of 1 affects email deliveries
|
|
as follows:
|
|
.IP \(bu
|
|
It changes the meaning of the corresponding per\-destination
|
|
concurrency limit, from concurrency of deliveries to the \fIsame
|
|
domain\fR into concurrency of deliveries to the \fIsame recipient\fR.
|
|
Different recipients are delivered in parallel, subject to the
|
|
process limits specified in master.cf.
|
|
.IP \(bu
|
|
It changes the meaning of the corresponding per\-destination
|
|
rate delay, from the delay between deliveries to the \fIsame
|
|
domain\fR into the delay between deliveries to the \fIsame
|
|
recipient\fR. Again, different recipients are delivered in parallel,
|
|
subject to the process limits specified in master.cf.
|
|
.IP \(bu
|
|
It changes the meaning of other corresponding per\-destination
|
|
settings in a similar manner, from settings for delivery to the
|
|
\fIsame domain\fR into settings for delivery to the \fIsame
|
|
recipient\fR.
|
|
.br
|
|
.PP
|
|
Use \fItransport\fR_destination_recipient_limit to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_extra_recipient_limit (default: 1000)
|
|
The default value for the extra per\-transport limit imposed on the
|
|
number of in\-memory recipients. This extra recipient space is
|
|
reserved for the cases when the Postfix queue manager's scheduler
|
|
preempts one message with another and suddenly needs some extra
|
|
recipient slots for the chosen message in order to avoid performance
|
|
degradation.
|
|
.PP
|
|
Use \fItransport\fR_extra_recipient_limit to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_filter_nexthop (default: empty)
|
|
When a content_filter or FILTER request specifies no explicit
|
|
next\-hop destination, use $default_filter_nexthop instead; when
|
|
that value is empty, use the domain in the recipient address.
|
|
Specify "default_filter_nexthop = $myhostname" for compatibility
|
|
with Postfix version 2.6 and earlier, or specify an explicit next\-hop
|
|
destination with each content_filter value or FILTER action.
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH default_minimum_delivery_slots (default: 3)
|
|
How many recipients a message must have in order to invoke the
|
|
Postfix queue manager's scheduling algorithm at all. Messages
|
|
which would never accumulate at least this many delivery slots
|
|
(subject to slot cost parameter as well) are never preempted.
|
|
.PP
|
|
Use \fItransport\fR_minimum_delivery_slots to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_privs (default: nobody)
|
|
The default rights used by the \fBlocal\fR(8) delivery agent for delivery
|
|
to an external file or command. These rights are used when delivery
|
|
is requested from an \fBaliases\fR(5) file that is owned by \fBroot\fR, or
|
|
when delivery is done on behalf of \fBroot\fR. \fBDO NOT SPECIFY A
|
|
PRIVILEGED USER OR THE POSTFIX OWNER\fR.
|
|
.SH default_process_limit (default: 100)
|
|
The default maximal number of Postfix child processes that provide
|
|
a given service. This limit can be overruled for specific services
|
|
in the master.cf file.
|
|
.SH default_rbl_reply (default: see "postconf \-d" output)
|
|
The default Postfix SMTP server response template for a request that is
|
|
rejected by an RBL\-based restriction. This template can be overruled
|
|
by specific entries in the optional rbl_reply_maps lookup table.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.PP
|
|
The template does not support Postfix configuration parameter $name
|
|
substitution. Instead, it supports exactly one level of $name
|
|
substitution for the following attributes:
|
|
.IP "\fB$client\fR"
|
|
The client hostname and IP address, formatted as name[address].
|
|
.br
|
|
.IP "\fB$client_address\fR"
|
|
The client IP address.
|
|
.br
|
|
.IP "\fB$client_name\fR"
|
|
The client hostname or "unknown". See reject_unknown_client_hostname
|
|
for more details.
|
|
.br
|
|
.IP "\fB$reverse_client_name\fR"
|
|
The client hostname from address\->name lookup, or "unknown".
|
|
See reject_unknown_reverse_client_hostname for more details.
|
|
.br
|
|
.IP "\fB$helo_name\fR"
|
|
The hostname given in HELO or EHLO command or empty string.
|
|
.br
|
|
.IP "\fB$rbl_class\fR"
|
|
The denylisted entity type: Client host, Helo command, Sender
|
|
address, or Recipient address.
|
|
.br
|
|
.IP "\fB$rbl_code\fR"
|
|
The numerical SMTP response code, as specified with the
|
|
maps_rbl_reject_code configuration parameter. Note: The numerical
|
|
SMTP response code is required, and must appear at the start of the
|
|
reply. With Postfix version 2.3 and later this information may be followed
|
|
by an RFC 3463 enhanced status code.
|
|
.br
|
|
.IP "\fB$rbl_domain\fR"
|
|
The RBL domain (without any \fI=address\-filter\fR) where
|
|
$rbl_what is denylisted.
|
|
.br
|
|
.IP "\fB$rbl_reason\fR"
|
|
The reason why $rbl_what is denylisted, or an empty string.
|
|
.br
|
|
.IP "\fB$rbl_what\fR"
|
|
The entity that is denylisted (an IP address, a hostname, a domain
|
|
name, or an email address whose domain was denylisted).
|
|
.br
|
|
.IP "\fB$recipient\fR"
|
|
The recipient address or <> in case of the null address.
|
|
.br
|
|
.IP "\fB$recipient_domain\fR"
|
|
The recipient domain or empty string.
|
|
.br
|
|
.IP "\fB$recipient_name\fR"
|
|
The recipient address localpart or <> in case of null address.
|
|
.br
|
|
.IP "\fB$sender\fR"
|
|
The sender address or <> in case of the null address.
|
|
.br
|
|
.IP "\fB$sender_domain\fR"
|
|
The sender domain or empty string.
|
|
.br
|
|
.IP "\fB$sender_name\fR"
|
|
The sender address localpart or <> in case of the null address.
|
|
.br
|
|
.IP "\fB${name?value}\fR"
|
|
.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
|
|
.br
|
|
.IP "\fB${name:value}\fR"
|
|
.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is empty.
|
|
.br
|
|
.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
|
|
\fIvalue2\fR otherwise.
|
|
.br
|
|
.br
|
|
.PP
|
|
Instead of $name you can also specify ${name} or $(name).
|
|
.PP
|
|
Note: when an enhanced status code is specified in an RBL reply
|
|
template, it is subject to modification. The following transformations
|
|
are needed when the same RBL response template is used for client,
|
|
helo, sender, or recipient access restrictions.
|
|
.IP \(bu
|
|
When rejecting a sender address, the Postfix SMTP server
|
|
will transform a recipient DSN status (e.g., 4.1.1\-4.1.6) into the
|
|
corresponding sender DSN status, and vice versa.
|
|
.IP \(bu
|
|
When rejecting non\-address information (such as the HELO
|
|
command argument or the client hostname/address), the Postfix SMTP
|
|
server will transform a sender or recipient DSN status into a generic
|
|
non\-address DSN status (e.g., 4.0.0).
|
|
.br
|
|
.SH default_recipient_limit (default: 20000)
|
|
The default per\-transport upper limit on the number of in\-memory
|
|
recipients. These limits take priority over the global
|
|
qmgr_message_recipient_limit after the message has been assigned
|
|
to the respective transports. See also default_extra_recipient_limit
|
|
and qmgr_message_recipient_minimum.
|
|
.PP
|
|
Use \fItransport\fR_recipient_limit to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.SH default_recipient_refill_delay (default: 5s)
|
|
The default per\-transport maximum delay between refilling recipients.
|
|
When not all message recipients fit into memory at once, keep loading
|
|
more of them at least once every this many seconds. This is used to
|
|
make sure the recipients are refilled in a timely manner even when
|
|
$default_recipient_refill_limit is too high for too slow deliveries.
|
|
.PP
|
|
Use \fItransport\fR_recipient_refill_delay to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH default_recipient_refill_limit (default: 100)
|
|
The default per\-transport limit on the number of recipients refilled at
|
|
once. When not all message recipients fit into memory at once, keep
|
|
loading more of them in batches of at least this many at a time. See also
|
|
$default_recipient_refill_delay, which may result in recipient batches
|
|
lower than this when this limit is too high for too slow deliveries.
|
|
.PP
|
|
Use \fItransport\fR_recipient_refill_limit to specify a
|
|
transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport.
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH default_transport (default: smtp)
|
|
The default mail delivery transport and next\-hop destination for
|
|
the default domain class: recipient domains that do not match
|
|
$mydestination, $inet_interfaces,
|
|
$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
|
|
or $relay_domains. This information will not be used when
|
|
sender_dependent_default_transport_maps returns a result, and may
|
|
be overridden with the \fBtransport\fR(5) table.
|
|
.PP
|
|
For recipient domains in the default domain class:
|
|
.IP \(bu
|
|
In order of decreasing precedence, the delivery transport
|
|
is taken from 1) $transport_maps, 2)
|
|
$sender_dependent_default_transport_maps or $default_transport.
|
|
.IP \(bu
|
|
In order of decreasing precedence, the nexthop destination
|
|
is taken from 1) $transport_maps, 2)
|
|
$sender_dependent_default_transport_maps or $default_transport, 3)
|
|
$sender_dependent_relayhost_maps or $relayhost or the recipient
|
|
domain.
|
|
.br
|
|
.PP
|
|
Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
|
|
is the name of a mail delivery transport defined in master.cf.
|
|
The \fI:nexthop\fR destination is optional; its syntax is documented
|
|
in the manual page of the corresponding delivery agent. In the case of
|
|
SMTP or LMTP, specify one or more destinations separated by comma or
|
|
whitespace (with Postfix 3.5 and later).
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
default_transport = uucp:relayhostname
|
|
.fi
|
|
.ad
|
|
.SH default_transport_rate_delay (default: 0s)
|
|
The default amount of delay that is inserted between individual
|
|
message deliveries over the same message delivery transport,
|
|
regardless of destination. Specify a non\-zero value to rate\-limit
|
|
those message deliveries to at most one per $default_transport_rate_delay.
|
|
.PP
|
|
Use \fItransport\fR_transport_rate_delay to specify a
|
|
transport\-specific override, where the initial \fItransport\fR is
|
|
the master.cf name of the message delivery transport.
|
|
.PP
|
|
Example: throttle outbound SMTP mail to at most 3 deliveries
|
|
per minute.
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_transport_rate_delay = 20s
|
|
.fi
|
|
.ad
|
|
.PP
|
|
To enable the delay, specify a non\-zero time value (an integral
|
|
value plus an optional one\-letter suffix that specifies the time
|
|
unit).
|
|
.PP
|
|
Time units: s (seconds), m (minutes), h (hours), d (days), w
|
|
(weeks). The default time unit is s (seconds).
|
|
.PP
|
|
NOTE: the delay is enforced by the queue manager.
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH default_verp_delimiters (default: +=)
|
|
The two default VERP delimiter characters. These are used when
|
|
no explicit delimiters are specified with the SMTP XVERP command
|
|
or with the "\fBsendmail \-XV\fR" command\-line option (Postfix 2.2
|
|
and earlier: \fB\-V\fR). Specify characters that are allowed by the
|
|
verp_delimiter_filter setting.
|
|
.PP
|
|
This feature is available in Postfix 1.1 and later.
|
|
.SH defer_code (default: 450)
|
|
The numerical Postfix SMTP server response code when a remote SMTP
|
|
client request is rejected by the "defer" restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH defer_service_name (default: defer)
|
|
The name of the defer service. This service is implemented by the
|
|
\fBbounce\fR(8) daemon and maintains a record
|
|
of failed delivery attempts and generates non\-delivery notifications.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH defer_transports (default: empty)
|
|
The names of message delivery transports that should not deliver mail
|
|
unless someone issues "\fBsendmail \-q\fR" or equivalent. Specify zero
|
|
or more mail delivery transport names that appear in the
|
|
first field of master.cf.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
defer_transports = smtp
|
|
.fi
|
|
.ad
|
|
.SH delay_logging_resolution_limit (default: 2)
|
|
The maximal number of digits after the decimal point when logging
|
|
delay values. Specify a number in the range 0..6.
|
|
.PP
|
|
To improve readability, delays are logged with only a limited
|
|
number of significant digits:
|
|
.IP \(bu
|
|
Delays >= 100s are rounded off to an integral number of
|
|
seconds.
|
|
.IP \(bu
|
|
Delays < 10^\-$delay_logging_resolution_limit are
|
|
rounded off to "0".
|
|
.IP \(bu
|
|
Other delays are rounded off to two significant digits, or
|
|
fewer if the result would exceed the delay_logging_resolution_limit.
|
|
.br
|
|
.PP
|
|
The format of the "delays=a/b/c/d" logging is as follows:
|
|
.IP \(bu
|
|
a = Time from message arrival to last active queue entry.
|
|
.IP \(bu
|
|
b = Time from last active queue entry to the beginning of
|
|
connection setup.
|
|
.IP \(bu
|
|
c = Time in connection setup. With SMTP, that is the time
|
|
before sending the MAIL FROM command: with a new connection, that
|
|
includes DNS lookups, and protocol handshakes with TCP, EHLO, and
|
|
STARTTLS; with a reused connection, that includes DNS lookups,
|
|
connection cache lookup by domain or IP address, and a liveness
|
|
probe with RSET.
|
|
.IP \(bu
|
|
d = Time in message transmission. With SMTP, that starts with
|
|
sending MAIL FROM.
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH delay_notice_recipient (default: postmaster)
|
|
The recipient of postmaster notifications with the message headers
|
|
of mail that cannot be delivered within $delay_warning_time time
|
|
units.
|
|
.PP
|
|
See also: delay_warning_time, notify_classes.
|
|
.SH delay_warning_time (default: 0h)
|
|
The time after which the sender receives a copy of the message
|
|
headers of mail that is still queued. The confirm_delay_cleared
|
|
parameter controls sender notification when the delay clears up.
|
|
.PP
|
|
To enable this feature, specify a non\-zero time value (an integral
|
|
value plus an optional one\-letter suffix that specifies the time
|
|
unit).
|
|
.PP
|
|
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is h (hours).
|
|
.PP
|
|
See also: delay_notice_recipient, notify_classes, confirm_delay_cleared.
|
|
.SH deliver_lock_attempts (default: 20)
|
|
The maximal number of attempts to acquire an exclusive lock on a
|
|
mailbox file or \fBbounce\fR(8) logfile.
|
|
.SH deliver_lock_delay (default: 1s)
|
|
The time between attempts to acquire an exclusive lock on a mailbox
|
|
file or \fBbounce\fR(8) logfile.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH destination_concurrency_feedback_debug (default: no)
|
|
Make the queue manager's feedback algorithm verbose for performance
|
|
analysis purposes.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH detect_8bit_encoding_header (default: yes)
|
|
Automatically detect 8BITMIME body content by looking at
|
|
Content\-Transfer\-Encoding: message headers; historically, this
|
|
behavior was hard\-coded to be "always on".
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH disable_dns_lookups (default: no)
|
|
Disable DNS lookups in the Postfix SMTP and LMTP clients. When
|
|
disabled, hosts are looked up with the getaddrinfo() system
|
|
library routine which normally also looks in /etc/hosts. As of
|
|
Postfix 2.11, this parameter is deprecated; use smtp_dns_support_level
|
|
instead.
|
|
.PP
|
|
DNS lookups are enabled by default.
|
|
.SH disable_mime_input_processing (default: no)
|
|
Turn off MIME processing while receiving mail. This means that no
|
|
special treatment is given to Content\-Type: message headers, and
|
|
that all text after the initial message headers is considered to
|
|
be part of the message body.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.PP
|
|
Mime input processing is enabled by default, and is needed in order
|
|
to recognize MIME headers in message content.
|
|
.SH disable_mime_output_conversion (default: no)
|
|
Disable the conversion of 8BITMIME format to 7BIT format. Mime
|
|
output conversion is needed when the destination does not advertise
|
|
8BITMIME support.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH disable_verp_bounces (default: no)
|
|
Disable sending one bounce report per recipient.
|
|
.PP
|
|
The default, one per recipient, is what ezmlm needs.
|
|
.PP
|
|
This feature is available in Postfix 1.1 and later.
|
|
.SH disable_vrfy_command (default: no)
|
|
Disable the SMTP VRFY command. This stops some techniques used to
|
|
harvest email addresses.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
disable_vrfy_command = no
|
|
.fi
|
|
.ad
|
|
.SH dns_ncache_ttl_fix_enable (default: no)
|
|
Enable a workaround for future libc incompatibility. The Postfix
|
|
implementation of RFC 2308 negative reply caching relies on the
|
|
promise that res_query() and res_search() invoke res_send(), which
|
|
returns the server response in an application buffer even if the
|
|
requested record does not exist. If this promise is broken, specify
|
|
"yes" to enable a workaround for DNS reputation lookups.
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH dnsblog_reply_delay (default: 0s)
|
|
A debugging aid to artificially delay DNS responses.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH dnsblog_service_name (default: dnsblog)
|
|
The name of the \fBdnsblog\fR(8) service entry in master.cf. This
|
|
service performs DNS allow/denylist lookups.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH dnssec_probe (default: ns:.)
|
|
The DNS query type (default: "ns") and DNS query name (default:
|
|
".") that Postfix may use to determine whether DNSSEC validation
|
|
is available.
|
|
.PP
|
|
Background: DNSSEC validation is needed for Postfix DANE support;
|
|
this ensures that Postfix receives TLSA records with secure TLS
|
|
server certificate info. When DNSSEC validation is unavailable,
|
|
mail deliveries using \fIopportunistic\fR DANE will not be protected
|
|
by server certificate info in TLSA records, and mail deliveries
|
|
using \fImandatory\fR DANE will not be made at all.
|
|
.PP
|
|
By default, a Postfix process will send a DNSSEC probe after
|
|
1) the process made a DNS query that requested DNSSEC validation,
|
|
2) the process did not receive a DNSSEC validated response to this
|
|
query or to an earlier query, and 3) the process did not already
|
|
send a DNSSEC probe.
|
|
.PP
|
|
When the DNSSEC probe has no response, or when the response is
|
|
not DNSSEC validated, Postfix logs a warning that DNSSEC validation
|
|
may be unavailable.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
warning: DNSSEC validation may be unavailable
|
|
warning: reason: dnssec_probe 'ns:.' received a response that is not DNSSEC validated
|
|
warning: reason: dnssec_probe 'ns:.' received no response: Server failure
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Possible reasons why DNSSEC validation may be unavailable:
|
|
.IP \(bu
|
|
The local /etc/resolv.conf file specifies a DNS resolver that
|
|
does not validate DNSSEC signatures (that's
|
|
$queue_directory/etc/resolv.conf when a Postfix daemon runs in a
|
|
chroot jail).
|
|
.IP \(bu
|
|
The local system library does not pass on the "DNSSEC validated"
|
|
bit to Postfix, or Postfix does not know how to ask the library to
|
|
do that.
|
|
.br
|
|
.PP
|
|
By default, the DNSSEC probe asks for the DNS root zone NS
|
|
records, because resolvers should always have that information
|
|
cached. If Postfix runs on a network where the DNS root zone is not
|
|
reachable, specify a different probe, or specify an empty dnssec_probe
|
|
value to disable the feature.
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later. It was backported
|
|
to Postfix versions 3.5.9, 3.4.19, 3.3.16. 3.2.21.
|
|
.SH dont_remove (default: 0)
|
|
Don't remove queue files and save them to the "saved" mail queue.
|
|
This is a debugging aid. To inspect the envelope information and
|
|
content of a Postfix queue file, use the \fBpostcat\fR(1) command.
|
|
.SH double_bounce_sender (default: double\-bounce)
|
|
The sender address of postmaster notifications that are generated
|
|
by the mail system. All mail to this address is silently discarded,
|
|
in order to terminate mail bounce loops.
|
|
.SH duplicate_filter_limit (default: 1000)
|
|
The maximal number of addresses remembered by the address
|
|
duplicate filter for \fBaliases\fR(5) or \fBvirtual\fR(5) alias expansion, or
|
|
for \fBshowq\fR(8) queue displays.
|
|
.SH empty_address_default_transport_maps_lookup_key (default: <>)
|
|
The sender_dependent_default_transport_maps search string that
|
|
will be used instead of the null sender address.
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH empty_address_local_login_sender_maps_lookup_key (default: <>)
|
|
The lookup key to be used in local_login_sender_maps tables, instead
|
|
of the null sender address.
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH empty_address_recipient (default: MAILER\-DAEMON)
|
|
The recipient of mail addressed to the null address. Postfix does
|
|
not accept such addresses in SMTP commands, but they may still be
|
|
created locally as the result of configuration or software error.
|
|
.SH empty_address_relayhost_maps_lookup_key (default: <>)
|
|
The sender_dependent_relayhost_maps search string that will be
|
|
used instead of the null sender address.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later. With
|
|
earlier versions, sender_dependent_relayhost_maps lookups were
|
|
skipped for the null sender address.
|
|
.SH enable_errors_to (default: no)
|
|
Report mail delivery errors to the address specified with the
|
|
non\-standard Errors\-To: message header, instead of the envelope
|
|
sender address (this feature is removed with Postfix version 2.2, is
|
|
turned off by default with Postfix version 2.1, and is always turned on
|
|
with older Postfix versions).
|
|
.SH enable_idna2003_compatibility (default: no)
|
|
Enable 'transitional' compatibility between IDNA2003 and IDNA2008,
|
|
when converting UTF\-8 domain names to/from the ASCII form that is
|
|
used for DNS lookups. Specify "yes" for compatibility with Postfix
|
|
<= 3.1 (not recommended). This affects the conversion of domain
|
|
names that contain for example the German sz and the Greek zeta.
|
|
See https://unicode.org/cldr/utility/idna.jsp for more examples.
|
|
.PP
|
|
This feature is available in Postfix 3.2 and later.
|
|
.SH enable_long_queue_ids (default: no)
|
|
Enable long, non\-repeating, queue IDs (queue file names). The
|
|
benefit of non\-repeating names is simpler logfile analysis and
|
|
easier queue migration (there is no need to run "postsuper" to
|
|
change queue file names that don't match their message file inode
|
|
number).
|
|
.PP
|
|
Note: see below for how to convert long queue file names to
|
|
Postfix <= 2.8.
|
|
.PP
|
|
Changing the parameter value to "yes" has the following effects:
|
|
.IP \(bu
|
|
Existing queue file names are not affected.
|
|
.IP \(bu
|
|
New queue files are created with names such as 3Pt2mN2VXxznjll.
|
|
These are encoded in a 52\-character alphabet that contains digits
|
|
(0\-9), upper\-case letters (B\-Z) and lower\-case letters (b\-z). For
|
|
safety reasons the vowels (AEIOUaeiou) are excluded from the alphabet.
|
|
The name format is: 6 or more characters for the time in seconds,
|
|
4 characters for the time in microseconds, the 'z'; the remainder
|
|
is the file inode number encoded in the first 51 characters of the
|
|
52\-character alphabet.
|
|
.IP \(bu
|
|
New messages have a Message\-ID header with
|
|
\fIqueueID\fR@\fImyhostname\fR.
|
|
.IP \(bu
|
|
The mailq (postqueue \-p) output has a wider Queue ID column.
|
|
The number of whitespace\-separated fields is not changed.
|
|
.IP \(bu
|
|
The hash_queue_depth algorithm uses the first characters
|
|
of the queue file creation time in microseconds, after conversion
|
|
into hexadecimal representation. This produces the same queue hashing
|
|
behavior as if the queue file name was created with "enable_long_queue_ids
|
|
= no".
|
|
.br
|
|
.PP
|
|
Changing the parameter value to "no" has the following effects:
|
|
.IP \(bu
|
|
Existing long queue file names are renamed to the short
|
|
form (while running "postfix reload" or "postsuper").
|
|
.IP \(bu
|
|
New queue files are created with names such as C3CD21F3E90
|
|
from a hexadecimal alphabet that contains digits (0\-9) and upper\-case
|
|
letters (A\-F). The name format is: 5 characters for the time in
|
|
microseconds; the remainder is the file inode number.
|
|
.IP \(bu
|
|
New messages have a Message\-ID header with
|
|
\fIYYYYMMDDHHMMSS.queueid\fR@\fImyhostname\fR, where
|
|
\fIYYYYMMDDHHMMSS\fR are the year, month, day, hour, minute and
|
|
second.
|
|
.IP \(bu
|
|
The mailq (postqueue \-p) output has the same format as
|
|
with Postfix <= 2.8.
|
|
.IP \(bu
|
|
The hash_queue_depth algorithm uses the first characters
|
|
of the queue file name, with the hexadecimal representation of the
|
|
file creation time in microseconds.
|
|
.br
|
|
.PP
|
|
Before migration to Postfix <= 2.8, the following commands
|
|
are required to convert long queue file names into short names:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# postfix stop
|
|
# postconf enable_long_queue_ids=no
|
|
# postsuper
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Repeat the postsuper command until it reports no more queue file
|
|
name changes.
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH enable_original_recipient (default: yes)
|
|
Enable support for the original recipient address after an
|
|
address is rewritten to a different address (for example with
|
|
aliasing or with canonical mapping).
|
|
.PP
|
|
The original recipient address is used as follows:
|
|
.IP "Final delivery"
|
|
With "enable_original_recipient =
|
|
yes", the original recipient address is stored in the \fBX\-Original\-To\fR
|
|
message header. This header may be used to distinguish between
|
|
different recipients that share the same mailbox.
|
|
.br
|
|
.IP "Recipient deduplication"
|
|
With "enable_original_recipient
|
|
= yes", the \fBcleanup\fR(8) daemon performs duplicate recipient elimination
|
|
based on the content of (original recipient, maybe\-rewritten
|
|
recipient) pairs. Otherwise, the \fBcleanup\fR(8) daemon performs duplicate
|
|
recipient elimination based only on the maybe\-rewritten recipient
|
|
address.
|
|
.br
|
|
.br
|
|
.PP
|
|
Note: with Postfix <= 3.2 the "setting enable_original_recipient
|
|
= \fBno\fR" breaks address verification for addresses that are
|
|
aliased or otherwise rewritten (Postfix is unable to store the
|
|
address verification result under the original probe destination
|
|
address; instead, it can store the result only under the rewritten
|
|
address).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later. Postfix
|
|
version 2.0 behaves as if this parameter is always set to \fByes\fR.
|
|
Postfix versions before 2.0 have no support for the original recipient
|
|
address.
|
|
.SH enable_threaded_bounces (default: no)
|
|
Enable non\-delivery, success, and delay notifications that link
|
|
to the original message by including a References: and In\-Reply\-To:
|
|
header with the original Message\-ID value. There are advantages and
|
|
disadvantages to consider.
|
|
.IP "\fB advantage \fR"
|
|
This allows mail readers to present
|
|
a delivery status notification in the same email thread as the original
|
|
message.
|
|
.br
|
|
.IP "\fB disadvantage \fR"
|
|
This makes it easy for users to
|
|
mistakenly delete the whole email thread (all related messages),
|
|
instead of deleting only the non\-delivery notification.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH error_notice_recipient (default: postmaster)
|
|
The recipient of postmaster notifications about mail delivery
|
|
problems that are caused by policy, resource, software or protocol
|
|
errors. These notifications are enabled with the notify_classes
|
|
parameter.
|
|
.SH error_service_name (default: error)
|
|
The name of the \fBerror\fR(8) pseudo delivery agent. This service always
|
|
returns mail as undeliverable.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH execution_directory_expansion_filter (default: see "postconf \-d" output)
|
|
Restrict the characters that the \fBlocal\fR(8) delivery agent allows
|
|
in $name expansions of $command_execution_directory. Characters
|
|
outside the allowed set are replaced by underscores.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH expand_owner_alias (default: no)
|
|
When delivering to an alias "\fIaliasname\fR" that has an
|
|
"owner\-\fIaliasname\fR" companion alias, set the envelope sender
|
|
address to the expansion of the "owner\-\fIaliasname\fR" alias.
|
|
Normally, Postfix sets the envelope sender address to the name of
|
|
the "owner\-\fIaliasname\fR" alias.
|
|
.SH export_environment (default: see "postconf \-d" output)
|
|
The list of environment variables that a Postfix process will export
|
|
to non\-Postfix processes. The TZ variable is needed for sane
|
|
time keeping on System\-V\-ish systems.
|
|
.PP
|
|
Specify a list of names and/or name=value pairs, separated by
|
|
whitespace or comma. Specify "{ name=value }" to protect whitespace
|
|
or comma in parameter values (whitespace after the opening "{" and
|
|
before the closing "}"
|
|
is ignored). The form name=value is supported with Postfix version
|
|
2.1 and later; the use of {} is supported with Postfix 3.0 and
|
|
later.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
export_environment = TZ PATH=/bin:/usr/bin
|
|
.fi
|
|
.ad
|
|
.SH extract_recipient_limit (default: 10240)
|
|
The maximal number of recipient addresses that Postfix will extract
|
|
from message headers when mail is submitted with "\fBsendmail \-t\fR".
|
|
.PP
|
|
This feature was removed in Postfix version 2.1.
|
|
.SH fallback_relay (default: empty)
|
|
Optional list of relay hosts for SMTP destinations that can't be
|
|
found or that are unreachable. With Postfix 2.3 this parameter
|
|
is renamed to smtp_fallback_relay.
|
|
.PP
|
|
By default, mail is returned to the sender when a destination is
|
|
not found, and delivery is deferred when a destination is unreachable.
|
|
.PP
|
|
The fallback relays must be SMTP destinations. Specify a domain,
|
|
host, host:port, [host]:port, [address] or [address]:port; the form
|
|
[host] turns off MX lookups. If you specify multiple SMTP
|
|
destinations, Postfix will try them in the specified order.
|
|
.PP
|
|
Note: before Postfix 2.2, do not use the fallback_relay feature
|
|
when relaying mail
|
|
for a backup or primary MX domain. Mail would loop between the
|
|
Postfix MX host and the fallback_relay host when the final destination
|
|
is unavailable.
|
|
.IP \(bu
|
|
In main.cf specify "relay_transport = relay",
|
|
.IP \(bu
|
|
In master.cf specify "\-o fallback_relay =" (i.e., empty) at
|
|
the end of the relay entry.
|
|
.IP \(bu
|
|
In transport maps, specify "relay:\fInexthop...\fR"
|
|
as the right\-hand side for backup or primary MX domain entries.
|
|
.br
|
|
.PP
|
|
Postfix version 2.2 and later will not use the fallback_relay feature
|
|
for destinations that it is MX host for.
|
|
.SH fallback_transport (default: empty)
|
|
Optional message delivery transport that the \fBlocal\fR(8) delivery
|
|
agent should use for names that are not found in the \fBaliases\fR(5)
|
|
or UNIX password database.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.SH fallback_transport_maps (default: empty)
|
|
Optional lookup tables with per\-recipient message delivery
|
|
transports for recipients that the \fBlocal\fR(8) delivery agent could
|
|
not find in the \fBaliases\fR(5) or UNIX password database.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.PP
|
|
For safety reasons, this feature does not allow $number
|
|
substitutions in regular expression maps.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH fast_flush_domains (default: $relay_domains)
|
|
Optional list of destinations that are eligible for per\-destination
|
|
logfiles with mail that is queued to those destinations.
|
|
.PP
|
|
By default, Postfix maintains "fast flush" logfiles only for
|
|
destinations that the Postfix SMTP server is willing to relay to
|
|
(i.e. the default is: "fast_flush_domains = $relay_domains"; see
|
|
the relay_domains parameter in the \fBpostconf\fR(5) manual).
|
|
.PP
|
|
Specify a list of hosts or domains, "/file/name" patterns or
|
|
"type:table" lookup tables, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace. A
|
|
"/file/name" pattern is replaced by its contents; a "type:table"
|
|
lookup table is matched when the domain or its parent domain appears
|
|
as lookup key.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "fast_flush_domains" in the parent_domain_matches_subdomains
|
|
parameter value.
|
|
.PP
|
|
Specify "fast_flush_domains =" (i.e., empty) to disable the feature
|
|
altogether.
|
|
.SH fast_flush_purge_time (default: 7d)
|
|
The time after which an empty per\-destination "fast flush" logfile
|
|
is deleted.
|
|
.PP
|
|
You can specify the time as a number, or as a number followed by
|
|
a letter that indicates the time unit: s=seconds, m=minutes, h=hours,
|
|
d=days, w=weeks. The default time unit is days.
|
|
.SH fast_flush_refresh_time (default: 12h)
|
|
The time after which a non\-empty but unread per\-destination "fast
|
|
flush" logfile needs to be refreshed. The contents of a logfile
|
|
are refreshed by requesting delivery of all messages listed in the
|
|
logfile.
|
|
.PP
|
|
You can specify the time as a number, or as a number followed by
|
|
a letter that indicates the time unit: s=seconds, m=minutes, h=hours,
|
|
d=days, w=weeks. The default time unit is hours.
|
|
.SH fault_injection_code (default: 0)
|
|
Force specific internal tests to fail, to test the handling of
|
|
errors that are difficult to reproduce otherwise.
|
|
.SH flush_service_name (default: flush)
|
|
The name of the \fBflush\fR(8) service. This service maintains per\-destination
|
|
logfiles with the queue file names of mail that is queued for those
|
|
destinations.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH force_mime_input_conversion (default: no)
|
|
Convert body content that claims to be 8\-bit into quoted\-printable,
|
|
before header_checks, body_checks, Milters, and before after\-queue
|
|
content filters. This feature does not affect messages that are
|
|
sent into smtpd_proxy_filter.
|
|
.PP
|
|
The typical use case is an MTA that applies this conversion
|
|
before signing outbound messages, so that the signatures will remain
|
|
valid when a message is later delivered to an MTA that does not
|
|
announce 8BITMIME support, or when a message line exceeds the SMTP
|
|
length limit.
|
|
.PP
|
|
This feature is available in Postfix >= 3.9.
|
|
.SH fork_attempts (default: 5)
|
|
The maximal number of attempts to fork() a child process.
|
|
.SH fork_delay (default: 1s)
|
|
The delay between attempts to fork() a child process.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH forward_expansion_filter (default: see "postconf \-d" output)
|
|
Restrict the characters that the \fBlocal\fR(8) delivery agent allows in
|
|
$name expansions of $forward_path. Characters outside the
|
|
allowed set are replaced by underscores.
|
|
.SH forward_path (default: see "postconf \-d" output)
|
|
The \fBlocal\fR(8) delivery agent search list for finding a .forward
|
|
file with user\-specified delivery methods. The first file that is
|
|
found is used.
|
|
.PP
|
|
The forward_path value is not subject to Postfix configuration
|
|
parameter $name expansion. Instead, the following $name expansions
|
|
are done on forward_path before the search actually happens.
|
|
The result of $name expansion is
|
|
filtered with the character set that is specified with the
|
|
forward_expansion_filter parameter.
|
|
.IP "\fB$user\fR"
|
|
The recipient's username.
|
|
.br
|
|
.IP "\fB$shell\fR"
|
|
The recipient's login shell pathname.
|
|
.br
|
|
.IP "\fB$home\fR"
|
|
The recipient's home directory.
|
|
.br
|
|
.IP "\fB$recipient\fR"
|
|
The full recipient address.
|
|
.br
|
|
.IP "\fB$extension\fR"
|
|
The optional recipient address extension.
|
|
.br
|
|
.IP "\fB$domain\fR"
|
|
The recipient domain.
|
|
.br
|
|
.IP "\fB$local\fR"
|
|
The entire recipient localpart.
|
|
.br
|
|
.IP "\fB$recipient_delimiter\fR"
|
|
The address extension delimiter that was found in the recipient
|
|
address (Postfix 2.11 and later), or the 'first' delimiter specified
|
|
with the system\-wide recipient address extension delimiter (Postfix
|
|
3.5.22, 3.6.12, 3.7.8, 3.8.3 and later). Historically, this was
|
|
always the system\-wide recipient
|
|
address extension delimiter (Postfix 2.10 and earlier).
|
|
.br
|
|
.IP "\fB${name?value}\fR"
|
|
.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
|
|
.br
|
|
.IP "\fB${name:value}\fR"
|
|
.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is empty.
|
|
.br
|
|
.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
|
|
\fIvalue2\fR otherwise.
|
|
.br
|
|
.br
|
|
.PP
|
|
Instead of $name you can also specify ${name} or $(name).
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
forward_path = /var/forward/$user
|
|
forward_path =
|
|
/var/forward/$user/.forward$recipient_delimiter$extension,
|
|
/var/forward/$user/.forward
|
|
.fi
|
|
.ad
|
|
.SH frozen_delivered_to (default: yes)
|
|
Update the \fBlocal\fR(8) delivery agent's idea of the Delivered\-To:
|
|
address (see prepend_delivered_header) only once, at the start of
|
|
a delivery attempt; do not update the Delivered\-To: address while
|
|
expanding aliases or .forward files.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later. With older
|
|
Postfix releases, the behavior is as if this parameter is set to
|
|
"no". The old setting can be expensive with deeply nested aliases
|
|
or .forward files. When an alias or .forward file changes the
|
|
Delivered\-To: address, it ties up one queue file and one cleanup
|
|
process instance while mail is being forwarded.
|
|
.SH full_name_encoding_charset (default: utf\-8)
|
|
The character set name (also called "charset") that Postfix
|
|
will output when it automatically generates an RFC 2047 encoded
|
|
full name. Encoding non\-ASCII full names can avoid the need to use
|
|
SMTPUTF8, and therefore can avoid incompatibility with sites that
|
|
do not support SMTPUTF8.
|
|
.PP
|
|
The encoded names look like "=?charset?q?gibberish?=" with
|
|
quoted\-printable encoding, or "=?charset?b?gibberish?=" with base64
|
|
encoding. Postfix uses quoted\-printable encoding for a full name
|
|
that is short or mostly printable ASCII, and uses base64 otherwise.
|
|
.PP
|
|
Background: when a message without a From: header is submitted
|
|
with the Postfix \fBsendmail\fR(1) command, the Postfix \fBcleanup\fR(8) daemon
|
|
will add a From: header and will try to use the sender's full name
|
|
specified with the Postfix \fBsendmail\fR(1) "\-F" option, with the Postfix
|
|
\fBsendmail\fR(1) "NAME" environment variable, or with the GECOS field
|
|
in the UNIX password database. In the latter case, Postfix will
|
|
replace the "&" character with the login name, with a lowercase
|
|
ASCII first character converted to uppercase.
|
|
.PP
|
|
NOTE: Postfix does not convert between character sets. The
|
|
full_name_encoding_charset parameter specifies the character set
|
|
of the full name in the Postfix sendmail "\-F" option, in the Postfix
|
|
sendmail "NAME" environment variable, or in the GECOS field of the
|
|
UNIX password database. The parameter value is also part of the
|
|
encoded full name, and informs a Mail User Agent how to display the
|
|
decoded gibberish.
|
|
.PP
|
|
Specify a valid character set name such as "utf\-8" or "iso\-8859\-1
|
|
(specify the latter for full names that use the Latin1 encoding).
|
|
The character set name is case insensitive. When a character set
|
|
name violates RFC 2047 syntax, Postfix will log a warning and will
|
|
skip the full name.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH hash_queue_depth (default: 1)
|
|
The number of subdirectory levels for queue directories listed with
|
|
the hash_queue_names parameter. Queue hashing is implemented by
|
|
creating one or more levels of directories with one\-character names.
|
|
Originally, these directory names were equal to the first characters
|
|
of the queue file name, with the hexadecimal representation of the
|
|
file creation time in microseconds.
|
|
.PP
|
|
With long queue file names, queue hashing produces the same
|
|
results as with short names. The file creation time in microseconds
|
|
is converted into hexadecimal form before the result is used for
|
|
queue hashing. The base 16 encoding gives finer control over the
|
|
number of subdirectories than is possible with the base 52 encoding
|
|
of long queue file names.
|
|
.PP
|
|
After changing the hash_queue_names or hash_queue_depth parameter,
|
|
execute the command "\fBpostfix reload\fR".
|
|
.SH hash_queue_names (default: deferred, defer)
|
|
The names of queue directories that are split across multiple
|
|
subdirectory levels.
|
|
.PP
|
|
Before Postfix version 2.2, the default list of hashed queues
|
|
was significantly larger. Claims about improvements in file system
|
|
technology suggest that hashing of the incoming and active queues
|
|
is no longer needed. Fewer hashed directories speed up the time
|
|
needed to restart Postfix.
|
|
.PP
|
|
After changing the hash_queue_names or hash_queue_depth parameter,
|
|
execute the command "\fBpostfix reload\fR".
|
|
.SH header_address_token_limit (default: 10240)
|
|
The maximal number of address tokens are allowed in an address
|
|
message header. Information that exceeds the limit is discarded.
|
|
The limit is enforced by the \fBcleanup\fR(8) server.
|
|
.SH header_checks (default: empty)
|
|
Optional lookup tables for content inspection of primary non\-MIME
|
|
message headers, as specified in the \fBheader_checks\fR(5) manual page.
|
|
.SH header_from_format (default: standard)
|
|
The format of the Postfix\-generated \fBFrom:\fR header. This
|
|
setting affects the appearance of 'full name' information when a
|
|
local program such as /bin/mail submits a message without a From:
|
|
header through the Postfix \fBsendmail\fR(1) command.
|
|
.PP
|
|
Specify one of the following:
|
|
.IP "\fBstandard\fR (default)"
|
|
Produce a header formatted
|
|
as "\fBFrom:\fR \fIname\fR\fB <\fR\fIaddress\fR\fB>\fR".
|
|
This is the default as of Postfix 3.3.
|
|
.br
|
|
.IP "\fBobsolete\fR"
|
|
Produce a header formatted as "\fBFrom:\fR
|
|
\fIaddress\fR \fB(\fR\fIname\fR\fB)\fR". This is the behavior
|
|
prior to Postfix 3.3.
|
|
.br
|
|
.br
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
Postfix generates the format "\fBFrom:\fR \fIaddress\fR"
|
|
when \fIname\fR information is unavailable or the envelope sender
|
|
address is empty. This is the same behavior as prior to Postfix
|
|
3.3.
|
|
.IP \(bu
|
|
In the \fBstandard\fR form, the \fIname\fR will be quoted
|
|
if it contains \fBspecials\fR as defined in RFC 5322, or the "!%"
|
|
address operators.
|
|
.IP \(bu
|
|
The Postfix \fBsendmail\fR(1) command gets \fIname\fR information
|
|
from the \fB\-F\fR command\-line option, from the \fBNAME\fR
|
|
environment variable, or from the UNIX password file.
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.3 and later.
|
|
.SH header_size_limit (default: 102400)
|
|
The maximal amount of memory in bytes for storing a message header.
|
|
If a header is larger, the excess is discarded. The limit is
|
|
enforced by the \fBcleanup\fR(8) server.
|
|
.SH helpful_warnings (default: yes)
|
|
Log warnings about problematic configuration settings, and provide
|
|
helpful suggestions.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH home_mailbox (default: empty)
|
|
Optional pathname of a mailbox file relative to a \fBlocal\fR(8) user's
|
|
home directory.
|
|
.PP
|
|
Specify a pathname ending in "/" for qmail\-style delivery.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
home_mailbox = Mailbox
|
|
home_mailbox = Maildir/
|
|
.fi
|
|
.ad
|
|
.SH hopcount_limit (default: 50)
|
|
The maximal number of Received: message headers that is allowed
|
|
in the primary message headers. A message that exceeds the limit
|
|
is bounced, in order to stop a mailer loop.
|
|
.SH html_directory (default: see "postconf \-d" output)
|
|
The location of Postfix HTML files that describe how to build,
|
|
configure or operate a specific Postfix subsystem or feature.
|
|
.SH ignore_mx_lookup_error (default: no)
|
|
Ignore DNS MX lookups that produce no response. By default,
|
|
the Postfix SMTP client defers delivery and tries again after some
|
|
delay. This behavior is required by the SMTP standard.
|
|
.PP
|
|
Specify "ignore_mx_lookup_error = yes" to force a DNS A record
|
|
lookup instead. This violates the SMTP standard and can result in
|
|
mis\-delivery of mail.
|
|
.SH ignore_srv_lookup_error (default: no)
|
|
When SRV record lookup fails, fall back to MX or IP address
|
|
lookup as if SRV record lookup was not enabled.
|
|
.PP
|
|
This feature is available in Postfix 3.8 and later.
|
|
.SH import_environment (default: see "postconf \-d" output)
|
|
The list of environment variables that a privileged Postfix
|
|
process will import from a non\-Postfix parent process, or name=value
|
|
environment overrides. Unprivileged utilities will enforce the
|
|
name=value overrides, but otherwise will not change their process
|
|
environment. Examples of relevant environment variables:
|
|
.IP "\fBTZ\fR"
|
|
May be needed for sane time keeping on most System\-V\-ish systems.
|
|
.br
|
|
.IP "\fBDISPLAY\fR"
|
|
Needed for debugging Postfix daemons with an X\-windows debugger.
|
|
.br
|
|
.IP "\fBXAUTHORITY\fR"
|
|
Needed for debugging Postfix daemons with an X\-windows debugger.
|
|
.br
|
|
.IP "\fBMAIL_CONFIG\fR"
|
|
Needed to make "\fBpostfix \-c\fR" work.
|
|
.br
|
|
.IP "\fBPOSTLOG_SERVICE\fR"
|
|
Needed to make "\fBmaillog_file\fR" work during daemon
|
|
process initialization.
|
|
.br
|
|
.IP "\fBPOSTLOG_HOSTNAME\fR"
|
|
Needed to make "\fBmaillog_file\fR" work during daemon
|
|
process initialization.
|
|
.br
|
|
.br
|
|
.PP
|
|
Specify a list of names and/or name=value pairs, separated by
|
|
whitespace or comma. Specify "{ name=value }" to protect whitespace
|
|
or comma in environment variable values (whitespace after the opening "{" and
|
|
before the closing "}"
|
|
is ignored). The form name=value is supported with Postfix version
|
|
2.1 and later; the use of {} is supported with Postfix 3.0 and
|
|
later.
|
|
.SH in_flow_delay (default: 1s)
|
|
Time to pause before accepting a new message, when the message
|
|
arrival rate exceeds the message delivery rate. This feature is
|
|
turned on by default (it's disabled on SCO UNIX due to an SCO bug).
|
|
.PP
|
|
With the default 100 Postfix SMTP server process limit, "in_flow_delay
|
|
= 1s" limits the mail inflow to 100 messages per second above the
|
|
number of messages delivered per second.
|
|
.PP
|
|
Specify 0 to disable the feature. Valid delays are 0..10.
|
|
.SH inet_interfaces (default: all)
|
|
The local network interface addresses that this mail system
|
|
receives mail on. Specify "all" to receive mail on all network
|
|
interfaces (default), "loopback\-only" to receive mail on loopback
|
|
network interfaces only (Postfix version 2.2 and later), or zero
|
|
or more IPv4 or IPv6 addresses (IPv6 is supported in Postfix version
|
|
2.2 and later). The parameter also controls whether Postfix will
|
|
accept mail for user@[ip.address], and prevents Postfix
|
|
from delivering mail to a host that has equal or larger MX preference.
|
|
Specify an empty value if Postfix does not receive mail over the
|
|
network, or if all network listeners have an explicit IP address
|
|
in master.cf.
|
|
.PP
|
|
Note 1: you need to stop and start Postfix when this parameter changes.
|
|
.PP
|
|
Note 2: address information may be enclosed inside [],
|
|
but this form is not required here.
|
|
.PP
|
|
When smtp_bind_address and/or smtp_bind_address6 are not
|
|
specified, the inet_interfaces setting may constrain the source IP
|
|
address for an outbound SMTP or LMTP connection as described below.
|
|
.PP
|
|
The following text is specific to SMTP and IPv4. The same
|
|
reasoning applies to the IPv6 protocol, and to the Postfix LMTP
|
|
client. To disable IPv4 or IPv6 support in the Postfix SMTP and
|
|
LMTP client, use inet_protocols.
|
|
.IP \(bu
|
|
When inet_interfaces specifies one IPv4 address, and that
|
|
is not a loopback address, the Postfix SMTP client uses that as the
|
|
source address for outbound IPv4 connections.
|
|
.IP \(bu
|
|
Otherwise, the Postfix SMTP client does not constrain the
|
|
source IPv4 address, and connects using a system\-chosen source IPv4
|
|
address. This includes the cases where inet_interfaces is empty,
|
|
where it specifies \fBall\fR, or where it contains no IPv4 address,
|
|
one IPv4 address that is a loopback address, or multiple IPv4
|
|
addresses.
|
|
.br
|
|
.PP
|
|
A Postfix SMTP client may fail to reach some remote SMTP servers
|
|
when the client source IP address is constrained explicitly with
|
|
smtp_bind_address or smtp_bind_address6, or implicitly with
|
|
inet_interfaces. This can happen when Postfix runs on a multi\-homed
|
|
system such as a firewall, the Postfix SMTP source client IP address
|
|
is constrained to one specific network interface, and the remote
|
|
SMTP server must be reached through a different interface. Setting
|
|
smtp_bind_address to 0.0.0.0 avoids the potential problem for IPv4,
|
|
and setting smtp_bind_address6 to :: solves the problem for IPv6.
|
|
.PP
|
|
A better solution for multi\-homed systems is to leave inet_interfaces
|
|
at the default value and instead use explicit IP addresses in
|
|
the master.cf SMTP server definitions. This preserves the Postfix
|
|
SMTP client's
|
|
loop detection, by ensuring that each side of the firewall knows that the
|
|
other IP address is still the same host. Setting $inet_interfaces to a
|
|
single IPv4 and/or IPV6 address is primarily useful with virtual
|
|
hosting of domains on
|
|
secondary IP addresses, when each IP address serves a different domain
|
|
(and has a different $myhostname setting).
|
|
.PP
|
|
See also the proxy_interfaces parameter, for network addresses that
|
|
are forwarded to Postfix by way of a proxy or address translator.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
inet_interfaces = all (DEFAULT)
|
|
inet_interfaces = loopback\-only (Postfix version 2.2 and later)
|
|
inet_interfaces = 127.0.0.1
|
|
inet_interfaces = 127.0.0.1, [::1] (Postfix version 2.2 and later)
|
|
inet_interfaces = 192.168.1.2, 127.0.0.1
|
|
.fi
|
|
.ad
|
|
.SH inet_protocols (default: see 'postconf \-d' output)
|
|
The Internet protocols Postfix will attempt to use when making
|
|
or accepting connections. Specify one or more of "ipv4"
|
|
or "ipv6", separated by whitespace or commas. The form
|
|
"all" is equivalent to "ipv4, ipv6" or "ipv4", depending
|
|
on whether the operating system implements IPv6.
|
|
.PP
|
|
With Postfix 2.8 and earlier the default is "ipv4". For backwards
|
|
compatibility with these releases, the Postfix 2.9 and later upgrade
|
|
procedure appends an explicit "inet_protocols = ipv4" setting to
|
|
main.cf when no explicit setting is present. This compatibility
|
|
workaround will be phased out as IPv6 deployment becomes more common.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Note: you MUST stop and start Postfix after changing this
|
|
parameter.
|
|
.PP
|
|
On systems that pre\-date IPV6_V6ONLY support (RFC 3493), an
|
|
IPv6 server will also accept IPv4 connections, even when IPv4 is
|
|
turned off with the inet_protocols parameter. On systems with
|
|
IPV6_V6ONLY support, Postfix will use separate server sockets for
|
|
IPv6 and IPv4, and each will accept only connections for the
|
|
corresponding protocol.
|
|
.PP
|
|
When IPv4 support is enabled via the inet_protocols parameter,
|
|
Postfix will look up DNS type A records, and will convert
|
|
IPv4\-in\-IPv6 client IP addresses (::ffff:1.2.3.4) to their original
|
|
IPv4 form (1.2.3.4). The latter is needed on hosts that pre\-date
|
|
IPV6_V6ONLY support (RFC 3493).
|
|
.PP
|
|
When IPv6 support is enabled via the inet_protocols parameter,
|
|
Postfix will do DNS type AAAA record lookups.
|
|
.PP
|
|
When both IPv4 and IPv6 support are enabled, the Postfix SMTP
|
|
client will choose the protocol as specified with the
|
|
smtp_address_preference parameter. Postfix versions before 2.8
|
|
attempt to connect via IPv6 before attempting to use IPv4.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
inet_protocols = ipv4
|
|
inet_protocols = all (DEFAULT)
|
|
inet_protocols = ipv6
|
|
inet_protocols = ipv4, ipv6
|
|
.fi
|
|
.ad
|
|
.SH info_log_address_format (default: external)
|
|
The email address form that will be used in non\-debug logging
|
|
(info, warning, etc.). As of Postfix 3.5 when an address localpart
|
|
contains spaces or other special characters, the localpart will be
|
|
quoted, for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
from=<"name with spaces"@example.com>
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Older Postfix versions would log the internal (unquoted) form:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
from=<name with spaces@example.com>
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The external and internal forms are identical for the vast
|
|
majority of email addresses that contain no spaces or other special
|
|
characters in the localpart.
|
|
.PP
|
|
The logging in external form is consistent with the address
|
|
form that Postfix 3.2 and later prefer for most table lookups. This
|
|
is therefore the more useful form for non\-debug logging.
|
|
.PP
|
|
Specify "\fBinfo_log_address_format = internal\fR" for backwards
|
|
compatibility.
|
|
.PP
|
|
Postfix uses the unquoted form internally, because an attacker
|
|
can specify an email address in different forms by playing games
|
|
with quotes and backslashes. An attacker should not be able to use
|
|
such games to circumvent Postfix access policies.
|
|
.PP
|
|
This feature is available in Postfix 3.5 and later.
|
|
.SH initial_destination_concurrency (default: 5)
|
|
The initial per\-destination concurrency level for parallel delivery
|
|
to the same destination.
|
|
With per\-destination recipient limit > 1, a destination is a domain,
|
|
otherwise it is a recipient.
|
|
.PP
|
|
Use \fItransport\fR_initial_destination_concurrency to specify
|
|
a transport\-specific override, where \fItransport\fR is the master.cf
|
|
name of the message delivery transport (Postfix 2.5 and later).
|
|
.PP
|
|
Warning: with concurrency of 1, one bad message can be enough to
|
|
block all mail to a site.
|
|
.SH internal_mail_filter_classes (default: empty)
|
|
What categories of Postfix\-generated mail are subject to
|
|
before\-queue content inspection by non_smtpd_milters, header_checks
|
|
and body_checks. Specify zero or more of the following, separated
|
|
by whitespace or comma.
|
|
.IP "\fBbounce\fR"
|
|
Inspect the content of delivery
|
|
status notifications.
|
|
.br
|
|
.IP "\fBnotify\fR"
|
|
Inspect the content of postmaster
|
|
notifications by the \fBsmtp\fR(8) and \fBsmtpd\fR(8) processes.
|
|
.br
|
|
.br
|
|
.PP
|
|
NOTE: It's generally not safe to enable content inspection of
|
|
Postfix\-generated email messages. The user is warned.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH invalid_hostname_reject_code (default: 501)
|
|
The numerical Postfix SMTP server response code when the client
|
|
HELO or EHLO command parameter is rejected by the reject_invalid_helo_hostname
|
|
restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH ipc_idle (default: version dependent)
|
|
The time after which a client closes an idle internal communication
|
|
channel. The purpose is to allow Postfix daemon processes to
|
|
terminate voluntarily after they become idle. This is used, for
|
|
example, by the Postfix address resolving and rewriting clients.
|
|
.PP
|
|
With Postfix 2.4 the default value was reduced from 100s to 5s.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH ipc_timeout (default: 3600s)
|
|
The time limit for sending or receiving information over an internal
|
|
communication channel. The purpose is to break out of deadlock
|
|
situations. If the time limit is exceeded the software aborts with a
|
|
fatal error.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH ipc_ttl (default: 1000s)
|
|
The time after which a client closes an active internal communication
|
|
channel. The purpose is to allow Postfix daemon processes to
|
|
terminate voluntarily
|
|
after reaching their client limit. This is used, for example, by
|
|
the Postfix address resolving and rewriting clients.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH known_tcp_ports (default: lmtp=24, smtp=25, smtps=submissions=465, submission=587)
|
|
Optional setting that avoids lookups in the \fBservices\fR(5) database.
|
|
This feature was implemented to address inconsistencies in the name
|
|
of the port "465" service. The ABNF is:
|
|
.sp
|
|
.in +4
|
|
known_tcp_ports = empty | name\-to\-port *("," name\-to\-port)
|
|
.br
|
|
name\-to\-port = 1*(service\-name "=') port\-number
|
|
.in -4
|
|
.PP
|
|
The comma is required. Whitespace is optional but it cannot appear
|
|
inside a service name or port number.
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH line_length_limit (default: 2048)
|
|
Upon input, long lines are chopped up into pieces of at most
|
|
this length; upon delivery, long lines are reconstructed.
|
|
.SH lmdb_map_size (default: 16777216)
|
|
The initial OpenLDAP LMDB database size limit in bytes. Each time
|
|
a database becomes full, its size limit is doubled.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH lmtp_address_preference (default: ipv6)
|
|
The LMTP\-specific version of the smtp_address_preference
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH lmtp_address_verify_target (default: rcpt)
|
|
The LMTP\-specific version of the smtp_address_verify_target
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH lmtp_assume_final (default: no)
|
|
When a remote LMTP server announces no DSN support, assume that
|
|
the
|
|
server performs final delivery, and send "delivered" delivery status
|
|
notifications instead of "relayed". The default setting is backwards
|
|
compatible to avoid the infinitesimal possibility of breaking
|
|
existing LMTP\-based content filters.
|
|
.SH lmtp_balance_inet_protocols (default: yes)
|
|
The LMTP\-specific version of the smtp_balance_inet_protocols
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.3 and later.
|
|
.SH lmtp_bind_address (default: empty)
|
|
The LMTP\-specific version of the smtp_bind_address configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_bind_address6 (default: empty)
|
|
The LMTP\-specific version of the smtp_bind_address6 configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_bind_address_enforce (default: empty)
|
|
The LMTP\-specific version of the smtp_bind_address_enforce
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH lmtp_body_checks (default: empty)
|
|
The LMTP\-specific version of the smtp_body_checks configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_cache_connection (default: yes)
|
|
Keep Postfix LMTP client connections open for up to $max_idle
|
|
seconds. When the LMTP client receives a request for the same
|
|
connection the connection is reused.
|
|
.PP
|
|
This parameter is available in Postfix version 2.2 and earlier.
|
|
With Postfix version 2.3 and later, see lmtp_connection_cache_on_demand,
|
|
lmtp_connection_cache_destinations, or lmtp_connection_reuse_time_limit.
|
|
.PP
|
|
The effectiveness of cached connections will be determined by the
|
|
number of remote LMTP servers in use, and the concurrency limit specified
|
|
for the Postfix LMTP client. Cached connections are closed under any of
|
|
the following conditions:
|
|
.IP \(bu
|
|
The Postfix LMTP client idle time limit is reached. This limit is
|
|
specified with the Postfix max_idle configuration parameter.
|
|
.IP \(bu
|
|
A delivery request specifies a different destination than the
|
|
one currently cached.
|
|
.IP \(bu
|
|
The per\-process limit on the number of delivery requests is
|
|
reached. This limit is specified with the Postfix max_use
|
|
configuration parameter.
|
|
.IP \(bu
|
|
Upon the onset of another delivery request, the remote LMTP server
|
|
associated with the current session does not respond to the RSET
|
|
command.
|
|
.br
|
|
.PP
|
|
Most of these limitations have been with the Postfix
|
|
connection cache that is shared among multiple LMTP client
|
|
programs.
|
|
.SH lmtp_cname_overrides_servername (default: yes)
|
|
The LMTP\-specific version of the smtp_cname_overrides_servername
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_connect_timeout (default: 0s)
|
|
The Postfix LMTP client time limit for completing a TCP connection, or
|
|
zero (use the operating system built\-in time limit). When no
|
|
connection can be made within the deadline, the LMTP client tries
|
|
the next address on the mail exchanger list.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
lmtp_connect_timeout = 30s
|
|
.fi
|
|
.ad
|
|
.SH lmtp_connection_cache_destinations (default: empty)
|
|
The LMTP\-specific version of the smtp_connection_cache_destinations
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_connection_cache_on_demand (default: yes)
|
|
The LMTP\-specific version of the smtp_connection_cache_on_demand
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_connection_cache_time_limit (default: 2s)
|
|
The LMTP\-specific version of the
|
|
smtp_connection_cache_time_limit configuration parameter.
|
|
See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_connection_reuse_count_limit (default: 0)
|
|
The LMTP\-specific version of the smtp_connection_reuse_count_limit
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH lmtp_connection_reuse_time_limit (default: 300s)
|
|
The LMTP\-specific version of the smtp_connection_reuse_time_limit
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_data_done_timeout (default: 600s)
|
|
The Postfix LMTP client time limit for sending the LMTP ".",
|
|
and for receiving the remote LMTP server response. When no response
|
|
is received within the deadline, a warning is logged that the mail
|
|
may be delivered multiple times.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_data_init_timeout (default: 120s)
|
|
The Postfix LMTP client time limit for sending the LMTP DATA command,
|
|
and
|
|
for receiving the remote LMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_data_xfer_timeout (default: 180s)
|
|
The Postfix LMTP client time limit for sending the LMTP message
|
|
content.
|
|
When the connection stalls for more than $lmtp_data_xfer_timeout
|
|
the LMTP client terminates the transfer.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_defer_if_no_mx_address_found (default: no)
|
|
The LMTP\-specific version of the smtp_defer_if_no_mx_address_found
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_delivery_status_filter (default: empty)
|
|
The LMTP\-specific version of the smtp_delivery_status_filter
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH lmtp_destination_concurrency_limit (default: $default_destination_concurrency_limit)
|
|
The maximal number of parallel deliveries to the same destination
|
|
via the lmtp message delivery transport. This limit is enforced by
|
|
the queue manager. The message delivery transport name is the first
|
|
field in the entry in the master.cf file.
|
|
.SH lmtp_destination_recipient_limit (default: $default_destination_recipient_limit)
|
|
The maximal number of recipients per message for the lmtp
|
|
message delivery transport. This limit is enforced by the queue
|
|
manager. The message delivery transport name is the first field in
|
|
the entry in the master.cf file.
|
|
.PP
|
|
Setting this parameter to a value of 1 changes the meaning of
|
|
lmtp_destination_concurrency_limit from concurrency per domain into
|
|
concurrency per recipient.
|
|
.SH lmtp_discard_lhlo_keyword_address_maps (default: empty)
|
|
Lookup tables, indexed by the remote LMTP server address, with
|
|
case insensitive lists of LHLO keywords (pipelining, starttls,
|
|
auth, etc.) that the Postfix LMTP client will ignore in the LHLO
|
|
response
|
|
from a remote LMTP server. See lmtp_discard_lhlo_keywords for
|
|
details. The table is not indexed by hostname for consistency with
|
|
smtpd_discard_ehlo_keyword_address_maps.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_discard_lhlo_keywords (default: empty)
|
|
A case insensitive list of LHLO keywords (pipelining, starttls,
|
|
auth, etc.) that the Postfix LMTP client will ignore in the LHLO
|
|
response
|
|
from a remote LMTP server.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
Specify the \fBsilent\-discard\fR pseudo keyword to prevent
|
|
this action from being logged.
|
|
.IP \(bu
|
|
Use the lmtp_discard_lhlo_keyword_address_maps feature to
|
|
discard LHLO keywords selectively.
|
|
.br
|
|
.SH lmtp_dns_reply_filter (default: empty)
|
|
Optional filter for Postfix LMTP client DNS lookup results.
|
|
See smtp_dns_reply_filter for details including an example.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH lmtp_dns_resolver_options (default: empty)
|
|
The LMTP\-specific version of the smtp_dns_resolver_options
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH lmtp_dns_support_level (default: empty)
|
|
The LMTP\-specific version of the smtp_dns_support_level
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH lmtp_enforce_tls (default: no)
|
|
The LMTP\-specific version of the smtp_enforce_tls configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
lmtp_tls_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_fallback_relay (default: empty)
|
|
Optional list of relay hosts for LMTP destinations that can't be
|
|
found or that are unreachable. In main.cf elements are separated by
|
|
whitespace or commas.
|
|
.PP
|
|
By default, mail is returned to the sender when a destination is not
|
|
found, and delivery is deferred when a destination is unreachable.
|
|
.PP
|
|
The fallback relays must be TCP destinations, specified without
|
|
a leading "inet:" prefix. Specify a host or host:port. Since MX
|
|
lookups do not apply with LMTP, there is no need to use the "[host]" or
|
|
"[host]:port" forms. If you specify multiple LMTP destinations, Postfix
|
|
will try them in the specified order.
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH lmtp_generic_maps (default: empty)
|
|
The LMTP\-specific version of the smtp_generic_maps configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_header_checks (default: empty)
|
|
The LMTP\-specific version of the smtp_header_checks configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_host_lookup (default: dns)
|
|
The LMTP\-specific version of the smtp_host_lookup configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_lhlo_name (default: $myhostname)
|
|
The hostname to send in the LMTP LHLO command.
|
|
.PP
|
|
The default value is the machine hostname. Specify a hostname or
|
|
[ip.add.re.ss] or [ip:v6:add:re::ss].
|
|
.PP
|
|
This information can be specified in the main.cf file for all LMTP
|
|
clients, or it can be specified in the master.cf file for a specific
|
|
client, for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
mylmtp ... lmtp \-o lmtp_lhlo_name=foo.bar.com
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_lhlo_timeout (default: 300s)
|
|
The Postfix LMTP client time limit for sending the LHLO command,
|
|
and for receiving the initial remote LMTP server response.
|
|
.PP
|
|
Time units: s (seconds), m (minutes), h (hours), d (days), w
|
|
(weeks). The default time unit is s (seconds).
|
|
.SH lmtp_line_length_limit (default: 998)
|
|
The LMTP\-specific version of the smtp_line_length_limit
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_mail_timeout (default: 300s)
|
|
The Postfix LMTP client time limit for sending the MAIL FROM command,
|
|
and for receiving the remote LMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_mime_header_checks (default: empty)
|
|
The LMTP\-specific version of the smtp_mime_header_checks
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_min_data_rate (default: 500)
|
|
The LMTP\-specific version of the smtp_min_data_rate configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH lmtp_mx_address_limit (default: 5)
|
|
The LMTP\-specific version of the smtp_mx_address_limit configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_mx_session_limit (default: 2)
|
|
The LMTP\-specific version of the smtp_mx_session_limit configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_nested_header_checks (default: empty)
|
|
The LMTP\-specific version of the smtp_nested_header_checks
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_per_record_deadline (default: no)
|
|
The LMTP\-specific version of the smtp_per_record_deadline
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH lmtp_per_request_deadline (default: no)
|
|
The LMTP\-specific version of the smtp_per_request_deadline
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH lmtp_pix_workaround_delay_time (default: 10s)
|
|
The LMTP\-specific version of the smtp_pix_workaround_delay_time
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_pix_workaround_maps (default: empty)
|
|
The LMTP\-specific version of the smtp_pix_workaround_maps
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH lmtp_pix_workaround_threshold_time (default: 500s)
|
|
The LMTP\-specific version of the smtp_pix_workaround_threshold_time
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_pix_workarounds (default: empty)
|
|
The LMTP\-specific version of the smtp_pix_workaround
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH lmtp_quit_timeout (default: 300s)
|
|
The Postfix LMTP client time limit for sending the QUIT command,
|
|
and for receiving the remote LMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_quote_rfc821_envelope (default: yes)
|
|
The LMTP\-specific version of the smtp_quote_rfc821_envelope
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_randomize_addresses (default: yes)
|
|
The LMTP\-specific version of the smtp_randomize_addresses
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_rcpt_timeout (default: 300s)
|
|
The Postfix LMTP client time limit for sending the RCPT TO command,
|
|
and for receiving the remote LMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_reply_filter (default: empty)
|
|
The LMTP\-specific version of the smtp_reply_filter
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH lmtp_rset_timeout (default: 20s)
|
|
The Postfix LMTP client time limit for sending the RSET command,
|
|
and for receiving the remote LMTP server response. The LMTP client
|
|
sends RSET in
|
|
order to finish a recipient address probe, or to verify that a
|
|
cached connection is still alive.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH lmtp_sasl_auth_cache_name (default: empty)
|
|
The LMTP\-specific version of the smtp_sasl_auth_cache_name
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_sasl_auth_cache_time (default: 90d)
|
|
The LMTP\-specific version of the smtp_sasl_auth_cache_time
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_sasl_auth_enable (default: no)
|
|
Enable SASL authentication in the Postfix LMTP client.
|
|
.SH lmtp_sasl_auth_soft_bounce (default: yes)
|
|
The LMTP\-specific version of the smtp_sasl_auth_soft_bounce
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_sasl_mechanism_filter (default: empty)
|
|
The LMTP\-specific version of the smtp_sasl_mechanism_filter
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_sasl_password_maps (default: empty)
|
|
Optional Postfix LMTP client lookup tables with one username:password entry
|
|
per host or domain. If a remote host or domain has no username:password
|
|
entry, then the Postfix LMTP client will not attempt to authenticate
|
|
to the remote host.
|
|
.SH lmtp_sasl_password_result_delimiter (default: :)
|
|
The LMTP\-specific version of the smtp_sasl_password_result_delimiter
|
|
configuration parameter. See there for details.
|
|
.SH lmtp_sasl_path (default: empty)
|
|
Implementation\-specific information that is passed through to
|
|
the SASL plug\-in implementation that is selected with
|
|
\fBlmtp_sasl_type\fR. Typically this specifies the name of a
|
|
configuration file or rendezvous point.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_sasl_security_options (default: noplaintext, noanonymous)
|
|
SASL security options; as of Postfix 2.3 the list of available
|
|
features depends on the SASL client implementation that is selected
|
|
with \fBlmtp_sasl_type\fR.
|
|
.PP
|
|
The following security features are defined for the \fBcyrus\fR
|
|
client SASL implementation:
|
|
.IP "\fBnoplaintext\fR"
|
|
Disallow authentication methods that use plaintext passwords.
|
|
.br
|
|
.IP "\fBnoactive\fR"
|
|
Disallow authentication methods that are vulnerable to non\-dictionary
|
|
active attacks.
|
|
.br
|
|
.IP "\fBnodictionary\fR"
|
|
Disallow authentication methods that are vulnerable to passive
|
|
dictionary attacks.
|
|
.br
|
|
.IP "\fBnoanonymous\fR"
|
|
Disallow anonymous logins.
|
|
.br
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
lmtp_sasl_security_options = noplaintext
|
|
.fi
|
|
.ad
|
|
.SH lmtp_sasl_tls_security_options (default: $lmtp_sasl_security_options)
|
|
The LMTP\-specific version of the smtp_sasl_tls_security_options
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_sasl_tls_verified_security_options (default: $lmtp_sasl_tls_security_options)
|
|
The LMTP\-specific version of the
|
|
smtp_sasl_tls_verified_security_options configuration parameter.
|
|
See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_sasl_type (default: cyrus)
|
|
The SASL plug\-in type that the Postfix LMTP client should use
|
|
for authentication. The available types are listed with the
|
|
"\fBpostconf \-A\fR" command.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_send_dummy_mail_auth (default: no)
|
|
The LMTP\-specific version of the smtp_send_dummy_mail_auth
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH lmtp_send_xforward_command (default: no)
|
|
Send an XFORWARD command to the remote LMTP server when the LMTP LHLO
|
|
server response announces XFORWARD support. This allows an \fBlmtp\fR(8)
|
|
delivery agent, used for content filter message injection, to
|
|
forward the name, address, protocol and HELO name of the original
|
|
client to the content filter and downstream LMTP server.
|
|
Before you change the value to yes, it is best to make sure that
|
|
your content filter supports this command.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH lmtp_sender_dependent_authentication (default: no)
|
|
The LMTP\-specific version of the smtp_sender_dependent_authentication
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_skip_5xx_greeting (default: yes)
|
|
The LMTP\-specific version of the smtp_skip_5xx_greeting
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_skip_quit_response (default: no)
|
|
Wait for the response to the LMTP QUIT command.
|
|
.SH lmtp_starttls_timeout (default: 300s)
|
|
The LMTP\-specific version of the smtp_starttls_timeout configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tcp_port (default: 24)
|
|
The default TCP port that the Postfix LMTP client connects to.
|
|
Specify a symbolic name (see \fBservices\fR(5)) or a numeric port.
|
|
.SH lmtp_tls_CAfile (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_CAfile
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_CApath (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_CApath
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_block_early_mail_reply (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_block_early_mail_reply
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH lmtp_tls_cert_file (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_cert_file
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_chain_files (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_chain_files configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH lmtp_tls_ciphers (default: medium)
|
|
The LMTP\-specific version of the smtp_tls_ciphers configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH lmtp_tls_connection_reuse (default: no)
|
|
The LMTP\-specific version of the smtp_tls_connection_reuse configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH lmtp_tls_dcert_file (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_dcert_file
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_dkey_file (default: $lmtp_tls_dcert_file)
|
|
The LMTP\-specific version of the smtp_tls_dkey_file
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_eccert_file (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_eccert_file configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when Postfix is
|
|
compiled and linked with OpenSSL 1.0.0 or later.
|
|
.SH lmtp_tls_eckey_file (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_eckey_file configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when Postfix is
|
|
compiled and linked with OpenSSL 1.0.0 or later.
|
|
.SH lmtp_tls_enable_rpk (default: yes)
|
|
The LMTP\-specific version of the smtp_tls_enable_rpk
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.9 and later.
|
|
.SH lmtp_tls_enforce_peername (default: yes)
|
|
The LMTP\-specific version of the smtp_tls_enforce_peername
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_exclude_ciphers (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_exclude_ciphers
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_fingerprint_cert_match (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_fingerprint_cert_match
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_tls_fingerprint_digest (default: see "postconf \-d" output)
|
|
The LMTP\-specific version of the smtp_tls_fingerprint_digest
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH lmtp_tls_force_insecure_host_tlsa_lookup (default: no)
|
|
The LMTP\-specific version of the smtp_tls_force_insecure_host_tlsa_lookup
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH lmtp_tls_key_file (default: $lmtp_tls_cert_file)
|
|
The LMTP\-specific version of the smtp_tls_key_file
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_loglevel (default: 0)
|
|
The LMTP\-specific version of the smtp_tls_loglevel
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_mandatory_ciphers (default: medium)
|
|
The LMTP\-specific version of the smtp_tls_mandatory_ciphers
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_mandatory_exclude_ciphers (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_mandatory_exclude_ciphers
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_mandatory_protocols (default: see 'postconf \-d' output)
|
|
The LMTP\-specific version of the smtp_tls_mandatory_protocols
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_note_starttls_offer (default: no)
|
|
The LMTP\-specific version of the smtp_tls_note_starttls_offer
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_per_site (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_per_site configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
lmtp_tls_policy_maps instead.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_policy_maps (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_policy_maps
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_protocols (default: see 'postconf \-d' output)
|
|
The LMTP\-specific version of the smtp_tls_protocols configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH lmtp_tls_scert_verifydepth (default: 9)
|
|
The LMTP\-specific version of the smtp_tls_scert_verifydepth
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_secure_cert_match (default: nexthop)
|
|
The LMTP\-specific version of the smtp_tls_secure_cert_match
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_security_level (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_security_level configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_servername (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_servername configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH lmtp_tls_session_cache_database (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_session_cache_database
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_session_cache_timeout (default: 3600s)
|
|
The LMTP\-specific version of the smtp_tls_session_cache_timeout
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_trust_anchor_file (default: empty)
|
|
The LMTP\-specific version of the smtp_tls_trust_anchor_file
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH lmtp_tls_verify_cert_match (default: hostname)
|
|
The LMTP\-specific version of the smtp_tls_verify_cert_match
|
|
configuration parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_tls_wrappermode (default: no)
|
|
The LMTP\-specific version of the smtp_tls_wrappermode configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH lmtp_use_tls (default: no)
|
|
The LMTP\-specific version of the smtp_use_tls configuration
|
|
parameter. See there for details.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
lmtp_tls_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH lmtp_xforward_timeout (default: 300s)
|
|
The Postfix LMTP client time limit for sending the XFORWARD command,
|
|
and for receiving the remote LMTP server response.
|
|
.PP
|
|
In case of problems the client does NOT try the next address on
|
|
the mail exchanger list.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH local_command_shell (default: empty)
|
|
Optional shell program for \fBlocal\fR(8) delivery to non\-Postfix commands.
|
|
By default, non\-Postfix commands are executed directly; commands
|
|
are given to the default shell (typically, /bin/sh) only when they
|
|
contain shell meta characters or shell built\-in commands.
|
|
.PP
|
|
"sendmail's restricted shell" (smrsh) is what most people will
|
|
use in order to restrict what programs can be run from e.g. .forward
|
|
files (smrsh is part of the Sendmail distribution).
|
|
.PP
|
|
Note: when a shell program is specified, it is invoked even
|
|
when the command contains no shell built\-in commands or meta
|
|
characters.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
local_command_shell = /some/where/smrsh \-c
|
|
local_command_shell = /bin/bash \-c
|
|
.fi
|
|
.ad
|
|
.SH local_delivery_status_filter (default: $default_delivery_status_filter)
|
|
Optional filter for the \fBlocal\fR(8) delivery agent to change the
|
|
status code or explanatory text of successful or unsuccessful
|
|
deliveries. See default_delivery_status_filter for details.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH local_destination_concurrency_limit (default: 2)
|
|
The maximal number of parallel deliveries via the local mail
|
|
delivery transport to the same recipient (when
|
|
"local_destination_recipient_limit = 1") or the maximal number of
|
|
parallel deliveries to the same local domain (when
|
|
"local_destination_recipient_limit > 1"). This limit is enforced by
|
|
the queue manager. The message delivery transport name is the first
|
|
field in the entry in the master.cf file.
|
|
.PP
|
|
A low limit of 2 is recommended, just in case someone has an
|
|
expensive shell command in a .forward file or in an alias (e.g.,
|
|
a mailing list manager). You don't want to run lots of those at
|
|
the same time.
|
|
.SH local_destination_recipient_limit (default: 1)
|
|
The maximal number of recipients per message delivery via the
|
|
local mail delivery transport. This limit is enforced by the queue
|
|
manager. The message delivery transport name is the first field in
|
|
the entry in the master.cf file.
|
|
.PP
|
|
Setting this parameter to a value > 1 changes the meaning of
|
|
local_destination_concurrency_limit from concurrency per recipient
|
|
into concurrency per domain.
|
|
.SH local_header_rewrite_clients (default: permit_inet_interfaces)
|
|
Rewrite or add message headers in mail from these clients,
|
|
updating incomplete addresses with the domain name in $myorigin or
|
|
$mydomain, and adding missing headers.
|
|
.PP
|
|
See the append_at_myorigin and append_dot_mydomain parameters
|
|
for details of how domain names are appended to incomplete addresses.
|
|
.PP
|
|
See remote_header_rewrite_domain to optionally rewrite or add
|
|
message headers in mail from other clients.
|
|
.PP
|
|
Specify a list of zero or more of the following:
|
|
.IP "\fBpermit_inet_interfaces\fR"
|
|
Append the domain name in $myorigin or $mydomain when the
|
|
client IP address matches $inet_interfaces. This is enabled by
|
|
default.
|
|
.br
|
|
.IP "\fBpermit_mynetworks\fR"
|
|
Append the domain name in $myorigin or $mydomain when the
|
|
client IP address matches any network or network address listed in
|
|
$mynetworks. This setting will not prevent remote mail header
|
|
address rewriting when mail from a remote client is forwarded by
|
|
a neighboring system.
|
|
.br
|
|
.IP "\fBpermit_sasl_authenticated \fR"
|
|
Append the domain name in $myorigin or $mydomain when the
|
|
client is successfully authenticated via the RFC 4954 (AUTH)
|
|
protocol.
|
|
.br
|
|
.IP "\fBpermit_tls_clientcerts \fR"
|
|
Append the domain name in $myorigin or $mydomain when the
|
|
remote SMTP client TLS certificate fingerprint or public key fingerprint
|
|
(Postfix 2.9 and later) is listed in $relay_clientcerts.
|
|
The fingerprint digest algorithm is configurable via the
|
|
smtpd_tls_fingerprint_digest parameter (hard\-coded as md5 prior to
|
|
Postfix version 2.5).
|
|
.br
|
|
The default algorithm is \fBsha256\fR with Postfix >= 3.6
|
|
and the \fBcompatibility_level\fR set to 3.6 or higher. With Postfix
|
|
<= 3.5, the default algorithm is \fBmd5\fR. The best\-practice
|
|
algorithm is now \fBsha256\fR. Recent advances in hash function
|
|
cryptanalysis have led to md5 and sha1 being deprecated in favor of
|
|
sha256. However, as long as there are no known "second pre\-image"
|
|
attacks against the older algorithms, their use in this context, though
|
|
not recommended, is still likely safe.
|
|
.br
|
|
.IP "\fBpermit_tls_all_clientcerts \fR"
|
|
Append the domain name in $myorigin or $mydomain when the
|
|
remote SMTP client TLS certificate is successfully verified, regardless of
|
|
whether it is listed on the server, and regardless of the certifying
|
|
authority.
|
|
.br
|
|
.IP "\fBcheck_address_map \fItype:table\fR \fR"
|
|
.IP "\fB\fItype:table\fR \fR"
|
|
Append the domain name in $myorigin or $mydomain when the
|
|
client IP address matches the specified lookup table.
|
|
The lookup result is ignored, and no subnet lookup is done. This
|
|
is suitable for, e.g., pop\-before\-smtp lookup tables.
|
|
.br
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
The Postfix < 2.2 backwards compatible setting: always rewrite
|
|
message headers, and always append my own domain to incomplete
|
|
header addresses.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
local_header_rewrite_clients = static:all
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The purist (and default) setting: rewrite headers only in mail
|
|
from Postfix sendmail and in SMTP mail from this machine.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
local_header_rewrite_clients = permit_inet_interfaces
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The intermediate setting: rewrite header addresses and append
|
|
$myorigin or $mydomain information only with mail from Postfix
|
|
sendmail, from local clients, or from authorized SMTP clients.
|
|
.PP
|
|
Note: this setting will not prevent remote mail header address
|
|
rewriting when mail from a remote client is forwarded by a neighboring
|
|
system.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
local_header_rewrite_clients = permit_mynetworks,
|
|
permit_sasl_authenticated permit_tls_clientcerts
|
|
check_address_map hash:/etc/postfix/pop\-before\-smtp
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.SH local_login_sender_maps (default: static:*)
|
|
A list of lookup tables that are searched by the UNIX login name,
|
|
and that return a list of allowed envelope sender patterns separated
|
|
by space or comma. These sender patterns are enforced by the Postfix
|
|
\fBpostdrop\fR(1) command. The default is backwards\-compatible:
|
|
every user may specify any sender envelope address.
|
|
.PP
|
|
When no UNIX login name is available, the \fBpostdrop\fR(1) command will
|
|
prepend "\fBuid:\fR" to the numerical UID and use that instead.
|
|
.PP
|
|
This feature ignores address extensions in the user\-specified
|
|
envelope sender address.
|
|
.PP
|
|
Note: to enforce that the From: header address matches the envelope
|
|
sender (MAIL FROM) address, specify an external filter such as a Milter,
|
|
with the non_smtpd_milters parameter. For example:
|
|
https://github.com/magcks/milterfrom.
|
|
.PP
|
|
The following sender patterns are special; these cannot be used
|
|
as part of a longer pattern.
|
|
.IP "\fB * \fR
|
|
This pattern allows any envelope sender address.
|
|
.br
|
|
.IP "\fB <> \fR"
|
|
This pattern allows the empty
|
|
envelope sender address. See the
|
|
empty_address_local_login_sender_maps_lookup_key configuration
|
|
parameter.
|
|
.br
|
|
.IP "\fB @\fR\fIdomain\fR"
|
|
This pattern allows an
|
|
envelope sender address when the '\fB@\fR' and \fIdomain\fR part
|
|
match.
|
|
.br
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
# Allow root and postfix full control, anyone else can only
|
|
# send mail as themselves. Use "uid:" followed by the numerical
|
|
# UID when the UID has no entry in the UNIX password file.
|
|
local_login_sender_maps =
|
|
inline:{ { root = * }, { postfix = * } },
|
|
pcre:/etc/postfix/login_senders
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/login_senders:
|
|
# Allow both the bare username and the user@domain forms.
|
|
/(.+)/ $1 $1@example.com
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH local_recipient_maps (default: proxy:unix:passwd.byname $alias_maps)
|
|
Lookup tables with all names or addresses of valid local
|
|
recipients. A recipient address is local when its domain matches
|
|
$mydestination, $inet_interfaces or $proxy_interfaces.
|
|
.PP
|
|
If the local_recipient_maps parameter value is non\-empty (the
|
|
default), then the Postfix SMTP server queries local_recipient_maps
|
|
as specified in "Local
|
|
recipient table query format", and rejects mail for unknown
|
|
local recipients. Other Postfix interfaces such as the Postfix
|
|
\fBsendmail\fR(1) command may still accept an "unknown" recipient.
|
|
.PP
|
|
The default local_recipient_maps setting assumes that local_transport
|
|
specifies the UNIX\-compatible \fBlocal\fR(8) delivery agent which queries
|
|
the UNIX passwd database (typically, /etc.passwd) and the local
|
|
aliases database (typically, /etc/aliases). The proxy: agent allows
|
|
the Postfix SMTP server to access the UNIX passwd database from
|
|
outside a chroot jail.
|
|
.PP
|
|
For other local mail delivery configurations, see "When you need to
|
|
change the local_recipient_maps setting in main.cf".
|
|
.PP
|
|
Technically, tables listed with $local_recipient_maps are used as
|
|
lists: The Postfix SMTP server needs to know only if a lookup string
|
|
is found or not, but it does not use the result from table lookup.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
To turn off local recipient checking in the Postfix SMTP server,
|
|
specify "local_recipient_maps =" (i.e. empty).
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
local_recipient_maps =
|
|
.fi
|
|
.ad
|
|
.SH local_transport (default: local:$myhostname)
|
|
The default mail delivery transport and next\-hop destination
|
|
for final delivery to domains listed with mydestination, and for
|
|
[ipaddress] destinations that match $inet_interfaces or $proxy_interfaces.
|
|
This information can be overruled with the \fBtransport\fR(5) table.
|
|
.PP
|
|
By default, local mail is delivered to the transport called "local",
|
|
which is just the name of a service that is defined the master.cf file.
|
|
.PP
|
|
Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
|
|
is the name of a mail delivery transport defined in master.cf.
|
|
The \fI:nexthop\fR destination is optional; its syntax is documented
|
|
in the manual page of the corresponding delivery agent.
|
|
.PP
|
|
Beware: if you override the default local delivery agent then you
|
|
need to review the LOCAL_RECIPIENT_README document, otherwise the
|
|
SMTP server may reject mail for local recipients.
|
|
.SH luser_relay (default: empty)
|
|
Optional catch\-all destination for unknown \fBlocal\fR(8) recipients.
|
|
By default, mail for unknown recipients in domains that match
|
|
$mydestination, $inet_interfaces or $proxy_interfaces is returned
|
|
as undeliverable.
|
|
.PP
|
|
The luser_relay value is not subject to Postfix configuration
|
|
parameter $name expansion. Instead, the following $name expansions
|
|
are done:
|
|
.IP "\fB$domain\fR"
|
|
The recipient domain.
|
|
.br
|
|
.IP "\fB$extension\fR"
|
|
The recipient address extension.
|
|
.br
|
|
.IP "\fB$home\fR"
|
|
The recipient's home directory.
|
|
.br
|
|
.IP "\fB$local\fR"
|
|
The entire recipient address localpart.
|
|
.br
|
|
.IP "\fB$recipient\fR"
|
|
The full recipient address.
|
|
.br
|
|
.IP "\fB$recipient_delimiter\fR"
|
|
The address extension delimiter that was found in the recipient
|
|
address (Postfix 2.11 and later), or the system\-wide recipient
|
|
address extension delimiter (Postfix 2.10 and earlier).
|
|
.br
|
|
.IP "\fB$shell\fR"
|
|
The recipient's login shell.
|
|
.br
|
|
.IP "\fB$user\fR"
|
|
The recipient username.
|
|
.br
|
|
.IP "\fB${name?value}\fR"
|
|
.IP "\fB${name?{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is non\-empty.
|
|
.br
|
|
.IP "\fB${name:value}\fR"
|
|
.IP "\fB${name:{value}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue\fR when \fI$name\fR is empty.
|
|
.br
|
|
.IP "\fB${name?{value1}:{value2}}\fR (Postfix >= 3.0)"
|
|
Expands to \fIvalue1\fR when \fI$name\fR is non\-empty,
|
|
\fIvalue2\fR otherwise.
|
|
.br
|
|
.br
|
|
.PP
|
|
Instead of $name you can also specify ${name} or $(name).
|
|
.PP
|
|
Note: luser_relay works only for the Postfix \fBlocal\fR(8) delivery agent.
|
|
.PP
|
|
Note: if you use this feature for accounts not in the UNIX password
|
|
file, then you must specify "local_recipient_maps =" (i.e. empty)
|
|
in the main.cf file, otherwise the Postfix SMTP server will reject mail
|
|
for non\-UNIX accounts with "User unknown in local recipient table".
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
luser_relay = $user@other.host
|
|
luser_relay = $local@other.host
|
|
luser_relay = admin+$local
|
|
.fi
|
|
.ad
|
|
.SH mail_name (default: Postfix)
|
|
The mail system name that is displayed in Received: headers, in
|
|
the SMTP greeting banner, and in bounced mail.
|
|
.SH mail_owner (default: postfix)
|
|
The UNIX system account that owns the Postfix queue and most Postfix
|
|
daemon processes. Specify the name of an unprivileged user account
|
|
that does not share a user or group ID with other accounts, and that
|
|
owns no other files
|
|
or processes on the system. In particular, don't specify nobody
|
|
or daemon. PLEASE USE A DEDICATED USER ID AND GROUP ID.
|
|
.PP
|
|
When this parameter value is changed you need to re\-run "\fBpostfix
|
|
set\-permissions\fR" (with Postfix version 2.0 and earlier:
|
|
"\fB/etc/postfix/post\-install set\-permissions\fR".
|
|
.SH mail_release_date (default: see "postconf \-d" output)
|
|
The Postfix release date, in "YYYYMMDD" format.
|
|
.SH mail_spool_directory (default: see "postconf \-d" output)
|
|
The directory where \fBlocal\fR(8) UNIX\-style mailboxes are kept. The
|
|
default setting depends on the system type. Specify a name ending
|
|
in / for maildir\-style delivery.
|
|
.PP
|
|
Note: maildir delivery is done with the privileges of the recipient.
|
|
If you use the mail_spool_directory setting for maildir style
|
|
delivery, then you must create the top\-level maildir directory in
|
|
advance. Postfix will not create it.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
mail_spool_directory = /var/mail
|
|
mail_spool_directory = /var/spool/mail
|
|
.fi
|
|
.ad
|
|
.SH mail_version (default: see "postconf \-d" output)
|
|
The version of the mail system. Stable releases are named
|
|
\fImajor\fR.\fIminor\fR.\fIpatchlevel\fR. Experimental releases
|
|
also include the release date. The version string can be used in,
|
|
for example, the SMTP greeting banner.
|
|
.SH mailbox_command (default: empty)
|
|
Optional external command that the \fBlocal\fR(8) delivery agent should
|
|
use for mailbox delivery. The command is run with the user ID and
|
|
the primary group ID privileges of the recipient. Exception:
|
|
command delivery for root executes with $default_privs privileges.
|
|
This is not a problem, because 1) mail for root should always be
|
|
aliased to a real user and 2) don't log in as root, use "su" instead.
|
|
.PP
|
|
The following environment variables are exported to the command:
|
|
.IP "\fBCLIENT_ADDRESS\fR"
|
|
Remote client network address. Available in Postfix version 2.2 and
|
|
later.
|
|
.br
|
|
.IP "\fBCLIENT_HELO\fR"
|
|
Remote client EHLO command parameter. Available in Postfix version 2.2
|
|
and later.
|
|
.br
|
|
.IP "\fBCLIENT_HOSTNAME\fR"
|
|
Remote client hostname. Available in Postfix version 2.2 and later.
|
|
.br
|
|
.IP "\fBCLIENT_PROTOCOL\fR"
|
|
Remote client protocol. Available in Postfix version 2.2 and later.
|
|
.br
|
|
.IP "\fBDOMAIN\fR"
|
|
The domain part of the recipient address.
|
|
.br
|
|
.IP "\fBENVID\fR"
|
|
The optional RFC 3461 envelope ID. Available in Postfix version
|
|
3.9 and later
|
|
.br
|
|
.IP "\fBEXTENSION\fR"
|
|
The optional address extension.
|
|
.br
|
|
.IP "\fBHOME\fR"
|
|
The recipient home directory.
|
|
.br
|
|
.IP "\fBLOCAL\fR"
|
|
The recipient address localpart.
|
|
.br
|
|
.IP "\fBLOGNAME\fR"
|
|
The recipient's username.
|
|
.br
|
|
.IP "\fBORIGINAL_RECIPIENT\fR"
|
|
The entire recipient address, before any address rewriting or
|
|
aliasing.
|
|
.br
|
|
.IP "\fBRECIPIENT\fR"
|
|
The full recipient address.
|
|
.br
|
|
.IP "\fBSASL_METHOD\fR"
|
|
SASL authentication method specified in the remote client AUTH
|
|
command. Available in Postfix version 2.2 and later.
|
|
.br
|
|
.IP "\fBSASL_SENDER\fR"
|
|
SASL sender address specified in the remote client MAIL FROM
|
|
command. Available in Postfix version 2.2 and later.
|
|
.br
|
|
.IP "\fBSASL_USER\fR"
|
|
SASL username specified in the remote client AUTH command.
|
|
Available in Postfix version 2.2 and later.
|
|
.br
|
|
.IP "\fBSENDER\fR"
|
|
The full sender address.
|
|
.br
|
|
.IP "\fBSHELL\fR"
|
|
The recipient's login shell.
|
|
.br
|
|
.IP "\fBUSER\fR"
|
|
The recipient username.
|
|
.br
|
|
.br
|
|
.PP
|
|
Unlike other Postfix configuration parameters, the mailbox_command
|
|
parameter is not subjected to $name substitutions. This is to make
|
|
it easier to specify shell syntax (see example below).
|
|
.PP
|
|
If you can, avoid shell meta characters because they will force
|
|
Postfix to run an expensive shell process. If you're delivering
|
|
via "procmail" then running a shell won't make a noticeable difference
|
|
in the total cost.
|
|
.PP
|
|
Note: if you use the mailbox_command feature to deliver mail
|
|
system\-wide, you must set up an alias that forwards mail for root
|
|
to a real user.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
mailbox_command = /some/where/procmail
|
|
mailbox_command = /some/where/procmail \-a "$EXTENSION"
|
|
mailbox_command = /some/where/maildrop \-d "$USER"
|
|
\-f "$SENDER" "$EXTENSION"
|
|
.fi
|
|
.ad
|
|
.SH mailbox_command_maps (default: empty)
|
|
Optional lookup tables with per\-recipient external commands to use
|
|
for \fBlocal\fR(8) mailbox delivery. Behavior is as with mailbox_command.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.SH mailbox_delivery_lock (default: see "postconf \-d" output)
|
|
How to lock a UNIX\-style \fBlocal\fR(8) mailbox before attempting delivery.
|
|
For a list of available file locking methods, use the "\fBpostconf
|
|
\-l\fR" command.
|
|
.PP
|
|
This setting is ignored with \fBmaildir\fR style delivery,
|
|
because such deliveries are safe without explicit locks.
|
|
.PP
|
|
Note: The \fBdotlock\fR method requires that the recipient UID or
|
|
GID has write access to the parent directory of the mailbox file.
|
|
.PP
|
|
Note: the default setting of this parameter is system dependent.
|
|
.SH mailbox_size_limit (default: 51200000)
|
|
The maximal size of any \fBlocal\fR(8) individual mailbox or maildir
|
|
file, or zero (no limit). In fact, this limits the size of any
|
|
file that is written to upon local delivery, including files written
|
|
by external commands that are executed by the \fBlocal\fR(8) delivery
|
|
agent. The value cannot exceed LONG_MAX (typically, a 32\-bit or
|
|
64\-bit signed integer).
|
|
.PP
|
|
This limit must not be smaller than the message size limit.
|
|
.SH mailbox_transport (default: empty)
|
|
Optional message delivery transport that the \fBlocal\fR(8) delivery
|
|
agent should use for mailbox delivery to all local recipients,
|
|
whether or not they are found in the UNIX passwd database.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.SH mailbox_transport_maps (default: empty)
|
|
Optional lookup tables with per\-recipient message delivery
|
|
transports to use for \fBlocal\fR(8) mailbox delivery, whether or not the
|
|
recipients are found in the UNIX passwd database.
|
|
.PP
|
|
The precedence of \fBlocal\fR(8) delivery features from high to low
|
|
is: aliases, .forward files, mailbox_transport_maps, mailbox_transport,
|
|
mailbox_command_maps, mailbox_command, home_mailbox, mail_spool_directory,
|
|
fallback_transport_maps, fallback_transport and luser_relay.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
For safety reasons, this feature does not allow $number
|
|
substitutions in regular expression maps.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH maillog_file (default: empty)
|
|
The name of an optional logfile that is written by the Postfix
|
|
\fBpostlogd\fR(8) service. An empty value selects logging to \fBsyslogd\fR(8).
|
|
Specify "/dev/stdout" to select logging to standard output. Stdout
|
|
logging requires that Postfix is started with "postfix start\-fg".
|
|
.PP
|
|
Note 1: The maillog_file parameter value must contain a prefix
|
|
that is specified with the maillog_file_prefixes parameter.
|
|
.PP
|
|
Note 2: Some Postfix non\-daemon programs may still log information
|
|
to \fBsyslogd\fR(8), before they have processed their configuration
|
|
parameters and command\-line options.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH maillog_file_compressor (default: gzip)
|
|
The program to run after rotating $maillog_file with "postfix
|
|
logrotate". The command is run with the rotated logfile name as its
|
|
first argument.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH maillog_file_permissions (default: 0600)
|
|
The file access permissions that will be set when the file
|
|
$maillog_file is created for the first time, or when the file is
|
|
created after an existing file is rotated. Specify one of: \fB0600\fR
|
|
(only super\-user read/write access), \fB0640\fR (adds 'group' read
|
|
access), or \fB0644\fR (also adds 'other' read access). The leading
|
|
\&'0' is optional.
|
|
.PP
|
|
This feature is available in Postfix 3.9 and later.
|
|
.SH maillog_file_prefixes (default: /var, /dev/stdout)
|
|
A list of allowed prefixes for a maillog_file value. This is a
|
|
safety feature to contain the damage from a single configuration
|
|
mistake. Specify one or more prefix strings, separated by comma or
|
|
whitespace.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH maillog_file_rotate_suffix (default: %Y%m%d\-%H%M%S)
|
|
The format of the suffix to append to $maillog_file while rotating
|
|
the file with "postfix logrotate". See \fBstrftime\fR(3) for syntax. The
|
|
default suffix, YYYYMMDD\-HHMMSS, allows logs to be rotated frequently.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH mailq_path (default: see "postconf \-d" output)
|
|
Sendmail compatibility feature that specifies where the Postfix
|
|
\fBmailq\fR(1) command is installed. This command can be used to
|
|
list the Postfix mail queue.
|
|
.SH manpage_directory (default: see "postconf \-d" output)
|
|
Where the Postfix manual pages are installed.
|
|
.SH maps_rbl_domains (default: empty)
|
|
Obsolete feature: use the reject_rbl_client feature instead.
|
|
.SH maps_rbl_reject_code (default: 554)
|
|
The numerical Postfix SMTP server response code when a remote SMTP
|
|
client request is blocked by the reject_rbl_client, reject_rhsbl_client,
|
|
reject_rhsbl_reverse_client, reject_rhsbl_sender or
|
|
reject_rhsbl_recipient restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH masquerade_classes (default: envelope_sender, header_sender, header_recipient)
|
|
What addresses are subject to address masquerading.
|
|
.PP
|
|
By default, address masquerading is limited to envelope sender
|
|
addresses, and to header sender and header recipient addresses.
|
|
This allows you to use address masquerading on a mail gateway while
|
|
still being able to forward mail to users on individual machines.
|
|
.PP
|
|
Specify zero or more of: envelope_sender, envelope_recipient,
|
|
header_sender, header_recipient
|
|
.SH masquerade_domains (default: empty)
|
|
Optional list of domains whose subdomain structure will be stripped
|
|
off in email addresses.
|
|
.PP
|
|
The list is processed left to right, and processing stops at the
|
|
first match. Thus,
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
masquerade_domains = foo.example.com example.com
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
strips "user@any.thing.foo.example.com" to "user@foo.example.com",
|
|
but strips "user@any.thing.else.example.com" to "user@example.com".
|
|
.PP
|
|
A domain name prefixed with ! means do not masquerade this domain
|
|
or its subdomains. Thus,
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
masquerade_domains = !foo.example.com example.com
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
does not change "user@any.thing.foo.example.com" or "user@foo.example.com",
|
|
but strips "user@any.thing.else.example.com" to "user@example.com".
|
|
.PP
|
|
Note: with Postfix version 2.2, message header address masquerading
|
|
happens only when message header address rewriting is enabled:
|
|
.IP \(bu
|
|
The message is received with the Postfix \fBsendmail\fR(1) command,
|
|
.IP \(bu
|
|
The message is received from a network client that matches
|
|
$local_header_rewrite_clients,
|
|
.IP \(bu
|
|
The message is received from the network, and the
|
|
remote_header_rewrite_domain parameter specifies a non\-empty value.
|
|
.br
|
|
.PP
|
|
To get the behavior before Postfix version 2.2, specify
|
|
"local_header_rewrite_clients = static:all".
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
masquerade_domains = $mydomain
|
|
.fi
|
|
.ad
|
|
.SH masquerade_exceptions (default: empty)
|
|
Optional list of user names that are not subjected to address
|
|
masquerading, even when their addresses match $masquerade_domains.
|
|
.PP
|
|
By default, address masquerading makes no exceptions.
|
|
.PP
|
|
Specify a list of user names, "/file/name" or "type:table" patterns,
|
|
separated by commas and/or whitespace. The list is matched left to
|
|
right, and the search stops on the first match. A "/file/name"
|
|
pattern is replaced
|
|
by its contents; a "type:table" lookup table is matched when a name
|
|
matches a lookup key (the lookup result is ignored). Continue long
|
|
lines by starting the next line with whitespace. Specify "!pattern"
|
|
to exclude a name from the list. The form "!/file/name" is supported
|
|
only in Postfix version 2.4 and later.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
masquerade_exceptions = root, mailer\-daemon
|
|
masquerade_exceptions = root
|
|
.fi
|
|
.ad
|
|
.SH master_service_disable (default: empty)
|
|
Selectively disable \fBmaster\fR(8) listener ports by service type
|
|
or by service name and type. Specify a list of service types
|
|
("inet", "unix", "fifo", or "pass") or "name/type" tuples, where
|
|
"name" is the first field of a master.cf entry and "type" is a
|
|
service type. As with other Postfix matchlists, a search stops at
|
|
the first match. Specify "!pattern" to exclude a service from the
|
|
list. By default, all \fBmaster\fR(8) listener ports are enabled.
|
|
.PP
|
|
Note: this feature does not support "/file/name" or "type:table"
|
|
patterns, nor does it support wildcards such as "*" or "all". This
|
|
is intentional.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# With Postfix 2.6..2.10 use '.' instead of '/'.
|
|
# Turn on all \fBmaster\fR(8) listener ports (the default).
|
|
master_service_disable =
|
|
# Turn off only the main SMTP listener port.
|
|
master_service_disable = smtp/inet
|
|
# Turn off all TCP/IP listener ports.
|
|
master_service_disable = inet
|
|
# Turn off all TCP/IP listener ports except "foo".
|
|
master_service_disable = !foo/inet, inet
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH max_idle (default: 100s)
|
|
The maximum amount of time that an idle Postfix daemon process waits
|
|
for an incoming connection before terminating voluntarily. This
|
|
parameter
|
|
is ignored by the Postfix queue manager and by other long\-lived
|
|
Postfix daemon processes.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH max_use (default: 100)
|
|
The maximal number of incoming connections that a Postfix daemon
|
|
process will service before terminating voluntarily. This parameter
|
|
is ignored by the Postfix queue
|
|
manager and by other long\-lived Postfix daemon processes.
|
|
.SH maximal_backoff_time (default: 4000s)
|
|
The maximal time between attempts to deliver a deferred message.
|
|
.PP
|
|
This parameter should be set to a value greater than or equal
|
|
to $minimal_backoff_time. See also $queue_run_delay.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH maximal_queue_lifetime (default: 5d)
|
|
Consider a message as undeliverable, when delivery fails with a
|
|
temporary error, and the time in the queue has reached the
|
|
maximal_queue_lifetime limit.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
Specify 0 when mail delivery should be tried only once.
|
|
.SH message_drop_headers (default: bcc, content\-length, resent\-bcc, return\-path)
|
|
Names of message headers that the \fBcleanup\fR(8) daemon will remove
|
|
after applying \fBheader_checks\fR(5) and before invoking Milter applications.
|
|
The default setting is compatible with Postfix < 3.0.
|
|
.PP
|
|
Specify a list of header names, separated by comma or space.
|
|
Names are matched in a case\-insensitive manner. The list of supported
|
|
header names is limited only by available memory.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH message_reject_characters (default: empty)
|
|
The set of characters that Postfix will reject in message
|
|
content. The usual C\-like escape sequences are recognized: \ea
|
|
\eb \ef \en \er \et \ev \e\fIddd\fR (up to three octal digits) and
|
|
\e\e.
|
|
.PP
|
|
Note 1: this feature does not recognize text that requires MIME
|
|
decoding. It inspects raw message content, just like header_checks
|
|
and body_checks.
|
|
.PP
|
|
Note 2: this feature is disabled with "receive_override_options
|
|
= no_header_body_checks".
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
message_reject_characters = \e0
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH message_size_limit (default: 10240000)
|
|
The maximal size in bytes of a message, including envelope information.
|
|
The value cannot exceed LONG_MAX (typically, a 32\-bit or 64\-bit
|
|
signed integer).
|
|
.PP
|
|
Note: be careful when making changes. Excessively small values
|
|
will result in the loss of non\-delivery notifications, when a bounce
|
|
message size exceeds the local or remote MTA's message size limit.
|
|
.SH message_strip_characters (default: empty)
|
|
The set of characters that Postfix will remove from message
|
|
content. The usual C\-like escape sequences are recognized: \ea
|
|
\eb \ef \en \er \et \ev \e\fIddd\fR (up to three octal digits) and
|
|
\e\e.
|
|
.PP
|
|
Note 1: this feature does not recognize text that requires MIME
|
|
decoding. It inspects raw message content, just like header_checks
|
|
and body_checks.
|
|
.PP
|
|
Note 2: this feature is disabled with "receive_override_options
|
|
= no_header_body_checks".
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
message_strip_characters = \e0
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH meta_directory (default: see 'postconf \-d' output)
|
|
The location of non\-executable files that are shared among
|
|
multiple Postfix instances, such as postfix\-files, dynamicmaps.cf,
|
|
and the multi\-instance template files main.cf.proto and master.cf.proto.
|
|
This directory should contain only Postfix\-related files. Typically,
|
|
the meta_directory parameter has the same default as the config_directory
|
|
parameter (/etc/postfix or /usr/local/etc/postfix).
|
|
.PP
|
|
For backwards compatibility with Postfix versions 2.6..2.11,
|
|
specify "meta_directory = $daemon_directory" in main.cf before
|
|
installing or upgrading Postfix, or specify "meta_directory =
|
|
/path/name" on the "make makefiles", "make install" or "make upgrade"
|
|
command line.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH milter_command_timeout (default: 30s)
|
|
The time limit for sending an SMTP command to a Milter (mail
|
|
filter) application, and for receiving the response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_connect_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to Milter (mail filter) applications
|
|
after completion of an SMTP connection. See MILTER_README
|
|
for a list of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_connect_timeout (default: 30s)
|
|
The time limit for connecting to a Milter (mail filter)
|
|
application, and for negotiating protocol options.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_content_timeout (default: 300s)
|
|
The time limit for sending message content to a Milter (mail
|
|
filter) application, and for receiving the response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_data_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to version 4 or higher Milter (mail
|
|
filter) applications after the SMTP DATA command. See MILTER_README
|
|
for a list of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_default_action (default: tempfail)
|
|
The default action when a Milter (mail filter) response is
|
|
unavailable (for example, bad Postfix configuration or Milter
|
|
failure). Specify one of the following:
|
|
.IP "accept"
|
|
Proceed as if the mail filter was not present.
|
|
.br
|
|
.IP "reject"
|
|
Reject all further commands in this session
|
|
with a permanent status code.
|
|
.br
|
|
.IP "tempfail"
|
|
Reject all further commands in this session
|
|
with a temporary status code.
|
|
.br
|
|
.IP "quarantine"
|
|
Like "accept", but freeze the message in
|
|
the "hold" queue. Available with Postfix 2.6 and later.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_end_of_data_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to Milter (mail filter) applications
|
|
after the message end\-of\-data. See MILTER_README for a list of
|
|
available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_end_of_header_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to Milter (mail filter) applications
|
|
after the end of the message header. See MILTER_README for a list
|
|
of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH milter_header_checks (default: empty)
|
|
Optional lookup tables for content inspection of message headers
|
|
that are produced by Milter applications. See the \fBheader_checks\fR(5)
|
|
manual page available actions. Currently, PREPEND is not implemented.
|
|
.PP
|
|
The following example sends all mail that is marked as SPAM to
|
|
a spam handling machine. Note that matches are case\-insensitive
|
|
by default.
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
milter_header_checks = pcre:/etc/postfix/milter_header_checks
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/milter_header_checks:
|
|
/^X\-SPAM\-FLAG:\es+YES/ FILTER mysmtp:sanitizer.example.com:25
|
|
.fi
|
|
.ad
|
|
.PP
|
|
The milter_header_checks mechanism could also be used for
|
|
allowlisting. For example it could be used to skip heavy content
|
|
inspection for DKIM\-signed mail from known friendly domains.
|
|
.PP
|
|
This feature is available in Postfix 2.7, and as an optional
|
|
patch for Postfix 2.6.
|
|
.SH milter_helo_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to Milter (mail filter) applications
|
|
after the SMTP HELO or EHLO command. See
|
|
MILTER_README for a list of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_macro_daemon_name (default: $myhostname)
|
|
The {daemon_name} macro value for Milter (mail filter) applications.
|
|
See MILTER_README for a list of available macro names and their
|
|
meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_macro_defaults (default: empty)
|
|
Optional list of \fIname=value\fR pairs that specify default
|
|
values for arbitrary macros that Postfix may send to Milter
|
|
applications. These defaults are used when there is no corresponding
|
|
information from the message delivery context.
|
|
.PP
|
|
Specify \fIname=value\fR or \fI{name=value}\fR pairs separated
|
|
by comma or whitespace. Enclose a pair in "{}" when a value contains
|
|
comma or whitespace (this form ignores whitespace after the enclosing
|
|
"{", around the "=", and before the enclosing "}").
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH milter_macro_v (default: $mail_name $mail_version)
|
|
The {v} macro value for Milter (mail filter) applications.
|
|
See MILTER_README for a list of available macro names and their
|
|
meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_mail_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to Milter (mail filter) applications
|
|
after the SMTP MAIL FROM command. See MILTER_README
|
|
for a list of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_protocol (default: 6)
|
|
The mail filter protocol version and optional protocol extensions
|
|
for communication with a Milter application; prior to Postfix 2.6
|
|
the default protocol is 2. Postfix
|
|
sends this version number during the initial protocol handshake.
|
|
It should match the version number that is expected by the mail
|
|
filter application (or by its Milter library).
|
|
.PP
|
|
Protocol versions:
|
|
.IP "2"
|
|
Use Sendmail 8 mail filter protocol version 2 (default
|
|
with Sendmail version 8.11 .. 8.13 and Postfix version 2.3 ..
|
|
2.5).
|
|
.br
|
|
.IP "3"
|
|
Use Sendmail 8 mail filter protocol version 3.
|
|
.br
|
|
.IP "4"
|
|
Use Sendmail 8 mail filter protocol version 4.
|
|
.br
|
|
.IP "6"
|
|
Use Sendmail 8 mail filter protocol version 6 (default
|
|
with Sendmail version 8.14 and Postfix version 2.6).
|
|
.br
|
|
.br
|
|
.PP
|
|
Protocol extensions:
|
|
.IP "no_header_reply"
|
|
Specify this when the Milter application
|
|
will not reply for each individual message header.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_rcpt_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to Milter (mail filter) applications
|
|
after the SMTP RCPT TO command. See MILTER_README
|
|
for a list of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH milter_unknown_command_macros (default: see "postconf \-d" output)
|
|
The macros that are sent to version 3 or higher Milter (mail
|
|
filter) applications after an unknown SMTP command. See MILTER_README
|
|
for a list of available macro names and their meanings.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH mime_boundary_length_limit (default: 2048)
|
|
The maximal length of MIME multipart boundary strings. The MIME
|
|
processor is unable to distinguish between boundary strings that
|
|
do not differ in the first $mime_boundary_length_limit characters.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH mime_header_checks (default: $header_checks)
|
|
Optional lookup tables for content inspection of MIME related
|
|
message headers, as described in the \fBheader_checks\fR(5) manual page.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH mime_nesting_limit (default: 100)
|
|
The maximal recursion level that the MIME processor will handle.
|
|
Postfix refuses mail that is nested deeper than the specified limit.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH minimal_backoff_time (default: 300s)
|
|
The minimal time between attempts to deliver a deferred message;
|
|
prior to Postfix 2.4 the default value was 1000s.
|
|
.PP
|
|
This parameter also limits the time an unreachable destination is
|
|
kept in the short\-term, in\-memory, destination status cache.
|
|
.PP
|
|
This parameter should be set greater than or equal to
|
|
$queue_run_delay. See also $maximal_backoff_time.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH multi_instance_directories (default: empty)
|
|
An optional list of non\-default Postfix configuration directories;
|
|
these directories belong to additional Postfix instances that share
|
|
the Postfix executable files and documentation with the default
|
|
Postfix instance, and that are started, stopped, etc., together
|
|
with the default Postfix instance. Specify a list of pathnames
|
|
separated by comma or whitespace.
|
|
.PP
|
|
When $multi_instance_directories is empty, the \fBpostfix\fR(1) command
|
|
runs in single\-instance mode and operates on a single Postfix
|
|
instance only. Otherwise, the \fBpostfix\fR(1) command runs in multi\-instance
|
|
mode and invokes the multi\-instance manager specified with the
|
|
multi_instance_wrapper parameter. The multi\-instance manager in
|
|
turn executes \fBpostfix\fR(1) commands for the default instance and for
|
|
all Postfix instances in $multi_instance_directories.
|
|
.PP
|
|
Currently, this parameter setting is ignored except for the
|
|
default main.cf file.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH multi_instance_enable (default: no)
|
|
Allow this Postfix instance to be started, stopped, etc., by a
|
|
multi\-instance manager. By default, new instances are created in
|
|
a safe state that prevents them from being started inadvertently.
|
|
This parameter is reserved for the multi\-instance manager.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH multi_instance_group (default: empty)
|
|
The optional instance group name of this Postfix instance. A
|
|
group identifies closely\-related Postfix instances that the
|
|
multi\-instance manager can start, stop, etc., as a unit. This
|
|
parameter is reserved for the multi\-instance manager.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH multi_instance_name (default: empty)
|
|
The optional instance name of this Postfix instance. This name
|
|
becomes also the default value for the syslog_name parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH multi_instance_wrapper (default: empty)
|
|
The pathname of a multi\-instance manager command that the
|
|
\fBpostfix\fR(1) command invokes when the multi_instance_directories
|
|
parameter value is non\-empty. The pathname may be followed by
|
|
initial command arguments separated by whitespace; shell
|
|
metacharacters such as quotes are not supported in this context.
|
|
.PP
|
|
The \fBpostfix\fR(1) command invokes the manager command with the
|
|
\fBpostfix\fR(1) non\-option command arguments on the manager command line,
|
|
and with all installation configuration parameters exported into
|
|
the manager command process environment. The manager command in
|
|
turn invokes the \fBpostfix\fR(1) command for individual Postfix instances
|
|
as "postfix \-c \fIconfig_directory\fR \fIcommand\fR".
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH multi_recipient_bounce_reject_code (default: 550)
|
|
The numerical Postfix SMTP server response code when a remote SMTP
|
|
client request is blocked by the reject_multi_recipient_bounce
|
|
restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH mydestination (default: $myhostname, localhost.$mydomain, localhost)
|
|
The list of domains that are delivered via the $local_transport
|
|
mail delivery transport. By default this is the Postfix \fBlocal\fR(8)
|
|
delivery agent which looks up all recipients in /etc/passwd and
|
|
/etc/aliases. The SMTP server validates recipient addresses with
|
|
$local_recipient_maps and rejects non\-existent recipients. See also
|
|
the local domain class in the ADDRESS_CLASS_README file.
|
|
.PP
|
|
The default mydestination value specifies names for the local
|
|
machine only. On a mail domain gateway, you should also include
|
|
$mydomain.
|
|
.PP
|
|
The $local_transport delivery method is also selected for mail
|
|
addressed to user@[the.net.work.address] of the mail system (the
|
|
IP addresses specified with the inet_interfaces and proxy_interfaces
|
|
parameters).
|
|
.PP
|
|
Warnings:
|
|
.IP \(bu
|
|
Do not specify the names of virtual domains \- those domains
|
|
are specified elsewhere. See VIRTUAL_README for more information.
|
|
.IP \(bu
|
|
Do not specify the names of domains that this machine is
|
|
backup MX host for. See STANDARD_CONFIGURATION_README for how to
|
|
set up backup MX hosts.
|
|
.IP \(bu
|
|
By default, the Postfix SMTP server rejects mail for recipients
|
|
not listed with the local_recipient_maps parameter. See the
|
|
\fBpostconf\fR(5) manual for a description of the local_recipient_maps
|
|
and unknown_local_recipient_reject_code parameters.
|
|
.br
|
|
.PP
|
|
Specify a list of host or domain names, "/file/name" or "type:table"
|
|
patterns, separated by commas and/or whitespace. A "/file/name"
|
|
pattern is replaced by its contents; a "type:table" lookup table
|
|
is matched when a name matches a lookup key (the lookup result is
|
|
ignored). Continue long lines by starting the next line with
|
|
whitespace.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
mydestination = $myhostname, localhost.$mydomain $mydomain
|
|
mydestination = $myhostname, localhost.$mydomain www.$mydomain, ftp.$mydomain
|
|
.fi
|
|
.ad
|
|
.SH mydomain (default: see "postconf \-d" output)
|
|
The internet domain name of this mail system. The default is to
|
|
use $myhostname minus the first component, or "localdomain" (Postfix
|
|
2.3 and later). $mydomain is used as
|
|
a default value for many other configuration parameters.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
mydomain = domain.tld
|
|
.fi
|
|
.ad
|
|
.SH myhostname (default: see "postconf \-d" output)
|
|
The internet hostname of this mail system. The default is to use
|
|
the fully\-qualified domain name (FQDN) from gethostname(), or to
|
|
use the non\-FQDN result from gethostname() and append ".$mydomain".
|
|
$myhostname is used as a default value for many other configuration
|
|
parameters.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
myhostname = host.example.com
|
|
.fi
|
|
.ad
|
|
.SH mynetworks (default: see "postconf \-d" output)
|
|
The list of "trusted" remote SMTP clients that have more privileges than
|
|
"strangers".
|
|
.PP
|
|
In particular, "trusted" SMTP clients are allowed to relay mail
|
|
through Postfix. See the smtpd_relay_restrictions parameter
|
|
description in the \fBpostconf\fR(5) manual.
|
|
.PP
|
|
You can specify the list of "trusted" network addresses by hand
|
|
or you can let Postfix do it for you (which is the default).
|
|
See the description of the mynetworks_style parameter for more
|
|
information.
|
|
.PP
|
|
If you specify the mynetworks list by hand,
|
|
Postfix ignores the mynetworks_style setting.
|
|
.PP
|
|
Specify a list of network addresses or network/netmask patterns,
|
|
separated by commas and/or whitespace. Continue long lines by
|
|
starting the next line with whitespace.
|
|
.PP
|
|
The netmask specifies the number of bits in the network part
|
|
of a host address. You can also specify "/file/name" or "type:table"
|
|
patterns. A "/file/name" pattern is replaced by its contents; a
|
|
"type:table" lookup table is matched when a table entry matches a
|
|
lookup string (the lookup result is ignored).
|
|
.PP
|
|
The list is matched left to right, and the search stops on the
|
|
first match. Specify "!pattern" to exclude an address or network
|
|
block from the list. The form "!/file/name" is supported only
|
|
in Postfix version 2.4 and later.
|
|
.PP
|
|
Note 1: Pattern matching of domain names is controlled by the
|
|
presence or absence of "mynetworks" in the parent_domain_matches_subdomains
|
|
parameter value.
|
|
.PP
|
|
Note 2: IP version 6 address information must be specified inside
|
|
[] in the mynetworks value, and in files specified with
|
|
"/file/name". IP version 6 addresses contain the ":" character,
|
|
and would otherwise be confused with a "type:table" pattern.
|
|
.PP
|
|
Note 3: CIDR ranges cannot be specified in hash tables. Use cidr
|
|
tables if CIDR ranges are used.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
mynetworks = 127.0.0.0/8 168.100.189.0/28
|
|
mynetworks = !192.168.0.1, 192.168.0.0/28
|
|
mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64
|
|
mynetworks = $config_directory/mynetworks
|
|
mynetworks = hash:/etc/postfix/network_table
|
|
mynetworks = cidr:/etc/postfix/network_table.cidr
|
|
.fi
|
|
.ad
|
|
.SH mynetworks_style (default: Postfix >= 3.0: host, Postfix < 3.0: subnet)
|
|
The method to generate the default value for the mynetworks parameter.
|
|
This is the list of trusted networks for relay access control etc.
|
|
.IP \(bu
|
|
Specify "mynetworks_style = host" when Postfix should
|
|
"trust" only the local machine.
|
|
.IP \(bu
|
|
Specify "mynetworks_style = subnet" when Postfix
|
|
should "trust" remote SMTP clients in the same IP subnetworks as the local
|
|
machine. On Linux, this works correctly only with interfaces
|
|
specified with the "ifconfig" or "ip" command.
|
|
.IP \(bu
|
|
Specify "mynetworks_style = class" when Postfix should
|
|
"trust" remote SMTP clients in the same IP class A/B/C networks as the
|
|
local machine. Caution: this may cause
|
|
Postfix to "trust" your entire provider's network. Instead, specify
|
|
an explicit mynetworks list by hand, as described with the mynetworks
|
|
configuration parameter.
|
|
.br
|
|
.SH myorigin (default: $myhostname)
|
|
The domain name that locally\-posted mail appears to come
|
|
from, and that locally posted mail is delivered to. The default,
|
|
$myhostname, is adequate for small sites. If you run a domain with
|
|
multiple machines, you should (1) change this to $mydomain and (2)
|
|
set up a domain\-wide alias database that aliases each user to
|
|
user@that.users.mailhost.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
myorigin = $mydomain
|
|
.fi
|
|
.ad
|
|
.SH nested_header_checks (default: $header_checks)
|
|
Optional lookup tables for content inspection of non\-MIME message
|
|
headers in attached messages, as described in the \fBheader_checks\fR(5)
|
|
manual page.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH newaliases_path (default: see "postconf \-d" output)
|
|
Sendmail compatibility feature that specifies the location of the
|
|
\fBnewaliases\fR(1) command. This command can be used to rebuild the
|
|
\fBlocal\fR(8) \fBaliases\fR(5) database.
|
|
.SH non_fqdn_reject_code (default: 504)
|
|
The numerical Postfix SMTP server reply code when a client request
|
|
is rejected by the reject_non_fqdn_helo_hostname, reject_non_fqdn_sender
|
|
or reject_non_fqdn_recipient restriction.
|
|
.SH non_smtpd_milters (default: empty)
|
|
A list of Milter (mail filter) applications for new mail that
|
|
does not arrive via the Postfix \fBsmtpd\fR(8) server. This includes local
|
|
submission via the \fBsendmail\fR(1) command line, new mail that arrives
|
|
via the Postfix \fBqmqpd\fR(8) server, and old mail that is re\-injected
|
|
into the queue with "postsuper \-r". Specify space or comma as a
|
|
separator. See the MILTER_README document for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH notify_classes (default: resource, software)
|
|
The list of error classes that are reported to the postmaster. These
|
|
postmaster notifications do not replace user notifications. The
|
|
default is to report only the most serious problems. The paranoid
|
|
may wish to turn on the policy (UCE and mail relaying) and protocol
|
|
error (broken mail software) reports.
|
|
.PP
|
|
NOTE: postmaster notifications may contain confidential information
|
|
such as SASL passwords or message content. It is the system
|
|
administrator's responsibility to treat such information with care.
|
|
.PP
|
|
The error classes are:
|
|
.IP "\fBbounce\fR (also implies \fB2bounce\fR)"
|
|
Send the postmaster copies of the headers of bounced mail, and
|
|
send transcripts of SMTP sessions when Postfix rejects mail. The
|
|
notification is sent to the address specified with the
|
|
bounce_notice_recipient configuration parameter (default: postmaster).
|
|
.br
|
|
.IP "\fB2bounce\fR"
|
|
Send undeliverable bounced mail to the postmaster. The notification
|
|
is sent to the address specified with the 2bounce_notice_recipient
|
|
configuration parameter (default: postmaster).
|
|
.br
|
|
.IP "\fBdata\fR"
|
|
Send the postmaster a transcript of the SMTP session with an
|
|
error because a critical data file was unavailable. The notification
|
|
is sent to the address specified with the error_notice_recipient
|
|
configuration parameter (default: postmaster).
|
|
.br
|
|
This feature
|
|
is available in Postfix 2.9 and later.
|
|
.br
|
|
.IP "\fBdelay\fR"
|
|
Send the postmaster copies of the headers of delayed mail (see
|
|
delay_warning_time). The
|
|
notification is sent to the address specified with the
|
|
delay_notice_recipient configuration parameter (default: postmaster).
|
|
.br
|
|
.IP "\fBpolicy\fR"
|
|
Send the postmaster a transcript of the SMTP session when a
|
|
client request was rejected because of (UCE) policy. The notification
|
|
is sent to the address specified with the error_notice_recipient
|
|
configuration parameter (default: postmaster).
|
|
.br
|
|
.IP "\fBprotocol\fR"
|
|
Send the postmaster a transcript of the SMTP session in case
|
|
of client or server protocol errors. The notification is sent to
|
|
the address specified with the error_notice_recipient configuration
|
|
parameter (default: postmaster).
|
|
.br
|
|
.IP "\fBresource\fR"
|
|
Inform the postmaster of mail not delivered due to resource
|
|
problems. The notification is sent to the address specified with
|
|
the error_notice_recipient configuration parameter (default:
|
|
postmaster).
|
|
.br
|
|
.IP "\fBsoftware\fR"
|
|
Inform the postmaster of mail not delivered due to software
|
|
problems. The notification is sent to the address specified with
|
|
the error_notice_recipient configuration parameter (default:
|
|
postmaster).
|
|
.br
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
notify_classes = bounce, delay, policy, protocol, resource, software
|
|
notify_classes = 2bounce, resource, software
|
|
.fi
|
|
.ad
|
|
.SH openssl_path (default: openssl)
|
|
The location of the OpenSSL command line program \fBopenssl\fR(1). This
|
|
is used by the "\fBpostfix tls\fR" command to create private keys,
|
|
certificate signing requests, self\-signed certificates, and to
|
|
compute public key digests for DANE TLSA records. In multi\-instance
|
|
environments, this parameter is always determined from the configuration
|
|
of the default Postfix instance.
|
|
.PP
|
|
Example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
# NetBSD pkgsrc:
|
|
openssl_path = /usr/pkg/bin/openssl
|
|
# Local build:
|
|
openssl_path = /usr/local/bin/openssl
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH owner_request_special (default: yes)
|
|
Enable special treatment for owner\-\fIlistname\fR entries in the
|
|
\fBaliases\fR(5) file, and don't split owner\-\fIlistname\fR and
|
|
\fIlistname\fR\-request address localparts when the recipient_delimiter
|
|
is set to "\-". This feature is useful for mailing lists.
|
|
.SH parent_domain_matches_subdomains (default: see "postconf \-d" output)
|
|
A list of Postfix features where the pattern "example.com" also
|
|
matches subdomains of example.com,
|
|
instead of requiring an explicit ".example.com" pattern. This is
|
|
planned backwards compatibility: eventually, all Postfix features
|
|
are expected to require explicit ".example.com" style patterns when
|
|
you really want to match subdomains.
|
|
.PP
|
|
The following Postfix feature names are supported.
|
|
.IP "Postfix version 1.0 and later"
|
|
debug_peer_list,
|
|
fast_flush_domains,
|
|
mynetworks,
|
|
permit_mx_backup_networks,
|
|
relay_domains,
|
|
transport_maps
|
|
.br
|
|
.IP "Postfix version 1.1 and later"
|
|
qmqpd_authorized_clients,
|
|
smtpd_access_maps,
|
|
.br
|
|
.IP "Postfix version 2.8 and later"
|
|
postscreen_access_list
|
|
.br
|
|
.IP "Postfix version 3.0 and later"
|
|
smtpd_client_event_limit_exceptions
|
|
.br
|
|
.br
|
|
.SH permit_mx_backup_networks (default: empty)
|
|
Restrict the use of the permit_mx_backup SMTP access feature to
|
|
only domains whose primary MX hosts match the listed networks.
|
|
The parameter value syntax is the same as with the mynetworks
|
|
parameter; note, however, that the default value is empty.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "permit_mx_backup_networks" in the
|
|
parent_domain_matches_subdomains parameter value.
|
|
.SH pickup_service_name (default: pickup)
|
|
The name of the \fBpickup\fR(8) service. This service picks up local mail
|
|
submissions from the Postfix maildrop queue.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH pipe_delivery_status_filter (default: $default_delivery_status_filter)
|
|
Optional filter for the \fBpipe\fR(8) delivery agent to change the
|
|
delivery status code or explanatory text of successful or unsuccessful
|
|
deliveries. See default_delivery_status_filter for details.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH plaintext_reject_code (default: 450)
|
|
The numerical Postfix SMTP server response code when a request
|
|
is rejected by the \fBreject_plaintext_session\fR restriction.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH postlog_service_name (default: postlog)
|
|
The name of the \fBpostlogd\fR(8) service entry in master.cf.
|
|
This service appends logfile records to the file specified
|
|
with the maillog_file parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH postlogd_watchdog_timeout (default: 10s)
|
|
How much time a \fBpostlogd\fR(8) process may take to process a request
|
|
before it is terminated by a built\-in watchdog timer. This is a
|
|
safety mechanism that prevents \fBpostlogd\fR(8) from becoming non\-responsive
|
|
due to a bug in Postfix itself or in system software. This limit
|
|
cannot be set under 10s.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH postmulti_control_commands (default: reload flush)
|
|
The \fBpostfix\fR(1) commands that the \fBpostmulti\fR(1) instance manager
|
|
treats as "control" commands, that operate on running instances. For
|
|
these commands, disabled instances are skipped.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH postmulti_start_commands (default: start)
|
|
The \fBpostfix\fR(1) commands that the \fBpostmulti\fR(1) instance manager treats
|
|
as "start" commands. For these commands, disabled instances are "checked"
|
|
rather than "started", and failure to "start" a member instance of an
|
|
instance group will abort the start\-up of later instances.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH postmulti_stop_commands (default: see "postconf \-d" output)
|
|
The \fBpostfix\fR(1) commands that the \fBpostmulti\fR(1) instance manager treats
|
|
as "stop" commands. For these commands, disabled instances are skipped,
|
|
and enabled instances are processed in reverse order.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH postscreen_access_list (default: permit_mynetworks)
|
|
Permanent allow/denylist for remote SMTP client IP addresses.
|
|
\fBpostscreen\fR(8) searches this list immediately after a remote SMTP
|
|
client connects. Specify a comma\- or whitespace\-separated list of
|
|
commands (in upper or lower case) or lookup tables. The search stops
|
|
upon the first command that fires for the client IP address.
|
|
.IP "\fB permit_mynetworks \fR"
|
|
Allowlist the client and
|
|
terminate the search if the client IP address matches $mynetworks.
|
|
Do not subject the client to any before/after 220 greeting tests.
|
|
Pass the connection immediately to a Postfix SMTP server process.
|
|
.br
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "postscreen_access_list" in the
|
|
parent_domain_matches_subdomains parameter value.
|
|
.br
|
|
.IP "\fB type:table \fR"
|
|
Query the specified lookup
|
|
table. Each table lookup result is an access list, except that
|
|
access lists inside a table cannot specify type:table entries.
|
|
.br
|
|
To discourage the use of hash, btree, etc. tables, there is no
|
|
support for substring matching like \fBsmtpd\fR(8). Use CIDR tables
|
|
instead.
|
|
.br
|
|
.IP "\fB permit \fR"
|
|
Allowlist the client and terminate
|
|
the search. Do not subject the client to any before/after 220
|
|
greeting tests. Pass the connection immediately to a Postfix SMTP
|
|
server process.
|
|
.br
|
|
.IP "\fB reject \fR"
|
|
Denylist the client and terminate
|
|
the search. Subject the client to the action configured with the
|
|
postscreen_denylist_action configuration parameter.
|
|
.br
|
|
.IP "\fB dunno \fR"
|
|
All \fBpostscreen\fR(8) access lists
|
|
implicitly have this command at the end.
|
|
.br
|
|
When \fB dunno \fR
|
|
is executed inside a lookup table, return from the lookup table and
|
|
evaluate the next command.
|
|
.br
|
|
When \fB dunno \fR is executed
|
|
outside a lookup table, terminate the search, and subject the client
|
|
to the configured before/after 220 greeting tests.
|
|
.br
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
postscreen_access_list = permit_mynetworks,
|
|
cidr:/etc/postfix/postscreen_access.cidr
|
|
# Postfix < 3.6 use postscreen_blacklist_action.
|
|
postscreen_denylist_action = enforce
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/postscreen_access.cidr:
|
|
# Rules are evaluated in the order as specified.
|
|
# Denylist 192.168.* except 192.168.0.1.
|
|
192.168.0.1 dunno
|
|
192.168.0.0/16 reject
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_allowlist_interfaces (default: static:all)
|
|
A list of local \fBpostscreen\fR(8) server IP addresses where a
|
|
non\-allowlisted remote SMTP client can obtain \fBpostscreen\fR(8)'s temporary
|
|
allowlist status. This status is required before the client can
|
|
talk to a Postfix SMTP server process. By default, a client can
|
|
obtain \fBpostscreen\fR(8)'s allowlist status on any local \fBpostscreen\fR(8)
|
|
server IP address.
|
|
.PP
|
|
When \fBpostscreen\fR(8) listens on both primary and backup MX
|
|
addresses, the postscreen_allowlist_interfaces parameter can be
|
|
configured to give the temporary allowlist status only when a client
|
|
connects to a primary MX address. Once a client is allowlisted it
|
|
can talk to a Postfix SMTP server on any address. Thus, clients
|
|
that connect only to backup MX addresses will never become allowlisted,
|
|
and will never be allowed to talk to a Postfix SMTP server process.
|
|
.PP
|
|
Specify a list of network addresses or network/netmask patterns,
|
|
separated by commas and/or whitespace. The netmask specifies the
|
|
number of bits in the network part of a host address. Continue long
|
|
lines by starting the next line with whitespace.
|
|
.PP
|
|
You can also specify "/file/name" or "type:table" patterns. A
|
|
"/file/name" pattern is replaced by its contents; a "type:table"
|
|
lookup table is matched when a table entry matches a lookup string
|
|
(the lookup result is ignored).
|
|
.PP
|
|
The list is matched left to right, and the search stops on the
|
|
first match. Specify "!pattern" to exclude an address or network
|
|
block from the list.
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the postscreen_allowlist_interfaces value, and in files
|
|
specified with "/file/name". IP version 6 addresses contain the
|
|
":" character, and would otherwise be confused with a "type:table"
|
|
pattern.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
# Don't allowlist connections to the backup IP address.
|
|
# Postfix < 3.6 use postscreen_whitelist_interfaces.
|
|
postscreen_allowlist_interfaces = !168.100.189.8, static:all
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.PP
|
|
Available as postscreen_whitelist_interfaces in Postfix 2.9 \- 3.5.
|
|
.SH postscreen_bare_newline_action (default: ignore)
|
|
The action that \fBpostscreen\fR(8) takes when a remote SMTP client sends
|
|
a bare newline character, that is, a newline not preceded by carriage
|
|
return. Specify one of the following:
|
|
.IP "\fBignore\fR"
|
|
Ignore the failure of this test. Allow other tests to complete.
|
|
Do \fInot\fR repeat this test before the result from some
|
|
other test expires.
|
|
This option is useful for testing and collecting statistics
|
|
without blocking mail permanently.
|
|
.br
|
|
.IP "\fBenforce\fR"
|
|
Allow other tests to complete. Reject attempts to deliver mail
|
|
with a 550 SMTP reply, and log the helo/sender/recipient information.
|
|
Repeat this test the next time the client connects.
|
|
.br
|
|
.IP "\fBdrop\fR"
|
|
Drop the connection immediately with a 521 SMTP reply. Repeat
|
|
this test the next time the client connects.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_bare_newline_enable (default: no)
|
|
Enable "bare newline" SMTP protocol tests in the \fBpostscreen\fR(8)
|
|
server. These tests are expensive: a remote SMTP client must
|
|
disconnect after
|
|
it passes the test, before it can talk to a real Postfix SMTP server.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_bare_newline_ttl (default: 30d)
|
|
The amount of time that \fBpostscreen\fR(8) remembers that a client
|
|
IP address passed a "bare newline" SMTP protocol test, before it
|
|
address is required to pass that test again. The default
|
|
is long because a remote SMTP client must disconnect after it passes
|
|
the test,
|
|
before it can talk to a real Postfix SMTP server.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_blacklist_action (default: ignore)
|
|
Renamed to postscreen_denylist_action in Postfix 3.6.
|
|
.PP
|
|
This feature is available in Postfix 2.8 \- 3.5.
|
|
.SH postscreen_cache_cleanup_interval (default: 12h)
|
|
The amount of time between \fBpostscreen\fR(8) cache cleanup runs.
|
|
Cache cleanup increases the load on the cache database and should
|
|
therefore not be run frequently. This feature requires that the
|
|
cache database supports the "delete" and "sequence" operators.
|
|
Specify a zero interval to disable cache cleanup.
|
|
.PP
|
|
After each cache cleanup run, the \fBpostscreen\fR(8) daemon logs the
|
|
number of entries that were retained and dropped. A cleanup run is
|
|
logged as "partial" when the daemon terminates early after "\fBpostfix
|
|
reload\fR", "\fBpostfix stop\fR", or no requests for $max_idle
|
|
seconds.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is h (hours).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_cache_map (default: btree:$data_directory/postscreen_cache)
|
|
Persistent storage for the \fBpostscreen\fR(8) server decisions.
|
|
.PP
|
|
To share a \fBpostscreen\fR(8) cache between multiple \fBpostscreen\fR(8)
|
|
instances, use "postscreen_cache_map = proxy:btree:/path/to/file".
|
|
This requires Postfix version 2.9 or later; earlier \fBproxymap\fR(8)
|
|
implementations don't support cache cleanup. For an alternative
|
|
approach see the \fBmemcache_table\fR(5) manpage.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_cache_retention_time (default: 7d)
|
|
The amount of time that \fBpostscreen\fR(8) will cache an expired
|
|
temporary allowlist entry before it is removed. This prevents clients
|
|
from being logged as "NEW" just because their cache entry expired
|
|
an hour ago. It also prevents the cache from filling up with clients
|
|
that passed some deep protocol test once and never came back.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_client_connection_count_limit (default: $smtpd_client_connection_count_limit)
|
|
How many simultaneous connections any remote SMTP client is
|
|
allowed to have
|
|
with the \fBpostscreen\fR(8) daemon. By default, this limit is the same
|
|
as with the Postfix SMTP server. Note that the triage process can
|
|
take several seconds, with the time spent in postscreen_greet_wait
|
|
delay, and with the time spent talking to the \fBpostscreen\fR(8) built\-in
|
|
dummy SMTP protocol engine.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_command_count_limit (default: 20)
|
|
The limit on the total number of commands per SMTP session for
|
|
\fBpostscreen\fR(8)'s built\-in SMTP protocol engine. This SMTP engine
|
|
defers or rejects all attempts to deliver mail, therefore there is
|
|
no need to enforce separate limits on the number of junk commands
|
|
and error commands.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_command_filter (default: $smtpd_command_filter)
|
|
A mechanism to transform commands from remote SMTP clients.
|
|
See smtpd_command_filter for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH postscreen_command_time_limit (default: normal: 300s, overload: 10s)
|
|
The time limit to read an entire command line with \fBpostscreen\fR(8)'s
|
|
built\-in SMTP protocol engine.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_denylist_action (default: ignore)
|
|
The action that \fBpostscreen\fR(8) takes when a remote SMTP client is
|
|
permanently denylisted with the postscreen_access_list parameter.
|
|
Specify one of the following:
|
|
.IP "\fBignore\fR (default)"
|
|
Ignore this result. Allow other tests to complete. Repeat
|
|
this test the next time the client connects.
|
|
This option is useful for testing and collecting statistics
|
|
without blocking mail.
|
|
.br
|
|
.IP "\fBenforce\fR"
|
|
Allow other tests to complete. Reject attempts to deliver mail
|
|
with a 550 SMTP reply, and log the helo/sender/recipient information.
|
|
Repeat this test the next time the client connects.
|
|
.br
|
|
.IP "\fBdrop\fR"
|
|
Drop the connection immediately with a 521 SMTP reply. Repeat
|
|
this test the next time the client connects.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.PP
|
|
Available as postscreen_blacklist_action in Postfix 2.8 \- 3.5.
|
|
.SH postscreen_disable_vrfy_command (default: $disable_vrfy_command)
|
|
Disable the SMTP VRFY command in the \fBpostscreen\fR(8) daemon. See
|
|
disable_vrfy_command for details.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_discard_ehlo_keyword_address_maps (default: $smtpd_discard_ehlo_keyword_address_maps)
|
|
Lookup tables, indexed by the remote SMTP client address, with
|
|
case insensitive lists of EHLO keywords (pipelining, starttls, auth,
|
|
etc.) that the \fBpostscreen\fR(8) server will not send in the EHLO response
|
|
to a remote SMTP client. See smtpd_discard_ehlo_keywords for details.
|
|
The table is not searched by hostname for robustness reasons.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH postscreen_discard_ehlo_keywords (default: $smtpd_discard_ehlo_keywords)
|
|
A case insensitive list of EHLO keywords (pipelining, starttls,
|
|
auth, etc.) that the \fBpostscreen\fR(8) server will not send in the EHLO
|
|
response to a remote SMTP client. See smtpd_discard_ehlo_keywords
|
|
for details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH postscreen_dnsbl_action (default: ignore)
|
|
The action that \fBpostscreen\fR(8) takes when a remote SMTP client's combined
|
|
DNSBL score is equal to or greater than a threshold (as defined
|
|
with the postscreen_dnsbl_sites and postscreen_dnsbl_threshold
|
|
parameters). Specify one of the following:
|
|
.IP "\fBignore\fR (default)"
|
|
Ignore the failure of this test. Allow other tests to complete.
|
|
Repeat this test the next time the client connects.
|
|
This option is useful for testing and collecting statistics
|
|
without blocking mail.
|
|
.br
|
|
.IP "\fBenforce\fR"
|
|
Allow other tests to complete. Reject attempts to deliver mail
|
|
with a 550 SMTP reply, and log the helo/sender/recipient information.
|
|
Repeat this test the next time the client connects.
|
|
.br
|
|
.IP "\fBdrop\fR"
|
|
Drop the connection immediately with a 521 SMTP reply. Repeat
|
|
this test the next time the client connects.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_dnsbl_allowlist_threshold (default: 0)
|
|
Allow a remote SMTP client to skip "before" and "after 220
|
|
greeting" protocol tests, based on its combined DNSBL score as
|
|
defined with the postscreen_dnsbl_sites parameter.
|
|
.PP
|
|
Specify a negative value to enable this feature. When a client
|
|
passes the postscreen_dnsbl_allowlist_threshold without having
|
|
failed other tests, all pending or disabled tests are flagged as
|
|
completed with an expiration time based on the DNS reply TTL.
|
|
When a test was already completed, its expiration time is updated
|
|
if it was less than the value based on the DNS reply TTL. See
|
|
also postscreen_dnsbl_max_ttl and postscreen_dnsbl_min_ttl.
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.PP
|
|
Available as postscreen_dnsbl_whitelist_threshold in Postfix 2.11
|
|
\- 3.5.
|
|
.SH postscreen_dnsbl_max_ttl (default: ${postscreen_dnsbl_ttl?{$postscreen_dnsbl_ttl}:{1}}h)
|
|
The maximum amount of time that \fBpostscreen\fR(8) remembers that a
|
|
client IP address passed a DNS\-based reputation test, before it is
|
|
required to pass that test again. If the DNS
|
|
reply specifies a shorter TTL value, that value will be used unless
|
|
it would be smaller than postscreen_dnsbl_min_ttl.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is h (hours).
|
|
.PP
|
|
This feature is available in Postfix 3.1. The default setting
|
|
is backwards\-compatible with older Postfix versions.
|
|
.SH postscreen_dnsbl_min_ttl (default: 60s)
|
|
The minimum amount of time that \fBpostscreen\fR(8) remembers that a
|
|
client IP address passed a DNS\-based reputation test, before it
|
|
is required to pass that test again. If the DNS
|
|
reply specifies a larger TTL value, that value will be used unless
|
|
it would be larger than postscreen_dnsbl_max_ttl.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 3.1.
|
|
.SH postscreen_dnsbl_reply_map (default: empty)
|
|
A mapping from an actual DNSBL domain name which includes a secret
|
|
password, to the DNSBL domain name that postscreen will reply with
|
|
when it rejects mail. When no mapping is found, the actual DNSBL
|
|
domain will be used.
|
|
.PP
|
|
For maximal stability it is best to use a file that is read
|
|
into memory such as pcre:, regexp: or texthash: (texthash: is similar
|
|
to hash:, except a) there is no need to run \fBpostmap\fR(1) before the
|
|
file can be used, and b) texthash: does not detect changes after
|
|
the file is read).
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
postscreen_dnsbl_reply_map = texthash:/etc/postfix/dnsbl_reply
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/dnsbl_reply:
|
|
secret.zen.spamhaus.org zen.spamhaus.org
|
|
.fi
|
|
.ad
|
|
.PP
|
|
NOTE: This feature differs from the Postfix SMTP server's
|
|
rbl_reply_maps feature, where 1) the table search key includes the
|
|
optional "\fI=address\-filter\fR", and where 2) the lookup result
|
|
contains free text with \fI$name\fR variables.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_dnsbl_sites (default: empty)
|
|
Optional list of patterns with DNS allow/denylist domains, filters
|
|
and weight
|
|
factors. When the list is non\-empty, the \fBdnsblog\fR(8) daemon will
|
|
query these domains with the reversed IP addresses of remote SMTP
|
|
clients,
|
|
and \fBpostscreen\fR(8) will update an SMTP client's DNSBL score with
|
|
each non\-error reply as described below.
|
|
.PP
|
|
Caution: when postscreen rejects mail, its SMTP response contains
|
|
the DNSBL
|
|
domain name. Use the postscreen_dnsbl_reply_map feature to hide
|
|
"password" information in DNSBL domain names.
|
|
.PP
|
|
When a client's score is equal to or greater than the threshold
|
|
specified with postscreen_dnsbl_threshold, \fBpostscreen\fR(8) can drop
|
|
the connection with the remote SMTP client.
|
|
.PP
|
|
Specify a list of domain=filter*weight patterns, separated by
|
|
comma or whitespace.
|
|
.IP \(bu
|
|
When a pattern specifies no "=filter", \fBpostscreen\fR(8) will
|
|
use any non\-error DNSBL query result. Otherwise, \fBpostscreen\fR(8)
|
|
will use only DNSBL
|
|
query results that match the filter. The filter has the form d.d.d.d,
|
|
where each d is a number, or a pattern inside [] that contains one
|
|
or more ";"\-separated numbers or number..number ranges.
|
|
.IP \(bu
|
|
When a pattern specifies no "*weight", the weight of the
|
|
pattern is 1. Otherwise, the weight must be an integral number.
|
|
Specify a negative number for allowlisting.
|
|
.IP \(bu
|
|
When a pattern matches one or more DNSBL query results,
|
|
\fBpostscreen\fR(8) adds that pattern's weight once to the remote SMTP
|
|
client's DNSBL score.
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
To use example.com as a high\-confidence blocklist, and to
|
|
block mail with example.net and example.org only when both agree:
|
|
.PP
|
|
.nf
|
|
.na
|
|
postscreen_dnsbl_threshold = 2
|
|
postscreen_dnsbl_sites = example.com*2, example.net, example.org
|
|
.fi
|
|
.ad
|
|
.PP
|
|
To filter only DNSBL replies containing 127.0.0.4:
|
|
.PP
|
|
.nf
|
|
.na
|
|
postscreen_dnsbl_sites = example.com=127.0.0.4
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_dnsbl_threshold (default: 1)
|
|
The inclusive lower bound for blocking a remote SMTP client, based on
|
|
its combined DNSBL score as defined with the postscreen_dnsbl_sites
|
|
parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_dnsbl_timeout (default: 10s)
|
|
The time limit for DNSBL or DNSWL lookups. This is separate from
|
|
the timeouts in the \fBdnsblog\fR(8) daemon which are defined by system
|
|
\fBresolver\fR(3) routines.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 3.0.
|
|
.SH postscreen_dnsbl_ttl (default: 1h)
|
|
The amount of time that \fBpostscreen\fR(8) remembers that a client
|
|
IP address passed a DNS\-based reputation test, before it is required
|
|
to pass that test again.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is h (hours).
|
|
.PP
|
|
This feature is available in Postfix 2.8\-3.0. It was
|
|
replaced by postscreen_dnsbl_max_ttl in Postfix 3.1.
|
|
.SH postscreen_dnsbl_whitelist_threshold (default: 0)
|
|
Renamed to postscreen_dnsbl_allowlist_threshold in Postfix 3.6.
|
|
.PP
|
|
This feature is available in Postfix 2.11 \- 3.5.
|
|
.SH postscreen_enforce_tls (default: $smtpd_enforce_tls)
|
|
Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
|
|
require that clients use TLS encryption. See smtpd_postscreen_enforce_tls
|
|
for details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
Preferably, use postscreen_tls_security_level instead.
|
|
.SH postscreen_expansion_filter (default: see "postconf \-d" output)
|
|
List of characters that are permitted in postscreen_reject_footer
|
|
attribute expansions. See smtpd_expansion_filter for further
|
|
details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH postscreen_forbidden_commands (default: $smtpd_forbidden_commands)
|
|
List of commands that the \fBpostscreen\fR(8) server considers in
|
|
violation of the SMTP protocol. See smtpd_forbidden_commands for
|
|
syntax, and postscreen_non_smtp_command_action for possible actions.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_greet_action (default: ignore)
|
|
The action that \fBpostscreen\fR(8) takes when a remote SMTP client speaks
|
|
before its turn within the time specified with the postscreen_greet_wait
|
|
parameter. Specify one of the following:
|
|
.IP "\fBignore\fR (default)"
|
|
Ignore the failure of this test. Allow other tests to complete.
|
|
Repeat this test the next time the client connects.
|
|
This option is useful for testing and collecting statistics
|
|
without blocking mail.
|
|
.br
|
|
.IP "\fBenforce\fR"
|
|
Allow other tests to complete. Reject attempts to deliver mail
|
|
with a 550 SMTP reply, and log the helo/sender/recipient information.
|
|
Repeat this test the next time the client connects.
|
|
.br
|
|
.IP "\fBdrop\fR"
|
|
Drop the connection immediately with a 521 SMTP reply. Repeat
|
|
this test the next time the client connects.
|
|
.br
|
|
.br
|
|
.PP
|
|
In either case, \fBpostscreen\fR(8) will not allowlist the remote SMTP client
|
|
IP address.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_greet_banner (default: $smtpd_banner)
|
|
The \fItext\fR in the optional "220\-\fItext\fR..." server
|
|
response that
|
|
\fBpostscreen\fR(8) sends ahead of the real Postfix SMTP server's "220
|
|
text..." response, in an attempt to confuse bad SMTP clients so
|
|
that they speak before their turn (pre\-greet). Specify an empty
|
|
value to disable this feature.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_greet_ttl (default: 1d)
|
|
The amount of time that \fBpostscreen\fR(8) remembers that a client
|
|
IP address passed a PREGREET test, before it is required to pass
|
|
that test again. The default is relatively short, because
|
|
a good client can immediately talk to a real Postfix SMTP server.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_greet_wait (default: normal: 6s, overload: 2s)
|
|
The amount of time that \fBpostscreen\fR(8) will wait for an SMTP
|
|
client to send a command before its turn, and for DNS blocklist
|
|
lookup results to arrive (default: up to 2 seconds under stress,
|
|
up to 6 seconds otherwise).
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_helo_required (default: $smtpd_helo_required)
|
|
Require that a remote SMTP client sends HELO or EHLO before
|
|
commencing a MAIL transaction.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_non_smtp_command_action (default: drop)
|
|
The action that \fBpostscreen\fR(8) takes when a remote SMTP client sends
|
|
non\-SMTP commands as specified with the postscreen_forbidden_commands
|
|
parameter. Specify one of the following:
|
|
.IP "\fBignore\fR"
|
|
Ignore the failure of this test. Allow other tests to complete.
|
|
Do \fInot\fR repeat this test before the result from some
|
|
other test expires.
|
|
This option is useful for testing and collecting statistics
|
|
without blocking mail permanently.
|
|
.br
|
|
.IP "\fBenforce\fR"
|
|
Allow other tests to complete. Reject attempts to deliver mail
|
|
with a 550 SMTP reply, and log the helo/sender/recipient information.
|
|
Repeat this test the next time the client connects.
|
|
.br
|
|
.IP "\fBdrop\fR"
|
|
Drop the connection immediately with a 521 SMTP reply. Repeat
|
|
this test the next time the client connects. This action is the
|
|
same as with the Postfix SMTP server's smtpd_forbidden_commands
|
|
feature.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_non_smtp_command_enable (default: no)
|
|
Enable "non\-SMTP command" tests in the \fBpostscreen\fR(8) server. These
|
|
tests are expensive: a client must disconnect after it passes the
|
|
test, before it can talk to a real Postfix SMTP server.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_non_smtp_command_ttl (default: 30d)
|
|
The amount of time that \fBpostscreen\fR(8) remembers that a client
|
|
IP address passed a "non_smtp_command" SMTP protocol test, before
|
|
it is required to pass that test again. The default
|
|
is long because a client must disconnect after it passes the test,
|
|
before it can talk to a real Postfix SMTP server.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_pipelining_action (default: enforce)
|
|
The action that \fBpostscreen\fR(8) takes when a remote SMTP client
|
|
sends
|
|
multiple commands instead of sending one command and waiting for
|
|
the server to respond. Specify one of the following:
|
|
.IP "\fBignore\fR"
|
|
Ignore the failure of this test. Allow other tests to complete.
|
|
Do \fInot\fR repeat this test before the result from some
|
|
other test expires.
|
|
This option is useful for testing and collecting statistics
|
|
without blocking mail permanently.
|
|
.br
|
|
.IP "\fBenforce\fR"
|
|
Allow other tests to complete. Reject attempts to deliver mail
|
|
with a 550 SMTP reply, and log the helo/sender/recipient information.
|
|
Repeat this test the next time the client connects.
|
|
.br
|
|
.IP "\fBdrop\fR"
|
|
Drop the connection immediately with a 521 SMTP reply. Repeat
|
|
this test the next time the client connects.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_pipelining_enable (default: no)
|
|
Enable "pipelining" SMTP protocol tests in the \fBpostscreen\fR(8)
|
|
server. These tests are expensive: a good client must disconnect
|
|
after it passes the test, before it can talk to a real Postfix SMTP
|
|
server.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_pipelining_ttl (default: 30d)
|
|
The amount of time that \fBpostscreen\fR(8) remembers that a client
|
|
IP address passed a "pipelining" SMTP protocol test, before it is
|
|
required to pass that test again. The default is
|
|
long because a good client must disconnect after it passes the test,
|
|
before it can talk to a real Postfix SMTP server.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_post_queue_limit (default: $default_process_limit)
|
|
The number of clients that can be waiting for service from a
|
|
real Postfix SMTP server process. When this queue is full, all
|
|
clients will
|
|
receive a 421 response.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_pre_queue_limit (default: $default_process_limit)
|
|
The number of non\-allowlisted clients that can be waiting for
|
|
a decision whether they will receive service from a real Postfix
|
|
SMTP server
|
|
process. When this queue is full, all non\-allowlisted clients will
|
|
receive a 421 response.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_reject_footer (default: $smtpd_reject_footer)
|
|
Optional information that is appended after a 4XX or 5XX
|
|
\fBpostscreen\fR(8) server
|
|
response. See smtpd_reject_footer for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH postscreen_reject_footer_maps (default: $smtpd_reject_footer_maps)
|
|
Optional lookup table for information that is appended after a 4XX
|
|
or 5XX \fBpostscreen\fR(8) server response. See smtpd_reject_footer_maps for
|
|
further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH postscreen_tls_security_level (default: $smtpd_tls_security_level)
|
|
The SMTP TLS security level for the \fBpostscreen\fR(8) server; when
|
|
a non\-empty value is specified, this overrides the obsolete parameters
|
|
postscreen_use_tls and postscreen_enforce_tls. See smtpd_tls_security_level
|
|
for details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH postscreen_upstream_proxy_protocol (default: empty)
|
|
The name of the proxy protocol used by an optional before\-postscreen
|
|
proxy agent. When a proxy agent is used, this protocol conveys local
|
|
and remote address and port information. Specify
|
|
"postscreen_upstream_proxy_protocol = haproxy" to enable the haproxy
|
|
protocol; version 2 is supported with Postfix 3.5 and later.
|
|
.PP
|
|
This feature is available in Postfix 2.10 and later.
|
|
.SH postscreen_upstream_proxy_timeout (default: 5s)
|
|
The time limit for the proxy protocol specified with the
|
|
postscreen_upstream_proxy_protocol parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.10 and later.
|
|
.SH postscreen_use_tls (default: $smtpd_use_tls)
|
|
Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
|
|
but do not require that clients use TLS encryption.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
Preferably, use postscreen_tls_security_level instead.
|
|
.SH postscreen_watchdog_timeout (default: 10s)
|
|
How much time a \fBpostscreen\fR(8) process may take to respond to
|
|
a remote SMTP client command or to perform a cache operation before it
|
|
is terminated by a built\-in watchdog timer. This is a safety
|
|
mechanism that prevents \fBpostscreen\fR(8) from becoming non\-responsive
|
|
due to a bug in Postfix itself or in system software. To avoid
|
|
false alarms and unnecessary cache corruption this limit cannot be
|
|
set under 10s.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH postscreen_whitelist_interfaces (default: static:all)
|
|
Renamed to postscreen_allowlist_interfaces in Postfix 3.6.
|
|
.PP
|
|
This feature is available in Postfix 2.9 \- 3.5.
|
|
.SH prepend_delivered_header (default: command, file, forward)
|
|
The message delivery contexts where the Postfix \fBlocal\fR(8) delivery
|
|
agent prepends a Delivered\-To: message header with the address
|
|
that the mail was delivered to. This information is used for mail
|
|
delivery loop detection.
|
|
.PP
|
|
By default, the Postfix local delivery agent prepends a Delivered\-To:
|
|
header when forwarding mail and when delivering to file (mailbox)
|
|
and command. Turning off the Delivered\-To: header when forwarding
|
|
mail is not recommended.
|
|
.PP
|
|
Specify zero or more of \fBforward\fR, \fBfile\fR, or \fBcommand\fR.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
prepend_delivered_header = forward
|
|
.fi
|
|
.ad
|
|
.SH process_id (read\-only)
|
|
The process ID of a Postfix command or daemon process.
|
|
.SH process_id_directory (default: pid)
|
|
The location of Postfix PID files relative to $queue_directory.
|
|
This is a read\-only parameter.
|
|
.SH process_name (read\-only)
|
|
The process name of a Postfix command or daemon process.
|
|
.SH propagate_unmatched_extensions (default: canonical, virtual)
|
|
What address lookup tables copy an address extension from the lookup
|
|
key to the lookup result.
|
|
.PP
|
|
For example, with a \fBvirtual\fR(5) mapping of "\fIjoe@example.com =>
|
|
joe.user@example.net\fR", the address "\fIjoe+foo@example.com\fR"
|
|
would rewrite to "\fIjoe.user+foo@example.net\fR".
|
|
.PP
|
|
Specify zero or more of \fBcanonical\fR, \fBvirtual\fR, \fBalias\fR,
|
|
\fBforward\fR, \fBinclude\fR or \fBgeneric\fR. These cause
|
|
address extension
|
|
propagation with \fBcanonical\fR(5), \fBvirtual\fR(5), and \fBaliases\fR(5) maps,
|
|
with \fBlocal\fR(8) .forward and :include: file lookups, and with \fBsmtp\fR(8)
|
|
generic maps, respectively.
|
|
.PP
|
|
Note: enabling this feature for types other than \fBcanonical\fR
|
|
and \fBvirtual\fR is likely to cause problems when mail is forwarded
|
|
to other sites, especially with mail that is sent to a mailing list
|
|
exploder address.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
propagate_unmatched_extensions = canonical, virtual, alias,
|
|
forward, include
|
|
propagate_unmatched_extensions = canonical, virtual
|
|
.fi
|
|
.ad
|
|
.SH proxy_interfaces (default: empty)
|
|
The remote network interface addresses that this mail system receives mail
|
|
on by way of a proxy or network address translation unit.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.PP
|
|
You must specify your "outside" proxy/NAT addresses when your
|
|
system is a backup MX host for other domains, otherwise mail delivery
|
|
loops will happen when the primary MX host is down.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
proxy_interfaces = 1.2.3.4
|
|
.fi
|
|
.ad
|
|
.SH proxy_read_maps (default: see "postconf \-d" output)
|
|
The lookup tables that the \fBproxymap\fR(8) server is allowed to
|
|
access for the read\-only service.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma.
|
|
Table references that don't begin with proxy: are ignored.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH proxy_write_maps (default: see "postconf \-d" output)
|
|
The lookup tables that the \fBproxymap\fR(8) server is allowed to
|
|
access for the read\-write service. Postfix\-owned local database
|
|
files should be stored under the Postfix\-owned data_directory.
|
|
Table references that don't begin with proxy: are ignored.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH proxymap_service_name (default: proxymap)
|
|
The name of the proxymap read\-only table lookup service. This
|
|
service is normally implemented by the \fBproxymap\fR(8) daemon.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH proxywrite_service_name (default: proxywrite)
|
|
The name of the proxywrite read\-write table lookup service.
|
|
This service is normally implemented by the \fBproxymap\fR(8) daemon.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH qmgr_clog_warn_time (default: 300s)
|
|
The minimal delay between warnings that a specific destination is
|
|
clogging up the Postfix active queue. Specify 0 to disable.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is enabled with the helpful_warnings parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH qmgr_daemon_timeout (default: 1000s)
|
|
How much time a Postfix queue manager process may take to handle
|
|
a request before it is terminated by a built\-in watchdog timer.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH qmgr_fudge_factor (default: 100)
|
|
Obsolete feature: the percentage of delivery resources that a busy
|
|
mail system will use up for delivery of a large mailing list
|
|
message.
|
|
.PP
|
|
This feature exists only in the \fBoqmgr\fR(8) old queue manager. The
|
|
current queue manager solves the problem in a better way.
|
|
.SH qmgr_ipc_timeout (default: 60s)
|
|
The time limit for the queue manager to send or receive information
|
|
over an internal communication channel. The purpose is to break
|
|
out of deadlock situations. If the time limit is exceeded the
|
|
software either retries or aborts the operation.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH qmgr_message_active_limit (default: 20000)
|
|
The maximal number of messages in the active queue.
|
|
.SH qmgr_message_recipient_limit (default: 20000)
|
|
The maximal number of recipients held in memory by the Postfix
|
|
queue manager, and the maximal size of the short\-term,
|
|
in\-memory "dead" destination status cache.
|
|
.SH qmgr_message_recipient_minimum (default: 10)
|
|
The minimal number of in\-memory recipients for any message. This
|
|
takes priority over any other in\-memory recipient limits (i.e.,
|
|
the global qmgr_message_recipient_limit and the per transport
|
|
_recipient_limit) if necessary. The minimum value allowed for this
|
|
parameter is 1.
|
|
.SH qmqpd_authorized_clients (default: empty)
|
|
What remote QMQP clients are allowed to connect to the Postfix QMQP
|
|
server port.
|
|
.PP
|
|
By default, no client is allowed to use the service. This is
|
|
because the QMQP server will relay mail to any destination.
|
|
.PP
|
|
Specify a list of client patterns. A list pattern specifies a host
|
|
name, a domain name, an internet address, or a network/mask pattern,
|
|
where the mask specifies the number of bits in the network part.
|
|
When a pattern specifies a file name, its contents are substituted
|
|
for the file name; when a pattern is a "type:table" table specification,
|
|
table lookup is used instead.
|
|
.PP
|
|
Patterns are separated by whitespace and/or commas. In order to
|
|
reverse the result, precede a pattern with an
|
|
exclamation point (!). The form "!/file/name" is supported only
|
|
in Postfix version 2.4 and later.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "qmqpd_authorized_clients" in the
|
|
parent_domain_matches_subdomains parameter value.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
qmqpd_authorized_clients = !192.168.0.1, 192.168.0.0/24
|
|
.fi
|
|
.ad
|
|
.SH qmqpd_client_port_logging (default: no)
|
|
Enable logging of the remote QMQP client port in addition to
|
|
the hostname and IP address. The logging format is "host[address]:port".
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH qmqpd_error_delay (default: 1s)
|
|
How long the Postfix QMQP server will pause before sending a negative
|
|
reply to the remote QMQP client. The purpose is to slow down confused
|
|
or malicious clients.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH qmqpd_timeout (default: 300s)
|
|
The time limit for sending or receiving information over the network.
|
|
If a read or write operation blocks for more than $qmqpd_timeout
|
|
seconds the Postfix QMQP server gives up and disconnects.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH queue_directory (default: see "postconf \-d" output)
|
|
The location of the Postfix top\-level queue directory. This is the
|
|
root directory of Postfix daemon processes that run chrooted.
|
|
.SH queue_file_attribute_count_limit (default: 100)
|
|
The maximal number of (name=value) attributes that may be stored
|
|
in a Postfix queue file. The limit is enforced by the \fBcleanup\fR(8)
|
|
server.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH queue_minfree (default: 0)
|
|
The minimal amount of free space in bytes in the queue file system
|
|
that is needed to receive mail. This is currently used by the
|
|
Postfix SMTP server to decide if it will accept any mail at all.
|
|
.PP
|
|
By default, the Postfix SMTP server rejects MAIL FROM commands when
|
|
the amount of free space is less than 1.5*$message_size_limit
|
|
(Postfix version 2.1 and later).
|
|
To specify a higher minimum free space limit, specify a queue_minfree
|
|
value that is at least 1.5*$message_size_limit.
|
|
.PP
|
|
With Postfix versions 2.0 and earlier, a queue_minfree value of
|
|
zero means there is no minimum required amount of free space.
|
|
.SH queue_run_delay (default: 300s)
|
|
The time between deferred queue scans by the queue manager;
|
|
prior to Postfix 2.4 the default value was 1000s.
|
|
.PP
|
|
This parameter should be set less than or equal to
|
|
$minimal_backoff_time. See also $maximal_backoff_time.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH queue_service_name (default: qmgr)
|
|
The name of the \fBqmgr\fR(8) service. This service manages the Postfix
|
|
queue and schedules delivery requests.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH rbl_reply_maps (default: empty)
|
|
Optional lookup tables with RBL or RHSBL response templates. The
|
|
table search key is the reject_rbl_* or reject_rhsbl_* argument,
|
|
including any optional "\fI=address\-filter\fR". With Postfix 3.10
|
|
and later, if the result is "not found" and the search key has the
|
|
form \fIdomain=address\-filter\fR, then rbl_reply_maps will also
|
|
search with the \fIdomain\fR.
|
|
.PP
|
|
By default, Postfix uses the
|
|
template as specified with the default_rbl_reply configuration
|
|
parameter. See there for a discussion of the response template
|
|
syntax.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
rbl_reply_maps = hash:/etc/postfix/rbl_reply
|
|
smtpd_recipient_restrictions =
|
|
permit_mynetworks,
|
|
reject_rbl_client \fIsecret\fR.zen.dq.spamhaus.net=127.0.0.[2..11],
|
|
...
|
|
.br
|
|
/etc/postfix/rbl_reply:
|
|
# See https://www.postfix.org/postconf.5.html#default_rbl_reply
|
|
# for the definition of the $client_address and $rbl_class etc.
|
|
# variables.
|
|
\fIsecret\fR.zen.dq.spamhaus.net=127.0.0.[2..11]
|
|
554 $rbl_class $rbl_what blocked using ZEN \- see https://www.spamhaus.org/query/ip/$client_address for details
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Postfix >= 3.10: if a search key \fIdomain=address\-filter\fR
|
|
# is not found, then rbl_reply_maps will also search with the
|
|
# \fIdomain\fR.
|
|
\fIsecret\fR.zen.dq.spamhaus.net
|
|
554 $rbl_class $rbl_what blocked using ZEN \- see https://www.spamhaus.org/query/ip/$client_address for details
|
|
.fi
|
|
.ad
|
|
.PP
|
|
NOTE: This feature differs from postscreen_dnsbl_reply_map where
|
|
the table search key is only a domain name (no "\fI=address\-filter\fR",
|
|
no "\fI*weight\fR" factor) and where the lookup result
|
|
should be only a domain name (no free text, no \fI$name\fR variables).
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
The "=address\-filter" feature is available in Postfix 2.8 and later.
|
|
.SH readme_directory (default: see "postconf \-d" output)
|
|
The location of Postfix README files that describe how to build,
|
|
configure or operate a specific Postfix subsystem or feature.
|
|
.SH receive_override_options (default: empty)
|
|
Enable or disable recipient validation, built\-in content
|
|
filtering, or address mapping. Typically, these are specified in
|
|
master.cf as command\-line arguments for the \fBsmtpd\fR(8), \fBqmqpd\fR(8) or
|
|
\fBpickup\fR(8) daemons.
|
|
.PP
|
|
Specify zero or more of the following options. The options
|
|
override main.cf settings and are either implemented by \fBsmtpd\fR(8),
|
|
\fBqmqpd\fR(8), or \fBpickup\fR(8) themselves, or they are forwarded to the
|
|
cleanup server.
|
|
.IP "\fBno_unknown_recipient_checks\fR"
|
|
Do not try to reject unknown recipients (SMTP server only).
|
|
This is typically specified AFTER an external content filter.
|
|
.br
|
|
.IP "\fBno_address_mappings\fR"
|
|
Disable canonical address mapping, virtual alias map expansion,
|
|
address masquerading, and automatic BCC (blind carbon\-copy)
|
|
recipients. This is typically specified BEFORE an external content
|
|
filter.
|
|
.br
|
|
.IP "\fBno_header_body_checks\fR"
|
|
Disable header/body_checks. This is typically specified AFTER
|
|
an external content filter.
|
|
.br
|
|
.IP "\fBno_milters\fR"
|
|
Disable Milter (mail filter) applications. This is typically
|
|
specified AFTER an external content filter.
|
|
.br
|
|
.br
|
|
.PP
|
|
Note: when the "BEFORE content filter" receive_override_options
|
|
setting is specified in the main.cf file, specify the "AFTER content
|
|
filter" receive_override_options setting in master.cf (and vice
|
|
versa).
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
receive_override_options =
|
|
no_unknown_recipient_checks, no_header_body_checks
|
|
receive_override_options = no_address_mappings
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH recipient_bcc_maps (default: empty)
|
|
Optional BCC (blind carbon\-copy) address lookup tables, indexed by
|
|
envelope recipient address. The BCC address (multiple results are not
|
|
supported) is added when mail enters from outside of Postfix.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
The table search order is as follows:
|
|
.IP \(bu
|
|
Look up the "user+extension@domain.tld" address including the
|
|
optional address extension.
|
|
.IP \(bu
|
|
Look up the "user@domain.tld" address without the optional
|
|
address extension.
|
|
.IP \(bu
|
|
Look up the "user+extension" address local part when the
|
|
recipient domain equals $myorigin, $mydestination, $inet_interfaces
|
|
or $proxy_interfaces.
|
|
.IP \(bu
|
|
Look up the "user" address local part when the recipient domain
|
|
equals $myorigin, $mydestination, $inet_interfaces or $proxy_interfaces.
|
|
.IP \(bu
|
|
Look up the "@domain.tld" part.
|
|
.br
|
|
.PP
|
|
Note: with Postfix 2.3 and later the BCC address is added as if it
|
|
was specified with NOTIFY=NONE. The sender will not be notified
|
|
when the BCC address is undeliverable, as long as all down\-stream
|
|
software implements RFC 3461.
|
|
.PP
|
|
Note: with Postfix 2.2 and earlier the sender will unconditionally
|
|
be notified when the BCC address is undeliverable.
|
|
.PP
|
|
Note: automatic BCC recipients are produced only for new mail.
|
|
To avoid mailer loops, automatic BCC recipients are not generated
|
|
after Postfix forwards mail internally, or after Postfix generates
|
|
mail itself.
|
|
.PP
|
|
Note: automatic BCC recipients are subject to address
|
|
canonicalization (add missing domain), canonical_maps, masquerade_domains,
|
|
and virtual_alias_maps.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
|
|
.fi
|
|
.ad
|
|
.PP
|
|
After a change, run "\fBpostmap /etc/postfix/recipient_bcc\fR".
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH recipient_canonical_classes (default: envelope_recipient, header_recipient)
|
|
What addresses are subject to recipient_canonical_maps address
|
|
mapping. By default, recipient_canonical_maps address mapping is
|
|
applied to envelope recipient addresses, and to header recipient
|
|
addresses.
|
|
.PP
|
|
Specify one or more of: envelope_recipient, header_recipient
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH recipient_canonical_maps (default: empty)
|
|
Optional address mapping lookup tables for envelope and header
|
|
recipient addresses.
|
|
The table format and lookups are documented in \fBcanonical\fR(5).
|
|
.PP
|
|
Note: $recipient_canonical_maps is processed before $canonical_maps.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
|
|
.fi
|
|
.ad
|
|
.SH recipient_delimiter (default: empty)
|
|
The set of characters that can separate an email address
|
|
localpart, user name, or a .forward file name from its extension.
|
|
For example, with "recipient_delimiter = +", the software tries
|
|
user+foo@example.com before trying user@example.com, user+foo before
|
|
trying user, and .forward+foo before trying .forward.
|
|
.PP
|
|
More formally, an email address localpart or user name is
|
|
separated from its extension by the first character that matches
|
|
the recipient_delimiter set. The delimiter character and extension
|
|
may then be used to generate an extended .forward file name. This
|
|
implementation recognizes one delimiter character and one extension
|
|
per email address localpart or email address. With Postfix 2.10 and
|
|
earlier, the recipient_delimiter specifies a single character.
|
|
.PP
|
|
See \fBcanonical\fR(5), \fBlocal\fR(8), \fBrelocated\fR(5) and \fBvirtual\fR(5) for the
|
|
effects of recipient_delimiter on lookups in aliases, canonical,
|
|
virtual, and relocated maps, and see the propagate_unmatched_extensions
|
|
parameter for propagating an extension from one email address to
|
|
another.
|
|
.PP
|
|
When used in command_execution_directory, forward_path, or
|
|
luser_relay, ${recipient_delimiter} is replaced with the actual
|
|
recipient delimiter that was found in the recipient email address
|
|
(Postfix 2.11 and later), or it is replaced with the main.cf
|
|
recipient_delimiter parameter value (Postfix 2.10 and earlier).
|
|
.PP
|
|
The recipient_delimiter is not applied to the mailer\-daemon
|
|
address, the postmaster address, or the double\-bounce address. With
|
|
the default "owner_request_special = yes" setting, the recipient_delimiter
|
|
is also not applied to addresses with the special "owner\-" prefix
|
|
or the special "\-request" suffix.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Handle Postfix\-style extensions.
|
|
recipient_delimiter = +
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Handle both Postfix and qmail extensions (Postfix 2.11 and later).
|
|
recipient_delimiter = +\-
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Use .forward for mail without address extension, and for mail with
|
|
# an unrecognized address extension.
|
|
forward_path = $home/.forward${recipient_delimiter}${extension},
|
|
$home/.forward
|
|
.fi
|
|
.ad
|
|
.SH reject_code (default: 554)
|
|
The numerical Postfix SMTP server response code when a remote SMTP
|
|
client request is rejected by the "reject" restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH reject_tempfail_action (default: defer_if_permit)
|
|
The Postfix SMTP server's action when a reject\-type restriction
|
|
fails due to a temporary error condition. Specify "defer" to defer
|
|
the remote SMTP client request immediately. With the default
|
|
"defer_if_permit" action, the Postfix SMTP server continues to look
|
|
for opportunities to reject mail, and defers the client request
|
|
only if it would otherwise be accepted.
|
|
.PP
|
|
For finer control, see: unverified_recipient_tempfail_action,
|
|
unverified_sender_tempfail_action, unknown_address_tempfail_action,
|
|
and unknown_helo_hostname_tempfail_action.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH relay_clientcerts (default: empty)
|
|
List of tables with remote SMTP client\-certificate fingerprints or
|
|
public key fingerprints (Postfix 2.9 and later) for which the Postfix
|
|
SMTP server will allow access with the permit_tls_clientcerts
|
|
feature. The fingerprint digest algorithm is configurable via the
|
|
smtpd_tls_fingerprint_digest parameter (hard\-coded as md5 prior to
|
|
Postfix version 2.5).
|
|
.PP
|
|
The default algorithm is \fBsha256\fR with Postfix >= 3.6
|
|
and the \fBcompatibility_level\fR set to 3.6 or higher. With Postfix
|
|
<= 3.5, the default algorithm is \fBmd5\fR. The best\-practice
|
|
algorithm is now \fBsha256\fR. Recent advances in hash function
|
|
cryptanalysis have led to md5 and sha1 being deprecated in favor of
|
|
sha256. However, as long as there are no known "second pre\-image"
|
|
attacks against the older algorithms, their use in this context, though
|
|
not recommended, is still likely safe.
|
|
.PP
|
|
Postfix lookup tables are in the form of (key, value) pairs.
|
|
Since we only need the key, the value can be chosen freely, e.g.
|
|
the name of the user or host:
|
|
D7:04:2F:A7:0B:8C:A5:21:FA:31:77:E1:41:8A:EE:80 lutzpc.at.home
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
relay_clientcerts = hash:/etc/postfix/relay_clientcerts
|
|
.fi
|
|
.ad
|
|
.PP
|
|
For more fine\-grained control, use check_ccert_access to select
|
|
an appropriate \fBaccess\fR(5) policy for each client.
|
|
See RESTRICTION_CLASS_README.
|
|
.PP
|
|
This feature is available with Postfix version 2.2.
|
|
.SH relay_destination_concurrency_limit (default: $default_destination_concurrency_limit)
|
|
The maximal number of parallel deliveries to the same destination
|
|
via the relay message delivery transport. This limit is enforced
|
|
by the queue manager. The message delivery transport name is the
|
|
first field in the entry in the master.cf file.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH relay_destination_recipient_limit (default: $default_destination_recipient_limit)
|
|
The maximal number of recipients per message for the relay
|
|
message delivery transport. This limit is enforced by the queue
|
|
manager. The message delivery transport name is the first field in
|
|
the entry in the master.cf file.
|
|
.PP
|
|
Setting this parameter to a value of 1 changes the meaning of
|
|
relay_destination_concurrency_limit from concurrency per domain
|
|
into concurrency per recipient.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH relay_domains (default: Postfix >= 3.0: empty, Postfix < 3.0: $mydestination)
|
|
What destination domains (and subdomains thereof) this system
|
|
will relay mail to. For details about how
|
|
the relay_domains value is used, see the description of the
|
|
permit_auth_destination and reject_unauth_destination SMTP recipient
|
|
restrictions.
|
|
.PP
|
|
Domains that match $relay_domains are delivered with the
|
|
$relay_transport mail delivery transport. The SMTP server validates
|
|
recipient addresses with $relay_recipient_maps and rejects non\-existent
|
|
recipients. See also the relay domains address class in the
|
|
ADDRESS_CLASS_README file.
|
|
.PP
|
|
Note: Postfix will not automatically forward mail for domains
|
|
that list this system as their primary or backup MX host. See the
|
|
permit_mx_backup restriction in the \fBpostconf\fR(5) manual page.
|
|
.PP
|
|
Specify a list of host or domain names, "/file/name" patterns
|
|
or "type:table" lookup tables, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace. A
|
|
"/file/name" pattern is replaced by its contents; a "type:table"
|
|
lookup table is matched when a (parent) domain appears as lookup
|
|
key. Specify "!pattern" to exclude a domain from the list. The form
|
|
"!/file/name" is supported only in Postfix version 2.4 and later.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "relay_domains" in the parent_domain_matches_subdomains
|
|
parameter value.
|
|
.SH relay_domains_reject_code (default: 554)
|
|
The numerical Postfix SMTP server response code when a client
|
|
request is rejected by the reject_unauth_destination recipient
|
|
restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH relay_recipient_maps (default: empty)
|
|
Optional lookup tables with all valid addresses in the domains
|
|
that match $relay_domains. Specify @domain as a wild\-card for
|
|
domains that have no valid recipient list, and become a source of
|
|
backscatter mail: Postfix accepts spam for non\-existent recipients
|
|
and then floods innocent people with undeliverable mail. Technically,
|
|
tables
|
|
listed with $relay_recipient_maps are used as lists: Postfix needs
|
|
to know only if a lookup string is found or not, but it does not
|
|
use the result from the table lookup.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
If this parameter is non\-empty, then the Postfix SMTP server will reject
|
|
mail to unknown relay users. This feature is off by default.
|
|
.PP
|
|
See also the relay domains address class in the ADDRESS_CLASS_README
|
|
file.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
relay_recipient_maps = hash:/etc/postfix/relay_recipients
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH relay_transport (default: relay)
|
|
The default mail delivery transport and next\-hop destination for
|
|
the relay domain address class: recipient domains that match
|
|
$relay_domains.
|
|
.PP
|
|
For recipient domains in the relay domain address class:
|
|
.IP \(bu
|
|
In order of decreasing precedence, the message delivery
|
|
transport is taken from 1) $transport_maps, 2) $relay_transport.
|
|
.IP \(bu
|
|
In order of decreasing precedence, the nexthop destination
|
|
is taken from 1) $transport_maps, 2) $relay_transport, 3)
|
|
$sender_dependent_relayhost_maps or $relayhost or the recipient
|
|
domain.
|
|
.br
|
|
.PP
|
|
Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
|
|
is the name of a mail delivery transport defined in master.cf.
|
|
The \fI:nexthop\fR destination is optional; its syntax is documented
|
|
in the manual page of the corresponding delivery agent.
|
|
.PP
|
|
See also the relay domains address class in the ADDRESS_CLASS_README
|
|
file.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH relayhost (default: empty)
|
|
The next\-hop destination(s) for non\-local mail; takes precedence
|
|
over non\-local domains in recipient addresses. This information
|
|
will not be used when the sender matches $sender_dependent_relayhost_maps.
|
|
.PP
|
|
In order of decreasing precedence:
|
|
.IP \(bu
|
|
For recipient domains in the relay domain address class
|
|
(domains matching $relay_domains), the nexthop destination is taken
|
|
from 1) $transport_maps, 2) $relay_transport, 3)
|
|
$sender_dependent_relayhost_maps or $relayhost or the recipient
|
|
domain.
|
|
.IP \(bu
|
|
For recipient domains in the default domain address class
|
|
(domains that do not match $mydestination, $inet_interfaces,
|
|
$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
|
|
or $relay_domains), the nexthop destination is taken from 1)
|
|
$transport_maps, 2) $sender_dependent_default_transport_maps or
|
|
$default_transport, 3) $sender_dependent_relayhost_maps or $relayhost
|
|
or the recipient domain.
|
|
.br
|
|
.PP
|
|
On an intranet, specify the organizational domain name. If your
|
|
internal DNS uses no MX records, specify the name of the intranet
|
|
gateway host instead.
|
|
.PP
|
|
In the case of SMTP delivery, specify one or more destinations in
|
|
the form of a domain name, hostname, hostname:service, [hostname]:service,
|
|
[hostaddress] or [hostaddress]:service, separated by comma or whitespace.
|
|
The form [hostname] turns off MX or SRV lookups. Multiple destinations
|
|
are supported in Postfix 3.5 and later. Each destination is tried
|
|
in the specified order.
|
|
.PP
|
|
If an SMTP destination is a load balancer, and there are no
|
|
alternative destinations, specify the load balancer multiple times.
|
|
Without the duplicate info, the Postfix SMTP client would not
|
|
reconnect immediately to the same load balancer after a remote SMTP
|
|
server failure.
|
|
.PP
|
|
If you're connected via UUCP, see the UUCP_README file for useful
|
|
information.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
relayhost = $mydomain
|
|
relayhost = [gateway.example.com]
|
|
relayhost = mail1.example:587, mail2.example:587
|
|
relayhost = [an.ip.add.ress]
|
|
.fi
|
|
.ad
|
|
.SH relocated_maps (default: empty)
|
|
Optional lookup tables with new contact information for users or
|
|
domains that no longer exist. The table format and lookups are
|
|
documented in \fBrelocated\fR(5).
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
If you use this feature, run "\fBpostmap /etc/postfix/relocated\fR" to
|
|
build the necessary DBM or DB file after change, then "\fBpostfix
|
|
reload\fR" to make the changes visible.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
relocated_maps = dbm:/etc/postfix/relocated
|
|
relocated_maps = hash:/etc/postfix/relocated
|
|
.fi
|
|
.ad
|
|
.SH remote_header_rewrite_domain (default: empty)
|
|
Rewrite or add message headers in mail from remote clients if
|
|
the remote_header_rewrite_domain parameter value is non\-empty,
|
|
updating incomplete addresses with the domain specified in the
|
|
remote_header_rewrite_domain parameter, and adding missing headers.
|
|
.PP
|
|
The
|
|
local_header_rewrite_clients parameter controls what clients Postfix
|
|
considers local.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
The safe setting: append "domain.invalid" to incomplete header
|
|
addresses from remote SMTP clients, so that those addresses cannot
|
|
be confused with local addresses.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
remote_header_rewrite_domain = domain.invalid
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The default, purist, setting: don't rewrite headers from remote
|
|
clients at all.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
remote_header_rewrite_domain =
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.SH require_home_directory (default: no)
|
|
Require that a \fBlocal\fR(8) recipient's home directory exists
|
|
before mail delivery is attempted. By default this test is disabled.
|
|
It can be useful for environments that import home directories to
|
|
the mail server (IMPORTING HOME DIRECTORIES IS NOT RECOMMENDED).
|
|
.SH reset_owner_alias (default: no)
|
|
Reset the \fBlocal\fR(8) delivery agent's idea of the owner\-alias
|
|
attribute, when delivering mail to a child alias that does not have
|
|
its own owner alias.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later. With older
|
|
Postfix releases, the behavior is as if this parameter is set to
|
|
"yes".
|
|
.PP
|
|
As documented in \fBaliases\fR(5), when an alias \fIname\fR has a
|
|
companion alias named owner\-\fIname\fR, this will replace the
|
|
envelope sender address, so that delivery errors will be
|
|
reported to the owner alias instead of the sender. This configuration
|
|
is recommended for mailing lists.
|
|
.PP
|
|
A less known property of the owner alias is that it also forces
|
|
the \fBlocal\fR(8) delivery agent to write local and remote addresses
|
|
from alias expansion to a new queue file, instead of attempting to
|
|
deliver mail to local addresses as soon as they come out of alias
|
|
expansion.
|
|
.PP
|
|
Writing local addresses from alias expansion to a new queue
|
|
file allows for robust handling of temporary delivery errors: errors
|
|
with one local member have no effect on deliveries to other members
|
|
of the list. On the other hand, delivery to local addresses as
|
|
soon as they come out of alias expansion is fragile: a temporary
|
|
error with one local address from alias expansion will cause the
|
|
entire alias to be expanded repeatedly until the error goes away,
|
|
or until the message expires in the queue. In that case, a problem
|
|
with one list member results in multiple message deliveries to other
|
|
list members.
|
|
.PP
|
|
The default behavior of Postfix 2.8 and later is to keep the
|
|
owner\-alias attribute of the parent alias, when delivering mail to
|
|
a child alias that does not have its own owner alias. Then, local
|
|
addresses from that child alias will be written to a new queue file,
|
|
and a temporary error with one local address will not affect delivery
|
|
to other mailing list members.
|
|
.PP
|
|
Unfortunately, older Postfix releases reset the owner\-alias
|
|
attribute when delivering mail to a child alias that does not have
|
|
its own owner alias. To be precise, this resets only the decision
|
|
to create a new queue file, not the decision to override the envelope
|
|
sender address. The \fBlocal\fR(8) delivery agent then attempts to
|
|
deliver local addresses as soon as they come out of child alias
|
|
expansion. If delivery to any address from child alias expansion
|
|
fails with a temporary error condition, the entire mailing list may
|
|
be expanded repeatedly until the mail expires in the queue, resulting
|
|
in multiple deliveries of the same message to mailing list members.
|
|
.SH resolve_dequoted_address (default: yes)
|
|
Resolve a recipient address safely instead of correctly, by
|
|
looking inside quotes.
|
|
.PP
|
|
By default, the Postfix address resolver does not quote the
|
|
address localpart as per RFC 822, so that additional @ or % or !
|
|
operators remain visible. This behavior is safe but it is also
|
|
technically incorrect.
|
|
.PP
|
|
If you specify "resolve_dequoted_address = no", then
|
|
the Postfix
|
|
resolver will not know about additional @ etc. operators in the
|
|
address localpart. This opens opportunities for obscure mail relay
|
|
attacks with user@domain@domain addresses when Postfix provides
|
|
backup MX service for Sendmail systems.
|
|
.SH resolve_null_domain (default: no)
|
|
Resolve an address that ends in the "@" null domain as if the
|
|
local hostname were specified, instead of rejecting the address as
|
|
invalid.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
Earlier versions always resolve the null domain as the local
|
|
hostname.
|
|
.PP
|
|
The Postfix SMTP server uses this feature to reject mail from
|
|
or to addresses that end in the "@" null domain, and from addresses
|
|
that rewrite into a form that ends in the "@" null domain.
|
|
.SH resolve_numeric_domain (default: no)
|
|
Resolve "user@ipaddress" as "user@[ipaddress]", instead of
|
|
rejecting the address as invalid.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH respectful_logging (default: see 'postconf \-d' output)
|
|
Avoid logging that implies white is better than black. Instead
|
|
use 'allowlist', 'denylist', and variations of those words.
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH rewrite_service_name (default: rewrite)
|
|
The name of the address rewriting service. This service rewrites
|
|
addresses to standard form and resolves them to a (delivery method,
|
|
next\-hop host, recipient) triple.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH sample_directory (default: /etc/postfix)
|
|
The name of the directory with example Postfix configuration files.
|
|
Starting with Postfix 2.1, these files have been replaced with the
|
|
\fBpostconf\fR(5) manual page.
|
|
.SH send_cyrus_sasl_authzid (default: no)
|
|
When authenticating to a remote SMTP or LMTP server with the
|
|
default setting "no", send no SASL authoriZation ID (authzid); send
|
|
only the SASL authentiCation ID (authcid) plus the authcid's password.
|
|
.PP
|
|
The non\-default setting "yes" enables the behavior of older
|
|
Postfix versions. These always send a SASL authzid that is equal
|
|
to the SASL authcid, but this causes interoperability problems
|
|
with some SMTP servers.
|
|
.PP
|
|
This feature is available in Postfix 2.4.4 and later.
|
|
.SH sender_based_routing (default: no)
|
|
This parameter should not be used. It was replaced by sender_dependent_relayhost_maps
|
|
in Postfix version 2.3.
|
|
.SH sender_bcc_maps (default: empty)
|
|
Optional BCC (blind carbon\-copy) address lookup tables, indexed
|
|
by envelope sender address. The BCC address (multiple results are not
|
|
supported) is added when mail enters from outside of Postfix.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
The table search order is as follows:
|
|
.IP \(bu
|
|
Look up the "user+extension@domain.tld" address including the
|
|
optional address extension.
|
|
.IP \(bu
|
|
Look up the "user@domain.tld" address without the optional
|
|
address extension.
|
|
.IP \(bu
|
|
Look up the "user+extension" address local part when the
|
|
sender domain equals $myorigin, $mydestination, $inet_interfaces
|
|
or $proxy_interfaces.
|
|
.IP \(bu
|
|
Look up the "user" address local part when the sender domain
|
|
equals $myorigin, $mydestination, $inet_interfaces or $proxy_interfaces.
|
|
.IP \(bu
|
|
Look up the "@domain.tld" part.
|
|
.br
|
|
.PP
|
|
Note: with Postfix 2.3 and later the BCC address is added as if it
|
|
was specified with NOTIFY=NONE. The sender will not be notified
|
|
when the BCC address is undeliverable, as long as all down\-stream
|
|
software implements RFC 3461.
|
|
.PP
|
|
Note: with Postfix 2.2 and earlier the sender will be notified
|
|
when the BCC address is undeliverable.
|
|
.PP
|
|
Note: automatic BCC recipients are produced only for new mail.
|
|
To avoid mailer loops, automatic BCC recipients are not generated
|
|
after Postfix forwards mail internally, or after Postfix generates
|
|
mail itself.
|
|
.PP
|
|
Note: automatic BCC recipients are subject to address
|
|
canonicalization (add missing domain), canonical_maps, masquerade_domains,
|
|
and virtual_alias_maps.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
sender_bcc_maps = hash:/etc/postfix/sender_bcc
|
|
.fi
|
|
.ad
|
|
.PP
|
|
After a change, run "\fBpostmap /etc/postfix/sender_bcc\fR".
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH sender_canonical_classes (default: envelope_sender, header_sender)
|
|
What addresses are subject to sender_canonical_maps address
|
|
mapping. By default, sender_canonical_maps address mapping is
|
|
applied to envelope sender addresses, and to header sender addresses.
|
|
.PP
|
|
Specify one or more of: envelope_sender, header_sender
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH sender_canonical_maps (default: empty)
|
|
Optional address mapping lookup tables for envelope and header
|
|
sender addresses.
|
|
The table format and lookups are documented in \fBcanonical\fR(5).
|
|
.PP
|
|
Example: you want to rewrite the SENDER address "user@ugly.example"
|
|
to "user@pretty.example", while still being able to send mail to
|
|
the RECIPIENT address "user@ugly.example".
|
|
.PP
|
|
Note: $sender_canonical_maps is processed before $canonical_maps.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
sender_canonical_maps = hash:/etc/postfix/sender_canonical
|
|
.fi
|
|
.ad
|
|
.SH sender_dependent_default_transport_maps (default: empty)
|
|
A sender\-dependent override for the global default_transport
|
|
parameter setting. The tables are searched by the envelope sender
|
|
address and @domain. A lookup result of DUNNO terminates the search
|
|
without overriding the global default_transport parameter setting.
|
|
This information is overruled with the \fBtransport\fR(5) table.
|
|
.PP
|
|
This setting affects only the default domain address class
|
|
(recipient domains that do not match $mydestination, $inet_interfaces,
|
|
$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
|
|
or $relay_domains):
|
|
.IP \(bu
|
|
In order of decreasing precedence, the delivery transport
|
|
is taken from 1) $transport_maps, 2)
|
|
$sender_dependent_default_transport_maps or $default_transport.
|
|
.IP \(bu
|
|
In order of decreasing precedence, the nexthop destination
|
|
is taken from 1) $transport_maps, 2)
|
|
$sender_dependent_default_transport_maps or $default_transport, 3)
|
|
$sender_dependent_relayhost_maps or $relayhost or the recipient
|
|
domain.
|
|
.br
|
|
.PP
|
|
Note: this overrides default_transport, not transport_maps, and
|
|
therefore the expected syntax is that of default_transport, not the
|
|
syntax of transport_maps. Specifically, this does not support the
|
|
transport_maps syntax for null transport, null nexthop, or null
|
|
email addresses.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
For safety reasons, this feature does not allow $number
|
|
substitutions in regular expression maps.
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH sender_dependent_relayhost_maps (default: empty)
|
|
A sender\-dependent override for the global relayhost parameter
|
|
setting. The tables are searched by the envelope sender address and
|
|
@domain. A lookup result of DUNNO terminates the search without
|
|
overriding the global relayhost parameter setting (Postfix 2.6 and
|
|
later).
|
|
.PP
|
|
In order of decreasing precedence:
|
|
.IP \(bu
|
|
For recipient domains in the relay domain address class
|
|
(domains matching $relay_domains), the nexthop destination is taken
|
|
from 1) $transport_maps, 2) $relay_transport, 3)
|
|
$sender_dependent_relayhost_maps or $relayhost or the recipient
|
|
domain.
|
|
.IP \(bu
|
|
For recipient domains in the default domain address class
|
|
(domains that do not match mydestination, $inet_interfaces,
|
|
$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
|
|
$relay_domains), the nexthop destination is taken from 1)
|
|
$transport_maps, 2) $sender_dependent_default_transport_maps or
|
|
$default_transport, 3) $sender_dependent_relayhost_maps or $relayhost
|
|
or the recipient domain.
|
|
.br
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
For safety reasons, this feature does not allow $number
|
|
substitutions in regular expression maps.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH sendmail_fix_line_endings (default: always)
|
|
Controls how the Postfix sendmail command converts email message
|
|
line endings from <CR><LF> into UNIX format (<LF>).
|
|
.IP "\fBalways\fR"
|
|
Always convert message lines ending
|
|
in <CR><LF>. This setting is the default with Postfix
|
|
2.9 and later.
|
|
.br
|
|
.IP "\fBstrict\fR"
|
|
Convert message lines ending in
|
|
<CR><LF> only if the first input line ends in
|
|
<CR><LF>. This setting is backwards\-compatible with
|
|
Postfix 2.8 and earlier.
|
|
.br
|
|
.IP "\fBnever\fR"
|
|
Never convert message lines ending in
|
|
<CR><LF>. This setting exists for completeness only.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH sendmail_path (default: see "postconf \-d" output)
|
|
A Sendmail compatibility feature that specifies the location of
|
|
the Postfix \fBsendmail\fR(1) command. This command can be used to
|
|
submit mail into the Postfix queue.
|
|
.SH service_name (read\-only)
|
|
The master.cf service name of a Postfix daemon process. This
|
|
can be used to distinguish the logging from different services that
|
|
use the same program name.
|
|
.PP
|
|
Example master.cf entries:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Distinguish inbound MTA logging from submission and submissions logging.
|
|
smtp inet n \- n \- \- smtpd
|
|
submission inet n \- n \- \- smtpd
|
|
\-o syslog_name=postfix/$service_name
|
|
submissions inet n \- n \- \- smtpd
|
|
\-o syslog_name=postfix/$service_name
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Distinguish outbound MTA logging from inbound relay logging.
|
|
smtp unix \- \- n \- \- smtp
|
|
relay unix \- \- n \- \- smtp
|
|
\-o syslog_name=postfix/$service_name
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.3 and later.
|
|
.SH service_throttle_time (default: 60s)
|
|
How long the Postfix \fBmaster\fR(8) waits before forking a server that
|
|
appears to be malfunctioning.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH setgid_group (default: postdrop)
|
|
The group ownership of set\-gid Postfix commands and of group\-writable
|
|
Postfix directories. When this parameter value is changed you need
|
|
to re\-run "\fBpostfix set\-permissions\fR" (with Postfix version 2.0 and
|
|
earlier: "\fB/etc/postfix/post\-install set\-permissions\fR".
|
|
.SH shlib_directory (default: see 'postconf \-d' output)
|
|
The location of Postfix dynamically\-linked libraries
|
|
(libpostfix\-*.so), and the default location of Postfix database
|
|
plugins (postfix\-*.so) that have a relative pathname in the
|
|
dynamicmaps.cf file. The shlib_directory parameter defaults to
|
|
"no" when Postfix dynamically\-linked libraries and database plugins
|
|
are disabled at compile time, otherwise it typically defaults to
|
|
/usr/lib/postfix or /usr/local/lib/postfix.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
The directory specified with shlib_directory should contain
|
|
only Postfix\-related files. Postfix dynamically\-linked libraries
|
|
and database plugins should not be installed in a "public" system
|
|
directory such as /usr/lib or /usr/local/lib. Linking Postfix
|
|
dynamically\-linked library files or database plugins into non\-Postfix
|
|
programs is not supported. Postfix dynamically\-linked libraries
|
|
and database plugins implement a Postfix\-internal API that changes
|
|
without maintaining compatibility.
|
|
.IP \(bu
|
|
You can change the shlib_directory value after Postfix is
|
|
built. However, you may have to run ldconfig or equivalent to prevent
|
|
Postfix programs from failing because the libpostfix\-*.so files are
|
|
not found. No ldconfig command is needed if you keep the libpostfix\-*.so
|
|
files in the compiled\-in default $shlib_directory location.
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH show_user_unknown_table_name (default: yes)
|
|
Display the name of the recipient table in the "User unknown"
|
|
responses. The extra detail makes troubleshooting easier but also
|
|
reveals information that is nobody else's business.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH showq_service_name (default: showq)
|
|
The name of the \fBshowq\fR(8) service. This service produces mail queue
|
|
status reports.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH smtp_address_preference (default: any)
|
|
The address type ("ipv6", "ipv4" or "any") that the Postfix
|
|
SMTP client will try first, when a destination has IPv6 and IPv4
|
|
addresses with equal MX preference. This feature has no effect
|
|
unless the inet_protocols setting enables both IPv4 and IPv6.
|
|
.PP
|
|
Postfix SMTP client address preference has evolved. With Postfix
|
|
2.8 the default is "ipv6"; earlier implementations are hard\-coded
|
|
to prefer IPv6 over IPv4.
|
|
.PP
|
|
Notes for mail delivery between sites that have both IPv4 and
|
|
IPv6 connectivity:
|
|
.IP \(bu
|
|
The setting "smtp_address_preference = ipv6" is unsafe.
|
|
All deliveries will suffer delays during an IPv6 outage, even
|
|
while the destination is still reachable over IPv4. Mail may be
|
|
stuck in the queue with Postfix versions < 3.3 that do not
|
|
implement "smtp_balance_inet_protocols". For similar reasons, the
|
|
setting "smtp_address_preference = ipv4" is also unsafe.
|
|
.IP \(bu
|
|
The setting "smtp_address_preference = any" is safe. With
|
|
this, and "smtp_balance_inet_protocols = yes" (the default), only
|
|
half of deliveries will suffer delays if there is an outage
|
|
that affects IPv6 or IPv4, as long as it does not affect both.
|
|
.IP \(bu
|
|
The setting "smtp_address_preference = ipv4" is not a
|
|
solution for remote servers that flag email received over IPv6 as
|
|
more 'spammy' (the client IPv6 address has a bad or missing PTR or
|
|
AAAA record, bad network neighbors, etc.). Instead, configure Postfix
|
|
to receive mail over both IPv4 and IPv6, and to deliver mail over
|
|
only IPv4.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
inet_protocols = all
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf
|
|
smtp ...other fields... smtp \-o inet_protocols=ipv4
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH smtp_address_verify_target (default: rcpt)
|
|
In the context of email address verification, the SMTP protocol
|
|
stage that determines whether an email address is deliverable.
|
|
Specify one of "rcpt" or "data". The latter is needed with remote
|
|
SMTP servers that reject recipients after the DATA command. Use
|
|
transport_maps to apply this feature selectively:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
transport_maps = hash:/etc/postfix/transport
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/transport:
|
|
smtp\-domain\-that\-verifies\-after\-data smtp\-data\-target:
|
|
lmtp\-domain\-that\-verifies\-after\-data lmtp\-data\-target:
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
smtp\-data\-target unix \- \- n \- \- smtp
|
|
\-o smtp_address_verify_target=data
|
|
lmtp\-data\-target unix \- \- n \- \- lmtp
|
|
\-o lmtp_address_verify_target=data
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Unselective use of the "data" target does no harm, but will
|
|
result in unnecessary "lost connection after DATA" events at remote
|
|
SMTP/LMTP servers.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtp_always_send_ehlo (default: yes)
|
|
Always send EHLO at the start of an SMTP session.
|
|
.PP
|
|
With "smtp_always_send_ehlo = no", the Postfix SMTP client sends
|
|
EHLO only when
|
|
the word "ESMTP" appears in the server greeting banner (example:
|
|
220 spike.porcupine.org ESMTP Postfix).
|
|
.SH smtp_balance_inet_protocols (default: yes)
|
|
When a remote destination resolves to a combination of IPv4 and
|
|
IPv6 addresses, ensure that the Postfix SMTP client can try both
|
|
address types before it runs into the smtp_mx_address_limit.
|
|
.PP
|
|
This avoids an interoperability problem when a destination resolves
|
|
to primarily IPv6 addresses, the smtp_address_limit feature eliminates
|
|
most or all IPv4 addresses, and the destination is not reachable over
|
|
IPv6.
|
|
.PP
|
|
This feature is available in Postfix 3.3 and later.
|
|
.SH smtp_bind_address (default: empty)
|
|
An optional numerical network address that the Postfix SMTP client
|
|
should bind to when making an IPv4 connection.
|
|
.PP
|
|
This can be specified in the main.cf file for all SMTP clients, or
|
|
it can be specified in the master.cf file for a specific client,
|
|
for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
smtp ... smtp \-o smtp_bind_address=11.22.33.44
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
See smtp_bind_address_enforce for how Postfix should handle
|
|
errors (Postfix 3.7 and later).
|
|
.PP
|
|
Note 1: when inet_interfaces specifies no more than one IPv4
|
|
address, and that address is a non\-loopback address, it is
|
|
automatically used as the smtp_bind_address. This supports virtual
|
|
IP hosting, but can be a problem on multi\-homed firewalls. See the
|
|
inet_interfaces documentation for more detail.
|
|
.PP
|
|
Note 2: address information may be enclosed inside [],
|
|
but this form is not required here.
|
|
.SH smtp_bind_address6 (default: empty)
|
|
An optional numerical network address that the Postfix SMTP client
|
|
should bind to when making an IPv6 connection.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
This can be specified in the main.cf file for all SMTP clients, or
|
|
it can be specified in the master.cf file for a specific client,
|
|
for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
smtp ... smtp \-o smtp_bind_address6=1:2:3:4:5:6:7:8
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
See smtp_bind_address_enforce for how Postfix should handle
|
|
errors (Postfix 3.7 and later).
|
|
.PP
|
|
Note 1: when inet_interfaces specifies no more than one IPv6
|
|
address, and that address is a non\-loopback address, it is
|
|
automatically used as the smtp_bind_address6. This supports virtual
|
|
IP hosting, but can be a problem on multi\-homed firewalls. See the
|
|
inet_interfaces documentation for more detail.
|
|
.PP
|
|
Note 2: address information may be enclosed inside [],
|
|
but this form is not recommended here.
|
|
.SH smtp_bind_address_enforce (default: no)
|
|
Defer delivery when the Postfix SMTP client cannot apply the
|
|
smtp_bind_address or smtp_bind_address6 setting. By default, the
|
|
Postfix SMTP client will continue delivery after logging a warning.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH smtp_body_checks (default: empty)
|
|
Restricted \fBbody_checks\fR(5) tables for the Postfix SMTP client.
|
|
These tables are searched while mail is being delivered. Actions
|
|
that change the delivery time or destination are not available.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_cname_overrides_servername (default: version dependent)
|
|
When the remote SMTP servername is a DNS CNAME, replace the
|
|
servername with the result from CNAME expansion for the purpose of
|
|
logging, SASL password lookup, TLS
|
|
policy decisions, or TLS certificate verification. The value "no"
|
|
hardens Postfix smtp_tls_per_site hostname\-based policies against
|
|
false hostname information in DNS CNAME records, and makes SASL
|
|
password file lookups more predictable. This is the default setting
|
|
as of Postfix 2.3.
|
|
.PP
|
|
When DNS CNAME records are validated with secure DNS lookups
|
|
(smtp_dns_support_level = dnssec), they are always allowed to
|
|
override the above servername (Postfix 2.11 and later).
|
|
.PP
|
|
This feature is available in Postfix 2.2.9 and later.
|
|
.SH smtp_connect_timeout (default: 30s)
|
|
The Postfix SMTP client time limit for completing a TCP connection, or
|
|
zero (use the operating system built\-in time limit).
|
|
.PP
|
|
When no connection can be made within the deadline, the Postfix
|
|
SMTP client
|
|
tries the next address on the mail exchanger list. Specify 0 to
|
|
disable the time limit (i.e. use whatever timeout is implemented by
|
|
the operating system).
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_connection_cache_destinations (default: empty)
|
|
Permanently enable SMTP connection caching for the specified
|
|
destinations. With SMTP connection caching, a connection is not
|
|
closed immediately after completion of a mail transaction. Instead,
|
|
the connection is kept open for up to $smtp_connection_cache_time_limit
|
|
seconds. This allows connections to be reused for other deliveries,
|
|
and can improve mail delivery performance.
|
|
.PP
|
|
Specify a comma or white space separated list of destinations
|
|
or pseudo\-destinations:
|
|
.IP \(bu
|
|
if mail is sent without a relay host: a domain name (the
|
|
right\-hand side of an email address, without the [] around a numeric
|
|
IP address),
|
|
.IP \(bu
|
|
if mail is sent via a relay host: a relay host name (without
|
|
[] or non\-default TCP port), as specified in main.cf or in the
|
|
transport map,
|
|
.IP \(bu
|
|
if mail is sent via a UNIX\-domain socket: a pathname (without
|
|
the unix: prefix),
|
|
.IP \(bu
|
|
a /file/name with domain names and/or relay host names as
|
|
defined above,
|
|
.IP \(bu
|
|
a "type:table" with domain names and/or relay host names on
|
|
the left\-hand side. The right\-hand side result from "type:table"
|
|
lookups is ignored.
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_connection_cache_on_demand (default: yes)
|
|
Temporarily enable SMTP connection caching while a destination
|
|
has a high volume of mail in the active queue. With SMTP connection
|
|
caching, a connection is not closed immediately after completion
|
|
of a mail transaction. Instead, the connection is kept open for
|
|
up to $smtp_connection_cache_time_limit seconds. This allows
|
|
connections to be reused for other deliveries, and can improve mail
|
|
delivery performance.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_connection_cache_time_limit (default: 2s)
|
|
When SMTP connection caching is enabled, the amount of time that
|
|
an unused SMTP client socket is kept open before it is closed. Do
|
|
not specify larger values without permission from the remote sites.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_connection_reuse_count_limit (default: 0)
|
|
When SMTP connection caching is enabled, the number of times
|
|
that an SMTP session may be reused before it is closed, or zero (no
|
|
limit). With a reuse count limit of N, a connection is used up to
|
|
N+1 times.
|
|
.PP
|
|
NOTE: This feature is unsafe. When a high\-volume destination
|
|
has multiple inbound MTAs, then the slowest inbound MTA will attract
|
|
the most connections to that destination. This limitation does not
|
|
exist with the smtp_connection_reuse_time_limit feature.
|
|
.PP
|
|
This feature is available in Postfix 2.11.
|
|
.SH smtp_connection_reuse_time_limit (default: 300s)
|
|
The amount of time during which Postfix will use an SMTP
|
|
connection repeatedly. The timer starts when the connection is
|
|
initiated (i.e. it includes the connect, greeting and helo latency,
|
|
in addition to the latencies of subsequent mail delivery transactions).
|
|
.PP
|
|
This feature addresses a performance stability problem with
|
|
remote SMTP servers. This problem is not specific to Postfix: it
|
|
can happen when any MTA sends large amounts of SMTP email to a site
|
|
that has multiple MX hosts.
|
|
.PP
|
|
The problem starts when one of a set of MX hosts becomes slower
|
|
than the rest. Even though SMTP clients connect to fast and slow
|
|
MX hosts with equal probability, the slow MX host ends up with more
|
|
simultaneous inbound connections than the faster MX hosts, because
|
|
the slow MX host needs more time to serve each client request.
|
|
.PP
|
|
The slow MX host becomes a connection attractor. If one MX
|
|
host becomes N times slower than the rest, it dominates mail delivery
|
|
latency unless there are more than N fast MX hosts to counter the
|
|
effect. And if the number of MX hosts is smaller than N, the mail
|
|
delivery latency becomes effectively that of the slowest MX host
|
|
divided by the total number of MX hosts.
|
|
.PP
|
|
The solution uses connection caching in a way that differs from
|
|
Postfix version 2.2. By limiting the amount of time during which a connection
|
|
can be used repeatedly (instead of limiting the number of deliveries
|
|
over that connection), Postfix not only restores fairness in the
|
|
distribution of simultaneous connections across a set of MX hosts,
|
|
it also favors deliveries over connections that perform well, which
|
|
is exactly what we want.
|
|
.PP
|
|
The default reuse time limit, 300s, is comparable to the various
|
|
smtp transaction timeouts which are fair estimates of maximum excess
|
|
latency for a slow delivery. Note that hosts may accept thousands
|
|
of messages over a single connection within the default connection
|
|
reuse time limit. This number is much larger than the default Postfix
|
|
version 2.2 limit of 10 messages per cached connection. It may prove necessary
|
|
to lower the limit to avoid interoperability issues with MTAs that
|
|
exhibit bugs when many messages are delivered via a single connection.
|
|
A lower reuse time limit risks losing the benefit of connection
|
|
reuse when the average connection and mail delivery latency exceeds
|
|
the reuse time limit.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_data_done_timeout (default: 600s)
|
|
The Postfix SMTP client time limit for sending the SMTP ".", and
|
|
for receiving the remote SMTP server response.
|
|
.PP
|
|
When no response is received within the deadline, a warning is
|
|
logged that the mail may be delivered multiple times.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_data_init_timeout (default: 120s)
|
|
The Postfix SMTP client time limit for sending the SMTP DATA command,
|
|
and for receiving the remote SMTP server response.
|
|
.PP
|
|
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_data_xfer_timeout (default: 180s)
|
|
The Postfix SMTP client time limit for sending the SMTP message content.
|
|
When the connection makes no progress for more than $smtp_data_xfer_timeout
|
|
seconds the Postfix SMTP client terminates the transfer.
|
|
.PP
|
|
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_defer_if_no_mx_address_found (default: no)
|
|
Defer mail delivery when no MX record resolves to an IP address.
|
|
.PP
|
|
The default (no) is to return the mail as undeliverable. With older
|
|
Postfix versions the default was to keep trying to deliver the mail
|
|
until someone fixed the MX record or until the mail was too old.
|
|
.PP
|
|
Note: the Postfix SMTP client always ignores MX records with equal
|
|
or worse preference
|
|
than the local MTA itself.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_delivery_status_filter (default: $default_delivery_status_filter)
|
|
Optional filter for the \fBsmtp\fR(8) delivery agent to change the
|
|
delivery status code or explanatory text of successful or unsuccessful
|
|
deliveries. See default_delivery_status_filter for details.
|
|
.PP
|
|
NOTE: This feature modifies Postfix SMTP client error or non\-error
|
|
messages that may or may not be derived from remote SMTP server
|
|
responses. In contrast, the smtp_reply_filter feature modifies
|
|
remote SMTP server responses only.
|
|
.SH smtp_destination_concurrency_limit (default: $default_destination_concurrency_limit)
|
|
The maximal number of parallel deliveries to the same destination
|
|
via the smtp message delivery transport. This limit is enforced by
|
|
the queue manager. The message delivery transport name is the first
|
|
field in the entry in the master.cf file.
|
|
.SH smtp_destination_recipient_limit (default: $default_destination_recipient_limit)
|
|
The maximal number of recipients per message for the smtp
|
|
message delivery transport. This limit is enforced by the queue
|
|
manager. The message delivery transport name is the first field in
|
|
the entry in the master.cf file.
|
|
.PP
|
|
Setting this parameter to a value of 1 changes the meaning of
|
|
smtp_destination_concurrency_limit from concurrency per domain
|
|
into concurrency per recipient.
|
|
.SH smtp_discard_ehlo_keyword_address_maps (default: empty)
|
|
Lookup tables, indexed by the remote SMTP server address, with
|
|
case insensitive lists of EHLO keywords (pipelining, starttls, auth,
|
|
etc.) that the Postfix SMTP client will ignore in the EHLO response from a
|
|
remote SMTP server. See smtp_discard_ehlo_keywords for details. The
|
|
table is not indexed by hostname for consistency with
|
|
smtpd_discard_ehlo_keyword_address_maps.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_discard_ehlo_keywords (default: empty)
|
|
A case insensitive list of EHLO keywords (pipelining, starttls,
|
|
auth, etc.) that the Postfix SMTP client will ignore in the EHLO
|
|
response from a remote SMTP server.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
Specify the \fBsilent\-discard\fR pseudo keyword to prevent
|
|
this action from being logged.
|
|
.IP \(bu
|
|
Use the smtp_discard_ehlo_keyword_address_maps feature to
|
|
discard EHLO keywords selectively.
|
|
.br
|
|
.SH smtp_dns_reply_filter (default: empty)
|
|
Optional filter for Postfix SMTP client DNS lookup results.
|
|
Specify zero or more lookup tables. The lookup tables are searched
|
|
in the given order for a match with the DNS lookup result, converted
|
|
to the following form:
|
|
.PP
|
|
.nf
|
|
.na
|
|
\fIname ttl class type preference value\fR
|
|
.fi
|
|
.ad
|
|
.PP
|
|
The \fIclass\fR field is always "IN", the \fIpreference\fR
|
|
field exists only for MX records, the names of hosts, domains, etc.
|
|
end in ".", and those names are in ASCII form (xn\-\-mumble form in
|
|
the case of UTF8 names).
|
|
.PP
|
|
When a match is found, the table lookup result specifies an
|
|
action. By default, the table query and the action name are
|
|
case\-insensitive. Currently, only the \fBIGNORE\fR action is
|
|
implemented.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
Postfix DNS reply filters have no effect on implicit DNS
|
|
lookups through nsswitch.conf or equivalent mechanisms.
|
|
.IP \(bu
|
|
The Postfix SMTP/LMTP client uses smtp_dns_reply_filter
|
|
and lmtp_dns_reply_filter only to discover a remote SMTP or LMTP
|
|
service (record types MX, A, AAAA, and TLSA). These lookups are
|
|
also made to implement the features reject_unverified_sender and
|
|
reject_unverified_recipient.
|
|
.IP \(bu
|
|
The Postfix SMTP/LMTP client defers mail delivery when
|
|
a filter removes all lookup results from a successful query.
|
|
.IP \(bu
|
|
Postfix SMTP server uses smtpd_dns_reply_filter only to
|
|
look up MX, A, AAAA, and TXT records to implement the features
|
|
reject_unknown_helo_hostname, reject_unknown_sender_domain,
|
|
reject_unknown_recipient_domain, reject_rbl_*, and reject_rhsbl_*.
|
|
.IP \(bu
|
|
The Postfix SMTP server logs a warning or defers mail
|
|
delivery when a filter removes all lookup results from a successful
|
|
query.
|
|
.br
|
|
.PP
|
|
Example: ignore Google AAAA records in Postfix SMTP client DNS
|
|
lookups, because Google sometimes hard\-rejects mail from IPv6 clients
|
|
with valid PTR etc. records.
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_dns_reply_filter = pcre:/etc/postfix/smtp_dns_reply_filter
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/smtp_dns_reply_filter:
|
|
# /domain ttl IN AAAA address/ action, all case\-insensitive.
|
|
# Note: the domain name ends in ".".
|
|
/^\eS+\e.google\e.com\e.\es+\eS+\es+\eS+\es+AAAA\es+/ IGNORE
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtp_dns_resolver_options (default: empty)
|
|
DNS Resolver options for the Postfix SMTP client. Specify zero
|
|
or more of the following options, separated by comma or whitespace.
|
|
Option names are case\-sensitive. Some options refer to domain names
|
|
that are specified in the file /etc/resolv.conf or equivalent.
|
|
.IP "\fBres_defnames\fR"
|
|
Append the current domain name to single\-component names (those
|
|
that do not contain a "." character). This can produce incorrect
|
|
results, and is the hard\-coded behavior prior to Postfix 2.8.
|
|
.br
|
|
.IP "\fBres_dnsrch\fR"
|
|
Search for host names in the current domain and in parent
|
|
domains. This can produce incorrect results and is therefore not
|
|
recommended.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH smtp_dns_support_level (default: empty)
|
|
Level of DNS support in the Postfix SMTP client. With
|
|
"smtp_dns_support_level" left at its empty default value, the legacy
|
|
"disable_dns_lookups" parameter controls whether DNS is enabled in
|
|
the Postfix SMTP client, otherwise the legacy parameter is ignored.
|
|
.PP
|
|
Specify one of the following:
|
|
.IP "\fBdisabled\fR"
|
|
Disable DNS lookups. No MX lookups are performed and hostname
|
|
to address lookups are unconditionally "native". This setting is
|
|
not appropriate for hosts that deliver mail to the public Internet.
|
|
Some obsolete how\-to documents recommend disabling DNS lookups in
|
|
some configurations with content_filters. This is no longer required
|
|
and strongly discouraged.
|
|
.br
|
|
.IP "\fBenabled\fR"
|
|
Enable DNS lookups. Nexthop destination domains not enclosed
|
|
in "[]" will be subject to MX lookups. If "dns" and "native" are
|
|
included in the "smtp_host_lookup" parameter value, DNS will be
|
|
queried first to resolve MX\-host A records, followed by "native"
|
|
lookups if no answer is found in DNS.
|
|
.br
|
|
.IP "\fBdnssec\fR"
|
|
Enable DNSSEC
|
|
lookups. The "dnssec" setting differs from the "enabled" setting
|
|
above in the following ways:
|
|
.IP \(bu
|
|
Any MX lookups will set
|
|
RES_USE_DNSSEC and RES_USE_EDNS0 to request DNSSEC\-validated
|
|
responses. If the MX response is DNSSEC\-validated the corresponding
|
|
hostnames are considered validated.
|
|
.IP \(bu
|
|
The address lookups of
|
|
validated hostnames are also validated, (provided of course
|
|
"smtp_host_lookup" includes "dns", see below).
|
|
.IP \(bu
|
|
Temporary
|
|
failures in DNSSEC\-enabled hostname\-to\-address resolution block any
|
|
"native" lookups. Additional "native" lookups only happen when
|
|
DNSSEC lookups hard\-fail (NODATA or NXDOMAIN).
|
|
.br
|
|
.br
|
|
.br
|
|
.PP
|
|
The Postfix SMTP client considers non\-MX "[nexthop]" and
|
|
"[nexthop]:port" destinations equivalent to statically\-validated
|
|
MX records of the form "nexthop. IN MX 0 nexthop." Therefore,
|
|
with "dnssec" support turned on, validated hostname\-to\-address
|
|
lookups apply to the nexthop domain of any "[nexthop]" or
|
|
"[nexthop]:port" destination. This is also true for LMTP "inet:host"
|
|
and "inet:host:port" destinations, as LMTP hostnames are never
|
|
subject to MX lookups.
|
|
.PP
|
|
The "dnssec" setting is recommended only if you plan to use the
|
|
dane or dane\-only TLS security
|
|
level, otherwise enabling DNSSEC support in Postfix offers no
|
|
additional security. Postfix DNSSEC support relies on an upstream
|
|
recursive nameserver that validates DNSSEC signatures. Such a DNS
|
|
server will always filter out forged DNS responses, even when Postfix
|
|
itself is not configured to use DNSSEC.
|
|
.PP
|
|
When using Postfix DANE support the "smtp_host_lookup" parameter
|
|
should include "dns", as DANE is not applicable
|
|
to hosts resolved via "native" lookups.
|
|
.PP
|
|
As mentioned above, Postfix is not a validating stub
|
|
resolver; it relies on the system's configured DNSSEC\-validating
|
|
recursive
|
|
nameserver to perform all DNSSEC validation. Since this
|
|
nameserver's DNSSEC\-validated responses will be fully trusted, it
|
|
is strongly recommended that the MTA host have a local DNSSEC\-validating
|
|
recursive caching nameserver listening on a loopback address, and
|
|
be configured to use only this nameserver for all lookups. Otherwise,
|
|
Postfix may remain subject to man\-in\-the\-middle attacks that forge
|
|
responses from the recursive nameserver
|
|
.PP
|
|
DNSSEC support requires a version of Postfix compiled against a
|
|
reasonably\-modern DNS \fBresolver\fR(3) library that implements the
|
|
RES_USE_DNSSEC and RES_USE_EDNS0 resolver options.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH smtp_enforce_tls (default: no)
|
|
Enforcement mode: require that remote SMTP servers use TLS
|
|
encryption, and never send mail in the clear. This also requires
|
|
that the remote SMTP server hostname matches the information in
|
|
the remote server certificate, and that the remote SMTP server
|
|
certificate was issued by a CA that is trusted by the Postfix SMTP
|
|
client. If the certificate doesn't verify or the hostname doesn't
|
|
match, delivery is deferred and mail stays in the queue.
|
|
.PP
|
|
The server hostname is matched against all names provided as
|
|
dNSNames in the SubjectAlternativeName. If no dNSNames are specified,
|
|
the CommonName is checked. The behavior may be changed with the
|
|
smtp_tls_enforce_peername option.
|
|
.PP
|
|
This option is useful only if you are definitely sure that you
|
|
will only connect to servers that support RFC 2487 _and_ that
|
|
provide valid server certificates. Typical use is for clients that
|
|
send all their email to a dedicated mailhub.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later. With
|
|
Postfix 2.3 and later use smtp_tls_security_level instead.
|
|
.SH smtp_fallback_relay (default: $fallback_relay)
|
|
Optional list of relay destinations that will be used when an
|
|
SMTP destination is not found, or when delivery fails due to a
|
|
non\-permanent error. With Postfix 2.2 and earlier this parameter
|
|
is called fallback_relay.
|
|
.PP
|
|
By default, smtp_fallback_relay is empty, mail is returned to
|
|
the sender when a destination is not found, and delivery is deferred
|
|
after it fails due to a non\-permanent error.
|
|
.PP
|
|
With bulk email deliveries, it can be beneficial to run the
|
|
fallback relay MTA on the same host, so that it can reuse the sender
|
|
IP address. This speeds up deliveries that are delayed by IP\-based
|
|
reputation systems (greylist, etc.).
|
|
.PP
|
|
The fallback relays must be SMTP destinations. Specify a domain,
|
|
host, host:port, [host]:port, [address] or [address]:port; the form
|
|
[host] turns off MX lookups. If you specify multiple SMTP
|
|
destinations, Postfix will try them in the specified order.
|
|
.PP
|
|
To prevent mailer loops between MX hosts and fall\-back hosts,
|
|
Postfix version 2.2 and later will not use the fallback relays for
|
|
destinations that it is MX host for (assuming DNS lookup is turned on).
|
|
.SH smtp_generic_maps (default: empty)
|
|
Optional lookup tables that perform address rewriting in the
|
|
Postfix SMTP client, typically to transform a locally valid address into
|
|
a globally valid address when sending mail across the Internet.
|
|
This is needed when the local machine does not have its own Internet
|
|
domain name, but uses something like \fIlocaldomain.local\fR
|
|
instead.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
The table format and lookups are documented in \fBgeneric\fR(5);
|
|
examples are shown in the ADDRESS_REWRITING_README and
|
|
STANDARD_CONFIGURATION_README documents.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_header_checks (default: empty)
|
|
Restricted \fBheader_checks\fR(5) tables for the Postfix SMTP client.
|
|
These tables are searched while mail is being delivered. Actions
|
|
that change the delivery time or destination are not available.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_helo_name (default: $myhostname)
|
|
The hostname to send in the SMTP HELO or EHLO command.
|
|
.PP
|
|
The default value is the machine hostname. Specify a hostname or
|
|
[ip.add.re.ss].
|
|
.PP
|
|
This information can be specified in the main.cf file for all SMTP
|
|
clients, or it can be specified in the master.cf file for a specific
|
|
client, for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
mysmtp ... smtp \-o smtp_helo_name=foo.bar.com
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH smtp_helo_timeout (default: 300s)
|
|
The Postfix SMTP client time limit for sending the HELO or EHLO command,
|
|
and for receiving the initial remote SMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_host_lookup (default: dns)
|
|
What mechanisms the Postfix SMTP client uses to look up a host's
|
|
IP address. This parameter is ignored when DNS lookups are disabled
|
|
(see: disable_dns_lookups and smtp_dns_support_level). The "dns"
|
|
mechanism is always tried before "native" if both are listed.
|
|
.PP
|
|
Specify one of the following:
|
|
.IP "\fBdns\fR"
|
|
Hosts can be found in the DNS (preferred).
|
|
.br
|
|
.IP "\fBnative\fR"
|
|
Use the native naming service only (nsswitch.conf, or equivalent
|
|
mechanism).
|
|
.br
|
|
.IP "\fBdns, native\fR"
|
|
Use the native service for hosts not found in the DNS.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_line_length_limit (default: 998)
|
|
The maximal length of message header and body lines that Postfix
|
|
will send via SMTP. This limit does not include the <CR><LF>
|
|
at the end of each line. Longer lines are broken by inserting
|
|
"<CR><LF><SPACE>", to minimize the damage to MIME
|
|
formatted mail. Specify zero to disable this limit.
|
|
.PP
|
|
The Postfix limit of 998 characters not including <CR><LF>
|
|
is consistent with the SMTP limit of 1000 characters including
|
|
<CR><LF>. The Postfix limit was 990 with Postfix 2.8
|
|
and earlier.
|
|
.SH smtp_mail_timeout (default: 300s)
|
|
The Postfix SMTP client time limit for sending the MAIL FROM command,
|
|
and for receiving the remote SMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_mime_header_checks (default: empty)
|
|
Restricted \fBmime_header_checks\fR(5) tables for the Postfix SMTP
|
|
client. These tables are searched while mail is being delivered.
|
|
Actions that change the delivery time or destination are not
|
|
available.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_min_data_rate (default: 500)
|
|
The minimum plaintext data transfer rate in bytes/second for
|
|
DATA requests, when deadlines are enabled with smtp_per_request_deadline.
|
|
After a write operation transfers N plaintext message bytes (possibly
|
|
after TLS encryption), and after the DATA request deadline is
|
|
decremented by the elapsed time of that write operation, the DATA
|
|
request deadline is incremented by N/smtp_min_data_rate seconds.
|
|
However, the deadline will never be incremented beyond the time
|
|
limit specified with smtp_data_xfer_timeout.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH smtp_mx_address_limit (default: 5)
|
|
The maximal number of MX (mail exchanger) IP addresses that can
|
|
result from Postfix SMTP client mail exchanger lookups, or zero (no
|
|
limit). Prior to
|
|
Postfix version 2.3, this limit was disabled by default.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_mx_session_limit (default: 2)
|
|
The maximal number of SMTP sessions per delivery request before
|
|
the Postfix SMTP client
|
|
gives up or delivers to a fall\-back relay host, or zero (no
|
|
limit). This restriction ignores sessions that fail to complete the
|
|
SMTP initial handshake (Postfix version 2.2 and earlier) or that fail to
|
|
complete the EHLO and TLS handshake (Postfix version 2.3 and later).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_nested_header_checks (default: empty)
|
|
Restricted \fBnested_header_checks\fR(5) tables for the Postfix SMTP
|
|
client. These tables are searched while mail is being delivered.
|
|
Actions that change the delivery time or destination are not
|
|
available.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_never_send_ehlo (default: no)
|
|
Never send EHLO at the start of an SMTP session. See also the
|
|
smtp_always_send_ehlo parameter.
|
|
.SH smtp_per_record_deadline (default: no)
|
|
Change the behavior of the smtp_*_timeout time limits, from a
|
|
time limit per read or write system call, to a time limit to send
|
|
or receive a complete record (an SMTP command line, SMTP response
|
|
line, SMTP message content line, or TLS protocol message). This
|
|
limits the impact from hostile peers that trickle data one byte at
|
|
a time.
|
|
.PP
|
|
Note: when per\-record deadlines are enabled, a short timeout
|
|
may cause problems with TLS over very slow network connections.
|
|
The reasons are that a TLS protocol message can be up to 16 kbytes
|
|
long (with TLSv1), and that an entire TLS protocol message must be
|
|
sent or received within the per\-record deadline.
|
|
.PP
|
|
This feature is available in Postfix 2.9\-3.6. With older
|
|
Postfix releases, the behavior is as if this parameter is set to
|
|
"no". Postfix 3.7 and later use smtp_per_request_deadline.
|
|
.SH smtp_per_request_deadline (default: no)
|
|
Change the behavior of the smtp_*_timeout time limits, from a
|
|
time limit per plaintext or TLS read or write call, to a combined
|
|
time limit for sending a complete SMTP request and for receiving a
|
|
complete SMTP response. The deadline limits only the time spent
|
|
waiting for plaintext or TLS read or write calls, not time spent
|
|
elsewhere. The per\-request deadline limits the impact from hostile
|
|
peers that trickle data one byte at a time.
|
|
.PP
|
|
See smtp_min_data_rate for how the per\-request deadline is
|
|
managed during the DATA phase.
|
|
.PP
|
|
Note: when per\-request deadlines are enabled, a short time limit
|
|
may cause problems with TLS over very slow network connections. The
|
|
reason is that a TLS protocol message can be up to 16 kbytes long
|
|
(with TLSv1), and that an entire TLS protocol message must be
|
|
transferred within the per\-request deadline.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later. A weaker
|
|
feature, called smtp_per_record_deadline, is available with Postfix
|
|
2.9\-3.6.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH smtp_pix_workaround_delay_time (default: 10s)
|
|
How long the Postfix SMTP client pauses before sending
|
|
".<CR><LF>" in order to work around the PIX firewall
|
|
"<CR><LF>.<CR><LF>" bug.
|
|
.PP
|
|
Choosing too short a time makes this workaround ineffective when
|
|
sending large messages over slow network connections.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_pix_workaround_maps (default: empty)
|
|
Lookup tables, indexed by the remote SMTP server address, with
|
|
per\-destination workarounds for CISCO PIX firewall bugs. The table
|
|
is not indexed by hostname for consistency with
|
|
smtp_discard_ehlo_keyword_address_maps.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH smtp_pix_workaround_threshold_time (default: 500s)
|
|
How long a message must be queued before the Postfix SMTP client
|
|
turns on the PIX firewall "<CR><LF>.<CR><LF>"
|
|
bug workaround for delivery through firewalls with "smtp fixup"
|
|
mode turned on.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
By default, the workaround is turned off for mail that is queued
|
|
for less than 500 seconds. In other words, the workaround is normally
|
|
turned off for the first delivery attempt.
|
|
.PP
|
|
Specify 0 to enable the PIX firewall
|
|
"<CR><LF>.<CR><LF>" bug workaround upon the
|
|
first delivery attempt.
|
|
.SH smtp_pix_workarounds (default: disable_esmtp, delay_dotcrlf)
|
|
A list that specifies zero or more workarounds for CISCO PIX
|
|
firewall bugs. These workarounds are implemented by the Postfix
|
|
SMTP client. Workaround names are separated by comma or space, and
|
|
are case insensitive. This parameter setting can be overruled with
|
|
per\-destination smtp_pix_workaround_maps settings.
|
|
.IP "\fBdelay_dotcrlf\fR
|
|
Insert a delay before sending
|
|
".<CR><LF>" after the end of the message content. The
|
|
delay is subject to the smtp_pix_workaround_delay_time and
|
|
smtp_pix_workaround_threshold_time parameter settings.
|
|
.br
|
|
.IP "\fBdisable_esmtp\fR
|
|
Disable all extended SMTP commands:
|
|
send HELO instead of EHLO.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later. The default
|
|
settings are backwards compatible with earlier Postfix versions.
|
|
.SH smtp_quit_timeout (default: 300s)
|
|
The Postfix SMTP client time limit for sending the QUIT command,
|
|
and for receiving the remote SMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_quote_rfc821_envelope (default: yes)
|
|
Quote addresses in Postfix SMTP client MAIL FROM and RCPT TO commands
|
|
as required
|
|
by RFC 5321. This includes putting quotes around an address localpart
|
|
that ends in ".".
|
|
.PP
|
|
The default is to comply with RFC 5321. If you have to send mail to
|
|
a broken SMTP server, configure a special SMTP client in master.cf:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
broken\-smtp . . . smtp \-o smtp_quote_rfc821_envelope=no
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
and route mail for the destination in question to the "broken\-smtp"
|
|
message delivery with a \fBtransport\fR(5) table.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_randomize_addresses (default: yes)
|
|
Randomize the order of equal\-preference MX host addresses. This
|
|
is a performance feature of the Postfix SMTP client.
|
|
.SH smtp_rcpt_timeout (default: 300s)
|
|
The Postfix SMTP client time limit for sending the SMTP RCPT TO
|
|
command, and for receiving the remote SMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtp_reply_filter (default: empty)
|
|
A mechanism to transform replies from remote SMTP servers one
|
|
line at a time. This is a last\-resort tool to work around server
|
|
replies that break interoperability with the Postfix SMTP client.
|
|
Other uses involve fault injection to test Postfix's handling of
|
|
invalid responses.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
In the case of a multi\-line reply, the Postfix SMTP client
|
|
uses the final reply line's numerical SMTP reply code and enhanced
|
|
status code.
|
|
.IP \(bu
|
|
The numerical SMTP reply code (XYZ) takes precedence over
|
|
the enhanced status code (X.Y.Z). When the enhanced status code
|
|
initial digit differs from the SMTP reply code initial digit, or
|
|
when no enhanced status code is present, the Postfix SMTP client
|
|
uses a generic enhanced status code (X.0.0) instead.
|
|
.br
|
|
.PP
|
|
Specify the name of a "type:table" lookup table. The search
|
|
string is a single SMTP reply line as received from the remote SMTP
|
|
server, except that the trailing <CR><LF> are removed.
|
|
When the lookup succeeds, the result replaces the single SMTP reply
|
|
line.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_reply_filter = pcre:/etc/postfix/reply_filter
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/reply_filter:
|
|
# Transform garbage into "250\-filler..." so that it looks like
|
|
# one line from a multi\-line reply. It does not matter what we
|
|
# substitute here as long it has the right syntax. The Postfix
|
|
# SMTP client will use the final line's numerical SMTP reply
|
|
# code and enhanced status code.
|
|
!/^([2\-5][0\-9][0\-9]($|[\- ]))/ 250\-filler for garbage
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.7.
|
|
.SH smtp_rset_timeout (default: 20s)
|
|
The Postfix SMTP client time limit for sending the RSET command,
|
|
and for receiving the remote SMTP server response. The SMTP client
|
|
sends RSET in
|
|
order to finish a recipient address probe, or to verify that a
|
|
cached session is still usable.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_sasl_auth_cache_name (default: empty)
|
|
An optional table to prevent repeated SASL authentication
|
|
failures with the same remote SMTP server hostname, username and
|
|
password. Each table (key, value) pair contains a server name, a
|
|
username and password, and the full server response. This information
|
|
is stored when a remote SMTP server rejects an authentication attempt
|
|
with a 535 reply code. As long as the smtp_sasl_password_maps
|
|
information does not change, and as long as the smtp_sasl_auth_cache_name
|
|
information does not expire (see smtp_sasl_auth_cache_time) the
|
|
Postfix SMTP client avoids SASL authentication attempts with the
|
|
same server, username and password, and instead bounces or defers
|
|
mail as controlled with the smtp_sasl_auth_soft_bounce configuration
|
|
parameter.
|
|
.PP
|
|
Use a per\-destination delivery concurrency of 1 (for example,
|
|
"smtp_destination_concurrency_limit = 1",
|
|
"relay_destination_concurrency_limit = 1", etc.), otherwise multiple
|
|
delivery agents may experience a login failure at the same time.
|
|
.PP
|
|
The table must be accessed via the proxywrite service, i.e. the
|
|
map name must start with "proxy:". The table should be stored under
|
|
the directory specified with the data_directory parameter.
|
|
.PP
|
|
This feature uses cryptographic hashing to protect plain\-text
|
|
passwords, and requires that Postfix is compiled with TLS support.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_sasl_auth_cache_name = proxy:btree:/var/lib/postfix/sasl_auth_cache
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_sasl_auth_cache_time (default: 90d)
|
|
The maximal age of an smtp_sasl_auth_cache_name entry before it
|
|
is removed.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is d (days).
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_sasl_auth_enable (default: no)
|
|
Enable SASL authentication in the Postfix SMTP client. By default,
|
|
the Postfix SMTP client uses no authentication.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_sasl_auth_enable = yes
|
|
.fi
|
|
.ad
|
|
.SH smtp_sasl_auth_soft_bounce (default: yes)
|
|
When a remote SMTP server rejects a SASL authentication request
|
|
with a 535 reply code, defer mail delivery instead of returning
|
|
mail as undeliverable. The latter behavior was hard\-coded prior to
|
|
Postfix version 2.5.
|
|
.PP
|
|
Note: the setting "yes" overrides the global soft_bounce
|
|
parameter, but the setting "no" does not.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Default as of Postfix 2.5
|
|
smtp_sasl_auth_soft_bounce = yes
|
|
# The old hard\-coded default
|
|
smtp_sasl_auth_soft_bounce = no
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_sasl_mechanism_filter (default: empty)
|
|
If non\-empty, a Postfix SMTP client filter for the remote SMTP
|
|
server's list of offered SASL mechanisms. Different client and
|
|
server implementations may support different mechanism lists; by
|
|
default, the Postfix SMTP client will use the intersection of the
|
|
two. smtp_sasl_mechanism_filter specifies an optional third mechanism
|
|
list to intersect with.
|
|
.PP
|
|
Specify mechanism names, "/file/name" patterns or "type:table"
|
|
lookup tables. The right\-hand side result from "type:table" lookups
|
|
is ignored. Specify "!pattern" to exclude a mechanism name from the
|
|
list. The form "!/file/name" is supported only in Postfix version
|
|
2.4 and later.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_sasl_mechanism_filter = plain, login
|
|
smtp_sasl_mechanism_filter = /etc/postfix/smtp_mechs
|
|
smtp_sasl_mechanism_filter = !gssapi, !login, static:rest
|
|
.fi
|
|
.ad
|
|
.SH smtp_sasl_password_maps (default: empty)
|
|
Optional Postfix SMTP client lookup tables with one username:password
|
|
entry per sender, remote hostname or next\-hop domain. Per\-sender
|
|
lookup is done only when sender\-dependent authentication is enabled.
|
|
If no username:password entry is found, then the Postfix SMTP client
|
|
will not attempt to authenticate to the remote host.
|
|
.PP
|
|
Use smtp_sasl_password_result_delimiter to specify an
|
|
alternative separator between username and password.
|
|
.PP
|
|
The Postfix SMTP client opens the lookup table before going to
|
|
chroot jail, so you can leave the password file in /etc/postfix.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.SH smtp_sasl_password_result_delimiter (default: :)
|
|
The delimiter between username and password in sasl_passwd_maps lookup
|
|
results. Specify one non\-whitespace character that does not appear in
|
|
the username.
|
|
.PP
|
|
This feature is available in Postfix >= 3.9.
|
|
.SH smtp_sasl_path (default: empty)
|
|
Implementation\-specific information that the Postfix SMTP client
|
|
passes through to
|
|
the SASL plug\-in implementation that is selected with
|
|
\fBsmtp_sasl_type\fR. Typically this specifies the name of a
|
|
configuration file or rendezvous point.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_sasl_security_options (default: noplaintext, noanonymous)
|
|
Postfix SMTP client SASL security options; as of Postfix 2.3
|
|
the list of available
|
|
features depends on the SASL client implementation that is selected
|
|
with \fBsmtp_sasl_type\fR.
|
|
.PP
|
|
The following security features are defined for the \fBcyrus\fR
|
|
client SASL implementation:
|
|
.PP
|
|
Specify zero or more of the following:
|
|
.IP "\fBnoplaintext\fR"
|
|
Disallow methods that use plaintext passwords.
|
|
.br
|
|
.IP "\fBnoactive\fR"
|
|
Disallow methods subject to active (non\-dictionary) attack.
|
|
.br
|
|
.IP "\fBnodictionary\fR"
|
|
Disallow methods subject to passive (dictionary) attack.
|
|
.br
|
|
.IP "\fBnoanonymous\fR"
|
|
Disallow methods that allow anonymous authentication.
|
|
.br
|
|
.IP "\fBmutual_auth\fR"
|
|
Only allow methods that provide mutual authentication (not
|
|
available with SASL version 1).
|
|
.br
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_sasl_security_options = noplaintext
|
|
.fi
|
|
.ad
|
|
.SH smtp_sasl_tls_security_options (default: $smtp_sasl_security_options)
|
|
The SASL authentication security options that the Postfix SMTP
|
|
client uses for TLS encrypted SMTP sessions.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_sasl_tls_verified_security_options (default: $smtp_sasl_tls_security_options)
|
|
The SASL authentication security options that the Postfix SMTP
|
|
client uses for TLS encrypted SMTP sessions with a verified server
|
|
certificate.
|
|
.PP
|
|
When mail is sent to the public MX host for the recipient's
|
|
domain, server certificates are by default optional, and delivery
|
|
proceeds even if certificate verification fails. For delivery via
|
|
a submission service that requires SASL authentication, it may be
|
|
appropriate to send plaintext passwords only when the connection
|
|
to the server is strongly encrypted \fBand\fR the server identity
|
|
is verified.
|
|
.PP
|
|
The smtp_sasl_tls_verified_security_options parameter makes it
|
|
possible to only enable plaintext mechanisms when a secure connection
|
|
to the server is available. Submission servers subject to this
|
|
policy must either have verifiable certificates or offer suitable
|
|
non\-plaintext SASL mechanisms.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH smtp_sasl_type (default: cyrus)
|
|
The SASL plug\-in type that the Postfix SMTP client should use
|
|
for authentication. The available types are listed with the
|
|
"\fBpostconf \-A\fR" command.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_send_dummy_mail_auth (default: no)
|
|
Whether or not to append the "AUTH=<>" option to the MAIL
|
|
FROM command in SASL\-authenticated SMTP sessions. The default is
|
|
not to send this, to avoid problems with broken remote SMTP servers.
|
|
Before Postfix 2.9 the behavior is as if "smtp_send_dummy_mail_auth
|
|
= yes".
|
|
.PP
|
|
This feature is available in Postfix 2.9 and later.
|
|
.SH smtp_send_xforward_command (default: no)
|
|
Send the non\-standard XFORWARD command when the Postfix SMTP server
|
|
EHLO response announces XFORWARD support.
|
|
.PP
|
|
This allows a Postfix SMTP delivery agent, used for injecting mail
|
|
into
|
|
a content filter, to forward the name, address, protocol and HELO
|
|
name of the original client to the content filter and downstream
|
|
queuing SMTP server. This can produce more useful logging than
|
|
localhost[127.0.0.1] etc.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtp_sender_dependent_authentication (default: no)
|
|
Enable sender\-dependent authentication in the Postfix SMTP client; this is
|
|
available only with SASL authentication, and disables SMTP connection
|
|
caching to ensure that mail from different senders will use the
|
|
appropriate credentials.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_skip_4xx_greeting (default: yes)
|
|
Skip SMTP servers that greet with a 4XX status code (go away, try
|
|
again later).
|
|
.PP
|
|
By default, the Postfix SMTP client moves on the next mail exchanger.
|
|
Specify
|
|
"smtp_skip_4xx_greeting = no" if Postfix should defer delivery
|
|
immediately.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and earlier.
|
|
Later Postfix versions always skip remote SMTP servers that greet
|
|
with a
|
|
4XX status code.
|
|
.SH smtp_skip_5xx_greeting (default: yes)
|
|
Skip remote SMTP servers that greet with a 5XX status code.
|
|
.PP
|
|
By default, the Postfix SMTP client moves on the next mail
|
|
exchanger. Specify "smtp_skip_5xx_greeting = no" if Postfix should
|
|
bounce the mail immediately. Caution: the latter behavior appears
|
|
to contradict RFC 2821.
|
|
.SH smtp_skip_quit_response (default: yes)
|
|
Do not wait for the response to the SMTP QUIT command.
|
|
.SH smtp_starttls_timeout (default: 300s)
|
|
Time limit for Postfix SMTP client write and read operations
|
|
during TLS startup and shutdown handshake procedures.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tcp_port (default: smtp)
|
|
The default TCP port that the Postfix SMTP client connects to.
|
|
Specify a symbolic name (see \fBservices\fR(5)) or a numeric port.
|
|
.SH smtp_tls_CAfile (default: empty)
|
|
A file containing CA certificates of root CAs trusted to sign
|
|
either remote SMTP server certificates or intermediate CA certificates.
|
|
These are loaded into memory before the \fBsmtp\fR(8) client enters the
|
|
chroot jail. If the number of trusted roots is large, consider using
|
|
smtp_tls_CApath instead, but note that the latter directory must be
|
|
present in the chroot jail if the \fBsmtp\fR(8) client is chrooted. This
|
|
file may also be used to augment the client certificate trust chain,
|
|
but it is best to include all the required certificates directly in
|
|
$smtp_tls_cert_file (or, Postfix >= 3.4 $smtp_tls_chain_files).
|
|
.PP
|
|
Specify "smtp_tls_CAfile = /path/to/system_CA_file" to use
|
|
ONLY the system\-supplied default Certification Authority certificates.
|
|
.PP
|
|
Specify "tls_append_default_CA = no" to prevent Postfix from
|
|
appending the system\-supplied default CAs and trusting third\-party
|
|
certificates.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_CAfile = /etc/postfix/CAcert.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_CApath (default: empty)
|
|
Directory with PEM format Certification Authority certificates
|
|
that the Postfix SMTP client uses to verify a remote SMTP server
|
|
certificate. Don't forget to create the necessary "hash" links
|
|
with, for example, "$OPENSSL_HOME/bin/c_rehash /etc/postfix/certs".
|
|
.PP
|
|
To use this option in chroot mode, this directory (or a copy)
|
|
must be inside the chroot jail.
|
|
.PP
|
|
Specify "smtp_tls_CApath = /path/to/system_CA_directory" to
|
|
use ONLY the system\-supplied default Certification Authority certificates.
|
|
.PP
|
|
Specify "tls_append_default_CA = no" to prevent Postfix from
|
|
appending the system\-supplied default CAs and trusting third\-party
|
|
certificates.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_CApath = /etc/postfix/certs
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_block_early_mail_reply (default: no)
|
|
Try to detect a mail hijacking attack based on a TLS protocol
|
|
vulnerability (CVE\-2009\-3555), where an attacker prepends malicious
|
|
HELO, MAIL, RCPT, DATA commands to a Postfix SMTP client TLS session.
|
|
The attack would succeed with non\-Postfix SMTP servers that reply
|
|
to the malicious HELO, MAIL, RCPT, DATA commands after negotiating
|
|
the Postfix SMTP client TLS session.
|
|
.PP
|
|
This feature is available in Postfix 2.7.
|
|
.SH smtp_tls_cert_file (default: empty)
|
|
File with the Postfix SMTP client RSA certificate in PEM format.
|
|
This file may also contain the Postfix SMTP client private RSA key, and
|
|
these may be the same as the Postfix SMTP server RSA certificate and key
|
|
file. With Postfix >= 3.4 the preferred way to configure client keys
|
|
and certificates is via the "smtp_tls_chain_files" parameter.
|
|
.PP
|
|
Do not configure client certificates unless you \fBmust\fR present
|
|
client TLS certificates to one or more servers. Client certificates are
|
|
not usually needed, and can cause problems in configurations that work
|
|
well without them. The recommended setting is to let the defaults stand:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtp_tls_cert_file =
|
|
smtp_tls_key_file =
|
|
smtp_tls_eccert_file =
|
|
smtp_tls_eckey_file =
|
|
# Obsolete DSA parameters
|
|
smtp_tls_dcert_file =
|
|
smtp_tls_dkey_file =
|
|
# Postfix >= 3.4 interface
|
|
smtp_tls_chain_files =
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The best way to use the default settings is to comment out the above
|
|
parameters in main.cf if present.
|
|
.PP
|
|
To enable remote SMTP servers to verify the Postfix SMTP client
|
|
certificate, the issuing CA certificates must be made available to the
|
|
server. You should include the required certificates in the client
|
|
certificate file, the client certificate first, then the issuing
|
|
CA(s) (bottom\-up order).
|
|
.PP
|
|
Example: the certificate for "client.example.com" was issued by
|
|
"intermediate CA" which itself has a certificate issued by "root CA".
|
|
As the "root" super\-user create the client.pem file with:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# \fBumask 077\fR
|
|
# \fBcat client_key.pem client_cert.pem intermediate_CA.pem > chain.pem \fR
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
If you also want to verify remote SMTP server certificates issued by
|
|
these CAs, you can add the CA certificates to the smtp_tls_CAfile, in
|
|
which case it is not necessary to have them in the smtp_tls_cert_file,
|
|
smtp_tls_dcert_file (obsolete) or smtp_tls_eccert_file.
|
|
.PP
|
|
A certificate supplied here must be usable as an SSL client certificate
|
|
and hence pass the "openssl verify \-purpose sslclient ..." test.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_cert_file = /etc/postfix/chain.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_chain_files (default: empty)
|
|
List of one or more PEM files, each holding one or more private keys
|
|
directly followed by a corresponding certificate chain. The file names
|
|
are separated by commas and/or whitespace. This parameter obsoletes the
|
|
legacy algorithm\-specific key and certificate file settings. When this
|
|
parameter is non\-empty, the legacy parameters are ignored, and a warning
|
|
is logged if any are also non\-empty.
|
|
.PP
|
|
With the proliferation of multiple private key algorithms-which,
|
|
as of OpenSSL 1.1.1, include DSA (obsolete), RSA, ECDSA, Ed25519
|
|
and Ed448-it is increasingly impractical to use separate
|
|
parameters to configure the key and certificate chain for each
|
|
algorithm. Therefore, Postfix now supports storing multiple keys and
|
|
corresponding certificate chains in a single file or in a set of files.
|
|
.PP
|
|
Each key must appear \fBimmediately before\fR the corresponding
|
|
certificate, optionally followed by additional issuer certificates that
|
|
complete the certificate chain for that key. When multiple files are
|
|
specified, they are equivalent to a single file that is concatenated
|
|
from those files in the given order. Thus, while a key must always
|
|
precede its certificate and issuer chain, it can be in a separate file,
|
|
so long as that file is listed immediately before the file that holds
|
|
the corresponding certificate chain. Once all the files are
|
|
concatenated, the sequence of PEM objects must be: \fIkey1, cert1,
|
|
[chain1], key2, cert2, [chain2], ..., keyN, certN, [chainN].\fR
|
|
.PP
|
|
Storing the private key in the same file as the corresponding
|
|
certificate is more reliable. With the key and certificate in separate
|
|
files, there is a chance that during key rollover a Postfix process
|
|
might load a private key and certificate from separate files that don't
|
|
match. Various operational errors may even result in a persistent
|
|
broken configuration in which the certificate does not match the private
|
|
key.
|
|
.PP
|
|
The file or files must contain at most one key of each type. If,
|
|
for example, two or more RSA keys and corresponding chains are listed,
|
|
depending on the version of OpenSSL either only the last one will be
|
|
used or a configuration error may be detected. Note that while
|
|
"Ed25519" and "Ed448" are considered separate algorithms, the various
|
|
ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
|
|
considered as different parameters of a single "ECDSA" algorithm, so it
|
|
is not presently possible to configure keys for more than one ECDSA
|
|
curve.
|
|
.PP
|
|
Example (separate files for each key and corresponding certificate chain):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_tls_chain_files =
|
|
${config_directory}/ed25519.pem,
|
|
${config_directory}/ed448.pem,
|
|
${config_directory}/rsa.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/ed25519.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG
|
|
...
|
|
nC0egv51YPDWxEHom4QA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/ed448.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe
|
|
LNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG
|
|
...
|
|
pQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/rsa.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL
|
|
...
|
|
ahQkZ3+krcaJvDSMgvu0tDc=
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL
|
|
...
|
|
Rirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Example (all keys and certificates in a single file):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_tls_chain_files = ${config_directory}/chains.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/chains.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG
|
|
...
|
|
nC0egv51YPDWxEHom4QA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe
|
|
LNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG
|
|
...
|
|
pQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL
|
|
...
|
|
ahQkZ3+krcaJvDSMgvu0tDc=
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL
|
|
...
|
|
Rirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH smtp_tls_cipherlist (default: empty)
|
|
Obsolete Postfix < 2.3 control for the Postfix SMTP client TLS
|
|
cipher list. As this feature applies to all TLS security levels, it is easy
|
|
to create interoperability problems by choosing a non\-default cipher
|
|
list. Do not use a non\-default TLS cipher list on hosts that deliver email
|
|
to the public Internet: you will be unable to send email to servers that
|
|
only support the ciphers you exclude. Using a restricted cipher list
|
|
may be more appropriate for an internal MTA, where one can exert some
|
|
control over the TLS software and settings of the peer servers.
|
|
.PP
|
|
\fBNote:\fR do not use "" quotes around the parameter value.
|
|
.PP
|
|
This feature is available in Postfix version 2.2. It is not used with
|
|
Postfix 2.3 and later; use smtp_tls_mandatory_ciphers instead.
|
|
.SH smtp_tls_ciphers (default: medium)
|
|
The minimum TLS cipher grade that the Postfix SMTP client
|
|
will use with opportunistic TLS encryption. Cipher types listed in
|
|
smtp_tls_exclude_ciphers are excluded from the base definition of
|
|
the selected cipher grade. The default value is "medium" for
|
|
Postfix releases after the middle of 2015, "export" for older
|
|
releases.
|
|
.PP
|
|
When TLS is mandatory the cipher grade is chosen via the
|
|
smtp_tls_mandatory_ciphers configuration parameter, see there for syntax
|
|
details. See smtp_tls_policy_maps for information on how to configure
|
|
ciphers on a per\-destination basis.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later. With earlier Postfix
|
|
releases only the smtp_tls_mandatory_ciphers parameter is implemented,
|
|
and opportunistic TLS always uses "export" or better (i.e. all) ciphers.
|
|
.SH smtp_tls_connection_reuse (default: no)
|
|
Try to make multiple deliveries per TLS\-encrypted connection.
|
|
This uses the \fBtlsproxy\fR(8) service to encrypt an SMTP connection,
|
|
uses the \fBscache\fR(8) service to save that connection, and relies on
|
|
hints from the \fBqmgr\fR(8) daemon.
|
|
.PP
|
|
See "Client\-side
|
|
TLS connection reuse" for background details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH smtp_tls_dane_insecure_mx_policy (default: dane)
|
|
The TLS policy for MX hosts with "secure" TLSA records when the
|
|
nexthop destination security level is \fBdane\fR, but the MX
|
|
record was found via an "insecure" MX lookup. The choices are:
|
|
.IP "\fBmay\fR"
|
|
The TLSA records will be ignored and TLS will be optional. If
|
|
the MX host does not appear to support STARTTLS, or the STARTTLS
|
|
handshake fails, mail may be sent in the clear.
|
|
.br
|
|
.IP "\fBencrypt\fR"
|
|
The TLSA records will signal a requirement to use TLS. While
|
|
TLS encryption will be required, authentication will not be performed.
|
|
.br
|
|
.IP "\fBdane\fR"
|
|
The TLSA records will be used just as with "secure" MX records.
|
|
TLS encryption will be required, and, if at least one of the TLSA
|
|
records is "usable", authentication will be required. When
|
|
authentication succeeds, it will be logged only as "Trusted", not
|
|
"Verified", because the MX host name could have been forged.
|
|
.br
|
|
.br
|
|
The default setting is "dane" as of Postfix versions 3.6.17,
|
|
3.7.13, 3.8.8, 3.9.2, and 3.10.0. With earlier versions the default
|
|
was mistakenly dependent on the smtp_tls_security_level setting.
|
|
.PP
|
|
Though with "insecure" MX records an active attacker can
|
|
compromise SMTP transport security by returning forged MX records,
|
|
such attacks are "tamper\-evident" since any forged MX hostnames
|
|
will be recorded in the mail logs. Attackers who place a high value
|
|
on staying hidden may be deterred from forging MX records.
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later. The \fBmay\fR
|
|
policy is backwards\-compatible with earlier Postfix versions.
|
|
.SH smtp_tls_dcert_file (default: empty)
|
|
File with the Postfix SMTP client DSA certificate in PEM format.
|
|
This file may also contain the Postfix SMTP client private DSA key.
|
|
The DSA algorithm is obsolete and should not be used.
|
|
.PP
|
|
See the discussion under smtp_tls_cert_file for more details.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_dcert_file = /etc/postfix/client\-dsa.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_dkey_file (default: $smtp_tls_dcert_file)
|
|
File with the Postfix SMTP client DSA private key in PEM format.
|
|
This file may be combined with the Postfix SMTP client DSA certificate
|
|
file specified with $smtp_tls_dcert_file. The DSA algorithm is obsolete
|
|
and should not be used.
|
|
.PP
|
|
The private key must be accessible without a pass\-phrase, i.e. it
|
|
must not be encrypted. File permissions should grant read\-only
|
|
access to the system superuser account ("root"), and no access
|
|
to anyone else.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_eccert_file (default: empty)
|
|
File with the Postfix SMTP client ECDSA certificate in PEM format.
|
|
This file may also contain the Postfix SMTP client ECDSA private key.
|
|
With Postfix >= 3.4 the preferred way to configure client keys and
|
|
certificates is via the "smtp_tls_chain_files" parameter.
|
|
.PP
|
|
See the discussion under smtp_tls_cert_file for more details.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_eccert_file = /etc/postfix/ecdsa\-ccert.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when Postfix is
|
|
compiled and linked with OpenSSL 1.0.0 or later.
|
|
.SH smtp_tls_eckey_file (default: $smtp_tls_eccert_file)
|
|
File with the Postfix SMTP client ECDSA private key in PEM format.
|
|
This file may be combined with the Postfix SMTP client ECDSA certificate
|
|
file specified with $smtp_tls_eccert_file. With Postfix >= 3.4 the
|
|
preferred way to configure client keys and certificates is via the
|
|
"smtp_tls_chain_files" parameter.
|
|
.PP
|
|
The private key must be accessible without a pass\-phrase, i.e. it
|
|
must not be encrypted. File permissions should grant read\-only
|
|
access to the system superuser account ("root"), and no access
|
|
to anyone else.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when Postfix is
|
|
compiled and linked with OpenSSL 1.0.0 or later.
|
|
.SH smtp_tls_enable_rpk (default: no)
|
|
Request that remote SMTP servers send an RFC7250 raw public key
|
|
instead of an X.509 certificate. This feature and the enable_rpk
|
|
policy attribute are ignored when there is no raw public key support
|
|
in the local TLS implementation.
|
|
.IP \(bu
|
|
At the "may", "encrypt" and "fingerprint" security levels,
|
|
with parameter setting "smtp_tls_enable_rpk = yes" or with "enable_rpk
|
|
= yes" in a policy entry, the Postfix SMTP client will indicate in
|
|
the TLS handshake that it prefers to receive a raw server public
|
|
key, but it will still accept a server public key certificate.
|
|
.IP \(bu
|
|
At the "fingerprint" security level, with parameter setting
|
|
"smtp_tls_enable_rpk = yes" or with "enable_rpk = yes" in a policy
|
|
entry, server authentication based on certificate fingerprints
|
|
becomes more fragile. Even if the server private key and certificate
|
|
remain unchanged, the remote SMTP server will fail fingerprint
|
|
authentication (won't match the configured list of fingerprints)
|
|
when it starts sending a raw public key instead of a certificate,
|
|
after its TLS implementation is updated with raw public key support.
|
|
Therefore, \fBDO NOT\fR enable raw public keys to remote destinations
|
|
authenticated by server \fBcertificate\fR fingerprints. You should
|
|
enable raw public keys only for servers matched via their public
|
|
key fingerprint.
|
|
.IP \(bu
|
|
At the "verify" and "secure" security levels, the Postfix
|
|
SMTP client always ignores the parameter setting smtp_tls_enable_rpk
|
|
or the enable_rpk policy attribute.
|
|
.IP \(bu
|
|
At the opportunistic "dane" security level, the Postfix
|
|
SMTP client ignores the parameter setting smtp_tls_enable_rpk or
|
|
the enable_rpk policy attribute (but it will respect them when it
|
|
falls back to the "may" or "encrypt" level). When all valid TLSA
|
|
records specify only server public keys (no certificates) and the
|
|
local TLS implementation supports raw public keys, the client will
|
|
indicate in the TLS handshake that it prefers to receive a raw
|
|
public key, but it will still accept a public key certificate.
|
|
.IP \(bu
|
|
At the mandatory "dane\-only" security level, the Postfix
|
|
SMTP client always ignores the parameter setting smtp_tls_enable_rpk
|
|
or the enable_rpk policy attribute. When all valid TLSA records
|
|
specify only server public keys (no certificates) and the local TLS
|
|
implementation supports raw public keys, the client will indicate
|
|
in the TLS handshake that it prefers to receive a raw public key,
|
|
but it will still accept a public key certificate.
|
|
.br
|
|
.PP
|
|
The Postfix SMTP client is always willing to send raw public keys
|
|
to servers that solicit them when a client certificate is configured
|
|
and the local TLS implementation supports raw public keys.
|
|
.PP
|
|
Sample commands to compute certificate and public key SHA256 digests:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# SHA256 digest of the first certificate in "cert.pem"
|
|
$ openssl x509 \-in cert.pem \-outform DER | openssl dgst \-sha256 \-c
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# SHA256 digest of the SPKI of the first certificate in "cert.pem"
|
|
$ openssl x509 \-in cert.pem \-pubkey \-noout |
|
|
openssl pkey \-pubin \-outform DER | openssl dgst \-sha256 \-c
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# SHA256 digest of the SPKI of the first private key in "pkey.pem"
|
|
$ openssl pkey \-in pkey.pem \-pubout \-outform DER |
|
|
openssl dgst \-sha256 \-c
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.9 and later.
|
|
.SH smtp_tls_enforce_peername (default: yes)
|
|
With mandatory TLS encryption, require that the remote SMTP
|
|
server hostname matches the information in the remote SMTP server
|
|
certificate. As of RFC 2487 the requirements for hostname checking
|
|
for MTA clients are not specified.
|
|
.PP
|
|
This option can be set to "no" to disable strict peer name
|
|
checking. This setting has no effect on sessions that are controlled
|
|
via the smtp_tls_per_site table.
|
|
.PP
|
|
Disabling the hostname verification can make sense in a closed
|
|
environment where special CAs are created. If not used carefully,
|
|
this option opens the danger of a "man\-in\-the\-middle" attack (the
|
|
CommonName of this attacker will be logged).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later. With
|
|
Postfix 2.3 and later use smtp_tls_security_level instead.
|
|
.SH smtp_tls_exclude_ciphers (default: empty)
|
|
List of ciphers or cipher types to exclude from the Postfix
|
|
SMTP client cipher
|
|
list at all TLS security levels. This is not an OpenSSL cipherlist, it is
|
|
a simple list separated by whitespace and/or commas. The elements are a
|
|
single cipher, or one or more "+" separated cipher properties, in which
|
|
case only ciphers matching \fBall\fR the properties are excluded.
|
|
.PP
|
|
Examples (some of these will cause problems):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtp_tls_exclude_ciphers = aNULL
|
|
smtp_tls_exclude_ciphers = MD5, DES
|
|
smtp_tls_exclude_ciphers = DES+MD5
|
|
smtp_tls_exclude_ciphers = AES256\-SHA, DES\-CBC3\-MD5
|
|
smtp_tls_exclude_ciphers = kEDH+aRSA
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The first setting disables anonymous ciphers. The next setting
|
|
disables ciphers that use the MD5 digest algorithm or the (single) DES
|
|
encryption algorithm. The next setting disables ciphers that use MD5 and
|
|
DES together. The next setting disables the two ciphers "AES256\-SHA"
|
|
and "DES\-CBC3\-MD5". The last setting disables ciphers that use "EDH"
|
|
key exchange with RSA authentication.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_fingerprint_cert_match (default: empty)
|
|
List of acceptable remote SMTP server certificate fingerprints for
|
|
the "fingerprint" TLS security level (\fBsmtp_tls_security_level\fR =
|
|
fingerprint). At this security level, Certification Authorities are not
|
|
used, and certificate expiration times are ignored. Instead, server
|
|
certificates are verified directly via their certificate fingerprint
|
|
or public key fingerprint (Postfix 2.9 and later). The fingerprint
|
|
is a message digest of the server certificate (or public key). The
|
|
digest algorithm is selected via the \fBsmtp_tls_fingerprint_digest\fR
|
|
parameter.
|
|
.PP
|
|
The colons between each pair of nibbles in the fingerprint value
|
|
are optional (Postfix >= 3.6). These were required in earlier
|
|
Postfix releases.
|
|
.PP
|
|
When an \fBsmtp_tls_policy_maps\fR table entry specifies the
|
|
"fingerprint" security level, any "match" attributes in that entry specify
|
|
the list of valid fingerprints for the corresponding destination. Multiple
|
|
fingerprints can be combined with a "|" delimiter in a single match
|
|
attribute, or multiple match attributes can be employed.
|
|
.PP
|
|
Example: Certificate fingerprint verification with internal mailhub.
|
|
Two matching fingerprints are listed. The relayhost may be multiple
|
|
physical hosts behind a load\-balancer, each with its own private/public
|
|
key and self\-signed certificate. Alternatively, a single relayhost may
|
|
be in the process of switching from one set of private/public keys to
|
|
another, and both keys are trusted just prior to the transition.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
relayhost = [mailhub.example.com]
|
|
smtp_tls_security_level = fingerprint
|
|
smtp_tls_fingerprint_digest = sha256
|
|
smtp_tls_fingerprint_cert_match =
|
|
cd:fc:d8:db:f8:c4:82:96:6c:...:28:71:e8:f5:8d:a5:0d:9b:d4:a6
|
|
dd:5c:ef:f5:c3:bc:64:25:36:...:99:36:06:ce:40:ef:de:2e:ad:a4
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Example: Certificate fingerprint verification with selected destinations.
|
|
As in the example above, we show two matching fingerprints:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
|
|
smtp_tls_fingerprint_digest = sha256
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/tls_policy:
|
|
example.com fingerprint
|
|
match=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76
|
|
match=b6:b4:72:34:e2:59:cd:...:c2:ca:63:0d:4d:cc:2c:7d:84:de:e6:2f
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_tls_fingerprint_digest (default: see "postconf \-d" output)
|
|
The message digest algorithm used to construct remote SMTP server
|
|
certificate fingerprints. At the "fingerprint" TLS security level
|
|
(\fBsmtp_tls_security_level\fR = fingerprint), the server certificate is
|
|
verified by directly matching its certificate fingerprint or its public
|
|
key fingerprint (Postfix 2.9 and later). The fingerprint is the
|
|
message digest of the server certificate (or its public key)
|
|
using the selected
|
|
algorithm. With a digest algorithm resistant to "second pre\-image"
|
|
attacks, it is not feasible to create a new public key and a matching
|
|
certificate (or public/private key\-pair) that has the same fingerprint.
|
|
.PP
|
|
The default algorithm is \fBsha256\fR with Postfix >= 3.6
|
|
and the \fBcompatibility_level\fR set to 3.6 or higher. With Postfix
|
|
<= 3.5, the default algorithm is \fBmd5\fR.
|
|
.PP
|
|
The best\-practice algorithm is now \fBsha256\fR. Recent advances in hash
|
|
function cryptanalysis have led to md5 and sha1 being deprecated in favor of
|
|
sha256. However, as long as there are no known "second pre\-image" attacks
|
|
against the older algorithms, their use in this context, though not
|
|
recommended, is still likely safe.
|
|
.PP
|
|
While additional digest algorithms are often available with OpenSSL's
|
|
libcrypto, only those used by libssl in SSL cipher suites are available to
|
|
Postfix. You'll likely find support for md5, sha1, sha256 and sha512.
|
|
.PP
|
|
To find the fingerprint of a specific certificate file, with a
|
|
specific digest algorithm, run:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
$ openssl x509 \-noout \-fingerprint \-\fIdigest\fR \-in \fIcertfile\fR.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The text to the right of the "=" sign is the desired fingerprint.
|
|
For example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
$ openssl x509 \-noout \-fingerprint \-sha256 \-in cert.pem
|
|
SHA256 Fingerprint=D4:6A:AB:19:24:...:BB:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
To extract the public key fingerprint from an X.509 certificate,
|
|
you need to extract the public key from the certificate and compute
|
|
the appropriate digest of its DER (ASN.1) encoding. With OpenSSL
|
|
the "\-pubkey" option of the "x509" command extracts the public
|
|
key always in "PEM" format. We pipe the result to another OpenSSL
|
|
command that converts the key to DER and then to the "dgst" command
|
|
to compute the fingerprint.
|
|
.PP
|
|
The actual command to transform the key to DER format depends on the
|
|
version of OpenSSL used. As of OpenSSL 1.0.0, the "pkey" command supports
|
|
all key types.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# OpenSSL >= 1.0 with SHA\-256 fingerprints.
|
|
$ openssl x509 \-in cert.pem \-noout \-pubkey |
|
|
openssl pkey \-pubin \-outform DER |
|
|
openssl dgst \-sha256 \-c
|
|
(stdin)= 64:3f:1f:f6:e5:1e:d4:2a:56:...:fc:09:1a:61:98:b5:bc:7c:60:58
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The Postfix SMTP server and client log the peer (leaf) certificate
|
|
fingerprint and the public key fingerprint when the TLS loglevel is 2 or
|
|
higher.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtp_tls_force_insecure_host_tlsa_lookup (default: no)
|
|
Lookup the associated DANE TLSA RRset even when a hostname is
|
|
not an alias and its address records lie in an unsigned zone. This
|
|
is unlikely to ever yield DNSSEC validated results, since child
|
|
zones of unsigned zones are also unsigned in the absence of DLV or
|
|
locally configured non\-root trust\-anchors. We anticipate that such
|
|
mechanisms will not be used for just the "_tcp" subdomain of a host.
|
|
Suppressing the TLSA RRset lookup reduces latency and avoids potential
|
|
interoperability problems with nameservers for unsigned zones that
|
|
are not prepared to handle the new TLSA RRset.
|
|
.PP
|
|
This feature is available in Postfix 2.11.
|
|
.SH smtp_tls_key_file (default: $smtp_tls_cert_file)
|
|
File with the Postfix SMTP client RSA private key in PEM format.
|
|
This file may be combined with the Postfix SMTP client RSA certificate
|
|
file specified with $smtp_tls_cert_file. With Postfix >= 3.4 the
|
|
preferred way to configure client keys and certificates is via the
|
|
"smtp_tls_chain_files" parameter.
|
|
.PP
|
|
The private key must be accessible without a pass\-phrase, i.e. it
|
|
must not be encrypted. File permissions should grant read\-only
|
|
access to the system superuser account ("root"), and no access
|
|
to anyone else.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_key_file = $smtp_tls_cert_file
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_loglevel (default: 0)
|
|
Enable additional Postfix SMTP client logging of TLS activity.
|
|
Each logging level also includes the information that is logged at
|
|
a lower logging level.
|
|
.IP ""
|
|
0 Disable logging of TLS activity.
|
|
.br
|
|
.IP ""
|
|
1 Log only a summary message on TLS handshake completion
|
|
- no logging of remote SMTP server certificate trust\-chain
|
|
verification errors if server certificate verification is not required.
|
|
With Postfix 2.8 and earlier, log the summary message and unconditionally
|
|
log trust\-chain verification errors.
|
|
.br
|
|
.IP ""
|
|
2 Also enable verbose logging in the Postfix TLS
|
|
library, log session cache operations, and enable OpenSSL logging
|
|
of the progress of the SSL handshake.
|
|
.br
|
|
.IP ""
|
|
3 Also log the hexadecimal and ASCII dump of the
|
|
TLS negotiation process.
|
|
.br
|
|
.IP ""
|
|
4 Also log the hexadecimal and ASCII dump of complete
|
|
transmission after STARTTLS.
|
|
.br
|
|
.br
|
|
.PP
|
|
Do not use "smtp_tls_loglevel = 2" or higher except in case of
|
|
problems. Use of loglevel 4 is strongly discouraged.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_mandatory_ciphers (default: medium)
|
|
The minimum TLS cipher grade that the Postfix SMTP client will
|
|
use with
|
|
mandatory TLS encryption. The default value "medium" is suitable
|
|
for most destinations with which you may want to enforce TLS, and
|
|
is beyond the reach of today's cryptanalytic methods. See
|
|
smtp_tls_policy_maps for information on how to configure ciphers
|
|
on a per\-destination basis.
|
|
.PP
|
|
The following cipher grades are supported:
|
|
.IP "\fBhigh\fR"
|
|
Enable only "HIGH" grade OpenSSL ciphers. This setting may
|
|
be appropriate when all mandatory TLS destinations (e.g. when all
|
|
mail is routed to a suitably capable relayhost) support at least one
|
|
"HIGH" grade cipher. The underlying cipherlist is specified via the
|
|
tls_high_cipherlist configuration parameter, which you are strongly
|
|
encouraged not to change.
|
|
.br
|
|
.IP "\fBmedium\fR"
|
|
Enable "MEDIUM" grade or better OpenSSL ciphers.
|
|
The underlying cipherlist is specified via the tls_medium_cipherlist
|
|
configuration parameter, which you are strongly encouraged not to change.
|
|
.br
|
|
.IP "\fBnull\fR"
|
|
Enable only the "NULL" OpenSSL ciphers, these provide authentication
|
|
without encryption. This setting is only appropriate in the rare case
|
|
that all servers are prepared to use NULL ciphers (not normally enabled
|
|
in TLS servers). A plausible use\-case is an LMTP server listening on a
|
|
UNIX\-domain socket that is configured to support "NULL" ciphers. The
|
|
underlying cipherlist is specified via the tls_null_cipherlist
|
|
configuration parameter, which you are strongly encouraged not to
|
|
change.
|
|
.br
|
|
.IP "\fBlow\fR"
|
|
Enable "LOW" grade or stronger OpenSSL ciphers. In Postfix
|
|
>= 3.8 this cipher grade is always identical to "medium". Recent
|
|
versions of OpenSSL do not support any "LOW" grade ciphers. In
|
|
earlier Postfix releases the underlying cipherlist was specified
|
|
via the tls_low_cipherlist configuration parameter, which you are
|
|
strongly encouraged not to change. This obsolete cipher grade
|
|
SHOULD NOT be used.
|
|
.br
|
|
.IP "\fBexport\fR"
|
|
Enable "EXPORT" grade or stronger OpenSSL ciphers. In Postfix
|
|
>= 3.8 this cipher grade is always identical to "medium". Recent
|
|
versions of OpenSSL do not support any "EXPORT" grade ciphers. In
|
|
earlier Postfix releases the underlying cipherlist was specified
|
|
via the tls_export_cipherlist configuration parameter, which you are
|
|
strongly encouraged not to change. This obsolete cipher grade
|
|
SHOULD NOT be used.
|
|
.br
|
|
.br
|
|
.PP
|
|
The underlying cipherlists for grades other than "null" include
|
|
anonymous ciphers, but these are automatically filtered out if the
|
|
Postfix SMTP client is configured to verify server certificates.
|
|
You are very unlikely to need to take any steps to exclude anonymous
|
|
ciphers, they are excluded automatically as necessary. If you must
|
|
exclude anonymous ciphers at the "may" or "encrypt" security levels,
|
|
when the Postfix SMTP client does not need or use peer certificates, set
|
|
"smtp_tls_exclude_ciphers = aNULL". To exclude anonymous ciphers only when
|
|
TLS is enforced, set "smtp_tls_mandatory_exclude_ciphers = aNULL".
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_mandatory_exclude_ciphers (default: empty)
|
|
Additional list of ciphers or cipher types to exclude from the
|
|
Postfix SMTP client cipher list at mandatory TLS security levels. This list
|
|
works in addition to the exclusions listed with smtp_tls_exclude_ciphers
|
|
(see there for syntax details).
|
|
.PP
|
|
Starting with Postfix 2.6, the mandatory cipher exclusions can be
|
|
specified on a per\-destination basis via the TLS policy "exclude"
|
|
attribute. See smtp_tls_policy_maps for notes and examples.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_mandatory_protocols (default: see "postconf \-d" output)
|
|
TLS protocols that the Postfix SMTP client will use with mandatory
|
|
TLS encryption. In main.cf the values are separated by whitespace,
|
|
commas or colons. In the policy table "protocols" attribute (see
|
|
smtp_tls_policy_maps) the only valid separator is colon. An empty value
|
|
means allow all protocols.
|
|
.PP
|
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
|
the lowest supported TLS protocol version (see below). Older releases
|
|
use the "!" exclusion syntax, also described below.
|
|
.PP
|
|
As of Postfix 3.6, the preferred way to limit the range of
|
|
acceptable protocols is to set a lowest acceptable TLS protocol version
|
|
and/or a highest acceptable TLS protocol version. To set the lower
|
|
bound include an element of the form: ">=\fIversion\fR" where
|
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
|
or a hexadecimal number corresponding to the desired TLS protocol
|
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
|
the ">=" or "<=" symbols and the protocol name or number.
|
|
.PP
|
|
Hexadecimal protocol numbers make it possible to specify protocol
|
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
|
Leading "0" or "0x" prefixes are supported, but not required.
|
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
|
versions should only be used when Postfix is linked with some future
|
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
|
yet support a symbolic name for that protocol version.
|
|
.PP
|
|
Hexadecimal example (Postfix >= 3.6):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
|
# in some future version of OpenSSL (presently a warning is logged).
|
|
smtp_tls_mandatory_protocols = >=TLSv1.2, <=0305
|
|
# Allow only TLS 1.2 and up:
|
|
smtp_tls_mandatory_protocols = >=0x0303
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
|
version, and the protocol range is configured via protocol exclusions.
|
|
To require at least TLS 1.0, set "smtp_tls_mandatory_protocols = !SSLv2,
|
|
!SSLv3". Listing the protocols to include, rather than the protocols to
|
|
exclude, is supported, but not recommended. The exclusion syntax more
|
|
accurately matches the underlying OpenSSL interface.
|
|
.PP
|
|
When using the exclusion syntax, take care to ensure that the range
|
|
of protocols supported by the Postfix SMTP client is contiguous. When
|
|
a protocol version is enabled, disabling any higher version implicitly
|
|
disables all versions above that higher version. Thus, for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1.1
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
also disables any protocol versions higher than TLSv1.1 leaving
|
|
only "TLSv1" enabled.
|
|
.PP
|
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
|
.PP
|
|
While the vast majority of SMTP servers with DANE TLSA records now
|
|
support at least TLS 1.2, a few still only support TLS 1.0. If you use
|
|
"dane" or "dane\-only" it is best not to disable TLSv1, except perhaps
|
|
via the policy table for destinations which you are sure will support
|
|
"TLSv1.2".
|
|
.PP
|
|
See the documentation of the smtp_tls_policy_maps parameter and
|
|
TLS_README for more information about security levels.
|
|
.PP
|
|
Example:
|
|
.nf
|
|
.na
|
|
# Preferred syntax with Postfix >= 3.6:
|
|
smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3
|
|
# Legacy syntax:
|
|
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_note_starttls_offer (default: no)
|
|
Log the hostname of a remote SMTP server that offers STARTTLS,
|
|
when TLS is not already enabled for that server.
|
|
.PP
|
|
The logfile record looks like:
|
|
.PP
|
|
.nf
|
|
.na
|
|
postfix/smtp[pid]: Host offered STARTTLS: [name.of.host]
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_per_site (default: empty)
|
|
Optional lookup tables with the Postfix SMTP client TLS usage
|
|
policy by next\-hop destination and by remote SMTP server hostname.
|
|
When both lookups succeed, the more specific per\-site policy (NONE,
|
|
MUST, etc.) overrides the less specific one (MAY), and the more secure
|
|
per\-site policy (MUST, etc.) overrides the less secure one (NONE).
|
|
With Postfix 2.3 and later smtp_tls_per_site is strongly discouraged:
|
|
use smtp_tls_policy_maps instead.
|
|
.PP
|
|
Use of the bare hostname as the per\-site table lookup key is
|
|
discouraged. Always use the full destination nexthop (enclosed in
|
|
[] with a possible ":port" suffix). A recipient domain or MX\-enabled
|
|
transport next\-hop with no port suffix may look like a bare hostname,
|
|
but is still a suitable \fIdestination\fR.
|
|
.PP
|
|
Specify a next\-hop destination or server hostname on the left\-hand
|
|
side; no wildcards are allowed. The next\-hop destination is either
|
|
the recipient domain, or the destination specified with a \fBtransport\fR(5)
|
|
table, the relayhost parameter, or the relay_transport parameter.
|
|
On the right hand side specify one of the following keywords:
|
|
.IP "NONE"
|
|
Don't use TLS at all. This overrides a less
|
|
specific \fBMAY\fR lookup result from the alternate host or next\-hop
|
|
lookup key, and overrides the global smtp_use_tls, smtp_enforce_tls,
|
|
and smtp_tls_enforce_peername settings.
|
|
.br
|
|
.IP "MAY"
|
|
Try to use TLS if the server announces support,
|
|
otherwise use an unencrypted connection; after a failed TLS handshake
|
|
or TLS session, fall back to plaintext if the message has spent
|
|
minimal_backoff_time in the mail queue. This level has less precedence
|
|
than a more specific result (including \fBNONE\fR) from the alternate
|
|
host or next\-hop lookup key, and has less precedence than the more
|
|
specific global "smtp_enforce_tls = yes" or "smtp_tls_enforce_peername
|
|
= yes".
|
|
.br
|
|
.IP "MUST_NOPEERMATCH"
|
|
Require TLS encryption, but do not
|
|
require that the remote SMTP server hostname matches the information
|
|
in the remote SMTP server certificate, or that the server certificate
|
|
was issued by a trusted CA. This overrides a less secure \fBNONE\fR
|
|
or a less specific \fBMAY\fR lookup result from the alternate host
|
|
or next\-hop lookup key, and overrides the global smtp_use_tls,
|
|
smtp_enforce_tls and smtp_tls_enforce_peername settings.
|
|
.br
|
|
.IP "MUST"
|
|
Require TLS encryption, require that the remote
|
|
SMTP server hostname matches the information in the remote SMTP
|
|
server certificate, and require that the remote SMTP server certificate
|
|
was issued by a trusted CA. This overrides a less secure \fBNONE\fR
|
|
or \fBMUST_NOPEERMATCH\fR or a less specific \fBMAY\fR lookup
|
|
result from the alternate host or next\-hop lookup key, and overrides
|
|
the global smtp_use_tls, smtp_enforce_tls and smtp_tls_enforce_peername
|
|
settings.
|
|
.br
|
|
.br
|
|
.PP
|
|
The above keywords correspond to the "none", "may", "encrypt" and
|
|
"verify" security levels for the new smtp_tls_security_level parameter
|
|
introduced in Postfix 2.3. Starting with Postfix 2.3, and independently
|
|
of how the policy is specified, the smtp_tls_mandatory_ciphers and
|
|
smtp_tls_mandatory_protocols parameters apply when TLS encryption
|
|
is mandatory. Connections for which encryption is optional typically
|
|
enable all "export" grade and better ciphers (see smtp_tls_ciphers
|
|
and smtp_tls_protocols).
|
|
.PP
|
|
As long as no secure DNS lookup mechanism is available, false
|
|
hostnames in MX or CNAME responses can change the server hostname
|
|
that Postfix uses for TLS policy lookup and server certificate
|
|
verification. Even with a perfect match between the server hostname and
|
|
the server certificate, there is no guarantee that Postfix is connected
|
|
to the right server. See TLS_README (Closing a DNS loophole with obsolete
|
|
per\-site TLS policies) for a possible work\-around.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later. With
|
|
Postfix 2.3 and later use smtp_tls_policy_maps instead.
|
|
.SH smtp_tls_policy_maps (default: empty)
|
|
Optional lookup tables with the Postfix SMTP client TLS security
|
|
policy by next\-hop destination; when a non\-empty value is specified,
|
|
this overrides the obsolete smtp_tls_per_site parameter. See
|
|
TLS_README for a more detailed discussion of TLS security levels,
|
|
and see TLSRPT_README for additional configuration that may be
|
|
needed for MTA\-STS plugins.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
The TLS policy table is indexed by the full next\-hop destination,
|
|
which is either the recipient domain, or the verbatim next\-hop
|
|
specified in the transport table, $local_transport, $virtual_transport,
|
|
$relay_transport or $default_transport. This includes any enclosing
|
|
square brackets and any non\-default destination server port suffix. The
|
|
LMTP socket type prefix (inet: or unix:) is not included in the lookup
|
|
key.
|
|
.PP
|
|
Only the next\-hop domain, or $myhostname with LMTP over UNIX\-domain
|
|
sockets, is used as the nexthop name for certificate verification. The
|
|
port and any enclosing square brackets are used in the table lookup key,
|
|
but are not used for server name verification.
|
|
.PP
|
|
When the lookup key is a domain name without enclosing square brackets
|
|
or any \fI:port\fR suffix (typically the recipient domain), and the full
|
|
domain is not found in the table, just as with the \fBtransport\fR(5) table,
|
|
the parent domain starting with a leading "." is matched recursively. This
|
|
allows one to specify a security policy for a recipient domain and all
|
|
its sub\-domains.
|
|
.PP
|
|
The lookup result is a security level, followed by an optional list
|
|
of whitespace and/or comma separated name=value attributes that override
|
|
related main.cf settings. The TLS security levels in order of increasing
|
|
security are:
|
|
.IP "\fBnone\fR"
|
|
No TLS. No additional attributes are supported at this level.
|
|
.br
|
|
.IP "\fBmay\fR"
|
|
Opportunistic TLS. Since sending in the clear is acceptable,
|
|
demanding stronger than default TLS security merely reduces
|
|
interoperability. The optional "ciphers", "exclude", and "protocols"
|
|
attributes (available for opportunistic TLS with Postfix >= 2.6) and
|
|
"connection_reuse" attribute (Postfix >= 3.4) override the
|
|
"smtp_tls_ciphers", "smtp_tls_exclude_ciphers", "smtp_tls_protocols",
|
|
and "smtp_tls_connection_reuse" configuration parameters. In the policy
|
|
table, multiple ciphers, protocols or excluded ciphers must be separated
|
|
by colons, as attribute values may not contain whitespace or commas. At
|
|
this level and higher, the optional "servername" attribute (available
|
|
with Postfix >= 3.4) overrides the global "smtp_tls_servername"
|
|
parameter, enabling per\-destination configuration of the SNI extension
|
|
sent to the remote SMTP server. The optional "enable_rpk" attribute
|
|
(Postfix >= 3.9) overrides the main.cf smtp_tls_enable_rpk parameter.
|
|
When opportunistic TLS handshakes fail, Postfix retries the connection
|
|
with TLS disabled. This allows mail delivery to sites with
|
|
non\-interoperable TLS implementations.
|
|
.br
|
|
.IP "\fBencrypt\fR"
|
|
Mandatory TLS encryption. Mail is delivered only if the remote SMTP
|
|
server offers STARTTLS and the TLS handshake succeeds. At this level and
|
|
higher, the optional "protocols" attribute overrides the main.cf
|
|
smtp_tls_mandatory_protocols parameter, the optional "ciphers" attribute
|
|
overrides the main.cf smtp_tls_mandatory_ciphers parameter, the optional
|
|
"exclude" attribute (Postfix >= 2.6) overrides the main.cf
|
|
smtp_tls_mandatory_exclude_ciphers parameter, and the optional
|
|
"connection_reuse" attribute (Postfix >= 3.4) overrides the main.cf
|
|
smtp_tls_connection_reuse parameter. In the policy table, multiple
|
|
ciphers, protocols or excluded ciphers must be separated by colons, as
|
|
attribute values may not contain whitespace or commas. The optional
|
|
"enable_rpk" attribute (Postfix >= 3.9) overrides the main.cf
|
|
smtp_tls_enable_rpk parameter.
|
|
.br
|
|
.IP "\fBdane\fR"
|
|
Opportunistic DANE TLS. The TLS policy for the destination is
|
|
obtained via TLSA records in DNSSEC. If no TLSA records are found,
|
|
the effective security level used is may. If TLSA records are
|
|
found, but none are usable, the effective security level is encrypt. When usable
|
|
TLSA records are obtained for the remote SMTP server, the
|
|
server certificate must match the TLSA records. RFC 7672 (DANE)
|
|
TLS authentication and DNSSEC support is available with Postfix
|
|
2.11 and later. The optional "connection_reuse" attribute (Postfix
|
|
>= 3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
|
|
When the effective security level used is may, the optional "ciphers",
|
|
"exclude", and "protocols" attributes (Postfix >= 2.6) override the
|
|
"smtp_tls_ciphers", "smtp_tls_exclude_ciphers", and "smtp_tls_protocols"
|
|
configuration parameters.
|
|
When the effective security level used is encrypt, the optional "ciphers",
|
|
"exclude", and "protocols" attributes (Postfix >= 2.6) override the
|
|
"smtp_tls_mandatory_ciphers", "smtp_tls_mandatory_exclude_ciphers", and
|
|
"smtp_tls_mandatory_protocols" configuration parameters.
|
|
.br
|
|
.IP "\fBdane\-only\fR"
|
|
Mandatory DANE TLS. The TLS policy for the destination is
|
|
obtained via TLSA records in DNSSEC. If no TLSA records are found,
|
|
or none are usable, no connection is made to the server. When
|
|
usable TLSA records are obtained for the remote SMTP server, the
|
|
server certificate must match the TLSA records. RFC 7672 (DANE) TLS
|
|
authentication and DNSSEC support is available with Postfix 2.11
|
|
and later. The optional "ciphers", "exclude", and "protocols" attributes
|
|
(Postfix >= 2.6) override the "smtp_tls_mandatory_ciphers",
|
|
"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
|
|
configuration parameters. The optional "connection_reuse" attribute
|
|
(Postfix >= 3.4) overrides the main.cf smtp_tls_connection_reuse parameter.
|
|
.br
|
|
.IP "\fBfingerprint\fR"
|
|
Certificate fingerprint
|
|
verification. Available with Postfix 2.5 and later. At this security
|
|
level, there are no trusted Certification Authorities. The certificate
|
|
trust chain, expiration date, ... are not checked. Instead,
|
|
the optional policy table "match" attribute, or else the main.cf
|
|
\fBsmtp_tls_fingerprint_cert_match\fR parameter, lists the certificate
|
|
fingerprints or the public key fingerprints (Postfix 2.9 and later)
|
|
of acceptable server certificates. The digest
|
|
algorithm used to calculate the fingerprint is selected by the
|
|
\fBsmtp_tls_fingerprint_digest\fR parameter. Multiple fingerprints can
|
|
be combined with a "|" delimiter in a single match attribute, or multiple
|
|
match attributes can be employed. The ":" character is not used as a
|
|
delimiter as it occurs between each pair of fingerprint (hexadecimal)
|
|
digits. The optional "ciphers", "exclude", and "protocols" attributes
|
|
(Postfix >= 2.6) override the "smtp_tls_mandatory_ciphers",
|
|
"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
|
|
configuration parameters. The optional "connection_reuse" attribute
|
|
(Postfix >= 3.4) overrides the main.cf smtp_tls_connection_reuse
|
|
parameter. The optional "enable_rpk" attribute (Postfix >= 3.9)
|
|
overrides the main.cf smtp_tls_enable_rpk parameter.
|
|
.br
|
|
.IP "\fBverify\fR"
|
|
Mandatory TLS verification. Mail is delivered only if the TLS
|
|
handshake succeeds, the remote SMTP server certificate chain can be
|
|
validated, and a DNS name in the certificate matches the specified match
|
|
criteria. At this security level, DNS MX lookups are presumed to be
|
|
secure enough, and the name verified in the server certificate is
|
|
potentially obtained via unauthenticated DNS MX lookups. The optional
|
|
"match" attribute overrides the main.cf smtp_tls_verify_cert_match
|
|
parameter. In the policy table, multiple match patterns and strategies
|
|
must be separated by colons. In practice explicit control over matching
|
|
is more common with the "secure" policy, described below. The optional
|
|
"ciphers", "exclude", and "protocols" attributes (Postfix >= 2.6)
|
|
override the "smtp_tls_mandatory_ciphers",
|
|
"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
|
|
configuration parameters. With Postfix >= 2.11 the optional "tafile"
|
|
policy table attribute modifies trust chain verification in the same
|
|
manner as the "smtp_tls_trust_anchor_file" parameter. The "tafile"
|
|
attribute may be specified multiple times to load multiple trust\-anchor
|
|
files. The optional "connection_reuse" attribute (Postfix >= 3.4)
|
|
overrides the main.cf smtp_tls_connection_reuse parameter.
|
|
.br
|
|
.IP "\fBsecure\fR"
|
|
Secure certificate verification. Mail is delivered only if the TLS
|
|
handshake succeeds, the remote SMTP server certificate chain can be
|
|
validated, and a DNS name in the certificate matches the specified match
|
|
criteria. At this security level, DNS MX lookups, though potentially
|
|
used to determine the candidate next\-hop gateway IP addresses, are
|
|
\fBnot\fR presumed to be secure enough for TLS peername verification.
|
|
Instead, the default name verified in the server certificate is obtained
|
|
directly from the next\-hop, or is explicitly specified via the optional
|
|
"match" attribute which overrides the main.cf smtp_tls_secure_cert_match
|
|
parameter. In the policy table, multiple match patterns and strategies
|
|
must be separated by colons. The match attribute is most useful when
|
|
multiple domains are supported by a common server: the policy entries
|
|
for additional domains specify matching rules for the primary domain
|
|
certificate. While transport table overrides that route the secondary
|
|
domains to the primary nexthop also allow secure verification, they risk
|
|
delivery to the wrong destination when domains change hands or are
|
|
re\-assigned to new gateways. With the "match" attribute approach,
|
|
routing is not perturbed, and mail is deferred if verification of a new
|
|
MX host fails. The optional "ciphers", "exclude", and "protocols"
|
|
attributes (Postfix >= 2.6) override the "smtp_tls_mandatory_ciphers",
|
|
"smtp_tls_mandatory_exclude_ciphers", and "smtp_tls_mandatory_protocols"
|
|
configuration parameters. With Postfix >= 2.11 the "tafile" attribute
|
|
optionally modifies trust chain verification in the same manner as the
|
|
"smtp_tls_trust_anchor_file" parameter. The "tafile" attribute may be
|
|
specified multiple times to load multiple trust\-anchor files. The
|
|
optional "connection_reuse" attribute (Postfix >= 3.4) overrides the
|
|
main.cf smtp_tls_connection_reuse parameter.
|
|
.br
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
|
|
# Postfix 2.5 and later.
|
|
#
|
|
# The default digest is sha256 with Postfix >= 3.6 and
|
|
# compatibility level >= 3.
|
|
#
|
|
smtp_tls_fingerprint_digest = sha256
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/tls_policy:
|
|
example.edu none
|
|
example.mil may
|
|
example.gov encrypt protocols=TLSv1
|
|
example.com verify ciphers=high
|
|
example.net secure
|
|
.example.net secure match=.example.net:example.net
|
|
[mail.example.org]:587 secure match=nexthop
|
|
# Postfix 2.5 and later
|
|
[thumb.example.org] fingerprint
|
|
match=b6:b4:72:34:e2:59:cd:...:c2:ca:63:0d:4d:cc:2c:7d:84:de:e6:2f
|
|
match=51:e9:af:2e:1e:40:1f:...:64:0a:30:35:2d:09:16:31:5a:eb:82:76
|
|
.fi
|
|
.ad
|
|
.PP
|
|
\fBNote:\fR The "hostname" strategy if listed in a non\-default
|
|
setting of smtp_tls_secure_cert_match or in the "match" attribute
|
|
in the policy table can render the "secure" level vulnerable to
|
|
DNS forgery. Do not use the "hostname" strategy for secure\-channel
|
|
configurations in environments where DNS security is not assured.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_protocols (default: see 'postconf \-d' output)
|
|
TLS protocols that the Postfix SMTP client will use with
|
|
opportunistic TLS encryption. In main.cf the values are separated by
|
|
whitespace, commas or colons. In the policy table "protocols" attribute
|
|
(see smtp_tls_policy_maps) the only valid separator is colon. An empty
|
|
value means allow all protocols.
|
|
.PP
|
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
|
the lowest supported TLS protocol version (see below). Older releases
|
|
use the "!" exclusion syntax, also described below.
|
|
.PP
|
|
As of Postfix 3.6, the preferred way to limit the range of
|
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
|
version and/or the highest acceptable TLS protocol version. To set the
|
|
lower bound include an element of the form: ">=\fIversion\fR" where
|
|
\fIversion\fR is either one of the TLS protocol names listed above,
|
|
or a hexadecimal number corresponding to the desired TLS protocol
|
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
|
the ">=" or "<=" symbols and the protocol name or number.
|
|
.PP
|
|
Hexadecimal protocol numbers make it possible to specify protocol
|
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
|
Leading "0" or "0x" prefixes are supported, but not required.
|
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
|
versions should only be used when Postfix is linked with some future
|
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
|
yet support a symbolic name for that protocol version.
|
|
.PP
|
|
Hexadecimal example (Postfix >= 3.6):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
|
# in some future version of OpenSSL (presently a warning is logged).
|
|
smtp_tls_protocols = >=TLSv1, <=0305
|
|
# Allow only TLS 1.0 and up:
|
|
smtp_tls_protocols = >=0x0301
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
|
version, and the protocol range is configured via protocol exclusions.
|
|
To require at least TLS 1.0, set "smtp_tls_protocols = !SSLv2, !SSLv3".
|
|
Listing the protocols to include, rather than protocols to exclude, is
|
|
supported, but not recommended. The exclusion form more accurately
|
|
matches the underlying OpenSSL interface.
|
|
.PP
|
|
When using the exclusion syntax, take care to ensure that the range of
|
|
protocols advertised by an SSL/TLS client is contiguous. When a protocol
|
|
version is enabled, disabling any higher version implicitly disables all
|
|
versions above that higher version. Thus, for example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1.1
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
also disables any protocols version higher than TLSv1.1 leaving
|
|
only "TLSv1" enabled.
|
|
.PP
|
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
|
.PP
|
|
Example:
|
|
.nf
|
|
.na
|
|
# Preferred syntax with Postfix >= 3.6:
|
|
smtp_tls_protocols = >=TLSv1, <=TLSv1.3
|
|
# Legacy syntax:
|
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH smtp_tls_scert_verifydepth (default: 9)
|
|
The verification depth for remote SMTP server certificates. A depth
|
|
of 1 is sufficient if the issuing CA is listed in a local CA file.
|
|
.PP
|
|
The default verification depth is 9 (the OpenSSL default) for
|
|
compatibility with earlier Postfix behavior. Prior to Postfix 2.5,
|
|
the default value was 5, but the limit was not actually enforced. If
|
|
you have set this to a lower non\-default value, certificates with longer
|
|
trust chains may now fail to verify. Certificate chains with 1 or 2
|
|
CAs are common, deeper chains are more rare and any number between 5
|
|
and 9 should suffice in practice. You can choose a lower number if,
|
|
for example, you trust certificates directly signed by an issuing CA
|
|
but not any CAs it delegates to.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_secure_cert_match (default: nexthop, dot\-nexthop)
|
|
How the Postfix SMTP client verifies the server certificate
|
|
peername for the "secure" TLS security level. In a "secure" TLS policy table
|
|
($smtp_tls_policy_maps) entry the optional "match" attribute
|
|
overrides this main.cf setting.
|
|
.PP
|
|
This parameter specifies one or more patterns or strategies separated
|
|
by commas, whitespace or colons. In the policy table the only valid
|
|
separator is the colon character.
|
|
.PP
|
|
For a description of the pattern and strategy syntax see the
|
|
smtp_tls_verify_cert_match parameter. The "hostname" strategy should
|
|
be avoided in this context, as in the absence of a secure global DNS, using
|
|
the results of MX lookups in certificate verification is not immune to active
|
|
(man\-in\-the\-middle) attacks on DNS.
|
|
.PP
|
|
Sample main.cf setting:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtp_tls_secure_cert_match = nexthop
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Sample policy table override:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
example.net secure match=example.com:.example.com
|
|
\&.example.net secure match=example.com:.example.com
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_security_level (default: empty)
|
|
The default SMTP TLS security level for the Postfix SMTP client.
|
|
When a non\-empty value is specified, this overrides the obsolete
|
|
parameters smtp_use_tls, smtp_enforce_tls, and smtp_tls_enforce_peername;
|
|
when no value is specified for smtp_tls_enforce_peername or the obsolete
|
|
parameters, the default SMTP TLS security level is
|
|
none.
|
|
.PP
|
|
Specify one of the following security levels:
|
|
.IP "\fBnone\fR"
|
|
No TLS. TLS will not be used unless enabled for specific
|
|
destinations via smtp_tls_policy_maps.
|
|
.br
|
|
.IP "\fBmay\fR"
|
|
Opportunistic TLS. Use TLS if this is supported by the remote
|
|
SMTP server, otherwise use plaintext; after a failed TLS handshake
|
|
or TLS session, fall back to plaintext if the message has spent
|
|
minimal_backoff_time in the mail queue. Since
|
|
sending in the clear is acceptable, demanding stronger than default TLS
|
|
security merely reduces interoperability.
|
|
The "smtp_tls_ciphers" and "smtp_tls_protocols" (Postfix >= 2.6)
|
|
configuration parameters provide control over the protocols and
|
|
cipher grade used with opportunistic TLS. With earlier releases the
|
|
opportunistic TLS cipher grade is always "export" and no protocols
|
|
are disabled.
|
|
When TLS handshakes fail, the connection is retried with TLS disabled.
|
|
This allows mail delivery to sites with non\-interoperable TLS
|
|
implementations.
|
|
.br
|
|
.IP "\fBencrypt\fR"
|
|
Mandatory TLS encryption. Since a minimum
|
|
level of security is intended, it is reasonable to be specific about
|
|
sufficiently secure protocol versions and ciphers. At this security level
|
|
and higher, the main.cf parameters smtp_tls_mandatory_protocols and
|
|
smtp_tls_mandatory_ciphers specify the TLS protocols and minimum
|
|
cipher grade which the administrator considers secure enough for
|
|
mandatory encrypted sessions. This security level is not an appropriate
|
|
default for systems delivering mail to the Internet.
|
|
.br
|
|
.IP "\fBdane\fR"
|
|
Opportunistic DANE TLS. At this security level, the TLS policy
|
|
for the destination is obtained via DNSSEC. For TLSA policy to be
|
|
in effect, the destination domain's containing DNS zone must be
|
|
signed and the Postfix SMTP client's operating system must be
|
|
configured to send its DNS queries to a recursive DNS nameserver
|
|
that is able to validate the signed records. Each MX host's DNS
|
|
zone should also be signed, and should publish DANE TLSA (RFC 7672)
|
|
records that specify how that MX host's TLS certificate is to be
|
|
verified. TLSA records do not preempt the normal SMTP MX host
|
|
selection algorithm, if some MX hosts support TLSA and others do
|
|
not, TLS security will vary from delivery to delivery. It is up
|
|
to the domain owner to configure their MX hosts and their DNS
|
|
sensibly. To configure the Postfix SMTP client for DNSSEC lookups
|
|
see the documentation for the smtp_dns_support_level main.cf
|
|
parameter. When DNSSEC\-validated TLSA records are not found the
|
|
effective tls security level is "may". When TLSA records are found,
|
|
but are all unusable the effective security level is "encrypt". For
|
|
purposes of protocol and cipher selection, the "dane" security level
|
|
is treated like a "mandatory" TLS security level, and weak ciphers
|
|
and protocols are disabled. Since DANE authenticates server
|
|
certificates the "aNULL" cipher\-suites are transparently excluded
|
|
at this level, no need to configure this manually. RFC 7672 (DANE)
|
|
TLS authentication is available with Postfix 2.11 and later.
|
|
.br
|
|
.IP "\fBdane\-only\fR"
|
|
Mandatory DANE TLS. This is just like "dane" above, but DANE
|
|
TLSA authentication is required. There is no fallback to "may" or
|
|
"encrypt" when TLSA records are missing or unusable. RFC 7672
|
|
(DANE) TLS authentication is available with Postfix 2.11 and later.
|
|
.br
|
|
.IP "\fBfingerprint\fR"
|
|
Certificate fingerprint verification.
|
|
At this security level, there are no trusted Certification Authorities.
|
|
The certificate trust chain, expiration date, etc., are
|
|
not checked. Instead, the \fBsmtp_tls_fingerprint_cert_match\fR
|
|
parameter lists the certificate fingerprint or public key fingerprint
|
|
(Postfix 2.9 and later) of the valid server certificate. The digest
|
|
algorithm used to calculate the fingerprint is selected by the
|
|
\fBsmtp_tls_fingerprint_digest\fR parameter. Available with Postfix
|
|
2.5 and later.
|
|
.br
|
|
.IP "\fBverify\fR"
|
|
Mandatory TLS verification. At this security
|
|
level, DNS MX lookups are trusted to be secure enough, and the name
|
|
verified in the server certificate is usually obtained indirectly
|
|
via unauthenticated DNS MX lookups. The smtp_tls_verify_cert_match
|
|
parameter controls how the server name is verified. In practice explicit
|
|
control over matching is more common at the "secure" level, described
|
|
below. This security level is not an appropriate default for systems
|
|
delivering mail to the Internet.
|
|
.br
|
|
.IP "\fBsecure\fR"
|
|
Secure\-channel TLS. At this security level,
|
|
DNS MX lookups, though potentially used to determine the candidate
|
|
next\-hop gateway IP addresses, are \fBnot\fR trusted to be secure enough
|
|
for TLS peername verification. Instead, the default name verified in
|
|
the server certificate is obtained from the next\-hop domain as specified
|
|
in the smtp_tls_secure_cert_match configuration parameter. The default
|
|
matching rule is that a server certificate matches when its name is equal
|
|
to or is a sub\-domain of the nexthop domain. This security level is not
|
|
an appropriate default for systems delivering mail to the Internet.
|
|
.br
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# No TLS. Formerly: smtp_use_tls=no and smtp_enforce_tls=no.
|
|
smtp_tls_security_level = none
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Opportunistic TLS.
|
|
smtp_tls_security_level = may
|
|
# Do not tweak opportunistic ciphers or protocols unless it is essential
|
|
# to do so (if a security vulnerability is found in the SSL library that
|
|
# can be mitigated by disabling a particular protocol or raising the
|
|
# cipher grade).
|
|
smtp_tls_ciphers = medium
|
|
smtp_tls_protocols = >=TLSv1
|
|
# Legacy (Postfix < 3.6) syntax:
|
|
smtp_tls_protocols = !SSLv2, !SSLv3
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Mandatory (high\-grade) TLS encryption.
|
|
smtp_tls_security_level = encrypt
|
|
smtp_tls_mandatory_ciphers = high
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Authenticated TLS 1.2 or better matching the nexthop domain or a
|
|
# subdomain.
|
|
smtp_tls_security_level = secure
|
|
smtp_tls_mandatory_ciphers = high
|
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
|
smtp_tls_secure_cert_match = nexthop, dot\-nexthop
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Certificate fingerprint verification (Postfix >= 2.5).
|
|
# The CA\-less "fingerprint" security level only scales to a limited
|
|
# number of destinations. As a global default rather than a per\-site
|
|
# setting, this is practical only when mail for all recipients is sent
|
|
# to a central mail hub.
|
|
relayhost = [mailhub.example.com]
|
|
smtp_tls_security_level = fingerprint
|
|
smtp_tls_mandatory_protocols = >=TLSv1.2
|
|
smtp_tls_mandatory_ciphers = high
|
|
smtp_tls_fingerprint_cert_match =
|
|
3D:95:34:51:...:40:99:C0:C1
|
|
EC:3B:2D:B0:...:A3:9D:72:F6
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_servername (default: empty)
|
|
Optional name to send to the remote SMTP server in the TLS Server
|
|
Name Indication (SNI) extension. The SNI extension is always on when
|
|
DANE is used to authenticate the server, and in that case the SNI name
|
|
sent is the one required by RFC7672 and this parameter is ignored.
|
|
.PP
|
|
Some SMTP servers use the received SNI name to select an appropriate
|
|
certificate chain to present to the client. While this may improve
|
|
interoperability with such servers, it may reduce interoperability with
|
|
other servers that choose to abort the connection when they don't have a
|
|
certificate chain configured for the requested name. Such servers
|
|
should select a default certificate chain and continue the handshake,
|
|
but some may not. Therefore, absent DANE, no SNI name is sent by
|
|
default.
|
|
.PP
|
|
The SNI name must be either a valid DNS hostname, or else one of the
|
|
special values \fBhostname\fR or \fBnexthop\fR, which select either the
|
|
remote hostname or the nexthop domain respectively. DNS names for SNI must be
|
|
in A\-label (punycode) form. Invalid DNS names log a configuration error
|
|
warning and mail delivery is deferred.
|
|
.PP
|
|
Except when using a relayhost to forward all email, the only
|
|
sensible non\-empty main.cf setting for this parameter is
|
|
\fBhostname\fR. Other non\-empty values are only practical on a
|
|
per\-destination basis via the \fBservername\fR attribute of the Postfix
|
|
TLS policy table. When
|
|
in doubt, leave this parameter empty, and configure per\-destination SNI
|
|
as needed.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH smtp_tls_session_cache_database (default: empty)
|
|
Name of the file containing the optional Postfix SMTP client
|
|
TLS session cache. Specify a database type that supports enumeration,
|
|
such as \fBbtree\fR or \fBsdbm\fR; there is no need to support
|
|
concurrent access. The file is created if it does not exist. The \fBsmtp\fR(8)
|
|
daemon does not use this parameter directly, rather the cache is
|
|
implemented indirectly in the \fBtlsmgr\fR(8) daemon. This means that
|
|
per\-smtp\-instance master.cf overrides of this parameter are not effective.
|
|
Note that each of the cache databases supported by \fBtlsmgr\fR(8) daemon:
|
|
$smtpd_tls_session_cache_database, $smtp_tls_session_cache_database
|
|
(and with Postfix 2.3 and later $lmtp_tls_session_cache_database), needs to
|
|
be stored separately. It is not at this time possible to store multiple
|
|
caches in a single database.
|
|
.PP
|
|
Note: \fBdbm\fR databases are not suitable. TLS
|
|
session objects are too large.
|
|
.PP
|
|
As of version 2.5, Postfix no longer uses root privileges when
|
|
opening this file. The file should now be stored under the Postfix\-owned
|
|
data_directory. As a migration aid, an attempt to open the file
|
|
under a non\-Postfix directory is redirected to the Postfix\-owned
|
|
data_directory, and a warning is logged.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_session_cache_timeout (default: 3600s)
|
|
The expiration time of Postfix SMTP client TLS session cache
|
|
information. A cache cleanup is performed periodically
|
|
every $smtp_tls_session_cache_timeout seconds. As with
|
|
$smtp_tls_session_cache_database, this parameter is implemented in the
|
|
\fBtlsmgr\fR(8) daemon and therefore per\-smtp\-instance master.cf overrides
|
|
are not possible.
|
|
.PP
|
|
As of Postfix 2.11 this setting cannot exceed 100 days. If set
|
|
<= 0, session caching is disabled. If set to a positive value
|
|
less than 2 minutes, the minimum value of 2 minutes is used instead.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtp_tls_trust_anchor_file (default: empty)
|
|
Zero or more PEM\-format files with trust\-anchor certificates
|
|
and/or public keys. If the parameter is not empty the root CAs in
|
|
CAfile and CApath are no longer trusted. Rather, the Postfix SMTP
|
|
client will only trust certificate\-chains signed by one of the
|
|
trust\-anchors contained in the chosen files. The specified
|
|
trust\-anchor certificates and public keys are not subject to
|
|
expiration, and need not be (self\-signed) root CAs. They may, if
|
|
desired, be intermediate certificates. Therefore, these certificates
|
|
also may be found "in the middle" of the trust chain presented by
|
|
the remote SMTP server, and any untrusted issuing parent certificates
|
|
will be ignored. Specify a list of pathnames separated by comma
|
|
or whitespace.
|
|
.PP
|
|
Whether specified in main.cf, or on a per\-destination basis,
|
|
the trust\-anchor PEM file must be accessible to the Postfix SMTP
|
|
client in the chroot jail if applicable. The trust\-anchor file
|
|
should contain only certificates and public keys, no private key
|
|
material, and must be readable by the non\-privileged $mail_owner
|
|
user. This allows destinations to be bound to a set of specific
|
|
CAs or public keys without trusting the same CAs for all destinations.
|
|
.PP
|
|
The main.cf parameter supports single\-purpose Postfix installations
|
|
that send mail to a fixed set of SMTP peers. At most sites, if
|
|
trust\-anchor files are used at all, they will be specified on a
|
|
per\-destination basis via the "tafile" attribute of the "verify"
|
|
and "secure" levels in smtp_tls_policy_maps.
|
|
.PP
|
|
The underlying mechanism is in support of RFC 7672 (DANE TLSA),
|
|
which defines mechanisms for an SMTP client MTA to securely determine
|
|
server TLS certificates via DNS.
|
|
.PP
|
|
If you want your trust anchors to be public keys, with OpenSSL
|
|
you can extract a single PEM public key from a PEM X.509 file
|
|
containing a single certificate, as follows:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
$ openssl x509 \-in cert.pem \-out ta\-key.pem \-noout \-pubkey
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH smtp_tls_verify_cert_match (default: hostname)
|
|
How the Postfix SMTP client verifies the server certificate
|
|
peername for the
|
|
"verify" TLS security level. In a "verify" TLS policy table
|
|
($smtp_tls_policy_maps) entry the optional "match" attribute
|
|
overrides this main.cf setting.
|
|
.PP
|
|
This parameter specifies one or more patterns or strategies separated
|
|
by commas, whitespace or colons. In the policy table the only valid
|
|
separator is the colon character.
|
|
.PP
|
|
Patterns specify domain names, or domain name suffixes:
|
|
.IP "\fIexample.com\fR"
|
|
Match the \fIexample.com\fR domain,
|
|
i.e. one of the names in the server certificate must be \fIexample.com\fR.
|
|
Upper and lower case distinctions are ignored.
|
|
.br
|
|
.IP "\fI.example.com\fR"
|
|
Match subdomains of the \fIexample.com\fR domain, i.e. match
|
|
a name in the server certificate that consists of a non\-zero number of
|
|
labels followed by a \fI.example.com\fR suffix. Case distinctions are
|
|
ignored.
|
|
.br
|
|
.br
|
|
.PP
|
|
Strategies specify a transformation from the next\-hop domain
|
|
to the expected name in the server certificate:
|
|
.IP "nexthop"
|
|
Match against the next\-hop domain, which is either the recipient
|
|
domain, or the transport next\-hop configured for the domain stripped of
|
|
any optional socket type prefix, enclosing square brackets and trailing
|
|
port. When MX lookups are not suppressed, this is the original nexthop
|
|
domain prior to the MX lookup, not the result of the MX lookup. For
|
|
LMTP delivery via UNIX\-domain sockets, the verified next\-hop name is
|
|
$myhostname. This strategy is suitable for use with the "secure"
|
|
policy. Case is ignored.
|
|
.br
|
|
.IP "dot\-nexthop"
|
|
As above, but match server certificate names that are subdomains
|
|
of the next\-hop domain. Case is ignored.
|
|
.br
|
|
.IP "hostname"
|
|
Match against the hostname of the server, often
|
|
obtained via an unauthenticated DNS MX lookup. For LMTP delivery via
|
|
UNIX\-domain sockets, the verified name is $myhostname. This matches
|
|
the verification strategy of the "MUST" keyword in the obsolete
|
|
smtp_tls_per_site table, and is suitable for use with the "verify"
|
|
security level. When the next\-hop name is enclosed in square brackets
|
|
to suppress MX lookups, the "hostname" strategy is the same as the
|
|
"nexthop" strategy. Case is ignored.
|
|
.br
|
|
.br
|
|
.PP
|
|
Sample main.cf setting:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtp_tls_verify_cert_match = hostname, nexthop, dot\-nexthop
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Sample policy table override:
|
|
.PP
|
|
.nf
|
|
.na
|
|
example.com verify match=hostname:nexthop
|
|
\&.example.com verify match=example.com:.example.com:hostname
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtp_tls_wrappermode (default: no)
|
|
Request that the Postfix SMTP client connects using the
|
|
SUBMISSIONS (formerly called SMTPS) protocol instead of using the
|
|
STARTTLS command.
|
|
.PP
|
|
This mode requires "smtp_tls_security_level = encrypt" or
|
|
stronger.
|
|
.PP
|
|
Example: deliver all remote mail via a provider's submissions
|
|
service at "mail.example.com".
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
# Client\-side SUBMISSIONS requires "encrypt" or stronger.
|
|
smtp_tls_security_level = encrypt
|
|
smtp_tls_wrappermode = yes
|
|
# The [] suppress MX lookups.
|
|
relayhost = [mail.example.com]:submissions
|
|
.fi
|
|
.ad
|
|
.PP
|
|
More examples are in TLS_README, including examples for older
|
|
Postfix versions.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtp_tlsrpt_enable (default: no)
|
|
Enable support for RFC 8460 TLSRPT notifications. A mail receiving
|
|
domain can publish a TLSRPT policy in DNS, to request periodic
|
|
summaries of successful and failed SMTP over TLS connections to
|
|
their MX servers. This feature requires that Postfix is built
|
|
with a TLSRPT supporting library.
|
|
.PP
|
|
See TLSRPT_README for configuration examples and additional
|
|
requirements for MTA\-STS smtp_tls_policy_maps plugins.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH smtp_tlsrpt_skip_reused_handshakes (default: yes)
|
|
Do not report the TLSRPT status for TLS protocol handshakes
|
|
that reuse a previously\-negotiated TLS session (there is no new
|
|
information to report). Report the TLSRPT status only for "new" TLS
|
|
sessions. Set this to "no" to log the TLSRPT status of all TLS
|
|
handshakes, for example to troubleshoot Postfix TLSRPT support.
|
|
.PP
|
|
Note: if an SMTP over TLS connection is reused, there is no
|
|
second etc. TLS handshake to report.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH smtp_tlsrpt_socket_name (default: empty)
|
|
The pathname of a UNIX\-domain datagram socket that is managed
|
|
by a local TLSRPT reporting service. This parameter must specify a
|
|
pathname (absolute, or relative to $queue_directory) when
|
|
"smtp_tlsrpt_enable = yes".
|
|
.PP
|
|
See TLSRPT_README for configuration examples and additional
|
|
requirements for MTA\-STS smtp_tls_policy_maps plugins.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH smtp_use_tls (default: no)
|
|
Opportunistic mode: use TLS when a remote SMTP server announces
|
|
STARTTLS support, otherwise send the mail in the clear. Beware:
|
|
some SMTP servers offer STARTTLS even if it is not configured. With
|
|
Postfix < 2.3, if the TLS handshake fails, and no other server is
|
|
available, delivery is deferred and mail stays in the queue. If this
|
|
is a concern for you, use the smtp_tls_per_site feature instead.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later. With
|
|
Postfix 2.3 and later use smtp_tls_security_level instead.
|
|
.SH smtp_xforward_timeout (default: 300s)
|
|
The Postfix SMTP client time limit for sending the XFORWARD command,
|
|
and for receiving the remote SMTP server response.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_authorized_verp_clients (default: $authorized_verp_clients)
|
|
What remote SMTP clients are allowed to specify the XVERP command.
|
|
This command requests that mail be delivered one recipient at a
|
|
time with a per recipient return address.
|
|
.PP
|
|
By default, no clients are allowed to specify XVERP.
|
|
.PP
|
|
This parameter was renamed with Postfix version 2.1. The default value
|
|
is backwards compatible with Postfix version 2.0.
|
|
.PP
|
|
Specify a list of network/netmask patterns, separated by commas
|
|
and/or whitespace. The mask specifies the number of bits in the
|
|
network part of a host address. You can also specify hostnames or
|
|
\&.domain names (the initial dot causes the domain to match any name
|
|
below it), "/file/name" or "type:table" patterns. A "/file/name"
|
|
pattern is replaced by its contents; a "type:table" lookup table
|
|
is matched when a table entry matches a lookup string (the lookup
|
|
result is ignored). Continue long lines by starting the next line
|
|
with whitespace. Specify "!pattern" to exclude an address or network
|
|
block from the list. The form "!/file/name" is supported only in
|
|
Postfix version 2.4 and later.
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the smtpd_authorized_verp_clients value, and in
|
|
files specified with "/file/name". IP version 6 addresses contain
|
|
the ":" character, and would otherwise be confused with a "type:table"
|
|
pattern.
|
|
.SH smtpd_authorized_xclient_hosts (default: empty)
|
|
What remote SMTP clients are allowed to use the XCLIENT feature. This
|
|
command overrides remote SMTP client information that is used for access
|
|
control. Typical use is for SMTP\-based content filters, fetchmail\-like
|
|
programs, or SMTP server access rule testing. See the XCLIENT_README
|
|
document for details.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.PP
|
|
By default, no clients are allowed to specify XCLIENT.
|
|
.PP
|
|
Specify a list of network/netmask patterns, separated by commas
|
|
and/or whitespace. The mask specifies the number of bits in the
|
|
network part of a host address. You can also specify hostnames or
|
|
\&.domain names (the initial dot causes the domain to match any name
|
|
below it), "/file/name" or "type:table" patterns. A "/file/name"
|
|
pattern is replaced by its contents; a "type:table" lookup table
|
|
is matched when a table entry matches a lookup string (the lookup
|
|
result is ignored). Continue long lines by starting the next line
|
|
with whitespace. Specify "!pattern" to exclude an address or network
|
|
block from the list. The form "!/file/name" is supported only in
|
|
Postfix version 2.4 and later.
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the smtpd_authorized_xclient_hosts value, and in
|
|
files specified with "/file/name". IP version 6 addresses contain
|
|
the ":" character, and would otherwise be confused with a "type:table"
|
|
pattern.
|
|
.SH smtpd_authorized_xforward_hosts (default: empty)
|
|
What remote SMTP clients are allowed to use the XFORWARD feature. This
|
|
command forwards information that is used to improve logging after
|
|
SMTP\-based content filters. See the XFORWARD_README document for
|
|
details.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.PP
|
|
By default, no clients are allowed to specify XFORWARD.
|
|
.PP
|
|
Specify a list of network/netmask patterns, separated by commas
|
|
and/or whitespace. The mask specifies the number of bits in the
|
|
network part of a host address. You can also specify hostnames or
|
|
\&.domain names (the initial dot causes the domain to match any name
|
|
below it), "/file/name" or "type:table" patterns. A "/file/name"
|
|
pattern is replaced by its contents; a "type:table" lookup table
|
|
is matched when a table entry matches a lookup string (the lookup
|
|
result is ignored). Continue long lines by starting the next line
|
|
with whitespace. Specify "!pattern" to exclude an address or network
|
|
block from the list. The form "!/file/name" is supported only in
|
|
Postfix version 2.4 and later.
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the smtpd_authorized_xforward_hosts value, and in
|
|
files specified with "/file/name". IP version 6 addresses contain
|
|
the ":" character, and would otherwise be confused with a "type:table"
|
|
pattern.
|
|
.SH smtpd_banner (default: $myhostname ESMTP $mail_name)
|
|
The text that follows the 220 status code in the SMTP greeting
|
|
banner. Some people like to see the mail version advertised. By
|
|
default, Postfix shows no version.
|
|
.PP
|
|
You MUST specify $myhostname at the start of the text. This is
|
|
required by the SMTP protocol.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
|
|
.fi
|
|
.ad
|
|
.SH smtpd_client_auth_rate_limit (default: 0)
|
|
The maximal number of AUTH commands that any client is allowed to
|
|
send to this service per time unit, regardless of whether or not
|
|
Postfix actually accepts those commands. The time unit is specified
|
|
with the anvil_rate_time_unit configuration parameter.
|
|
.PP
|
|
By default, there is no limit on the number of AUTH commands that a
|
|
client may send.
|
|
.PP
|
|
To disable this feature, specify a limit of 0.
|
|
.PP
|
|
WARNING: The purpose of this feature is to limit abuse. It must
|
|
not be used to regulate legitimate mail traffic.
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH smtpd_client_connection_count_limit (default: 50)
|
|
How many simultaneous connections any client is allowed to
|
|
make to this service. By default, the limit is set to half
|
|
the default process limit value.
|
|
.PP
|
|
To disable this feature, specify a limit of 0.
|
|
.PP
|
|
WARNING: The purpose of this feature is to limit abuse. It must
|
|
not be used to regulate legitimate mail traffic.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_client_connection_rate_limit (default: 0)
|
|
The maximal number of connection attempts any client is allowed to
|
|
make to this service per time unit. The time unit is specified
|
|
with the anvil_rate_time_unit configuration parameter.
|
|
.PP
|
|
By default, a client can make as many connections per time unit as
|
|
Postfix can accept.
|
|
.PP
|
|
To disable this feature, specify a limit of 0.
|
|
.PP
|
|
WARNING: The purpose of this feature is to limit abuse. It must
|
|
not be used to regulate legitimate mail traffic.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_client_connection_rate_limit = 1000
|
|
.fi
|
|
.ad
|
|
.SH smtpd_client_event_limit_exceptions (default: $mynetworks)
|
|
Clients that are excluded from smtpd_client_*_count/rate_limit
|
|
restrictions. See the mynetworks parameter
|
|
description for the parameter value syntax.
|
|
.PP
|
|
By default, clients in trusted networks are excluded. Specify a
|
|
list of network blocks, hostnames or .domain names (the initial
|
|
dot causes the domain to match any name below it).
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the smtpd_client_event_limit_exceptions value, and
|
|
in files specified with "/file/name". IP version 6 addresses
|
|
contain the ":" character, and would otherwise be confused with a
|
|
"type:table" pattern.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "smtpd_client_event_limit_exceptions" in the
|
|
parent_domain_matches_subdomains parameter value (Postfix 3.0 and
|
|
later).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_client_ipv4_prefix_length (default: 32)
|
|
Aggregate smtpd_client_*_count and smtpd_client_*_rate statistics
|
|
by IPv4 network blocks with the specified network prefix. Aggregation
|
|
uses fewer \fBanvil\fR(8) resources to maintain counters. By default,
|
|
aggregation is disabled for IPv4.
|
|
.PP
|
|
This feature is available in Postfix 3.8 and later.
|
|
.SH smtpd_client_ipv6_prefix_length (default: 84)
|
|
Aggregate smtpd_client_*_count and smtpd_client_*_rate statistics
|
|
by IPv6 network blocks with the specified network prefix. Aggregation
|
|
uses fewer the \fBanvil\fR(8) resources to maintain counters. By default,
|
|
aggregation is enabled for IPv6.
|
|
.PP
|
|
This feature is available in Postfix 3.8 and later.
|
|
.SH smtpd_client_message_rate_limit (default: 0)
|
|
The maximal number of message delivery requests that any client is
|
|
allowed to make to this service per time unit, regardless of whether
|
|
or not Postfix actually accepts those messages. The time unit is
|
|
specified with the anvil_rate_time_unit configuration parameter.
|
|
.PP
|
|
By default, a client can send as many message delivery requests
|
|
per time unit as Postfix can accept.
|
|
.PP
|
|
To disable this feature, specify a limit of 0.
|
|
.PP
|
|
WARNING: The purpose of this feature is to limit abuse. It must
|
|
not be used to regulate legitimate mail traffic.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_client_message_rate_limit = 1000
|
|
.fi
|
|
.ad
|
|
.SH smtpd_client_new_tls_session_rate_limit (default: 0)
|
|
The maximal number of new (i.e., uncached) TLS sessions that a
|
|
remote SMTP client is allowed to negotiate with this service per
|
|
time unit. The time unit is specified with the anvil_rate_time_unit
|
|
configuration parameter.
|
|
.PP
|
|
By default, a remote SMTP client can negotiate as many new TLS
|
|
sessions per time unit as Postfix can accept.
|
|
.PP
|
|
To disable this feature, specify a limit of 0. Otherwise, specify
|
|
a limit that is at least the per\-client concurrent session limit,
|
|
or else legitimate client sessions may be rejected.
|
|
.PP
|
|
WARNING: The purpose of this feature is to limit abuse. It must
|
|
not be used to regulate legitimate mail traffic.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_client_new_tls_session_rate_limit = 100
|
|
.fi
|
|
.ad
|
|
.SH smtpd_client_port_logging (default: no)
|
|
Enable logging of the remote SMTP client port in addition to
|
|
the hostname and IP address. The logging format is "host[address]:port".
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtpd_client_recipient_rate_limit (default: 0)
|
|
The maximal number of recipient addresses that any client is allowed
|
|
to send to this service per time unit, regardless of whether or not
|
|
Postfix actually accepts those recipients. The time unit is specified
|
|
with the anvil_rate_time_unit configuration parameter.
|
|
.PP
|
|
By default, a client can send as many recipient addresses per time
|
|
unit as Postfix can accept.
|
|
.PP
|
|
To disable this feature, specify a limit of 0.
|
|
.PP
|
|
WARNING: The purpose of this feature is to limit abuse. It must
|
|
not be used to regulate legitimate mail traffic.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_client_recipient_rate_limit = 1000
|
|
.fi
|
|
.ad
|
|
.SH smtpd_client_restrictions (default: empty)
|
|
Optional restrictions that the Postfix SMTP server applies in the
|
|
context of a client connection request.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
The default is to allow all connection requests.
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
Restrictions are applied in the order as specified; the first
|
|
restriction that matches wins.
|
|
.PP
|
|
The following restrictions are specific to client hostname or
|
|
client network address information.
|
|
.IP "\fBcheck_ccert_access \fItype:table\fR\fR"
|
|
By default use the remote SMTP client certificate fingerprint
|
|
or the public key
|
|
fingerprint (Postfix 2.9 and later) as the lookup key for the specified
|
|
\fBaccess\fR(5) database; with Postfix version 2.2, also require that the
|
|
remote SMTP client certificate is verified successfully.
|
|
The fingerprint digest algorithm is configurable via the
|
|
smtpd_tls_fingerprint_digest parameter (hard\-coded as md5 prior to
|
|
Postfix version 2.5). This feature requires "smtpd_tls_ask_ccert
|
|
= yes" and is available with Postfix version
|
|
2.2 and later.
|
|
.br
|
|
The default algorithm is \fBsha256\fR with Postfix >= 3.6
|
|
and the \fBcompatibility_level\fR set to 3.6 or higher. With Postfix
|
|
<= 3.5, the default algorithm is \fBmd5\fR. The best\-practice
|
|
algorithm is now \fBsha256\fR. Recent advances in hash function
|
|
cryptanalysis have led to md5 and sha1 being deprecated in favor of
|
|
sha256. However, as long as there are no known "second pre\-image"
|
|
attacks against the older algorithms, their use in this context, though
|
|
not recommended, is still likely safe.
|
|
.br
|
|
Alternatively, check_ccert_access accepts an explicit search
|
|
order (Postfix 3.5 and later). The default search order as described
|
|
above corresponds with:
|
|
.br
|
|
check_ccert_access { type:table, { search_order = cert_fingerprint,
|
|
pubkey_fingerprint } }
|
|
.br
|
|
The commas are optional.
|
|
.br
|
|
.IP "\fBcheck_client_access \fItype:table\fR\fR"
|
|
Search the specified access database for the client hostname
|
|
or IP address. See the \fBaccess\fR(5) manual page for details.
|
|
.br
|
|
.IP "\fBcheck_client_a_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the IP addresses for the
|
|
client hostname, and execute the corresponding action. Note: a result
|
|
of "OK" is not allowed for safety reasons. Instead, use DUNNO in order
|
|
to exclude specific hosts from denylists. This feature is available
|
|
in Postfix 3.0 and later.
|
|
.br
|
|
.IP "\fBcheck_client_mx_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the MX hosts for the
|
|
client hostname, and execute the corresponding action. If no MX
|
|
record is found, look up A or AAAA records, just like the Postfix
|
|
SMTP client would. Note: a result
|
|
of "OK" is not allowed for safety reasons. Instead, use DUNNO in order
|
|
to exclude specific hosts from denylists. This feature is available
|
|
in Postfix 2.7 and later.
|
|
.br
|
|
.IP "\fBcheck_client_ns_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the DNS servers for
|
|
the client hostname, and execute the corresponding action. Note: a
|
|
result of "OK" is not allowed for safety reasons. Instead, use DUNNO
|
|
in order to exclude specific hosts from denylists. This feature is
|
|
available in Postfix 2.7 and later.
|
|
.br
|
|
.IP "\fBcheck_reverse_client_hostname_access \fItype:table\fR\fR"
|
|
Search the specified access database for the unverified reverse
|
|
client hostname or IP address. See the \fBaccess\fR(5)
|
|
manual page for details. Note: a result of "OK" is not allowed for
|
|
safety reasons. Instead, use DUNNO in order to exclude specific
|
|
hosts from denylists. This feature is available in Postfix 2.6
|
|
and later.
|
|
.br
|
|
.IP "\fBcheck_reverse_client_hostname_a_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the IP addresses for the
|
|
unverified reverse client hostname, and execute the corresponding
|
|
action. Note: a result of "OK" is not allowed for safety reasons.
|
|
Instead, use DUNNO in order to exclude specific hosts from denylists.
|
|
This feature is available in Postfix 3.0 and later.
|
|
.br
|
|
.IP "\fBcheck_reverse_client_hostname_mx_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the MX hosts for the
|
|
unverified reverse client hostname, and execute the corresponding
|
|
action. If no MX record is found, look up A or AAAA records, just
|
|
like the Postfix SMTP client would.
|
|
Note: a result of "OK" is not allowed for safety reasons.
|
|
Instead, use DUNNO in order to exclude specific hosts from denylists.
|
|
This feature is available in Postfix 2.7 and later.
|
|
.br
|
|
.IP "\fBcheck_reverse_client_hostname_ns_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the DNS servers for
|
|
the unverified reverse client hostname, and execute the corresponding
|
|
action. Note: a result of "OK" is not allowed for safety reasons.
|
|
Instead, use DUNNO in order to exclude specific hosts from denylists.
|
|
This feature is available in Postfix 2.7 and later.
|
|
.br
|
|
.IP "\fBcheck_sasl_access \fItype:table\fR\fR"
|
|
Use the remote SMTP client SASL user name as the lookup key for
|
|
the specified \fBaccess\fR(5) database. The lookup key has the form
|
|
"username@domainname" when the smtpd_sasl_local_domain parameter
|
|
value is non\-empty. Unlike the check_client_access feature,
|
|
check_sasl_access does not perform matches of parent domains or IP
|
|
subnet ranges. This feature is available with Postfix version 2.11
|
|
and later.
|
|
.br
|
|
.IP "\fBpermit_inet_interfaces\fR"
|
|
Permit the request when the client IP address matches
|
|
$inet_interfaces.
|
|
.br
|
|
.IP "\fBpermit_mynetworks\fR"
|
|
Permit the request when the client IP address matches any
|
|
network or network address listed in $mynetworks.
|
|
.br
|
|
.IP "\fBpermit_sasl_authenticated\fR"
|
|
Permit the request when the client is successfully
|
|
authenticated via the RFC 4954 (AUTH) protocol.
|
|
.br
|
|
.IP "\fBpermit_tls_all_clientcerts\fR"
|
|
Permit the request when the remote SMTP client certificate is
|
|
verified successfully. This option must be used only if a special
|
|
CA issues the certificates and only this CA is listed as a trusted
|
|
CA. Otherwise, clients with a third\-party certificate would also
|
|
be allowed to relay. Specify "tls_append_default_CA = no" when the
|
|
trusted CA is specified with smtpd_tls_CAfile or smtpd_tls_CApath,
|
|
to prevent Postfix from appending the system\-supplied default CAs.
|
|
This feature requires "smtpd_tls_ask_ccert = yes" and is available
|
|
with Postfix version 2.2 and later.
|
|
.br
|
|
.IP "\fBpermit_tls_clientcerts\fR"
|
|
Permit the request when the remote SMTP client certificate
|
|
fingerprint or public key fingerprint (Postfix 2.9 and later) is
|
|
listed in $relay_clientcerts.
|
|
The fingerprint digest algorithm is configurable via the
|
|
smtpd_tls_fingerprint_digest parameter (hard\-coded as md5 prior to
|
|
Postfix version 2.5). This feature requires "smtpd_tls_ask_ccert
|
|
= yes" and is available with Postfix version 2.2 and later.
|
|
.br
|
|
The default algorithm is \fBsha256\fR with Postfix >= 3.6
|
|
and the \fBcompatibility_level\fR set to 3.6 or higher. With Postfix
|
|
<= 3.5, the default algorithm is \fBmd5\fR. The best\-practice
|
|
algorithm is now \fBsha256\fR. Recent advances in hash function
|
|
cryptanalysis have led to md5 and sha1 being deprecated in favor of
|
|
sha256. However, as long as there are no known "second pre\-image"
|
|
attacks against the older algorithms, their use in this context, though
|
|
not recommended, is still likely safe.
|
|
.br
|
|
.IP "\fBreject_rbl_client \fIrbl_domain=d.d.d.d\fR\fR"
|
|
Reject the request when the reversed client network address is
|
|
listed with the A record "\fId.d.d.d\fR" under \fIrbl_domain\fR
|
|
(Postfix version 2.1 and later only). Each "\fId\fR" is a number,
|
|
or a pattern inside "[]" that contains one or more ";"\-separated
|
|
numbers or number..number ranges (Postfix version 2.8 and later).
|
|
If no "\fI=d.d.d.d\fR" is specified, reject the request when the
|
|
reversed client network address is listed with any A record under
|
|
\fIrbl_domain\fR.
|
|
.br
|
|
The maps_rbl_reject_code parameter specifies the response code for
|
|
rejected requests (default: 554), the default_rbl_reply parameter
|
|
specifies the default server reply, and the rbl_reply_maps parameter
|
|
specifies tables with server replies indexed by \fIrbl_domain\fR.
|
|
This feature is available in Postfix 2.0 and later.
|
|
.br
|
|
.IP "\fBpermit_dnswl_client \fIdnswl_domain=d.d.d.d\fR\fR"
|
|
Accept the request when the reversed client network address is
|
|
listed with the A record "\fId.d.d.d\fR" under \fIdnswl_domain\fR.
|
|
Each "\fId\fR" is a number, or a pattern inside "[]" that contains
|
|
one or more ";"\-separated numbers or number..number ranges.
|
|
If no "\fI=d.d.d.d\fR" is specified, accept the request when the
|
|
reversed client network address is listed with any A record under
|
|
\fIdnswl_domain\fR.
|
|
.br
|
|
For safety, permit_dnswl_client is silently
|
|
ignored when it would override reject_unauth_destination. The
|
|
result is DEFER_IF_REJECT when allowlist lookup fails. This feature
|
|
is available in Postfix 2.8 and later.
|
|
.br
|
|
.IP "\fBreject_rhsbl_client \fIrbl_domain=d.d.d.d\fR\fR"
|
|
Reject the request when the client hostname is listed with the
|
|
A record "\fId.d.d.d\fR" under \fIrbl_domain\fR (Postfix version
|
|
2.1 and later only). Each "\fId\fR" is a number, or a pattern
|
|
inside "[]" that contains one or more ";"\-separated numbers or
|
|
number..number ranges (Postfix version 2.8 and later). If no
|
|
"\fI=d.d.d.d\fR" is specified, reject the request when the client
|
|
hostname is listed with
|
|
any A record under \fIrbl_domain\fR. See the reject_rbl_client
|
|
description above for additional RBL related configuration parameters.
|
|
This feature is available in Postfix 2.0 and later; with Postfix
|
|
version 2.8 and later, reject_rhsbl_reverse_client will usually
|
|
produce better results.
|
|
.br
|
|
.IP "\fBpermit_rhswl_client \fIrhswl_domain=d.d.d.d\fR\fR"
|
|
Accept the request when the client hostname is listed with the
|
|
A record "\fId.d.d.d\fR" under \fIrhswl_domain\fR. Each "\fId\fR"
|
|
is a number, or a pattern inside "[]" that contains one or more
|
|
";"\-separated numbers or number..number ranges. If no
|
|
"\fI=d.d.d.d\fR" is specified, accept the request when the client
|
|
hostname is listed with any A record under \fIrhswl_domain\fR.
|
|
.br
|
|
Caution: client name allowlisting is fragile, since the client
|
|
name lookup can fail due to temporary outages. Client name
|
|
allowlisting should be used only to reduce false positives in e.g.
|
|
DNS\-based blocklists, and not for making access rule exceptions.
|
|
.br
|
|
For safety, permit_rhswl_client is silently ignored when it
|
|
would override reject_unauth_destination. The result is DEFER_IF_REJECT
|
|
when allowlist lookup fails. This feature is available in Postfix
|
|
2.8 and later.
|
|
.br
|
|
.IP "\fBreject_rhsbl_reverse_client \fIrbl_domain=d.d.d.d\fR\fR"
|
|
Reject the request when the unverified reverse client hostname
|
|
is listed with the A record "\fId.d.d.d\fR" under \fIrbl_domain\fR.
|
|
Each "\fId\fR" is a number, or a pattern inside "[]" that contains
|
|
one or more ";"\-separated numbers or number..number ranges.
|
|
If no "\fI=d.d.d.d\fR" is specified, reject the request when the
|
|
unverified reverse client hostname is listed with any A record under
|
|
\fIrbl_domain\fR. See the reject_rbl_client description above for
|
|
additional RBL related configuration parameters. This feature is
|
|
available in Postfix 2.8 and later.
|
|
.br
|
|
.IP "\fBreject_unknown_client_hostname\fR (with Postfix < 2.3: reject_unknown_client)"
|
|
Reject the request when 1) the client IP address\->name mapping
|
|
fails, or 2) the name\->address mapping fails, or 3) the name\->address
|
|
mapping does not match the client IP address.
|
|
.br
|
|
This is a
|
|
stronger restriction than the reject_unknown_reverse_client_hostname
|
|
feature, which triggers only under condition 1) above.
|
|
.br
|
|
The
|
|
unknown_client_reject_code parameter specifies the response code
|
|
for rejected requests (default: 450). The reply is always 450 in
|
|
case the address\->name or name\->address lookup failed due to
|
|
a temporary problem.
|
|
.br
|
|
.IP "\fBreject_unknown_reverse_client_hostname\fR"
|
|
Reject the request when the client IP address has no address\->name
|
|
mapping.
|
|
.br
|
|
This is a weaker restriction than the
|
|
reject_unknown_client_hostname feature, which requires not only
|
|
that the address\->name and name\->address mappings exist, but
|
|
also that the two mappings reproduce the client IP address.
|
|
.br
|
|
The unknown_client_reject_code parameter specifies the response
|
|
code for rejected requests (default: 450). The reply is always 450
|
|
in case the address\->name lookup failed due to a temporary
|
|
problem.
|
|
.br
|
|
This feature is available in Postfix 2.3 and
|
|
later.
|
|
.br
|
|
.br
|
|
.PP
|
|
In addition, you can use any of the following
|
|
generic restrictions. These restrictions are applicable in
|
|
any SMTP command context.
|
|
.IP "\fBcheck_policy_service \fIservername\fR\fR"
|
|
Query the specified policy server. See the SMTPD_POLICY_README
|
|
document for details. This feature is available in Postfix 2.1
|
|
and later.
|
|
.br
|
|
.IP "\fBdefer\fR"
|
|
Defer the request. The client is told to try again later. This
|
|
restriction is useful at the end of a restriction list, to make
|
|
the default policy explicit.
|
|
.br
|
|
The defer_code parameter specifies
|
|
the SMTP server reply code (default: 450).
|
|
.br
|
|
.IP "\fBdefer_if_permit\fR"
|
|
Defer the request if some later restriction would result in an
|
|
explicit or implicit PERMIT action. This is useful when a denylisting
|
|
feature fails due to a temporary problem. This feature is available
|
|
in Postfix version 2.1 and later.
|
|
.br
|
|
.IP "\fBdefer_if_reject\fR"
|
|
Defer the request if some later restriction would result in a
|
|
REJECT action. This is useful when an allowlisting feature fails
|
|
due to a temporary problem. This feature is available in Postfix
|
|
version 2.1 and later.
|
|
.br
|
|
.IP "\fBpermit\fR"
|
|
Permit the request. This restriction is useful at the end of
|
|
a restriction list, to make the default policy explicit.
|
|
.br
|
|
.IP "\fBreject_multi_recipient_bounce\fR"
|
|
Reject the request when the envelope sender is the null address,
|
|
and the message has multiple envelope recipients. This usage has
|
|
rare but legitimate applications: under certain conditions,
|
|
multi\-recipient mail that was posted with the DSN option NOTIFY=NEVER
|
|
may be forwarded with the null sender address.
|
|
.br
|
|
Note: this restriction can only work reliably
|
|
when used in smtpd_data_restrictions or
|
|
smtpd_end_of_data_restrictions, because the total number of
|
|
recipients is not known at an earlier stage of the SMTP conversation.
|
|
Use at the RCPT stage will only reject the second etc. recipient.
|
|
.br
|
|
The multi_recipient_bounce_reject_code parameter specifies the
|
|
response code for rejected requests (default: 550). This feature
|
|
is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_plaintext_session\fR"
|
|
Reject the request when the connection is not encrypted. This
|
|
restriction should not be used before the client has had a chance
|
|
to negotiate encryption with the AUTH or STARTTLS commands.
|
|
.br
|
|
The plaintext_reject_code parameter specifies the response
|
|
code for rejected requests (default: 450). This feature is available
|
|
in Postfix 2.3 and later.
|
|
.br
|
|
.IP "\fBreject_unauth_pipelining\fR"
|
|
Reject the request when the client sends SMTP commands ahead
|
|
of time where it is not allowed, or when the client sends SMTP
|
|
commands ahead of time without knowing that Postfix actually supports
|
|
ESMTP command pipelining. This stops mail from bulk mail software
|
|
that improperly uses ESMTP command pipelining in order to speed up
|
|
deliveries.
|
|
.br
|
|
With Postfix 2.6 and later, the SMTP server sets a per\-session
|
|
flag whenever it detects illegal pipelining, including pipelined
|
|
HELO or EHLO commands. The reject_unauth_pipelining feature simply
|
|
tests whether the flag was set at any point in time during the
|
|
session.
|
|
.br
|
|
With older Postfix versions, reject_unauth_pipelining checks
|
|
the current status of the input read queue, and its usage is not
|
|
recommended in contexts other than smtpd_data_restrictions.
|
|
.br
|
|
.IP "\fBreject\fR"
|
|
Reject the request. This restriction is useful at the end of
|
|
a restriction list, to make the default policy explicit. The
|
|
reject_code configuration parameter specifies the response code for
|
|
rejected requests (default: 554).
|
|
.br
|
|
.IP "\fBsleep \fIseconds\fR\fR"
|
|
Pause for the specified number of seconds and proceed with
|
|
the next restriction in the list, if any. This may stop zombie
|
|
mail when used as:
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_client_restrictions =
|
|
sleep 1, reject_unauth_pipelining
|
|
smtpd_delay_reject = no
|
|
.fi
|
|
.ad
|
|
This feature is available in Postfix 2.3.
|
|
.br
|
|
.IP "\fBwarn_if_reject\fR"
|
|
A safety net for testing. When "warn_if_reject" is placed
|
|
before a reject\-type restriction, access table query, or
|
|
check_policy_service query, this logs a "reject_warning" message
|
|
instead of rejecting a request (when a reject\-type restriction fails
|
|
due to a temporary error, this logs a "reject_warning" message for
|
|
any implicit "defer_if_permit" actions that would normally prevent
|
|
mail from being accepted by some later access restriction). This
|
|
feature has no effect on defer_if_reject restrictions.
|
|
.br
|
|
.br
|
|
.PP
|
|
Other restrictions that are valid in this context:
|
|
.IP \(bu
|
|
SMTP command specific restrictions that are described under
|
|
the smtpd_helo_restrictions, smtpd_sender_restrictions or
|
|
smtpd_recipient_restrictions parameters. When helo, sender or
|
|
recipient restrictions are listed under smtpd_client_restrictions,
|
|
they have effect only with "smtpd_delay_reject = yes", so that
|
|
$smtpd_client_restrictions is evaluated at the time of the RCPT TO
|
|
command.
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client_hostname
|
|
.fi
|
|
.ad
|
|
.SH smtpd_command_filter (default: empty)
|
|
A mechanism to transform commands from remote SMTP clients.
|
|
This is a last\-resort tool to work around client commands that break
|
|
interoperability with the Postfix SMTP server. Other uses involve
|
|
fault injection to test Postfix's handling of invalid commands.
|
|
.PP
|
|
Specify the name of a "type:table" lookup table. The search
|
|
string is the SMTP command as received from the remote SMTP client,
|
|
except that initial whitespace and the trailing <CR><LF>
|
|
are removed. The result value is executed by the Postfix SMTP
|
|
server.
|
|
.PP
|
|
There is no need to use smtpd_command_filter for the following
|
|
cases:
|
|
.IP \(bu
|
|
Use "resolve_numeric_domain = yes" to accept
|
|
"\fIuser@ipaddress\fR".
|
|
.IP \(bu
|
|
Postfix already accepts the correct form
|
|
"\fIuser@[ipaddress]\fR". Use virtual_alias_maps or canonical_maps
|
|
to translate these into domain names if necessary.
|
|
.IP \(bu
|
|
Use "strict_rfc821_envelopes = no" to accept "RCPT TO:<\fIUser
|
|
Name <user@example.com>>\fR". Postfix will ignore the "\fIUser
|
|
Name\fR" part and deliver to the \fI<user@example.com>\fR address.
|
|
.br
|
|
.PP
|
|
Examples of problems that can be solved with the smtpd_command_filter
|
|
feature:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_command_filter = pcre:/etc/postfix/command_filter
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/command_filter:
|
|
# Work around clients that send malformed HELO commands.
|
|
/^HELO\es*$/ HELO domain.invalid
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Work around clients that send empty lines.
|
|
/^\es*$/ NOOP
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Work around clients that send RCPT TO:<'user@domain'>.
|
|
# WARNING: do not lose the parameters that follow the address.
|
|
/^(RCPT\es+TO:\es*<)'([^[:space:]]+)'(>.*)/ $1$2$3
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Append XVERP to MAIL FROM commands to request VERP\-style delivery.
|
|
# See VERP_README for more information on how to use Postfix VERP.
|
|
/^(MAIL\es+FROM:\es*<listname@example\e.com>.*)/ $1 XVERP
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Bounce\-never mail sink. Use notify_classes=bounce,resource,software
|
|
# to send bounced mail to the postmaster (with message body removed).
|
|
/^(RCPT\es+TO:\es*<.*>.*)\es+NOTIFY=\eS+(.*)/ $1 NOTIFY=NEVER$2
|
|
/^(RCPT\es+TO:.*)/ $1 NOTIFY=NEVER
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.7.
|
|
.SH smtpd_data_restrictions (default: empty)
|
|
Optional access restrictions that the Postfix SMTP server applies
|
|
in the context of the SMTP DATA command.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
Restrictions are applied in the order as specified; the first
|
|
restriction that matches wins.
|
|
.PP
|
|
The following restrictions are valid in this context:
|
|
.IP \(bu
|
|
Generic restrictions that can be used
|
|
in any SMTP command context, described under smtpd_client_restrictions.
|
|
.IP \(bu
|
|
SMTP command specific restrictions described under
|
|
smtpd_client_restrictions, smtpd_helo_restrictions,
|
|
smtpd_sender_restrictions or smtpd_recipient_restrictions.
|
|
.IP \(bu
|
|
However, no recipient information is available in the case of
|
|
multi\-recipient mail. Acting on only one recipient would be misleading,
|
|
because any decision will affect all recipients equally. Acting on
|
|
all recipients would require a possibly very large amount of memory,
|
|
and would also be misleading for the reasons mentioned before.
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_data_restrictions = reject_unauth_pipelining
|
|
smtpd_data_restrictions = reject_multi_recipient_bounce
|
|
.fi
|
|
.ad
|
|
.SH smtpd_delay_open_until_valid_rcpt (default: yes)
|
|
Postpone the start of an SMTP mail transaction until a valid
|
|
RCPT TO command is received. Specify "no" to create a mail transaction
|
|
as soon as the Postfix SMTP server receives a valid MAIL FROM
|
|
command.
|
|
.PP
|
|
With sites that reject lots of mail, the default setting reduces
|
|
the use of
|
|
disk, CPU and memory resources. The downside is that rejected
|
|
recipients are logged with NOQUEUE instead of a mail transaction
|
|
ID (also known as a queue ID).
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_delay_reject (default: yes)
|
|
Wait until the RCPT TO command before evaluating
|
|
$smtpd_client_restrictions, $smtpd_helo_restrictions and
|
|
$smtpd_sender_restrictions, or wait until the ETRN command before
|
|
evaluating $smtpd_client_restrictions and $smtpd_helo_restrictions.
|
|
.PP
|
|
This feature is turned on by default because some clients apparently
|
|
mis\-behave when the Postfix SMTP server rejects commands before
|
|
RCPT TO.
|
|
.PP
|
|
The default setting has one major benefit: it allows Postfix to log
|
|
recipient address information when rejecting a client name/address
|
|
or sender address, so that it is possible to find out whose mail
|
|
is being rejected.
|
|
.SH smtpd_discard_ehlo_keyword_address_maps (default: empty)
|
|
Lookup tables, indexed by the remote SMTP client address, with
|
|
case insensitive lists of EHLO keywords (pipelining, starttls, auth,
|
|
etc.) that the Postfix SMTP server will not send in the EHLO response
|
|
to a
|
|
remote SMTP client. See smtpd_discard_ehlo_keywords for details.
|
|
The tables are not searched by hostname for robustness reasons.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_discard_ehlo_keywords (default: empty)
|
|
A case insensitive list of EHLO keywords (pipelining, starttls,
|
|
auth, etc.) that the Postfix SMTP server will not send in the EHLO
|
|
response
|
|
to a remote SMTP client.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
Specify the \fBsilent\-discard\fR pseudo keyword to prevent
|
|
this action from being logged.
|
|
.IP \(bu
|
|
Use the smtpd_discard_ehlo_keyword_address_maps feature
|
|
to discard EHLO keywords selectively.
|
|
.br
|
|
.SH smtpd_dns_reply_filter (default: empty)
|
|
Optional filter for Postfix SMTP server DNS lookup results.
|
|
See smtp_dns_reply_filter for details including an example.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtpd_end_of_data_restrictions (default: empty)
|
|
Optional access restrictions that the Postfix SMTP server
|
|
applies in the context of the SMTP END\-OF\-DATA command.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
See smtpd_data_restrictions for details and limitations.
|
|
.SH smtpd_enforce_tls (default: no)
|
|
Mandatory TLS: announce STARTTLS support to remote SMTP clients,
|
|
and reject all plaintext commands except HELO, EHLO, XCLIENT,
|
|
STARTTLS, NOOP, QUIT, and (Postfix >= 3.9) HELP.
|
|
According to RFC 2487
|
|
this MUST NOT be applied in case of a publicly\-referenced SMTP
|
|
server. Instead, this should be used on dedicated servers, for
|
|
example submission (port 587). This option is therefore off by
|
|
default.
|
|
.PP
|
|
Note 1: "smtpd_enforce_tls = yes" implies "smtpd_tls_auth_only = yes".
|
|
.PP
|
|
Note 2: when invoked via "\fBsendmail \-bs\fR", Postfix will never offer
|
|
STARTTLS due to insufficient privileges to access the server private
|
|
key. This is intended behavior.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
smtpd_tls_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later. With
|
|
Postfix 2.3 and later use smtpd_tls_security_level instead.
|
|
.SH smtpd_error_sleep_time (default: 1s)
|
|
With Postfix version 2.1 and later: the SMTP server response delay after
|
|
a client has made more than $smtpd_soft_error_limit errors, and
|
|
fewer than $smtpd_hard_error_limit errors, without delivering mail.
|
|
.PP
|
|
With Postfix version 2.0 and earlier: the SMTP server delay
|
|
before sending a reject (4xx or 5xx) response, when the client has
|
|
made fewer than $smtpd_soft_error_limit errors without delivering
|
|
mail. When the client has made $smtpd_soft_error_limit or more errors,
|
|
delay all responses with the larger of (number of errors) seconds
|
|
or $smtpd_error_sleep_time.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtpd_etrn_restrictions (default: empty)
|
|
Optional restrictions that the Postfix SMTP server applies in the
|
|
context of a client ETRN command.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
The Postfix ETRN implementation accepts only destinations that are
|
|
eligible for the Postfix "fast flush" service. See the ETRN_README
|
|
file for details.
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
Restrictions are applied in the order as specified; the first
|
|
restriction that matches wins.
|
|
.PP
|
|
The following restrictions are specific to the domain name information
|
|
received with the ETRN command.
|
|
.IP "\fBcheck_etrn_access \fItype:table\fR\fR"
|
|
Search the specified access database for the ETRN domain name.
|
|
See the \fBaccess\fR(5) manual page for details.
|
|
.br
|
|
.br
|
|
.PP
|
|
Other restrictions that are valid in this context:
|
|
.IP \(bu
|
|
Generic restrictions that can be used
|
|
in any SMTP command context, described under smtpd_client_restrictions.
|
|
.IP \(bu
|
|
SMTP command specific restrictions described under
|
|
smtpd_client_restrictions and smtpd_helo_restrictions.
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_etrn_restrictions = permit_mynetworks, reject
|
|
.fi
|
|
.ad
|
|
.SH smtpd_expansion_filter (default: see "postconf \-d" output)
|
|
What characters are allowed in $name expansions of RBL reply
|
|
templates. Characters not in the allowed set are replaced by "_".
|
|
Use C like escapes to specify special characters such as whitespace.
|
|
.PP
|
|
The smtpd_expansion_filter value is not subject to Postfix configuration
|
|
parameter $name expansion.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH smtpd_forbid_bare_newline (default: Postfix >= 3.9: normalize)
|
|
Reject or restrict input lines from an SMTP client that end in
|
|
<LF> instead of the standard <CR><LF>. Such line
|
|
endings are commonly allowed with UNIX\-based SMTP servers, but they
|
|
violate RFC 5321, and allowing such line endings can make a server
|
|
vulnerable to
|
|
SMTP smuggling.
|
|
.PP
|
|
Specify one of the following values (case does not matter):
|
|
.IP "\fBnormalize\fR (default for Postfix >= 3.9)"
|
|
Require the standard
|
|
End\-of\-DATA sequence <CR><LF>.<CR><LF>.
|
|
Otherwise, allow command or message content lines ending in the
|
|
non\-standard <LF>, and process them as if the client sent the
|
|
standard <CR><LF>.
|
|
.br
|
|
.br
|
|
This maintains compatibility
|
|
with many legitimate SMTP client applications that send a mix of
|
|
standard and non\-standard line endings, but will fail to receive
|
|
email from client implementations that do not terminate DATA content
|
|
with the standard End\-of\-DATA sequence
|
|
<CR><LF>.<CR><LF>.
|
|
.br
|
|
.br
|
|
Such clients
|
|
can be excluded with smtpd_forbid_bare_newline_exclusions.
|
|
.br
|
|
.IP "\fBnote\fR"
|
|
Same as "normalize", but also notes in
|
|
the log whether the Postfix SMTP server received any lines with
|
|
"bare <LF>". The information is formatted as "disconnect
|
|
from name[address] ... notes=bare_lf". The notes value is
|
|
expected to become a list of comma\-separated names.
|
|
.br
|
|
.br
|
|
This
|
|
feature is available in Postfix 3.9 and later.
|
|
.br
|
|
.IP "\fByes\fR"
|
|
Compatibility alias for \fBnormalize\fR.
|
|
.br
|
|
.IP "\fBreject\fR"
|
|
Require the standard End\-of\-DATA
|
|
sequence <CR><LF>.<CR><LF>. Reject a command
|
|
or message content when a line contains bare <LF>, log a "bare
|
|
<LF> received" error, and reply with the SMTP status code in
|
|
$smtpd_forbid_bare_newline_reject_code.
|
|
.br
|
|
.br
|
|
This will reject
|
|
email from SMTP clients that send any non\-standard line endings
|
|
such as web applications, netcat, or load balancer health checks.
|
|
.br
|
|
.br
|
|
This will also reject email from services that use BDAT
|
|
to send MIME text containing a bare newline (RFC 3030 Section 3
|
|
requires canonical MIME format for text message types, defined in
|
|
RFC 2045 Sections 2.7 and 2.8).
|
|
.br
|
|
.br
|
|
Such clients can be
|
|
excluded with smtpd_forbid_bare_newline_exclusions (or, in the case
|
|
of BDAT violations, BDAT can be selectively disabled with
|
|
smtpd_discard_ehlo_keyword_address_maps, or globally disabled with
|
|
smtpd_discard_ehlo_keywords).
|
|
.br
|
|
.IP "\fBno\fR (default for Postfix < 3.9)"
|
|
Do not require the standard End\-of\-DATA
|
|
sequence <CR><LF>.<CR><LF>. Always process
|
|
a bare <LF> as if the client sent <CR><LF>. This
|
|
option is fully backwards compatible, but is not recommended for
|
|
an Internet\-facing SMTP server, because it is vulnerable to SMTP smuggling.
|
|
.br
|
|
.br
|
|
.PP
|
|
Recommended settings:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# Require the standard End\-of\-DATA sequence <CR><LF>.<CR><LF>.
|
|
# Otherwise, allow bare <LF> and process it as if the client sent
|
|
# <CR><LF>.
|
|
#
|
|
# This maintains compatibility with many legitimate SMTP client
|
|
# applications that send a mix of standard and non\-standard line
|
|
# endings, but will fail to receive email from client implementations
|
|
# that do not terminate DATA content with the standard End\-of\-DATA
|
|
# sequence <CR><LF>.<CR><LF>.
|
|
#
|
|
# Such clients can be allowlisted with smtpd_forbid_bare_newline_exclusions.
|
|
# The example below allowlists SMTP clients in trusted networks.
|
|
#
|
|
smtpd_forbid_bare_newline = normalize
|
|
smtpd_forbid_bare_newline_exclusions = $mynetworks
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Alternative:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# Reject input lines that contain <LF> and log a "bare <LF> received"
|
|
# error. Require that input lines end in <CR><LF>, and require the
|
|
# standard End\-of\-DATA sequence <CR><LF>.<CR><LF>.
|
|
#
|
|
# This will reject email from SMTP clients that send any non\-standard
|
|
# line endings such as web applications, netcat, or load balancer
|
|
# health checks.
|
|
#
|
|
# This will also reject email from services that use BDAT to send
|
|
# MIME text containing a bare newline (RFC 3030 Section 3 requires
|
|
# canonical MIME format for text message types, defined in RFC 2045
|
|
# Sections 2.7 and 2.8).
|
|
#
|
|
# Such clients can be allowlisted with smtpd_forbid_bare_newline_exclusions.
|
|
# The example below allowlists SMTP clients in trusted networks.
|
|
#
|
|
smtpd_forbid_bare_newline = reject
|
|
smtpd_forbid_bare_newline_exclusions = $mynetworks
|
|
#
|
|
# Alternatively, in the case of BDAT violations, BDAT can be selectively
|
|
# disabled with smtpd_discard_ehlo_keyword_address_maps, or globally
|
|
# disabled with smtpd_discard_ehlo_keywords.
|
|
#
|
|
# smtpd_discard_ehlo_keyword_address_maps = cidr:/path/to/file
|
|
# /path/to/file:
|
|
# 10.0.0.0/24 chunking, silent\-discard
|
|
# smtpd_discard_ehlo_keywords = chunking, silent\-discard
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature with settings \fByes\fR and \fBno\fR is available
|
|
in Postfix 3.8.4, 3.7.9, 3.6.13, and 3.5.23. Additionally, the
|
|
settings \fBreject\fR, and \fBnormalize\fR are available with
|
|
Postfix >= 3.9, 3.8.5, 3.7.10, 3.6.14, and 3.5.24.
|
|
.SH smtpd_forbid_bare_newline_exclusions (default: $mynetworks)
|
|
Exclude the specified clients from smtpd_forbid_bare_newline
|
|
enforcement. This setting uses the same syntax and parent\-domain
|
|
matching behavior as mynetworks.
|
|
.PP
|
|
This feature is available in Postfix >= 3.9, 3.8.4, 3.7.9,
|
|
3.6.13, and 3.5.23.
|
|
.SH smtpd_forbid_bare_newline_reject_code (default: 550)
|
|
The numerical Postfix SMTP server response code when rejecting a
|
|
request with "smtpd_forbid_bare_newline = reject".
|
|
Specify a 5XX status code (521 to disconnect).
|
|
.PP
|
|
This feature is available in Postfix >= 3.9, 3.8.5, 3.7.10,
|
|
3.6.14, and 3.5.24.
|
|
.SH smtpd_forbid_unauth_pipelining (default: Postfix >= 3.9: yes)
|
|
Disconnect remote SMTP clients that violate RFC 2920 (or 5321)
|
|
command pipelining constraints. The server replies with "554 5.5.0
|
|
Error: SMTP protocol synchronization" and logs the unexpected remote
|
|
SMTP client input. This feature is enabled by default with Postfix
|
|
>= 3.9. Specify "smtpd_forbid_unauth_pipelining = no" to disable.
|
|
.PP
|
|
This feature is available in Postfix >= 3.9, 3.8.1, 3.7.6,
|
|
3.6.10, and 3.5.20.
|
|
.SH smtpd_forbidden_commands (default: CONNECT GET POST regexp:{{/^[^A\-Z]/ Bogus}})
|
|
List of commands that cause the Postfix SMTP server to immediately
|
|
terminate the session with a 221 code. This can be used to disconnect
|
|
clients that obviously attempt to abuse the system. In addition to the
|
|
commands listed in this parameter, commands that follow the "Label:"
|
|
format of message headers will also cause a disconnect. With Postfix
|
|
versions 3.6 and earlier, the default value is "CONNECT GET POST".
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.PP
|
|
Support for inline regular expressions was added in Postfix version
|
|
3.7. See \fBregexp_table\fR(5) for a description of the syntax and features.
|
|
.SH smtpd_hard_error_limit (default: normal: 20, overload: 1)
|
|
The maximal number of errors a remote SMTP client is allowed to
|
|
make without delivering mail. The Postfix SMTP server disconnects
|
|
when the limit is reached. Normally the default limit is 20, but
|
|
it changes under overload to just 1. With Postfix 2.5 and earlier,
|
|
the SMTP server always allows up to 20 errors by default.
|
|
Valid values are greater than zero.
|
|
.SH smtpd_helo_required (default: no)
|
|
Require that a remote SMTP client introduces itself with the HELO
|
|
or EHLO command before sending the MAIL command or other commands
|
|
that require EHLO negotiation.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_helo_required = yes
|
|
.fi
|
|
.ad
|
|
.SH smtpd_helo_restrictions (default: empty)
|
|
Optional restrictions that the Postfix SMTP server applies in the
|
|
context of a client HELO command.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
The default is to permit everything.
|
|
.PP
|
|
Note: specify "smtpd_helo_required = yes" to fully enforce this
|
|
restriction (without "smtpd_helo_required = yes", a client can
|
|
simply skip smtpd_helo_restrictions by not sending HELO or EHLO).
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
Restrictions are applied in the order as specified; the first
|
|
restriction that matches wins.
|
|
.PP
|
|
The following restrictions are specific to the hostname information
|
|
received with the HELO or EHLO command.
|
|
.IP "\fBcheck_helo_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the HELO or EHLO
|
|
hostname, and execute the corresponding action.
|
|
Note: specify "smtpd_helo_required = yes" to fully enforce this
|
|
restriction (without "smtpd_helo_required = yes", a client can
|
|
simply skip check_helo_access by not sending HELO or EHLO).
|
|
.br
|
|
.IP "\fBcheck_helo_a_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the IP addresses for
|
|
the HELO or EHLO hostname, and execute the corresponding action.
|
|
Note 1: a result of "OK" is not allowed for safety reasons. Instead,
|
|
use DUNNO in order to exclude specific hosts from denylists. Note
|
|
2: specify "smtpd_helo_required = yes" to fully enforce this
|
|
restriction (without "smtpd_helo_required = yes", a client can
|
|
simply skip check_helo_a_access by not sending HELO or EHLO). This
|
|
feature is available in Postfix 3.0 and later.
|
|
.br
|
|
.IP "\fBcheck_helo_mx_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the MX hosts for
|
|
the HELO or EHLO hostname, and execute the corresponding action.
|
|
If no MX record is found, look up A or AAAA records, just like the
|
|
Postfix SMTP client would.
|
|
Note 1: a result of "OK" is not allowed for safety reasons. Instead,
|
|
use DUNNO in order to exclude specific hosts from denylists. Note
|
|
2: specify "smtpd_helo_required = yes" to fully enforce this
|
|
restriction (without "smtpd_helo_required = yes", a client can
|
|
simply skip check_helo_mx_access by not sending HELO or EHLO). This
|
|
feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBcheck_helo_ns_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the DNS servers
|
|
for the HELO or EHLO hostname, and execute the corresponding action.
|
|
Note 1: a result of "OK" is not allowed for safety reasons. Instead,
|
|
use DUNNO in order to exclude specific hosts from denylists. Note
|
|
2: specify "smtpd_helo_required = yes" to fully enforce this
|
|
restriction (without "smtpd_helo_required = yes", a client can
|
|
simply skip check_helo_ns_access by not sending HELO or EHLO). This
|
|
feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_invalid_helo_hostname\fR (with Postfix < 2.3: reject_invalid_hostname)"
|
|
Reject the request when the HELO or EHLO hostname is malformed.
|
|
Note: specify "smtpd_helo_required = yes" to fully enforce
|
|
this restriction (without "smtpd_helo_required = yes", a client can simply
|
|
skip reject_invalid_helo_hostname by not sending HELO or EHLO).
|
|
.br
|
|
The invalid_hostname_reject_code specifies the response code
|
|
for rejected requests (default: 501).
|
|
.br
|
|
.IP "\fBreject_non_fqdn_helo_hostname\fR (with Postfix < 2.3: reject_non_fqdn_hostname)"
|
|
Reject the request when the HELO or EHLO hostname is not in
|
|
fully\-qualified domain or address literal form, as required by the
|
|
RFC. Note: specify
|
|
"smtpd_helo_required = yes" to fully enforce this restriction
|
|
(without "smtpd_helo_required = yes", a client can simply skip
|
|
reject_non_fqdn_helo_hostname by not sending HELO or EHLO).
|
|
.br
|
|
The non_fqdn_reject_code parameter specifies the response code for
|
|
rejected requests (default: 504).
|
|
.br
|
|
.IP "\fBreject_rhsbl_helo \fIrbl_domain=d.d.d.d\fR\fR"
|
|
Reject the request when the HELO or EHLO hostname is
|
|
listed with the A record "\fId.d.d.d\fR" under \fIrbl_domain\fR
|
|
(Postfix version 2.1 and later only). Each "\fId\fR" is a number,
|
|
or a pattern inside "[]" that contains one or more ";"\-separated
|
|
numbers or number..number ranges (Postfix version 2.8 and later).
|
|
If no "\fI=d.d.d.d\fR" is
|
|
specified, reject the request when the HELO or EHLO hostname is
|
|
listed with any A record under \fIrbl_domain\fR. See the
|
|
reject_rbl_client description for additional RBL related configuration
|
|
parameters. Note: specify "smtpd_helo_required = yes" to fully
|
|
enforce this restriction (without "smtpd_helo_required = yes", a
|
|
client can simply skip reject_rhsbl_helo by not sending HELO or
|
|
EHLO). This feature is available in Postfix 2.0
|
|
and later.
|
|
.br
|
|
.IP "\fBreject_unknown_helo_hostname\fR (with Postfix < 2.3: reject_unknown_hostname)"
|
|
Reject the request when the HELO or EHLO hostname has no DNS A
|
|
or MX record.
|
|
.br
|
|
The reply is specified with the
|
|
unknown_hostname_reject_code parameter (default: 450) or
|
|
unknown_helo_hostname_tempfail_action (default: defer_if_permit).
|
|
See the respective parameter descriptions for details.
|
|
.br
|
|
Note: specify "smtpd_helo_required = yes" to fully
|
|
enforce this restriction (without "smtpd_helo_required = yes", a
|
|
client can simply skip reject_unknown_helo_hostname by not sending
|
|
HELO or EHLO).
|
|
.br
|
|
.br
|
|
.PP
|
|
Other restrictions that are valid in this context:
|
|
.IP \(bu
|
|
Generic restrictions that can be used
|
|
in any SMTP command context, described under smtpd_client_restrictions.
|
|
.IP \(bu
|
|
Client hostname or network address specific restrictions
|
|
described under smtpd_client_restrictions.
|
|
.IP \(bu
|
|
SMTP command specific restrictions described under
|
|
smtpd_sender_restrictions or smtpd_recipient_restrictions. When
|
|
sender or recipient restrictions are listed under smtpd_helo_restrictions,
|
|
they have effect only with "smtpd_delay_reject = yes", so that
|
|
$smtpd_helo_restrictions is evaluated at the time of the RCPT TO
|
|
command.
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname
|
|
smtpd_helo_restrictions = permit_mynetworks, reject_unknown_helo_hostname
|
|
.fi
|
|
.ad
|
|
.SH smtpd_hide_client_session (default: no)
|
|
Do not include SMTP client session information in the Postfix
|
|
SMTP server's Received: message header.
|
|
.IP \(bu
|
|
The default setting, "smtpd_hide_client_session = no",
|
|
must be used for the port 25 MTA service. It provides information
|
|
that is required by RFC 5321.
|
|
.IP \(bu
|
|
The setting "smtpd_hide_client_session = yes" may be used
|
|
for the port 587 and 465 MUA services. This hides the SMTP client
|
|
hostname and IP address, TLS session details, SASL login details,
|
|
and SMTP protocol details.
|
|
.br
|
|
.PP
|
|
Depending on the number of recipients, a redacted Received:
|
|
header has one of the following forms:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
Received: by mail.example.com (Postfix) id postfix\-queue\-id
|
|
for <user@example.com>; Day, dd Mon yyyy hh:mm:ss tz\-offset (zone)
|
|
.br
|
|
Received: by mail.example.com (Postfix) id postfix\-queue\-id
|
|
Day, dd Mon yyyy hh:mm:ss tz\-offset (zone)
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The redacted form hides that a message was received with SMTP,
|
|
and therefore it does not need to provide the information required by
|
|
RFC 5321. The form does still meet RFC 5322 requirements.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH smtpd_history_flush_threshold (default: 100)
|
|
The maximal number of lines in the Postfix SMTP server command history
|
|
before it is flushed upon receipt of EHLO, RSET, or end of DATA.
|
|
.SH smtpd_junk_command_limit (default: normal: 100, overload: 1)
|
|
The number of junk commands (NOOP, VRFY, ETRN or RSET) that a remote
|
|
SMTP client can send before the Postfix SMTP server starts to
|
|
increment the error counter with each junk command. The junk
|
|
command count is reset after mail is delivered. See also the
|
|
smtpd_error_sleep_time and smtpd_soft_error_limit configuration
|
|
parameters. Normally the default limit is 100, but it changes under
|
|
overload to just 1. With Postfix 2.5 and earlier, the SMTP server
|
|
always allows up to 100 junk commands by default.
|
|
.SH smtpd_log_access_permit_actions (default: empty)
|
|
Enable logging of the named "permit" actions in SMTP server
|
|
access lists (by default, the SMTP server logs "reject" actions but
|
|
not "permit" actions). This feature does not affect conditional
|
|
actions such as "defer_if_permit".
|
|
.PP
|
|
Specify a list of "permit" action names, "/file/name" or
|
|
"type:table" patterns, separated by commas and/or whitespace. The
|
|
list is matched left to right, and the search stops on the first
|
|
match. A "/file/name" pattern is replaced by its contents; a
|
|
"type:table" lookup table is matched when a name matches a lookup
|
|
key (the lookup result is ignored). Continue long lines by starting
|
|
the next line with whitespace. Specify "!pattern" to exclude a name
|
|
from the list.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
# Log all "permit" actions.
|
|
smtpd_log_access_permit_actions = static:all
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
# Log "permit_dnswl_client" only.
|
|
smtpd_log_access_permit_actions = permit_dnswl_client
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.10 and later.
|
|
.SH smtpd_milter_maps (default: empty)
|
|
Lookup tables with Milter settings per remote SMTP client IP
|
|
address. The lookup result overrides the smtpd_milters setting,
|
|
and has the same syntax.
|
|
.PP
|
|
Note: lookup tables cannot return empty responses. Specify a
|
|
lookup result of DISABLE (case does not matter) to indicate that
|
|
Milter support should be disabled.
|
|
.PP
|
|
Example to disable Milters for local clients:
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_milter_maps = cidr:/etc/postfix/smtpd_milter_map
|
|
smtpd_milters = inet:host:port, { inet:host:port, ... }, ...
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/smtpd_milter_map:
|
|
# Disable Milters for local clients.
|
|
127.0.0.0/8 DISABLE
|
|
192.168.0.0/16 DISABLE
|
|
::/64 DISABLE
|
|
2001:db8::/32 DISABLE
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.2 and later.
|
|
.SH smtpd_milters (default: empty)
|
|
A list of Milter (mail filter) applications for new mail that
|
|
arrives via the Postfix \fBsmtpd\fR(8) server. Specify space or comma as
|
|
separator. See the MILTER_README document for details.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_min_data_rate (default: 500)
|
|
The minimum plaintext data transfer rate in bytes/second for
|
|
DATA and BDAT requests, when deadlines are enabled with
|
|
smtpd_per_request_deadline. After a read operation transfers N
|
|
plaintext message bytes (possibly after TLS decryption), and after
|
|
the DATA or BDAT request deadline is decremented by the elapsed
|
|
time of that read operation, the DATA or BDAT request deadline is
|
|
incremented by N/smtpd_min_data_rate seconds. However, the deadline
|
|
will never be incremented beyond the time limit specified with
|
|
smtpd_timeout.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH smtpd_noop_commands (default: empty)
|
|
List of commands that the Postfix SMTP server replies to with "250
|
|
Ok", without doing any syntax checks and without changing state.
|
|
This list overrides any commands built into the Postfix SMTP server.
|
|
.SH smtpd_null_access_lookup_key (default: <>)
|
|
The lookup key to be used in SMTP \fBaccess\fR(5) tables instead of the
|
|
null sender address.
|
|
.SH smtpd_peername_lookup (default: yes)
|
|
Attempt to look up the remote SMTP client hostname, and verify that
|
|
the name matches the client IP address. A client name is set to
|
|
"unknown" when it cannot be looked up or verified, or when name
|
|
lookup is disabled. Turning off name lookup reduces delays due to
|
|
DNS lookup and increases the maximal inbound delivery rate.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_per_record_deadline (default: normal: no, overload: yes)
|
|
Change the behavior of the smtpd_timeout and smtpd_starttls_timeout
|
|
time limits, from a
|
|
time limit per read or write system call, to a time limit to send
|
|
or receive a complete record (an SMTP command line, SMTP response
|
|
line, SMTP message content line, or TLS protocol message). This
|
|
limits the impact from hostile peers that trickle data one byte at
|
|
a time.
|
|
.PP
|
|
Note: when per\-record deadlines are enabled, a short timeout
|
|
may cause problems with TLS over very slow network connections.
|
|
The reasons are that a TLS protocol message can be up to 16 kbytes
|
|
long (with TLSv1), and that an entire TLS protocol message must be
|
|
sent or received within the per\-record deadline.
|
|
.PP
|
|
This feature is available in Postfix 2.9\-3.6. With older
|
|
Postfix releases, the behavior is as if this parameter is set to
|
|
"no". Postfix 3.7 and later use smtpd_per_request_deadline.
|
|
.SH smtpd_per_request_deadline (default: normal: no, overload: yes)
|
|
Change the behavior of the smtpd_timeout and smtpd_starttls_timeout
|
|
time limits, from a time limit per plaintext or TLS read or write
|
|
call, to a combined time limit for receiving a complete SMTP request
|
|
and for sending a complete SMTP response. The deadline limits only
|
|
the time spent waiting for plaintext or TLS read or write calls,
|
|
not time spent elsewhere. The per\-request deadline limits the impact
|
|
from hostile peers that trickle data one byte at a time.
|
|
.PP
|
|
See smtpd_min_data_rate for how the per\-request deadline is
|
|
managed during the DATA and BDAT phase.
|
|
.PP
|
|
Note: when per\-request deadlines are enabled, a short time limit
|
|
may cause problems with TLS over very slow network connections. The
|
|
reason is that a TLS protocol message can be up to 16 kbytes long
|
|
(with TLSv1), and that an entire TLS protocol message must be
|
|
transferred within the per\-request deadline.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later. A weaker
|
|
feature, called smtpd_per_record_deadline, is available with Postfix
|
|
2.9\-3.6. With older Postfix releases, the behavior is as if this
|
|
parameter is set to "no".
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later.
|
|
.SH smtpd_policy_service_default_action (default: 451 4.3.5 Server configuration problem)
|
|
The default action when an SMTPD policy service request fails.
|
|
Specify "DUNNO" to behave as if the failed SMTPD policy service
|
|
request was not sent, and to continue processing other access
|
|
restrictions, if any.
|
|
.PP
|
|
Limitations:
|
|
.IP \(bu
|
|
This parameter may specify any value that would be a valid
|
|
SMTPD policy server response (or \fBaccess\fR(5) map lookup result). An
|
|
\fBaccess\fR(5) map or policy server in this parameter value may need to
|
|
be declared in advance with a restriction_class setting.
|
|
.IP \(bu
|
|
If the specified action invokes another check_policy_service
|
|
request, that request will have the built\-in default action.
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtpd_policy_service_max_idle (default: 300s)
|
|
The time after which an idle SMTPD policy service connection is
|
|
closed.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_policy_service_max_ttl (default: 1000s)
|
|
The time after which an active SMTPD policy service connection is
|
|
closed.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_policy_service_policy_context (default: empty)
|
|
Optional information that the Postfix SMTP server specifies in
|
|
the "policy_context" attribute of a policy service request (originally,
|
|
to share the same service endpoint among multiple check_policy_service
|
|
clients).
|
|
.PP
|
|
This feature is available in Postfix 3.1 and later.
|
|
.SH smtpd_policy_service_request_limit (default: 0)
|
|
The maximal number of requests per SMTPD policy service connection,
|
|
or zero (no limit). Once a connection reaches this limit, the
|
|
connection is closed and the next request will be sent over a new
|
|
connection. This is a workaround to avoid error\-recovery delays
|
|
with policy servers that cannot maintain a persistent connection.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtpd_policy_service_retry_delay (default: 1s)
|
|
The delay between attempts to resend a failed SMTPD policy
|
|
service request. Specify a value greater than zero.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtpd_policy_service_timeout (default: 100s)
|
|
The time limit for connecting to, writing to, or receiving from a
|
|
delegated SMTPD policy server.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_policy_service_try_limit (default: 2)
|
|
The maximal number of attempts to send an SMTPD policy service
|
|
request before giving up. Specify a value greater than zero.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtpd_proxy_ehlo (default: $myhostname)
|
|
How the Postfix SMTP server announces itself to the proxy filter.
|
|
By default, the Postfix hostname is used.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_proxy_filter (default: empty)
|
|
The hostname and TCP port of the mail filtering proxy server.
|
|
The proxy receives all mail from the Postfix SMTP server, and is
|
|
supposed to give the result to another Postfix SMTP server process.
|
|
.PP
|
|
Specify "host:port" or "inet:host:port" for a TCP endpoint, or
|
|
"unix:pathname" for a UNIX\-domain endpoint. The host can be specified
|
|
as an IP address or as a symbolic name; no MX lookups are done.
|
|
When no "host" or "host:" is specified, the local machine is
|
|
assumed. Pathname interpretation is relative to the Postfix queue
|
|
directory.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.PP
|
|
The "inet:" and "unix:" prefixes are available in Postfix 2.3
|
|
and later.
|
|
.SH smtpd_proxy_options (default: empty)
|
|
List of options that control how the Postfix SMTP server
|
|
communicates with a before\-queue content filter. Specify zero or
|
|
more of the following, separated by comma or whitespace.
|
|
.IP "\fBspeed_adjust\fR"
|
|
Do not connect to a before\-queue content filter until an entire
|
|
message has been received. This reduces the number of simultaneous
|
|
before\-queue content filter processes.
|
|
.PP
|
|
NOTE 1: A filter must not \fIselectively\fR reject recipients
|
|
of a multi\-recipient message. Rejecting all recipients is OK, as
|
|
is accepting all recipients.
|
|
.PP
|
|
NOTE 2: This feature increases the minimum amount of free queue
|
|
space by $message_size_limit. The extra space is needed to save the
|
|
message to a temporary file.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.7 and later.
|
|
.SH smtpd_proxy_timeout (default: 100s)
|
|
The time limit for connecting to a proxy filter and for sending or
|
|
receiving information. When a connection fails the client gets a
|
|
generic error message while more detailed information is logged to
|
|
the maillog file.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_recipient_limit (default: 1000)
|
|
The maximal number of recipients that the Postfix SMTP server
|
|
accepts per message delivery request.
|
|
.SH smtpd_recipient_overshoot_limit (default: 1000)
|
|
The number of recipients that a remote SMTP client can send in
|
|
excess of the limit specified with $smtpd_recipient_limit, before
|
|
the Postfix SMTP server increments the per\-session error count
|
|
for each excess recipient.
|
|
.SH smtpd_recipient_restrictions (default: see "postconf \-d" output)
|
|
Optional restrictions that the Postfix SMTP server applies in the
|
|
context of a client RCPT TO command, after smtpd_relay_restrictions.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
With Postfix versions before 2.10, the rules for relay permission
|
|
and spam blocking were combined under smtpd_recipient_restrictions,
|
|
resulting in error\-prone configuration. As of Postfix 2.10, relay
|
|
permission rules are preferably implemented with smtpd_relay_restrictions,
|
|
so that a permissive spam blocking policy under
|
|
smtpd_recipient_restrictions will no longer result in a permissive
|
|
mail relay policy.
|
|
.PP
|
|
For backwards compatibility, sites that migrate from Postfix
|
|
versions before 2.10 can set smtpd_relay_restrictions to the empty
|
|
value, and use smtpd_recipient_restrictions exactly as before.
|
|
.PP
|
|
IMPORTANT: Either the smtpd_relay_restrictions or the
|
|
smtpd_recipient_restrictions parameter must specify
|
|
at least one of the following restrictions. Otherwise Postfix will
|
|
refuse to receive mail:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
reject, reject_unauth_destination
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
defer, defer_if_permit, defer_unauth_destination
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
Restrictions are applied in the order as specified; the first
|
|
restriction that matches wins.
|
|
.PP
|
|
The following restrictions are specific to the recipient address
|
|
that is received with the RCPT TO command.
|
|
.IP "\fBcheck_recipient_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the resolved RCPT
|
|
TO address, and execute the corresponding action.
|
|
.br
|
|
.IP "\fBcheck_recipient_a_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the IP addresses for
|
|
the RCPT TO domain, and execute the corresponding action. Note:
|
|
a result of "OK" is not allowed for safety reasons. Instead, use
|
|
DUNNO in order to exclude specific hosts from denylists. This
|
|
feature is available in Postfix 3.0 and later.
|
|
.br
|
|
.IP "\fBcheck_recipient_mx_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the MX hosts for
|
|
the RCPT TO domain, and execute the corresponding action. If no
|
|
MX record is found, look up A or AAAA records, just like the Postfix
|
|
SMTP client would. Note:
|
|
a result of "OK" is not allowed for safety reasons. Instead, use
|
|
DUNNO in order to exclude specific hosts from denylists. This
|
|
feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBcheck_recipient_ns_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the DNS servers
|
|
for the RCPT TO domain, and execute the corresponding action.
|
|
Note: a result of "OK" is not allowed for safety reasons. Instead,
|
|
use DUNNO in order to exclude specific hosts from denylists. This
|
|
feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBpermit_auth_destination\fR"
|
|
Permit the request when one of the following is true:
|
|
.IP \(bu
|
|
Postfix is a mail forwarder: the resolved RCPT TO domain matches
|
|
$relay_domains or a subdomain thereof, and the address contains no
|
|
sender\-specified routing (user@elsewhere@domain),
|
|
.IP \(bu
|
|
Postfix is the final destination: the resolved RCPT TO domain
|
|
matches $mydestination, $inet_interfaces, $proxy_interfaces,
|
|
$virtual_alias_domains, or $virtual_mailbox_domains, and the address
|
|
contains no sender\-specified routing (user@elsewhere@domain).
|
|
.br
|
|
.br
|
|
.IP "\fBpermit_mx_backup\fR"
|
|
Permit the request when the local mail system is a backup MX for
|
|
the RCPT TO domain, or when the domain is an authorized destination
|
|
(see permit_auth_destination for definition).
|
|
.IP \(bu
|
|
Safety: permit_mx_backup does not accept addresses that have
|
|
sender\-specified routing information (example: user@elsewhere@domain).
|
|
.IP \(bu
|
|
Safety: permit_mx_backup can be vulnerable to mis\-use when
|
|
access is not restricted with permit_mx_backup_networks.
|
|
.IP \(bu
|
|
Safety: as of Postfix version 2.3, permit_mx_backup no longer
|
|
accepts the address when the local mail system is a primary MX for
|
|
the recipient domain. Exception: permit_mx_backup accepts the address
|
|
when it specifies an authorized destination (see permit_auth_destination
|
|
for definition).
|
|
.IP \(bu
|
|
Limitation: mail may be rejected in case of a temporary DNS
|
|
lookup problem with Postfix prior to version 2.0.
|
|
.br
|
|
.br
|
|
.IP "\fBreject_non_fqdn_recipient\fR"
|
|
Reject the request when the RCPT TO address specifies a
|
|
domain that is not in
|
|
fully\-qualified domain form, as required by the RFC.
|
|
.br
|
|
The
|
|
non_fqdn_reject_code parameter specifies the response code for
|
|
rejected requests (default: 504).
|
|
.br
|
|
.IP "\fBreject_rhsbl_recipient \fIrbl_domain=d.d.d.d\fR\fR"
|
|
Reject the request when the RCPT TO domain is listed with the
|
|
A record "\fId.d.d.d\fR" under \fIrbl_domain\fR (Postfix version
|
|
2.1 and later only). Each "\fId\fR" is a number, or a pattern
|
|
inside "[]" that contains one or more ";"\-separated numbers or
|
|
number..number ranges (Postfix version 2.8 and later). If no
|
|
"\fI=d.d.d.d\fR" is specified, reject
|
|
the request when the RCPT TO domain is listed with
|
|
any A record under \fIrbl_domain\fR.
|
|
.br
|
|
The maps_rbl_reject_code
|
|
parameter specifies the response code for rejected requests (default:
|
|
554); the default_rbl_reply parameter specifies the default server
|
|
reply; and the rbl_reply_maps parameter specifies tables with server
|
|
replies indexed by \fIrbl_domain\fR. This feature is available
|
|
in Postfix version 2.0 and later.
|
|
.br
|
|
.IP "\fBreject_unauth_destination\fR"
|
|
Reject the request unless one of the following is true:
|
|
.IP \(bu
|
|
Postfix is a mail forwarder: the resolved RCPT TO domain matches
|
|
$relay_domains or a subdomain thereof, and contains no sender\-specified
|
|
routing (user@elsewhere@domain),
|
|
.IP \(bu
|
|
Postfix is the final destination: the resolved RCPT TO domain
|
|
matches $mydestination, $inet_interfaces, $proxy_interfaces,
|
|
$virtual_alias_domains, or $virtual_mailbox_domains, and contains
|
|
no sender\-specified routing (user@elsewhere@domain).
|
|
.br
|
|
The relay_domains_reject_code parameter specifies the response
|
|
code for rejected requests (default: 554).
|
|
.br
|
|
.IP "\fBdefer_unauth_destination\fR"
|
|
Reject the same requests as reject_unauth_destination, with a
|
|
non\-permanent error code. This feature is available in Postfix
|
|
2.10 and later.
|
|
.br
|
|
.IP "\fBreject_unknown_recipient_domain\fR"
|
|
Reject the request when Postfix is not final destination for
|
|
the recipient domain, and the RCPT TO domain has 1) no DNS MX and
|
|
no DNS A
|
|
record or 2) a malformed MX record such as a record with
|
|
a zero\-length MX hostname (Postfix version 2.3 and later).
|
|
.br
|
|
The
|
|
reply is specified with the unknown_address_reject_code parameter
|
|
(default: 450), unknown_address_tempfail_action (default:
|
|
defer_if_permit), or 556 (nullmx, Postfix 3.0 and
|
|
later). See the respective parameter descriptions for details.
|
|
.br
|
|
.IP "\fBreject_unlisted_recipient\fR (with Postfix version 2.0: check_recipient_maps)"
|
|
Reject the request when the RCPT TO address is not listed in
|
|
the list of valid recipients for its domain class. See the
|
|
smtpd_reject_unlisted_recipient parameter description for details.
|
|
This feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_unverified_recipient\fR"
|
|
Reject the request when mail to the RCPT TO address is known
|
|
to bounce, or when the recipient address destination is not reachable.
|
|
Address verification information is managed by the \fBverify\fR(8) server;
|
|
see the ADDRESS_VERIFICATION_README file for details.
|
|
.br
|
|
The
|
|
unverified_recipient_reject_code parameter specifies the numerical
|
|
response code when an address is known to bounce (default: 450,
|
|
change it to 550 when you are confident that it is safe to do so).
|
|
.br
|
|
The unverified_recipient_defer_code parameter specifies the
|
|
numerical response code when an address probe failed due to a
|
|
temporary problem (default: 450).
|
|
.br
|
|
The
|
|
unverified_recipient_tempfail_action parameter specifies the action
|
|
after address probe failure due to a temporary problem (default:
|
|
defer_if_permit).
|
|
.br
|
|
This feature breaks for aliased addresses
|
|
with "enable_original_recipient = no" (Postfix <= 3.2).
|
|
.br
|
|
This feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.br
|
|
.PP
|
|
Other restrictions that are valid in this context:
|
|
.IP \(bu
|
|
Generic restrictions that can be used
|
|
in any SMTP command context, described under smtpd_client_restrictions.
|
|
.IP \(bu
|
|
SMTP command specific restrictions described under
|
|
smtpd_client_restrictions, smtpd_helo_restrictions and
|
|
smtpd_sender_restrictions.
|
|
.br
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# The Postfix before 2.10 default mail relay policy. Later Postfix
|
|
# versions implement this preferably with smtpd_relay_restrictions.
|
|
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
|
|
.fi
|
|
.ad
|
|
.SH smtpd_reject_footer (default: empty)
|
|
Optional information that is appended after each Postfix SMTP
|
|
server
|
|
4XX or 5XX response.
|
|
.PP
|
|
The following example uses "\ec" at the start of the template
|
|
(supported in Postfix 2.10 and later) to suppress the line break
|
|
between the reply text and the footer text. With earlier Postfix
|
|
versions, the footer text always begins on a new line, and the "\ec"
|
|
is output literally.
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_reject_footer = \ec. For assistance, call 800\-555\-0101.
|
|
Please provide the following information in your problem report:
|
|
time ($localtime), client ($client_address) and server
|
|
($server_name).
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Server response:
|
|
.PP
|
|
.nf
|
|
.na
|
|
550\-5.5.1 <user@example> Recipient address rejected: User
|
|
unknown. For assistance, call 800\-555\-0101. Please provide the
|
|
following information in your problem report: time (Jan 4 15:42:00),
|
|
client (192.168.1.248) and server (mail1.example.com).
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Note: the above text is meant to make it easier to find the
|
|
Postfix logfile records for a failed SMTP session. The text itself
|
|
is not logged to the Postfix SMTP server's maillog file.
|
|
.PP
|
|
Be sure to keep the text as short as possible. Long text may
|
|
be truncated before it is logged to the remote SMTP client's maillog
|
|
file, or before it is returned to the sender in a delivery status
|
|
notification.
|
|
.PP
|
|
The template text is not subject to Postfix configuration
|
|
parameter $name expansion. Instead, this feature supports a limited
|
|
number of $name attributes in the footer text. These attributes are
|
|
replaced with their current value for the SMTP session.
|
|
.PP
|
|
Note: specify $$name in footer text that is looked up from
|
|
regexp: or pcre:\-based smtpd_reject_footer_maps, otherwise the
|
|
Postfix server will not use the footer text and will log a warning
|
|
instead.
|
|
.IP "\fBclient_address\fR"
|
|
The Client IP address that
|
|
is logged in the maillog file.
|
|
.br
|
|
.IP "\fBclient_port\fR"
|
|
The client TCP port that is
|
|
logged in the maillog file.
|
|
.br
|
|
.IP "\fBlocaltime\fR"
|
|
The server local time (Mmm dd
|
|
hh:mm:ss) that is logged in the maillog file.
|
|
.br
|
|
.IP "\fBserver_name\fR"
|
|
The server's myhostname value.
|
|
This attribute is made available for sites with multiple MTAs
|
|
(perhaps behind a load\-balancer), where the server name can help
|
|
the server support team to quickly find the right log files.
|
|
.br
|
|
.br
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
NOT SUPPORTED are other attributes such as sender, recipient,
|
|
or main.cf parameters.
|
|
.IP \(bu
|
|
For safety reasons, text that does not match
|
|
$smtpd_expansion_filter is censored.
|
|
.br
|
|
.PP
|
|
This feature supports the two\-character sequence \en as a request
|
|
for a line break in the footer text. Postfix automatically inserts
|
|
after each line break the three\-digit SMTP reply code (and optional
|
|
enhanced status code) from the original Postfix reject message.
|
|
.PP
|
|
To work around mail software that mis\-handles multi\-line replies,
|
|
specify the two\-character sequence \ec at the start of the template.
|
|
This suppresses the line break between the reply text and the footer
|
|
text (Postfix 2.10 and later).
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH smtpd_reject_footer_maps (default: empty)
|
|
Lookup tables, indexed by the complete Postfix SMTP server 4xx or
|
|
5xx response, with reject footer templates. See smtpd_reject_footer
|
|
for details.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH smtpd_reject_unlisted_recipient (default: yes)
|
|
Request that the Postfix SMTP server rejects mail for unknown
|
|
recipient addresses, even when no explicit reject_unlisted_recipient
|
|
access restriction is specified. This prevents the Postfix queue
|
|
from filling up with undeliverable MAILER\-DAEMON messages.
|
|
.PP
|
|
An address is considered "unknown" when 1) it does not match a
|
|
\fBvirtual\fR(5) alias or \fBcanonical\fR(5) mapping, and 2) the address is not
|
|
valid for its address class. For a definition of class\-based address
|
|
validation, see
|
|
ADDRESS_CLASS_README.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_reject_unlisted_sender (default: no)
|
|
Request that the Postfix SMTP server rejects mail from unknown
|
|
sender addresses, even when no explicit reject_unlisted_sender
|
|
access restriction is specified. This can slow down an explosion
|
|
of forged mail from worms or viruses.
|
|
.PP
|
|
An address is considered "unknown" when 1) it does not match a
|
|
\fBvirtual\fR(5) alias or \fBcanonical\fR(5) mapping, and 2) the address is not
|
|
valid for its address class. For a definition of class\-based address
|
|
validation, see
|
|
ADDRESS_CLASS_README.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_relay_before_recipient_restrictions (default: see "postconf \-d" output)
|
|
Evaluate smtpd_relay_restrictions before smtpd_recipient_restrictions.
|
|
Historically, smtpd_relay_restrictions was evaluated after
|
|
smtpd_recipient_restrictions, contradicting documented behavior.
|
|
.PP
|
|
Background: the smtpd_relay_restrictions feature is primarily
|
|
designed to enforce a mail relaying policy, while
|
|
smtpd_recipient_restrictions is primarily designed to enforce spam
|
|
blocking policy. Both are evaluated while replying to the RCPT TO
|
|
command, and both support the same features.
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH smtpd_relay_restrictions (default: permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination)
|
|
Access restrictions for mail relay control that the Postfix
|
|
SMTP server applies in the context of the RCPT TO command, before
|
|
smtpd_recipient_restrictions.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
With Postfix versions before 2.10, the rules for relay permission
|
|
and spam blocking were combined under smtpd_recipient_restrictions,
|
|
resulting in error\-prone configuration. As of Postfix 2.10, relay
|
|
permission rules are preferably implemented with smtpd_relay_restrictions,
|
|
so that a permissive spam blocking policy under
|
|
smtpd_recipient_restrictions will no longer result in a permissive
|
|
mail relay policy.
|
|
.PP
|
|
For backwards compatibility, sites that migrate from Postfix
|
|
versions before 2.10 can set smtpd_relay_restrictions to the empty
|
|
value, and use smtpd_recipient_restrictions exactly as before.
|
|
.PP
|
|
By default, the Postfix SMTP server accepts:
|
|
.IP \(bu
|
|
Mail from clients whose IP address matches $mynetworks, or:
|
|
.IP \(bu
|
|
Mail from clients who are SASL authenticated, or:
|
|
.IP \(bu
|
|
Mail to remote destinations that match $relay_domains, except
|
|
for addresses that contain sender\-specified routing
|
|
(user@elsewhere@domain), or:
|
|
.IP \(bu
|
|
Mail to local destinations that match $inet_interfaces
|
|
or $proxy_interfaces, $mydestination, $virtual_alias_domains, or
|
|
$virtual_mailbox_domains.
|
|
.br
|
|
.PP
|
|
IMPORTANT: Either the smtpd_relay_restrictions or the
|
|
smtpd_recipient_restrictions parameter must specify
|
|
at least one of the following restrictions. Otherwise Postfix will
|
|
refuse to receive mail:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
reject, reject_unauth_destination
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
defer, defer_if_permit, defer_unauth_destination
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
The same restrictions are available as documented under
|
|
smtpd_recipient_restrictions.
|
|
.PP
|
|
This feature is available in Postfix 2.10 and later.
|
|
.SH smtpd_restriction_classes (default: empty)
|
|
User\-defined aliases for groups of access restrictions. The aliases
|
|
can be specified in smtpd_recipient_restrictions etc., and on the
|
|
right\-hand side of a Postfix \fBaccess\fR(5) table.
|
|
.PP
|
|
One major application is for implementing per\-recipient UCE control.
|
|
See the RESTRICTION_CLASS_README document for other examples.
|
|
.SH smtpd_sasl_application_name (default: smtpd)
|
|
The application name that the Postfix SMTP server uses for SASL
|
|
server initialization. This
|
|
controls the name of the SASL configuration file. The default value
|
|
is \fBsmtpd\fR, corresponding to a SASL configuration file named
|
|
\fBsmtpd.conf\fR.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and 2.2. With Postfix 2.3
|
|
it was renamed to smtpd_sasl_path.
|
|
.SH smtpd_sasl_auth_enable (default: no)
|
|
Enable SASL authentication in the Postfix SMTP server. By default,
|
|
the Postfix SMTP server does not use authentication.
|
|
.PP
|
|
If a remote SMTP client is authenticated, the permit_sasl_authenticated
|
|
access restriction can be used to permit relay access, like this:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# With Postfix 2.10 and later, the mail relay policy is
|
|
# preferably specified under smtpd_relay_restrictions.
|
|
smtpd_relay_restrictions =
|
|
permit_mynetworks, permit_sasl_authenticated, ...
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# With Postfix before 2.10, the relay policy can be
|
|
# specified only under smtpd_recipient_restrictions.
|
|
smtpd_recipient_restrictions =
|
|
permit_mynetworks, permit_sasl_authenticated, ...
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
To reject all SMTP connections from unauthenticated clients,
|
|
specify "smtpd_delay_reject = yes" (which is the default) and use:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtpd_client_restrictions = permit_sasl_authenticated, reject
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
See the SASL_README file for SASL configuration and operation details.
|
|
.SH smtpd_sasl_authenticated_header (default: no)
|
|
Report the SASL authenticated user name in the \fBsmtpd\fR(8) Received
|
|
message header.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_sasl_exceptions_networks (default: empty)
|
|
What remote SMTP clients the Postfix SMTP server will not offer
|
|
AUTH support to.
|
|
.PP
|
|
Some clients (Netscape 4 at least) have a bug that causes them to
|
|
require a login and password whenever AUTH is offered, whether it's
|
|
necessary or not. To work around this, specify, for example,
|
|
$mynetworks to prevent Postfix from offering AUTH to local clients.
|
|
.PP
|
|
Specify a list of network/netmask patterns, separated by commas
|
|
and/or whitespace. The mask specifies the number of bits in the
|
|
network part of a host address. You can also specify "/file/name" or
|
|
"type:table" patterns. A "/file/name" pattern is replaced by its
|
|
contents; a "type:table" lookup table is matched when a table entry
|
|
matches a lookup string (the lookup result is ignored). Continue
|
|
long lines by starting the next line with whitespace. Specify
|
|
"!pattern" to exclude an address or network block from the list.
|
|
The form "!/file/name" is supported only in Postfix version 2.4 and
|
|
later.
|
|
.PP
|
|
Note: IP version 6 address information must be specified inside
|
|
[] in the smtpd_sasl_exceptions_networks value, and in
|
|
files specified with "/file/name". IP version 6 addresses contain
|
|
the ":" character, and would otherwise be confused with a "type:table"
|
|
pattern.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_sasl_exceptions_networks = $mynetworks
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH smtpd_sasl_local_domain (default: empty)
|
|
The name of the Postfix SMTP server's local SASL authentication
|
|
realm.
|
|
.PP
|
|
By default, the local authentication realm name is the null string.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_sasl_local_domain = $mydomain
|
|
smtpd_sasl_local_domain = $myhostname
|
|
.fi
|
|
.ad
|
|
.SH smtpd_sasl_mechanism_filter (default: !external, static:rest)
|
|
If non\-empty, a filter for the SASL mechanism names that the
|
|
Postfix SMTP server will announce in the EHLO response. By default,
|
|
the Postfix SMTP server will not announce the EXTERNAL mechanism,
|
|
because Postfix support for that is not implemented.
|
|
.PP
|
|
Specify mechanism names, "/file/name" patterns, or "type:table"
|
|
lookup tables, separated by comma or whitespace. The right\-hand
|
|
side result from "type:table" lookups is ignored. Specify "!pattern"
|
|
to exclude a mechanism name from the list.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_sasl_mechanism_filter = !external, !gssapi, static:rest
|
|
smtpd_sasl_mechanism_filter = login, plain
|
|
smtpd_sasl_mechanism_filter = /etc/postfix/smtpd_mechs
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.6 and later.
|
|
.SH smtpd_sasl_path (default: smtpd)
|
|
Implementation\-specific information that the Postfix SMTP server
|
|
passes through to
|
|
the SASL plug\-in implementation that is selected with
|
|
\fBsmtpd_sasl_type\fR. Typically this specifies the name of a
|
|
configuration file or rendezvous point.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later. In earlier
|
|
releases it was called \fBsmtpd_sasl_application_name\fR.
|
|
.SH smtpd_sasl_response_limit (default: 12288)
|
|
The maximum length of a SASL client's response to a server challenge.
|
|
When the client's "initial response" is longer than the normal limit for
|
|
SMTP commands, the client must omit its initial response, and wait for an
|
|
empty server challenge; it can then send what would have been its "initial
|
|
response" as a response to the empty server challenge. RFC4954 requires the
|
|
server to accept client responses up to at least 12288 octets of
|
|
base64\-encoded text. The default value is therefore also the minimum value
|
|
accepted for this parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later. Prior versions use
|
|
"line_length_limit", which may need to be raised to accommodate larger client
|
|
responses, as may be needed with GSSAPI authentication of Windows AD users
|
|
who are members of many groups.
|
|
.SH smtpd_sasl_security_options (default: noanonymous)
|
|
Postfix SMTP server SASL security options; as of Postfix 2.3
|
|
the list of available
|
|
features depends on the SASL server implementation that is selected
|
|
with \fBsmtpd_sasl_type\fR.
|
|
.PP
|
|
The following security features are defined for the \fBcyrus\fR
|
|
server SASL implementation:
|
|
.PP
|
|
Restrict what authentication mechanisms the Postfix SMTP server
|
|
will offer to the client. The list of available authentication
|
|
mechanisms is system dependent.
|
|
.PP
|
|
Specify zero or more of the following:
|
|
.IP "\fBnoplaintext\fR"
|
|
Disallow methods that use plaintext passwords.
|
|
.br
|
|
.IP "\fBnoactive\fR"
|
|
Disallow methods subject to active (non\-dictionary) attack.
|
|
.br
|
|
.IP "\fBnodictionary\fR"
|
|
Disallow methods subject to passive (dictionary) attack.
|
|
.br
|
|
.IP "\fBnoanonymous\fR"
|
|
Disallow methods that allow anonymous authentication.
|
|
.br
|
|
.IP "\fBforward_secrecy\fR"
|
|
Only allow methods that support forward secrecy (Dovecot only).
|
|
.br
|
|
.IP "\fBmutual_auth\fR"
|
|
Only allow methods that provide mutual authentication (not available
|
|
with Cyrus SASL version 1).
|
|
.br
|
|
.br
|
|
.PP
|
|
By default, the Postfix SMTP server accepts plaintext passwords but
|
|
not anonymous logins.
|
|
.PP
|
|
Warning: it appears that clients try authentication methods in the
|
|
order as advertised by the server (e.g., PLAIN ANONYMOUS CRAM\-MD5)
|
|
which means that if you disable plaintext passwords, clients will
|
|
log in anonymously, even when they should be able to use CRAM\-MD5.
|
|
So, if you disable plaintext logins, disable anonymous logins too.
|
|
Postfix treats anonymous login as no authentication.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_sasl_security_options = noanonymous, noplaintext
|
|
.fi
|
|
.ad
|
|
.SH smtpd_sasl_service (default: smtp)
|
|
The service name that is passed to the SASL plug\-in that is
|
|
selected with \fBsmtpd_sasl_type\fR and \fBsmtpd_sasl_path\fR.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later. Prior
|
|
versions behave as if "\fBsmtp\fR" is specified.
|
|
.SH smtpd_sasl_tls_security_options (default: $smtpd_sasl_security_options)
|
|
The SASL authentication security options that the Postfix SMTP
|
|
server uses for TLS encrypted SMTP sessions.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_sasl_type (default: cyrus)
|
|
The SASL plug\-in type that the Postfix SMTP server should use
|
|
for authentication. The available types are listed with the
|
|
"\fBpostconf \-a\fR" command.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_sender_login_maps (default: empty)
|
|
Optional lookup table with the SASL login names that own the
|
|
envelope sender
|
|
(MAIL FROM) addresses.
|
|
.sp
|
|
.in +4
|
|
Note: to enforce that the From: header address
|
|
matches the envelope sender (MAIL FROM) address, use an external
|
|
filter such as a Milter, for the submission or submissions (formerly
|
|
called smtps )
|
|
services. For example: https://github.com/magcks/milterfrom.
|
|
.in -4
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found. With lookups from
|
|
indexed files such as DB or DBM, or from networked tables such as
|
|
NIS, LDAP or SQL, the following search operations are done with a
|
|
sender address of \fIuser@domain\fR:
|
|
.IP "1) \fIuser@domain\fR"
|
|
This table lookup is always done and has the highest precedence.
|
|
.br
|
|
.IP "2) \fIuser\fR"
|
|
This table lookup is done only when the \fIdomain\fR part of the
|
|
sender address matches $myorigin, $mydestination, $inet_interfaces
|
|
or $proxy_interfaces.
|
|
.br
|
|
.IP "3) \fI@domain\fR"
|
|
This table lookup is done last and has the lowest precedence.
|
|
.br
|
|
.br
|
|
.PP
|
|
In all cases the result of table lookup must be either "not found"
|
|
or a list of SASL login names separated by comma and/or whitespace.
|
|
.SH smtpd_sender_restrictions (default: empty)
|
|
Optional restrictions that the Postfix SMTP server applies in the
|
|
context of a client MAIL FROM command.
|
|
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
|
|
restriction lists" for a discussion of evaluation context and time.
|
|
.PP
|
|
The default is to permit everything.
|
|
.PP
|
|
Specify a list of restrictions, separated by commas and/or whitespace.
|
|
Continue long lines by starting the next line with whitespace.
|
|
Restrictions are applied in the order as specified; the first
|
|
restriction that matches wins.
|
|
.PP
|
|
The following restrictions are specific to the sender address
|
|
received with the MAIL FROM command.
|
|
.IP "\fBcheck_sender_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the MAIL FROM
|
|
address, and execute the corresponding action.
|
|
.br
|
|
.IP "\fBcheck_sender_a_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the IP addresses for
|
|
the MAIL FROM domain, and execute the corresponding action. Note:
|
|
a result of "OK" is not allowed for safety reasons. Instead, use
|
|
DUNNO in order to exclude specific hosts from denylists. This
|
|
feature is available in Postfix 3.0 and later.
|
|
.br
|
|
.IP "\fBcheck_sender_mx_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the MX hosts for
|
|
the MAIL FROM domain, and execute the corresponding action. If no
|
|
MX record is found, look up A or AAAA records, just like the Postfix
|
|
SMTP client would. Note:
|
|
a result of "OK" is not allowed for safety reasons. Instead, use
|
|
DUNNO in order to exclude specific hosts from denylists. This
|
|
feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBcheck_sender_ns_access \fItype:table\fR\fR"
|
|
Search the specified \fBaccess\fR(5) database for the DNS servers
|
|
for the MAIL FROM domain, and execute the corresponding action.
|
|
Note: a result of "OK" is not allowed for safety reasons. Instead,
|
|
use DUNNO in order to exclude specific hosts from denylists. This
|
|
feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_authenticated_sender_login_mismatch\fR"
|
|
Reject the request when the client is authenticated with SASL,
|
|
but either the MAIL FROM address is not listed in $smtpd_sender_login_maps,
|
|
or the SASL login name is not an owner for that address.
|
|
.br
|
|
This prevents an authenticated client from using a MAIL FROM address
|
|
that they do not explicitly own.
|
|
.br
|
|
Note: to enforce that the From: header address matches the envelope
|
|
sender (MAIL FROM) address, use an external filter such as a Milter,
|
|
for the submission or submissions (formerly called smtps) services.
|
|
For example: https://github.com/magcks/milterfrom.
|
|
.br
|
|
This feature is available in Postfix version 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_known_sender_login_mismatch\fR"
|
|
When the client is authenticated with SASL, reject the request
|
|
when the MAIL FROM address is listed in $smtpd_sender_login_maps,
|
|
but the SASL login name is not an owner for that address.
|
|
.br
|
|
When the client is not authenticated with SASL, reject the request
|
|
when SASL is enabled, and the MAIL FROM address is listed in
|
|
$smtpd_sender_login_maps.
|
|
.br
|
|
This protects any MAIL FROM address that is listed in
|
|
$smtpd_sender_login_maps, while still allowing a client to use any
|
|
unlisted MAIL FROM address.
|
|
.br
|
|
Note: to enforce that the From: header address matches the envelope
|
|
sender (MAIL FROM) address, use an external filter such as a Milter,
|
|
for the submission or submissions (formerly called smtps) services.
|
|
For example: https://github.com/magcks/milterfrom.
|
|
.br
|
|
This feature is available in Postfix version 2.11 and later.
|
|
.br
|
|
.IP "\fBreject_non_fqdn_sender\fR"
|
|
Reject the request when the MAIL FROM address specifies a
|
|
domain that is not in
|
|
fully\-qualified domain form as required by the RFC.
|
|
.br
|
|
The
|
|
non_fqdn_reject_code parameter specifies the response code for
|
|
rejected requests (default: 504).
|
|
.br
|
|
.IP "\fBreject_rhsbl_sender \fIrbl_domain=d.d.d.d\fR\fR"
|
|
Reject the request when the MAIL FROM domain is listed with
|
|
the A record "\fId.d.d.d\fR" under \fIrbl_domain\fR (Postfix
|
|
version 2.1 and later only). Each "\fId\fR" is a number, or a
|
|
pattern inside "[]" that contains one or more ";"\-separated numbers
|
|
or number..number ranges (Postfix version 2.8 and later). If no
|
|
"\fI=d.d.d.d\fR" is specified,
|
|
reject the request when the MAIL FROM domain is
|
|
listed with any A record under \fIrbl_domain\fR.
|
|
.br
|
|
The
|
|
maps_rbl_reject_code parameter specifies the response code for
|
|
rejected requests (default: 554); the default_rbl_reply parameter
|
|
specifies the default server reply; and the rbl_reply_maps parameter
|
|
specifies tables with server replies indexed by \fIrbl_domain\fR.
|
|
This feature is available in Postfix 2.0 and later.
|
|
.br
|
|
.IP "\fBreject_sender_login_mismatch\fR"
|
|
As of Postfix 2.1, this is an alias for
|
|
"reject_authenticated_sender_login_mismatch,
|
|
reject_unauthenticated_sender_login_mismatch".
|
|
.br
|
|
.IP "\fBreject_unauthenticated_sender_login_mismatch\fR"
|
|
Reject the request when SASL is enabled, the MAIL FROM address
|
|
is listed in $smtpd_sender_login_maps, but the client is not
|
|
authenticated with SASL.
|
|
.br
|
|
With SASL enabled, this prevents an unauthenticated client from
|
|
using any MAIL FROM address that is listed in $smtpd_sender_login_maps.
|
|
.br
|
|
Note: to enforce that the From: header address matches the envelope
|
|
sender (MAIL FROM) address, use an external filter such as a Milter,
|
|
for the submission or submissions (formerly called smtps) services.
|
|
For example: https://github.com/magcks/milterfrom.
|
|
.br
|
|
This feature is available in Postfix version 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_unknown_sender_domain\fR"
|
|
Reject the request when Postfix is not the final destination for
|
|
the sender address, and the MAIL FROM domain has 1) no DNS MX and
|
|
no DNS A
|
|
record, or 2) a malformed MX record such as a record with
|
|
a zero\-length MX hostname (Postfix version 2.3 and later).
|
|
.br
|
|
The
|
|
reply is specified with the unknown_address_reject_code parameter
|
|
(default: 450), unknown_address_tempfail_action (default:
|
|
defer_if_permit), or 550 (nullmx, Postfix 3.0 and
|
|
later). See the respective parameter descriptions for details.
|
|
.br
|
|
.IP "\fBreject_unlisted_sender\fR"
|
|
Reject the request when the MAIL FROM address is not listed in
|
|
the list of valid recipients for its domain class. See the
|
|
smtpd_reject_unlisted_sender parameter description for details.
|
|
This feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.IP "\fBreject_unverified_sender\fR"
|
|
Reject the request when mail to the MAIL FROM address is known to
|
|
bounce, or when the sender address destination is not reachable.
|
|
Address verification information is managed by the \fBverify\fR(8) server;
|
|
see the ADDRESS_VERIFICATION_README file for details.
|
|
.br
|
|
The
|
|
unverified_sender_reject_code parameter specifies the numerical
|
|
response code when an address is known to bounce (default: 450,
|
|
change into 550 when you are confident that it is safe to do so).
|
|
.br
|
|
The unverified_sender_defer_code specifies the numerical response
|
|
code when an address probe failed due to a temporary problem
|
|
(default: 450).
|
|
.br
|
|
The unverified_sender_tempfail_action parameter
|
|
specifies the action after address probe failure due to a temporary
|
|
problem (default: defer_if_permit).
|
|
.br
|
|
This feature breaks for
|
|
aliased addresses with "enable_original_recipient = no" (Postfix
|
|
<= 3.2).
|
|
.br
|
|
This feature is available in Postfix 2.1 and later.
|
|
.br
|
|
.br
|
|
.PP
|
|
Other restrictions that are valid in this context:
|
|
.IP \(bu
|
|
Generic restrictions that can be used
|
|
in any SMTP command context, described under smtpd_client_restrictions.
|
|
.IP \(bu
|
|
SMTP command specific restrictions described under
|
|
smtpd_client_restrictions and smtpd_helo_restrictions.
|
|
.IP \(bu
|
|
SMTP command specific restrictions described under
|
|
smtpd_recipient_restrictions. When recipient restrictions are listed
|
|
under smtpd_sender_restrictions, they have effect only with
|
|
"smtpd_delay_reject = yes", so that $smtpd_sender_restrictions is
|
|
evaluated at the time of the RCPT TO command.
|
|
.br
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_sender_restrictions = reject_unknown_sender_domain
|
|
smtpd_sender_restrictions = reject_unknown_sender_domain,
|
|
check_sender_access hash:/etc/postfix/access
|
|
.fi
|
|
.ad
|
|
.SH smtpd_service_name (default: smtpd)
|
|
The internal service that \fBpostscreen\fR(8) hands off allowed
|
|
connections to. In a future version there may be different
|
|
classes of SMTP service.
|
|
.PP
|
|
This feature is available in Postfix 2.8.
|
|
.SH smtpd_soft_error_limit (default: 10)
|
|
The number of errors a remote SMTP client is allowed to make without
|
|
delivering mail before the Postfix SMTP server slows down all its
|
|
responses.
|
|
.IP \(bu
|
|
With Postfix version 2.1 and later, when the error count
|
|
is > $smtpd_soft_error_limit, the Postfix SMTP server
|
|
delays all responses by $smtpd_error_sleep_time.
|
|
.IP \(bu
|
|
With Postfix versions 2.0 and earlier, when the error count
|
|
is > $smtpd_soft_error_limit, the Postfix SMTP server delays all
|
|
responses by the larger of (number of errors) seconds or
|
|
$smtpd_error_sleep_time.
|
|
.IP \(bu
|
|
With Postfix versions 2.0 and earlier, when the error count
|
|
is <= $smtpd_soft_error_limit, the Postfix SMTP server delays 4XX
|
|
and 5XX responses by $smtpd_error_sleep_time.
|
|
.br
|
|
.SH smtpd_starttls_timeout (default: see "postconf \-d" output)
|
|
The time limit for Postfix SMTP server write and read operations
|
|
during TLS startup and shutdown handshake procedures. The current
|
|
default value is stress\-dependent. Before Postfix version 2.8, it
|
|
was fixed at 300s.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_timeout (default: normal: 300s, overload: 10s)
|
|
When the Postfix SMTP server wants to send an SMTP server
|
|
response, how long the Postfix SMTP server will wait for an underlying
|
|
network write operation to complete; and when the Postfix SMTP
|
|
server Postfix wants to receive an SMTP client request, how long
|
|
the Postfix SMTP server will wait for an underlying network read
|
|
operation to complete. See the smtpd_per_request_deadline for how
|
|
this time limit may be enforced (with Postfix 2.9\-3.6 see
|
|
smtpd_per_record_deadline).
|
|
.PP
|
|
Normally the default limit
|
|
is 300s, but it changes under overload to just 10s. With Postfix
|
|
2.5 and earlier, the SMTP server always uses a time limit of 300s
|
|
by default.
|
|
.PP
|
|
Note: if you set SMTP time limits to very large values you may have
|
|
to update the global ipc_timeout parameter.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH smtpd_tls_CAfile (default: empty)
|
|
A file containing (PEM format) CA certificates of root CAs trusted
|
|
to sign either remote SMTP client certificates or intermediate CA
|
|
certificates. These are loaded into memory before the \fBsmtpd\fR(8) server
|
|
enters the chroot jail. If the number of trusted roots is large, consider
|
|
using smtpd_tls_CApath instead, but note that the latter directory must
|
|
be present in the chroot jail if the \fBsmtpd\fR(8) server is chrooted. This
|
|
file may also be used to augment the server certificate trust chain,
|
|
but it is best to include all the required certificates directly in the
|
|
server certificate file.
|
|
.PP
|
|
Specify "smtpd_tls_CAfile = /path/to/system_CA_file" to use ONLY
|
|
the system\-supplied default Certification Authority certificates.
|
|
.PP
|
|
Specify "tls_append_default_CA = no" to prevent Postfix from
|
|
appending the system\-supplied default CAs and trusting third\-party
|
|
certificates.
|
|
.PP
|
|
By default (see smtpd_tls_ask_ccert), client certificates are not
|
|
requested, and smtpd_tls_CAfile should remain empty. If you do make use
|
|
of client certificates, the distinguished names (DNs) of the Certification
|
|
Authorities listed in smtpd_tls_CAfile are sent to the remote SMTP client
|
|
in the client certificate request message. MUAs with multiple client
|
|
certificates may use the list of preferred Certification Authorities
|
|
to select the correct client certificate. You may want to put your
|
|
"preferred" CA or CAs in this file, and install other trusted CAs in
|
|
$smtpd_tls_CApath.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_CAfile = /etc/postfix/CAcert.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_CApath (default: empty)
|
|
A directory containing (PEM format) CA certificates of root CAs
|
|
trusted to sign either remote SMTP client certificates or intermediate CA
|
|
certificates. Do not forget to create the necessary "hash" links with,
|
|
for example, "$OPENSSL_HOME/bin/c_rehash /etc/postfix/certs". To use
|
|
smtpd_tls_CApath in chroot mode, this directory (or a copy) must be
|
|
inside the chroot jail.
|
|
.PP
|
|
Specify "smtpd_tls_CApath = /path/to/system_CA_directory" to
|
|
use ONLY the system\-supplied default Certification Authority certificates.
|
|
.PP
|
|
Specify "tls_append_default_CA = no" to prevent Postfix from
|
|
appending the system\-supplied default CAs and trusting third\-party
|
|
certificates.
|
|
.PP
|
|
By default (see smtpd_tls_ask_ccert), client certificates are
|
|
not requested, and smtpd_tls_CApath should remain empty. In contrast
|
|
to smtpd_tls_CAfile, DNs of Certification Authorities installed
|
|
in $smtpd_tls_CApath are not included in the client certificate
|
|
request message. MUAs with multiple client certificates may use the
|
|
list of preferred Certification Authorities to select the correct
|
|
client certificate. You may want to put your "preferred" CA or
|
|
CAs in $smtpd_tls_CAfile, and install the remaining trusted CAs in
|
|
$smtpd_tls_CApath.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_CApath = /etc/postfix/certs
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_always_issue_session_ids (default: yes)
|
|
Force the Postfix SMTP server to issue a TLS session id, even
|
|
when TLS session caching is turned off (smtpd_tls_session_cache_database
|
|
is empty). This behavior is compatible with Postfix < 2.3.
|
|
.PP
|
|
With Postfix 2.3 and later the Postfix SMTP server can disable
|
|
session id generation when TLS session caching is turned off. This
|
|
keeps remote SMTP clients from caching sessions that almost certainly cannot
|
|
be re\-used.
|
|
.PP
|
|
By default, the Postfix SMTP server always generates TLS session
|
|
ids. This works around a known defect in mail client applications
|
|
such as MS Outlook, and may also prevent interoperability issues
|
|
with other MTAs.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_always_issue_session_ids = no
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_tls_ask_ccert (default: no)
|
|
Ask a remote SMTP client for a client certificate. This
|
|
information is needed for certificate based mail relaying with,
|
|
for example, the permit_tls_clientcerts feature.
|
|
.PP
|
|
Some clients such as Netscape will either complain if no
|
|
certificate is available (for the list of CAs in $smtpd_tls_CAfile)
|
|
or will offer multiple client certificates to choose from. This
|
|
may be annoying, so this option is "off" by default.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_auth_only (default: no)
|
|
When TLS encryption is optional in the Postfix SMTP server, do
|
|
not announce or accept SASL authentication over unencrypted
|
|
connections.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_ccert_verifydepth (default: 9)
|
|
The verification depth for remote SMTP client certificates. A
|
|
depth of 1 is sufficient if the issuing CA is listed in a local CA
|
|
file.
|
|
.PP
|
|
The default verification depth is 9 (the OpenSSL default) for
|
|
compatibility with earlier Postfix behavior. Prior to Postfix 2.5,
|
|
the default value was 5, but the limit was not actually enforced. If
|
|
you have set this to a lower non\-default value, certificates with longer
|
|
trust chains may now fail to verify. Certificate chains with 1 or 2
|
|
CAs are common, deeper chains are more rare and any number between 5
|
|
and 9 should suffice in practice. You can choose a lower number if,
|
|
for example, you trust certificates directly signed by an issuing CA
|
|
but not any CAs it delegates to.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_cert_file (default: empty)
|
|
File with the Postfix SMTP server RSA certificate in PEM format.
|
|
This file may also contain the Postfix SMTP server private RSA key.
|
|
With Postfix >= 3.4 the preferred way to configure server keys and
|
|
certificates is via the "smtpd_tls_chain_files" parameter.
|
|
.PP
|
|
Public Internet MX hosts without certificates signed by a "reputable"
|
|
CA must generate, and be prepared to present to most clients, a
|
|
self\-signed or private\-CA signed certificate. The client will not be
|
|
able to authenticate the server, but unless it is running Postfix 2.3 or
|
|
similar software, it will still insist on a server certificate.
|
|
.PP
|
|
For servers that are \fBnot\fR public Internet MX hosts, Postfix
|
|
supports configurations with no certificates. This entails the use of
|
|
just the anonymous TLS ciphers, which are not supported by typical SMTP
|
|
clients. Since some clients may not fall back to plain text after a TLS
|
|
handshake failure, a certificate\-less Postfix SMTP server will be unable
|
|
to receive email from some TLS\-enabled clients. To avoid accidental
|
|
configurations with no certificates, Postfix enables certificate\-less
|
|
operation only when the administrator explicitly sets
|
|
"smtpd_tls_cert_file = none". This ensures that new Postfix SMTP server
|
|
configurations will not accidentally enable TLS without certificates.
|
|
.PP
|
|
Note that server certificates are not optional in TLS 1.3. To run
|
|
without certificates you'd have to disable the TLS 1.3 protocol by
|
|
including '!TLSv1.3' in "smtpd_tls_protocols" and perhaps also
|
|
"smtpd_tls_mandatory_protocols". It is simpler instead to just
|
|
configure a certificate chain. Certificate\-less operation is not
|
|
recommended.
|
|
.PP
|
|
Both RSA and DSA certificates are supported. When both types
|
|
are present, the cipher used determines which certificate will be
|
|
presented to the client. For Netscape and OpenSSL clients without
|
|
special cipher choices the RSA certificate is preferred.
|
|
.PP
|
|
To enable a remote SMTP client to verify the Postfix SMTP server
|
|
certificate, the issuing CA certificates must be made available to the
|
|
client. You should include the required certificates in the server
|
|
certificate file, the server certificate first, then the issuing
|
|
CA(s) (bottom\-up order).
|
|
.PP
|
|
Example: the certificate for "server.example.com" was issued by
|
|
"intermediate CA" which itself has a certificate of "root CA".
|
|
Create the server.pem file with "cat server_cert.pem intermediate_CA.pem
|
|
root_CA.pem > server.pem".
|
|
.PP
|
|
If you also want to verify client certificates issued by these
|
|
CAs, you can add the CA certificates to the smtpd_tls_CAfile, in which
|
|
case it is not necessary to have them in the smtpd_tls_cert_file,
|
|
smtpd_tls_dcert_file (obsolete) or smtpd_tls_eccert_file.
|
|
.PP
|
|
A certificate supplied here must be usable as an SSL server certificate
|
|
and hence pass the "openssl verify \-purpose sslserver ..." test.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_cert_file = /etc/postfix/server.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_chain_files (default: empty)
|
|
List of one or more PEM files, each holding one or more private keys
|
|
directly followed by a corresponding certificate chain. The file names
|
|
are separated by commas and/or whitespace. This parameter obsoletes the
|
|
legacy algorithm\-specific key and certificate file settings. When this
|
|
parameter is non\-empty, the legacy parameters are ignored, and a warning
|
|
is logged if any are also non\-empty.
|
|
.PP
|
|
With the proliferation of multiple private key algorithms-which,
|
|
as of OpenSSL 1.1.1, include DSA (obsolete), RSA, ECDSA, Ed25519
|
|
and Ed448-it is increasingly impractical to use separate
|
|
parameters to configure the key and certificate chain for each
|
|
algorithm. Therefore, Postfix now supports storing multiple keys and
|
|
corresponding certificate chains in a single file or in a set of files.
|
|
.PP
|
|
Each key must appear \fBimmediately before\fR the corresponding
|
|
certificate, optionally followed by additional issuer certificates that
|
|
complete the certificate chain for that key. When multiple files are
|
|
specified, they are equivalent to a single file that is concatenated
|
|
from those files in the given order. Thus, while a key must always
|
|
precede its certificate and issuer chain, it can be in a separate file,
|
|
so long as that file is listed immediately before the file that holds
|
|
the corresponding certificate chain. Once all the files are
|
|
concatenated, the sequence of PEM objects must be: \fIkey1, cert1,
|
|
[chain1], key2, cert2, [chain2], ..., keyN, certN, [chainN].\fR
|
|
.PP
|
|
Storing the private key in the same file as the corresponding
|
|
certificate is more reliable. With the key and certificate in separate
|
|
files, there is a chance that during key rollover a Postfix process
|
|
might load a private key and certificate from separate files that don't
|
|
match. Various operational errors may even result in a persistent
|
|
broken configuration in which the certificate does not match the private
|
|
key.
|
|
.PP
|
|
The file or files must contain at most one key of each type. If,
|
|
for example, two or more RSA keys and corresponding chains are listed,
|
|
depending on the version of OpenSSL either only the last one will be
|
|
used or a configuration error may be detected. Note that while
|
|
"Ed25519" and "Ed448" are considered separate algorithms, the various
|
|
ECDSA curves (typically one of prime256v1, secp384r1 or secp521r1) are
|
|
considered as different parameters of a single "ECDSA" algorithm, so it
|
|
is not presently possible to configure keys for more than one ECDSA
|
|
curve.
|
|
.PP
|
|
RSA is still the most widely supported algorithm. Presently (late
|
|
2018), ECDSA support is common, but not yet universal, and Ed25519 and
|
|
Ed448 support is mostly absent. Therefore, an RSA key should generally
|
|
be configured, along with any additional keys for the other algorithms
|
|
when desired.
|
|
.PP
|
|
Example (separate files for each key and corresponding certificate chain):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_tls_chain_files =
|
|
${config_directory}/ed25519.pem,
|
|
${config_directory}/ed448.pem,
|
|
${config_directory}/rsa.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/ed25519.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG
|
|
...
|
|
nC0egv51YPDWxEHom4QA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/ed448.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe
|
|
LNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG
|
|
...
|
|
pQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/rsa.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL
|
|
...
|
|
ahQkZ3+krcaJvDSMgvu0tDc=
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL
|
|
...
|
|
Rirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Example (all keys and certificates in a single file):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_tls_chain_files = ${config_directory}/chains.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/chains.pem:
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MC4CAQAwBQYDK2VwBCIEIEJfbbO4BgBQGBg9NAbIJaDBqZb4bC4cOkjtAH+Efbz3
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBKzCB3qADAgECAhQaw+rflRreYuUZBp0HuNn/e5rMZDAFBgMrZXAwFDESMBAG
|
|
...
|
|
nC0egv51YPDWxEHom4QA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MEcCAQAwBQYDK2VxBDsEOQf+m0P+G0qi+NZ0RolyeiE5zdlPQR8h8y4jByBifpIe
|
|
LNler7nzHQJ1SLcOiXFHXlxp/84VZuh32A==
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIBdjCB96ADAgECAhQSv4oP972KypOZPNPF4fmsiQoRHzAFBgMrZXEwFDESMBAG
|
|
...
|
|
pQcWsx+4J29e6YWH3Cy/CdUaexKP4RPCZDrPX7bk5C2BQ+eeYOxyThMA
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN PRIVATE KEY\-\-\-\-\-
|
|
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDc4QusgkahH9rL
|
|
...
|
|
ahQkZ3+krcaJvDSMgvu0tDc=
|
|
\-\-\-\-\-END PRIVATE KEY\-\-\-\-\-
|
|
\-\-\-\-\-BEGIN CERTIFICATE\-\-\-\-\-
|
|
MIIC+DCCAeCgAwIBAgIUIUkrbk1GAemPCT8i9wKsTGDH7HswDQYJKoZIhvcNAQEL
|
|
...
|
|
Rirz15HGVNTK8wzFd+nulPzwUo6dH2IU8KazmyRi7OGvpyrMlm15TRE2oyE=
|
|
\-\-\-\-\-END CERTIFICATE\-\-\-\-\-
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH smtpd_tls_cipherlist (default: empty)
|
|
Obsolete Postfix < 2.3 control for the Postfix SMTP server TLS
|
|
cipher list. It is easy to create interoperability problems by choosing
|
|
a non\-default cipher list. Do not use a non\-default TLS cipherlist for
|
|
MX hosts on the public Internet. Clients that begin the TLS handshake,
|
|
but are unable to agree on a common cipher, may not be able to send any
|
|
email to the SMTP server. Using a restricted cipher list may be more
|
|
appropriate for a dedicated MSA or an internal mailhub, where one can
|
|
exert some control over the TLS software and settings of the connecting
|
|
clients.
|
|
.PP
|
|
\fBNote:\fR do not use "" quotes around the parameter value.
|
|
.PP
|
|
This feature is available with Postfix version 2.2. It is not used with
|
|
Postfix 2.3 and later; use smtpd_tls_mandatory_ciphers instead.
|
|
.SH smtpd_tls_ciphers (default: medium)
|
|
The minimum TLS cipher grade that the Postfix SMTP server
|
|
will use with opportunistic TLS encryption. Cipher types listed in
|
|
smtpd_tls_exclude_ciphers are excluded from the base definition of
|
|
the selected cipher grade. The default value is "medium" for Postfix
|
|
releases after the middle of 2015, "export" for older releases.
|
|
.PP
|
|
When TLS is mandatory the cipher grade is chosen via the
|
|
smtpd_tls_mandatory_ciphers configuration parameter, see there for syntax
|
|
details.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later. With earlier Postfix
|
|
releases only the smtpd_tls_mandatory_ciphers parameter is implemented,
|
|
and opportunistic TLS always uses "export" or better (i.e. all) ciphers.
|
|
.SH smtpd_tls_dcert_file (default: empty)
|
|
File with the Postfix SMTP server DSA certificate in PEM format.
|
|
This file may also contain the Postfix SMTP server private DSA key.
|
|
The DSA algorithm is obsolete and should not be used.
|
|
.PP
|
|
See the discussion under smtpd_tls_cert_file for more details.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_dcert_file = /etc/postfix/server\-dsa.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_dh1024_param_file (default: empty)
|
|
File with DH parameters that the Postfix SMTP server should
|
|
use with non\-export EDH ciphers.
|
|
.PP
|
|
With Postfix >= 3.7, built with OpenSSL version is 3.0.0 or later, if the
|
|
parameter value is either empty or "\fBauto\fR", then the DH parameter
|
|
selection is delegated to the OpenSSL library, which selects appropriate
|
|
parameters based on the TLS handshake. This choice is likely to be the most
|
|
interoperable with SMTP clients using various TLS libraries, and custom local
|
|
parameters are no longer recommended when using Postfix >= 3.7 built against
|
|
OpenSSL 3.0.0.
|
|
.PP
|
|
The best\-practice choice of parameters uses a 2048\-bit prime. This is fine,
|
|
despite the historical "1024" in the parameter name. Do not be tempted to use
|
|
much larger values, performance degrades quickly, and you may also cease to
|
|
interoperate with some mainstream SMTP clients. As of Postfix 3.1, the
|
|
compiled\-in default prime is 2048\-bits, and it is not strictly necessary,
|
|
though perhaps somewhat beneficial to generate custom DH parameters.
|
|
.PP
|
|
Instead of using the exact same parameter sets as distributed
|
|
with other TLS packages, it is more secure to generate your own
|
|
set of parameters with something like the following commands:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
openssl dhparam \-out /etc/postfix/dh2048.pem 2048
|
|
openssl dhparam \-out /etc/postfix/dh1024.pem 1024
|
|
# As of Postfix 3.6, export\-grade 512\-bit DH parameters are no longer
|
|
# supported or needed.
|
|
openssl dhparam \-out /etc/postfix/dh512.pem 512
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
It is safe to share the same DH parameters between multiple
|
|
Postfix instances. If you prefer, you can generate separate
|
|
parameters for each instance.
|
|
.PP
|
|
If you want to take maximal advantage of ciphers that offer forward secrecy see
|
|
the Getting
|
|
started section of FORWARD_SECRECY_README. The
|
|
full document conveniently presents all information about Postfix
|
|
"perfect" forward secrecy support in one place: what forward secrecy
|
|
is, how to tweak settings, and what you can expect to see when
|
|
Postfix uses ciphers with forward secrecy.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_dh1024_param_file = /etc/postfix/dh2048.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_dh512_param_file (default: empty)
|
|
File with DH parameters that the Postfix SMTP server should
|
|
use with export\-grade EDH ciphers. The default SMTP server cipher
|
|
grade is "medium" with Postfix releases after the middle of 2015,
|
|
and as a result export\-grade cipher suites are by default not used.
|
|
.PP
|
|
With Postfix >= 3.6 export\-grade Diffie\-Hellman key exchange
|
|
is no longer supported, and this parameter is silently ignored.
|
|
.PP
|
|
See also the discussion under the smtpd_tls_dh1024_param_file
|
|
configuration parameter.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later,
|
|
but is ignored in Postfix 3.6 and later.
|
|
.SH smtpd_tls_dkey_file (default: $smtpd_tls_dcert_file)
|
|
File with the Postfix SMTP server DSA private key in PEM format.
|
|
This file may be combined with the Postfix SMTP server DSA certificate
|
|
file specified with $smtpd_tls_dcert_file. The DSA algorithm is obsolete
|
|
and should not be used.
|
|
.PP
|
|
The private key must be accessible without a pass\-phrase, i.e. it
|
|
must not be encrypted. File permissions should grant read\-only
|
|
access to the system superuser account ("root"), and no access
|
|
to anyone else.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_eccert_file (default: empty)
|
|
File with the Postfix SMTP server ECDSA certificate in PEM format.
|
|
This file may also contain the Postfix SMTP server private ECDSA key.
|
|
With Postfix >= 3.4 the preferred way to configure server keys and
|
|
certificates is via the "smtpd_tls_chain_files" parameter.
|
|
.PP
|
|
See the discussion under smtpd_tls_cert_file for more details.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_eccert_file = /etc/postfix/ecdsa\-scert.pem
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when Postfix is
|
|
compiled and linked with OpenSSL 1.0.0 or later.
|
|
.SH smtpd_tls_eckey_file (default: $smtpd_tls_eccert_file)
|
|
File with the Postfix SMTP server ECDSA private key in PEM format.
|
|
This file may be combined with the Postfix SMTP server ECDSA certificate
|
|
file specified with $smtpd_tls_eccert_file. With Postfix >= 3.4 the
|
|
preferred way to configure server keys and certificates is via the
|
|
"smtpd_tls_chain_files" parameter.
|
|
.PP
|
|
The private key must be accessible without a pass\-phrase, i.e. it
|
|
must not be encrypted. File permissions should grant read\-only
|
|
access to the system superuser account ("root"), and no access
|
|
to anyone else.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when Postfix is
|
|
compiled and linked with OpenSSL 1.0.0 or later.
|
|
.SH smtpd_tls_eecdh_grade (default: see "postconf \-d" output)
|
|
The Postfix SMTP server security grade for ephemeral elliptic\-curve
|
|
Diffie\-Hellman (EECDH) key exchange. As of Postfix 3.6, the value of
|
|
this parameter is always ignored, and Postfix behaves as though the
|
|
\fBauto\fR value (described below) was chosen.
|
|
.PP
|
|
This feature is not used as of Postfix 3.6. Do not specify.
|
|
.PP
|
|
The available choices are:
|
|
.IP "\fBauto\fR"
|
|
Use the most preferred curve that is
|
|
supported by both the client and the server. This setting requires
|
|
Postfix >= 3.2 compiled and linked with OpenSSL >= 1.0.2. This
|
|
is the default setting under the above conditions (and the only
|
|
setting used with Postfix >= 3.6).
|
|
.br
|
|
.IP "\fBnone\fR"
|
|
Don't use EECDH. Ciphers based on EECDH key
|
|
exchange will be disabled. This is the default in Postfix versions
|
|
2.6 and 2.7.
|
|
.br
|
|
.IP "\fBstrong\fR"
|
|
Use EECDH with approximately 128 bits of
|
|
security at a reasonable computational cost. This is the default in
|
|
Postfix versions 2.8-3.5.
|
|
.br
|
|
.IP "\fBultra\fR"
|
|
Use EECDH with approximately 192 bits of
|
|
security at computational cost that is approximately twice as high
|
|
as 128 bit strength ECC.
|
|
.br
|
|
.br
|
|
.PP
|
|
If you want to take maximal advantage of ciphers that offer forward secrecy see
|
|
the Getting
|
|
started section of FORWARD_SECRECY_README. The
|
|
full document conveniently presents all information about Postfix
|
|
"perfect" forward secrecy support in one place: what forward secrecy
|
|
is, how to tweak settings, and what you can expect to see when
|
|
Postfix uses ciphers with forward secrecy.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when it is
|
|
compiled and linked with OpenSSL 1.0.0 or later on platforms
|
|
where EC algorithms have not been disabled by the vendor.
|
|
.SH smtpd_tls_enable_rpk (default: no)
|
|
Request that remote SMTP clients send an RFC7250 raw public key
|
|
instead of an X.509 certificate, when asking for or requiring client
|
|
authentication. This feature is ignored when there is no raw public
|
|
key support in the local TLS implementation.
|
|
.PP
|
|
The Postfix SMTP server will log a warning when "smtpd_tls_enable_rpk
|
|
= yes", but the remote SMTP client sends a certificate, the
|
|
certificate's public key fingerprint does not match a check_ccert_access
|
|
table, while the certificate fingerprint does match a check_ccert_access
|
|
table. The remote SMTP client would lose access when it starts
|
|
sending a raw public key instead of a certificate, after its TLS
|
|
implementation is updated with raw public key support.
|
|
.PP
|
|
The Postfix SMTP server always sends a raw public key instead
|
|
of a certificate, if solicited by the remote SMTP client and the
|
|
local TLS implementation supports raw public keys. If the client
|
|
sends a server name indication with an SNI TLS extension, and
|
|
tls_server_sni_maps is configured, the server will extract a raw
|
|
public key from the indicated certificate.
|
|
.PP
|
|
Sample commands to compute certificate and public key SHA256 digests:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# SHA256 digest of the first certificate in "cert.pem"
|
|
$ openssl x509 \-in cert.pem \-outform DER | openssl dgst \-sha256 \-c
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# SHA256 digest of the SPKI of the first certificate in "cert.pem"
|
|
$ openssl x509 \-in cert.pem \-pubkey \-noout |
|
|
openssl pkey \-pubin \-outform DER | openssl dgst \-sha256 \-c
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
# SHA256 digest of the SPKI of the first private key in "pkey.pem"
|
|
$ openssl pkey \-in pkey.pem \-pubout \-outform DER |
|
|
openssl dgst \-sha256 \-c
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.9 and later.
|
|
.SH smtpd_tls_exclude_ciphers (default: empty)
|
|
List of ciphers or cipher types to exclude from the SMTP server
|
|
cipher list at all TLS security levels. Excluding valid ciphers
|
|
can create interoperability problems. DO NOT exclude ciphers unless it
|
|
is essential to do so. This is not an OpenSSL cipherlist; it is a simple
|
|
list separated by whitespace and/or commas. The elements are a single
|
|
cipher, or one or more "+" separated cipher properties, in which case
|
|
only ciphers matching \fBall\fR the properties are excluded.
|
|
.PP
|
|
Examples (some of these will cause problems):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
smtpd_tls_exclude_ciphers = aNULL
|
|
smtpd_tls_exclude_ciphers = MD5, DES
|
|
smtpd_tls_exclude_ciphers = DES+MD5
|
|
smtpd_tls_exclude_ciphers = AES256\-SHA, DES\-CBC3\-MD5
|
|
smtpd_tls_exclude_ciphers = kEDH+aRSA
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The first setting disables anonymous ciphers. The next setting
|
|
disables ciphers that use the MD5 digest algorithm or the (single) DES
|
|
encryption algorithm. The next setting disables ciphers that use MD5 and
|
|
DES together. The next setting disables the two ciphers "AES256\-SHA"
|
|
and "DES\-CBC3\-MD5". The last setting disables ciphers that use "EDH"
|
|
key exchange with RSA authentication.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_tls_fingerprint_digest (default: see "postconf \-d" output)
|
|
The message digest algorithm to construct remote SMTP client\-certificate
|
|
fingerprints or public key fingerprints (Postfix 2.9 and later) for
|
|
\fBcheck_ccert_access\fR and \fBpermit_tls_clientcerts\fR.
|
|
.PP
|
|
The default algorithm is \fBsha256\fR with Postfix >= 3.6
|
|
and the \fBcompatibility_level\fR set to 3.6 or higher. With Postfix
|
|
<= 3.5, the default algorithm is \fBmd5\fR.
|
|
.PP
|
|
The best\-practice algorithm is now \fBsha256\fR. Recent advances in hash
|
|
function cryptanalysis have led to md5 and sha1 being deprecated in favor of
|
|
sha256. However, as long as there are no known "second pre\-image" attacks
|
|
against the older algorithms, their use in this context, though not
|
|
recommended, is still likely safe.
|
|
.PP
|
|
While additional digest algorithms are often available with OpenSSL's
|
|
libcrypto, only those used by libssl in SSL cipher suites are available to
|
|
Postfix. You'll likely find support for md5, sha1, sha256 and sha512.
|
|
.PP
|
|
To find the fingerprint of a specific certificate file, with a
|
|
specific digest algorithm, run:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
$ openssl x509 \-noout \-fingerprint \-\fIdigest\fR \-in \fIcertfile\fR.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The text to the right of "=" sign is the desired fingerprint.
|
|
For example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
$ openssl x509 \-noout \-fingerprint \-sha256 \-in cert.pem
|
|
SHA256 Fingerprint=D4:6A:AB:19:24:...:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
To extract the public key fingerprint from an X.509 certificate,
|
|
you need to extract the public key from the certificate and compute
|
|
the appropriate digest of its DER (ASN.1) encoding. With OpenSSL
|
|
the "\-pubkey" option of the "x509" command extracts the public
|
|
key always in "PEM" format. We pipe the result to another OpenSSL
|
|
command that converts the key to DER and then to the "dgst" command
|
|
to compute the fingerprint.
|
|
.PP
|
|
Example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
$ openssl x509 \-in cert.pem \-noout \-pubkey |
|
|
openssl pkey \-pubin \-outform DER |
|
|
openssl dgst \-sha256 \-c
|
|
(stdin)= 64:3f:1f:f6:e5:1e:d4:2a:56:8b:fc:09:1a:61:98:b5:bc:7c:60:58
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
The Postfix SMTP server and client log the peer (leaf) certificate
|
|
fingerprint and public key fingerprint when the TLS loglevel is 2 or
|
|
higher.
|
|
.PP
|
|
Example: client\-certificate access table, with sha256 fingerprints:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
smtpd_tls_fingerprint_digest = sha256
|
|
smtpd_client_restrictions =
|
|
check_ccert_access hash:/etc/postfix/access,
|
|
reject
|
|
.fi
|
|
.ad
|
|
.nf
|
|
.na
|
|
/etc/postfix/access:
|
|
# Action folded to next line...
|
|
AF:88:7C:AD:51:95:6F:36:96:...:01:FB:2E:48:CD:AB:49:25:A2:3B
|
|
OK
|
|
85:16:78:FD:73:6E:CE:70:E0:...:5F:0D:3C:C8:6D:C4:2C:24:59:E1
|
|
permit_auth_destination
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH smtpd_tls_key_file (default: $smtpd_tls_cert_file)
|
|
File with the Postfix SMTP server RSA private key in PEM format.
|
|
This file may be combined with the Postfix SMTP server RSA certificate
|
|
file specified with $smtpd_tls_cert_file. With Postfix >= 3.4 the
|
|
preferred way to configure server keys and certificates is via the
|
|
"smtpd_tls_chain_files" parameter.
|
|
.PP
|
|
The private key must be accessible without a pass\-phrase, i.e. it
|
|
must not be encrypted. File permissions should grant read\-only
|
|
access to the system superuser account ("root"), and no access
|
|
to anyone else.
|
|
.SH smtpd_tls_loglevel (default: 0)
|
|
Enable additional Postfix SMTP server logging of TLS activity.
|
|
Each logging level also includes the information that is logged at
|
|
a lower logging level.
|
|
.IP ""
|
|
0 Disable logging of TLS activity.
|
|
.br
|
|
.IP ""
|
|
1 Log only a summary message on TLS handshake completion
|
|
- no logging of client certificate trust\-chain verification errors
|
|
if client certificate verification is not required. With Postfix 2.8 and
|
|
earlier, log the summary message, peer certificate summary information
|
|
and unconditionally log trust\-chain verification errors.
|
|
.br
|
|
.IP ""
|
|
2 Also enable verbose logging in the Postfix TLS
|
|
library, log session cache operations, and enable OpenSSL logging
|
|
of the progress of the SSL handshake.
|
|
.br
|
|
.IP ""
|
|
3 Also log hexadecimal and ASCII dump of TLS negotiation
|
|
process.
|
|
.br
|
|
.IP ""
|
|
4 Also log hexadecimal and ASCII dump of complete
|
|
transmission after STARTTLS.
|
|
.br
|
|
.br
|
|
.PP
|
|
Do not use "smtpd_tls_loglevel = 2" or higher except in case
|
|
of problems. Use of loglevel 4 is strongly discouraged.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_mandatory_ciphers (default: medium)
|
|
The minimum TLS cipher grade that the Postfix SMTP server will
|
|
use with mandatory TLS encryption. The default grade ("medium") is
|
|
sufficiently strong that any benefit from globally restricting TLS
|
|
sessions to a more stringent grade is likely negligible, especially
|
|
given the fact that many implementations still do not offer any stronger
|
|
("high" grade) ciphers, while those that do, will always use "high"
|
|
grade ciphers. So insisting on "high" grade ciphers is generally
|
|
counter\-productive. Allowing "export" or "low" ciphers is typically
|
|
not a good idea, as systems limited to just these are limited to
|
|
obsolete browsers. No known SMTP clients fail to support at least
|
|
one "medium" or "high" grade cipher.
|
|
.PP
|
|
The following cipher grades are supported:
|
|
.IP "\fBhigh\fR"
|
|
Enable only "HIGH" grade OpenSSL ciphers. The
|
|
underlying cipherlist is specified via the tls_high_cipherlist
|
|
configuration parameter, which you are strongly encouraged to
|
|
not change.
|
|
.br
|
|
.IP "\fBmedium\fR"
|
|
Enable "MEDIUM" grade or stronger OpenSSL ciphers. These use 128\-bit
|
|
or longer symmetric bulk\-encryption keys. This is the default minimum
|
|
strength for mandatory TLS encryption. The underlying cipherlist is
|
|
specified via the tls_medium_cipherlist configuration parameter, which
|
|
you are strongly encouraged not to change.
|
|
.br
|
|
.IP "\fBnull\fR"
|
|
Enable only the "NULL" OpenSSL ciphers, these provide authentication
|
|
without encryption. This setting is only appropriate in the rare
|
|
case that all clients are prepared to use NULL ciphers (not normally
|
|
enabled in TLS clients). The underlying cipherlist is specified via the
|
|
tls_null_cipherlist configuration parameter, which you are strongly
|
|
encouraged not to change.
|
|
.br
|
|
.IP "\fBlow\fR"
|
|
Enable "LOW" grade or stronger OpenSSL ciphers. In Postfix
|
|
>= 3.8 this cipher grade is always identical to "medium". Recent
|
|
versions of OpenSSL do not support any "LOW" grade ciphers. In
|
|
earlier Postfix releases the underlying cipherlist was specified
|
|
via the tls_low_cipherlist configuration parameter, which you are
|
|
strongly encouraged not to change. This obsolete cipher grade
|
|
SHOULD NOT be used.
|
|
.br
|
|
.IP "\fBexport\fR"
|
|
Enable "EXPORT" grade or stronger OpenSSL ciphers. In Postfix
|
|
>= 3.8 this cipher grade is always identical to "medium". Recent
|
|
versions of OpenSSL do not support any "EXPORT" grade ciphers. In
|
|
earlier Postfix releases the underlying cipherlist was specified
|
|
via the tls_export_cipherlist configuration parameter, which you are
|
|
strongly encouraged not to change. This obsolete cipher grade
|
|
SHOULD NOT be used.
|
|
.br
|
|
.br
|
|
.PP
|
|
Cipher types listed in
|
|
smtpd_tls_mandatory_exclude_ciphers or smtpd_tls_exclude_ciphers are
|
|
excluded from the base definition of the selected cipher grade. See
|
|
smtpd_tls_ciphers for cipher controls that apply to opportunistic
|
|
TLS.
|
|
.PP
|
|
The underlying cipherlists for grades other than "null" include
|
|
anonymous ciphers, but these are automatically filtered out if the
|
|
server is configured to ask for remote SMTP client certificates. You are very
|
|
unlikely to need to take any steps to exclude anonymous ciphers, they
|
|
are excluded automatically as required. If you must exclude anonymous
|
|
ciphers even when Postfix does not need or use peer certificates, set
|
|
"smtpd_tls_exclude_ciphers = aNULL". To exclude anonymous ciphers only
|
|
when TLS is enforced, set "smtpd_tls_mandatory_exclude_ciphers = aNULL".
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_tls_mandatory_exclude_ciphers (default: empty)
|
|
Additional list of ciphers or cipher types to exclude from the
|
|
Postfix SMTP server cipher list at mandatory TLS security levels.
|
|
This list
|
|
works in addition to the exclusions listed with smtpd_tls_exclude_ciphers
|
|
(see there for syntax details).
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_tls_mandatory_protocols (default: see "postconf \-d" output)
|
|
TLS protocols accepted by the Postfix SMTP server with mandatory TLS
|
|
encryption. If the list is empty, the server supports all available TLS
|
|
protocol versions. A non\-empty value is a list of protocol names to
|
|
include or exclude, separated by whitespace, commas or colons.
|
|
.PP
|
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
|
the lowest supported TLS protocol version (see below). Older releases
|
|
use the "!" exclusion syntax, also described below.
|
|
.PP
|
|
As of Postfix 3.6, the preferred way to limit the range of
|
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
|
version and/or the highest acceptable TLS protocol version. To set the
|
|
lower bound include an element of the form: ">=\fIversion\fR" where
|
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
|
or a hexadecimal number corresponding to the desired TLS protocol
|
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
|
the ">=" or "<=" symbols and the protocol name or number.
|
|
.PP
|
|
Hexadecimal protocol numbers make it possible to specify protocol
|
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
|
Leading "0" or "0x" prefixes are supported, but not required.
|
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
|
versions should only be used when Postfix is linked with some future
|
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
|
yet support a symbolic name for that protocol version.
|
|
.PP
|
|
Hexadecimal example (Postfix >= 3.6):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# Allow only TLS 1.2 through (hypothetical) TLS 1.4, once supported
|
|
# in some future version of OpenSSL (presently a warning is logged).
|
|
smtpd_tls_mandatory_protocols = >=TLSv1.2, <=0305
|
|
# Allow only TLS 1.2 and up:
|
|
smtpd_tls_mandatory_protocols = >=0x0303
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
|
version, and the protocol range is configured via protocol exclusions.
|
|
To require at least TLS 1.0, set "smtpd_tls_mandatory_protocols =
|
|
!SSLv2, !SSLv3". Listing the protocols to include, rather than
|
|
protocols to exclude, is supported, but not recommended. The exclusion
|
|
form more accurately matches the underlying OpenSSL interface.
|
|
.PP
|
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Preferred syntax with Postfix >= 3.6:
|
|
smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3
|
|
# Legacy syntax:
|
|
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_tls_protocols (default: see 'postconf \-d' output)
|
|
TLS protocols accepted by the Postfix SMTP server with opportunistic
|
|
TLS encryption. If the list is empty, the server supports all available
|
|
TLS protocol versions. A non\-empty value is a list of protocol names to
|
|
include or exclude, separated by whitespace, commas or colons.
|
|
.PP
|
|
The valid protocol names (see \fBSSL_get_version\fR(3)) are "SSLv2",
|
|
"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2" and "TLSv1.3". Starting with
|
|
Postfix 3.6, the default value is ">=TLSv1", which sets TLS 1.0 as
|
|
the lowest supported TLS protocol version (see below). Older releases
|
|
use the "!" exclusion syntax, also described below.
|
|
.PP
|
|
As of Postfix 3.6, the preferred way to limit the range of
|
|
acceptable protocols is to set the lowest acceptable TLS protocol
|
|
version and/or the highest acceptable TLS protocol version. To set the
|
|
lower bound include an element of the form: ">=\fIversion\fR" where
|
|
\fIversion\fR is a either one of the TLS protocol names listed above,
|
|
or a hexadecimal number corresponding to the desired TLS protocol
|
|
version (0301 for TLS 1.0, 0302 for TLS 1.1, etc.). For the upper
|
|
bound, use "<=\fIversion\fR". There must be no whitespace between
|
|
the ">=" or "<=" symbols and the protocol name or number.
|
|
.PP
|
|
Hexadecimal protocol numbers make it possible to specify protocol
|
|
bounds for TLS versions that are known to OpenSSL, but might not be
|
|
known to Postfix. They cannot be used with the legacy exclusion syntax.
|
|
Leading "0" or "0x" prefixes are supported, but not required.
|
|
Therefore, "301", "0301", "0x301" and "0x0301" are all equivalent to
|
|
"TLSv1". Hexadecimal versions unknown to OpenSSL will fail to set the
|
|
upper or lower bound, and a warning will be logged. Hexadecimal
|
|
versions should only be used when Postfix is linked with some future
|
|
version of OpenSSL that supports TLS 1.4 or later, but Postfix does not
|
|
yet support a symbolic name for that protocol version.
|
|
.PP
|
|
Hexadecimal example (Postfix >= 3.6):
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# Allow only TLS 1.0 through (hypothetical) TLS 1.4, once supported
|
|
# in some future version of OpenSSL (presently a warning is logged).
|
|
smtpd_tls_protocols = >=TLSv1, <=0305
|
|
# Allow only TLS 1.0 and up:
|
|
smtpd_tls_protocols = >=0x0301
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
With Postfix < 3.6 there is no support for a minimum or maximum
|
|
version, and the protocol range is configured via protocol exclusions.
|
|
To require at least TLS 1.0, set "smtpd_tls_protocols = !SSLv2, !SSLv3".
|
|
Listing the protocols to include, rather than protocols to exclude, is
|
|
supported, but not recommended. The exclusion form more accurately
|
|
matches the underlying OpenSSL interface.
|
|
.PP
|
|
Support for "TLSv1.3" was introduced in OpenSSL 1.1.1. Disabling
|
|
this protocol via "!TLSv1.3" is supported since Postfix 3.4 (or patch
|
|
releases >= 3.0.14, 3.1.10, 3.2.7 and 3.3.2).
|
|
.PP
|
|
Example:
|
|
.nf
|
|
.na
|
|
# Preferred syntax with Postfix >= 3.6:
|
|
smtpd_tls_protocols = >=TLSv1, <=TLSv1.3
|
|
# Legacy syntax:
|
|
smtpd_tls_protocols = !SSLv2, !SSLv3
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH smtpd_tls_received_header (default: no)
|
|
Request that the Postfix SMTP server produces Received: message
|
|
headers that include information about the protocol and cipher used,
|
|
as well as the remote SMTP client CommonName and client certificate issuer
|
|
CommonName. This is disabled by default, as the information may
|
|
be modified in transit through other mail servers. Only information
|
|
that was recorded by the final destination can be trusted.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_req_ccert (default: no)
|
|
With mandatory TLS encryption, require a trusted remote SMTP client
|
|
certificate in order to allow TLS connections to proceed. This
|
|
option implies "smtpd_tls_ask_ccert = yes".
|
|
.PP
|
|
When TLS encryption is optional, this setting is ignored with
|
|
a warning written to the mail log.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_security_level (default: empty)
|
|
The SMTP TLS security level for the Postfix SMTP server; when
|
|
a non\-empty value is specified, this overrides the obsolete parameters
|
|
smtpd_use_tls and smtpd_enforce_tls. This parameter is ignored with
|
|
"smtpd_tls_wrappermode = yes".
|
|
.PP
|
|
Specify one of the following security levels:
|
|
.IP "\fBnone\fR"
|
|
TLS will not be used.
|
|
.br
|
|
.IP "\fBmay\fR"
|
|
Opportunistic TLS: announce STARTTLS support
|
|
to remote SMTP clients, but do not require that clients use TLS encryption.
|
|
.br
|
|
.IP "\fBencrypt\fR"
|
|
Mandatory TLS encryption: announce
|
|
STARTTLS support to remote SMTP clients, and reject all plaintext
|
|
commands except HELO, EHLO, XCLIENT, STARTTLS, NOOP, QUIT, and (Postfix
|
|
>= 3.9) HELP. According to RFC 2487 this MUST NOT be applied in case
|
|
of a publicly\-referenced SMTP server. Instead, this should be used
|
|
on dedicated servers, for example submission (port 587).
|
|
.br
|
|
.br
|
|
.PP
|
|
Note 1: the "fingerprint", "verify" and "secure" levels are not
|
|
supported here.
|
|
The Postfix SMTP server logs a warning and uses "encrypt" instead.
|
|
To verify remote SMTP client certificates, see TLS_README for a discussion
|
|
of the smtpd_tls_ask_ccert, smtpd_tls_req_ccert, and permit_tls_clientcerts
|
|
features.
|
|
.PP
|
|
Note 2: The parameter setting "smtpd_tls_security_level =
|
|
encrypt" implies "smtpd_tls_auth_only = yes".
|
|
.PP
|
|
Note 3: when invoked via "sendmail \-bs", Postfix will never
|
|
offer STARTTLS due to insufficient privileges to access the server
|
|
private key. This is intended behavior.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH smtpd_tls_session_cache_database (default: empty)
|
|
Name of the file containing the optional Postfix SMTP server
|
|
TLS session cache. Specify a database type that supports enumeration,
|
|
such as \fBbtree\fR or \fBsdbm\fR; there is no need to support
|
|
concurrent access. The file is created if it does not exist. The \fBsmtpd\fR(8)
|
|
daemon does not use this parameter directly, rather the cache is
|
|
implemented indirectly in the \fBtlsmgr\fR(8) daemon. This means that
|
|
per\-smtpd\-instance master.cf overrides of this parameter are not
|
|
effective. Note that each of the cache databases supported by \fBtlsmgr\fR(8)
|
|
daemon: $smtpd_tls_session_cache_database, $smtp_tls_session_cache_database
|
|
(and with Postfix 2.3 and later $lmtp_tls_session_cache_database), needs to be
|
|
stored separately. It is not at this time possible to store multiple
|
|
caches in a single database.
|
|
.PP
|
|
Note: \fBdbm\fR databases are not suitable. TLS
|
|
session objects are too large.
|
|
.PP
|
|
As of version 2.5, Postfix no longer uses root privileges when
|
|
opening this file. The file should now be stored under the Postfix\-owned
|
|
data_directory. As a migration aid, an attempt to open the file
|
|
under a non\-Postfix directory is redirected to the Postfix\-owned
|
|
data_directory, and a warning is logged.
|
|
.PP
|
|
As of Postfix 2.11 the preferred mechanism for session resumption
|
|
is RFC 5077 TLS session tickets, which don't require server\-side
|
|
storage. Consequently, for Postfix >= 2.11 this parameter should
|
|
generally be left empty. TLS session tickets require an OpenSSL
|
|
library (at least version 0.9.8h) that provides full support for
|
|
this TLS extension. See also smtpd_tls_session_cache_timeout.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_tls_session_cache_timeout (default: 3600s)
|
|
The expiration time of Postfix SMTP server TLS session cache
|
|
information. A cache cleanup is performed periodically
|
|
every $smtpd_tls_session_cache_timeout seconds. As with
|
|
$smtpd_tls_session_cache_database, this parameter is implemented in the
|
|
\fBtlsmgr\fR(8) daemon and therefore per\-smtpd\-instance master.cf overrides
|
|
are not possible.
|
|
.PP
|
|
As of Postfix 2.11 this setting cannot exceed 100 days. If set
|
|
<= 0, session caching is disabled, not just via the database, but
|
|
also via RFC 5077 TLS session tickets, which don't require server\-side
|
|
storage. If set to a positive value less than 2 minutes, the minimum
|
|
value of 2 minutes is used instead. TLS session tickets require
|
|
an OpenSSL library (at least version 0.9.8h) that provides full
|
|
support for this TLS extension.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later, and updated
|
|
for TLS session ticket support in Postfix 2.11.
|
|
.SH smtpd_tls_wrappermode (default: no)
|
|
Run the Postfix SMTP server in TLS "wrapper" mode,
|
|
instead of using the STARTTLS command.
|
|
.PP
|
|
If you want to support this service, enable a special port in
|
|
master.cf, and specify "\-o smtpd_tls_wrappermode=yes" on the SMTP
|
|
server's command line. Port 465 (submissions, formerly called smtps)
|
|
is reserved for this purpose.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH smtpd_upstream_proxy_protocol (default: empty)
|
|
The name of the proxy protocol used by an optional before\-smtpd
|
|
proxy agent. When a proxy agent is used, this protocol conveys local
|
|
and remote address and port information. Specify
|
|
"smtpd_upstream_proxy_protocol = haproxy" to enable the haproxy
|
|
protocol; version 2 is supported with Postfix 3.5 and later.
|
|
.PP
|
|
NOTE: To use the nginx proxy with \fBsmtpd\fR(8), enable the XCLIENT
|
|
protocol with smtpd_authorized_xclient_hosts. This supports SASL
|
|
authentication in the proxy agent (Postfix 2.9 and later).
|
|
.PP
|
|
This feature is available in Postfix 2.10 and later.
|
|
.SH smtpd_upstream_proxy_timeout (default: 5s)
|
|
The time limit for the proxy protocol specified with the
|
|
smtpd_upstream_proxy_protocol parameter.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.10 and later.
|
|
.SH smtpd_use_tls (default: no)
|
|
Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
|
|
but do not require that clients use TLS encryption.
|
|
.PP
|
|
Note: when invoked via "\fBsendmail \-bs\fR", Postfix will never offer
|
|
STARTTLS due to insufficient privileges to access the server private
|
|
key. This is intended behavior.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
smtpd_tls_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later. With
|
|
Postfix 2.3 and later use smtpd_tls_security_level instead.
|
|
.SH smtputf8_autodetect_classes (default: sendmail, verify)
|
|
Detect that a message requires SMTPUTF8 support for the specified
|
|
mail origin classes. This is a workaround to avoid chicken\-and\-egg
|
|
problems during the initial SMTPUTF8 roll\-out in environments with
|
|
pre\-existing mail flows that contain UTF8. Those mail flows should
|
|
not break because Postfix suddenly refuses to deliver such mail
|
|
to down\-stream MTAs that don't announce SMTPUTF8 support.
|
|
.PP
|
|
The problem is that Postfix cannot rely solely on the sender's
|
|
declaration that a message requires SMTPUTF8 support, because UTF8
|
|
may be introduced during local processing (for example, the client
|
|
hostname in Postfix's Received: header, adding @$myorigin or
|
|
\&.$mydomain to an incomplete address, address rewriting, alias
|
|
expansion, automatic BCC recipients, local forwarding, and changes
|
|
made by header checks or Milter applications).
|
|
.PP
|
|
For now, the default is to enable "SMTPUTF8 required" autodetection
|
|
only for Postfix sendmail command\-line submissions and address
|
|
verification probes. This may change once SMTPUTF8 support achieves
|
|
world domination. However, sites that add UTF8 content via local
|
|
processing (see above) should autodetect the need for SMTPUTF8
|
|
support for all email.
|
|
.PP
|
|
Specify one or more of the following:
|
|
.IP "\fB sendmail \fR"
|
|
Submission with the Postfix
|
|
\fBsendmail\fR(1) command.
|
|
.br
|
|
.IP "\fB smtpd \fR"
|
|
Mail received with the \fBsmtpd\fR(8)
|
|
daemon.
|
|
.br
|
|
.IP "\fB qmqpd \fR"
|
|
Mail received with the \fBqmqpd\fR(8)
|
|
daemon.
|
|
.br
|
|
.IP "\fB forward \fR"
|
|
Local forwarding or aliasing. When
|
|
a message is received with "SMTPUTF8 required", then the forwarded
|
|
(aliased) message always has "SMTPUTF8 required".
|
|
.br
|
|
.IP "\fB bounce \fR"
|
|
Submission by the \fBbounce\fR(8) daemon.
|
|
When a message is received with "SMTPUTF8 required", then the
|
|
delivery status notification always has "SMTPUTF8 required".
|
|
.br
|
|
.IP "\fB notify \fR"
|
|
Postmaster notification from the
|
|
\fBsmtp\fR(8) or \fBsmtpd\fR(8) daemon.
|
|
.br
|
|
.IP "\fB verify \fR"
|
|
Address verification probe from the
|
|
\fBverify\fR(8) daemon.
|
|
.br
|
|
.IP "\fB all \fR"
|
|
Enable SMTPUTF8 autodetection for all
|
|
mail.
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH smtputf8_enable (default: yes)
|
|
Enable preliminary SMTPUTF8 support for the protocols described
|
|
in RFC 6531, RFC 6532, and RFC 6533. This requires that Postfix is
|
|
built to support these protocols.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH socketmap_max_reply_size (default: 100000)
|
|
The maximum allowed reply size from a socketmap server, not
|
|
including the netstring encapsulation.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH soft_bounce (default: no)
|
|
Safety net to keep mail queued that would otherwise be returned to
|
|
the sender. This parameter disables locally\-generated bounces,
|
|
changes the handling of negative responses from remote servers,
|
|
content filters or plugins,
|
|
and prevents the Postfix SMTP server from rejecting mail permanently
|
|
by changing 5xx reply codes into 4xx. However, soft_bounce is no
|
|
cure for address rewriting mistakes or mail routing mistakes.
|
|
.PP
|
|
Note: "soft_bounce = yes" is in some cases implemented by modifying
|
|
server responses. Therefore, the response that Postfix logs may
|
|
differ from the response that Postfix actually sends or receives.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
soft_bounce = yes
|
|
.fi
|
|
.ad
|
|
.SH stale_lock_time (default: 500s)
|
|
The time after which a stale exclusive mailbox lockfile is removed.
|
|
This is used for delivery to file or mailbox.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH stress (default: empty)
|
|
This feature is documented in the STRESS_README document.
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH strict_7bit_headers (default: no)
|
|
Reject mail with 8\-bit text in message headers. This blocks mail
|
|
from poorly written applications.
|
|
.PP
|
|
This feature should not be enabled on a general purpose mail server,
|
|
because it is likely to reject legitimate email.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH strict_8bitmime (default: no)
|
|
Enable both strict_7bit_headers and strict_8bitmime_body.
|
|
.PP
|
|
This feature should not be enabled on a general purpose mail server,
|
|
because it is likely to reject legitimate email.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH strict_8bitmime_body (default: no)
|
|
Reject 8\-bit message body text without 8\-bit MIME content encoding
|
|
information. This blocks mail from poorly written applications.
|
|
.PP
|
|
Unfortunately, this also rejects majordomo approval requests when
|
|
the included request contains valid 8\-bit MIME mail, and it rejects
|
|
bounces from mailers that do not MIME encapsulate 8\-bit content
|
|
(for example, bounces from qmail or from old versions of Postfix).
|
|
.PP
|
|
This feature should not be enabled on a general purpose mail server,
|
|
because it is likely to reject legitimate email.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH strict_mailbox_ownership (default: yes)
|
|
Defer delivery when a mailbox file is not owned by its recipient.
|
|
The default setting is not backwards compatible.
|
|
.PP
|
|
This feature is available in Postfix 2.5.3 and later.
|
|
.SH strict_mime_encoding_domain (default: no)
|
|
Reject mail with invalid Content\-Transfer\-Encoding: information
|
|
for the message/* or multipart/* MIME content types. This blocks
|
|
mail from poorly written software.
|
|
.PP
|
|
This feature should not be enabled on a general purpose mail server,
|
|
because it will reject mail after a single violation.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH strict_rfc821_envelopes (default: no)
|
|
Require that addresses received in SMTP MAIL FROM and RCPT TO
|
|
commands are enclosed with <>, and that those addresses do
|
|
not contain RFC 822 style comments or phrases. This stops mail
|
|
from poorly written software.
|
|
.PP
|
|
By default, the Postfix SMTP server accepts RFC 822 syntax in MAIL
|
|
FROM and RCPT TO addresses.
|
|
.SH strict_smtputf8 (default: no)
|
|
Enable stricter enforcement of the SMTPUTF8 protocol. The Postfix
|
|
SMTP server accepts UTF8 sender or recipient addresses only when
|
|
the client requests an SMTPUTF8 mail transaction.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH sun_mailtool_compatibility (default: no)
|
|
Obsolete SUN mailtool compatibility feature. Instead, use
|
|
"mailbox_delivery_lock = dotlock".
|
|
.SH swap_bangpath (default: yes)
|
|
Enable the rewriting of "site!user" into "user@site". This is
|
|
necessary if your machine is connected to UUCP networks. It is
|
|
enabled by default.
|
|
.PP
|
|
Note: with Postfix version 2.2, message header address rewriting
|
|
happens only when one of the following conditions is true:
|
|
.IP \(bu
|
|
The message is received with the Postfix \fBsendmail\fR(1) command,
|
|
.IP \(bu
|
|
The message is received from a network client that matches
|
|
$local_header_rewrite_clients,
|
|
.IP \(bu
|
|
The message is received from the network, and the
|
|
remote_header_rewrite_domain parameter specifies a non\-empty value.
|
|
.br
|
|
.PP
|
|
To get the behavior before Postfix version 2.2, specify
|
|
"local_header_rewrite_clients = static:all".
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
swap_bangpath = no
|
|
.fi
|
|
.ad
|
|
.SH syslog_facility (default: mail)
|
|
The syslog facility of Postfix logging. Specify a facility as
|
|
defined in syslog.\fBconf\fR(5). The default facility is "mail".
|
|
.PP
|
|
Warning: a non\-default syslog_facility setting takes effect only
|
|
after a Postfix process has completed initialization. Errors during
|
|
process initialization will be logged with the default facility.
|
|
Examples are errors while parsing the command line arguments, and
|
|
errors while accessing the Postfix main.cf configuration file.
|
|
.SH syslog_name (default: see "postconf \-d" output)
|
|
A prefix that is prepended to the process name in syslog
|
|
records, so that, for example, "smtpd" becomes "prefix/smtpd".
|
|
.PP
|
|
Warning: a non\-default syslog_name setting takes effect only after
|
|
a Postfix process has completed initialization. Errors during
|
|
process initialization will be logged with the default name. Examples
|
|
are errors while parsing the command line arguments, and errors
|
|
while accessing the Postfix main.cf configuration file.
|
|
.SH tcp_windowsize (default: 0)
|
|
An optional workaround for routers that break TCP window scaling.
|
|
Specify a value > 0 and < 65536 to enable this feature. With
|
|
Postfix TCP servers (\fBsmtpd\fR(8), \fBqmqpd\fR(8)), this feature is implemented
|
|
by the Postfix \fBmaster\fR(8) daemon.
|
|
.PP
|
|
To change this parameter without stopping Postfix, you need to
|
|
first terminate all Postfix TCP servers:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# postconf \-e master_service_disable=inet
|
|
# postfix reload
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
This immediately terminates all processes that accept network
|
|
connections. Next, you enable Postfix TCP servers with the updated
|
|
tcp_windowsize setting:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# postconf \-e tcp_windowsize=65535 master_service_disable=
|
|
# postfix reload
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
If you skip these steps with a running Postfix system, then the
|
|
tcp_windowsize change will work only for Postfix TCP clients (\fBsmtp\fR(8),
|
|
\fBlmtp\fR(8)).
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH tls_append_default_CA (default: no)
|
|
Append the system\-supplied default Certification Authority
|
|
certificates to the ones specified with *_tls_CApath or *_tls_CAfile.
|
|
The default is "no"; this prevents Postfix from trusting third\-party
|
|
certificates and giving them relay permission with
|
|
permit_tls_all_clientcerts.
|
|
.PP
|
|
This feature is available in Postfix 2.4.15, 2.5.11, 2.6.8,
|
|
2.7.2 and later versions. Specify "tls_append_default_CA = yes" for
|
|
backwards compatibility, to avoid breaking certificate verification
|
|
with sites that don't use permit_tls_all_clientcerts.
|
|
.SH tls_config_file (default: default)
|
|
Optional configuration file with baseline OpenSSL settings.
|
|
OpenSSL loads any SSL settings found in the configuration file for
|
|
the selected application name (see tls_config_name) or else the
|
|
built\-in application name "openssl_conf" when no application name is
|
|
specified, or no corresponding configuration section is present.
|
|
.PP
|
|
With OpenSSL releases 1.1.1 and 1.1.1a, applications (including
|
|
Postfix) can neither specify an alternative configuration file, nor
|
|
avoid loading the default configuration file.
|
|
.PP
|
|
With OpenSSL 1.1.1b or later, this parameter may be set to one of:
|
|
.IP "\fBdefault\fR (default)"
|
|
Load the system\-wide
|
|
"openssl.cnf" configuration file.
|
|
.br
|
|
.IP "\fBnone\fR (recommended, OpenSSL 1.1.1b or later only)"
|
|
This setting disables loading of the system\-wide "openssl.cnf"
|
|
file.
|
|
.br
|
|
.IP "\fB\fI/absolute\-path\fR\fR (OpenSSL 1.1.1b or later only)"
|
|
Load the configuration file specified by \fI/absolute\-path\fR.
|
|
With this setting it is an error for the file to not contain any
|
|
settings for the selected tls_config_name. There is no fallback to
|
|
the default "openssl_conf" name.
|
|
.br
|
|
.br
|
|
.PP
|
|
Failures in processing of the built\-in default configuration file,
|
|
are silently ignored. Any errors in loading a non\-default configuration
|
|
file are detected by Postfix, and cause TLS support to be disabled.
|
|
.PP
|
|
The OpenSSL configuration file format is not documented here,
|
|
beyond giving two examples.
|
|
.PP
|
|
Example: Default settings for all applications.
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# The name 'openssl_conf' is the default application name
|
|
# The section name to the right of the '=' sign is arbitrary,
|
|
# any name will do, so long as it refers to the desired section.
|
|
#
|
|
# The name 'system_default' selects the settings applied internally
|
|
# by the SSL library as part of SSL object creation. Applications
|
|
# can then apply any additional settings of their choice.
|
|
#
|
|
# In this example, TLS versions prior to 1.2 are disabled by default.
|
|
#
|
|
openssl_conf = system_wide_settings
|
|
[system_wide_settings]
|
|
ssl_conf = ssl_library_settings
|
|
[ssl_library_settings]
|
|
system_default = initial_ssl_settings
|
|
[initial_ssl_settings]
|
|
MinProtocol = TLSv1.2
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Example: Custom settings for an application named "postfix".
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
# The mapping from an application name to the corresponding configuration
|
|
# section must appear near the top of the file, (in what is sometimes called
|
|
# the "default section") prior to the start of any explicitly named
|
|
# "[sections]". The named sections can appear in any order and don't nest.
|
|
#
|
|
postfix = postfix_settings
|
|
[postfix_settings]
|
|
ssl_conf = postfix_ssl_settings
|
|
[postfix_ssl_settings]
|
|
system_default = baseline_postfix_settings
|
|
[baseline_postfix_settings]
|
|
MinProtocol = TLSv1
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Example: Custom OpenSSL group settings.
|
|
.PP
|
|
.nf
|
|
.na
|
|
main.cf:
|
|
tls_config_file = ${config_directory}/openssl.cnf
|
|
tls_config_name = postfix
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
openssl.cnf:
|
|
postfix = postfix_settings
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
[postfix_settings]
|
|
ssl_conf = postfix_ssl_settings
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
[postfix_ssl_settings]
|
|
system_default = baseline_postfix_settings
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
[baseline_postfix_settings]
|
|
# New OpenSSL 3.5 syntax, for older releases consider
|
|
# the Postfix default:
|
|
#
|
|
# Groups = X25519:X448:prime256v1:secp384r1:secp521r1:ffdhe2048:ffdhe3072
|
|
#
|
|
Groups = *X25519MLKEM768 / *X25519:X448 / P\-256:P\-384
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Caution: It is typically best to just use the default OpenSSL
|
|
group settings, by setting "tls_config_file = none". Overly strict
|
|
system\-wide TLS settings will conflict with Postfix's opportunistic
|
|
TLS, where being less restrictive is better than downgrading to
|
|
cleartext SMTP.
|
|
.PP
|
|
This feature is available in Postfix >= 3.9, 3.8.1, 3.7.6,
|
|
3.6.10, and 3.5.20.
|
|
.SH tls_config_name (default: empty)
|
|
The application name passed by Postfix to OpenSSL library
|
|
initialization functions. This name is used to select the desired
|
|
configuration "section" in the OpenSSL configuration file specified
|
|
via the tls_config_file parameter. When empty, or when the
|
|
selected name is not present in the configuration file, the default
|
|
application name ("openssl_conf") is used as a fallback.
|
|
.PP
|
|
This feature is available in Postfix >= 3.9.
|
|
.SH tls_daemon_random_bytes (default: 32)
|
|
The number of pseudo\-random bytes that an \fBsmtp\fR(8) or \fBsmtpd\fR(8)
|
|
process requests from the \fBtlsmgr\fR(8) server in order to seed its
|
|
internal pseudo random number generator (PRNG). The default of 32
|
|
bytes (equivalent to 256 bits) is sufficient to generate a 128bit
|
|
(or 168bit) session key.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH tls_dane_digest_agility (default: on)
|
|
Configure RFC7671 DANE TLSA digest algorithm agility.
|
|
Do not change this setting from its default value.
|
|
.PP
|
|
See Section 8 of RFC7671 for correct key rotation procedures.
|
|
.PP
|
|
This feature is available in Postfix 2.11 through 3.1. Postfix
|
|
3.2 and later ignore this configuration parameter and behave as
|
|
though it were set to "on".
|
|
.SH tls_dane_digests (default: sha512 sha256)
|
|
DANE TLSA (RFC 6698, RFC 7671, RFC 7672) resource\-record "matching
|
|
type" digest algorithms in descending preference order. All the
|
|
specified algorithms must be supported by the underlying OpenSSL
|
|
library, otherwise the Postfix SMTP client will not support DANE
|
|
TLSA security.
|
|
.PP
|
|
Specify a list of digest names separated by commas and/or
|
|
whitespace. Each digest name may be followed by an optional
|
|
"=<number>" suffix. For example, "sha512" may instead be specified
|
|
as "sha512=2" and "sha256" may instead be specified as "sha256=1".
|
|
The optional number must match the <a
|
|
href="https://www.iana.org/assignments/dane\-parameters/dane\-parameters.xhtml#matching\-types"
|
|
>IANA assigned TLSA matching type number the algorithm in question.
|
|
Postfix will check this constraint for the algorithms it knows about.
|
|
Additional matching type algorithms registered with IANA can be added
|
|
with explicit numbers provided they are supported by OpenSSL.
|
|
.PP
|
|
Invalid list elements are logged with a warning and disable DANE
|
|
support. TLSA RRs that specify digests not included in the list are
|
|
ignored with a warning.
|
|
.PP
|
|
Note: It is unwise to omit sha256 from the digest list. This
|
|
digest algorithm is the only mandatory to implement digest algorithm
|
|
in RFC 6698, and many servers are expected to publish TLSA records
|
|
with just sha256 digests. Unless one of the standard digests is
|
|
seriously compromised and servers have had ample time to update their
|
|
TLSA records you should not omit any standard digests, just arrange
|
|
them in order from strongest to weakest.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH tls_dane_trust_anchor_digest_enable (default: yes)
|
|
Enable support for RFC 6698 (DANE TLSA) DNS records that contain
|
|
digests of trust\-anchors with certificate usage "2". Do not change
|
|
this setting from its default value.
|
|
.PP
|
|
This feature is available in Postfix 2.11 through 3.1. It has
|
|
been withdrawn in Postfix 3.2, as trust\-anchor TLSA records are now
|
|
widely used and have proved sufficiently reliable. Postfix 3.2 and
|
|
later ignore this configuration parameter and behaves as though it
|
|
were set to "yes".
|
|
.SH tls_disable_workarounds (default: see "postconf \-d" output)
|
|
List or bit\-mask of OpenSSL bug work\-arounds to disable.
|
|
.PP
|
|
The OpenSSL toolkit includes a set of work\-arounds for buggy SSL/TLS
|
|
implementations. Applications, such as Postfix, that want to maximize
|
|
interoperability ask the OpenSSL library to enable the full set of
|
|
recommended work\-arounds.
|
|
.PP
|
|
From time to time, it is discovered that a work\-around creates a
|
|
security issue, and should no longer be used. If upgrading OpenSSL
|
|
to a fixed version is not an option or an upgrade is not available
|
|
in a timely manner, or in closed environments where no buggy clients
|
|
or servers exist, it may be appropriate to disable some or all of the
|
|
OpenSSL interoperability work\-arounds. This parameter specifies which
|
|
bug work\-arounds to disable.
|
|
.PP
|
|
If the value of the parameter is a hexadecimal long integer starting
|
|
with "0x", the bug work\-arounds corresponding to the bits specified in
|
|
its value are removed from the \fBSSL_OP_ALL\fR work\-around bit\-mask
|
|
(see openssl/ssl.h and \fBSSL_CTX_set_options\fR(3)). You can specify more
|
|
bits than are present in SSL_OP_ALL, excess bits are ignored. Specifying
|
|
0xFFFFFFFF disables all bug\-workarounds on a 32\-bit system. This should
|
|
also be sufficient on 64\-bit systems, until OpenSSL abandons support
|
|
for 32\-bit systems and starts using the high 32 bits of a 64\-bit
|
|
bug\-workaround mask.
|
|
.PP
|
|
Otherwise, the parameter is a white\-space or comma separated list
|
|
of specific named bug work\-arounds chosen from the list below. It
|
|
is possible that your OpenSSL version includes new bug work\-arounds
|
|
added after your Postfix source code was last updated, in that case
|
|
you can only disable one of these via the hexadecimal syntax above.
|
|
.IP "\fBCRYPTOPRO_TLSEXT_BUG\fR"
|
|
New with GOST support in
|
|
OpenSSL 1.0.0.
|
|
.br
|
|
.IP "\fBDONT_INSERT_EMPTY_FRAGMENTS\fR"
|
|
See
|
|
\fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBLEGACY_SERVER_CONNECT\fR"
|
|
See \fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBMICROSOFT_BIG_SSLV3_BUFFER\fR"
|
|
See
|
|
\fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBMICROSOFT_SESS_ID_BUG\fR"
|
|
See \fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBMSIE_SSLV2_RSA_PADDING\fR"
|
|
also aliased as
|
|
\fBCVE\-2005\-2969\fR. Postfix 2.8 disables this work\-around by
|
|
default with OpenSSL versions that may predate the fix. Fixed in
|
|
OpenSSL 0.9.7h and OpenSSL 0.9.8a.
|
|
.br
|
|
.IP "\fBNETSCAPE_CHALLENGE_BUG\fR"
|
|
See \fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBNETSCAPE_REUSE_CIPHER_CHANGE_BUG\fR"
|
|
also aliased
|
|
as \fBCVE\-2010\-4180\fR. Postfix 2.8 disables this work\-around by
|
|
default with OpenSSL versions that may predate the fix. Fixed in
|
|
OpenSSL 0.9.8q and OpenSSL 1.0.0c.
|
|
.br
|
|
.IP "\fBSSLEAY_080_CLIENT_DH_BUG\fR"
|
|
See
|
|
\fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBSSLREF2_REUSE_CERT_TYPE_BUG\fR"
|
|
See
|
|
\fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBTLS_BLOCK_PADDING_BUG\fR"
|
|
See \fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBTLS_D5_BUG\fR"
|
|
See \fBSSL_CTX_set_options\fR(3)
|
|
.br
|
|
.IP "\fBTLS_ROLLBACK_BUG\fR"
|
|
See \fBSSL_CTX_set_options\fR(3).
|
|
This is disabled in OpenSSL 0.9.7 and later. Nobody should still
|
|
be using 0.9.6!
|
|
.br
|
|
.IP "\fBTLSEXT_PADDING\fR"
|
|
Postfix >= 3.4. See \fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tls_eecdh_auto_curves (default: see "postconf \-d" output)
|
|
The prioritized list of elliptic curves, that should be enabled in the
|
|
Postfix SMTP client and server. The selected curves should be implemented
|
|
by OpenSSL and be standardized for use in the TLS "supported groups" extension
|
|
(RFC8422, RFC8446 and RFC8447). Be sure to include at least "x25519" and
|
|
"prime256v1" (the OpenSSL name for "secp256r1", a.k.a. "P\-256"). The default
|
|
list is suitable for most users.
|
|
.PP
|
|
On the client side, the first curve listed will be used to construct the
|
|
client's initial TLS 1.3 "keyshare". If this is not supported by the server,
|
|
the TLS handshake may require an additional round\-trip after the server issues
|
|
a HelloRetryRequest (HRR) indicating a suitable mutually supported curve.
|
|
.PP
|
|
Postfix skips curve names that are unknown to OpenSSL, or that are known
|
|
but not yet implemented. This makes it possible to "anticipate" support for
|
|
curves that should be used once they become available, or to deploy the same
|
|
setting on a server "farm" where not all servers support the same curves.
|
|
.PP
|
|
As of Postfix 3.10, when compiled with OpenSSL 3.0 or later, the "curve"
|
|
names can be more general key encapsulation mechanisms (KEMs), and/or may be
|
|
loaded from an external "provider" (via a suitable tls_config_file).
|
|
.PP
|
|
See also the "tls_ffdhe_auto_groups" parameter, which supports
|
|
customizing the list of FFDHE groups enabled with TLS 1.3. That setting
|
|
is introduced with Postfix 3.8, when built against OpenSSL 3.0 or later.
|
|
.PP
|
|
Post\-quantum cryptography support: OpenSSL 3.5 introduces new
|
|
configuration syntax that Postfix will not attempt to imitate.
|
|
Instead, with Postfix 3.6.17, 3.7.13, 3.8.8, 3.9.2, and later, set
|
|
both tls_eecdh_auto_curves and if available tls_ffdhe_auto_groups
|
|
to the empty value, to enable algorithm selection through OpenSSL
|
|
configuration. See tls_config_file for a configuration example.
|
|
.PP
|
|
This feature is available in Postfix 3.2 and later, when it is
|
|
compiled and linked with OpenSSL 1.0.2 or later on platforms where
|
|
EC algorithms have not been disabled by the vendor.
|
|
.SH tls_eecdh_strong_curve (default: prime256v1)
|
|
The elliptic curve used by the Postfix SMTP server for sensibly
|
|
strong
|
|
ephemeral ECDH key exchange. This curve is used by the Postfix SMTP
|
|
server when "smtpd_tls_eecdh_grade = strong". The phrase "sensibly
|
|
strong" means approximately 128\-bit security based on best known
|
|
attacks. The selected curve must be implemented by OpenSSL (as
|
|
reported by \fBecparam\fR(1) with the "\-list_curves" option) and be one
|
|
of the curves listed in Section 5.1.1 of RFC 8422. You should not
|
|
generally change this setting. Remote SMTP client implementations
|
|
must support this curve for EECDH key exchange to take place. It
|
|
is unwise to choose only "bleeding\-edge" curves supported by only a
|
|
small subset of clients.
|
|
.PP
|
|
This feature is not used as of Postfix 3.6. Do not specify.
|
|
.PP
|
|
The default "strong" curve is rated in NSA Suite
|
|
B for information classified up to SECRET.
|
|
.PP
|
|
Note: elliptic curve names are poorly standardized; different
|
|
standards groups are assigning different names to the same underlying
|
|
curves. The curve with the X9.62 name "prime256v1" is also known
|
|
under the SECG name "secp256r1", but OpenSSL does not recognize the
|
|
latter name.
|
|
.PP
|
|
If you want to take maximal advantage of ciphers that offer forward secrecy see
|
|
the Getting
|
|
started section of FORWARD_SECRECY_README. The
|
|
full document conveniently presents all information about Postfix
|
|
"perfect" forward secrecy support in one place: what forward secrecy
|
|
is, how to tweak settings, and what you can expect to see when
|
|
Postfix uses ciphers with forward secrecy.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when it is
|
|
compiled and linked with OpenSSL 1.0.0 or later on platforms where
|
|
EC algorithms have not been disabled by the vendor.
|
|
.SH tls_eecdh_ultra_curve (default: secp384r1)
|
|
The elliptic curve used by the Postfix SMTP server for maximally
|
|
strong
|
|
ephemeral ECDH key exchange. This curve is used by the Postfix SMTP
|
|
server when "smtpd_tls_eecdh_grade = ultra". The phrase "maximally
|
|
strong" means approximately 192\-bit security based on best known attacks.
|
|
This additional strength comes at a significant computational cost, most
|
|
users should instead set "smtpd_tls_eecdh_grade = strong". The selected
|
|
curve must be implemented by OpenSSL (as reported by \fBecparam\fR(1) with the
|
|
"\-list_curves" option) and be one of the curves listed in Section 5.1.1
|
|
of RFC 8422. You should not generally change this setting. Remote SMTP
|
|
client implementations must support this curve for EECDH key exchange
|
|
to take place. It is unwise to choose only "bleeding\-edge" curves
|
|
supported by only a small subset of clients.
|
|
.PP
|
|
This feature is not used as of Postfix 3.6. Do not specify.
|
|
.PP
|
|
This default "ultra" curve is rated in NSA Suite
|
|
B for information classified up to TOP SECRET.
|
|
.PP
|
|
If you want to take maximal advantage of ciphers that offer forward secrecy see
|
|
the Getting
|
|
started section of FORWARD_SECRECY_README. The
|
|
full document conveniently presents all information about Postfix
|
|
"perfect" forward secrecy support in one place: what forward secrecy
|
|
is, how to tweak settings, and what you can expect to see when
|
|
Postfix uses ciphers with forward secrecy.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later, when it is
|
|
compiled and linked with OpenSSL 1.0.0 or later on platforms where
|
|
EC algorithms have not been disabled by the vendor.
|
|
.SH tls_export_cipherlist (default: see "postconf \-d" output)
|
|
The OpenSSL cipherlist for "export" or higher grade ciphers.
|
|
Ignored as of Postfix 3.8. In earlier Postfix releases this
|
|
defined the meaning of the "export" setting in smtpd_tls_ciphers,
|
|
smtpd_tls_mandatory_ciphers, smtp_tls_ciphers,
|
|
smtp_tls_mandatory_ciphers, lmtp_tls_ciphers, and
|
|
lmtp_tls_mandatory_ciphers. You are strongly encouraged not to
|
|
change this setting.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH tls_fast_shutdown_enable (default: yes)
|
|
A workaround for implementations that hang Postfix while shutting
|
|
down a TLS session, until Postfix times out. With this enabled,
|
|
Postfix will not wait for the remote TLS peer to respond to a TLS
|
|
\&'close' notification. This behavior is recommended for TLSv1.0 and
|
|
later.
|
|
.SH tls_ffdhe_auto_groups (default: see "postconf \-d" output)
|
|
The prioritized list of finite\-field Diffie\-Hellman ephemeral
|
|
(FFDHE) key exchange groups supported by the Postfix SMTP client and
|
|
server. OpenSSL 3.0 adds support for FFDHE key agreement in TLS 1.3.
|
|
In OpenSSL 1.1.1, TLS 1.3 was only supported with elliptic\-curve based
|
|
key agreement. The "tls_ffdhe_auto_groups" parameter makes it possible
|
|
to configure the list of FFDHE groups that the Postfix client or server
|
|
will enable in OpenSSL 3.0 and up. This parameter has no effect when
|
|
Postfix is built against earlier OpenSSL versions.
|
|
.PP
|
|
The default list of FFDHE groups that Postfix enables in OpenSSL 3.0
|
|
and up includes just the 2048 and 3072\-bit groups. Stronger FFDHE
|
|
groups perform poorly and EC groups are a much better choice for the
|
|
same security level. Postfix ignores group names that are unknown to
|
|
OpenSSL, or that are known but not yet implemented. The FFDHE groups
|
|
are largely a backup, in case some peer does not support EC key
|
|
exchange, or EC key exchange needs to be disabled for some pressing
|
|
reason.
|
|
.PP
|
|
Setting this parameter empty disables FFDHE support in TLS 1.3.
|
|
Whether FFDHE key agreement is enabled in TLS 1.2 and earlier depends
|
|
on whether any of the "kDHE" ciphers are included in the cipherlist.
|
|
.PP
|
|
Conversely, setting "tls_eecdh_auto_curves" empty disables TLS 1.3
|
|
EC key agreement in OpenSSL 3.0 and later. If both are set empty,
|
|
Postfix will fall back to OpenSSL preferences as described next.
|
|
.PP
|
|
Post\-quantum cryptography support: OpenSSL 3.5 introduces new
|
|
configuration syntax that Postfix will not attempt to imitate.
|
|
Instead, with Postfix 3.6.17, 3.7.13, 3.8.8, 3.9.2, and later, set
|
|
both tls_eecdh_auto_curves and tls_ffdhe_auto_groups to the empty
|
|
value, to enable algorithm selection through OpenSSL configuration.
|
|
See tls_config_file for a configuration example.
|
|
.PP
|
|
All the default groups and EC curves should be sufficiently strong to make
|
|
"pruning" the defaults unwise. At a minimum, "x25519" and "prime256v1" (the
|
|
OpenSSL name for "secp256r1", a.k.a. "P\-256") should be among the enabled EC
|
|
curves, while "dhe2048" and "dhe3072" should be among the FFDHE groups.
|
|
.PP
|
|
This feature is available in Postfix 3.8 and later, when it is
|
|
compiled and linked with OpenSSL 3.0 or later.
|
|
.SH tls_high_cipherlist (default: see "postconf \-d" output)
|
|
The OpenSSL cipherlist for "high" grade ciphers. This defines
|
|
the meaning of the "high" setting in smtpd_tls_ciphers,
|
|
smtpd_tls_mandatory_ciphers, smtp_tls_ciphers, smtp_tls_mandatory_ciphers,
|
|
lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers. You are strongly
|
|
encouraged not to change this setting.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH tls_legacy_public_key_fingerprints (default: no)
|
|
A temporary migration aid for sites that use certificate
|
|
\fIpublic\-key\fR fingerprints with Postfix 2.9.0..2.9.5, which use
|
|
an incorrect algorithm. This parameter has no effect on the certificate
|
|
fingerprint support that is available since Postfix 2.2.
|
|
.PP
|
|
Specify "tls_legacy_public_key_fingerprints = yes" temporarily,
|
|
pending a migration from configuration files with incorrect Postfix
|
|
2.9.0..2.9.5 certificate public\-key finger prints, to the correct
|
|
fingerprints used by Postfix 2.9.6 and later. To compute the correct
|
|
certificate public\-key fingerprints, see TLS_README.
|
|
.PP
|
|
This feature is available in Postfix 2.9.6 and later.
|
|
.SH tls_low_cipherlist (default: see "postconf \-d" output)
|
|
The OpenSSL cipherlist for "low" or higher grade ciphers.
|
|
Ignored as of Postfix 3.8. In earlier Postfix releases this
|
|
defined the meaning of the "low" setting in smtpd_tls_ciphers,
|
|
smtpd_tls_mandatory_ciphers, smtp_tls_ciphers,
|
|
smtp_tls_mandatory_ciphers, lmtp_tls_ciphers, and
|
|
lmtp_tls_mandatory_ciphers. You are strongly encouraged not to
|
|
change this setting.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH tls_medium_cipherlist (default: see "postconf \-d" output)
|
|
The OpenSSL cipherlist for "medium" or higher grade ciphers. This
|
|
defines the meaning of the "medium" setting in smtpd_tls_ciphers,
|
|
smtpd_tls_mandatory_ciphers, smtp_tls_ciphers, smtp_tls_mandatory_ciphers,
|
|
lmtp_tls_ciphers, and lmtp_tls_mandatory_ciphers. This is the
|
|
default cipherlist for mandatory TLS encryption in the TLS client
|
|
(with anonymous ciphers disabled when verifying server certificates).
|
|
This is the default cipherlist for opportunistic TLS with Postfix
|
|
releases after the middle of 2015. You are strongly encouraged not
|
|
to change this setting.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH tls_null_cipherlist (default: eNULL:!aNULL)
|
|
The OpenSSL cipherlist for "NULL" grade ciphers that provide
|
|
authentication without encryption. This defines the meaning of the "null"
|
|
setting in smtpd_tls_mandatory_ciphers, smtp_tls_mandatory_ciphers and
|
|
lmtp_tls_mandatory_ciphers. You are strongly encouraged not to
|
|
change this setting.
|
|
.PP
|
|
This feature is available in Postfix 2.3 and later.
|
|
.SH tls_preempt_cipherlist (default: no)
|
|
With SSLv3 and later, use the Postfix SMTP server's cipher
|
|
preference order instead of the remote client's cipher preference
|
|
order.
|
|
.PP
|
|
By default, the OpenSSL server selects the client's most preferred
|
|
cipher that the server supports. With SSLv3 and later, the server may
|
|
choose its own most preferred cipher that is supported (offered) by
|
|
the client. Setting "tls_preempt_cipherlist = yes" enables server cipher
|
|
preferences.
|
|
.PP
|
|
While server cipher selection may in some cases lead to a more secure
|
|
or performant cipher choice, there is some risk of interoperability
|
|
issues. In the past, some SSL clients have listed lower priority ciphers
|
|
that they did not implement correctly. If the server chooses a cipher
|
|
that the client prefers less, it may select a cipher whose client
|
|
implementation is flawed. Most notably Windows 2003 Microsoft
|
|
Exchange servers have flawed implementations of DES\-CBC3\-SHA, which
|
|
OpenSSL considers stronger than RC4\-SHA. Enabling server cipher\-suite
|
|
selection may create interoperability issues with Windows 2003
|
|
Microsoft Exchange clients.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later, in combination
|
|
with OpenSSL 0.9.7 and later.
|
|
.SH tls_random_bytes (default: 32)
|
|
The number of bytes that \fBtlsmgr\fR(8) reads from $tls_random_source
|
|
when (re)seeding the in\-memory pseudo random number generator (PRNG)
|
|
pool. The default of 32 bytes (256 bits) is good enough for 128bit
|
|
symmetric keys. If using EGD or a device file, a maximum of 255
|
|
bytes is read.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH tls_random_exchange_name (default: see "postconf \-d" output)
|
|
Name of the pseudo random number generator (PRNG) state file
|
|
that is maintained by \fBtlsmgr\fR(8). The file is created when it does
|
|
not exist, and its length is fixed at 1024 bytes.
|
|
.PP
|
|
As of version 2.5, Postfix no longer uses root privileges when
|
|
opening this file, and the default file location was changed from
|
|
${config_directory}/prng_exch to ${data_directory}/prng_exch. As
|
|
a migration aid, an attempt to open the file under a non\-Postfix
|
|
directory is redirected to the Postfix\-owned data_directory, and a
|
|
warning is logged.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH tls_random_prng_update_period (default: 3600s)
|
|
The time between attempts by \fBtlsmgr\fR(8) to save the state of
|
|
the pseudo random number generator (PRNG) to the file specified
|
|
with $tls_random_exchange_name.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH tls_random_reseed_period (default: 3600s)
|
|
The maximal time between attempts by \fBtlsmgr\fR(8) to re\-seed the
|
|
in\-memory pseudo random number generator (PRNG) pool from external
|
|
sources. The actual time between re\-seeding attempts is calculated
|
|
using the PRNG, and is between 0 and the time specified.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH tls_random_source (default: see "postconf \-d" output)
|
|
The external entropy source for the in\-memory \fBtlsmgr\fR(8) pseudo
|
|
random number generator (PRNG) pool. Be sure to specify a non\-blocking
|
|
source. If this source is not a regular file, the entropy source
|
|
type must be prepended: egd:/path/to/egd_socket for a source with
|
|
EGD compatible socket interface, or dev:/path/to/device for a
|
|
device file.
|
|
.PP
|
|
Note: on OpenBSD systems specify dev:/dev/arandom when dev:/dev/urandom
|
|
gives timeout errors.
|
|
.PP
|
|
This feature is available in Postfix 2.2 and later.
|
|
.SH tls_required_enable (default: yes)
|
|
Enable support for the "TLS\-Required: no" message header, defined
|
|
in RFC 8689. By adding this header to a message, a sender requests
|
|
no enforcement of TLS policy. This limits the Postfix SMTP client
|
|
TLS security level to "may", that is, do not verify remote SMTP
|
|
server certificates, and fall back to plaintext if TLS is unavailable.
|
|
If a message contains a "TLS\-Required: no" header, then Postfix
|
|
will add that header to a delivery status notification for that
|
|
message.
|
|
.PP
|
|
This feature is available in Postfix >= 3.10.
|
|
.SH tls_server_sni_maps (default: empty)
|
|
Optional lookup tables that map names received from remote SMTP
|
|
clients via the TLS Server Name Indication (SNI) extension to the
|
|
appropriate keys and certificate chains. This parameter is implemented
|
|
in the Postfix TLS library, and applies to both \fBsmtpd\fR(8) and the SMTP
|
|
server mode of \fBtlsproxy\fR(8).
|
|
.PP
|
|
When this parameter is non\-empty, the Postfix SMTP server enables
|
|
SNI extension processing, and logs SNI values that are invalid or
|
|
don't match an entry in the specified tables. When an entry
|
|
does match, the SNI name is logged as part of the connection summary
|
|
at log levels 1 and higher.
|
|
.PP
|
|
The lookup key is either the verbatim SNI domain name or an
|
|
ancestor domain prefixed with a leading dot. For internationalized
|
|
domains, the lookup key must be in IDNA 2008 A\-label form (as
|
|
required in the TLS SNI extension).
|
|
.PP
|
|
The syntax of the lookup value is the same as with the
|
|
smtp_tls_chain_files parameter (see there for additional details),
|
|
but here scoped to just TLS connections in which the client sends
|
|
a matching SNI domain name.
|
|
.PP
|
|
Example:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
#
|
|
# The indexed SNI table must be created with "postmap \-F"
|
|
#
|
|
indexed = ${default_database_type}:${config_directory}/
|
|
tls_server_sni_maps = ${indexed}sni
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
/etc/postfix/sni:
|
|
#
|
|
# The example.com domain has both an RSA and ECDSA certificate
|
|
# chain. The chain files MUST start with the private key,
|
|
# with the certificate chain next, starting with the leaf
|
|
# (server) certificate, and then the issuer certificates.
|
|
#
|
|
example.com /etc/postfix/sni\-chains/rsa2048.example.com.pem,
|
|
/etc/postfix/sni\-chains/ecdsa\-p256.example.com.pem
|
|
#
|
|
# The example.net domain has a wildcard certificate, and two
|
|
# additional DNS names. So its certificate chain is also used
|
|
# with any subdomain, plus the additional names.
|
|
#
|
|
example.net /etc/postfix/sni\-chains/example.net.pem
|
|
.example.net /etc/postfix/sni\-chains/example.net.pem
|
|
example.info /etc/postfix/sni\-chains/example.net.pem
|
|
example.org /etc/postfix/sni\-chains/example.net.pem
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
Note that the SNI lookup tables should also have entries for
|
|
the domains that correspond to the Postfix SMTP server's default
|
|
certificate(s). This ensures that the remote SMTP client's TLS SNI
|
|
extension gets a positive response when it specifies one of the
|
|
Postfix SMTP server's default domains, and ensures that the Postfix
|
|
SMTP server will not log an SNI name mismatch for such a domain.
|
|
The Postfix SMTP server's default certificates are then only used
|
|
when the client sends no SNI or when it sends SNI with a domain
|
|
that the server knows no certificate(s) for.
|
|
.PP
|
|
The mapping from an SNI domain name to a certificate chain is indirect. In
|
|
the input source files for "cdb", "hash", "btree" or other tables that are
|
|
converted to on\-disk indexed files via \fBpostmap\fR(1), the value specified for each
|
|
key is a list of filenames. When \fBpostmap\fR(1) is used with the \fB\-F\fR option,
|
|
the generated table stores for each lookup key the base64\-encoded contents of
|
|
the associated files. When querying tables via \fBpostmap \-Fq\fR, the table
|
|
value is decoded from base64, yielding the original file content, plus a new
|
|
line.
|
|
.PP
|
|
With "regexp", "pcre", "inline", "texthash", "static" and similar
|
|
tables that are interpreted at run\-time, and don't have a separate
|
|
source format, the table value is again a list files, that are loaded
|
|
into memory when the table is opened.
|
|
.PP
|
|
With tables whose content is managed outside of Postfix, such
|
|
as LDAP, MySQL, PostgreSQL, socketmap and tcp, the value must be a
|
|
concatenation of the desired PEM keys and certificate chains, that
|
|
is then further encoded to yield a single\-line base64 string.
|
|
Creation of such tables and secure storage (the value includes
|
|
private key material) are outside the responsibility of Postfix.
|
|
.PP
|
|
With "socketmap" and "tcp" the data will be transmitted in the clear, and
|
|
there is no query access control, so these are generally unsuitable for storing
|
|
SNI chains. With LDAP and SQL, you should restrict read access and use TLS to
|
|
protect the sensitive data in transit.
|
|
.PP
|
|
Typically there is only one private key and its chain of certificates
|
|
starting with the "leaf" certificate corresponding to that key, and
|
|
continuing with the appropriate intermediate issuer CA certificates,
|
|
with each certificate ideally followed by its issuer. Servers
|
|
that have keys and certificates for more than one algorithm (e.g.
|
|
both an RSA key and an ECDSA key, or even RSA, ECDSA and Ed25519)
|
|
can use multiple chains concatenated together, with the key always
|
|
listed before the corresponding certificates.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tls_session_ticket_cipher (default: Postfix >= 3.0: aes\-256\-cbc, Postfix < 3.0: aes\-128\-cbc)
|
|
Algorithm used to encrypt RFC5077 TLS session tickets. This
|
|
algorithm must use CBC mode, have a 128\-bit block size, and must
|
|
have a key length between 128 and 256 bits. The default is
|
|
aes\-256\-cbc. Overriding the default to choose a different algorithm
|
|
is discouraged.
|
|
.PP
|
|
Setting this parameter empty disables session ticket support
|
|
in the Postfix SMTP server. Another way to disable session ticket
|
|
support is via the tls_ssl_options parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH tls_ssl_options (default: empty)
|
|
List or bit\-mask of OpenSSL options to enable.
|
|
.PP
|
|
The OpenSSL toolkit provides a set of options that applications
|
|
can enable to tune the OpenSSL behavior. Some of these work around
|
|
bugs in other implementations and are on by default. You can use
|
|
the tls_disable_workarounds parameter to selectively disable some
|
|
or all of the bug work\-arounds, making OpenSSL more strict at the
|
|
cost of non\-interoperability with SSL clients or servers that exhibit
|
|
the bugs.
|
|
.PP
|
|
Other options are off by default, and typically enable or disable
|
|
features rather than bug work\-arounds. These may be turned on (with
|
|
care) via the tls_ssl_options parameter. The value is a white\-space
|
|
or comma separated list of named options chosen from the list below.
|
|
The names are not case\-sensitive, you can use lower\-case if you
|
|
prefer. The upper case values below match the corresponding macro
|
|
name in the ssl.h header file with the SSL_OP_ prefix removed. It
|
|
is possible that your OpenSSL version includes new options added
|
|
after your Postfix source code was last updated, in that case you
|
|
can only enable one of these via the hexadecimal syntax below.
|
|
.PP
|
|
You should only enable features via the hexadecimal mask when
|
|
the need to control the feature is critical (to deal with a new
|
|
vulnerability or a serious interoperability problem). Postfix DOES
|
|
NOT promise backwards compatible behavior with respect to the mask
|
|
bits. A feature enabled via the mask in one release may be enabled
|
|
by other means in a later release, and the mask bit will then be
|
|
ignored. Therefore, use of the hexadecimal mask is only a temporary
|
|
measure until a new Postfix or OpenSSL release provides a better
|
|
solution.
|
|
.PP
|
|
If the value of the parameter is a hexadecimal long integer
|
|
starting with "0x", the options corresponding to the bits specified
|
|
in its value are enabled (see openssl/ssl.h and \fBSSL_CTX_set_options\fR(3)).
|
|
You can only enable options not already controlled by other Postfix
|
|
settings. For example, you cannot disable protocols or enable
|
|
server cipher preference. Do not attempt to enable all features by
|
|
specifying 0xFFFFFFFF, this is unlikely to be a good idea. Some
|
|
bug work\-arounds are also valid here, allowing them to be re\-enabled
|
|
if/when they're no longer enabled by default. The supported values
|
|
include:
|
|
.IP "\fBENABLE_MIDDLEBOX_COMPAT\fR"
|
|
Postfix >= 3.4. See
|
|
\fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.IP "\fBLEGACY_SERVER_CONNECT\fR"
|
|
See \fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.IP "\fBNO_TICKET\fR"
|
|
Enabled by default when needed in
|
|
fully\-patched Postfix >= 2.7. Not needed at all for Postfix >=
|
|
2.11, unless for some reason you do not want to support TLS session
|
|
resumption. Best not set explicitly. See \fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.IP "\fBNO_COMPRESSION\fR"
|
|
Disable SSL compression even if
|
|
supported by the OpenSSL library. Compression is CPU\-intensive,
|
|
and compression before encryption does not always improve security.
|
|
.br
|
|
.IP "\fBNO_RENEGOTIATION\fR"
|
|
Postfix >= 3.4. This can
|
|
reduce opportunities for a potential CPU exhaustion attack. See
|
|
\fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.IP "\fBNO_SESSION_RESUMPTION_ON_RENEGOTIATION\fR"
|
|
Postfix
|
|
>= 3.4. See \fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.IP "\fBPRIORITIZE_CHACHA\fR"
|
|
Postfix >= 3.4. See \fBSSL_CTX_set_options\fR(3).
|
|
.br
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH tls_wildcard_matches_multiple_labels (default: yes)
|
|
Match multiple DNS labels with "*" in wildcard certificates.
|
|
.PP
|
|
Some mail service providers prepend the customer domain name
|
|
to a base domain for which they have a wildcard TLS certificate.
|
|
For example, the MX records for example.com hosted by example.net
|
|
may be:
|
|
.sp
|
|
.in +4
|
|
.nf
|
|
.na
|
|
example.com. IN MX 0 example.com.mx1.example.net.
|
|
example.com. IN MX 0 example.com.mx2.example.net.
|
|
.fi
|
|
.ad
|
|
.in -4
|
|
.PP
|
|
and the TLS certificate may be for "*.example.net". The "*"
|
|
then corresponds with multiple labels in the mail server domain
|
|
name. While multi\-label wildcards are not widely supported, and
|
|
are not blessed by any standard, there is little to be gained by
|
|
disallowing their use in this context.
|
|
.PP
|
|
Notes:
|
|
.IP \(bu
|
|
In a certificate name, the "*" is special only when it is
|
|
used as the first label.
|
|
.IP \(bu
|
|
While Postfix (2.11 or later) can match "*" with multiple
|
|
domain name labels, other implementations likely will not.
|
|
.IP \(bu
|
|
Earlier Postfix implementations behave as if
|
|
"tls_wildcard_matches_multiple_labels = no".
|
|
.br
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH tlsmgr_service_name (default: tlsmgr)
|
|
The name of the \fBtlsmgr\fR(8) service entry in master.cf. This
|
|
service maintains TLS session caches and other information in support
|
|
of TLS.
|
|
.PP
|
|
This feature is available in Postfix 2.11 and later.
|
|
.SH tlsproxy_client_CAfile (default: $smtp_tls_CAfile)
|
|
A file containing CA certificates of root CAs trusted to sign
|
|
either remote TLS server certificates or intermediate CA certificates.
|
|
See smtp_tls_CAfile for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_CApath (default: $smtp_tls_CApath)
|
|
Directory with PEM format Certification Authority certificates
|
|
that the Postfix \fBtlsproxy\fR(8) client uses to verify a remote TLS
|
|
server certificate. See smtp_tls_CApath for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_cert_file (default: $smtp_tls_cert_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) client RSA certificate in PEM
|
|
format. See smtp_tls_cert_file for further details. The preferred way
|
|
to configure tlsproxy client keys and certificates is via the
|
|
"tlsproxy_client_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_chain_files (default: $smtp_tls_chain_files)
|
|
Files with the Postfix \fBtlsproxy\fR(8) client keys and certificate
|
|
chains in PEM format. See smtp_tls_chain_files for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_dcert_file (default: $smtp_tls_dcert_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) client DSA certificate in PEM
|
|
format. See smtp_tls_dcert_file for further details. DSA is obsolete and
|
|
should not be used.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_dkey_file (default: $smtp_tls_dkey_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) client DSA private key in PEM
|
|
format. See smtp_tls_dkey_file for further details. DSA is obsolete and
|
|
should not be used.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_eccert_file (default: $smtp_tls_eccert_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) client ECDSA certificate in PEM
|
|
format. See smtp_tls_eccert_file for further details. The preferred way
|
|
to configure tlsproxy client keys and certificates is via the
|
|
"tlsproxy_client_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_eckey_file (default: $smtp_tls_eckey_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) client ECDSA private key in PEM
|
|
format. See smtp_tls_eckey_file for further details. The preferred way
|
|
to configure tlsproxy client keys and certificates is via the
|
|
"tlsproxy_client_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_enforce_tls (default: $smtp_enforce_tls)
|
|
Enforcement mode: require that SMTP servers use TLS encryption.
|
|
See smtp_enforce_tls for further details. Use
|
|
tlsproxy_client_security_level instead.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
tlsproxy_client_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_fingerprint_digest (default: $smtp_tls_fingerprint_digest)
|
|
The message digest algorithm used to construct remote TLS server
|
|
certificate fingerprints. See smtp_tls_fingerprint_digest for
|
|
further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_key_file (default: $smtp_tls_key_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) client RSA private key in PEM
|
|
format. See smtp_tls_key_file for further details. The preferred way to
|
|
configure tlsproxy client keys and certificates is via the
|
|
"tlsproxy_client_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_level (default: $smtp_tls_security_level)
|
|
The default TLS security level for the Postfix \fBtlsproxy\fR(8)
|
|
client. See smtp_tls_security_level for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 \- 3.6. It was
|
|
renamed to tlsproxy_client_security_level in Postfix 3.7.
|
|
.SH tlsproxy_client_loglevel (default: $smtp_tls_loglevel)
|
|
Enable additional Postfix \fBtlsproxy\fR(8) client logging of TLS
|
|
activity. See smtp_tls_loglevel for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_loglevel_parameter (default: smtp_tls_loglevel)
|
|
The name of the parameter that provides the tlsproxy_client_loglevel
|
|
value.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_per_site (default: $smtp_tls_per_site)
|
|
Optional lookup tables with the Postfix \fBtlsproxy\fR(8) client TLS
|
|
usage policy by next\-hop destination and by remote TLS server
|
|
hostname. See smtp_tls_per_site for further details.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
tlsproxy_client_policy_maps instead.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_policy (default: $smtp_tls_policy_maps)
|
|
Optional lookup tables with the Postfix \fBtlsproxy\fR(8) client TLS
|
|
security policy by next\-hop destination. See smtp_tls_policy_maps
|
|
for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 \- 3.6. It was
|
|
renamed to tlsproxy_client_policy_maps in Postfix 3.7.
|
|
.SH tlsproxy_client_policy_maps (default: $smtp_tls_policy_maps)
|
|
Optional lookup tables with the Postfix \fBtlsproxy\fR(8) client TLS
|
|
security policy by next\-hop destination. See smtp_tls_policy_maps
|
|
for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later. It
|
|
was previously called tlsproxy_client_policy.
|
|
.SH tlsproxy_client_scert_verifydepth (default: $smtp_tls_scert_verifydepth)
|
|
The verification depth for remote TLS server certificates.
|
|
See smtp_tls_scert_verifydepth for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_client_security_level (default: $smtp_tls_security_level)
|
|
The default TLS security level for the Postfix \fBtlsproxy\fR(8)
|
|
client. See smtp_tls_security_level for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.7 and later. It
|
|
was previously called tlsproxy_client_level.
|
|
.SH tlsproxy_client_use_tls (default: $smtp_use_tls)
|
|
Opportunistic mode: use TLS when a remote server announces TLS
|
|
support. See smtp_use_tls for further details. Use
|
|
tlsproxy_client_security_level instead.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
tlsproxy_client_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_enforce_tls (default: $smtpd_enforce_tls)
|
|
Mandatory TLS: announce STARTTLS support to remote SMTP clients, and
|
|
require that clients use TLS encryption. See smtpd_enforce_tls for
|
|
further details. Use tlsproxy_tls_security_level instead.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
tlsproxy_tls_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_service_name (default: tlsproxy)
|
|
The name of the \fBtlsproxy\fR(8) service entry in master.cf. This
|
|
service performs plaintext <=> TLS ciphertext conversion.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_CAfile (default: $smtpd_tls_CAfile)
|
|
A file containing (PEM format) CA certificates of root CAs
|
|
trusted to sign either remote SMTP client certificates or intermediate
|
|
CA certificates. See smtpd_tls_CAfile for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_CApath (default: $smtpd_tls_CApath)
|
|
A directory containing (PEM format) CA certificates of root CAs
|
|
trusted to sign either remote SMTP client certificates or intermediate
|
|
CA certificates. See smtpd_tls_CApath for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_always_issue_session_ids (default: $smtpd_tls_always_issue_session_ids)
|
|
Force the Postfix \fBtlsproxy\fR(8) server to issue a TLS session id,
|
|
even when TLS session caching is turned off. See
|
|
smtpd_tls_always_issue_session_ids for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_ask_ccert (default: $smtpd_tls_ask_ccert)
|
|
Ask a remote SMTP client for a client certificate. See
|
|
smtpd_tls_ask_ccert for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_ccert_verifydepth (default: $smtpd_tls_ccert_verifydepth)
|
|
The verification depth for remote SMTP client certificates. A
|
|
depth of 1 is sufficient if the issuing CA is listed in a local CA
|
|
file. See smtpd_tls_ccert_verifydepth for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_cert_file (default: $smtpd_tls_cert_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) server RSA certificate in PEM
|
|
format. This file may also contain the Postfix \fBtlsproxy\fR(8) server
|
|
private RSA key. See smtpd_tls_cert_file for further details. With
|
|
Postfix >= 3.4 the preferred way to configure tlsproxy server keys and
|
|
certificates is via the "tlsproxy_tls_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_chain_files (default: $smtpd_tls_chain_files)
|
|
Files with the Postfix \fBtlsproxy\fR(8) server keys and certificate
|
|
chains in PEM format. See smtpd_tls_chain_files for further details.
|
|
.PP
|
|
This feature is available in Postfix 3.4 and later.
|
|
.SH tlsproxy_tls_ciphers (default: $smtpd_tls_ciphers)
|
|
The minimum TLS cipher grade that the Postfix \fBtlsproxy\fR(8) server
|
|
will use with opportunistic TLS encryption. See smtpd_tls_ciphers
|
|
for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_dcert_file (default: $smtpd_tls_dcert_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) server DSA certificate in PEM
|
|
format. This file may also contain the Postfix \fBtlsproxy\fR(8) server
|
|
private DSA key. DSA is obsolete and should not be used. See
|
|
smtpd_tls_dcert_file for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_dh1024_param_file (default: $smtpd_tls_dh1024_param_file)
|
|
File with DH parameters that the Postfix \fBtlsproxy\fR(8) server
|
|
should use with non\-export EDH ciphers. See smtpd_tls_dh1024_param_file
|
|
for further details.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Do not specify.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_dh512_param_file (default: $smtpd_tls_dh512_param_file)
|
|
File with DH parameters that the Postfix \fBtlsproxy\fR(8) server
|
|
should use with export\-grade EDH ciphers. See smtpd_tls_dh512_param_file
|
|
for further details. The default SMTP server cipher grade is
|
|
"medium" with Postfix releases after the middle of 2015, and as a
|
|
result export\-grade cipher suites are by default not used.
|
|
.PP
|
|
With Postfix >= 3.6 export\-grade Diffie\-Hellman key exchange
|
|
is no longer supported, and this parameter is silently ignored.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_dkey_file (default: $smtpd_tls_dkey_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) server DSA private key in PEM
|
|
format. This file may be combined with the Postfix \fBtlsproxy\fR(8) server
|
|
DSA certificate file specified with $smtpd_tls_dcert_file. DSA is
|
|
obsolete and should not be used. See smtpd_tls_dkey_file for further
|
|
details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_eccert_file (default: $smtpd_tls_eccert_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) server ECDSA certificate in PEM
|
|
format. This file may also contain the Postfix \fBtlsproxy\fR(8) server
|
|
private ECDSA key. See smtpd_tls_eccert_file for further details. With
|
|
Postfix >= 3.4 the preferred way to configure tlsproxy server keys and
|
|
certificates is via the "tlsproxy_tls_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_eckey_file (default: $smtpd_tls_eckey_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) server ECDSA private key in PEM
|
|
format. This file may be combined with the Postfix \fBtlsproxy\fR(8) server
|
|
ECDSA certificate file specified with $smtpd_tls_eccert_file. See
|
|
smtpd_tls_eckey_file for further details. With Postfix >= 3.4 the
|
|
preferred way to configure tlsproxy server keys and certificates is via
|
|
the "tlsproxy_tls_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_eecdh_grade (default: $smtpd_tls_eecdh_grade)
|
|
The Postfix \fBtlsproxy\fR(8) server security grade for ephemeral
|
|
elliptic\-curve Diffie\-Hellman (EECDH) key exchange. See
|
|
smtpd_tls_eecdh_grade for further details.
|
|
.PP
|
|
This feature is not used as of Postfix 3.6. Do not specify.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_enable_rpk (default: $smtpd_tls_enable_rpk)
|
|
Request that remote SMTP clients send an RFC7250 raw public key
|
|
instead of an X.509 certificate, when asking or requiring client
|
|
authentication. See $smtpd_tls_enable_rpk for details.
|
|
.PP
|
|
This feature is available in Postfix 3.9 and later.
|
|
.SH tlsproxy_tls_exclude_ciphers (default: $smtpd_tls_exclude_ciphers)
|
|
List of ciphers or cipher types to exclude from the \fBtlsproxy\fR(8)
|
|
server cipher list at all TLS security levels. See
|
|
smtpd_tls_exclude_ciphers for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_fingerprint_digest (default: $smtpd_tls_fingerprint_digest)
|
|
The message digest algorithm to construct remote SMTP
|
|
client\-certificate
|
|
fingerprints. See smtpd_tls_fingerprint_digest for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_key_file (default: $smtpd_tls_key_file)
|
|
File with the Postfix \fBtlsproxy\fR(8) server RSA private key in PEM
|
|
format. This file may be combined with the Postfix \fBtlsproxy\fR(8) server
|
|
RSA certificate file specified with $smtpd_tls_cert_file. See
|
|
smtpd_tls_key_file for further details. With Postfix >= 3.4 the
|
|
preferred way to configure tlsproxy server keys and certificates is via
|
|
the "tlsproxy_tls_chain_files" parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_loglevel (default: $smtpd_tls_loglevel)
|
|
Enable additional Postfix \fBtlsproxy\fR(8) server logging of TLS
|
|
activity. Each logging level also includes the information that
|
|
is logged at a lower logging level. See smtpd_tls_loglevel for
|
|
further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_mandatory_ciphers (default: $smtpd_tls_mandatory_ciphers)
|
|
The minimum TLS cipher grade that the Postfix \fBtlsproxy\fR(8) server
|
|
will use with mandatory TLS encryption. See smtpd_tls_mandatory_ciphers
|
|
for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_mandatory_exclude_ciphers (default: $smtpd_tls_mandatory_exclude_ciphers)
|
|
Additional list of ciphers or cipher types to exclude from the
|
|
\fBtlsproxy\fR(8) server cipher list at mandatory TLS security levels.
|
|
See smtpd_tls_mandatory_exclude_ciphers for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_mandatory_protocols (default: $smtpd_tls_mandatory_protocols)
|
|
The SSL/TLS protocols accepted by the Postfix \fBtlsproxy\fR(8) server
|
|
with mandatory TLS encryption. If the list is empty, the server
|
|
supports all available SSL/TLS protocol versions. See
|
|
smtpd_tls_mandatory_protocols for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_protocols (default: $smtpd_tls_protocols)
|
|
List of TLS protocols that the Postfix \fBtlsproxy\fR(8) server will
|
|
exclude or include with opportunistic TLS encryption. See
|
|
smtpd_tls_protocols for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_req_ccert (default: $smtpd_tls_req_ccert)
|
|
With mandatory TLS encryption, require a trusted remote SMTP
|
|
client certificate in order to allow TLS connections to proceed.
|
|
See smtpd_tls_req_ccert for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_security_level (default: $smtpd_tls_security_level)
|
|
The SMTP TLS security level for the Postfix \fBtlsproxy\fR(8) server;
|
|
when a non\-empty value is specified, this overrides the obsolete
|
|
parameters smtpd_use_tls and smtpd_enforce_tls. See
|
|
smtpd_tls_security_level for further details.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_tls_session_cache_timeout (default: $smtpd_tls_session_cache_timeout)
|
|
Obsolete expiration time of Postfix \fBtlsproxy\fR(8) server TLS session
|
|
cache information. Since the cache is shared with \fBsmtpd\fR(8) and managed
|
|
by \fBtlsmgr\fR(8), there is only one expiration time for the SMTP server cache
|
|
shared by all three services, namely smtpd_tls_session_cache_timeout.
|
|
.PP
|
|
This feature is available in Postfix 2.8\-2.10.
|
|
.SH tlsproxy_use_tls (default: $smtpd_use_tls)
|
|
Opportunistic TLS: announce STARTTLS support to remote SMTP clients,
|
|
but do not require that clients use TLS encryption. See smtpd_use_tls
|
|
for further details. Use tlsproxy_tls_security_level instead.
|
|
.PP
|
|
This feature is deprecated as of Postfix 3.9. Specify
|
|
tlsproxy_tls_security_level instead.
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later.
|
|
.SH tlsproxy_watchdog_timeout (default: 10s)
|
|
How much time a \fBtlsproxy\fR(8) process may take to process local
|
|
or remote I/O before it is terminated by a built\-in watchdog timer.
|
|
This is a safety mechanism that prevents \fBtlsproxy\fR(8) from becoming
|
|
non\-responsive due to a bug in Postfix itself or in system software.
|
|
To avoid false alarms and unnecessary cache corruption this limit
|
|
cannot be set under 10s.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
This feature is available in Postfix 2.8 and later
|
|
.SH trace_service_name (default: trace)
|
|
The name of the trace service. This service is implemented by the
|
|
\fBbounce\fR(8) daemon and maintains a record
|
|
of mail deliveries and produces a mail delivery report when verbose
|
|
delivery is requested with "\fBsendmail \-v\fR".
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH transport_delivery_slot_cost (default: $default_delivery_slot_cost)
|
|
A transport\-specific override for the default_delivery_slot_cost
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_delivery_slot_cost parameters will not
|
|
show up in "postconf" command output before Postfix version 2.9.
|
|
This limitation applies to many parameters whose name is a combination
|
|
of a master.cf service name and a built\-in suffix (in this case:
|
|
"_delivery_slot_cost").
|
|
.SH transport_delivery_slot_discount (default: $default_delivery_slot_discount)
|
|
A transport\-specific override for the default_delivery_slot_discount
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_delivery_slot_discount parameters will
|
|
not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_delivery_slot_discount").
|
|
.SH transport_delivery_slot_loan (default: $default_delivery_slot_loan)
|
|
A transport\-specific override for the default_delivery_slot_loan
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_delivery_slot_loan parameters will not
|
|
show up in "postconf" command output before Postfix version 2.9.
|
|
This limitation applies to many parameters whose name is a combination
|
|
of a master.cf service name and a built\-in suffix (in this case:
|
|
"_delivery_slot_loan").
|
|
.SH transport_destination_concurrency_failed_cohort_limit (default: $default_destination_concurrency_failed_cohort_limit)
|
|
A transport\-specific override for the
|
|
default_destination_concurrency_failed_cohort_limit parameter value,
|
|
where \fItransport\fR is the master.cf name of the message delivery
|
|
transport.
|
|
.PP
|
|
Note: some \fItransport\fR_destination_concurrency_failed_cohort_limit
|
|
parameters will not show up in "postconf" command output before
|
|
Postfix version 2.9. This limitation applies to many parameters
|
|
whose name is a combination of a master.cf service name and a
|
|
built\-in suffix (in this case:
|
|
"_destination_concurrency_failed_cohort_limit").
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH transport_destination_concurrency_limit (default: $default_destination_concurrency_limit)
|
|
A transport\-specific override for the
|
|
default_destination_concurrency_limit parameter value, where
|
|
\fItransport\fR is the master.cf name of the message delivery
|
|
transport.
|
|
.PP
|
|
Note: some \fItransport\fR_destination_concurrency_limit
|
|
parameters will not show up in "postconf" command output before
|
|
Postfix version 2.9. This limitation applies to many parameters
|
|
whose name is a combination of a master.cf service name and a
|
|
built\-in suffix (in this case: "_destination_concurrency_limit").
|
|
.SH transport_destination_concurrency_negative_feedback (default: $default_destination_concurrency_negative_feedback)
|
|
A transport\-specific override for the
|
|
default_destination_concurrency_negative_feedback parameter value,
|
|
where \fItransport\fR is the master.cf name of the message delivery
|
|
transport.
|
|
.PP
|
|
Note: some \fItransport\fR_destination_concurrency_negative_feedback
|
|
parameters will not show up in "postconf" command output before
|
|
Postfix version 2.9. This limitation applies to many parameters
|
|
whose name is a combination of a master.cf service name and a
|
|
built\-in suffix (in this case:
|
|
"_destination_concurrency_negative_feedback").
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH transport_destination_concurrency_positive_feedback (default: $default_destination_concurrency_positive_feedback)
|
|
A transport\-specific override for the
|
|
default_destination_concurrency_positive_feedback parameter value,
|
|
where \fItransport\fR is the master.cf name of the message delivery
|
|
transport.
|
|
.PP
|
|
Note: some \fItransport\fR_destination_concurrency_positive_feedback
|
|
parameters will not show up in "postconf" command output before
|
|
Postfix version 2.9. This limitation applies to many parameters
|
|
whose name is a combination of a master.cf service name and a
|
|
built\-in suffix (in this case:
|
|
"_destination_concurrency_positive_feedback").
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH transport_destination_rate_delay (default: $default_destination_rate_delay)
|
|
A transport\-specific override for the default_destination_rate_delay
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: some \fItransport\fR_destination_rate_delay parameters
|
|
will not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_destination_rate_delay").
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH transport_destination_recipient_limit (default: $default_destination_recipient_limit)
|
|
A transport\-specific override for the
|
|
default_destination_recipient_limit parameter value, where
|
|
\fItransport\fR is the master.cf name of the message delivery
|
|
transport.
|
|
.PP
|
|
Note: some \fItransport\fR_destination_recipient_limit parameters
|
|
will not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_destination_recipient_limit").
|
|
.SH transport_extra_recipient_limit (default: $default_extra_recipient_limit)
|
|
A transport\-specific override for the default_extra_recipient_limit
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_extra_recipient_limit parameters will
|
|
not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_extra_recipient_limit").
|
|
.SH transport_initial_destination_concurrency (default: $initial_destination_concurrency)
|
|
A transport\-specific override for the initial_destination_concurrency
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: some \fItransport\fR_initial_destination_concurrency
|
|
parameters will not show up in "postconf" command output before
|
|
Postfix version 2.9. This limitation applies to many parameters
|
|
whose name is a combination of a master.cf service name and a
|
|
built\-in suffix (in this case: "_initial_destination_concurrency").
|
|
.PP
|
|
This feature is available in Postfix 2.5 and later.
|
|
.SH transport_maps (default: empty)
|
|
Optional lookup tables with mappings from recipient address to
|
|
(message delivery transport, next\-hop destination). See \fBtransport\fR(5)
|
|
for syntax details.
|
|
.PP
|
|
This information may override the message delivery transport
|
|
and/or next\-hop destination that are specified with $local_transport,
|
|
$virtual_transport, $relay_transport, $default_transport,
|
|
$sender_dependent_relayhost_maps, $relayhost,
|
|
$sender_dependent_default_transport_maps, or the recipient domain.
|
|
.PP
|
|
Specify zero or more "type:table" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found. If you use this
|
|
feature with local files, run "\fBpostmap /etc/postfix/transport\fR"
|
|
after making a change.
|
|
.PP
|
|
Pattern matching of domain names is controlled by the presence
|
|
or absence of "transport_maps" in the parent_domain_matches_subdomains
|
|
parameter value.
|
|
.PP
|
|
For safety reasons, as of Postfix 2.3 this feature does not
|
|
allow $number substitutions in regular expression maps.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
transport_maps = dbm:/etc/postfix/transport
|
|
transport_maps = hash:/etc/postfix/transport
|
|
.fi
|
|
.ad
|
|
.SH transport_minimum_delivery_slots (default: $default_minimum_delivery_slots)
|
|
A transport\-specific override for the default_minimum_delivery_slots
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_minimum_delivery_slots parameters will
|
|
not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_minimum_delivery_slots").
|
|
.SH transport_recipient_limit (default: $default_recipient_limit)
|
|
A transport\-specific override for the default_recipient_limit
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: some \fItransport\fR_recipient_limit parameters will not
|
|
show up in "postconf" command output before Postfix version 2.9.
|
|
This limitation applies to many parameters whose name is a combination
|
|
of a master.cf service name and a built\-in suffix (in this case:
|
|
"_recipient_limit").
|
|
.SH transport_recipient_refill_delay (default: $default_recipient_refill_delay)
|
|
A transport\-specific override for the default_recipient_refill_delay
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_recipient_refill_delay parameters will
|
|
not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_recipient_refill_delay").
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH transport_recipient_refill_limit (default: $default_recipient_refill_limit)
|
|
A transport\-specific override for the default_recipient_refill_limit
|
|
parameter value, where \fItransport\fR is the master.cf name of
|
|
the message delivery transport.
|
|
.PP
|
|
Note: \fItransport\fR_recipient_refill_limit parameters will
|
|
not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_recipient_refill_limit").
|
|
.PP
|
|
This feature is available in Postfix 2.4 and later.
|
|
.SH transport_retry_time (default: 60s)
|
|
The time between attempts by the Postfix queue manager to contact
|
|
a malfunctioning message delivery transport.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH transport_time_limit (default: $command_time_limit)
|
|
A transport\-specific override for the command_time_limit parameter
|
|
value, where \fItransport\fR is the master.cf name of the message
|
|
delivery transport.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
Note: \fItransport\fR_time_limit parameters will not show up
|
|
in "postconf" command output before Postfix version 2.9. This
|
|
limitation applies to many parameters whose name is a combination
|
|
of a master.cf service name and a built\-in suffix (in this case:
|
|
"_time_limit").
|
|
.SH transport_transport_rate_delay (default: $default_transport_rate_delay)
|
|
A transport\-specific override for the default_transport_rate_delay
|
|
parameter value, where the initial \fItransport\fR in the parameter
|
|
name is the master.cf name of the message delivery transport.
|
|
.PP
|
|
Specify a non\-negative time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.PP
|
|
Note: \fItransport\fR_transport_rate_delay parameters will
|
|
not show up in "postconf" command output before Postfix version
|
|
2.9. This limitation applies to many parameters whose name is a
|
|
combination of a master.cf service name and a built\-in suffix (in
|
|
this case: "_transport_rate_delay").
|
|
.SH trigger_timeout (default: 10s)
|
|
The time limit for sending a trigger to a Postfix daemon (for
|
|
example, the \fBpickup\fR(8) or \fBqmgr\fR(8) daemon). This time limit prevents
|
|
programs from getting stuck when the mail system is under heavy
|
|
load.
|
|
.PP
|
|
Specify a non\-zero time value (an integral value plus an optional
|
|
one\-letter suffix that specifies the time unit). Time units: s
|
|
(seconds), m (minutes), h (hours), d (days), w (weeks).
|
|
The default time unit is s (seconds).
|
|
.SH undisclosed_recipients_header (default: see "postconf \-d" output)
|
|
Message header that the Postfix \fBcleanup\fR(8) server inserts when a
|
|
message contains no To: or Cc: message header. With Postfix 2.8
|
|
and later, the default value is empty. With Postfix 2.4\-2.7,
|
|
specify an empty value to disable this feature.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
# Default value before Postfix 2.8.
|
|
# Note: the ":" and ";" are both required.
|
|
undisclosed_recipients_header = To: undisclosed\-recipients:;
|
|
.fi
|
|
.ad
|
|
.SH unknown_address_reject_code (default: 450)
|
|
The numerical response code when the Postfix SMTP server rejects a
|
|
sender or recipient address because its domain is unknown. This
|
|
is one of the possible replies from the restrictions
|
|
reject_unknown_sender_domain and reject_unknown_recipient_domain.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH unknown_address_tempfail_action (default: $reject_tempfail_action)
|
|
The Postfix SMTP server's action when reject_unknown_sender_domain
|
|
or reject_unknown_recipient_domain fail due to a temporary error
|
|
condition. Specify "defer" to defer the remote SMTP client request
|
|
immediately. With the default "defer_if_permit" action, the Postfix
|
|
SMTP server continues to look for opportunities to reject mail, and
|
|
defers the client request only if it would otherwise be accepted.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unknown_client_reject_code (default: 450)
|
|
The numerical Postfix SMTP server response code when a client
|
|
without valid address <=> name mapping is rejected by the
|
|
reject_unknown_client_hostname restriction. The SMTP server always replies
|
|
with 450 when the mapping failed due to a temporary error condition.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH unknown_helo_hostname_tempfail_action (default: $reject_tempfail_action)
|
|
The Postfix SMTP server's action when reject_unknown_helo_hostname
|
|
fails due to a temporary error condition. Specify "defer" to defer
|
|
the remote SMTP client request immediately. With the default
|
|
"defer_if_permit" action, the Postfix SMTP server continues to look
|
|
for opportunities to reject mail, and defers the client request
|
|
only if it would otherwise be accepted.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unknown_hostname_reject_code (default: 450)
|
|
The numerical Postfix SMTP server response code when the hostname
|
|
specified with the HELO or EHLO command is rejected by the
|
|
reject_unknown_helo_hostname restriction.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.SH unknown_local_recipient_reject_code (default: 550)
|
|
The numerical Postfix SMTP server response code when a recipient
|
|
address is local, and $local_recipient_maps specifies a list of
|
|
lookup tables that does not match the recipient. A recipient
|
|
address is local when its domain matches $mydestination,
|
|
$proxy_interfaces or $inet_interfaces.
|
|
.PP
|
|
The default setting is 550 (reject mail) but it is safer to initially
|
|
use 450 (try again later) so you have time to find out if your
|
|
local_recipient_maps settings are OK.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
unknown_local_recipient_reject_code = 450
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH unknown_relay_recipient_reject_code (default: 550)
|
|
The numerical Postfix SMTP server reply code when a recipient
|
|
address matches $relay_domains, and relay_recipient_maps specifies
|
|
a list of lookup tables that does not match the recipient address.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH unknown_virtual_alias_reject_code (default: 550)
|
|
The Postfix SMTP server reply code when a recipient address matches
|
|
$virtual_alias_domains, and $virtual_alias_maps specifies a list
|
|
of lookup tables that does not match the recipient address.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH unknown_virtual_mailbox_reject_code (default: 550)
|
|
The Postfix SMTP server reply code when a recipient address matches
|
|
$virtual_mailbox_domains, and $virtual_mailbox_maps specifies a list
|
|
of lookup tables that does not match the recipient address.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH unverified_recipient_defer_code (default: 450)
|
|
The numerical Postfix SMTP server response when a recipient address
|
|
probe fails due to a temporary error condition.
|
|
.PP
|
|
Unlike elsewhere in Postfix, you can specify 250 in order to
|
|
accept the address anyway.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unverified_recipient_reject_code (default: 450)
|
|
The numerical Postfix SMTP server response when a recipient address
|
|
is rejected by the reject_unverified_recipient restriction.
|
|
.PP
|
|
Unlike elsewhere in Postfix, you can specify 250 in order to
|
|
accept the address anyway.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH unverified_recipient_reject_reason (default: empty)
|
|
The Postfix SMTP server's reply when rejecting mail with
|
|
reject_unverified_recipient. Do not include the numeric SMTP reply
|
|
code or the enhanced status code. By default, the response includes
|
|
actual address verification details.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
unverified_recipient_reject_reason = Recipient address lookup failed
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unverified_recipient_tempfail_action (default: $reject_tempfail_action)
|
|
The Postfix SMTP server's action when reject_unverified_recipient
|
|
fails due to a temporary error condition. Specify "defer" to defer
|
|
the remote SMTP client request immediately. With the default
|
|
"defer_if_permit" action, the Postfix SMTP server continues to look
|
|
for opportunities to reject mail, and defers the client request
|
|
only if it would otherwise be accepted.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unverified_sender_defer_code (default: 450)
|
|
The numerical Postfix SMTP server response code when a sender address
|
|
probe fails due to a temporary error condition.
|
|
.PP
|
|
Unlike elsewhere in Postfix, you can specify 250 in order to
|
|
accept the address anyway.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unverified_sender_reject_code (default: 450)
|
|
The numerical Postfix SMTP server response code when a recipient
|
|
address is rejected by the reject_unverified_sender restriction.
|
|
.PP
|
|
Unlike elsewhere in Postfix, you can specify 250 in order to
|
|
accept the address anyway.
|
|
.PP
|
|
Do not change this unless you have a complete understanding of RFC 5321.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH unverified_sender_reject_reason (default: empty)
|
|
The Postfix SMTP server's reply when rejecting mail with
|
|
reject_unverified_sender. Do not include the numeric SMTP reply
|
|
code or the enhanced status code. By default, the response includes
|
|
actual address verification details.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
unverified_sender_reject_reason = Sender address lookup failed
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH unverified_sender_tempfail_action (default: $reject_tempfail_action)
|
|
The Postfix SMTP server's action when reject_unverified_sender
|
|
fails due to a temporary error condition. Specify "defer" to defer
|
|
the remote SMTP client request immediately. With the default
|
|
"defer_if_permit" action, the Postfix SMTP server continues to look
|
|
for opportunities to reject mail, and defers the client request
|
|
only if it would otherwise be accepted.
|
|
.PP
|
|
This feature is available in Postfix 2.6 and later.
|
|
.SH use_srv_lookup (default: empty)
|
|
Enables discovery for the specified service(s) using DNS SRV
|
|
records. For example, with "use_srv_lookup = submission" and
|
|
"relayhost = example.com:submission", the Postfix SMTP client will
|
|
look up DNS SRV records for _submission._tcp.example.com, and will
|
|
relay email through the hosts and ports that are specified with
|
|
those records. See RFC 2782 for details of the host selection
|
|
process.
|
|
.PP
|
|
Specify zero or more service names separated by comma and/or
|
|
whitespace. Any name in the \fBservices\fR(5) database may be specified,
|
|
though in practice only submission or submissions (formerly called
|
|
smtp) make sense.
|
|
.PP
|
|
When SRV record lookup is enabled with use_srv_lookup, you can
|
|
enclose a domain name in "[]" to force IP address lookup instead
|
|
of SRV record lookup.
|
|
.PP
|
|
Example 1: MUA\-to\-MTA submission using SRV record lookup for
|
|
the "submission" service for domain "example.com". This uses the
|
|
default SMTP delivery agent with STARTTLS, and looks up SRV records
|
|
for "_submission._tcp.example.com".
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
use_srv_lookup = submission
|
|
relayhost = example.com:submission
|
|
smtp_tls_security_level = may
|
|
...see SASL_README for sasl configuration...
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Example 2: MUA\-to\-MTA submission using SRV record lookup for
|
|
the "submissions" service for domain "example.org". This uses a
|
|
dedicated SMTP delivery agent (smtp\-wraptls) with tls_wrappermode
|
|
turned on, and looks up SRV records for "_submissions._tcp.example.org".
|
|
.PP
|
|
Note: specify the older name "smtps" instead of "submissions"
|
|
when a provider has DNS SRV records like "_smtps._tcp.example.org"
|
|
instead of "_submissions._tcp.example.org".
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
use_srv_lookup = submissions
|
|
default_transport = smtp\-wraptls:example.org:submissions
|
|
...see SASL_README for sasl configuration...
|
|
.fi
|
|
.ad
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/master.cf:
|
|
smtp\-wraptls unix ... ... ... ... ... smtp
|
|
\-o { smtp_tls_wrappermode = yes }
|
|
\-o { smtp_tls_security_level = encrypt }
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Example 3: Sender\-dependent selection for a combination of
|
|
MUA\-to\-MTA submission services. This combines examples 1 and 2 with
|
|
examples of how to disable SRV and look up IP address records for
|
|
"smtp\-relay.example.net" and "smtp\-relay.other.example". Again,
|
|
specify the older name "smtps" instead of "submissions" when a
|
|
provider has DNS SRV records like "_smtps._tcp.example.org" instead
|
|
of "_submissions._tcp.example.org".
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
use_srv_lookup = submission, submissions
|
|
sender_dependent_default_transport_maps = inline:{
|
|
# Destinations that support SRV record lookup.
|
|
{ user1@example.com = smtp:example.com:submission }
|
|
{ user2@example.org = smtp\-wraptls:example.org:submissions }
|
|
# Use [destination] to force IP address lookups.
|
|
{ user3@example.net = smtp:[smtp\-relay.example.net]:submission }
|
|
{ user4@other.example =
|
|
smtp\-wraptls:[smtp\-relay.other.example]:submissions } }
|
|
...see SASL_README for sasl configuration...
|
|
.fi
|
|
.ad
|
|
.PP
|
|
Example 4: MTA\-to\-MTA traffic, using SRV record lookup for the
|
|
SMTP service. This is useful for Postfix tests, and may be useful
|
|
in environments where ports are dynamically assigned to servers.
|
|
.PP
|
|
.nf
|
|
.na
|
|
/etc/postfix/main.cf:
|
|
use_srv_lookup = smtp
|
|
# Fall back to MX record lookup when SRV records are unavailable.
|
|
#allow_srv_lookup_fallback = yes
|
|
#ignore_srv_lookup_error = yes
|
|
.fi
|
|
.ad
|
|
.PP
|
|
This feature is available in Postfix 3.8 and later.
|
|
.SH verp_delimiter_filter (default: \-=+)
|
|
The characters Postfix accepts as VERP delimiter characters on the
|
|
Postfix \fBsendmail\fR(1) command line and in SMTP commands.
|
|
.PP
|
|
This feature is available in Postfix 1.1 and later.
|
|
.SH virtual_alias_address_length_limit (default: 1000)
|
|
The maximal length of an email address after virtual alias expansion.
|
|
This stops virtual aliasing loops that increase the address length
|
|
exponentially.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH virtual_alias_domains (default: $virtual_alias_maps)
|
|
Postfix is the final destination for the specified list of virtual
|
|
alias domains, that is, domains for which all addresses are aliased
|
|
to addresses in other local or remote domains. The SMTP server
|
|
validates recipient addresses with $virtual_alias_maps and rejects
|
|
non\-existent recipients. See also the virtual alias domain class
|
|
in the ADDRESS_CLASS_README file
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later. The default
|
|
value is backwards compatible with Postfix version 1.1.
|
|
.PP
|
|
The default value is $virtual_alias_maps so that you can keep all
|
|
information about virtual alias domains in one place. If you have
|
|
many users, it is better to separate information that changes more
|
|
frequently (virtual address \-> local or remote address mapping)
|
|
from information that changes less frequently (the list of virtual
|
|
domain names).
|
|
.PP
|
|
Specify a list of host or domain names, "/file/name" or
|
|
"type:table" patterns, separated by commas and/or whitespace. A
|
|
"/file/name" pattern is replaced by its contents; a "type:table"
|
|
lookup table is matched when a table entry matches a host or domain name
|
|
(the lookup result is ignored). Continue long lines by starting
|
|
the next line with whitespace. Specify "!pattern" to exclude a host
|
|
or domain name from the list. The form "!/file/name" is supported
|
|
only in Postfix version 2.4 and later.
|
|
.PP
|
|
See also the VIRTUAL_README and ADDRESS_CLASS_README documents
|
|
for further information.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
virtual_alias_domains = virtual1.tld virtual2.tld
|
|
.fi
|
|
.ad
|
|
.SH virtual_alias_expansion_limit (default: 1000)
|
|
The maximal number of addresses that virtual alias expansion produces
|
|
from each original recipient.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH virtual_alias_maps (default: $virtual_maps)
|
|
Optional lookup tables that are often searched with a full email
|
|
address (including domain) and that apply to all recipients: \fBlocal\fR(8),
|
|
virtual, and remote; this is unlike alias_maps that are only searched
|
|
with an email address localpart (no domain) and that apply
|
|
only to \fBlocal\fR(8) recipients.
|
|
The virtual_alias_maps table format and lookups
|
|
are documented in \fBvirtual\fR(5). For an overview of Postfix address
|
|
manipulations see the ADDRESS_REWRITING_README document.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later. The default
|
|
value is backwards compatible with Postfix version 1.1.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
Note: these lookups are recursive.
|
|
.PP
|
|
If you use this feature with indexed files, run "\fBpostmap
|
|
/etc/postfix/virtual\fR" after changing the file.
|
|
.PP
|
|
Examples:
|
|
.PP
|
|
.nf
|
|
.na
|
|
virtual_alias_maps = dbm:/etc/postfix/virtual
|
|
virtual_alias_maps = hash:/etc/postfix/virtual
|
|
.fi
|
|
.ad
|
|
.SH virtual_alias_recursion_limit (default: 1000)
|
|
The maximal nesting depth of virtual alias expansion. Currently
|
|
the recursion limit is applied only to the left branch of the
|
|
expansion graph, so the depth of the tree can in the worst case
|
|
reach the sum of the expansion and recursion limits. This may
|
|
change in the future.
|
|
.PP
|
|
This feature is available in Postfix 2.1 and later.
|
|
.SH virtual_delivery_status_filter (default: $default_delivery_status_filter)
|
|
Optional filter for the \fBvirtual\fR(8) delivery agent to change the
|
|
delivery status code or explanatory text of successful or unsuccessful
|
|
deliveries. See default_delivery_status_filter for details.
|
|
.PP
|
|
This feature is available in Postfix 3.0 and later.
|
|
.SH virtual_destination_concurrency_limit (default: $default_destination_concurrency_limit)
|
|
The maximal number of parallel deliveries to the same destination
|
|
via the virtual message delivery transport. This limit is enforced
|
|
by the queue manager. The message delivery transport name is the
|
|
first field in the entry in the master.cf file.
|
|
.SH virtual_destination_recipient_limit (default: $default_destination_recipient_limit)
|
|
The maximal number of recipients per message for the virtual
|
|
message delivery transport. This limit is enforced by the queue
|
|
manager. The message delivery transport name is the first field in
|
|
the entry in the master.cf file.
|
|
.PP
|
|
Setting this parameter to a value of 1 changes the meaning of
|
|
virtual_destination_concurrency_limit from concurrency per domain
|
|
into concurrency per recipient.
|
|
.SH virtual_gid_maps (default: empty)
|
|
Lookup tables with the per\-recipient group ID for \fBvirtual\fR(8) mailbox
|
|
delivery.
|
|
.PP
|
|
This parameter is specific to the \fBvirtual\fR(8) delivery agent.
|
|
It does not apply when mail is delivered with a different mail
|
|
delivery program.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
In a lookup table, specify a left\-hand side of "@domain.tld" to
|
|
match any user in the specified domain that does not have a specific
|
|
"user@domain.tld" entry.
|
|
.PP
|
|
When a recipient address has an optional address extension
|
|
(user+foo@domain.tld), the \fBvirtual\fR(8) delivery agent looks up
|
|
the full address first, and when the lookup fails, it looks up the
|
|
unextended address (user@domain.tld).
|
|
.PP
|
|
Note 1: for security reasons, the \fBvirtual\fR(8) delivery agent disallows
|
|
regular expression substitution of $1 etc. in regular expression
|
|
lookup tables, because that would open a security hole.
|
|
.PP
|
|
Note 2: for security reasons, the \fBvirtual\fR(8) delivery agent will
|
|
silently ignore requests to use the \fBproxymap\fR(8) server. Instead
|
|
it will open the table directly. Before Postfix version 2.2, the
|
|
\fBvirtual\fR(8) delivery agent will terminate with a fatal error.
|
|
.SH virtual_mailbox_base (default: empty)
|
|
A prefix that the \fBvirtual\fR(8) delivery agent prepends to all pathname
|
|
results from $virtual_mailbox_maps table lookups. This is a safety
|
|
measure to ensure that an out of control map doesn't litter the
|
|
file system with mailboxes. While virtual_mailbox_base could be
|
|
set to "/", this setting isn't recommended.
|
|
.PP
|
|
This parameter is specific to the \fBvirtual\fR(8) delivery agent.
|
|
It does not apply when mail is delivered with a different mail
|
|
delivery program.
|
|
.PP
|
|
Example:
|
|
.PP
|
|
.nf
|
|
.na
|
|
virtual_mailbox_base = /var/mail
|
|
.fi
|
|
.ad
|
|
.SH virtual_mailbox_domains (default: $virtual_mailbox_maps)
|
|
Postfix is the final destination for the specified list of domains;
|
|
mail is delivered via the $virtual_transport mail delivery transport.
|
|
By default this is the Postfix \fBvirtual\fR(8) delivery agent. The SMTP
|
|
server validates recipient addresses with $virtual_mailbox_maps
|
|
and rejects mail for non\-existent recipients. See also the virtual
|
|
mailbox domain class in the ADDRESS_CLASS_README file.
|
|
.PP
|
|
This parameter expects the same syntax as the mydestination
|
|
configuration parameter.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later. The default
|
|
value is backwards compatible with Postfix version 1.1.
|
|
.SH virtual_mailbox_limit (default: 51200000)
|
|
The maximal size in bytes of an individual \fBvirtual\fR(8) mailbox or
|
|
maildir file, or zero (no limit).
|
|
.PP
|
|
This parameter is specific to the \fBvirtual\fR(8) delivery agent.
|
|
It does not apply when mail is delivered with a different mail
|
|
delivery program.
|
|
.SH virtual_mailbox_lock (default: see "postconf \-d" output)
|
|
How to lock a UNIX\-style \fBvirtual\fR(8) mailbox before attempting
|
|
delivery. For a list of available file locking methods, use the
|
|
"\fBpostconf \-l\fR" command.
|
|
.PP
|
|
This parameter is specific to the \fBvirtual\fR(8) delivery agent.
|
|
It does not apply when mail is delivered with a different mail
|
|
delivery program.
|
|
.PP
|
|
This setting is ignored with \fBmaildir\fR style delivery, because
|
|
such deliveries are safe without application\-level locks.
|
|
.PP
|
|
Note 1: the \fBdotlock\fR method requires that the recipient UID
|
|
or GID has write access to the parent directory of the recipient's
|
|
mailbox file.
|
|
.PP
|
|
Note 2: the default setting of this parameter is system dependent.
|
|
.SH virtual_mailbox_maps (default: empty)
|
|
Optional lookup tables with all valid addresses in the domains that
|
|
match $virtual_mailbox_domains.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
In a lookup table, specify a left\-hand side of "@domain.tld" to
|
|
match any user in the specified domain that does not have a specific
|
|
"user@domain.tld" entry.
|
|
.PP
|
|
With the default "virtual_mailbox_domains = $virtual_mailbox_maps",
|
|
lookup tables also need entries with a left\-hand side of "domain.tld"
|
|
to satisfy virtual_mailbox_domain lookups (the right\-hand side is
|
|
required but will not be used).
|
|
.PP
|
|
The remainder of this text is specific to the \fBvirtual\fR(8) delivery
|
|
agent. It does not apply when mail is delivered with a different
|
|
mail delivery program.
|
|
.PP
|
|
The \fBvirtual\fR(8) delivery agent uses this table to look up the
|
|
per\-recipient mailbox or maildir pathname. If the lookup result
|
|
ends in a slash ("/"), maildir\-style delivery is carried out,
|
|
otherwise the path is assumed to specify a UNIX\-style mailbox file.
|
|
Note that $virtual_mailbox_base is unconditionally prepended to
|
|
this path.
|
|
.PP
|
|
When a recipient address has an optional address extension
|
|
(user+foo@domain.tld), the \fBvirtual\fR(8) delivery agent looks up
|
|
the full address first, and when the lookup fails, it looks up the
|
|
unextended address (user@domain.tld).
|
|
.PP
|
|
Note 1: for security reasons, the \fBvirtual\fR(8) delivery agent disallows
|
|
regular expression substitution of $1 etc. in regular expression
|
|
lookup tables, because that would open a security hole.
|
|
.PP
|
|
Note 2: for security reasons, the \fBvirtual\fR(8) delivery agent will
|
|
silently ignore requests to use the \fBproxymap\fR(8) server. Instead
|
|
it will open the table directly. Before Postfix version 2.2, the
|
|
\fBvirtual\fR(8) delivery agent will terminate with a fatal error.
|
|
.SH virtual_maps (default: empty)
|
|
Optional lookup tables with a) names of domains for which all
|
|
addresses are aliased to addresses in other local or remote domains,
|
|
and b) addresses that are aliased to addresses in other local or
|
|
remote domains. Available before Postfix version 2.0. With Postfix
|
|
version 2.0 and later, this is replaced by separate controls: virtual_alias_domains
|
|
and virtual_alias_maps.
|
|
.SH virtual_minimum_uid (default: 100)
|
|
The minimum user ID value that the \fBvirtual\fR(8) delivery agent accepts
|
|
as a result from $virtual_uid_maps table lookup. Returned
|
|
values less than this will be rejected, and the message will be
|
|
deferred.
|
|
.PP
|
|
This parameter is specific to the \fBvirtual\fR(8) delivery agent.
|
|
It does not apply when mail is delivered with a different mail
|
|
delivery program.
|
|
.SH virtual_transport (default: virtual)
|
|
The default mail delivery transport and next\-hop destination for
|
|
final delivery to domains listed with $virtual_mailbox_domains.
|
|
This information can be overruled with the \fBtransport\fR(5) table.
|
|
.PP
|
|
Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
|
|
is the name of a mail delivery transport defined in master.cf.
|
|
The \fI:nexthop\fR destination is optional; its syntax is documented
|
|
in the manual page of the corresponding delivery agent.
|
|
.PP
|
|
This feature is available in Postfix 2.0 and later.
|
|
.SH virtual_uid_maps (default: empty)
|
|
Lookup tables with the per\-recipient user ID that the \fBvirtual\fR(8)
|
|
delivery agent uses while writing to the recipient's mailbox.
|
|
.PP
|
|
This parameter is specific to the \fBvirtual\fR(8) delivery agent.
|
|
It does not apply when mail is delivered with a different mail
|
|
delivery program.
|
|
.PP
|
|
Specify zero or more "type:name" lookup tables, separated by
|
|
whitespace or comma. Tables will be searched in the specified order
|
|
until a match is found.
|
|
.PP
|
|
In a lookup table, specify a left\-hand side of "@domain.tld"
|
|
to match any user in the specified domain that does not have a
|
|
specific "user@domain.tld" entry.
|
|
.PP
|
|
When a recipient address has an optional address extension
|
|
(user+foo@domain.tld), the \fBvirtual\fR(8) delivery agent looks up
|
|
the full address first, and when the lookup fails, it looks up the
|
|
unextended address (user@domain.tld).
|
|
.PP
|
|
Note 1: for security reasons, the \fBvirtual\fR(8) delivery agent disallows
|
|
regular expression substitution of $1 etc. in regular expression
|
|
lookup tables, because that would open a security hole.
|
|
.PP
|
|
Note 2: for security reasons, the \fBvirtual\fR(8) delivery agent will
|
|
silently ignore requests to use the \fBproxymap\fR(8) server. Instead
|
|
it will open the table directly. Before Postfix version 2.2, the
|
|
\fBvirtual\fR(8) delivery agent will terminate with a fatal error.
|
|
.SH SEE ALSO
|
|
.na
|
|
.nf
|
|
postconf(1), Postfix configuration parameter maintenance
|
|
master(5), Postfix daemon configuration maintenance
|
|
.SH LICENSE
|
|
.ad
|
|
.fi
|
|
The Secure Mailer license must be distributed with this software.
|
|
.SH AUTHOR(S)
|
|
.na
|
|
.nf
|
|
Wietse Venema
|
|
IBM T.J. Watson Research
|
|
P.O. Box 704
|
|
Yorktown Heights, NY 10598, USA
|
|
.sp
|
|
Wietse Venema
|
|
Google, Inc.
|
|
111 8th Avenue
|
|
New York, NY 10011, USA
|
|
.sp
|
|
Viktor Dukhovni
|