Cleanup: changed prototype of internal function that did
not return a useful result. File: src/util/vstream_popen.c.
+
+20001110
+
+ Workaround: the Debian post install script passes an open
+ file descriptor into the master server and waits forever.
+ Reported by Lamont Jones. File: master/master.c.
+
+20001114
+
+ Compatibility: added sendmail -G (gateway submission) option
+ for compatibility with the sendmail rmail command. Requested
+ by David Gilbert, Velocet Communications.
+
+20001116
+
+ Documentation: added MAILER-DAEMON to the list of sample
+ masquerade_exceptions settings in conf/sample-rewrite.cf.
+ Suggested by Karl O. Pinc, pop.artic.edu.
+
+ Performance: the slow start (gradually increase number of
+ parallel connections to the same site) was too gentle and
+ Postfix would back off too quickly. Files: qmgr/qmgr_queue.c
+ and nqmgr/qmgr_queue.c. Yup, changed the same code, again.
+ We now allow for a margin above the actual concurrency,
+ with the size of the initial destination concurrency.
+
+ Bugfix: the recipient home directory test broke mailbox_transport
+ support for non-UNIX recipients. File: local/recipient.c.
+
+20001117
+
+ Robustness: additional integrity tests for the nqmgr by
+ Patrik Rak. File: nqmgr/qmgr_message.c.
+
+20001118
+
+ Bugfix: the new LDAP client code did not work properly if
+ the new ldap_domain parameter was not specified. LaMont
+ Jones, HP. File: util/dict_ldap.c.
+
+ Feature: the soft_bounce safety net is extended to the SMTP
+ server. With "soft_bounce = yes", The SMTP server changes
+ all 5xx (reject) replies into 4xx (try again) replies.
+
+ Documentation: the virtual(5) man page now documents both
+ Postfix-style virtual domains and Sendmail-style virtual
+ domains, including their interaction with local usernames,
+ aliases and mailing lists. Hopefully, this ends some of
+ the confusion surrounding virtual domain support. Updated
+ several FAQ entries concerning virtual domain support.
IMPORTANT: if you install the Cyrus SASL libraries as per the default,
you will have to symlink /usr/lib/sasl -> /usr/local/lib/sasl.
+Reportedly, Microsoft Internet Explorer version 5 requires the
+non-standard SASL LOGIN authentication method. To enable this
+authentication method, specify ``./configure --enable-login''.
+
Building Postfix with SASL authentication support
=================================================
#
# DESCRIPTION
# The aliases file provides a system-wide mechanism to redi-
-# rect mail for local recipients.
+# rect mail for local recipients. The redirections are pro-
+# cessed by the Postfix local(8) delivery agent.
#
-# The file serves as input to the postalias(1) command. The
-# result, an indexed file in dbm or db format, is used for
-# fast lookup by the mail system. Execute the command
-# newaliases in order to rebuild the indexed file after
+# The file serves as input to the postalias(1) command. The
+# result, an indexed file in dbm or db format, is used for
+# fast lookup by the mail system. Execute the command
+# newaliases in order to rebuild the indexed file after
# changing the Postfix alias database.
#
-# The input and output file formats are expected to be com-
-# patible with Sendmail version 8, and are expected to be
+# The input and output file formats are expected to be com-
+# patible with Sendmail version 8, and are expected to be
# suitable for the use as NIS maps.
#
# Users can control delivery of their own mail by setting up
#
# name: value1, value2, ...
#
-# o Lines that begin with whitespace continue the pre-
+# o Lines that begin with whitespace continue the pre-
# vious line.
#
-# o Blank lines are ignored, as are lines beginning
+# o Blank lines are ignored, as are lines beginning
# with `#'.
#
-# The name is a local address (no domain part). Use double
-# quotes when the name contains any special characters such
-# as whitespace, `#', `:', or `@'. The name is folded to
+# The name is a local address (no domain part). Use double
+# quotes when the name contains any special characters such
+# as whitespace, `#', `:', or `@'. The name is folded to
# lowercase, in order to make database lookups case insensi-
# tive.
#
# In addition, when an alias exists for owner-name, delivery
-# diagnostics are directed to that address, instead of to
+# diagnostics are directed to that address, instead of to
# the originator. This is typically used to direct delivery
-# errors to the owner of a mailing list, who is in a better
-# position to deal with mailing list delivery problems than
+# errors to the owner of a mailing list, who is in a better
+# position to deal with mailing list delivery problems than
# the originator of the undelivered mail.
#
# The value contains one or more of the following:
#
-# address
-# Mail is forwarded to address, which is compatible
-#
# 1
#
# ALIASES(5) ALIASES(5)
#
+# address
+# Mail is forwarded to address, which is compatible
# with the RFC 822 standard.
#
# /file/name
-# Mail is appended to /file/name. See local(8) for
-# details of delivery to file. Delivery is not lim-
-# ited to regular files. For example, to dispose of
+# Mail is appended to /file/name. See local(8) for
+# details of delivery to file. Delivery is not lim-
+# ited to regular files. For example, to dispose of
# unwanted mail, deflect it to /dev/null.
#
# |command
-# Mail is piped into command. Commands that contain
-# special characters, such as whitespace, should be
-# enclosed between double quotes. See local(8) for
+# Mail is piped into command. Commands that contain
+# special characters, such as whitespace, should be
+# enclosed between double quotes. See local(8) for
# details of delivery to command.
#
# When the command fails, a limited amount of command
-# output is mailed back to the sender. The file
-# /usr/include/sysexits.h defines the expected exit
-# status codes. For example, use |"exit 67" to simu-
-# late a "user unknown" error, and |"exit 0" to
+# output is mailed back to the sender. The file
+# /usr/include/sysexits.h defines the expected exit
+# status codes. For example, use |"exit 67" to simu-
+# late a "user unknown" error, and |"exit 0" to
# implement an expensive black hole.
#
# :include:/file/name
-# Mail is sent to the destinations listed in the
+# Mail is sent to the destinations listed in the
# named file. Lines in :include: files have the same
# syntax as the right-hand side of alias entries.
#
#
# ADDRESS EXTENSION
# When alias database search fails, and the recipient local-
-# part contains the optional recipient delimiter (e.g.,
-# user+foo), the search is repeated for the unextended
+# part contains the optional recipient delimiter (e.g.,
+# user+foo), the search is repeated for the unextended
# address (e.g., user).
#
# CONFIGURATION PARAMETERS
-# The following main.cf parameters are especially relevant
-# to this topic. See the Postfix main.cf file for syntax
-# details and for default values. Use the postfix reload
+# The following main.cf parameters are especially relevant
+# to this topic. See the Postfix main.cf file for syntax
+# details and for default values. Use the postfix reload
# command after a configuration change.
#
# alias_maps
# List of alias databases.
#
# allow_mail_to_commands
-# Restrict the usage of mail delivery to external
-# command.
-#
-# allow_mail_to_files
# Restrict the usage of mail delivery to external
-# file.
+# command.
#
# 2
#
# ALIASES(5) ALIASES(5)
#
+# allow_mail_to_files
+# Restrict the usage of mail delivery to external
+# file.
+#
# owner_request_special
# Give special treatment to owner-xxx and xxx-request
# addresses.
#
# recipient_delimiter
-# Delimiter that separates recipients from address
+# Delimiter that separates recipients from address
# extensions.
#
# STANDARDS
# postalias(1) alias database management
#
# LICENSE
-# The Secure Mailer license must be distributed with this
+# The Secure Mailer license must be distributed with this
# software.
#
# AUTHOR(S)
# postmap /etc/postfix/canonical
#
# DESCRIPTION
-# The optional canonical file specifies an address mapping
+# The optional canonical table specifies an address mapping
# for local and non-local addresses. The mapping is used by
# the cleanup(8) daemon. The address mapping is recursive.
#
-# Normally, the file serves as input to the postmap(1) com-
-# mand. The result, an indexed file in dbm or db format, is
-# used for fast searching by the mail system. Execute the
-# command postmap /etc/postfix/canonical in order to rebuild
-# the indexed file after changing the canonical table.
+# Normally, the canonical table is specified as a text file
+# that serves as input to the postmap(1) command. The
+# result, an indexed file in dbm or db format, is used for
+# fast searching by the mail system. Execute the command
+# postmap /etc/postfix/canonical in order to rebuild the
+# indexed file after changing the text file.
#
-# When the table is provided via other means such as NIS,
-# LDAP or SQL, the same lookups are done as for ordinary
+# When the table is provided via other means such as NIS,
+# LDAP or SQL, the same lookups are done as for ordinary
# indexed files.
#
-# Alternatively, the table can be provided as a regular-
+# Alternatively, the table can be provided as a regular-
# expression map where patterns are given as regular expres-
-# sions. In that case, the lookups are done in a slightly
+# sions. In that case, the lookups are done in a slightly
# different way as described below.
#
-# The canonical mapping affects both message header
+# The canonical mapping affects both message header
# addresses (i.e. addresses that appear inside messages) and
-# message envelope addresses (for example, the addresses
-# that are used in SMTP protocol commands). Think Sendmail
+# message envelope addresses (for example, the addresses
+# that are used in SMTP protocol commands). Think Sendmail
# rule set S3, if you like.
#
-# Typically, one would use the canonical table to replace
-# login names by Firstname.Lastname, or to clean up
+# Typically, one would use the canonical table to replace
+# login names by Firstname.Lastname, or to clean up
# addresses produced by legacy mail systems.
#
-# The canonical mapping is not to be confused with virtual
+# The canonical mapping is not to be confused with virtual
# domain support. Use the virtual(5) map for that purpose.
#
-# The canonical mapping is not to be confused with local
+# The canonical mapping is not to be confused with local
# aliasing. Use the aliases(5) map for that purpose.
#
# TABLE FORMAT
# The format of the canonical table is as follows:
#
# blanks and comments
-# Blank lines are ignored, as are lines beginning
+# Blank lines are ignored, as are lines beginning
# with `#'.
#
# leading whitespace
-# Lines that begin with whitespace continue the pre-
+# Lines that begin with whitespace continue the pre-
# vious line.
#
# 1
# CANONICAL(5) CANONICAL(5)
#
# pattern result
-# When pattern matches a mail address, replace it by
+# When pattern matches a mail address, replace it by
# the corresponding result.
#
# With lookups from indexed files such as DB or DBM, or from
-# networked tables such as NIS, LDAP or SQL, patterns are
+# networked tables such as NIS, LDAP or SQL, patterns are
# tried in the order as listed below:
#
# user@domain address
-# user@domain is replaced by address. This form has
+# user@domain is replaced by address. This form has
# the highest precedence.
#
-# This form useful to clean up addresses produced by
-# legacy mail systems. It can also be used to pro-
-# duce Firstname.Lastname style addresses, but see
+# This form useful to clean up addresses produced by
+# legacy mail systems. It can also be used to pro-
+# duce Firstname.Lastname style addresses, but see
# below for a simpler solution.
#
# user address
# user@site is replaced by address when site is equal
-# to $myorigin, when site is listed in $mydestina-
+# to $myorigin, when site is listed in $mydestina-
# tion, or when it is listed in $inet_interfaces.
#
-# This form is useful for replacing login names by
+# This form is useful for replacing login names by
# Firstname.Lastname.
#
# @domain address
-# Every address in domain is replaced by address.
+# Every address in domain is replaced by address.
# This form has the lowest precedence.
#
-# In all the above forms, when address has the form @other-
+# In all the above forms, when address has the form @other-
# domain, the result is the same user in otherdomain.
#
# ADDRESS EXTENSION
-# When table lookup fails, and the address localpart con-
-# tains the optional recipient delimiter (e.g.,
-# user+foo@domain), the search is repeated for the unex-
-# tended address (e.g. user@domain), and the unmatched
+# When table lookup fails, and the address localpart con-
+# tains the optional recipient delimiter (e.g.,
+# user+foo@domain), the search is repeated for the unex-
+# tended address (e.g. user@domain), and the unmatched
# extension is propagated to the result of table lookup. The
# matching order is: user+foo@domain, user@domain, user+foo,
# user, and @domain.
#
# REGULAR EXPRESSION TABLES
-# This section describes how the table lookups change when
+# This section describes how the table lookups change when
# the table is given in the form of regular expressions. For
-# a description of regular expression lookup table syntax,
+# a description of regular expression lookup table syntax,
# see regexp_table(5) or pcre_table(5).
#
-# Each pattern is a regular expression that is applied to
+# Each pattern is a regular expression that is applied to
# the entire address being looked up. Thus, user@domain mail
-# addresses are not broken up into their user and @domain
+# addresses are not broken up into their user and @domain
# constituent parts, nor is user+foo broken up into user and
# foo.
#
-# Patterns are applied in the order as specified in the
+# Patterns are applied in the order as specified in the
#
# 2
#
# CANONICAL(5) CANONICAL(5)
#
-# table, until a pattern is found that matches the search
+# table, until a pattern is found that matches the search
# string.
#
-# Results are the same as with normal indexed file lookups,
-# with the additional feature that parenthesized substrings
-# from the pattern can be interpolated as $1, $2 and so on.
+# Results are the same as with normal indexed file lookups,
+# with the additional feature that parenthesized substrings
+# from the pattern can be interpolated as $1, $2 and so on.
#
# BUGS
-# The table format does not understand quoting conventions.
+# The table format does not understand quoting conventions.
#
# CONFIGURATION PARAMETERS
-# The following main.cf parameters are especially relevant
-# to this topic. See the Postfix main.cf file for syntax
-# details and for default values. Use the postfix reload
+# The following main.cf parameters are especially relevant
+# to this topic. See the Postfix main.cf file for syntax
+# details and for default values. Use the postfix reload
# command after a configuration change.
#
# canonical_maps
# Other parameters of interest:
#
# inet_interfaces
-# The network interface addresses that this system
+# The network interface addresses that this system
# receives mail on.
#
# masquerade_domains
-# List of domains that hide their subdomain struc-
+# List of domains that hide their subdomain struc-
# ture.
#
# masquerade_exceptions
-# List of user names that are not subject to address
+# List of user names that are not subject to address
# masquerading.
#
# mydestination
-# List of domains that this mail system considers
+# List of domains that this mail system considers
# local.
#
# myorigin
# regexp_table(5) format of POSIX regular expression tables
#
# LICENSE
-# The Secure Mailer license must be distributed with this
+# The Secure Mailer license must be distributed with this
# software.
#
# AUTHOR(S)
#
# By default, address masquerading makes no exceptions.
#
+#masquerade_exceptions = root,mailer-daemon
#masquerade_exceptions = root
masquerade_exceptions =
# postmap /etc/postfix/virtual
#
# DESCRIPTION
-# The optional virtual table specifies redirections for
-# local and non-local recipients or domains. The redirec-
-# tions are used by the cleanup(8) daemon. The redirections
-# are recursive.
+# The optional virtual table specifies address redirections
+# for local and non-local recipients or domains. The redi-
+# rections are used by the cleanup(8) daemon. The redirec-
+# tions are recursive.
#
-# The virtual redirection is applied only to the recipient
-# envelope address, and does not affect message headers.
+# The virtual redirection is applied only to recipient enve-
+# lope addresses, and does not affect message headers.
# Think Sendmail rule set S0, if you like. Use canonical(5)
# mapping to rewrite header and envelope addresses in gen-
# eral.
#
-# Normally, the file serves as input to the postmap(1) com-
-# mand. The result, an indexed file in dbm or db format, is
-# used for fast searching by the mail system. Execute the
-# command postmap /etc/postfix/virtual in order to rebuild
-# the indexed file after changing the virtual table.
+# Normally, the virtual table is specified as a text file
+# that serves as input to the postmap(1) command. The
+# result, an indexed file in dbm or db format, is used for
+# fast searching by the mail system. Execute the command
+# postmap /etc/postfix/virtual in order to rebuild the
+# indexed file after changing the text file.
#
-# When the table is provided via other means such as NIS,
-# LDAP or SQL, the same lookups are done as for ordinary
+# When the table is provided via other means such as NIS,
+# LDAP or SQL, the same lookups are done as for ordinary
# indexed files.
#
-# Alternatively, the table can be provided as a regular-
+# Alternatively, the table can be provided as a regular-
# expression map where patterns are given as regular expres-
-# sions. In that case, the lookups are done in a slightly
+# sions. In that case, the lookups are done in a slightly
# different way as described below.
#
-# TABLE FORMAT
-# Typical support for a virtual domain looks like the fol-
-# lowing:
+# POSTFIX-STYLE VIRTUAL DOMAINS
+# With a Postfix-style virtual domain, the virtual domain
+# has its own user name space. Local (i.e. non-virtual)
+# usernames are not visible in a Postfix-style virtual
+# domain. In particular, local aliases(5) and mailing lists
+# are not visible in a Postfix-style virtual domain.
+#
+# Use a Sendmail-style virtual domain (see below) if local
+# usernames, aliases(5) or mailing lists should be visible
+# in that virtual domain.
#
+# Support for a Postfix-style virtual domain looks like:
+#
+# /etc/postfix/virtual:
# virtual.domain anything (right-hand content does not matter)
# postmaster@virtual.domain postmaster
# user1@virtual.domain address1
# user2@virtual.domain address2, address3
#
-# With this, the SMTP server accepts mail for virtual.domain
-# and rejects mail for unknown@virtual.domain as undeliver-
+# The virtual.domain anything entry is required for a
+#
+# 1
+#
+# VIRTUAL(5) VIRTUAL(5)
+#
+# Postfix-style virtual domain.
+#
+# Do not list the virtual domain in the main.cf mydestina-
+# tion configuration parameter. Such an entry is required
+# only for a Sendmail-style virtual domain.
+#
+# With a Postfix-style virtual domain, the Postfix SMTP
+# server accepts mail for known-user@virtual.domain and
+# rejects mail for unknown-user@virtual.domain as undeliver-
# able.
#
+# SENDMAIL-STYLE VIRTUAL DOMAINS
+# With a Sendmail-style virtual domain, every local (i.e.
+# non-virtual) username is visible in the virtual domain. In
+# particular, every local alias and mailing list is visible
+# in a Sendmail-style virtual domain.
+#
+# Use a Postfix-style virtual domain (see above) if local
+# usernames, aliases(5) or mailing lists should not be visi-
+# ble in that virtual domain.
+#
+# Support for a Sendmail-style virtual domain looks like:
+#
+# /etc/postfix/main.cf:
+# mydestination = $myhostname localhost.$mydomain $mydomain
+# virtual.domain
+#
+# /etc/postfix/virtual:
+# user1@virtual.domain address1
+# user2@virtual.domain address2, address3
+#
+# The main.cf mydestination entry is required for a Send-
+# mail-style virtual domain.
+#
+# Do not specify a virtual.domain whatever entry in the vir-
+# tual table. Such an entry is required only with a Postfix-
+# style virtual domain.
+#
+# With a Sendmail-style virtual domain, the Postfix local
+# delivery agent delivers mail for an unknown user@vir-
+# tual.domain to a local (i.e. non-virtual) user that has
+# the same name; if no such recipient exists, the Postfix
+# local delivery agent bounces the mail to the sender.
+#
+# TABLE FORMAT
# The format of the virtual table is as follows, mappings
# being tried in the order as listed in this manual page:
#
# Blank lines are ignored, as are lines beginning
# with `#'.
#
-# 1
+# leading whitespace
+# Lines that begin with whitespace continue the
+#
+# 2
#
# VIRTUAL(5) VIRTUAL(5)
#
-# leading whitespace
-# Lines that begin with whitespace continue the pre-
-# vious line.
+# previous line.
#
# pattern result
# When pattern matches a mail address, replace it by
# constituent parts, nor is user+foo broken up into user and
# foo.
#
-# 2
+# Patterns are applied in the order as specified in the
+#
+# 3
#
# VIRTUAL(5) VIRTUAL(5)
#
-# Patterns are applied in the order as specified in the
# table, until a pattern is found that matches the search
# string.
#
# P.O. Box 704
# Yorktown Heights, NY 10598, USA
#
-# 3
+# 4
#
<b>DESCRIPTION</b>
The <b>aliases</b> file provides a system-wide mechanism to redi-
- rect mail for local recipients.
+ rect mail for local recipients. The redirections are pro-
+ cessed by the Postfix <a href="local.8.html"><b>local</b>(8)</a> delivery agent.
- The file serves as input to the <a href="postalias.1.html"><b>postalias</b>(1)</a> command. The
- result, an indexed file in <b>dbm</b> or <b>db</b> format, is used for
- fast lookup by the mail system. Execute the command
- <b>newaliases</b> in order to rebuild the indexed file after
+ The file serves as input to the <a href="postalias.1.html"><b>postalias</b>(1)</a> command. The
+ result, an indexed file in <b>dbm</b> or <b>db</b> format, is used for
+ fast lookup by the mail system. Execute the command
+ <b>newaliases</b> in order to rebuild the indexed file after
changing the Postfix alias database.
- The input and output file formats are expected to be com-
- patible with Sendmail version 8, and are expected to be
+ The input and output file formats are expected to be com-
+ patible with Sendmail version 8, and are expected to be
suitable for the use as NIS maps.
Users can control delivery of their own mail by setting up
<i>name</i>: <i>value1</i>, <i>value2</i>, <i>...</i>
- <b>o</b> Lines that begin with whitespace continue the pre-
+ <b>o</b> Lines that begin with whitespace continue the pre-
vious line.
- <b>o</b> Blank lines are ignored, as are lines beginning
+ <b>o</b> Blank lines are ignored, as are lines beginning
with `#'.
- The <i>name</i> is a local address (no domain part). Use double
- quotes when the name contains any special characters such
- as whitespace, `#', `:', or `@'. The <i>name</i> is folded to
+ The <i>name</i> is a local address (no domain part). Use double
+ quotes when the name contains any special characters such
+ as whitespace, `#', `:', or `@'. The <i>name</i> is folded to
lowercase, in order to make database lookups case insensi-
tive.
In addition, when an alias exists for <b>owner-</b><i>name</i>, delivery
- diagnostics are directed to that address, instead of to
+ diagnostics are directed to that address, instead of to
the originator. This is typically used to direct delivery
- errors to the owner of a mailing list, who is in a better
- position to deal with mailing list delivery problems than
+ errors to the owner of a mailing list, who is in a better
+ position to deal with mailing list delivery problems than
the originator of the undelivered mail.
The <i>value</i> contains one or more of the following:
- <i>address</i>
- Mail is forwarded to <i>address</i>, which is compatible
+
ALIASES(5) ALIASES(5)
+ <i>address</i>
+ Mail is forwarded to <i>address</i>, which is compatible
with the <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> standard.
<i>/file/name</i>
- Mail is appended to <i>/file/name</i>. See <a href="local.8.html"><b>local</b>(8)</a> for
- details of delivery to file. Delivery is not lim-
- ited to regular files. For example, to dispose of
+ Mail is appended to <i>/file/name</i>. See <a href="local.8.html"><b>local</b>(8)</a> for
+ details of delivery to file. Delivery is not lim-
+ ited to regular files. For example, to dispose of
unwanted mail, deflect it to <b>/dev/null</b>.
|<i>command</i>
- Mail is piped into <i>command</i>. Commands that contain
- special characters, such as whitespace, should be
- enclosed between double quotes. See <a href="local.8.html"><b>local</b>(8)</a> for
+ Mail is piped into <i>command</i>. Commands that contain
+ special characters, such as whitespace, should be
+ enclosed between double quotes. See <a href="local.8.html"><b>local</b>(8)</a> for
details of delivery to command.
When the command fails, a limited amount of command
- output is mailed back to the sender. The file
- <b>/usr/include/sysexits.h</b> defines the expected exit
- status codes. For example, use <b>|"exit</b> <b>67"</b> to simu-
- late a "user unknown" error, and <b>|"exit</b> <b>0"</b> to
+ output is mailed back to the sender. The file
+ <b>/usr/include/sysexits.h</b> defines the expected exit
+ status codes. For example, use <b>|"exit</b> <b>67"</b> to simu-
+ late a "user unknown" error, and <b>|"exit</b> <b>0"</b> to
implement an expensive black hole.
<b>:include:</b><i>/file/name</i>
- Mail is sent to the destinations listed in the
+ Mail is sent to the destinations listed in the
named file. Lines in <b>:include:</b> files have the same
syntax as the right-hand side of alias entries.
<b>ADDRESS</b> <b>EXTENSION</b>
When alias database search fails, and the recipient local-
- part contains the optional recipient delimiter (e.g.,
- <i>user+foo</i>), the search is repeated for the unextended
+ part contains the optional recipient delimiter (e.g.,
+ <i>user+foo</i>), the search is repeated for the unextended
address (e.g., <i>user</i>).
<b>CONFIGURATION</b> <b>PARAMETERS</b>
- The following <b>main.cf</b> parameters are especially relevant
- to this topic. See the Postfix <b>main.cf</b> file for syntax
- details and for default values. Use the <b>postfix</b> <b>reload</b>
+ The following <b>main.cf</b> parameters are especially relevant
+ to this topic. See the Postfix <b>main.cf</b> file for syntax
+ details and for default values. Use the <b>postfix</b> <b>reload</b>
command after a configuration change.
<b>alias</b><i>_</i><b>maps</b>
List of alias databases.
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>commands</b>
- Restrict the usage of mail delivery to external
+ Restrict the usage of mail delivery to external
command.
- <b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b>
- Restrict the usage of mail delivery to external
- file.
+
ALIASES(5) ALIASES(5)
+ <b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b>
+ Restrict the usage of mail delivery to external
+ file.
+
<b>owner</b><i>_</i><b>request</b><i>_</i><b>special</b>
Give special treatment to <b>owner-</b><i>xxx</i> and <i>xxx</i><b>-request</b>
addresses.
<b>recipient</b><i>_</i><b>delimiter</b>
- Delimiter that separates recipients from address
+ Delimiter that separates recipients from address
extensions.
<b>STANDARDS</b>
<a href="postalias.1.html">postalias(1)</a> alias database management
<b>LICENSE</b>
- The Secure Mailer license must be distributed with this
+ The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>
-
-
-
-
<b>postmap</b> <b>/etc/postfix/canonical</b>
<b>DESCRIPTION</b>
- The optional <b>canonical</b> file specifies an address mapping
+ The optional <b>canonical</b> table specifies an address mapping
for local and non-local addresses. The mapping is used by
the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon. The address mapping is recursive.
- Normally, the file serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> com-
- mand. The result, an indexed file in <b>dbm</b> or <b>db</b> format, is
- used for fast searching by the mail system. Execute the
- command <b>postmap</b> <b>/etc/postfix/canonical</b> in order to rebuild
- the indexed file after changing the canonical table.
+ Normally, the <b>canonical</b> table is specified as a text file
+ that serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The
+ result, an indexed file in <b>dbm</b> or <b>db</b> format, is used for
+ fast searching by the mail system. Execute the command
+ <b>postmap</b> <b>/etc/postfix/canonical</b> in order to rebuild the
+ indexed file after changing the text file.
- When the table is provided via other means such as NIS,
- LDAP or SQL, the same lookups are done as for ordinary
+ When the table is provided via other means such as NIS,
+ LDAP or SQL, the same lookups are done as for ordinary
indexed files.
- Alternatively, the table can be provided as a regular-
+ Alternatively, the table can be provided as a regular-
expression map where patterns are given as regular expres-
- sions. In that case, the lookups are done in a slightly
+ sions. In that case, the lookups are done in a slightly
different way as described below.
- The <b>canonical</b> mapping affects both message header
+ The <b>canonical</b> mapping affects both message header
addresses (i.e. addresses that appear inside messages) and
- message envelope addresses (for example, the addresses
- that are used in SMTP protocol commands). Think Sendmail
+ message envelope addresses (for example, the addresses
+ that are used in SMTP protocol commands). Think Sendmail
rule set <b>S3</b>, if you like.
- Typically, one would use the <b>canonical</b> table to replace
- login names by <i>Firstname.Lastname</i>, or to clean up
+ Typically, one would use the <b>canonical</b> table to replace
+ login names by <i>Firstname.Lastname</i>, or to clean up
addresses produced by legacy mail systems.
- The <b>canonical</b> mapping is not to be confused with <i>virtual</i>
+ The <b>canonical</b> mapping is not to be confused with <i>virtual</i>
<i>domain</i> support. Use the <a href="virtual.5.html"><b>virtual</b>(5)</a> map for that purpose.
- The <b>canonical</b> mapping is not to be confused with local
+ The <b>canonical</b> mapping is not to be confused with local
aliasing. Use the <a href="aliases.5.html"><b>aliases</b>(5)</a> map for that purpose.
<b>TABLE</b> <b>FORMAT</b>
The format of the <b>canonical</b> table is as follows:
blanks and comments
- Blank lines are ignored, as are lines beginning
+ Blank lines are ignored, as are lines beginning
with `#'.
leading whitespace
- Lines that begin with whitespace continue the pre-
+ Lines that begin with whitespace continue the pre-
vious line.
-
1
<i>pattern</i> <i>result</i>
- When <i>pattern</i> matches a mail address, replace it by
+ When <i>pattern</i> matches a mail address, replace it by
the corresponding <i>result</i>.
With lookups from indexed files such as DB or DBM, or from
- networked tables such as NIS, LDAP or SQL, patterns are
+ networked tables such as NIS, LDAP or SQL, patterns are
tried in the order as listed below:
<i>user</i>@<i>domain</i> <i>address</i>
- <i>user</i>@<i>domain</i> is replaced by <i>address</i>. This form has
+ <i>user</i>@<i>domain</i> is replaced by <i>address</i>. This form has
the highest precedence.
- This form useful to clean up addresses produced by
- legacy mail systems. It can also be used to pro-
- duce <i>Firstname.Lastname</i> style addresses, but see
+ This form useful to clean up addresses produced by
+ legacy mail systems. It can also be used to pro-
+ duce <i>Firstname.Lastname</i> style addresses, but see
below for a simpler solution.
<i>user</i> <i>address</i>
<i>user</i>@<i>site</i> is replaced by <i>address</i> when <i>site</i> is equal
- to $<b>myorigin</b>, when <i>site</i> is listed in $<b>mydestina-</b>
+ to $<b>myorigin</b>, when <i>site</i> is listed in $<b>mydestina-</b>
<b>tion</b>, or when it is listed in $<b>inet</b><i>_</i><b>interfaces</b>.
- This form is useful for replacing login names by
+ This form is useful for replacing login names by
<i>Firstname.Lastname</i>.
@<i>domain</i> <i>address</i>
- Every address in <i>domain</i> is replaced by <i>address</i>.
+ Every address in <i>domain</i> is replaced by <i>address</i>.
This form has the lowest precedence.
- In all the above forms, when <i>address</i> has the form @<i>other-</i>
+ In all the above forms, when <i>address</i> has the form @<i>other-</i>
<i>domain</i>, the result is the same user in <i>otherdomain</i>.
<b>ADDRESS</b> <b>EXTENSION</b>
- When table lookup fails, and the address localpart con-
- tains the optional recipient delimiter (e.g.,
- <i>user+foo</i>@<i>domain</i>), the search is repeated for the unex-
- tended address (e.g. <i>user</i>@<i>domain</i>), and the unmatched
+ When table lookup fails, and the address localpart con-
+ tains the optional recipient delimiter (e.g.,
+ <i>user+foo</i>@<i>domain</i>), the search is repeated for the unex-
+ tended address (e.g. <i>user</i>@<i>domain</i>), and the unmatched
extension is propagated to the result of table lookup. The
matching order is: <i>user+foo</i>@<i>domain</i>, <i>user</i>@<i>domain</i>, <i>user+foo</i>,
<i>user</i>, and @<i>domain</i>.
<b>REGULAR</b> <b>EXPRESSION</b> <b>TABLES</b>
- This section describes how the table lookups change when
+ This section describes how the table lookups change when
the table is given in the form of regular expressions. For
- a description of regular expression lookup table syntax,
+ a description of regular expression lookup table syntax,
see <a href="regexp_table.5.html"><b>regexp</b><i>_</i><b>table</b>(5)</a> or <a href="pcre_table.5.html"><b>pcre</b><i>_</i><b>table</b>(5)</a>.
- Each pattern is a regular expression that is applied to
+ Each pattern is a regular expression that is applied to
the entire address being looked up. Thus, <i>user@domain</i> mail
- addresses are not broken up into their <i>user</i> and <i>@domain</i>
+ addresses are not broken up into their <i>user</i> and <i>@domain</i>
constituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and
<i>foo</i>.
- Patterns are applied in the order as specified in the
+ Patterns are applied in the order as specified in the
CANONICAL(5) CANONICAL(5)
- table, until a pattern is found that matches the search
+ table, until a pattern is found that matches the search
string.
- Results are the same as with normal indexed file lookups,
- with the additional feature that parenthesized substrings
- from the pattern can be interpolated as <b>$1</b>, <b>$2</b> and so on.
+ Results are the same as with normal indexed file lookups,
+ with the additional feature that parenthesized substrings
+ from the pattern can be interpolated as <b>$1</b>, <b>$2</b> and so on.
<b>BUGS</b>
- The table format does not understand quoting conventions.
+ The table format does not understand quoting conventions.
<b>CONFIGURATION</b> <b>PARAMETERS</b>
- The following <b>main.cf</b> parameters are especially relevant
- to this topic. See the Postfix <b>main.cf</b> file for syntax
- details and for default values. Use the <b>postfix</b> <b>reload</b>
+ The following <b>main.cf</b> parameters are especially relevant
+ to this topic. See the Postfix <b>main.cf</b> file for syntax
+ details and for default values. Use the <b>postfix</b> <b>reload</b>
command after a configuration change.
<b>canonical</b><i>_</i><b>maps</b>
Other parameters of interest:
<b>inet</b><i>_</i><b>interfaces</b>
- The network interface addresses that this system
+ The network interface addresses that this system
receives mail on.
<b>masquerade</b><i>_</i><b>domains</b>
- List of domains that hide their subdomain struc-
+ List of domains that hide their subdomain struc-
ture.
<b>masquerade</b><i>_</i><b>exceptions</b>
- List of user names that are not subject to address
+ List of user names that are not subject to address
masquerading.
<b>mydestination</b>
- List of domains that this mail system considers
+ List of domains that this mail system considers
local.
<b>myorigin</b>
<a href="regexp_table.5.html">regexp_table(5)</a> format of POSIX regular expression tables
<b>LICENSE</b>
- The Secure Mailer license must be distributed with this
+ The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>
<li><a href="#mobile">Relaying mail for mobile users</a>
-<li><a href="#virtual_setup">Postfix refuses mail for virtual
+<li><a href="#virtual_relay">Postfix refuses mail for virtual
domains with "relay access denied"</a>
<li><a href="#relay_restrict">Restricting what users can send mail to off-site destinations</a>
<li><a href="#root">Root's mail is delivered to nobody</a>
+<li><a href="#biff">What does "biff_notify: Connection refused" mean?</a>
+
<li><a href="#bogus">Postfix accepts mail for non-existing local users</a>
<li><a href="#some_local">Delivering some users locally while
<li><a href="#owner-foo">Postfix ignores the owner-list alias</a>
+<li><a href="#virtual_command">Commands and mailing lists don't work in Postfix virtual maps</a>
+
</ul>
<a name="virtual_domains"><h3>Virtual domains</h3>
<ul>
-<li><a href="#virtual_setup">How to configure a Postfix virtual domain</a>
-
-<li><a href="#virtual_setup">Postfix does not refuse mail for
-unknown virtual users</a>
+<li><a href="#unknown_virtual_accept">Postfix does not refuse mail for
+unknown users in virtual domains</a>
-<li><a href="#virtual_setup">Mail for unknown virtual users fails
-with "mail loops back to myself"</a>
+<li><a href="#unknown_virtual_loop">Mail for unknown users in
+virtual domains fails with "mail loops back to myself"</a>
-<li><a href="#virtual_setup">Postfix refuses mail for virtual
-domains with "user unknown"</a>
-
-<li><a href="#virtual_setup">Postfix refuses mail for virtual
+<li><a href="#virtual_relay">Postfix refuses mail for virtual
domains with "relay access denied"</a>
-<li><a href="#command">Commands don't work in Postfix virtual maps</a>
+<li><a href="#virtual_command">Commands and mailing lists don't work in Postfix virtual maps</a>
<li><a href="#domain_mailbox">Receiving a virtual domain in a
mailbox</a>
<hr>
+<a name="biff"><h3>What does "biff_notify: Connection refused" mean?</h3>
+
+By default, the Postfix local delivery agent attempts to notify
+local users of the arrival of new mail. This feature makes use of
+the <b>comsat</b> network service, which is turned off on many UNIX
+systems for performance and/or security reasons.
+
+<p>
+
+The warning message means that new mail notificiation failed because
+the <b>comsat</b> network service is turned off.
+
+<p>
+
+To disable the <b>comsat</b> client code in the Postfix delivery agent,
+specify:
+
+<p>
+
+<pre>
+/etc/postfix/main.cf:
+ biff = no
+</pre>
+
+<p>
+
+To enable the <b>comsat</b> network service, uncomment the
+corresponding entry in the <b>inetd.conf</b> file.
+
+<hr>
+
<a name="bogus"><h3>Postfix accepts mail for non-existing local users</h3>
-See elsewhere for how to reject mail for <a href="#virtual_setup">unknown
-virtual</a> users.
+See elsewhere for how to reject mail for <a
+href="#unknown_virtual_accept">unknown users in virtual domains</a>.
<p>
<p>
-By default, the Postfix SMTP server does know about Postfix <a
-href="#virtual_setup">virtual</a> maps, and will reject mail for
-<i>unknown@virtual.domain</i> without further configuration.
+By default, the Postfix SMTP server is aware of Postfix <a
+href="virtual.5.html">virtual</a> maps, and will accept mail for
+<i>known-user@virtual.domain</i> without further configuration.
<hr>
<hr>
-<a name="virtual_setup"><h3>How to configure a Postfix virtual domain</h3>
-
-Problem:
-
-<p>
-
-<ul>
+<a name="unknown_virtual_accept"><h3>Postfix does not refuse mail for
+unknown users in virtual domains</h3></a>
-<li>Postfix does not refuse mail for unknown virtual users.
+<a name="unknown_virtual_loop"><h3>Mail for unknown users in a
+virtual domain fails with "mail loops back to myself"</h3></a>
-<li>Mail for unknown virtual users fails with "mail loops back to
-myself".
+<a name="virtual_relay"><h3>Postfix refuses mail for virtual
+domains with "relay access denied"</h3></a>
-<li>Postfix refuses mail for virtual domains with "user unknown".
-
-<li>Postfix refuses mail for virtual domains with "relay access
-denied".
-
-</ul>
+Solution: specify a Postfix-style virtual domain or a Sendmail-style
+virtual domain.
<p>
-Solution:
-
-<p>
+Be sure to follow instructions in the <a href="virtual.5.html">
+virtual</a> manual page.
-<ul>
+<hr>
-<li> Add a magical entry to the Postfix virtual maps for
-each Postfix virtual domain:
+<a name="virtual_command"><h3>Commands and mailing lists don't work
+in Postfix virtual maps</h3>
-<p>
-
-<pre>
- /etc/postfix/virtual:
- virtual.domain whatever
-</pre>
+Short reply: specify a Sendmail-style <a href="virtual.5.html">virtual</a>
+domain, and specify the command or mailing list in the local <a
+href="aliases.5.html">aliases</a> file.
<p>
-<li> Do not list Postfix virtual domains in the <a
-href="basic.html#mydestination">mydestination</a> parameter.
-
-<li> Do not list Postfix virtual maps in the <b>local_recipient_maps</b>
-parameter.
-
-<li>As of Postfix version 19991226 it is no longer necessary to
-specify virtual maps in the <a
-href="uce.html#relay_domains">relay_domains</a> parameter. To find
-out what Postfix version you have, execute the command <b>postconf
-mail_version</b>.
-
-</ul>
+Long reply follows.
<p>
-For more information on how to set up virtual domains, see the <a
-href="virtual.5.html">virtual</a> manual page.
-
-<hr>
-
-<a name="command"><h3>Commands don't work in Postfix virtual maps</h3>
-
Delivering mail to a command is a security-sensitive operation,
because the command must be executed with the right privileges.
Only <b>root</b>-privileged software such as the Postfix local
is done by an unprivileged daemon, so there is no secure way to
execute commands found in virtual maps.
-<p>
-
-Solution: specify a local alias instead. The Postfix local delivery
-agent has sufficient privilege to execute commands with the right
-privileges.
-
-<p>
-
-<ul>
-
-<li>Set up a local alias that executes the command:
-
-<p>
-
-<pre>
- /etc/aliases:
- name-virtual.domain "|/some/where/command..."
-</pre>
-
-<p>
-
-<li>Execute the command <b>newaliases</b> whenever you edit the
-alias database.
-
-<p>
-
-<li>Forward mail for the virtual address to the local alias:
-
-<p>
-
-<pre>
- /etc/postfix/virtual:
- virtual.domain whatever
- name@virtual.domain name-virtual.domain
-</pre>
-
-<p>
-
-<li>Execute the command <b>postmap /etc/postfix/virtual</b> whenever
-you edit the virtual database.
-
-</ul>
-
-<p>
-
-
-Note: on some systems the alias database is not in <b>/etc/aliases</b>.
-To find out the location for your system, execute the command
-<b>postconf alias_maps</b>.
-
<hr>
<a name="domain_mailbox"><h3>Receiving a virtual domain in a mailbox</h3>
<b>FLUSH</b><i>_</i><b>REQ</b><i>_</i><b>REFRESH</b> (completes in the background)
Refresh non-empty per-destination logfiles that
- were not read in $<b>fast</b><i>_</i><b>flush</b><i>_</i><b>refresh</b><i>_</i><b>time</b> hours, by
+ were not read in <b>$fast</b><i>_</i><b>flush</b><i>_</i><b>refresh</b><i>_</i><b>time</b> hours, by
simulating send requests (see above) for the corre-
sponding destinations.
Refresh all non-empty per-destination logfiles, by
simulating send requests (see above) for the corre-
sponding destinations. This can be incredibly
- expensive when logging is enabled for all deferred
- mail, and is not recommended.
+ expensive when logging is enabled for many destina-
+ tions, and is not recommended.
Delete empty per-destination logfiles that were not
updated in <b>fast</b><i>_</i><b>flush</b><i>_</i><b>purge</b><i>_</i><b>time</b> days.
tion file.
Upon receipt of a request to deliver all mail for an eli-
- gible destination, this server requests delivery of all
- messages that are listed in that destination's logfile,
- regardless of the recipients of those messages. This is
- not an issue for mail that is sent to a <b>relay</b><i>_</i><b>domains</b> des-
- tination because such mail typically only has recipients
- in one domain.
+ gible destination, the <b>flush</b> server requests delivery of
+ all messages that are listed in that destination's log-
+ file, regardless of the recipients of those messages. This
+ is not an issue for mail that is sent to a <b>relay</b><i>_</i><b>domains</b>
+ destination because such mail typically only has recipi-
+ ents in one domain.
<b>FILES</b>
/var/spool/postfix/flush, location of "fast flush" logfiles.
<b>alias</b><i>_</i><b>maps</b>
List of alias databases.
+ <b>biff</b> Enable or disable notification of new mail via the
+ <b>comsat</b> network service.
+
<b>expand</b><i>_</i><b>owner</b><i>_</i><b>alias</b>
When delivering to an alias that has an owner- com-
- panion alias, set the envelope sender address to
- the right-hand side of the owner alias, instead
+ panion alias, set the envelope sender address to
+ the right-hand side of the owner alias, instead
using of the left-hand side address.
<b>forward</b><i>_</i><b>path</b>
Search list for .forward files. The names are sub-
ject to <i>$name</i> expansion.
- <b>local</b><i>_</i><b>command</b><i>_</i><b>shell</b>
- Shell to use for external command execution (for
- example, /some/where/smrsh -c). When a shell is
- specified, it is invoked even when the command
+
LOCAL(8) LOCAL(8)
- contains no shell built-in commands or meta charac-
+ <b>local</b><i>_</i><b>command</b><i>_</i><b>shell</b>
+ Shell to use for external command execution (for
+ example, /some/where/smrsh -c). When a shell is
+ specified, it is invoked even when the command con-
+ tains no shell built-in commands or meta charac-
ters.
<b>owner</b><i>_</i><b>request</b><i>_</i><b>special</b>
addresses.
<b>prepend</b><i>_</i><b>delivered</b><i>_</i><b>header</b>
- Prepend an optional <b>Delivered-To:</b> header upon
- external forwarding, delivery to command or file.
- Specify zero or more of: <b>command,</b> <b>file,</b> <b>forward</b>.
- Turning off <b>Delivered-To:</b> when forwarding mail is
+ Prepend an optional <b>Delivered-To:</b> header upon
+ external forwarding, delivery to command or file.
+ Specify zero or more of: <b>command,</b> <b>file,</b> <b>forward</b>.
+ Turning off <b>Delivered-To:</b> when forwarding mail is
not recommended.
<b>recipient</b><i>_</i><b>delimiter</b>
<b>test</b><i>_</i><b>home</b><i>_</i><b>directory</b>
Require that a recipient's home directory is acces-
- sible by the recipient before attempting delivery.
+ sible by the recipient before attempting delivery.
<b>Mailbox</b> <b>delivery</b>
<b>fallback</b><i>_</i><b>transport</b>
Message transport for recipients that are not found
- in the UNIX passwd database. This parameter over-
+ in the UNIX passwd database. This parameter over-
rides <b>luser</b><i>_</i><b>relay</b>.
<b>home</b><i>_</i><b>mailbox</b>
- Pathname of a mailbox relative to a user's home
+ Pathname of a mailbox relative to a user's home
directory. Specify a path ending in <b>/</b> for maildir-
style delivery.
<b>luser</b><i>_</i><b>relay</b>
- Destination (<i>@domain</i> or <i>address</i>) for non-existent
- users. The <i>address</i> is subjected to <i>$name</i> expan-
+ Destination (<i>@domain</i> or <i>address</i>) for non-existent
+ users. The <i>address</i> is subjected to <i>$name</i> expan-
sion.
<b>mail</b><i>_</i><b>spool</b><i>_</i><b>directory</b>
- Directory with UNIX-style mailboxes. The default
+ Directory with UNIX-style mailboxes. The default
pathname is system dependent.
<b>mailbox</b><i>_</i><b>command</b>
- External command to use for mailbox delivery. The
+ External command to use for mailbox delivery. The
command executes with the recipient privileges
- (exception: root). The string is subject to $name
+ (exception: root). The string is subject to $name
expansions.
<b>mailbox</b><i>_</i><b>transport</b>
- Message transport to use for mailbox delivery to
+ Message transport to use for mailbox delivery to
all local recipients, whether or not they are found
- in the UNIX passwd database. This parameter over-
- rides all other configuration parameters that con-
- trol mailbox delivery, including <b>luser</b><i>_</i><b>relay</b>.
-
LOCAL(8) LOCAL(8)
+ in the UNIX passwd database. This parameter over-
+ rides all other configuration parameters that con-
+ trol mailbox delivery, including <b>luser</b><i>_</i><b>relay</b>.
+
<b>Locking</b> <b>controls</b>
<b>deliver</b><i>_</i><b>lock</b><i>_</i><b>attempts</b>
- Limit the number of attempts to acquire an exclu-
+ Limit the number of attempts to acquire an exclu-
sive lock on a mailbox or external file.
<b>deliver</b><i>_</i><b>lock</b><i>_</i><b>delay</b>
- Time in seconds between successive attempts to
+ Time in seconds between successive attempts to
acquire an exclusive lock.
<b>stale</b><i>_</i><b>lock</b><i>_</i><b>time</b>
<b>Resource</b> <b>controls</b>
<b>command</b><i>_</i><b>time</b><i>_</i><b>limit</b>
- Limit the amount of time for delivery to external
+ Limit the amount of time for delivery to external
command.
<b>duplicate</b><i>_</i><b>filter</b><i>_</i><b>limit</b>
- Limit the size of the duplicate filter for results
+ Limit the size of the duplicate filter for results
from alias etc. expansion.
<b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b>
- Limit the amount of memory used for processing a
+ Limit the amount of memory used for processing a
partial input line.
<b>local</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b>
Limit the number of parallel deliveries to the same
- user. The default limit is taken from the
+ user. The default limit is taken from the
<b>default</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b> parameter.
<b>local</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b>
- Limit the number of recipients per message deliv-
- ery. The default limit is taken from the
+ Limit the number of recipients per message deliv-
+ ery. The default limit is taken from the
<b>default</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b> parameter.
<b>Security</b> <b>controls</b>
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>commands</b>
- Restrict the usage of mail delivery to external
+ Restrict the usage of mail delivery to external
command.
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b>
- Restrict the usage of mail delivery to external
+ Restrict the usage of mail delivery to external
file.
<b>command</b><i>_</i><b>expansion</b><i>_</i><b>filter</b>
- What characters are allowed to appear in $name
- expansions of mailbox_command. Illegal characters
+ What characters are allowed to appear in $name
+ expansions of mailbox_command. Illegal characters
are replaced by underscores.
- <b>default</b><i>_</i><b>privs</b>
- Default rights for delivery to external file or
- command.
-
LOCAL(8) LOCAL(8)
+ <b>default</b><i>_</i><b>privs</b>
+ Default rights for delivery to external file or
+ command.
+
<b>forward</b><i>_</i><b>expansion</b><i>_</i><b>filter</b>
- What characters are allowed to appear in $name
- expansions of forward_path. Illegal characters are
+ What characters are allowed to appear in $name
+ expansions of forward_path. Illegal characters are
replaced by underscores.
<b>HISTORY</b>
- The <b>Delivered-To:</b> header appears in the <b>qmail</b> system by
+ The <b>Delivered-To:</b> header appears in the <b>qmail</b> system by
Daniel Bernstein.
- The <i>maildir</i> structure appears in the <b>qmail</b> system by
+ The <i>maildir</i> structure appears in the <b>qmail</b> system by
Daniel Bernstein.
<b>SEE</b> <b>ALSO</b>
<a href="qmgr.8.html">qmgr(8)</a> queue manager
<b>LICENSE</b>
- The Secure Mailer license must be distributed with this
+ The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>
-
-
-
-
Set the sender full name. This is used only with
messages that have no <b>From:</b> message header.
- <b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
+ <b>-G</b> (ignored)
+ Gateway (relay) submission, as opposed to initial
+ user submission.
+
+ <b>-I</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
<b>-N</b> <i>dsn</i> (ignored)
- Delivery status notification control. Currently,
+ Delivery status notification control. Currently,
Postfix does not implement <b>DSN</b>.
<b>-R</b> <i>return_limit</i> (ignored)
- Limit the size of bounced mail. Use the
- <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> configuration parameter instead.
+ Limit the size of bounced mail. Use the
+ <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> configuration parameter instead.
<b>-X</b> <i>log_file</i> (ignored)
- Log mailer traffic. Use the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> and
- <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> configuration parameters instead.
+ Log mailer traffic. Use the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> and
+ <b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> configuration parameters instead.
<b>-U</b> (ignored)
Initial user submission.
- <b>-bd</b> Go into daemon mode. This mode of operation is
+ <b>-bd</b> Go into daemon mode. This mode of operation is
implemented by executing the <b>postfix</b> <b>start</b> command.
- <b>-bi</b> Initialize alias database. See the <b>newaliases</b> com-
+ <b>-bi</b> Initialize alias database. See the <b>newaliases</b> com-
mand above.
- <b>-bm</b> Read mail from standard input and arrange for
+ <b>-bm</b> Read mail from standard input and arrange for
delivery. This is the default mode of operation.
<b>-bp</b> List the mail queue. See the <b>mailq</b> command above.
- <b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
- from standard input, and write responses to stan-
+ <b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
+ from standard input, and write responses to stan-
dard output. This mode of operation is implemented
by running the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon.
- <b>-f</b> <i>sender</i>
- Set the envelope sender address. This is the
- address where delivery problems are sent to, unless
- the message contains an <b>Errors-To:</b> message header.
SENDMAIL(1) SENDMAIL(1)
+ <b>-f</b> <i>sender</i>
+ Set the envelope sender address. This is the
+ address where delivery problems are sent to, unless
+ the message contains an <b>Errors-To:</b> message header.
+
<b>-h</b> <i>hop_count</i> (ignored)
- Hop count limit. Use the <b>hopcount</b><i>_</i><b>limit</b> configura-
+ Hop count limit. Use the <b>hopcount</b><i>_</i><b>limit</b> configura-
tion parameter instead.
- <b>-i</b> When reading a message from standard input, don't
- treat a line with only a <b>.</b> character as the end of
+ <b>-i</b> When reading a message from standard input, don't
+ treat a line with only a <b>.</b> character as the end of
input.
<b>-m</b> (ignored)
Backwards compatibility.
<b>-oA</b><i>alias_database</i>
- Non-default alias database. Specify <i>pathname</i> or
+ Non-default alias database. Specify <i>pathname</i> or
<i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details.
<b>-o7</b> (ignored)
<b>-o8</b> (ignored)
- The message body type. Currently, Postfix imple-
+ The message body type. Currently, Postfix imple-
ments <b>just-send-eight</b>.
- <b>-oi</b> When reading a message from standard input, don't
- treat a line with only a <b>.</b> character as the end of
+ <b>-oi</b> When reading a message from standard input, don't
+ treat a line with only a <b>.</b> character as the end of
input.
<b>-om</b> (ignored)
- The sender is never eliminated from alias etc.
+ The sender is never eliminated from alias etc.
expansions.
<b>-o</b> <i>x</i> <i>value</i> (ignored)
- Set option <i>x</i> to <i>value</i>. Use the equivalent configu-
+ Set option <i>x</i> to <i>value</i>. Use the equivalent configu-
ration parameter in <b>main.cf</b> instead.
<b>-r</b> <i>sender</i>
Set the envelope sender address. This is the
address where delivery problems are sent to, unless
- the message contains an <b>Errors-To:</b> message header.
+ the message contains an <b>Errors-To:</b> message header.
- <b>-q</b> Attempt to deliver all queued mail. This is imple-
+ <b>-q</b> Attempt to deliver all queued mail. This is imple-
mented by kicking the <a href="qmgr.8.html"><b>qmgr</b>(8)</a> daemon.
<b>-q</b><i>interval</i> (ignored)
- The interval between queue runs. Use the
+ The interval between queue runs. Use the
<b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> configuration parameter instead.
- <b>-qR</b><i>site</i>
- Schedule immediate delivery of all mail that is
- queued for the named <i>site</i>. Depending on the desti-
- nation, this uses "fast flush" service, or it has
- the same effect as <b>sendmail</b> <b>-q</b>. This is imple-
- mented by connecting to the local SMTP server. See
+
SENDMAIL(1) SENDMAIL(1)
+ <b>-qR</b><i>site</i>
+ Schedule immediate delivery of all mail that is
+ queued for the named <i>site</i>. Depending on the desti-
+ nation, this uses "fast flush" service, or it has
+ the same effect as <b>sendmail</b> <b>-q</b>. This is imple-
+ mented by connecting to the local SMTP server. See
<a href="smtpd.8.html"><b>smtpd</b>(8)</a> for more information about the "fast
flush" service.
<b>-qS</b><i>site</i>
- This command is not implemented. Use the slower
+ This command is not implemented. Use the slower
<b>sendmail</b> <b>-q</b> command instead.
- <b>-t</b> Extract recipients from message headers. This
- requires that no recipients be specified on the
+ <b>-t</b> Extract recipients from message headers. This
+ requires that no recipients be specified on the
command line.
<b>-v</b> Enable verbose logging for debugging purposes. Mul-
- tiple <b>-v</b> options make the software increasingly
+ tiple <b>-v</b> options make the software increasingly
verbose.
<b>SECURITY</b>
- By design, this program is not set-user (or group) id.
- However, it must handle data from untrusted users or
- untrusted machines. Thus, the usual precautions need to
+ By design, this program is not set-user (or group) id.
+ However, it must handle data from untrusted users or
+ untrusted machines. Thus, the usual precautions need to
be taken against malicious inputs.
<b>DIAGNOSTICS</b>
- Problems are logged to <b>syslogd</b>(8) and to the standard
+ Problems are logged to <b>syslogd</b>(8) and to the standard
error stream.
<b>ENVIRONMENT</b>
<b>MAIL</b><i>_</i><b>DEBUG</b>
Enable debugging with an external command, as spec-
- ified with the <b>debugger</b><i>_</i><b>command</b> configuration
+ ified with the <b>debugger</b><i>_</i><b>command</b> configuration
parameter.
<b>FILES</b>
/etc/postfix, configuration files
<b>CONFIGURATION</b> <b>PARAMETERS</b>
- See the Postfix <b>main.cf</b> file for syntax details and for
- default values. Use the <b>postfix</b> <b>reload</b> command after a
+ See the Postfix <b>main.cf</b> file for syntax details and for
+ default values. Use the <b>postfix</b> <b>reload</b> command after a
configuration change.
<b>alias</b><i>_</i><b>database</b>
- Default alias database(s) for <b>newaliases</b>. The
- default value for this parameter is system-spe-
- cific.
-
- <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b>
- The amount of original message context that is sent
- along with a non-delivery notification.
+ Default alias database(s) for <b>newaliases</b>. The
SENDMAIL(1) SENDMAIL(1)
+ default value for this parameter is system-spe-
+ cific.
+
+ <b>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b>
+ The amount of original message context that is sent
+ along with a non-delivery notification.
+
<b>database</b><i>_</i><b>type</b>
Default alias etc. database type. On many UNIX sys-
tems the default type is either <b>dbm</b> or <b>hash</b>.
initialized.
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b>
- Increment in verbose logging level when a remote
+ Increment in verbose logging level when a remote
host matches a pattern in the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
parameter.
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
- List of domain or network patterns. When a remote
- host matches a pattern, increase the verbose log-
- ging level by the amount specified in the
+ List of domain or network patterns. When a remote
+ host matches a pattern, increase the verbose log-
+ ging level by the amount specified in the
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter.
<b>fast</b><i>_</i><b>flush</b><i>_</i><b>domains</b>
List of domains that will receive "fast flush" ser-
- vice (default: all domains that this system is
- willing to relay mail to). This greatly improves
- the performance of the SMTP <b>ETRN</b> request, and of
- the <b>sendmail</b> <b>-qR</b> command. For domains not in the
+ vice (default: all domains that this system is
+ willing to relay mail to). This greatly improves
+ the performance of the SMTP <b>ETRN</b> request, and of
+ the <b>sendmail</b> <b>-qR</b> command. For domains not in the
list, Postfix simply attempts to deliver all queued
mail.
<b>fork</b><i>_</i><b>attempts</b>
- Number of attempts to <b>fork</b>() a process before giv-
+ Number of attempts to <b>fork</b>() a process before giv-
ing up.
<b>fork</b><i>_</i><b>delay</b>
- Delay in seconds between successive <b>fork</b>()
+ Delay in seconds between successive <b>fork</b>()
attempts.
<b>hopcount</b><i>_</i><b>limit</b>
Limit the number of <b>Received:</b> message headers.
<b>mail</b><i>_</i><b>owner</b>
- The owner of the mail queue and of most Postfix
+ The owner of the mail queue and of most Postfix
processes.
<b>command</b><i>_</i><b>directory</b>
- Directory with Postfix support commands (default:
- <b>$program</b><i>_</i><b>directory</b>).
-
- <b>daemon</b><i>_</i><b>directory</b>
- Directory with Postfix daemon programs (default:
+ Directory with Postfix support commands (default:
<b>$program</b><i>_</i><b>directory</b>).
- <b>queue</b><i>_</i><b>directory</b>
- Top-level directory of the Postfix queue. This is
- also the root directory of Postfix daemons that run
SENDMAIL(1) SENDMAIL(1)
+ <b>daemon</b><i>_</i><b>directory</b>
+ Directory with Postfix daemon programs (default:
+ <b>$program</b><i>_</i><b>directory</b>).
+
+ <b>queue</b><i>_</i><b>directory</b>
+ Top-level directory of the Postfix queue. This is
+ also the root directory of Postfix daemons that run
chrooted.
<b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b>
- The time between successive scans of the deferred
+ The time between successive scans of the deferred
queue.
<b>SEE</b> <b>ALSO</b>
<a href="qmgr.8.html">qmgr(8)</a> queue manager
<a href="showq.8.html">showq(8)</a> list mail queue
<a href="smtpd.8.html">smtpd(8)</a> SMTP server
- <a href="flushd.8.html">flushd(8)</a> fast flush service
+ flushd(8) fast flush service
syslogd(8) system logging
<b>LICENSE</b>
- The Secure Mailer license must be distributed with this
+ The Secure Mailer license must be distributed with this
software.
<b>AUTHOR(S)</b>
-
-
-
-
-
-
-
Limit the time to send a server response and to
receive a client request.
+ <b>soft</b><i>_</i><b>bounce</b>
+ Change hard (5xx) reject responses into soft (4xx)
+ reject responses. This can be useful for testing
+ purposes.
+
<b>Resource</b> <b>controls</b>
<b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b>
Limit the amount of memory in bytes used for the
handling of partial input lines.
- <b>message</b><i>_</i><b>size</b><i>_</i><b>limit</b>
- Limit the total size in bytes of a message, includ-
- ing on-disk storage for envelope information.
-
-
SMTPD(8) SMTPD(8)
+ <b>message</b><i>_</i><b>size</b><i>_</i><b>limit</b>
+ Limit the total size in bytes of a message, includ-
+ ing on-disk storage for envelope information.
+
<b>queue</b><i>_</i><b>minfree</b>
Minimal amount of free space in bytes in the queue
file system for the SMTP server to accept any mail
Restrict what domain names can be used in <b>ETRN</b> com-
mands, and what clients may issue <b>ETRN</b> commands.
- <b>allow</b><i>_</i><b>untrusted</b><i>_</i><b>routing</b>
- Allow untrusted clients to specify addresses with
- sender-specified routing. Enabling this opens up
- nasty relay loopholes involving trusted backup MX
SMTPD(8) SMTPD(8)
+ <b>allow</b><i>_</i><b>untrusted</b><i>_</i><b>routing</b>
+ Allow untrusted clients to specify addresses with
+ sender-specified routing. Enabling this opens up
+ nasty relay loopholes involving trusted backup MX
hosts.
<b>restriction</b><i>_</i><b>classes</b>
Server response when a client violates the
<b>reject</b><i>_</i><b>unknown</b><i>_</i><b>hostname</b> restriction.
-<b>SEE</b> <b>ALSO</b>
- <a href="cleanup.8.html">cleanup(8)</a> message canonicalization
- <a href="master.8.html">master(8)</a> process manager
- syslogd(8) system logging
SMTPD(8) SMTPD(8)
+<b>SEE</b> <b>ALSO</b>
+ <a href="cleanup.8.html">cleanup(8)</a> message canonicalization
+ <a href="master.8.html">master(8)</a> process manager
+ syslogd(8) system logging
+
<b>LICENSE</b>
The Secure Mailer license must be distributed with this
software.
-
-
-
-
-
<b>postmap</b> <b>/etc/postfix/virtual</b>
<b>DESCRIPTION</b>
- The optional <b>virtual</b> table specifies redirections for
- local and non-local recipients or domains. The redirec-
- tions are used by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon. The redirections
- are recursive.
+ The optional <b>virtual</b> table specifies address redirections
+ for local and non-local recipients or domains. The redi-
+ rections are used by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon. The redirec-
+ tions are recursive.
- The <b>virtual</b> redirection is applied only to the recipient
- envelope address, and does not affect message headers.
+ The <b>virtual</b> redirection is applied only to recipient enve-
+ lope addresses, and does not affect message headers.
Think Sendmail rule set <b>S0</b>, if you like. Use <a href="canonical.5.html"><b>canonical</b>(5)</a>
mapping to rewrite header and envelope addresses in gen-
eral.
- Normally, the file serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> com-
- mand. The result, an indexed file in <b>dbm</b> or <b>db</b> format, is
- used for fast searching by the mail system. Execute the
- command <b>postmap</b> <b>/etc/postfix/virtual</b> in order to rebuild
- the indexed file after changing the virtual table.
+ Normally, the <b>virtual</b> table is specified as a text file
+ that serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The
+ result, an indexed file in <b>dbm</b> or <b>db</b> format, is used for
+ fast searching by the mail system. Execute the command
+ <b>postmap</b> <b>/etc/postfix/virtual</b> in order to rebuild the
+ indexed file after changing the text file.
- When the table is provided via other means such as NIS,
- LDAP or SQL, the same lookups are done as for ordinary
+ When the table is provided via other means such as NIS,
+ LDAP or SQL, the same lookups are done as for ordinary
indexed files.
- Alternatively, the table can be provided as a regular-
+ Alternatively, the table can be provided as a regular-
expression map where patterns are given as regular expres-
- sions. In that case, the lookups are done in a slightly
+ sions. In that case, the lookups are done in a slightly
different way as described below.
-<b>TABLE</b> <b>FORMAT</b>
- Typical support for a virtual domain looks like the fol-
- lowing:
+<b>POSTFIX-STYLE</b> <b>VIRTUAL</b> <b>DOMAINS</b>
+ With a Postfix-style virtual domain, the virtual domain
+ has its own user name space. Local (i.e. non-virtual)
+ usernames are not visible in a Postfix-style virtual
+ domain. In particular, local <a href="aliases.5.html"><b>aliases</b>(5)</a> and mailing lists
+ are not visible in a Postfix-style virtual domain.
+
+ Use a Sendmail-style virtual domain (see below) if local
+ usernames, <a href="aliases.5.html"><b>aliases</b>(5)</a> or mailing lists should be visible
+ in that virtual domain.
+
+ Support for a Postfix-style virtual domain looks like:
+ /etc/postfix/virtual:
<i>virtual.domain</i> <i>anything</i> (right-hand content does not matter)
<i>postmaster@virtual.domain</i> <i>postmaster</i>
<i>user1@virtual.domain</i> <i>address1</i>
<i>user2@virtual.domain</i> <i>address2,</i> <i>address3</i>
- With this, the SMTP server accepts mail for <i>virtual.domain</i>
- and rejects mail for <i>unknown</i>@<i>virtual.domain</i> as undeliver-
+ The <i>virtual.domain</i> <i>anything</i> entry is required for a
+
+
+
+ 1
+
+
+
+
+
+VIRTUAL(5) VIRTUAL(5)
+
+
+ Postfix-style virtual domain.
+
+ Do not list the virtual domain in the <b>main.cf</b> <b>mydestina-</b>
+ <b>tion</b> configuration parameter. Such an entry is required
+ only for a Sendmail-style virtual domain.
+
+ With a Postfix-style virtual domain, the Postfix SMTP
+ server accepts mail for <i>known-user@virtual.domain</i> and
+ rejects mail for <i>unknown-user</i>@<i>virtual.domain</i> as undeliver-
able.
+<b>SENDMAIL-STYLE</b> <b>VIRTUAL</b> <b>DOMAINS</b>
+ With a Sendmail-style virtual domain, every local (i.e.
+ non-virtual) username is visible in the virtual domain. In
+ particular, every local alias and mailing list is visible
+ in a Sendmail-style virtual domain.
+
+ Use a Postfix-style virtual domain (see above) if local
+ usernames, <a href="aliases.5.html"><b>aliases</b>(5)</a> or mailing lists should not be visi-
+ ble in that virtual domain.
+
+ Support for a Sendmail-style virtual domain looks like:
+
+ /etc/postfix/main.cf:
+ mydestination = $myhostname localhost.$mydomain $mydomain
+ <i>virtual.domain</i>
+
+ /etc/postfix/virtual:
+ <i>user1@virtual.domain</i> <i>address1</i>
+ <i>user2@virtual.domain</i> <i>address2,</i> <i>address3</i>
+
+ The <b>main.cf</b> <b>mydestination</b> entry is required for a Send-
+ mail-style virtual domain.
+
+ Do not specify a <i>virtual.domain</i> <i>whatever</i> entry in the vir-
+ tual table. Such an entry is required only with a Postfix-
+ style virtual domain.
+
+ With a Sendmail-style virtual domain, the Postfix local
+ delivery agent delivers mail for an unknown <i>user</i>@<i>vir-</i>
+ <i>tual.domain</i> to a local (i.e. non-virtual) user that has
+ the same name; if no such recipient exists, the Postfix
+ local delivery agent bounces the mail to the sender.
+
+<b>TABLE</b> <b>FORMAT</b>
The format of the virtual table is as follows, mappings
being tried in the order as listed in this manual page:
Blank lines are ignored, as are lines beginning
with `#'.
+ leading whitespace
+ Lines that begin with whitespace continue the
-
- 1
+ 2
VIRTUAL(5) VIRTUAL(5)
- leading whitespace
- Lines that begin with whitespace continue the pre-
- vious line.
+ previous line.
<i>pattern</i> <i>result</i>
When <i>pattern</i> matches a mail address, replace it by
constituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and
<i>foo</i>.
+ Patterns are applied in the order as specified in the
- 2
+
+ 3
VIRTUAL(5) VIRTUAL(5)
- Patterns are applied in the order as specified in the
table, until a pattern is found that matches the search
string.
- 3
+
+ 4
</pre> </body> </html>
.IP "\fB-F \fIfull_name\fR
Set the sender full name. This is used only with messages that
have no \fBFrom:\fR message header.
+.IP "\fB-G\fR (ignored)"
+Gateway (relay) submission, as opposed to initial user submission.
.IP \fB-I\fR
Initialize alias database. See the \fBnewaliases\fR
command above.
.ad
.fi
The \fBaliases\fR file provides a system-wide mechanism to
-redirect mail for local recipients.
+redirect mail for local recipients. The redirections are
+processed by the Postfix \fBlocal\fR(8) delivery agent.
The file serves as input to the \fBpostalias\fR(1) command. The
result, an indexed file in \fBdbm\fR or \fBdb\fR format, is
.SH DESCRIPTION
.ad
.fi
-The optional \fBcanonical\fR file specifies an address mapping for
+The optional \fBcanonical\fR table specifies an address mapping for
local and non-local addresses. The mapping is used by the
\fBcleanup\fR(8) daemon. The address mapping is recursive.
-Normally, the file serves as input to the \fBpostmap\fR(1) command.
+Normally, the \fBcanonical\fR table is specified as a text file
+that serves as input to the \fBpostmap\fR(1) command.
The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
is used for fast searching by the mail system. Execute the command
\fBpostmap /etc/postfix/canonical\fR in order to rebuild the indexed
-file after changing the canonical table.
+file after changing the text file.
When the table is provided via other means such as NIS, LDAP
or SQL, the same lookups are done as for ordinary indexed files.
.SH DESCRIPTION
.ad
.fi
-The optional \fBvirtual\fR table specifies redirections for local
-and non-local recipients or domains. The redirections are used by
-the \fBcleanup\fR(8) daemon. The redirections are recursive.
+The optional \fBvirtual\fR table specifies address redirections for
+local and non-local recipients or domains. The redirections are used
+by the \fBcleanup\fR(8) daemon. The redirections are recursive.
-The \fBvirtual\fR redirection is applied only to the recipient
-envelope address, and does not affect message headers.
+The \fBvirtual\fR redirection is applied only to recipient
+envelope addresses, and does not affect message headers.
Think Sendmail rule set \fBS0\fR, if you like. Use \fBcanonical\fR(5)
mapping to rewrite header and envelope addresses in general.
-Normally, the file serves as input to the \fBpostmap\fR(1) command.
+Normally, the \fBvirtual\fR table is specified as a text file that
+serves as input to the \fBpostmap\fR(1) command.
The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
is used for fast searching by the mail system. Execute the command
\fBpostmap /etc/postfix/virtual\fR in order to rebuild the indexed
-file after changing the virtual table.
+file after changing the text file.
When the table is provided via other means such as NIS, LDAP
or SQL, the same lookups are done as for ordinary indexed files.
Alternatively, the table can be provided as a regular-expression
map where patterns are given as regular expressions. In that case,
the lookups are done in a slightly different way as described below.
-.SH TABLE FORMAT
+.SH POSTFIX-STYLE VIRTUAL DOMAINS
.na
.nf
.ad
.fi
-Typical support for a virtual domain looks like the following:
+With a Postfix-style virtual domain, the virtual domain has its
+own user name space. Local (i.e. non-virtual) usernames are not
+visible in a Postfix-style virtual domain. In particular, local
+\fBaliases\fR(5) and mailing lists are not visible in a
+Postfix-style virtual domain.
+
+Use a Sendmail-style virtual domain (see below) if local usernames,
+\fBaliases\fR(5) or mailing lists should be visible in that virtual
+domain.
+Support for a Postfix-style virtual domain looks like:
+.sp
+/etc/postfix/virtual:
.in +4
.nf
\fIvirtual.domain anything\fR (right-hand content does not matter)
.fi
.in -4
-With this, the SMTP server accepts mail for \fIvirtual.domain\fR and
-rejects mail for \fIunknown\fR@\fIvirtual.domain\fR as undeliverable.
+The \fIvirtual.domain anything\fR entry is required for a
+Postfix-style virtual domain.
+
+Do not list the virtual domain in the \fBmain.cf mydestination\fR
+configuration parameter. Such an entry is required only for a
+Sendmail-style virtual domain.
+
+With a Postfix-style virtual domain, the Postfix SMTP server
+accepts mail for \fIknown-user@virtual.domain\fR and rejects
+mail for \fIunknown-user\fR@\fIvirtual.domain\fR as undeliverable.
+.SH SENDMAIL-STYLE VIRTUAL DOMAINS
+.na
+.nf
+.ad
+.fi
+With a Sendmail-style virtual domain, every local (i.e. non-virtual)
+username is visible in the virtual domain. In particular, every
+local alias and mailing list is visible in a Sendmail-style virtual
+domain.
+
+Use a Postfix-style virtual domain (see above) if local usernames,
+\fBaliases\fR(5) or mailing lists should not be visible in that
+virtual domain.
+
+Support for a Sendmail-style virtual domain looks like:
+.sp
+/etc/postfix/main.cf:
+.in +4
+.nf
+mydestination = $myhostname localhost.$mydomain $mydomain
+.ti +4
+\fIvirtual.domain\fR
+.fi
+.in -4
+.sp
+/etc/postfix/virtual:
+.in +4
+.nf
+\fIuser1@virtual.domain address1\fR
+\fIuser2@virtual.domain address2, address3\fR
+.fi
+.in -4
+
+The \fBmain.cf mydestination\fR entry is required for a Sendmail-style
+virtual domain.
+
+Do not specify a \fIvirtual.domain whatever\fR entry in the
+virtual table. Such an entry is required only with a
+Postfix-style virtual domain.
+With a Sendmail-style virtual domain, the Postfix local delivery
+agent delivers mail for an unknown \fIuser\fR@\fIvirtual.domain\fR
+to a local (i.e. non-virtual) user that has the same name; if no
+such recipient exists, the Postfix local delivery agent bounces the
+mail to the sender.
+.SH TABLE FORMAT
+.na
+.nf
+.ad
+.fi
The format of the virtual table is as follows, mappings being
tried in the order as listed in this manual page:
.IP "blanks and comments"
request \fBFLUSH_REQ_REFRESH\fR.
.IP "\fBFLUSH_REQ_REFRESH\fR (completes in the background)"
Refresh non-empty per-destination logfiles that were not read in
-$\fBfast_flush_refresh_time\fR hours, by simulating
+\fB$fast_flush_refresh_time\fR hours, by simulating
send requests (see above) for the corresponding destinations.
.sp
Delete empty per-destination logfiles that were not updated in
Refresh all non-empty per-destination logfiles, by simulating
send requests (see above) for the corresponding destinations.
This can be incredibly expensive when logging is enabled for
-all deferred mail, and is not recommended.
+many destinations, and is not recommended.
.sp
Delete empty per-destination logfiles that were not updated in
\fBfast_flush_purge_time\fR days.
\fBmaster.cf\fR configuration file.
Upon receipt of a request to deliver all mail for an eligible
-destination, this server requests delivery of all messages that
-are listed in that destination's logfile, regardless of the
+destination, the \fBflush\fR server requests delivery of all messages
+that are listed in that destination's logfile, regardless of the
recipients of those messages. This is not an issue for mail
that is sent to a \fBrelay_domains\fR destination because
such mail typically only has recipients in one domain.
.fi
.IP \fBalias_maps\fR
List of alias databases.
+.IP \fBbiff\fR
+Enable or disable notification of new mail via the
+\fBcomsat\fR network service.
.IP \fBexpand_owner_alias\fR
When delivering to an alias that has an owner- companion alias,
set the envelope sender address to the right-hand side of the
.IP \fBsmtpd_timeout\fR
Limit the time to send a server response and to receive a client
request.
+.IP \fBsoft_bounce\fR
+Change hard (5xx) reject responses into soft (4xx) reject responses.
+This can be useful for testing purposes.
.SH "Resource controls"
.ad
.fi
# \fBnewaliases\fR
# DESCRIPTION
# The \fBaliases\fR file provides a system-wide mechanism to
-# redirect mail for local recipients.
+# redirect mail for local recipients. The redirections are
+# processed by the Postfix \fBlocal\fR(8) delivery agent.
#
# The file serves as input to the \fBpostalias\fR(1) command. The
# result, an indexed file in \fBdbm\fR or \fBdb\fR format, is
# SYNOPSIS
# \fBpostmap /etc/postfix/canonical\fR
# DESCRIPTION
-# The optional \fBcanonical\fR file specifies an address mapping for
+# The optional \fBcanonical\fR table specifies an address mapping for
# local and non-local addresses. The mapping is used by the
# \fBcleanup\fR(8) daemon. The address mapping is recursive.
#
-# Normally, the file serves as input to the \fBpostmap\fR(1) command.
+# Normally, the \fBcanonical\fR table is specified as a text file
+# that serves as input to the \fBpostmap\fR(1) command.
# The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
# is used for fast searching by the mail system. Execute the command
# \fBpostmap /etc/postfix/canonical\fR in order to rebuild the indexed
-# file after changing the canonical table.
+# file after changing the text file.
#
# When the table is provided via other means such as NIS, LDAP
# or SQL, the same lookups are done as for ordinary indexed files.
# SYNOPSIS
# \fBpostmap /etc/postfix/virtual\fR
# DESCRIPTION
-# The optional \fBvirtual\fR table specifies redirections for local
-# and non-local recipients or domains. The redirections are used by
-# the \fBcleanup\fR(8) daemon. The redirections are recursive.
+# The optional \fBvirtual\fR table specifies address redirections for
+# local and non-local recipients or domains. The redirections are used
+# by the \fBcleanup\fR(8) daemon. The redirections are recursive.
#
-# The \fBvirtual\fR redirection is applied only to the recipient
-# envelope address, and does not affect message headers.
+# The \fBvirtual\fR redirection is applied only to recipient
+# envelope addresses, and does not affect message headers.
# Think Sendmail rule set \fBS0\fR, if you like. Use \fBcanonical\fR(5)
# mapping to rewrite header and envelope addresses in general.
#
-# Normally, the file serves as input to the \fBpostmap\fR(1) command.
+# Normally, the \fBvirtual\fR table is specified as a text file that
+# serves as input to the \fBpostmap\fR(1) command.
# The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
# is used for fast searching by the mail system. Execute the command
# \fBpostmap /etc/postfix/virtual\fR in order to rebuild the indexed
-# file after changing the virtual table.
+# file after changing the text file.
#
# When the table is provided via other means such as NIS, LDAP
# or SQL, the same lookups are done as for ordinary indexed files.
# Alternatively, the table can be provided as a regular-expression
# map where patterns are given as regular expressions. In that case,
# the lookups are done in a slightly different way as described below.
-# TABLE FORMAT
+# POSTFIX-STYLE VIRTUAL DOMAINS
# .ad
# .fi
-# Typical support for a virtual domain looks like the following:
+# With a Postfix-style virtual domain, the virtual domain has its
+# own user name space. Local (i.e. non-virtual) usernames are not
+# visible in a Postfix-style virtual domain. In particular, local
+# \fBaliases\fR(5) and mailing lists are not visible in a
+# Postfix-style virtual domain.
+#
+# Use a Sendmail-style virtual domain (see below) if local usernames,
+# \fBaliases\fR(5) or mailing lists should be visible in that virtual
+# domain.
#
+# Support for a Postfix-style virtual domain looks like:
+# .sp
+# /etc/postfix/virtual:
# .in +4
# .nf
# \fIvirtual.domain anything\fR (right-hand content does not matter)
# .fi
# .in -4
#
-# With this, the SMTP server accepts mail for \fIvirtual.domain\fR and
-# rejects mail for \fIunknown\fR@\fIvirtual.domain\fR as undeliverable.
+# The \fIvirtual.domain anything\fR entry is required for a
+# Postfix-style virtual domain.
+#
+# Do not list the virtual domain in the \fBmain.cf mydestination\fR
+# configuration parameter. Such an entry is required only for a
+# Sendmail-style virtual domain.
+#
+# With a Postfix-style virtual domain, the Postfix SMTP server
+# accepts mail for \fIknown-user@virtual.domain\fR and rejects
+# mail for \fIunknown-user\fR@\fIvirtual.domain\fR as undeliverable.
+# SENDMAIL-STYLE VIRTUAL DOMAINS
+# .ad
+# .fi
+# With a Sendmail-style virtual domain, every local (i.e. non-virtual)
+# username is visible in the virtual domain. In particular, every
+# local alias and mailing list is visible in a Sendmail-style virtual
+# domain.
+#
+# Use a Postfix-style virtual domain (see above) if local usernames,
+# \fBaliases\fR(5) or mailing lists should not be visible in that
+# virtual domain.
#
+# Support for a Sendmail-style virtual domain looks like:
+# .sp
+# /etc/postfix/main.cf:
+# .in +4
+# .nf
+# mydestination = $myhostname localhost.$mydomain $mydomain
+# .ti +4
+# \fIvirtual.domain\fR
+# .fi
+# .in -4
+# .sp
+# /etc/postfix/virtual:
+# .in +4
+# .nf
+# \fIuser1@virtual.domain address1\fR
+# \fIuser2@virtual.domain address2, address3\fR
+# .fi
+# .in -4
+#
+# The \fBmain.cf mydestination\fR entry is required for a Sendmail-style
+# virtual domain.
+#
+# Do not specify a \fIvirtual.domain whatever\fR entry in the
+# virtual table. Such an entry is required only with a
+# Postfix-style virtual domain.
+#
+# With a Sendmail-style virtual domain, the Postfix local delivery
+# agent delivers mail for an unknown \fIuser\fR@\fIvirtual.domain\fR
+# to a local (i.e. non-virtual) user that has the same name; if no
+# such recipient exists, the Postfix local delivery agent bounces the
+# mail to the sender.
+# TABLE FORMAT
+# .ad
+# .fi
# The format of the virtual table is as follows, mappings being
# tried in the order as listed in this manual page:
# .IP "blanks and comments"
# or \fBpcre_table\fR(5).
#
# Each pattern is a regular expression that is applied to the entire
-# address being looked up. Thus, \fIuser@domain\fR mail addresses are not
+# address being looked up. Thus, \fIuser@domain\fR mail addresses are not
# broken up into their \fIuser\fR and \fI@domain\fR constituent parts,
# nor is \fIuser+foo\fR broken up into \fIuser\fR and \fIfoo\fR.
#
-# Patterns are applied in the order as specified in the table, until a
+# Patterns are applied in the order as specified in the table, until a
# pattern is found that matches the search string.
#
# Results are the same as with normal indexed file lookups, with
* Version of this program.
*/
#define VAR_MAIL_VERSION "mail_version"
-#define DEF_MAIL_VERSION "Snapshot-20001109"
+#define DEF_MAIL_VERSION "Snapshot-20001118"
extern char *var_mail_version;
/* LICENSE
/* .fi
/* .IP \fBalias_maps\fR
/* List of alias databases.
+/* .IP \fBbiff\fR
+/* Enable or disable notification of new mail via the
+/* \fBcomsat\fR network service.
/* .IP \fBexpand_owner_alias\fR
/* When delivering to an alias that has an owner- companion alias,
/* set the envelope sender address to the right-hand side of the
* $HOME/.forward file, then mailbox delivery. Back off when the user's
* home directory does not exist.
*/
- if ((mypwd = mypwnam(state.msg_attr.user)) == 0)
- return (deliver_unknown(state, usr_attr));
if (var_stat_home_dir
+ && (mypwd = mypwnam(state.msg_attr.user)) != 0
&& stat_as(mypwd->pw_dir, &st, mypwd->pw_uid, mypwd->pw_gid) < 0)
return (defer_append(BOUNCE_FLAG_KEEP,
BOUNCE_ATTR(state.msg_attr),
#include <stringops.h>
#include <myflock.h>
#include <watchdog.h>
+#include <clean_env.h>
/* Global library. */
if (getenv(CONF_ENV_DEBUG))
debug_me = 1;
+ /*
+ * Ad-hoc environment filter, to enforce consistent behavior whether
+ * Postfix is started by hand, or at system boot time.
+ */
+ clean_env();
+
/*
* Don't die when a process goes away unexpectedly.
*/
* Some systems such as AIX have a huge per-process open file limit. In
* those cases, limit the search for potential file descriptor leaks to
* just the first couple hundred.
+ *
+ * The Debian post-installation script passes an open file descriptor into
+ * the master process and waits forever for someone to close it. Because
+ * of this we have to close descriptors > 2, and pray that doing so does
+ * not break things.
*/
if (fd_limit > 500)
fd_limit = 500;
for (fd = 3; fd < fd_limit; fd++)
- if ((n = fcntl(fd, F_GETFD, 0)) >= 0 && (n & FD_CLOEXEC) == 0)
- fcntl(fd, F_SETFD, n | FD_CLOEXEC);
+ (void) close(fd);
/*
* Initialize logging and exit handler.
/* structure members. A null result means that the file could not be
/* read or that the file contained incorrect information. Recipient
/* limit imposed this time is based on the position of the message
-/* job(s) on corresponding transport job list(s).
+/* job(s) on corresponding transport job list(s). It's considered
+/* an error to call this when the recipient slots can't be allocated.
/*
/* qmgr_message_free() destroys an in-core message structure and makes
/* the resources available for reuse. It is an error to destroy
/*
* If we re-open this file, skip over on-file recipient records that we
- * already looked at, and reset the in-core recipient address list.
+ * already looked at, and refill the in-core recipient address list.
*
* For the first time, the message recipient limit is calculated from the
* global recipient limit. This is to avoid reading little recipients
if (message->rcpt_offset) {
if (message->rcpt_list.len)
msg_panic("%s: recipient list not empty on recipient reload", message->queue_id);
+ if (message->rcpt_limit <= message->rcpt_count)
+ msg_panic("%s: no recipient slots available", message->queue_id);
if (vstream_fseek(message->fp, message->rcpt_offset, SEEK_SET) < 0)
msg_fatal("seek file %s: %m", VSTREAM_PATH(message->fp));
message->rcpt_offset = 0;
if (queue->window > queue->busy_refcount && peer->entry_list.next != 0) {
QMGR_LIST_ROTATE(job->peer_list, peer, peers);
if (msg_verbose)
- msg_info("qmgr_peer_select: %s %s", job->message->queue_id, queue->name);
+ msg_info("qmgr_peer_select: %s %s %s (%d of %d)",
+ job->message->queue_id, queue->transport->name, queue->name,
+ queue->busy_refcount + 1, queue->window);
return (peer);
}
}
/*
* Increase the destination's concurrency limit until we reach the
- * transport's concurrency limit.
+ * transport's concurrency limit. Allow for a margin the size of the
+ * initial destination concurrency, so that we're not too gentle.
*/
if (transport->dest_concurrency_limit == 0
|| transport->dest_concurrency_limit > queue->window)
- if (queue->window <= queue->busy_refcount)
+ if (queue->window <= queue->busy_refcount + transport->init_dest_concurrency)
queue->window++;
}
/*
* Increase the destination's concurrency limit until we reach the
- * transport's concurrency limit.
+ * transport's concurrency limit. Allow for a margin the size of the
+ * initial destination concurrency, so that we're not too gentle.
*/
if (transport->dest_concurrency_limit == 0
|| transport->dest_concurrency_limit > queue->window)
- if (queue->window <= queue->busy_refcount)
+ if (queue->window <= queue->busy_refcount + transport->init_dest_concurrency)
queue->window++;
}
/* .IP "\fB-F \fIfull_name\fR
/* Set the sender full name. This is used only with messages that
/* have no \fBFrom:\fR message header.
+/* .IP "\fB-G\fR (ignored)"
+/* Gateway (relay) submission, as opposed to initial user submission.
/* .IP \fB-I\fR
/* Initialize alias database. See the \fBnewaliases\fR
/* command above.
/* chat - send command and examine reply */
-static void chat(VSTREAM * fp, VSTRING * buf, const char *fmt,...)
+static void chat(VSTREAM *fp, VSTRING *buf, const char *fmt,...)
{
va_list ap;
optind++;
continue;
}
- if ((c = GETOPT(argc, argv, "B:C:F:IN:R:UX:b:ce:f:h:imno:p:r:q:tvx")) <= 0)
+ if ((c = GETOPT(argc, argv, "B:C:F:GIN:R:UX:b:ce:f:h:imno:p:r:q:tvx")) <= 0)
break;
switch (c) {
default:
case 'F': /* full name */
full_name = optarg;
break;
+ case 'G': /* gateway submission */
+ break;
case 'I': /* newaliases */
mode = SM_MODE_NEWALIAS;
break;
/* .IP \fBsmtpd_timeout\fR
/* Limit the time to send a server response and to receive a client
/* request.
+/* .IP \fBsoft_bounce\fR
+/* Change hard (5xx) reject responses into soft (4xx) reject responses.
+/* This can be useful for testing purposes.
/* .SH "Resource controls"
/* .ad
/* .fi
* XXX Force an empty record when the queue file content begins with
* whitespace, so that it won't be considered as being part of our own
* Received: header. What an ugly Kluge.
+ *
+ * XXX Deal with UNIX-style From_ lines at the start of message content
+ * because sendmail permits it.
*/
if (vstream_fflush(state->cleanup))
state->err = CLEANUP_STAT_WRITE;
start = vstring_str(state->buffer);
len = VSTRING_LEN(state->buffer);
if (first) {
+ if (strncmp(start + strspn(start, ">"), "From ", 5) == 0) {
+ rec_fprintf(state->cleanup, curr_rec_type,
+ "Mbox-Line: %s", start);
+ continue;
+ }
first = 0;
if (len > 0 && ISSPACE(start[0]))
rec_put(state->cleanup, REC_TYPE_NORM, "", 0);
- else if (strncmp(start + strspn(start, ">"), "From ", 5) == 0)
- continue;
}
if (prev_rec_type != REC_TYPE_CONT
&& *start == '.' && (++start, --len) == 0)
/*
/* smtpd_chat_reply() formats a server reply, sends it to the
/* client, and appends a copy to the SMTP transaction log.
+/* When soft_bounce is enabled, all 5xx (reject) reponses are
+/* replaced by 4xx (try again).
/*
/* smtpd_chat_notify() sends a copy of the SMTP transaction log
/* to the postmaster for review. The postmaster notice is sent only
va_start(ap, format);
vstring_vsprintf(state->buffer, format, ap);
va_end(ap);
+ if (var_soft_bounce && STR(state->buffer)[0] == '5')
+ STR(state->buffer)[0] = '4';
smtp_chat_append(state, "Out: ");
if (msg_verbose)
if (!resolve_local(domain))
SMTPD_CHECK_RCPT_RETURN(0);
+#define NOMATCH(map, rcpt) \
+ (mail_addr_find(map, rcpt, (char **) 0) == 0 && dict_errno == 0)
+
/*
- * Reject mail to unknown addresses in domains that match $mydestination
- * or $inet_interfaces (Postfix local). Reject mail to unknown addresses
- * in Postfix virtual domains (Postfix virtual). Accept mail to other
- * domains. Toss any extension information found by the lookup routines.
- */
-#define NOP ((char **) 0)
-
- if (resolve_local(domain)) {
- if (*var_virtual_maps
- && maps_find(virtual_maps, domain, 0)) {
- msg_warn("virtual domain \"%s\" is listed in $mydestination",
- domain);
- msg_warn("the $local_recipient_maps feature requires that no");
- msg_warn("virtual domains are listed in $mydestination");
- msg_warn("be sure to specify the required \"%s whatever\"",
- domain);
- msg_warn("entry in the virtual map, as explained in the man");
- msg_warn("page and in the FAQ entry for virtual domains");
- SMTPD_CHECK_RCPT_RETURN(0);
- }
- dict_errno = 0;
- if (*var_local_rcpt_maps
- && !mail_addr_find(rcpt_canon_maps, STR(reply.recipient), NOP)
- && !mail_addr_find(canonical_maps, STR(reply.recipient), NOP)
- && !mail_addr_find(relocated_maps, STR(reply.recipient), NOP)
- && !mail_addr_find(local_rcpt_maps, STR(reply.recipient), NOP)) {
+ * Reject mail to unknown addresses in Postfix-style virtual domains.
+ */
+ if (*var_virtual_maps && maps_find(virtual_maps, domain, 0)) {
+ if (NOMATCH(rcpt_canon_maps, STR(reply.recipient))
+ && NOMATCH(canonical_maps, STR(reply.recipient))
+ && NOMATCH(relocated_maps, STR(reply.recipient))
+ && NOMATCH(virtual_maps, STR(reply.recipient))) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
- "%d <%s>: User unknown",
- dict_errno ? 450 : 550, recipient);
+ "%d <%s>: User unknown", 550, recipient);
SMTPD_CHECK_RCPT_RETURN(STR(error_text));
}
- } else {
- dict_errno = 0;
- if (*var_virtual_maps
- && !mail_addr_find(rcpt_canon_maps, STR(reply.recipient), NOP)
- && !mail_addr_find(canonical_maps, STR(reply.recipient), NOP)
- && !mail_addr_find(relocated_maps, STR(reply.recipient), NOP)
- && !mail_addr_find(virtual_maps, STR(reply.recipient), NOP)
- && maps_find(virtual_maps, domain, 0)) {
+ }
+
+ /*
+ * Reject mail to unknown addresses in local domains (domains that match
+ * $mydestination or $inet_interfaces). Accept mail for addresses in
+ * Sendmail-style virtual domains.
+ */
+ if (*var_local_rcpt_maps && resolve_local(domain)) {
+ if (NOMATCH(relocated_maps, STR(reply.recipient))
+ && NOMATCH(rcpt_canon_maps, STR(reply.recipient))
+ && NOMATCH(canonical_maps, STR(reply.recipient))
+ && NOMATCH(relocated_maps, STR(reply.recipient))
+ && NOMATCH(virtual_maps, STR(reply.recipient))
+ && NOMATCH(local_rcpt_maps, STR(reply.recipient))) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
- "%d <%s>: User unknown",
- dict_errno ? 450 : 550, recipient);
+ "%d <%s>: User unknown", 550, recipient);
SMTPD_CHECK_RCPT_RETURN(STR(error_text));
}
}
+
+ /*
+ * Accept all other addresses - including addresses that passed the above
+ * tests because of some table lookup problem.
+ */
SMTPD_CHECK_RCPT_RETURN(0);
}
>>> client foo 123.123.123.123
OK
>>> helo foo.
+./smtpd_check: warning: valid_hostname: misplaced delimiter: foo.
+./smtpd_check: warning: valid_hostname: misplaced delimiter: foo.
./smtpd_check: reject: HELO from foo[123.123.123.123]: 450 <foo.>: Helo command rejected: Host not found
450 <foo.>: Helo command rejected: Host not found
>>> helo foo
OK
>>> helo 123.123.123.123
./smtpd_check: warning: valid_hostname: numeric hostname: 123.123.123.123
+./smtpd_check: warning: valid_hostname: numeric hostname: 123.123.123.123
+./smtpd_check: warning: valid_hostname: numeric hostname: 123.123.123.123
./smtpd_check: reject: HELO from foo[123.123.123.123]: 450 <123.123.123.123>: Helo command rejected: Host not found
450 <123.123.123.123>: Helo command rejected: Host not found
>>> helo_restrictions permit_naked_ip_address,reject_invalid_hostname,reject_unknown_hostname
>>> client foo 123.123.123.123
OK
>>> helo foo.
+./smtpd_check: warning: valid_hostname: misplaced delimiter: foo.
+./smtpd_check: warning: valid_hostname: misplaced delimiter: foo.
./smtpd_check: reject: HELO from foo[123.123.123.123]: 450 <foo.>: Helo command rejected: Host not found
450 <foo.>: Helo command rejected: Host not found
>>> helo foo
void clean_env(void)
{
char *TZ;
+ char *DISPLAY;
+ char *XAUTHORITY;
extern char **environ;
/*
* configurable.
*/
TZ = getenv("TZ");
+ DISPLAY = getenv("DISPLAY");
+ XAUTHORITY = getenv("XAUTHORITY");
/*
* Truncate the process environment, if available. On some systems
*/
if (TZ && setenv("TZ", TZ, 1))
msg_fatal("setenv: %m");
+ if (DISPLAY && setenv("DISPLAY", DISPLAY, 1))
+ msg_fatal("setenv: %m");
+ if (XAUTHORITY && setenv("XAUTHORITY", XAUTHORITY, 1))
+ msg_fatal("setenv: %m");
/*
* Update the process environment with configurable initial values.
domainlist =
mystrdup((char *) get_mail_conf_str(vstring_str(config_param),
"", 0, 0));
- if (domainlist) {
+ if (*domainlist) {
dict_ldap->domain = match_list_init(domainlist, 1, match_string);
if (dict_ldap->domain == NULL)
msg_warn("%s: domain match list creation using \"%s\" failed, will continue without it", myname, domainlist);
if (msg_verbose)
msg_info("%s: domain list created using \"%s\"", myname,
domainlist);
- myfree(domainlist);
+ } else {
+ dict_ldap->domain = NULL;
}
+ myfree(domainlist);
/*
* get configured value of "ldapsource_timeout"; default to 10 seconds