ppoossttccoonnff _p_a_r_a_m_e_t_e_r ...
ppoossttccoonnff --ee "_p_a_r_a_m_e_t_e_r_=_v_a_l_u_e" ...
The general format of the main.cf file is as follows:
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 "ppoossttccoonnff --dd" command.
Note: this is not an invitation to make changes to Postfix configuration parameters. Unnecessary changes can impair the operation of the mail system.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.6 and later.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
By default, the information is kept in volatile memory, and is lost after "ppoossttffiixx rreellooaadd" or "ppoossttffiixx ssttoopp".
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 the file and do "ppoossttffiixx rreellooaadd".
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.
Examples:
address_verify_map = hash:/var/db/postfix/verify address_verify_map = btree:/var/db/postfix/verify
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
This feature is available in Postfix 2.1 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
This feature is available in Postfix 2.1 and later.
The default poll count is 3.
Specify 1 to implement a crude form of greylisting, that is, always defer the first delivery request for a never seen before address.
Example:
address_verify_poll_count = 1
This feature is available in Postfix 2.1 and later.
The default polling delay is 3 seconds.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
This feature is available in Postfix 2.1 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
This feature is available in Postfix 2.1 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
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.
Examples:
address_verify_sender = <> address_verify_sender = postmaster@my.domain
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
This is a separate configuration parameter because not all the tables specified with $alias_maps have to be local files.
Examples:
alias_database = hash:/etc/aliases alias_database = hash:/etc/mail/aliases
The default list is system dependent. On systems with NIS, the default is to search the local alias database, then the NIS alias database.
If you change the alias database, run "ppoossttaalliiaass //eettcc//aalliiaasseess" (or wherever your system stores the mail alias file), or simply run "nneewwaalliiaasseess" to build the necessary DBM or DB file.
The llooccaall(8) delivery agent disallows regular expression substitution of $1 etc. in alias_maps, because that would open a security hole.
The llooccaall(8) delivery agent will silently ignore requests to use the pprrooxxyymmaapp(8) server within alias_maps. Instead it will open the table directly. Before Postfix version 2.2, the llooccaall(8) delivery agent will terminate with a fatal error.
Examples:
alias_maps = hash:/etc/aliases, nis:mail.aliases alias_maps = hash:/etc/aliases
Specify zero or more of: aalliiaass, ffoorrwwaarrdd or iinncclluuddee, in order to allow commands in aalliiaasseess(5), .forward files or in :include: files, respectively.
Example:
allow_mail_to_commands = alias,forward,include
Specify zero or more of: aalliiaass, ffoorrwwaarrdd or iinncclluuddee, in order to allow "/file/name" destinations in aalliiaasseess(5), .forward files and in :include: files, respectively.
Example:
allow_mail_to_files = alias,forward,include
As of Postfix version 2.5, this feature is implemented by ttrriivviiaall--rreewwrriittee(8). With earlier versions this feature was implemented by qqmmggrr(8) and was limited to recipient addresses only.
Note: with Postfix version 2.2, message header address rewriting happens only when one of the following conditions is true:
To get the behavior before Postfix version 2.2, specify "local_header_rewrite_clients = static:all".
Example:
allow_percent_hack = no
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.
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.
This list must be specified in the default Postfix configuration directory, and is used by set-gid Postfix commands such as ppoossttqquueeuuee(1) and ppoossttddrroopp(1).
Note: if mail to the BCC address bounces it will be returned to the sender.
Note: automatic BCC recipients are produced only for new mail. To avoid mailer loops, automatic BCC recipients are not generated for mail that Postfix forwards internally, nor for mail that Postfix generates itself.
This feature is implemented by the aannvviill(8) service which is available in Postfix version 2.2 and later.
The default interval is relatively short. Because of the high frequency of updates, the aannvviill(8) server uses volatile memory only. Thus, information is lost whenever the process terminates.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.2 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Note 1: this feature is enabled by default and must not be turned off. Postfix does not support domain-less addresses.
Note 2: with Postfix version 2.2, message header address rewriting happens only when one of the following conditions is true:
To get the behavior before Postfix version 2.2, specify "local_header_rewrite_clients = static:all".
Note 1: this feature is enabled by default. If disabled, users will not be able to send mail to "user@partialdomainname" but will have to specify full domain names instead.
Note 2: with Postfix version 2.2, message header address rewriting happens only when one of the following conditions is true:
To get the behavior before Postfix version 2.2, specify "local_header_rewrite_clients = static:all".
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.1 and later.
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.
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.
This feature is available in Postfix 2.2 and later.
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.
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.
This feature is available in Postfix 2.2 and later.
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.
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.
Example:
authorized_submit_users = !www, static:all
This feature is available in Postfix 2.2 and later.
By default, only trusted clients are allowed to specify XVERP.
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.
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.
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.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
Specify, for example, "best_mx_transport = local" to pass the mail from the Postfix SMTP client to the llooccaall(8) delivery agent. You can specify any message delivery "transport" or "transport:nexthop" that is defined in the master.cf file. See the ttrraannssppoorrtt(5) manual page for the syntax and meaning of "transport" or "transport:nexthop".
However, this feature is expensive because it ties up a Postfix SMTP client process while the llooccaall(8) delivery agent is doing its work. It is more efficient (for Postfix) to list all hosted domains in a table or database.
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.
Note: with Postfix versions before 2.0, these rules inspect all content after the primary message headers.
This feature is available in Postfix 2.0 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is d (days).
Specify 0 when mail delivery should be tried only once.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.0 and later.
Notes:
Template message body text may contain $name references to Postfix configuration parameters. The result of $name expansion can be previewed with "ppoossttccoonnff --bb _f_i_l_e___n_a_m_e" before the file is placed into the Postfix configuration directory.
This feature is available in Postfix 2.3 and later.
Specify "broken_sasl_auth_clients = yes" to have Postfix advertise AUTH support in a non-standard way.
Specify one or more of: envelope_sender, envelope_recipient, header_sender, header_recipient
This feature is available in Postfix 2.2 and later.
If you use this feature, run "ppoossttmmaapp //eettcc//ppoossttffiixx//ccaannoonniiccaall" to build the necessary DBM or DB file after every change. The changes will become visible after a minute or so. Use "ppoossttffiixx rreellooaadd" to eliminate the delay.
Note: with Postfix version 2.2, message header address mapping happens only when message header address rewriting is enabled:
To get the behavior before Postfix version 2.2, specify "local_header_rewrite_clients = static:all".
Examples:
canonical_maps = dbm:/etc/postfix/canonical canonical_maps = hash:/etc/postfix/canonical
This feature is available in Postfix 2.0 and later.
The following $name expansions are done on command_execution_directory before the directory is changed. 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.
Instead of $name you can also specify ${name} or $(name).
This feature is available in Postfix 2.2 and later.
Note: if you set this time limit to a large value you must update the global ipc_timeout parameter as well.
With Postfix command that run with set-gid privileges, a config_directory override requires either root privileges, or it requires that the directory is listed with the alternate_config_directories parameter in the default main.cf file.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.2 and later.
This parameter uses the same syntax as the right-hand side of a Postfix ttrraannssppoorrtt(5) table. This setting has a lower precedence than a content filter that is specified with an aacccceessss(5) table or in a hheeaaddeerr__cchheecckkss(5) or bbooddyy__cchheecckkss(5) table.
This feature is available in Postfix 2.5 and later when compiled with Cyrus SASL 2.1.22 or later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.5 and later.
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.
Pattern matching of domain names is controlled by the parent_domain_matches_subdomains parameter.
Examples:
debug_peer_list = 127.0.0.1 debug_peer_list = example.com
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.
Example:
debugger_command = PATH=/usr/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
Examples:
default_database_type = hash default_database_type = dbm
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 is the counter incremented - it happens after each default_delivery_slot_cost recipients have been delivered.
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.
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, their 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.
Use _t_r_a_n_s_p_o_r_t_delivery_slot_cost to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
Examples:
default_delivery_slot_cost = 0 default_delivery_slot_cost = 2
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.
Use _t_r_a_n_s_p_o_r_t_delivery_slot_discount to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
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.
Use _t_r_a_n_s_p_o_r_t_delivery_slot_loan to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
A pseudo-cohort is the number of deliveries equal to a destination's delivery concurrency.
Use _t_r_a_n_s_p_o_r_t_destination_concurrency_failed_cohort_limit to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.5. The default setting is compatible with earlier Postfix versions.
Use _t_r_a_n_s_p_o_r_t_destination_concurrency_limit to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
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 $_t_r_a_n_s_p_o_r_t_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.
Specify one of the following forms:
A pseudo-cohort is the number of deliveries equal to a destination's delivery concurrency.
Use _t_r_a_n_s_p_o_r_t_destination_concurrency_negative_feedback to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.5. The default setting is compatible with earlier Postfix versions.
Specify one of the following forms:
A pseudo-cohort is the number of deliveries equal to a destination's delivery concurrency.
Use _t_r_a_n_s_p_o_r_t_destination_concurrency_positive_feedback to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.5 and later.
To enable the delay, 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).
NOTE: the delay is enforced by the queue manager. The delay timer state does not survive "postfix reload" or "postfix stop".
Use _t_r_a_n_s_p_o_r_t_destination_rate_delay to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.5 and later.
Setting this parameter to a value of 1 changes the meaning of the corresponding per-destination concurrency limit from concurrency per domain into concurrency per recipient.
Use _t_r_a_n_s_p_o_r_t_destination_recipient_limit to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
Use _t_r_a_n_s_p_o_r_t_extra_recipient_limit to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
Use _t_r_a_n_s_p_o_r_t_minimum_delivery_slots to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.0 and later.
The template is subject to exactly one level of $name substitution:
Instead of $name you can also specify ${name} or $(name).
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 reply template is used for client, helo, sender, or recipient access restrictions.
Use _t_r_a_n_s_p_o_r_t_recipient_limit to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
Use _t_r_a_n_s_p_o_r_t_recipient_refill_delay to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.4 and later.
Use _t_r_a_n_s_p_o_r_t_recipient_refill_limit to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport.
This feature is available in Postfix 2.4 and later.
Specify a string of the form _t_r_a_n_s_p_o_r_t_:_n_e_x_t_h_o_p, where _t_r_a_n_s_p_o_r_t is the name of a mail delivery transport defined in master.cf. The _:_n_e_x_t_h_o_p part is optional. For more details see the ttrraannssppoorrtt(5) manual page.
Example:
default_transport = uucp:relayhostname
This feature is available in Postfix 1.1 and later.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.0 and later.
Example:
defer_transports = smtp
Large delay values are rounded off to an integral number seconds; delay values below the delay_logging_resolution_limit are logged as "0", and small delay values are logged with at most two-digit precision.
The format of the "delays=a/b/c/d" logging is as follows:
This feature is available in Postfix 2.3 and later.
This feature is enabled with the delay_warning_time parameter.
To enable this feature, 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).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
DNS lookups are enabled by default.
This feature is available in Postfix 2.0 and later.
Mime input processing is enabled by default, and is needed in order to recognize MIME headers in message content.
This feature is available in Postfix 2.0 and later.
The default, one per recipient, is what ezmlm needs.
This feature is available in Postfix 1.1 and later.
Example:
disable_vrfy_command = no
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.
When this parameter is set to yes, the cclleeaannuupp(8) daemon performs duplicate elimination on distinct pairs of (original recipient, rewritten recipient), and generates non-empty original recipient queue file records.
When this parameter is set to no, the cclleeaannuupp(8) daemon performs duplicate elimination on the rewritten recipient address only, and generates empty original recipient queue file records.
This feature is available in Postfix 2.1 and later. With Postfix version 2.0, support for the X-Original-To message header is always turned on. Postfix versions before 2.0 have no support for the X-Original-To message header.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.2 and later.
Specify a list of names and/or name=value pairs, separated by whitespace or comma. The name=value form is supported with Postfix version 2.1 and later.
Example:
export_environment = TZ PATH=/bin:/usr/bin
This feature was removed in Postfix version 2.1.
By default, mail is returned to the sender when a destination is not found, and delivery is deferred when a destination is unreachable.
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.
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.
Postfix version 2.2 and later will not use the fallback_relay feature for destinations that it is MX host for.
The precedence of llooccaall(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.
The precedence of llooccaall(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.
For safety reasons, this feature does not allow $number substitutions in regular expression maps.
This feature is available in Postfix 2.3 and later.
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 ppoossttccoonnff(5) manual).
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.
Specify "fast_flush_domains =" (i.e., empty) to disable the feature altogether.
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.
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.
This feature is available in Postfix 2.0 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
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.
Instead of $name you can also specify ${name} or $(name).
Examples:
forward_path = /var/forward/$user forward_path = /var/forward/$user/.forward$recipient_delimiter$extension, /var/forward/$user/.forward
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.
After changing the hash_queue_names or hash_queue_depth parameter, execute the command "ppoossttffiixx rreellooaadd".
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.
After changing the hash_queue_names or hash_queue_depth parameter, execute the command "ppoossttffiixx rreellooaadd".
This feature is available in Postfix 2.0 and later.
Specify a pathname ending in "/" for qmail-style delivery.
The precedence of llooccaall(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.
Examples:
home_mailbox = Mailbox home_mailbox = Maildir/
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.
Specify a list of names and/or name=value pairs, separated by whitespace or comma. The name=value form is supported with Postfix version 2.1 and later.
With the default 100 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.
Specify 0 to disable the feature. Valid delays are 0..10.
Note 1: you need to stop and start Postfix when this parameter changes.
Note 2: address information may be enclosed inside [], but this form is not required here.
When inet_interfaces specifies just one IPv4 and/or IPv6 address that is not a loopback address, the Postfix SMTP client will use this address as the IP source address for outbound mail. Support for IPv6 is available in Postfix version 2.2 and later.
On a multi-homed firewall with separate Postfix instances listening on the "inside" and "outside" interfaces, this can prevent each instance from being able to reach servers on the "other side" of the firewall. 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.
A better solution for multi-homed firewalls 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).
See also the proxy_interfaces parameter, for network addresses that are forwarded to Postfix by way of a proxy or address translator.
Examples:
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
This feature is available in Postfix 2.2 and later.
Note: you MUST stop and start Postfix after changing this parameter.
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.
When IPv4 support is enabled via the inet_protocols parameter, Postfix will to DNS type A record lookups, 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).
When IPv6 support is enabled via the inet_protocols parameter, Postfix will do DNS type AAAA record lookups.
When both IPv4 and IPv6 support are enabled, the Postfix SMTP client will attempt to connect via IPv6 before attempting to use IPv4.
Examples:
inet_protocols = ipv4 (DEFAULT) inet_protocols = all inet_protocols = ipv6 inet_protocols = ipv4, ipv6
Use _t_r_a_n_s_p_o_r_t_initial_destination_concurrency to specify a transport-specific override, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery transport (Postfix 2.5 and later).
Warning: with concurrency of 1, one bad message can be enough to block all mail to a site.
NOTE: It's generally not safe to enable content inspection of Postfix-generated email messages. The user is warned.
This feature is available in Postfix 2.3 and later.
Do not change this unless you have a complete understanding of RFC 2821.
With Postfix 2.4 the default value was reduced from 100s to 5s.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
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.
The effectiveness of cached connections will be determined by the number of LMTP servers in use, and the concurrency limit specified for the LMTP client. Cached connections are closed under any of the following conditions:
Most of these limitations will be removed after Postfix implements a connection cache that is shared among multiple LMTP client programs.
This feature is available in Postfix 2.3 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Example:
lmtp_connect_timeout = 30s
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.3 and later.
Setting this parameter to a value of 1 changes the meaning of lmtp_destination_concurrency_limit from concurrency per domain into concurrency per recipient.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
Notes:
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
The default value is the machine hostname. Specify a hostname or [ip.add.re.ss].
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:
/etc/postfix/master.cf: mylmtp ... lmtp -o lmtp_lhlo_name=foo.bar.com
This feature is available in Postfix 2.3 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.3 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.4 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.4 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
The following security features are defined for the ccyyrruuss client SASL implementation:
Example:
lmtp_sasl_security_options = noplaintext
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with OpenSSL 0.9.9 or later.
This feature is available in Postfix 2.6 and later, when Postfix is compiled and linked with OpenSSL 0.9.9 or later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
In case of problems the client does NOT try the next address on the mail exchanger list.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.1 and later.
"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).
Note: when a shell program is specified, it is invoked even when the command contains no shell built-in commands or meta characters.
Example:
local_command_shell = /some/where/smrsh -c
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.
Setting this parameter to a value > 1 changes the meaning of local_destination_concurrency_limit from concurrency per recipient into concurrency per domain.
See the append_at_myorigin and append_dot_mydomain parameters for details of how domain names are appended to incomplete addresses.
Specify a list of zero or more of the following:
Examples:
The Postfix < 2.2 backwards compatible setting: always rewrite
message headers, and always append my own domain to incomplete
header addresses.
local_header_rewrite_clients = static:all
The purist (and default) setting: rewrite headers only in mail
from Postfix sendmail and in SMTP mail from this machine.
local_header_rewrite_clients = permit_inet_interfaces
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.
Note: this setting will not prevent remote mail header address
rewriting when mail from a remote client is forwarded by a neighboring
system.
local_header_rewrite_clients = permit_mynetworks, permit_sasl_authenticated permit_tls_clientcerts check_address_map hash:/etc/postfix/pop-before-smtp
If this parameter is non-empty (the default), then the Postfix SMTP server will reject mail for unknown local users.
To turn off local recipient checking in the Postfix SMTP server, specify "local_recipient_maps =" (i.e. empty).
The default setting assumes that you use the default Postfix local delivery agent for local delivery. You need to update the local_recipient_maps setting if:
Details are described in the LOCAL_RECIPIENT_README file.
Beware: if the Postfix SMTP server runs chrooted, you need to access the passwd file via the pprrooxxyymmaapp(8) service, in order to overcome chroot access restrictions. The alternative, maintaining a copy of the system password file in the chroot jail is not practical.
Examples:
local_recipient_maps =
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.
Specify a string of the form _t_r_a_n_s_p_o_r_t_:_n_e_x_t_h_o_p, where _t_r_a_n_s_p_o_r_t is the name of a mail delivery transport defined in master.cf. The _:_n_e_x_t_h_o_p part is optional. For more details see the ttrraannssppoorrtt(5) manual page.
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.
The following $name expansions are done on luser_relay:
Instead of $name you can also specify ${name} or $(name).
Note: luser_relay works only for the Postfix llooccaall(8) delivery agent.
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".
Examples:
luser_relay = $user@other.host luser_relay = $local@other.host luser_relay = admin+$local
When this parameter value is changed you need to re-run "ppoossttffiixx sseett--ppeerrmmiissssiioonnss" (with Postfix version 2.0 and earlier: "//eettcc//ppoossttffiixx//ppoosstt--iinnssttaallll sseett--ppeerrmmiissssiioonnss".
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.
Examples:
mail_spool_directory = /var/mail mail_spool_directory = /var/spool/mail
The following environment variables are exported to the command:
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).
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.
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.
The precedence of llooccaall(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.
Examples:
mailbox_command = /some/where/procmail mailbox_command = /some/where/procmail -a "$EXTENSION" mailbox_command = /some/where/maildrop -d "$USER" -f "$SENDER" "$EXTENSION"
The precedence of llooccaall(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.
This setting is ignored with mmaaiillddiirr style delivery, because such deliveries are safe without explicit locks.
Note: The ddoottlloocckk method requires that the recipient UID or GID has write access to the parent directory of the mailbox file.
Note: the default setting of this parameter is system dependent.
This limit must not be smaller than the message size limit.
The precedence of llooccaall(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.
The precedence of llooccaall(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.
For safety reasons, this feature does not allow $number substitutions in regular expression maps.
This feature is available in Postfix 2.3 and later.
Do not change this unless you have a complete understanding of RFC 2821.
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.
Specify zero or more of: envelope_sender, envelope_recipient, header_sender, header_recipient
The list is processed left to right, and processing stops at the
first match. Thus,
masquerade_domains = foo.example.com example.com
strips "user@any.thing.foo.example.com" to "user@foo.example.com", but strips "user@any.thing.else.example.com" to "user@example.com".
A domain name prefixed with ! means do not masquerade this domain
or its subdomains. Thus,
masquerade_domains = !foo.example.com example.com
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".
Note: with Postfix version 2.2, message header address masquerading happens only when message header address rewriting is enabled:
To get the behavior before Postfix version 2.2, specify "local_header_rewrite_clients = static:all".
Example:
masquerade_domains = $mydomain
By default, address masquerading makes no exceptions.
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.
Examples:
masquerade_exceptions = root, mailer-daemon masquerade_exceptions = root
Note: this feature does not support "/file/name" or "type:table" patterns, nor does it support wildcards such as "*" or "all". This is intentional.
Examples:
# Turn on all mmaasstteerr(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
This feature is available in Postfix 2.6 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This parameter should be set to a value greater than or equal to $minimal_backoff_time. See also $queue_run_delay.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is d (days).
Specify 0 when mail delivery should be tried only once.
Example:
message_reject_characters = \0
This feature is available in Postfix 2.3 and later.
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.
Example:
message_strip_characters = \0
This feature is available in Postfix 2.3 and later.
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).
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
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).
This feature is available in Postfix 2.3 and later.
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).
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
Protocol versions:
Protocol extensions:
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
This parameter also limits the time an unreachable destination is kept in the short-term, in-memory, destination status cache.
This parameter should be set greater than or equal to $queue_run_delay. See also $maximal_backoff_time.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
When $multi_instance_directories is empty, the ppoossttffiixx(1) command runs in single-instance mode and operates on a single Postfix instance only. Otherwise, the ppoossttffiixx(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 ppoossttffiixx(1) commands for the default instance and for all Postfix instances in $multi_instance_directories.
Currently, this parameter setting is ignored except for the default main.cf file.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
The ppoossttffiixx(1) command invokes the manager command with the ppoossttffiixx(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 ppoossttffiixx(1) command for individual Postfix instances as "postfix -c _c_o_n_f_i_g___d_i_r_e_c_t_o_r_y _c_o_m_m_a_n_d".
This feature is available in Postfix 2.6 and later.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.1 and later.
The default mydestination value specifies names for the local machine only. On a mail domain gateway, you should also include $mydomain.
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).
Warnings:
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.
Examples:
mydestination = $myhostname, localhost.$mydomain $mydomain mydestination = $myhostname, localhost.$mydomain www.$mydomain, ftp.$mydomain
Example:
mydomain = domain.tld
Example:
myhostname = host.example.com
In particular, "trusted" SMTP clients are allowed to relay mail through Postfix. See the smtpd_recipient_restrictions parameter description in the ppoossttccoonnff(5) manual.
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.
If you specify the mynetworks list by hand, Postfix ignores the mynetworks_style setting.
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.
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).
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.
Note: 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.
Examples:
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
Example:
myorigin = $mydomain
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.3 and later.
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.
The error classes are:
Examples:
notify_classes = bounce, delay, policy, protocol, resource, software notify_classes = 2bounce, resource, software
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
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.
Specify zero or more of ffoorrwwaarrdd, ffiillee, or ccoommmmaanndd.
Example:
prepend_delivered_header = forward
For example, with a vviirrttuuaall(5) mapping of "_j_o_e_@_e_x_a_m_p_l_e_._c_o_m _=_> _j_o_e_._u_s_e_r_@_e_x_a_m_p_l_e_._n_e_t", the address "_j_o_e_+_f_o_o_@_e_x_a_m_p_l_e_._c_o_m" would rewrite to "_j_o_e_._u_s_e_r_+_f_o_o_@_e_x_a_m_p_l_e_._n_e_t".
Specify zero or more of ccaannoonniiccaall, vviirrttuuaall, aalliiaass, ffoorrwwaarrdd, iinncclluuddee or ggeenneerriicc. These cause address extension propagation with ccaannoonniiccaall(5), vviirrttuuaall(5), and aalliiaasseess(5) maps, with llooccaall(8) .forward and :include: file lookups, and with ssmmttpp(8) generic maps, respectively.
Note: enabling this feature for types other than ccaannoonniiccaall and vviirrttuuaall is likely to cause problems when mail is forwarded to other sites, especially with mail that is sent to a mailing list exploder address.
Examples:
propagate_unmatched_extensions = canonical, virtual, alias, forward, include propagate_unmatched_extensions = canonical, virtual
This feature is available in Postfix 2.0 and later.
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.
Example:
proxy_interfaces = 1.2.3.4
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
This feature is enabled with the helpful_warnings parameter.
This feature is available in Postfix 2.0 and later.
This feature exists only in the ooqqmmggrr(8) old queue manager. The current queue manager solves the problem in a better way.
By default, no client is allowed to use the service. This is because the QMQP server will relay mail to any destination.
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.
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.
Example:
qmqpd_authorized_clients = !192.168.0.1, 192.168.0.0/24
This feature is available in Postfix 2.5 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.0 and later.
By default, the Postfix version 2.1 SMTP server rejects MAIL FROM commands when the amount of free space is less than 1.5*$message_size_limit. To specify a higher minimum free space limit, specify a queue_minfree value that is at least 1.5*$message_size_limit.
With Postfix versions 2.0 and earlier, a queue_minfree value of zero means there is no minimum required amount of free space.
This parameter should be set less than or equal to $minimal_backoff_time. See also $maximal_backoff_time.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
Specify zero or more of the following options. The options override main.cf settings and are either implemented by ssmmttppdd(8), qqmmqqppdd(8), or ppiicckkuupp(8) themselves, or they are forwarded to the cleanup server.
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).
Examples:
receive_override_options = no_unknown_recipient_checks, no_header_body_checks receive_override_options = no_address_mappings
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
The table search order is as follows:
Specify the types and names of databases to use. After change, run "ppoossttmmaapp //eettcc//ppoossttffiixx//rreecciippiieenntt__bbcccc".
Note: if mail to the BCC address bounces it will be returned to the sender.
Note: automatic BCC recipients are produced only for new mail. To avoid mailer loops, automatic BCC recipients are not generated for mail that Postfix forwards internally, nor for mail that Postfix generates itself.
Example:
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
Specify one or more of: envelope_recipient, header_recipient
This feature is available in Postfix 2.2 and later.
Note: $recipient_canonical_maps is processed before $canonical_maps.
Example:
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
Example:
recipient_delimiter = +
Do not change this unless you have a complete understanding of RFC 2821.
For finer control, see: unverified_recipient_tempfail_action, unverified_sender_tempfail_action, unknown_address_tempfail_action, and unknown_helo_hostname_tempfail_action.
This feature is available in Postfix 2.6 and later.
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
Example:
relay_clientcerts = hash:/etc/postfix/relay_clientcerts
For more fine-grained control, use check_ccert_access to select an appropriate aacccceessss(5) policy for each client. See RESTRICTION_CLASS_README.
This feature is available with Postfix version 2.2.
This feature is available in Postfix 2.0 and later.
Setting this parameter to a value of 1 changes the meaning of relay_destination_concurrency_limit from concurrency per domain into concurrency per recipient.
This feature is available in Postfix 2.0 and later.
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.
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 ppoossttccoonnff(5) manual page.
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.
Do not change this unless you have a complete understanding of RFC 2821.
If this parameter is non-empty, then the Postfix SMTP server will reject mail to unknown relay users. This feature is off by default.
See also the relay domains address class in the ADDRESS_CLASS_README file.
Example:
relay_recipient_maps = hash:/etc/postfix/relay_recipients
This feature is available in Postfix 2.0 and later.
Specify a string of the form _t_r_a_n_s_p_o_r_t_:_n_e_x_t_h_o_p, where _t_r_a_n_s_p_o_r_t is the name of a mail delivery transport defined in master.cf. The _:_n_e_x_t_h_o_p part is optional. For more details see the ttrraannssppoorrtt(5) manual page.
See also the relay domains address class in the ADDRESS_CLASS_README file.
This feature is available in Postfix 2.0 and later.
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.
In the case of SMTP, specify a domain name, hostname, hostname:port, [hostname]:port, [hostaddress] or [hostaddress]:port. The form [hostname] turns off MX lookups.
If you're connected via UUCP, see the UUCP_README file for useful information.
Examples:
relayhost = $mydomain relayhost = [gateway.example.com] relayhost = uucphost relayhost = [an.ip.add.ress]
If you use this feature, run "ppoossttmmaapp //eettcc//ppoossttffiixx//rreellooccaatteedd" to build the necessary DBM or DB file after change, then "ppoossttffiixx rreellooaadd" to make the changes visible.
Examples:
relocated_maps = dbm:/etc/postfix/relocated relocated_maps = hash:/etc/postfix/relocated
Examples:
The safe setting: append "domain.invalid" to incomplete header
addresses from remote SMTP clients, so that those addresses cannot
be confused with local addresses.
remote_header_rewrite_domain = domain.invalid
The default, purist, setting: don't rewrite headers from remote
clients at all.
remote_header_rewrite_domain =
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.
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.
This feature is available in Postfix 2.1 and later. Earlier versions always resolve the null domain as the local hostname.
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.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.0 and later.
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 inter-operability problems with some SMTP servers.
This feature is available in Postfix 2.4.4 and later.
This feature is available in Postfix 2.1 and later.
The table search order is as follows:
Specify the types and names of databases to use. After change, run "ppoossttmmaapp //eettcc//ppoossttffiixx//sseennddeerr__bbcccc".
Note: if mail to the BCC address bounces it will be returned to the sender.
Note: automatic BCC recipients are produced only for new mail. To avoid mailer loops, automatic BCC recipients are not generated for mail that Postfix forwards internally, nor for mail that Postfix generates itself.
Example:
sender_bcc_maps = hash:/etc/postfix/sender_bcc
Specify one or more of: envelope_sender, header_sender
This feature is available in Postfix 2.2 and later.
Example: you want to rewrite the SENDER address "user@ugly.domain" to "user@pretty.domain", while still being able to send mail to the RECIPIENT address "user@ugly.domain".
Note: $sender_canonical_maps is processed before $canonical_maps.
Example:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
For safety reasons, this feature does not allow $number substitutions in regular expression maps.
This feature is available in Postfix 2.3 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
With "smtp_always_send_ehlo = no", Postfix sends EHLO only when the word "ESMTP" appears in the server greeting banner (example: 220 spike.porcupine.org ESMTP Postfix).
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:
/etc/postfix/master.cf: smtp ... smtp -o smtp_bind_address=11.22.33.44
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.
Note 2: address information may be enclosed inside [], but this form is not required here.
This feature is available in Postfix 2.2 and later.
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:
/etc/postfix/master.cf: smtp ... smtp -o smtp_bind_address6=1:2:3:4:5:6:7:8
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.
Note 2: address information may be enclosed inside [], but this form is not recommended here.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.2.9 and later.
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).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Specify a comma or white space separated list of destinations or pseudo-destinations:
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2. In Postfix 2.3 it is replaced by $smtp_connection_reuse_time_limit.
This feature is available in Postfix 2.2 and later.
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.
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.
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.
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.
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.
This feature is available in Postfix 2.3 and later.
When no response is received within the deadline, a warning is logged that the mail may be delivered multiple times.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
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.
Note: Postfix always ignores MX records with equal or worse preference than the local MTA itself.
This feature is available in Postfix 2.1 and later.
Setting this parameter to a value of 1 changes the meaning of smtp_destination_concurrency_limit from concurrency per domain into concurrency per recipient.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
Notes:
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.
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.
This feature is available in Postfix 2.2 and later. With Postfix 2.3 and later use smtp_tls_security_level instead.
By default, mail is returned to the sender when a destination is not found, and delivery is deferred when a destination is unreachable.
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.
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).
The table format and lookups are documented in ggeenneerriicc(5); examples are shown in the ADDRESS_REWRITING_README and STANDARD_CONFIGURATION_README documents.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.5 and later.
The default value is the machine hostname. Specify a hostname or [ip.add.re.ss].
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:
/etc/postfix/master.cf: mysmtp ... smtp -o smtp_helo_name=foo.bar.com
This feature is available in Postfix 2.0 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
Specify one of the following:
This feature is available in Postfix 2.1 and later.
By default, the line length is limited to 990 characters, because some server implementations cannot receive mail with long lines.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). The default time unit is s (seconds).
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.5 and later.
Choosing a too short time makes this workaround ineffective when sending large messages over slow network connections.
This feature is available in Postfix 2.4 and later.
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.
Specify 0 to enable the PIX firewall
"
This feature is available in Postfix 2.4 and later. The default
settings are backwards compatible with earlier Postfix versions.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
The default is to comply with RFC 2821. If you have to send mail to
a broken SMTP server, configure a special SMTP client in master.cf:
and route mail for the destination in question to the "broken-smtp"
message delivery with a ttrraannssppoorrtt(5) table.
This feature is available in Postfix 2.1 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
This feature is available in Postfix 2.1 and later.
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.
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.
This feature uses cryptographic hashing to protect plain-text
passwords, and requires that Postfix is compiled with TLS support.
Example:
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
Example:
Note: the setting "yes" overrides the global soft_bounce
parameter, but the setting "no" does not.
Example:
This feature is available in Postfix 2.5 and later.
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.
This feature is available in Postfix 2.2 and later.
Examples:
The Postfix SMTP client opens the lookup table before going to
chroot jail, so you can leave the password file in /etc/postfix.
This feature is available in Postfix 2.3 and later.
The following security features are defined for the ccyyrruuss
client SASL implementation:
Specify zero or more of the following:
Example:
This feature is available in Postfix 2.2 and later.
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 aanndd the server identity
is verified.
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.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.3 and later.
This allows an "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.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.3 and later.
By default, Postfix moves on the next mail exchanger. Specify
"smtp_skip_4xx_greeting = no" if Postfix should defer delivery
immediately.
This feature is available in Postfix 2.0 and earlier.
Later Postfix versions always skip SMTP servers that greet with a
4XX status code.
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. The default setting is incorrect, but
it is what a lot of people expect to happen.
This feature is available in Postfix 2.2 and later.
Example:
This feature is available in Postfix 2.2 and later.
To use this option in chroot mode, this directory (or a copy)
must be inside the chroot jail.
Example:
This feature is available in Postfix 2.2 and later.
Do not configure client certificates unless you mmuusstt 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:
The best way to use the default settings is to comment out the above
parameters in main.cf if present.
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).
Example: the certificate for "client.example.com" was issued by
"intermediate CA" which itself has a certificate issued by "root CA".
Create the client.pem file with "cat client_cert.pem intermediate_CA.pem
root_CA.pem > client.pem".
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 or smtp_tls_eccert_file.
A certificate supplied here must be usable as an SSL client certificate
and hence pass the "openssl verify -purpose sslclient ..." test.
Example:
This feature is available in Postfix 2.2 and later.
NNoottee:: do not use "" quotes around the parameter value.
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.
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.
Example:
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.
See the discussion under smtp_tls_cert_file for more details.
Example:
This feature is available in Postfix 2.2 and later.
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.
This feature is available in Postfix 2.2 and later.
See the discussion under smtp_tls_cert_file for more details.
Example:
This feature is available in Postfix 2.6 and later, when Postfix is
compiled and linked with OpenSSL 0.9.9 or later.
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.
This feature is available in Postfix 2.6 and later, when Postfix is
compiled and linked with OpenSSL 0.9.9 or later.
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.
Disabling the hostname verification can make sense in 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).
This feature is available in Postfix 2.2 and later. With
Postfix 2.3 and later use smtp_tls_security_level instead.
Examples (some of these will cause problems):
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.
This feature is available in Postfix 2.3 and later.
When an ssmmttpp__ttllss__ppoolliiccyy__mmaappss 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.
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.
Example: Certificate fingerprint verification with selected destinations.
As in the example above, we show two matching fingerprints:
This feature is available in Postfix 2.5 and later.
The default algorithm is mmdd55; this is consistent with
the backwards compatible setting of the digest used to verify client
certificates in the SMTP server.
The best practice algorithm is now sshhaa11. Recent advances in hash
function cryptanalysis have led to md5 being deprecated in favor of sha1.
However, as long as there are no known "second pre-image" attacks
against md5, its use in this context can still be considered safe.
While additional digest algorithms are often available with OpenSSL's
libcrypto, only those used by libssl in SSL cipher suites are available to
Postfix. For now this means just md5 or sha1.
To find the fingerprint of a specific certificate file, with a
specific digest algorithm, run:
The text to the right of "=" sign is the desired fingerprint.
For example:
This feature is available in Postfix 2.5 and later.
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.
Example:
This feature is available in Postfix 2.2 and later.
Use "smtp_tls_loglevel = 3" only in case of problems. Use of
loglevel 4 is strongly discouraged.
This feature is available in Postfix 2.2 and later.
The following cipher grades are supported:
This feature is available in Postfix 2.3 and later.
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.
This feature is available in Postfix 2.3 and later.
With Postfix >= 2.5 the parameter syntax is expanded to support
protocol exclusions. One can now explicitly exclude SSLv2 by setting
"smtp_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and
SSLv3 set "smtp_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing
the protocols to include, rather than protocols to exclude, is still
supported; use the form you find more intuitive.
Since SSL version 2 has known protocol weaknesses and is now
deprecated, the default setting excludes "SSLv2". This means that by
default, SSL version 2 will not be used at the "encrypt" security level
and higher.
See the documentation of the smtp_tls_policy_maps parameter and
TLS_README for more information about security levels.
Example:
This feature is available in Postfix 2.3 and later.
The logfile record looks like:
This feature is available in Postfix 2.2 and later.
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 _d_e_s_t_i_n_a_t_i_o_n.
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 ttrraannssppoorrtt(5)
table, the relayhost parameter, or the relay_transport parameter.
On the right hand side specify one of the following keywords:
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).
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.
This feature is available in Postfix 2.2 and later. With
Postfix 2.3 and later use smtp_tls_policy_maps instead.
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.
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.
When the lookup key is a domain name without enclosing square brackets
or any _:_p_o_r_t suffix (typically the recipient domain), and the full
domain is not found in the table, just as with the ttrraannssppoorrtt(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.
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:
Example:
NNoottee:: The hhoossttnnaammee strategy if listed in a non-default
setting of smtp_tls_secure_cert_match or in the mmaattcchh attribute
in the policy table can render the sseeccuurree level vulnerable to
DNS forgery. Do not use the hhoossttnnaammee strategy for secure-channel
configurations in environments where DNS security is not assured.
This feature is available in Postfix 2.3 and later.
In main.cf the values are separated by whitespace, commas or
colons. In the policy table (see smtp_tls_policy_maps) the only valid
separator is colon. An empty value means allow all protocols. The valid
protocol names, (see \fBfBSSL_get_version(3)), are "SSLv2", "SSLv3"
and "TLSv1".
To include a protocol list its name, to exclude it, prefix the name
with a "!" character. To exclude SSLv2 even for opportunistic TLS set
"smtp_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
"smtp_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to
include, is supported, but not recommended. OpenSSL provides no mechanisms
for excluding protocols not known at compile-time. If Postfix is linked
against an OpenSSL library that supports additional protocol versions,
they cannot be excluded using either syntax.
Example:
This feature is available in Postfix 2.6 and later.
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.
This feature is available in Postfix 2.2 and later.
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.
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.
Sample main.cf setting:
Sample policy table override:
This feature is available in Postfix 2.3 and later.
Specify one of the following security levels:
Examples:
This feature is available in Postfix 2.3 and later.
Note: ddbbmm databases are not suitable. TLS
session objects are too large.
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.
Example:
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
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.
Patterns specify domain names, or domain name suffixes:
Strategies specify a transformation from the next-hop domain
to the expected name in the server certificate:
Sample main.cf setting:
Sample policy table override:
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.2 and later. With
Postfix 2.3 and later use smtp_tls_security_level instead.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
This feature is available in Postfix 2.1 and later.
By default, no clients are allowed to specify XVERP.
This parameter was renamed with Postfix version 2.1. The default value
is backwards compatible with Postfix version 2.0.
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.
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.
This feature is available in Postfix 2.1 and later.
By default, no clients are allowed to specify XCLIENT.
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.
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.
This feature is available in Postfix 2.1 and later.
By default, no clients are allowed to specify XFORWARD.
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.
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.
You MUST specify $myhostname at the start of the text. This is
required by the SMTP protocol.
Example:
To disable this feature, specify a limit of 0.
WARNING: The purpose of this feature is to limit abuse. It must
not be used to regulate legitimate mail traffic.
This feature is available in Postfix 2.2 and later.
By default, a client can make as many connections per time unit as
Postfix can accept.
To disable this feature, specify a limit of 0.
WARNING: The purpose of this feature is to limit abuse. It must
not be used to regulate legitimate mail traffic.
This feature is available in Postfix 2.2 and later.
Example:
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).
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.
This feature is available in Postfix 2.2 and later.
By default, a client can send as many message delivery requests
per time unit as Postfix can accept.
To disable this feature, specify a limit of 0.
WARNING: The purpose of this feature is to limit abuse. It must
not be used to regulate legitimate mail traffic.
This feature is available in Postfix 2.2 and later.
Example:
By default, a remote SMTP client can negotiate as many new TLS
sessions per time unit as Postfix can accept.
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.
WARNING: The purpose of this feature is to limit abuse. It must
not be used to regulate legitimate mail traffic.
This feature is available in Postfix 2.3 and later.
Example:
This feature is available in Postfix 2.5 and later.
By default, a client can make as many recipient addresses per time
unit as Postfix can accept.
To disable this feature, specify a limit of 0.
WARNING: The purpose of this feature is to limit abuse. It must
not be used to regulate legitimate mail traffic.
This feature is available in Postfix 2.2 and later.
Example:
The default is to allow all connection requests.
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.
The following restrictions are specific to client hostname or
client network address information.
In addition, you can use any of the following
generic restrictions. These restrictions are applicable in
any SMTP command context.
Other restrictions that are valid in this context:
Example:
This feature is available in Postfix 2.0 and later.
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.
The following restrictions are valid in this context:
Examples:
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. This complicates the logfile analysis of multi-recipient mail.
This feature is available in Postfix 2.3 and later.
This feature is turned on by default because some clients apparently
mis-behave when the Postfix SMTP server rejects commands before
RCPT TO.
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.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
Notes:
This feature is available in Postfix 2.2 and later.
See smtpd_data_restrictions for syntax details.
Note 1: "smtpd_enforce_tls = yes" implies "smtpd_tls_auth_only = yes".
Note 2: when invoked via "sseennddmmaaiill --bbss", Postfix will never offer
STARTTLS due to insufficient privileges to access the server private
key. This is intended behavior.
This feature is available in Postfix 2.2 and later. With
Postfix 2.3 and later use smtpd_tls_security_level instead.
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.
The Postfix ETRN implementation accepts only destinations that are
eligible for the Postfix "fast flush" service. See the ETRN_README
file for details.
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.
The following restrictions are specific to the domain name information
received with the ETRN command.
Other restrictions that are valid in this context:
Example:
This parameter is not subjected to $parameter expansion.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.2 and later.
Example:
The default is to permit everything.
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.
The following restrictions are specific to the hostname information
received with the HELO or EHLO command.
Other restrictions that are valid in this context:
Examples:
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
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:" are specified, the local machine is
assumed. Pathname interpretation is relative to the Postfix queue
directory.
This feature is available in Postfix 2.1 and later.
The "inet:" and "unix:" prefixes are available in Postfix 2.3
and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
This feature is available in Postfix 2.1 and later.
By default, the Postfix SMTP server accepts:
IMPORTANT: If you change this parameter setting, you must specify
at least one of the following restrictions. Otherwise Postfix will
refuse to receive mail:
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.
The following restrictions are specific to the recipient address
that is received with the RCPT TO command.
Other restrictions that are valid in this context:
Example:
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.1 and later.
One major application is for implementing per-recipient UCE control.
See the RESTRICTION_CLASS_README document for other examples.
This feature is available in Postfix 2.1 and 2.2. With Postfix 2.3
it was renamed to smtpd_sasl_path.
If a remote SMTP client is authenticated, the permit_sasl_authenticated
access restriction can be used to permit relay access, like this:
To reject all SMTP connections from unauthenticated clients,
specify "smtpd_delay_reject = yes" (which is the default) and use:
See the SASL_README file for SASL configuration and operation details.
This feature is available in Postfix 2.3 and later.
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.
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 "/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.
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.
Example:
This feature is available in Postfix 2.1 and later.
By default, the local authentication realm name is the null string.
Examples:
This feature is available in Postfix 2.3 and later. In earlier
releases it was called ssmmttppdd__ssaassll__aapppplliiccaattiioonn__nnaammee.
The following security features are defined for the ccyyrruuss
server SASL implementation:
Restrict what authentication mechanisms the Postfix SMTP server
will offer to the client. The list of available authentication
mechanisms is system dependent.
Specify zero or more of the following:
By default, the Postfix SMTP server accepts plaintext passwords but
not anonymous logins.
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.
Example:
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.3 and later.
Specify zero or more "type:table" lookup tables. 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 _u_s_e_r_@_d_o_m_a_i_n:
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.
The default is to permit everything.
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.
The following restrictions are specific to the sender address
received with the MAIL FROM command.
Other restrictions that are valid in this context:
Examples:
This feature is available in Postfix 2.2 and later.
Note: if you set SMTP time limits to very large values you may have
to update the global ipc_timeout parameter.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
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 certificate
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 certificate 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.
Example:
This feature is available in Postfix 2.2 and later.
By default (see smtpd_tls_ask_ccert), client certificates are
not requested, and smtpd_tls_CApath should remain empty. In contrast
to smtp_tls_CAfile, DNs of certificate 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 certificate authorities to select the correct
client certificate. You may want to put your "preferred" CA or
CAs in $smtp_tls_CAfile, and install the remaining trusted CAs in
$smtpd_tls_CApath.
Example:
This feature is available in Postfix 2.2 and later.
With Postfix 2.3 and later the Postfix SMTP server can disable
session id generation when TLS session caching is turned off. This
keeps clients from caching sessions that almost certainly cannot
be re-used.
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.
Example:
This feature is available in Postfix 2.3 and later.
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.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
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.
This feature is available in Postfix 2.2 and later.
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.
For servers that are nnoott public Internet MX hosts, Postfix
2.3 supports configurations with no certificates. This entails the
use of just the anonymous TLS ciphers, which are not supported by
typical SMTP clients. Since such clients will not, as a rule, fall
back to plain text after a TLS handshake failure, the server will
be unable to receive email from TLS enabled clients. To avoid
accidental configurations with no certificates, Postfix 2.3 enables
certificate-less operation only when the administrator explicitly
sets "smtpd_tls_cert_file = none". This ensures that new Postfix
configurations will not accidentally run with no certificates.
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.
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).
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".
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 or
smtpd_tls_dcert_file.
A certificate supplied here must be usable as an SSL server certificate
and hence pass the "openssl verify -purpose sslserver ..." test.
Example:
This feature is available in Postfix 2.2 and later.
NNoottee:: do not use "" quotes around the parameter value.
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.
When TLS is mandatory the cipher grade is chosen via the
smtpd_tls_mandatory_ciphers configuration parameter, see there for syntax
details.
Example:
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.
See the discussion under smtpd_tls_cert_file for more details.
Example:
This feature is available in Postfix 2.2 and later.
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 command:
Your actual source for entropy may differ. Some systems have
/dev/random; on other system you may consider using the "Entropy
Gathering Daemon EGD", available at http://egd.sourceforge.net/
Example:
This feature is available with Postfix version 2.2.
See also the discussion under the smtpd_tls_dh1024_param_file
configuration parameter.
Example:
This feature is available with Postfix version 2.2.
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.
This feature is available in Postfix 2.2 and later.
See the discussion under smtpd_tls_cert_file for more details.
Example:
This feature is available in Postfix 2.6 and later, when Postfix is
compiled and linked with OpenSSL 0.9.9 or later.
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.
This feature is available in Postfix 2.6 and later, when Postfix is
compiled and linked with OpenSSL 0.9.9 or later.
The available choices are:
This feature is available in Postfix 2.6 and later, when it is
compiled and linked with OpenSSL 0.9.9 or later.
Examples (some of these will cause problems):
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.
This feature is available in Postfix 2.3 and later.
The best practice algorithm is now sshhaa11. Recent advances in hash
function cryptanalysis have led to md5 being deprecated in favor of sha1.
However, as long as there are no known "second pre-image" attacks
against md5, its use in this context can still be considered safe.
While additional digest algorithms are often available with OpenSSL's
libcrypto, only those used by libssl in SSL cipher suites are available to
Postfix. For now this means just md5 or sha1.
To find the fingerprint of a specific certificate file, with a
specific digest algorithm, run:
The text to the right of "=" sign is the desired fingerprint.
For example:
Example: client-certificate access table, with sha1 fingerprints:
This feature is available in Postfix 2.5 and later.
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.
Use "smtpd_tls_loglevel = 3" only in case of problems. Use of
loglevel 4 is strongly discouraged.
This feature is available in Postfix 2.2 and later.
The following cipher grades are supported:
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
With Postfix >= 2.5 the parameter syntax is expanded to support
protocol exclusions. One can now explicitly exclude SSLv2 by setting
"smtpd_tls_mandatory_protocols = !SSLv2". To exclude both SSLv2 and
SSLv3 set "smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3". Listing
the protocols to include, rather than protocols to exclude, is still
supported, use the form you find more intuitive.
Since SSL version 2 has known protocol weaknesses and is now
deprecated, the default setting excludes "SSLv2". This means that
by default, SSL version 2 will not be used at the "encrypt" security
level.
Example:
This feature is available in Postfix 2.3 and later.
In main.cf the values are separated by whitespace, commas or
colons. An empty value means allow all protocols. The valid protocol
names, (see \fBfBSSL_get_version(3)), are "SSLv2", "SSLv3" and
"TLSv1". In smtp_tls_policy_maps table entries, "protocols" attribute
values are separated by a colon.
To include a protocol list its name, to exclude it, prefix the name
with a "!" character. To exclude SSLv2 even for opportunistic TLS set
"smtpd_tls_protocols = !SSLv2". To exclude both "SSLv2" and "SSLv3" set
"smtpd_tls_protocols = !SSLv2, !SSLv3". Explicitly listing the protocols to
include, is supported, but not recommended. OpenSSL provides no mechanisms
for excluding protocols not known at compile-time. If Postfix is linked
against an OpenSSL library that supports additional protocol versions,
they cannot be excluded using either syntax.
Example:
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.2 and later.
When TLS encryption is optional, this setting is ignored with
a warning written to the mail log.
This feature is available in Postfix 2.2 and later.
Specify one of the following security levels:
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 SMTP client certificates, see TLS_README for a discussion
of the smtpd_tls_ask_ccert, smtpd_tls_req_ccert, and permit_tls_clientcerts
features.
Note 2: The parameter setting "smtpd_tls_security_level =
encrypt" implies "smtpd_tls_auth_only = yes".
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.
This feature is available in Postfix 2.3 and later.
Note: ddbbmm databases are not suitable. TLS
session objects are too large.
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.
Example:
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
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 (smtps) was once chosen for this
purpose.
This feature is available in Postfix 2.2 and later.
Note: when invoked via "sseennddmmaaiill --bbss", Postfix will never offer
STARTTLS due to insufficient privileges to access the server private
key. This is intended behavior.
This feature is available in Postfix 2.2 and later. With
Postfix 2.3 and later use smtpd_tls_security_level instead.
Example:
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
This feature is available in Postfix 2.5 and later.
This feature should not be enabled on a general purpose mail server,
because it is likely to reject legitimate email.
This feature is available in Postfix 2.0 and later.
This feature should not be enabled on a general purpose mail server,
because it is likely to reject legitimate email.
This feature is available in Postfix 2.0 and later.
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).
This feature should not be enabled on a general purpose mail server,
because it is likely to reject legitimate email.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.5.3 and later.
This feature should not be enabled on a general purpose mail server,
because it will reject mail after a single violation.
This feature is available in Postfix 2.0 and later.
By default, the Postfix SMTP server accepts RFC 822 syntax in MAIL
FROM and RCPT TO addresses.
Note: with Postfix version 2.2, message header address rewriting
happens only when one of the following conditions is true:
To get the behavior before Postfix version 2.2, specify
"local_header_rewrite_clients = static:all".
Example:
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.
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.
To change this parameter without stopping Postfix, you need to
first terminate all Postfix TCP servers:
This immediately terminates all processes that accept network
connections. Next, you enable Postfix TCP servers with the updated
tcp_windowsize setting:
If you skip these steps with a running Postfix system, then the
tcp_windowsize change will work only for Postfix TCP clients (ssmmttpp(8),
llmmttpp(8)).
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.2 and later.
This default curve is specified in NSA "Suite B" Cryptography
(see http://www.nsa.gov/ia/industry/crypto_suite_b.cfm) for
information classified as SECRET.
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.
This feature is available in Postfix 2.6 and later, when it is
compiled and linked with OpenSSL 0.9.9 or later.
This default "ultra" curve is specified in NSA "Suite B" Cryptography
(see http://www.nsa.gov/ia/industry/crypto_suite_b.cfm) for information
classified as TOP SECRET.
This feature is available in Postfix 2.6 and later, when it is
compiled and linked with OpenSSL 0.9.9 or later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.3 and later.
This feature is available in Postfix 2.2 and later.
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.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.2 and later.
Note: on OpenBSD systems specify /dev/arandom when /dev/urandom
gives timeout errors.
This feature is available in Postfix 2.2 and later.
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
This feature is available in Postfix 2.5 and later.
Specify zero or more "type:table" lookup tables. If you use this
feature with local files, run "ppoossttmmaapp //eettcc//ppoossttffiixx//ttrraannssppoorrtt"
after making a change.
For safety reasons, as of Postfix 2.3 this feature does not
allow $number substitutions in regular expression maps.
Examples:
This feature is available in Postfix 2.4 and later.
This feature is available in Postfix 2.4 and later.
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
The default time unit is s (seconds).
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.6 and later.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.6 and later.
Do not change this unless you have a complete understanding of RFC 2821.
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.
Example:
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
This feature is available in Postfix 2.0 and later.
Unlike elsewhere in Postfix, you can specify 250 in order to
accept the address anyway.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.6 and later.
Unlike elsewhere in Postfix, you can specify 250 in order to
accept the address anyway.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.1 and later.
Example:
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
Unlike elsewhere in Postfix, you can specify 250 in order to
accept the address anyway.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.6 and later.
Unlike elsewhere in Postfix, you can specify 250 in order to
accept the address anyway.
Do not change this unless you have a complete understanding of RFC 2821.
This feature is available in Postfix 2.1 and later.
Example:
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 2.6 and later.
This feature is available in Postfix 1.1 and later.
This feature is available in Postfix 2.0 and later. The default
value is backwards compatible with Postfix version 1.1.
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).
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 lookup string
(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.
See also the VIRTUAL_README and ADDRESS_CLASS_README documents
for further information.
Example:
This feature is available in Postfix 2.1 and later.
This feature is available in Postfix 2.0 and later. The default
value is backwards compatible with Postfix version 1.1.
If you use this feature with indexed files, run "ppoossttmmaapp
//eettcc//ppoossttffiixx//vviirrttuuaall" after changing the file.
Examples:
This feature is available in Postfix 2.1 and later.
Setting this parameter to a value of 1 changes the meaning of
virtual_destination_concurrency_limit from concurrency per domain
into concurrency per recipient.
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.
When a recipient address has an optional address extension
(user+foo@domain.tld), the vviirrttuuaall(8) delivery agent looks up
the full address first, and when the lookup fails, it looks up the
unextended address (user@domain.tld).
Note 1: for security reasons, the vviirrttuuaall(8) delivery agent disallows
regular expression substitution of $1 etc. in regular expression
lookup tables, because that would open a security hole.
Note 2: for security reasons, the vviirrttuuaall(8) delivery agent will
silently ignore requests to use the pprrooxxyymmaapp(8) server. Instead
it will open the table directly. Before Postfix version 2.2, the
vviirrttuuaall(8) delivery agent will terminate with a fatal error.
Example:
This parameter expects the same syntax as the mydestination
configuration parameter.
This feature is available in Postfix 2.0 and later. The default
value is backwards compatible with Postfix version 1.1.
This setting is ignored with mmaaiillddiirr style delivery, because
such deliveries are safe without application-level locks.
Note 1: the ddoottlloocckk method requires that the recipient UID
or GID has write access to the parent directory of the recipient's
mailbox file.
Note 2: the default setting of this parameter is system dependent.
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.
The vviirrttuuaall(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.
When a recipient address has an optional address extension
(user+foo@domain.tld), the vviirrttuuaall(8) delivery agent looks up
the full address first, and when the lookup fails, it looks up the
unextended address (user@domain.tld).
Note 1: for security reasons, the vviirrttuuaall(8) delivery agent disallows
regular expression substitution of $1 etc. in regular expression
lookup tables, because that would open a security hole.
Note 2: for security reasons, the vviirrttuuaall(8) delivery agent will
silently ignore requests to use the pprrooxxyymmaapp(8) server. Instead
it will open the table directly. Before Postfix version 2.2, the
vviirrttuuaall(8) delivery agent will terminate with a fatal error.
Specify a string of the form _t_r_a_n_s_p_o_r_t_:_n_e_x_t_h_o_p, where _t_r_a_n_s_p_o_r_t
is the name of a mail delivery transport defined in master.cf.
The _:_n_e_x_t_h_o_p part is optional. For more details see the
ttrraannssppoorrtt(5) manual page.
This feature is available in Postfix 2.0 and later.
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.
When a recipient address has an optional address extension
(user+foo@domain.tld), the vviirrttuuaall(8) delivery agent looks up
the full address first, and when the lookup fails, it looks up the
unextended address (user@domain.tld).
Note 1: for security reasons, the vviirrttuuaall(8) delivery agent disallows
regular expression substitution of $1 etc. in regular expression
lookup tables, because that would open a security hole.
Note 2: for security reasons, the vviirrttuuaall(8) delivery agent will
silently ignore requests to use the pprrooxxyymmaapp(8) server. Instead
it will open the table directly. Before Postfix version 2.2, the
vviirrttuuaall(8) delivery agent will terminate with a fatal error.
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.
smtp_quit_timeout (default: 300s)
The SMTP client time limit for sending the QUIT command, and for
receiving the server response.
smtp_quote_rfc821_envelope (default: yes)
Quote addresses in SMTP MAIL FROM and RCPT TO commands as required
by RFC 2821. This includes putting quotes around an address localpart
that ends in ".".
/etc/postfix/master.cf:
broken-smtp . . . smtp -o smtp_quote_rfc821_envelope=no
smtp_randomize_addresses (default: yes)
Randomize the order of equal-preference MX host addresses. This
is a performance feature of the Postfix SMTP client.
smtp_rcpt_timeout (default: 300s)
The SMTP client time limit for sending the SMTP RCPT TO command, and
for receiving the server response.
smtp_rset_timeout (default: 20s)
The SMTP client time limit for sending the RSET command, and
for receiving the 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.
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 no 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.
smtp_sasl_auth_cache_name = proxy:btree:/var/db/postfix/sasl_auth_cache
smtp_sasl_auth_cache_time (default: 90d)
The maximal age of an smtp_sasl_auth_cache_name entry before it
is removed.
smtp_sasl_auth_enable (default: no)
Enable SASL authentication in the Postfix SMTP client. By default,
the Postfix SMTP client uses no authentication.
smtp_sasl_auth_enable = yes
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.
# Default as of Postfix 2.5
smtp_sasl_auth_soft_bounce = yes
# The old hard-coded default
smtp_sasl_auth_soft_bounce = no
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 further restricts what server
mechanisms the client will take into consideration.
smtp_sasl_mechanism_filter = plain, login
smtp_sasl_mechanism_filter = /etc/postfix/smtp_mechs
smtp_sasl_mechanism_filter = !gssapi, !login, static:rest
smtp_sasl_password_maps (default: empty)
Optional SMTP client lookup tables with one username:password entry
per remote hostname or domain, or sender address 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.
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
ssmmttpp__ssaassll__ttyyppee. Typically this specifies the name of a
configuration file or rendezvous point.
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 ssmmttpp__ssaassll__ttyyppee.
smtp_sasl_security_options = noplaintext
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.
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.
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
"ppoossttccoonnff --AA" command.
smtp_send_xforward_command (default: no)
Send the non-standard XFORWARD command when the Postfix SMTP server
EHLO response announces XFORWARD support.
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.
smtp_skip_4xx_greeting (default: yes)
Skip SMTP servers that greet with a 4XX status code (go away, try
again later).
smtp_skip_5xx_greeting (default: yes)
Skip SMTP servers that greet with a 5XX status code (go away, do
not try again later).
smtp_skip_quit_response (default: yes)
Do not wait for the response to the SMTP QUIT command.
smtp_starttls_timeout (default: 300s)
Time limit for Postfix SMTP client write and read operations
during TLS startup and shutdown handshake procedures.
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 ssmmttpp(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 ssmmttpp(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.
smtp_tls_CAfile = /etc/postfix/CAcert.pem
smtp_tls_CApath (default: empty)
Directory with PEM format certificate 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".
smtp_tls_CApath = /etc/postfix/certs
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.
smtp_tls_cert_file =
smtp_tls_key_file =
smtp_tls_dcert_file =
smtp_tls_dkey_file =
smtp_tls_eccert_file =
smtp_tls_eckey_file =
smtp_tls_cert_file = /etc/postfix/client.pem
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 inter-operability 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.
smtp_tls_ciphers (default: export)
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 "export" ensures maximum
inter-operability. Because encryption is optional, stronger controls
are not appropriate, and this setting SHOULD NOT be changed unless the
change is essential.
smtp_tls_ciphers = export
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.
smtp_tls_dcert_file = /etc/postfix/client-dsa.pem
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.
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.
smtp_tls_eccert_file = /etc/postfix/ecdsa-ccert.pem
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.
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.
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 aallll the properties are excluded.
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
smtp_tls_fingerprint_cert_match (default: empty)
List of acceptable remote SMTP server certificate fingerprints
for the "fingerprint" TLS security level (ssmmttpp__ttllss__sseeccuurriittyy__lleevveell =
fingerprint). At this security level, certificate authorities are
not used, and certificate expiration times are ignored. Instead,
server certificates are verified directly via their "fingerprint". The
fingerprint is a message digest of the server certificate. The digest
algorithm is selected via the ssmmttpp__ttllss__ffiinnggeerrpprriinntt__ddiiggeesstt
parameter.
relayhost = [mailhub.example.com]
smtp_tls_security_level = fingerprint
smtp_tls_fingerprint_digest = md5
smtp_tls_fingerprint_cert_match =
3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
/etc/postfix/main.cf:
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
smtp_tls_fingerprint_digest = md5
/etc/postfix/tls_policy:
example.com fingerprint
match=3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
match=EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
smtp_tls_fingerprint_digest (default: md5)
The message digest algorithm used to construct remote SMTP server
certificate fingerprints. At the "fingerprint" TLS security level
(ssmmttpp__ttllss__sseeccuurriittyy__lleevveell = fingerprint), the server certificate is
verified by directly matching its _f_i_n_g_e_r_p_r_i_n_t. The fingerprint
is the message digest of the server certificate 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 that has the same fingerprint.
$ openssl x509 -noout -fingerprint -_d_i_g_e_s_t -in _c_e_r_t_f_i_l_e.pem
$ openssl x509 -noout -fingerprint -sha1 -in cert.pem
SHA1 Fingerprint=D4:6A:AB:19:24:79:F8:32:BB:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A
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.
smtp_tls_key_file = $smtp_tls_cert_file
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.
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 crypt-analytic methods. See
smtp_tls_policy_maps for information on how to configure ciphers
on a per-destination basis.
smtp_tls_mandatory_exclude_ciphers (default: empty)
Additional list of ciphers or cipher types to exclude from the
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).
smtp_tls_mandatory_protocols (default: SSLv3, TLSv1)
List of SSL/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. The valid protocol names, (see
\fBfBSSL_get_version(3)), are "SSLv2", "SSLv3" and "TLSv1".
smtp_tls_mandatory_protocols = TLSv1
# Alternative form with Postfix >= 2.5:
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
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.
postfix/smtp[pid]: Host offered STARTTLS: [name.of.host]
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.
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.
/etc/postfix/main.cf:
smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
# Postfix 2.5 and later
smtp_tls_fingerprint_digest = md5
/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=EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
match=3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
smtp_tls_protocols (default: !SSLv2)
List of TLS protocols that the Postfix SMTP client will exclude or
include with opportunistic TLS encryption. Starting with Postfix 2.6,
the Postfix SMTP client will by default not use the obsolete SSLv2
protocol.
# TLSv1 only!
smtp_tls_protocols = !SSLv2, !SSLv3
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.
smtp_tls_secure_cert_match (default: nexthop, dot-nexthop)
The server certificate peername verification method 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.
smtp_tls_secure_cert_match = nexthop
example.net secure match=example.com:.example.com
.example.net secure match=example.com:.example.com
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.
# No TLS. Formerly: smtp_use_tls=no and smtp_enforce_tls=no.
smtp_tls_security_level = none
# Opportunistic TLS.
smtp_tls_security_level = may
# Postfix >= 2.6:
# Do not tweak opportunistic ciphers 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 from "export" to "low" or "medium").
smtp_tls_ciphers = export
smtp_tls_protocols = !SSLv2
# Mandatory (high-grade) TLS encryption.
smtp_tls_security_level = encrypt
smtp_tls_mandatory_ciphers = high
# Mandatory TLS verification of hostname or nexthop domain.
smtp_tls_security_level = verify
smtp_tls_mandatory_ciphers = high
smtp_tls_verify_cert_match = hostname, nexthop, dot-nexthop
# Secure channel TLS with exact nexthop name match.
smtp_tls_security_level = secure
smtp_tls_mandatory_protocols = TLSv1
smtp_tls_mandatory_ciphers = high
smtp_tls_secure_cert_match = nexthop
# 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 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 = !SSLv2, !SSLv3
smtp_tls_mandatory_ciphers = high
smtp_tls_fingerprint_cert_match =
3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
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 bbttrreeee or ssddbbmm; there is no need to support
concurrent access. The file is created if it does not exist. The ssmmttpp(8)
daemon does not use this parameter directly, rather the cache is
implemented indirectly in the ttllssmmggrr(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 ttllssmmggrr(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.
smtp_tls_session_cache_database = btree:/var/db/postfix/smtp_scache
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
ttllssmmggrr(8) daemon and therefore per-smtp-instance master.cf overrides
are not possible.
smtp_tls_verify_cert_match (default: hostname)
The server certificate peername verification method 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.
smtp_tls_verify_cert_match = hostname, nexthop, dot-nexthop
example.com verify match=hostname:nexthop
.example.com verify match=example.com:.example.com:hostname
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.
smtp_xforward_timeout (default: 300s)
The SMTP client time limit for sending the XFORWARD command, and
for receiving the server response.
smtpd_authorized_verp_clients (default: $authorized_verp_clients)
What 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.
smtpd_authorized_xclient_hosts (default: empty)
What SMTP clients are allowed to use the XCLIENT feature. This
command overrides 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.
smtpd_authorized_xforward_hosts (default: empty)
What 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.
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.
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
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.
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.
smtpd_client_connection_rate_limit = 1000
smtpd_client_event_limit_exceptions (default: $mynetworks)
Clients that are excluded from connection count, connection rate,
or SMTP request rate restrictions. See the mynetworks parameter
description for the parameter value syntax.
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.
smtpd_client_message_rate_limit = 1000
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.
smtpd_client_new_tls_session_rate_limit = 100
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".
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.
smtpd_client_recipient_rate_limit = 1000
smtpd_client_restrictions (default: empty)
Optional SMTP server access restrictions in the context of a client
SMTP connection request.
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
restriction lists" for a discussion of evaluation context and time.
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 _r_b_l___d_o_m_a_i_n.
This feature is available in Postfix 2.0 and later.
This is a
stronger restriction than the reject_unknown_reverse_client_hostname
feature, which triggers only under condition 1) above.
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.
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.
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.
This feature is available in Postfix 2.3 and
later.
The defer_code parameter specifies
the SMTP server reply code (default: 450).
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.
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.
The plaintext_reject_code parameter specifies the response
code for rejected requests (default: 450). This feature is available
in Postfix 2.3 and later.
With Postfix 2.6 and later, the SMTP server sets a per-session
flag whenever it detects illegal pipelining, including pipelined
EHLO or HELO commands. The reject_unauth_pipelining feature simply
tests whether the flag was set at any point in time during the
session.
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.
/etc/postfix/main.cf:
smtpd_client_restrictions =
sleep 1, reject_unauth_pipelining
smtpd_delay_reject = no
This feature is available in Postfix 2.3.
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client_hostname
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.
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_data_restrictions = reject_multi_recipient_bounce
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 SMTP server receives a valid MAIL FROM command.
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.
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 SMTP 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.
smtpd_discard_ehlo_keywords (default: empty)
A case insensitive list of EHLO keywords (pipelining, starttls,
auth, etc.) that the SMTP server will not send in the EHLO response
to a remote SMTP client.
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.
smtpd_enforce_tls (default: no)
Mandatory TLS: announce STARTTLS support to SMTP clients,
and require that clients use TLS encryption. According to RFC 2487
this MUST NOT be applied in case of a publicly-referenced SMTP
server. This option is off by default and should be used only on
dedicated servers.
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.
smtpd_etrn_restrictions (default: empty)
Optional SMTP server access restrictions in the context of a client
ETRN request.
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
restriction lists" for a discussion of evaluation context and time.
smtpd_etrn_restrictions = permit_mynetworks, reject
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.
smtpd_forbidden_commands (default: CONNECT, GET, POST)
List of commands that causes 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.
smtpd_hard_error_limit (default: normal: 20, stress: 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 exceeded. Normally the default limit is 20, but
it changes under overload to just 1 with Postfix 2.6 and later.
smtpd_helo_required (default: no)
Require that a remote SMTP client introduces itself at the beginning
of an SMTP session with the HELO or EHLO command.
smtpd_helo_required = yes
smtpd_helo_restrictions (default: empty)
Optional restrictions that the Postfix SMTP server applies in the
context of the SMTP HELO command.
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
restriction lists" for a discussion of evaluation context and time.
The invalid_hostname_reject_code specifies the response
code for rejected requests (default: 501).
The
non_fqdn_reject_code parameter specifies the response code for
rejected requests (default: 504).
The unknown_hostname_reject_code parameter
specifies the numerical response code for rejected requests (default:
450).
The unknown_helo_hostname_tempfail_action parameter
specifies the action after a temporary DNS error (default:
defer_if_permit).
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname
smtpd_helo_restrictions = permit_mynetworks, reject_unknown_helo_hostname
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.
smtpd_junk_command_limit (default: normal: 100, stress: 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.6 and later.
smtpd_milters (default: empty)
A list of Milter (mail filter) applications for new mail that
arrives via the Postfix ssmmttppdd(8) server. See the MILTER_README
document for details.
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.
smtpd_null_access_lookup_key (default: <>)
The lookup key to be used in SMTP aacccceessss(5) tables instead of the
null sender address.
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.
smtpd_policy_service_max_idle (default: 300s)
The time after which an idle SMTPD policy service connection is
closed.
smtpd_policy_service_max_ttl (default: 1000s)
The time after which an active SMTPD policy service connection is
closed.
smtpd_policy_service_timeout (default: 100s)
The time limit for connecting to, writing to or receiving from a
delegated SMTPD policy server.
smtpd_proxy_ehlo (default: $myhostname)
How the Postfix SMTP server announces itself to the proxy filter.
By default, the Postfix hostname is used.
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.
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.
smtpd_recipient_limit (default: 1000)
The maximal number of recipients that the Postfix SMTP server
accepts per message delivery request.
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.
smtpd_recipient_restrictions (default: permit_mynetworks, reject_unauth_destination)
The access restrictions that the Postfix SMTP server applies in
the context of the RCPT TO command.
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
restriction lists" for a discussion of evaluation context and time.
reject, defer, defer_if_permit, reject_unauth_destination
The
non_fqdn_reject_code parameter specifies the response code for
rejected requests (default: 504).
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 _r_b_l___d_o_m_a_i_n. This feature is available
in Postfix version 2.0 and later.
The
unknown_address_reject_code parameter specifies the numerical
response code for rejected requests (default: 450). The response
is always 450 in case of a temporary DNS error.
The
unknown_address_tempfail_action parameter specifies the action
after a temporary DNS error (default: defer_if_permit).
The
unverified_recipient_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).
The unverified_recipient_defer_code parameter specifies the
numerical response code when an address probe failed due to a
temporary problem (default: 450).
The
unverified_recipient_tempfail_action parameter specifies the action
after addres probe failure due to a temporary problem (default:
defer_if_permit).
This feature is available in Postfix 2.1
and later.
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
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.
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.
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 aacccceessss(5) table.
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 ssmmttppdd, corresponding to a SASL configuration file named
ssmmttppdd..ccoonnff.
smtpd_sasl_auth_enable (default: no)
Enable SASL authentication in the Postfix SMTP server. By default,
the Postfix SMTP server does not use authentication.
smtpd_recipient_restrictions =
permit_mynetworks, permit_sasl_authenticated, ...
smtpd_client_restrictions = permit_sasl_authenticated, reject
smtpd_sasl_authenticated_header (default: no)
Report the SASL authenticated user name in the ssmmttppdd(8) Received
message header.
smtpd_sasl_exceptions_networks (default: empty)
What remote SMTP clients the Postfix SMTP server will not offer
AUTH support to.
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_local_domain (default: empty)
The name of the Postfix SMTP server's local SASL authentication
realm.
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_local_domain = $myhostname
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
ssmmttppdd__ssaassll__ttyyppee. Typically this specifies the name of a
configuration file or rendezvous point.
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 ssmmttppdd__ssaassll__ttyyppee.
smtpd_sasl_security_options = noanonymous, noplaintext
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.
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
"ppoossttccoonnff --aa" command.
smtpd_sender_login_maps (default: empty)
Optional lookup table with the SASL login names that own sender
(MAIL FROM) addresses.
smtpd_sender_restrictions (default: empty)
Optional restrictions that the Postfix SMTP server applies in the
context of the MAIL FROM command.
See SMTPD_ACCESS_README, section "Delayed evaluation of SMTP access
restriction lists" for a discussion of evaluation context and time.
The
non_fqdn_reject_code parameter specifies the response code for
rejected requests (default: 504).
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 _r_b_l___d_o_m_a_i_n.
This feature is available in Postfix 2.0 and later.
The
unknown_address_reject_code parameter specifies the numerical
response code for rejected requests (default: 450). The response
is always 450 in case of a temporary DNS error.
The
unknown_address_tempfail_action parameter specifies the action
after a temporary DNS error (default: defer_if_permit).
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).
The unverified_sender_defer_code specifies the numerical response
code when an address address probe failed due to a temporary problem
(default: 450).
The unverified_sender_tempfail_action parameter
specifies the action after address probe failure due to a temporary
problem (default: defer_if_permit).
This feature is available
in Postfix 2.1 and later.
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_sender_restrictions = reject_unknown_sender_domain,
check_sender_access hash:/etc/postfix/access
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.
smtpd_starttls_timeout (default: 300s)
The time limit for Postfix SMTP server write and read operations
during TLS startup and shutdown handshake procedures.
smtpd_timeout (default: normal: 300s, stress: 10s)
The time limit for sending a Postfix SMTP server response and for
receiving a remote SMTP client request. Normally the default limit
is 300s, but it changes under overload to just 10s with Postfix 2.6
and later.
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 ssmmttppdd(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 ssmmttppdd(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.
smtpd_tls_CAfile = /etc/postfix/CAcert.pem
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.
smtpd_tls_CApath = /etc/postfix/certs
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.
smtpd_tls_always_issue_session_ids = no
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.
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.
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.
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.
smtpd_tls_cert_file = /etc/postfix/server.pem
smtpd_tls_cipherlist (default: empty)
Obsolete Postfix < 2.3 control for the Postfix SMTP server TLS
cipher list. It is easy to create inter-operability 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.
smtpd_tls_ciphers (default: export)
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 "export" ensures maximum
inter-operability. Because encryption is optional, stronger controls
are not appropriate, and this setting SHOULD NOT be changed unless the
change is essential.
smtpd_tls_ciphers = export
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.
smtpd_tls_dcert_file = /etc/postfix/server-dsa.pem
smtpd_tls_dh1024_param_file (default: empty)
File with DH parameters that the Postfix SMTP server should
use with EDH ciphers.
openssl gendh -out /etc/postfix/dh_1024.pem -2 1024
smtpd_tls_dh1024_param_file = /etc/postfix/dh_1024.pem
smtpd_tls_dh512_param_file (default: empty)
File with DH parameters that the Postfix SMTP server should
use with EDH ciphers.
smtpd_tls_dh512_param_file = /etc/postfix/dh_512.pem
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.
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.
smtpd_tls_eccert_file = /etc/postfix/ecdsa-scert.pem
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.
smtpd_tls_eecdh_grade (default: see postconf -d output)
The Postfix SMTP server security grade for ephemeral elliptic-curve
Diffie-Hellman (EECDH) key exchange.
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 aallll the properties are excluded.
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
smtpd_tls_fingerprint_digest (default: md5)
The message digest algorithm used to construct client-certificate
fingerprints for cchheecckk__cccceerrtt__aacccceessss and
ppeerrmmiitt__ttllss__cclliieennttcceerrttss. The default algorithm is mmdd55,
for backwards compatibility with Postfix releases prior to 2.5.
$ openssl x509 -noout -fingerprint -_d_i_g_e_s_t -in _c_e_r_t_f_i_l_e.pem
$ openssl x509 -noout -fingerprint -sha1 -in cert.pem
SHA1 Fingerprint=D4:6A:AB:19:24:79:F8:32:BB:A6:CB:66:82:C0:8E:9B:EE:29:A8:1A
/etc/postfix/main.cf:
smtpd_tls_fingerprint_digest = sha1
smtpd_client_restrictions =
check_ccert_access hash:/etc/postfix/access,
reject
/etc/postfix/access:
# Action folded to next line...
AF:88:7C:AD:51:95:6F:36:96:F6:01:FB:2E:48:CD:AB:49:25:A2:3B
OK
85:16:78:FD:73:6E:CE:70:E0:31:5F:0D:3C:C8:6D:C4:2C:24:59:E1
permit_auth_destination
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.
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.
smtpd_tls_mandatory_ciphers (default: medium)
The minimum TLS cipher grade that the Postfix SMTP server
will use with mandatory TLS encryption. 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.
smtpd_tls_mandatory_exclude_ciphers (default: empty)
Additional list of ciphers or cipher types to exclude from the
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).
smtpd_tls_mandatory_protocols (default: SSLv3, TLSv1)
The SSL/TLS protocols accepted by the Postfix SMTP server with
mandatory TLS encryption. If the list is empty, the server supports all
available SSL/TLS protocol versions. A non-empty value is a list
of protocol
names separated by whitespace, commas or colons. The supported protocol
names are "SSLv2", "SSLv3" and "TLSv1", and are not case sensitive.
smtpd_tls_mandatory_protocols = TLSv1
# Alternative form with Postfix >= 2.5:
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols (default: empty)
List of TLS protocols that the Postfix SMTP server will exclude
or include with opportunistic TLS encryption. This parameter SHOULD be
left at its default empty value, allowing all protocols to be used with
opportunistic TLS.
smtpd_tls_protocols = !SSLv2
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 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.
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".
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".
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 bbttrreeee or ssddbbmm; there is no need to support
concurrent access. The file is created if it does not exist. The ssmmttppdd(8)
daemon does not use this parameter directly, rather the cache is
implemented indirectly in the ttllssmmggrr(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 ttllssmmggrr(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.
smtpd_tls_session_cache_database = btree:/var/db/postfix/smtpd_scache
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
ttllssmmggrr(8) daemon and therefore per-smtpd-instance master.cf overrides
are not possible.
smtpd_tls_wrappermode (default: no)
Run the Postfix SMTP server in the non-standard "wrapper" mode,
instead of using the STARTTLS command.
smtpd_use_tls (default: no)
Opportunistic TLS: announce STARTTLS support to SMTP clients,
but do not require that clients use TLS encryption.
soft_bounce (default: no)
Safety net to keep mail queued that would otherwise be returned to
the sender. This parameter disables locally-generated bounces,
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.
soft_bounce = yes
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.
stress (default: empty)
This feature is documented in the STRESS_README document.
strict_7bit_headers (default: no)
Reject mail with 8-bit text in message headers. This blocks mail
from poorly written applications.
strict_8bitmime (default: no)
Enable both strict_7bit_headers and strict_8bitmime_body.
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.
strict_mailbox_ownership (default: yes)
Defer delivery when a mailbox file is not owned by its recipient.
The default setting is not backwards compatible.
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.
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.
sun_mailtool_compatibility (default: no)
Obsolete SUN mailtool compatibility feature. Instead, use
"mailbox_delivery_lock = dotlock".
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.
swap_bangpath = no
syslog_facility (default: mail)
The syslog facility of Postfix logging. Specify a facility as
defined in syslog.ccoonnff(5). The default facility is "mail".
syslog_name (default: see postconf -d output)
The mail system name that is prepended to the process name in syslog
records, so that "smtpd" becomes, for example, "postfix/smtpd".
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 (ssmmttppdd(8), qqmmqqppdd(8)), this feature is implemented
by the Postfix mmaasstteerr(8) daemon.
# postconf -e master_service_disable=inet
# postfix reload
# postconf -e tcp_windowsize=65535 master_service_disable=
# postfix reload
tls_daemon_random_bytes (default: 32)
The number of pseudo-random bytes that an ssmmttpp(8) or ssmmttppdd(8)
process requests from the ttllssmmggrr(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.
tls_eecdh_strong_curve (default: prime256v1)
The elliptic curve used by the 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 eeccppaarraamm(1) with the "-list_curves" option) and be one
of the curves listed in Section 5.1.1 of RFC 4492. You should not
generally change this setting.
tls_eecdh_ultra_curve (default: secp384r1)
The elliptic curve used by the 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 eeccppaarraamm(1) with the
"-list_curves" option) and be one of the curves listed in Section 5.1.1
of RFC 4492. You should not generally change this setting.
tls_export_cipherlist (default: ALL:+RC4:@STRENGTH)
The OpenSSL cipherlist for "EXPORT" or higher grade ciphers. This
defines the meaning of the "export" setting in smtpd_tls_mandatory_ciphers,
smtp_tls_mandatory_ciphers and lmtp_tls_mandatory_ciphers. This is
the cipherlist for the opportunistic ("may") TLS client security
level and is the default cipherlist for the SMTP server. You are
strongly encouraged to not change this setting.
tls_high_cipherlist (default: ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH)
The OpenSSL cipherlist for "HIGH" grade ciphers. This defines
the meaning of the "high" setting in smtpd_tls_mandatory_ciphers,
smtp_tls_mandatory_ciphers and lmtp_tls_mandatory_ciphers. You are
strongly encouraged to not change this setting.
tls_low_cipherlist (default: ALL:!EXPORT:+RC4:@STRENGTH)
The OpenSSL cipherlist for "LOW" or higher grade ciphers. This defines
the meaning of the "low" setting in smtpd_tls_mandatory_ciphers,
smtp_tls_mandatory_ciphers and lmtp_tls_mandatory_ciphers. You are
strongly encouraged to not change this setting.
tls_medium_cipherlist (default: ALL:!EXPORT:!LOW:+RC4:@STRENGTH)
The OpenSSL cipherlist for "MEDIUM" or higher grade ciphers. This
defines the meaning of the "medium" setting in smtpd_tls_mandatory_ciphers,
smtp_tls_mandatory_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). You are strongly encouraged to not change this
setting.
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_mandatory_tls_ciphers, smtp_tls_mandatory_ciphers and
lmtp_tls_mandatory_ciphers. You are strongly encouraged to not
change this setting.
tls_random_bytes (default: 32)
The number of bytes that ttllssmmggrr(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.
tls_random_exchange_name (default: see postconf -d output)
Name of the pseudo random number generator (PRNG) state file
that is maintained by ttllssmmggrr(8). The file is created when it does
not exist, and its length is fixed at 1024 bytes.
tls_random_prng_update_period (default: 3600s)
The time between attempts by ttllssmmggrr(8) to save the state of
the pseudo random number generator (PRNG) to the file specified
with $tls_random_exchange_name.
tls_random_reseed_period (default: 3600s)
The maximal time between attempts by ttllssmmggrr(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.
tls_random_source (default: see postconf -d output)
The external entropy source for the in-memory ttllssmmggrr(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.
trace_service_name (default: trace)
The name of the trace service. This service is implemented by the
bboouunnccee(8) daemon and maintains a record
of mail deliveries and produces a mail delivery report when verbose
delivery is requested with "sseennddmmaaiill --vv".
transport_delivery_slot_cost (default: $default_delivery_slot_cost)
A transport-specific override for the default_delivery_slot_cost
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_delivery_slot_discount (default: $default_delivery_slot_discount)
A transport-specific override for the default_delivery_slot_discount
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_delivery_slot_loan (default: $default_delivery_slot_loan)
A transport-specific override for the default_delivery_slot_loan
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
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 _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery
transport.
transport_destination_concurrency_limit (default: $default_destination_concurrency_limit)
A transport-specific override for the
default_destination_concurrency_limit parameter value, where
_t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery
transport.
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 _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery
transport.
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 _t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery
transport.
transport_destination_rate_delay (default: $default_destination_rate_delay)
A transport-specific override for the default_destination_rate_delay
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_destination_recipient_limit (default: $default_destination_recipient_limit)
A transport-specific override for the
default_destination_recipient_limit parameter value, where
_t_r_a_n_s_p_o_r_t is the master.cf name of the message delivery
transport.
transport_extra_recipient_limit (default: $default_extra_recipient_limit)
A transport-specific override for the default_extra_recipient_limit
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_initial_destination_concurrency (default: $initial_destination_concurrency)
A transport-specific override for the initial_destination_concurrency
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_maps (default: empty)
Optional lookup tables with mappings from recipient address to
(message delivery transport, next-hop destination). See ttrraannssppoorrtt(5)
for details.
transport_maps = dbm:/etc/postfix/transport
transport_maps = hash:/etc/postfix/transport
transport_minimum_delivery_slots (default: $default_minimum_delivery_slots)
A transport-specific override for the default_minimum_delivery_slots
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_recipient_limit (default: $default_recipient_limit)
A transport-specific override for the default_recipient_limit
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_recipient_refill_delay (default: $default_recipient_refill_delay)
A transport-specific override for the default_recipient_refill_delay
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_recipient_refill_limit (default: $default_recipient_refill_limit)
A transport-specific override for the default_recipient_refill_limit
parameter value, where _t_r_a_n_s_p_o_r_t is the master.cf name of
the message delivery transport.
transport_retry_time (default: 60s)
The time between attempts by the Postfix queue manager to contact
a malfunctioning message delivery transport.
transport_time_limit (default: $command_time_limit)
A transport-specific override for the command_time_limit parameter
value, where _t_r_a_n_s_p_o_r_t is the master.cf name of the message
delivery transport.
trigger_timeout (default: 10s)
The time limit for sending a trigger to a Postfix daemon (for
example, the ppiicckkuupp(8) or qqmmggrr(8) daemon). This time limit prevents
programs from getting stuck when the mail system is under heavy
load.
undisclosed_recipients_header (default: To: undisclosed-recipients:;)
Message header that the Postfix cclleeaannuupp(8) server inserts when a
message contains no To: or Cc: message header. With Postfix 2.4
and later, specify an empty value to disable this feature.
unknown_address_reject_code (default: 450)
The numerical Postfix SMTP server response code when a sender or
recipient address is rejected by the reject_unknown_sender_domain
or reject_unknown_recipient_domain restriction. The response is
always 450 in case of a temporary DNS error.
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.
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.
unknown_helo_hostname_tempfail_action (default: $reject_tempfail_action)
The Postfix SMTP server's action when reject_unknown_helo_hostname
fails due to an 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.
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.
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.
unknown_local_recipient_reject_code = 450
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.
unknown_virtual_alias_reject_code (default: 550)
The 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.
unknown_virtual_mailbox_reject_code (default: 550)
The 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.
unverified_recipient_defer_code (default: 450)
The numerical Postfix SMTP server response when a recipient address
probe fails due to a temporary error condition.
unverified_recipient_reject_code (default: 450)
The numerical Postfix SMTP server response when a recipient address
is rejected by the reject_unverified_recipient restriction.
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.
unverified_recipient_reject_reason = Recipient address lookup failed
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.
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.
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.
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.
unverified_sender_reject_reason = Sender address lookup failed
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.
verp_delimiter_filter (default: -=+)
The characters Postfix accepts as VERP delimiter characters on the
Postfix sseennddmmaaiill(1) command line and in SMTP commands.
virtual_alias_domains (default: $virtual_alias_maps)
Postfix is 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
virtual_alias_domains = virtual1.tld virtual2.tld
virtual_alias_expansion_limit (default: 1000)
The maximal number of addresses that virtual alias expansion produces
from each original recipient.
virtual_alias_maps (default: $virtual_maps)
Optional lookup tables that alias specific mail addresses or domains
to other local or remote address. The table format and lookups
are documented in vviirrttuuaall(5). For an overview of Postfix address
manipulations see the ADDRESS_REWRITING_README document.
virtual_alias_maps = dbm:/etc/postfix/virtual
virtual_alias_maps = hash:/etc/postfix/virtual
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.
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.
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.
virtual_gid_maps (default: empty)
Lookup tables with the per-recipient group ID for vviirrttuuaall(8) mailbox
delivery.
virtual_mailbox_base (default: empty)
A prefix that the vviirrttuuaall(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.
virtual_mailbox_base = /var/mail
virtual_mailbox_domains (default: $virtual_mailbox_maps)
Postfix is final destination for the specified list of domains;
mail is delivered via the $virtual_transport mail delivery transport.
By default this is the Postfix vviirrttuuaall(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.
virtual_mailbox_limit (default: 51200000)
The maximal size in bytes of an individual mailbox or maildir file,
or zero (no limit).
virtual_mailbox_lock (default: see postconf -d output)
How to lock a UNIX-style vviirrttuuaall(8) mailbox before attempting
delivery. For a list of available file locking methods, use the
"ppoossttccoonnff --ll" command.
virtual_mailbox_maps (default: empty)
Optional lookup tables with all valid addresses in the domains that
match $virtual_mailbox_domains.
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.
virtual_minimum_uid (default: 100)
The minimum user ID value that the vviirrttuuaall(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.
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 ttrraannssppoorrtt(5) table.
virtual_uid_maps (default: empty)
Lookup tables with the per-recipient user ID that the vviirrttuuaall(8)
delivery agent uses while writing to the recipient's mailbox.
SEE ALSO
postconf(1), Postfix configuration parameter maintenance
master(5), Postfix daemon configuration maintenance
LICENSE
The Secure Mailer license must be distributed with this software.
AUTHOR(S)
Wietse Venema
IBM T.J. Watson Research
P.O. Box 704
Yorktown Heights, NY 10598, USA