2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-30 21:55:20 +00:00

snapshot-20001118

This commit is contained in:
Wietse Venema
2000-11-18 00:00:00 -05:00
committed by Viktor Dukhovni
parent 5d6408c2f3
commit 8908b7e5da
40 changed files with 943 additions and 620 deletions

View File

@@ -4445,3 +4445,53 @@ Apologies for any names omitted.
Cleanup: changed prototype of internal function that did Cleanup: changed prototype of internal function that did
not return a useful result. File: src/util/vstream_popen.c. 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.

View File

@@ -45,6 +45,10 @@ from:
IMPORTANT: if you install the Cyrus SASL libraries as per the default, IMPORTANT: if you install the Cyrus SASL libraries as per the default,
you will have to symlink /usr/lib/sasl -> /usr/local/lib/sasl. 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 Building Postfix with SASL authentication support
================================================= =================================================

View File

@@ -43,16 +43,17 @@ decode: root
# #
# DESCRIPTION # DESCRIPTION
# The aliases file provides a system-wide mechanism to redi- # 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 # The file serves as input to the postalias(1) command. The
# result, an indexed file in dbm or db format, is used for # result, an indexed file in dbm or db format, is used for
# fast lookup by the mail system. Execute the command # fast lookup by the mail system. Execute the command
# newaliases in order to rebuild the indexed file after # newaliases in order to rebuild the indexed file after
# changing the Postfix alias database. # changing the Postfix alias database.
# #
# The input and output file formats are expected to be com- # The input and output file formats are expected to be com-
# patible with Sendmail version 8, and are expected to be # patible with Sendmail version 8, and are expected to be
# suitable for the use as NIS maps. # suitable for the use as NIS maps.
# #
# Users can control delivery of their own mail by setting up # Users can control delivery of their own mail by setting up
@@ -66,57 +67,56 @@ decode: root
# #
# name: value1, value2, ... # name: value1, value2, ...
# #
# o Lines that begin with whitespace continue the pre- # o Lines that begin with whitespace continue the pre-
# vious line. # vious line.
# #
# o Blank lines are ignored, as are lines beginning # o Blank lines are ignored, as are lines beginning
# with `#'. # with `#'.
# #
# The name is a local address (no domain part). Use double # The name is a local address (no domain part). Use double
# quotes when the name contains any special characters such # quotes when the name contains any special characters such
# as whitespace, `#', `:', or `@'. The name is folded to # as whitespace, `#', `:', or `@'. The name is folded to
# lowercase, in order to make database lookups case insensi- # lowercase, in order to make database lookups case insensi-
# tive. # tive.
# #
# In addition, when an alias exists for owner-name, delivery # 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 # the originator. This is typically used to direct delivery
# errors to the owner of a mailing list, who is in a better # errors to the owner of a mailing list, who is in a better
# position to deal with mailing list delivery problems than # position to deal with mailing list delivery problems than
# the originator of the undelivered mail. # the originator of the undelivered mail.
# #
# The value contains one or more of the following: # The value contains one or more of the following:
# #
# address
# Mail is forwarded to address, which is compatible
#
# 1 # 1
# #
# ALIASES(5) ALIASES(5) # ALIASES(5) ALIASES(5)
# #
# address
# Mail is forwarded to address, which is compatible
# with the RFC 822 standard. # with the RFC 822 standard.
# #
# /file/name # /file/name
# Mail is appended to /file/name. See local(8) for # Mail is appended to /file/name. See local(8) for
# details of delivery to file. Delivery is not lim- # details of delivery to file. Delivery is not lim-
# ited to regular files. For example, to dispose of # ited to regular files. For example, to dispose of
# unwanted mail, deflect it to /dev/null. # unwanted mail, deflect it to /dev/null.
# #
# |command # |command
# Mail is piped into command. Commands that contain # Mail is piped into command. Commands that contain
# special characters, such as whitespace, should be # special characters, such as whitespace, should be
# enclosed between double quotes. See local(8) for # enclosed between double quotes. See local(8) for
# details of delivery to command. # details of delivery to command.
# #
# When the command fails, a limited amount of command # When the command fails, a limited amount of command
# output is mailed back to the sender. The file # output is mailed back to the sender. The file
# /usr/include/sysexits.h defines the expected exit # /usr/include/sysexits.h defines the expected exit
# status codes. For example, use |"exit 67" to simu- # status codes. For example, use |"exit 67" to simu-
# late a "user unknown" error, and |"exit 0" to # late a "user unknown" error, and |"exit 0" to
# implement an expensive black hole. # implement an expensive black hole.
# #
# :include:/file/name # :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 # named file. Lines in :include: files have the same
# syntax as the right-hand side of alias entries. # syntax as the right-hand side of alias entries.
# #
@@ -128,37 +128,37 @@ decode: root
# #
# ADDRESS EXTENSION # ADDRESS EXTENSION
# When alias database search fails, and the recipient local- # When alias database search fails, and the recipient local-
# part contains the optional recipient delimiter (e.g., # part contains the optional recipient delimiter (e.g.,
# user+foo), the search is repeated for the unextended # user+foo), the search is repeated for the unextended
# address (e.g., user). # address (e.g., user).
# #
# CONFIGURATION PARAMETERS # CONFIGURATION PARAMETERS
# The following main.cf parameters are especially relevant # The following main.cf parameters are especially relevant
# to this topic. See the Postfix main.cf file for syntax # to this topic. See the Postfix main.cf file for syntax
# details and for default values. Use the postfix reload # details and for default values. Use the postfix reload
# command after a configuration change. # command after a configuration change.
# #
# alias_maps # alias_maps
# List of alias databases. # List of alias databases.
# #
# allow_mail_to_commands # 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 # Restrict the usage of mail delivery to external
# file. # command.
# #
# 2 # 2
# #
# ALIASES(5) ALIASES(5) # ALIASES(5) ALIASES(5)
# #
# allow_mail_to_files
# Restrict the usage of mail delivery to external
# file.
#
# owner_request_special # owner_request_special
# Give special treatment to owner-xxx and xxx-request # Give special treatment to owner-xxx and xxx-request
# addresses. # addresses.
# #
# recipient_delimiter # recipient_delimiter
# Delimiter that separates recipients from address # Delimiter that separates recipients from address
# extensions. # extensions.
# #
# STANDARDS # STANDARDS
@@ -169,7 +169,7 @@ decode: root
# postalias(1) alias database management # postalias(1) alias database management
# #
# LICENSE # LICENSE
# The Secure Mailer license must be distributed with this # The Secure Mailer license must be distributed with this
# software. # software.
# #
# AUTHOR(S) # AUTHOR(S)

View File

@@ -8,50 +8,51 @@
# postmap /etc/postfix/canonical # postmap /etc/postfix/canonical
# #
# DESCRIPTION # 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 # for local and non-local addresses. The mapping is used by
# the cleanup(8) daemon. The address mapping is recursive. # the cleanup(8) daemon. The address mapping is recursive.
# #
# Normally, the file serves as input to the postmap(1) com- # Normally, the canonical table is specified as a text file
# mand. The result, an indexed file in dbm or db format, is # that serves as input to the postmap(1) command. The
# used for fast searching by the mail system. Execute the # result, an indexed file in dbm or db format, is used for
# command postmap /etc/postfix/canonical in order to rebuild # fast searching by the mail system. Execute the command
# the indexed file after changing the canonical table. # 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, # When the table is provided via other means such as NIS,
# LDAP or SQL, the same lookups are done as for ordinary # LDAP or SQL, the same lookups are done as for ordinary
# indexed files. # 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- # 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. # 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 # addresses (i.e. addresses that appear inside messages) and
# message envelope addresses (for example, the addresses # message envelope addresses (for example, the addresses
# that are used in SMTP protocol commands). Think Sendmail # that are used in SMTP protocol commands). Think Sendmail
# rule set S3, if you like. # rule set S3, if you like.
# #
# Typically, one would use the canonical table to replace # Typically, one would use the canonical table to replace
# login names by Firstname.Lastname, or to clean up # login names by Firstname.Lastname, or to clean up
# addresses produced by legacy mail systems. # 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. # 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. # aliasing. Use the aliases(5) map for that purpose.
# #
# TABLE FORMAT # TABLE FORMAT
# The format of the canonical table is as follows: # The format of the canonical table is as follows:
# #
# blanks and comments # blanks and comments
# Blank lines are ignored, as are lines beginning # Blank lines are ignored, as are lines beginning
# with `#'. # with `#'.
# #
# leading whitespace # leading whitespace
# Lines that begin with whitespace continue the pre- # Lines that begin with whitespace continue the pre-
# vious line. # vious line.
# #
# 1 # 1
@@ -59,78 +60,78 @@
# CANONICAL(5) CANONICAL(5) # CANONICAL(5) CANONICAL(5)
# #
# pattern result # pattern result
# When pattern matches a mail address, replace it by # When pattern matches a mail address, replace it by
# the corresponding result. # the corresponding result.
# #
# With lookups from indexed files such as DB or DBM, or from # 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: # tried in the order as listed below:
# #
# user@domain address # user@domain address
# user@domain is replaced by address. This form has # user@domain is replaced by address. This form has
# the highest precedence. # the highest precedence.
# #
# This form useful to clean up addresses produced by # This form useful to clean up addresses produced by
# legacy mail systems. It can also be used to pro- # legacy mail systems. It can also be used to pro-
# duce Firstname.Lastname style addresses, but see # duce Firstname.Lastname style addresses, but see
# below for a simpler solution. # below for a simpler solution.
# #
# user address # user address
# user@site is replaced by address when site is equal # 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. # 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. # Firstname.Lastname.
# #
# @domain address # @domain address
# Every address in domain is replaced by address. # Every address in domain is replaced by address.
# This form has the lowest precedence. # 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. # domain, the result is the same user in otherdomain.
# #
# ADDRESS EXTENSION # ADDRESS EXTENSION
# When table lookup fails, and the address localpart con- # When table lookup fails, and the address localpart con-
# tains the optional recipient delimiter (e.g., # tains the optional recipient delimiter (e.g.,
# user+foo@domain), the search is repeated for the unex- # user+foo@domain), the search is repeated for the unex-
# tended address (e.g. user@domain), and the unmatched # tended address (e.g. user@domain), and the unmatched
# extension is propagated to the result of table lookup. The # extension is propagated to the result of table lookup. The
# matching order is: user+foo@domain, user@domain, user+foo, # matching order is: user+foo@domain, user@domain, user+foo,
# user, and @domain. # user, and @domain.
# #
# REGULAR EXPRESSION TABLES # 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 # 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). # 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 # 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 # constituent parts, nor is user+foo broken up into user and
# foo. # foo.
# #
# Patterns are applied in the order as specified in the # Patterns are applied in the order as specified in the
# #
# 2 # 2
# #
# CANONICAL(5) CANONICAL(5) # 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. # string.
# #
# Results are the same as with normal indexed file lookups, # Results are the same as with normal indexed file lookups,
# with the additional feature that parenthesized substrings # with the additional feature that parenthesized substrings
# from the pattern can be interpolated as $1, $2 and so on. # from the pattern can be interpolated as $1, $2 and so on.
# #
# BUGS # BUGS
# The table format does not understand quoting conventions. # The table format does not understand quoting conventions.
# #
# CONFIGURATION PARAMETERS # CONFIGURATION PARAMETERS
# The following main.cf parameters are especially relevant # The following main.cf parameters are especially relevant
# to this topic. See the Postfix main.cf file for syntax # to this topic. See the Postfix main.cf file for syntax
# details and for default values. Use the postfix reload # details and for default values. Use the postfix reload
# command after a configuration change. # command after a configuration change.
# #
# canonical_maps # canonical_maps
@@ -147,19 +148,19 @@
# Other parameters of interest: # Other parameters of interest:
# #
# inet_interfaces # inet_interfaces
# The network interface addresses that this system # The network interface addresses that this system
# receives mail on. # receives mail on.
# #
# masquerade_domains # masquerade_domains
# List of domains that hide their subdomain struc- # List of domains that hide their subdomain struc-
# ture. # ture.
# #
# masquerade_exceptions # masquerade_exceptions
# List of user names that are not subject to address # List of user names that are not subject to address
# masquerading. # masquerading.
# #
# mydestination # mydestination
# List of domains that this mail system considers # List of domains that this mail system considers
# local. # local.
# #
# myorigin # myorigin
@@ -182,7 +183,7 @@
# regexp_table(5) format of POSIX regular expression tables # regexp_table(5) format of POSIX regular expression tables
# #
# LICENSE # LICENSE
# The Secure Mailer license must be distributed with this # The Secure Mailer license must be distributed with this
# software. # software.
# #
# AUTHOR(S) # AUTHOR(S)

View File

@@ -40,6 +40,7 @@ masquerade_domains =
# #
# By default, address masquerading makes no exceptions. # By default, address masquerading makes no exceptions.
# #
#masquerade_exceptions = root,mailer-daemon
#masquerade_exceptions = root #masquerade_exceptions = root
masquerade_exceptions = masquerade_exceptions =

View File

@@ -8,45 +8,103 @@
# postmap /etc/postfix/virtual # postmap /etc/postfix/virtual
# #
# DESCRIPTION # DESCRIPTION
# The optional virtual table specifies redirections for # The optional virtual table specifies address redirections
# local and non-local recipients or domains. The redirec- # for local and non-local recipients or domains. The redi-
# tions are used by the cleanup(8) daemon. The redirections # rections are used by the cleanup(8) daemon. The redirec-
# are recursive. # tions are recursive.
# #
# The virtual redirection is applied only to the recipient # The virtual redirection is applied only to recipient enve-
# envelope address, and does not affect message headers. # lope addresses, and does not affect message headers.
# Think Sendmail rule set S0, if you like. Use canonical(5) # Think Sendmail rule set S0, if you like. Use canonical(5)
# mapping to rewrite header and envelope addresses in gen- # mapping to rewrite header and envelope addresses in gen-
# eral. # eral.
# #
# Normally, the file serves as input to the postmap(1) com- # Normally, the virtual table is specified as a text file
# mand. The result, an indexed file in dbm or db format, is # that serves as input to the postmap(1) command. The
# used for fast searching by the mail system. Execute the # result, an indexed file in dbm or db format, is used for
# command postmap /etc/postfix/virtual in order to rebuild # fast searching by the mail system. Execute the command
# the indexed file after changing the virtual table. # 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, # When the table is provided via other means such as NIS,
# LDAP or SQL, the same lookups are done as for ordinary # LDAP or SQL, the same lookups are done as for ordinary
# indexed files. # 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- # 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. # different way as described below.
# #
# TABLE FORMAT # POSTFIX-STYLE VIRTUAL DOMAINS
# Typical support for a virtual domain looks like the fol- # With a Postfix-style virtual domain, the virtual domain
# lowing: # 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) # virtual.domain anything (right-hand content does not matter)
# postmaster@virtual.domain postmaster # postmaster@virtual.domain postmaster
# user1@virtual.domain address1 # user1@virtual.domain address1
# user2@virtual.domain address2, address3 # user2@virtual.domain address2, address3
# #
# With this, the SMTP server accepts mail for virtual.domain # The virtual.domain anything entry is required for a
# and rejects mail for unknown@virtual.domain as undeliver- #
# 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. # 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 # The format of the virtual table is as follows, mappings
# being tried in the order as listed in this manual page: # being tried in the order as listed in this manual page:
# #
@@ -54,13 +112,14 @@
# Blank lines are ignored, as are lines beginning # Blank lines are ignored, as are lines beginning
# with `#'. # with `#'.
# #
# 1 # leading whitespace
# Lines that begin with whitespace continue the
#
# 2
# #
# VIRTUAL(5) VIRTUAL(5) # VIRTUAL(5) VIRTUAL(5)
# #
# leading whitespace # previous line.
# Lines that begin with whitespace continue the pre-
# vious line.
# #
# pattern result # pattern result
# When pattern matches a mail address, replace it by # When pattern matches a mail address, replace it by
@@ -113,11 +172,12 @@
# constituent parts, nor is user+foo broken up into user and # constituent parts, nor is user+foo broken up into user and
# foo. # foo.
# #
# 2 # Patterns are applied in the order as specified in the
#
# 3
# #
# VIRTUAL(5) VIRTUAL(5) # VIRTUAL(5) VIRTUAL(5)
# #
# Patterns are applied in the order as specified in the
# table, until a pattern is found that matches the search # table, until a pattern is found that matches the search
# string. # string.
# #
@@ -170,5 +230,5 @@
# P.O. Box 704 # P.O. Box 704
# Yorktown Heights, NY 10598, USA # Yorktown Heights, NY 10598, USA
# #
# 3 # 4
# #

View File

@@ -13,16 +13,17 @@ ALIASES(5) ALIASES(5)
<b>DESCRIPTION</b> <b>DESCRIPTION</b>
The <b>aliases</b> file provides a system-wide mechanism to redi- 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 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 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 fast lookup by the mail system. Execute the command
<b>newaliases</b> in order to rebuild the indexed file after <b>newaliases</b> in order to rebuild the indexed file after
changing the Postfix alias database. changing the Postfix alias database.
The input and output file formats are expected to be com- The input and output file formats are expected to be com-
patible with Sendmail version 8, and are expected to be patible with Sendmail version 8, and are expected to be
suitable for the use as NIS maps. suitable for the use as NIS maps.
Users can control delivery of their own mail by setting up Users can control delivery of their own mail by setting up
@@ -36,29 +37,28 @@ ALIASES(5) ALIASES(5)
<i>name</i>: <i>value1</i>, <i>value2</i>, <i>...</i> <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. 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 `#'. with `#'.
The <i>name</i> is a local address (no domain part). Use double The <i>name</i> is a local address (no domain part). Use double
quotes when the name contains any special characters such quotes when the name contains any special characters such
as whitespace, `#', `:', or `@'. The <i>name</i> is folded to as whitespace, `#', `:', or `@'. The <i>name</i> is folded to
lowercase, in order to make database lookups case insensi- lowercase, in order to make database lookups case insensi-
tive. tive.
In addition, when an alias exists for <b>owner-</b><i>name</i>, delivery 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 the originator. This is typically used to direct delivery
errors to the owner of a mailing list, who is in a better errors to the owner of a mailing list, who is in a better
position to deal with mailing list delivery problems than position to deal with mailing list delivery problems than
the originator of the undelivered mail. the originator of the undelivered mail.
The <i>value</i> contains one or more of the following: The <i>value</i> contains one or more of the following:
<i>address</i>
Mail is forwarded to <i>address</i>, which is compatible
@@ -71,29 +71,31 @@ ALIASES(5) ALIASES(5)
ALIASES(5) ALIASES(5) 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. with the <a href="http://www.faqs.org/rfcs/rfc822.html">RFC 822</a> standard.
<i>/file/name</i> <i>/file/name</i>
Mail is appended to <i>/file/name</i>. See <a href="local.8.html"><b>local</b>(8)</a> for 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- details of delivery to file. Delivery is not lim-
ited to regular files. For example, to dispose of ited to regular files. For example, to dispose of
unwanted mail, deflect it to <b>/dev/null</b>. unwanted mail, deflect it to <b>/dev/null</b>.
|<i>command</i> |<i>command</i>
Mail is piped into <i>command</i>. Commands that contain Mail is piped into <i>command</i>. Commands that contain
special characters, such as whitespace, should be special characters, such as whitespace, should be
enclosed between double quotes. See <a href="local.8.html"><b>local</b>(8)</a> for enclosed between double quotes. See <a href="local.8.html"><b>local</b>(8)</a> for
details of delivery to command. details of delivery to command.
When the command fails, a limited amount of command When the command fails, a limited amount of command
output is mailed back to the sender. The file output is mailed back to the sender. The file
<b>/usr/include/sysexits.h</b> defines the expected exit <b>/usr/include/sysexits.h</b> defines the expected exit
status codes. For example, use <b>|"exit</b> <b>67"</b> to simu- 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 late a "user unknown" error, and <b>|"exit</b> <b>0"</b> to
implement an expensive black hole. implement an expensive black hole.
<b>:include:</b><i>/file/name</i> <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 named file. Lines in <b>:include:</b> files have the same
syntax as the right-hand side of alias entries. syntax as the right-hand side of alias entries.
@@ -105,26 +107,24 @@ ALIASES(5) ALIASES(5)
<b>ADDRESS</b> <b>EXTENSION</b> <b>ADDRESS</b> <b>EXTENSION</b>
When alias database search fails, and the recipient local- When alias database search fails, and the recipient local-
part contains the optional recipient delimiter (e.g., part contains the optional recipient delimiter (e.g.,
<i>user+foo</i>), the search is repeated for the unextended <i>user+foo</i>), the search is repeated for the unextended
address (e.g., <i>user</i>). address (e.g., <i>user</i>).
<b>CONFIGURATION</b> <b>PARAMETERS</b> <b>CONFIGURATION</b> <b>PARAMETERS</b>
The following <b>main.cf</b> parameters are especially relevant The following <b>main.cf</b> parameters are especially relevant
to this topic. See the Postfix <b>main.cf</b> file for syntax 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> details and for default values. Use the <b>postfix</b> <b>reload</b>
command after a configuration change. command after a configuration change.
<b>alias</b><i>_</i><b>maps</b> <b>alias</b><i>_</i><b>maps</b>
List of alias databases. List of alias databases.
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>commands</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. 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.
@@ -137,12 +137,16 @@ ALIASES(5) ALIASES(5)
ALIASES(5) ALIASES(5) 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> <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> Give special treatment to <b>owner-</b><i>xxx</i> and <i>xxx</i><b>-request</b>
addresses. addresses.
<b>recipient</b><i>_</i><b>delimiter</b> <b>recipient</b><i>_</i><b>delimiter</b>
Delimiter that separates recipients from address Delimiter that separates recipients from address
extensions. extensions.
<b>STANDARDS</b> <b>STANDARDS</b>
@@ -153,7 +157,7 @@ ALIASES(5) ALIASES(5)
<a href="postalias.1.html">postalias(1)</a> alias database management <a href="postalias.1.html">postalias(1)</a> alias database management
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
@@ -185,10 +189,6 @@ ALIASES(5) ALIASES(5)

View File

@@ -12,56 +12,56 @@ CANONICAL(5) CANONICAL(5)
<b>postmap</b> <b>/etc/postfix/canonical</b> <b>postmap</b> <b>/etc/postfix/canonical</b>
<b>DESCRIPTION</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 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. 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- Normally, the <b>canonical</b> table is specified as a text file
mand. The result, an indexed file in <b>dbm</b> or <b>db</b> format, is that serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The
used for fast searching by the mail system. Execute the result, an indexed file in <b>dbm</b> or <b>db</b> format, is used for
command <b>postmap</b> <b>/etc/postfix/canonical</b> in order to rebuild fast searching by the mail system. Execute the command
the indexed file after changing the canonical table. <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, When the table is provided via other means such as NIS,
LDAP or SQL, the same lookups are done as for ordinary LDAP or SQL, the same lookups are done as for ordinary
indexed files. 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- 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. 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 addresses (i.e. addresses that appear inside messages) and
message envelope addresses (for example, the addresses message envelope addresses (for example, the addresses
that are used in SMTP protocol commands). Think Sendmail that are used in SMTP protocol commands). Think Sendmail
rule set <b>S3</b>, if you like. rule set <b>S3</b>, if you like.
Typically, one would use the <b>canonical</b> table to replace Typically, one would use the <b>canonical</b> table to replace
login names by <i>Firstname.Lastname</i>, or to clean up login names by <i>Firstname.Lastname</i>, or to clean up
addresses produced by legacy mail systems. 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. <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. aliasing. Use the <a href="aliases.5.html"><b>aliases</b>(5)</a> map for that purpose.
<b>TABLE</b> <b>FORMAT</b> <b>TABLE</b> <b>FORMAT</b>
The format of the <b>canonical</b> table is as follows: The format of the <b>canonical</b> table is as follows:
blanks and comments blanks and comments
Blank lines are ignored, as are lines beginning Blank lines are ignored, as are lines beginning
with `#'. with `#'.
leading whitespace leading whitespace
Lines that begin with whitespace continue the pre- Lines that begin with whitespace continue the pre-
vious line. vious line.
1 1
@@ -72,59 +72,59 @@ CANONICAL(5) CANONICAL(5)
<i>pattern</i> <i>result</i> <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>. the corresponding <i>result</i>.
With lookups from indexed files such as DB or DBM, or from 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: tried in the order as listed below:
<i>user</i>@<i>domain</i> <i>address</i> <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. the highest precedence.
This form useful to clean up addresses produced by This form useful to clean up addresses produced by
legacy mail systems. It can also be used to pro- legacy mail systems. It can also be used to pro-
duce <i>Firstname.Lastname</i> style addresses, but see duce <i>Firstname.Lastname</i> style addresses, but see
below for a simpler solution. below for a simpler solution.
<i>user</i> <i>address</i> <i>user</i> <i>address</i>
<i>user</i>@<i>site</i> is replaced by <i>address</i> when <i>site</i> is equal <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>. <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>Firstname.Lastname</i>.
@<i>domain</i> <i>address</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. 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>. <i>domain</i>, the result is the same user in <i>otherdomain</i>.
<b>ADDRESS</b> <b>EXTENSION</b> <b>ADDRESS</b> <b>EXTENSION</b>
When table lookup fails, and the address localpart con- When table lookup fails, and the address localpart con-
tains the optional recipient delimiter (e.g., tains the optional recipient delimiter (e.g.,
<i>user+foo</i>@<i>domain</i>), the search is repeated for the unex- <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 tended address (e.g. <i>user</i>@<i>domain</i>), and the unmatched
extension is propagated to the result of table lookup. The 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>, 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>. <i>user</i>, and @<i>domain</i>.
<b>REGULAR</b> <b>EXPRESSION</b> <b>TABLES</b> <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 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>. 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 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 constituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and
<i>foo</i>. <i>foo</i>.
Patterns are applied in the order as specified in the Patterns are applied in the order as specified in the
@@ -137,20 +137,20 @@ CANONICAL(5) CANONICAL(5)
CANONICAL(5) CANONICAL(5) 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. string.
Results are the same as with normal indexed file lookups, Results are the same as with normal indexed file lookups,
with the additional feature that parenthesized substrings with the additional feature that parenthesized substrings
from the pattern can be interpolated as <b>$1</b>, <b>$2</b> and so on. from the pattern can be interpolated as <b>$1</b>, <b>$2</b> and so on.
<b>BUGS</b> <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> <b>CONFIGURATION</b> <b>PARAMETERS</b>
The following <b>main.cf</b> parameters are especially relevant The following <b>main.cf</b> parameters are especially relevant
to this topic. See the Postfix <b>main.cf</b> file for syntax 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> details and for default values. Use the <b>postfix</b> <b>reload</b>
command after a configuration change. command after a configuration change.
<b>canonical</b><i>_</i><b>maps</b> <b>canonical</b><i>_</i><b>maps</b>
@@ -167,19 +167,19 @@ CANONICAL(5) CANONICAL(5)
Other parameters of interest: Other parameters of interest:
<b>inet</b><i>_</i><b>interfaces</b> <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. receives mail on.
<b>masquerade</b><i>_</i><b>domains</b> <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. ture.
<b>masquerade</b><i>_</i><b>exceptions</b> <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. masquerading.
<b>mydestination</b> <b>mydestination</b>
List of domains that this mail system considers List of domains that this mail system considers
local. local.
<b>myorigin</b> <b>myorigin</b>
@@ -209,7 +209,7 @@ CANONICAL(5) CANONICAL(5)
<a href="regexp_table.5.html">regexp_table(5)</a> format of POSIX regular expression tables <a href="regexp_table.5.html">regexp_table(5)</a> format of POSIX regular expression tables
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>

View File

@@ -128,7 +128,7 @@ addresses</a>
<li><a href="#mobile">Relaying mail for mobile users</a> <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> 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="#relay_restrict">Restricting what users can send mail to off-site destinations</a>
@@ -155,6 +155,8 @@ domains with "relay access denied"</a>
<li><a href="#root">Root's mail is delivered to nobody</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="#bogus">Postfix accepts mail for non-existing local users</a>
<li><a href="#some_local">Delivering some users locally while <li><a href="#some_local">Delivering some users locally while
@@ -190,27 +192,24 @@ distribution list</a>
<li><a href="#owner-foo">Postfix ignores the owner-list alias</a> <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> </ul>
<a name="virtual_domains"><h3>Virtual domains</h3> <a name="virtual_domains"><h3>Virtual domains</h3>
<ul> <ul>
<li><a href="#virtual_setup">How to configure a Postfix virtual domain</a> <li><a href="#unknown_virtual_accept">Postfix does not refuse mail for
unknown users in virtual domains</a>
<li><a href="#virtual_setup">Postfix does not refuse mail for <li><a href="#unknown_virtual_loop">Mail for unknown users in
unknown virtual users</a> virtual domains fails with "mail loops back to myself"</a>
<li><a href="#virtual_setup">Mail for unknown virtual users fails <li><a href="#virtual_relay">Postfix refuses mail for virtual
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
domains with "relay access denied"</a> 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 <li><a href="#domain_mailbox">Receiving a virtual domain in a
mailbox</a> mailbox</a>
@@ -1480,10 +1479,41 @@ To find out the location for your system, execute the command
<hr> <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> <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 See elsewhere for how to reject mail for <a
virtual</a> users. href="#unknown_virtual_accept">unknown users in virtual domains</a>.
<p> <p>
@@ -1527,9 +1557,9 @@ The only way to find out is to try.
<p> <p>
By default, the Postfix SMTP server does know about Postfix <a By default, the Postfix SMTP server is aware of Postfix <a
href="#virtual_setup">virtual</a> maps, and will reject mail for href="virtual.5.html">virtual</a> maps, and will accept mail for
<i>unknown@virtual.domain</i> without further configuration. <i>known-user@virtual.domain</i> without further configuration.
<hr> <hr>
@@ -1928,68 +1958,37 @@ sense to make it moderated.
<hr> <hr>
<a name="virtual_setup"><h3>How to configure a Postfix virtual domain</h3> <a name="unknown_virtual_accept"><h3>Postfix does not refuse mail for
unknown users in virtual domains</h3></a>
Problem: <a name="unknown_virtual_loop"><h3>Mail for unknown users in a
virtual domain fails with "mail loops back to myself"</h3></a>
<p> <a name="virtual_relay"><h3>Postfix refuses mail for virtual
domains with "relay access denied"</h3></a>
<ul> Solution: specify a Postfix-style virtual domain or a Sendmail-style
virtual domain.
<li>Postfix does not refuse mail for unknown virtual users.
<li>Mail for unknown virtual users fails with "mail loops back to
myself".
<li>Postfix refuses mail for virtual domains with "user unknown".
<li>Postfix refuses mail for virtual domains with "relay access
denied".
</ul>
<p> <p>
Solution: Be sure to follow instructions in the <a href="virtual.5.html">
virtual</a> manual page.
<p>
<ul>
<li> Add a magical entry to the Postfix virtual maps for
each Postfix virtual domain:
<p>
<pre>
/etc/postfix/virtual:
virtual.domain whatever
</pre>
<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>
<p>
For more information on how to set up virtual domains, see the <a
href="virtual.5.html">virtual</a> manual page.
<hr> <hr>
<a name="command"><h3>Commands don't work in Postfix virtual maps</h3> <a name="virtual_command"><h3>Commands and mailing lists don't work
in Postfix virtual maps</h3>
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>
Long reply follows.
<p>
Delivering mail to a command is a security-sensitive operation, Delivering mail to a command is a security-sensitive operation,
because the command must be executed with the right privileges. because the command must be executed with the right privileges.
@@ -2003,56 +2002,6 @@ privileges where possible. In particular, Postfix virtual mapping
is done by an unprivileged daemon, so there is no secure way to is done by an unprivileged daemon, so there is no secure way to
execute commands found in virtual maps. 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> <hr>
<a name="domain_mailbox"><h3>Receiving a virtual domain in a mailbox</h3> <a name="domain_mailbox"><h3>Receiving a virtual domain in a mailbox</h3>

View File

@@ -56,7 +56,7 @@ FLUSH(8) FLUSH(8)
<b>FLUSH</b><i>_</i><b>REQ</b><i>_</i><b>REFRESH</b> (completes in the background) <b>FLUSH</b><i>_</i><b>REQ</b><i>_</i><b>REFRESH</b> (completes in the background)
Refresh non-empty per-destination logfiles that 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- simulating send requests (see above) for the corre-
sponding destinations. sponding destinations.
@@ -78,8 +78,8 @@ FLUSH(8) FLUSH(8)
Refresh all non-empty per-destination logfiles, by Refresh all non-empty per-destination logfiles, by
simulating send requests (see above) for the corre- simulating send requests (see above) for the corre-
sponding destinations. This can be incredibly sponding destinations. This can be incredibly
expensive when logging is enabled for all deferred expensive when logging is enabled for many destina-
mail, and is not recommended. tions, and is not recommended.
Delete empty per-destination logfiles that were not 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. updated in <b>fast</b><i>_</i><b>flush</b><i>_</i><b>purge</b><i>_</i><b>time</b> days.
@@ -115,12 +115,12 @@ FLUSH(8) FLUSH(8)
tion file. tion file.
Upon receipt of a request to deliver all mail for an eli- Upon receipt of a request to deliver all mail for an eli-
gible destination, this server requests delivery of all gible destination, the <b>flush</b> server requests delivery of
messages that are listed in that destination's logfile, all messages that are listed in that destination's log-
regardless of the recipients of those messages. This is file, regardless of the recipients of those messages. This
not an issue for mail that is sent to a <b>relay</b><i>_</i><b>domains</b> des- is not an issue for mail that is sent to a <b>relay</b><i>_</i><b>domains</b>
tination because such mail typically only has recipients destination because such mail typically only has recipi-
in one domain. ents in one domain.
<b>FILES</b> <b>FILES</b>
/var/spool/postfix/flush, location of "fast flush" logfiles. /var/spool/postfix/flush, location of "fast flush" logfiles.

View File

@@ -309,20 +309,20 @@ LOCAL(8) LOCAL(8)
<b>alias</b><i>_</i><b>maps</b> <b>alias</b><i>_</i><b>maps</b>
List of alias databases. 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> <b>expand</b><i>_</i><b>owner</b><i>_</i><b>alias</b>
When delivering to an alias that has an owner- com- When delivering to an alias that has an owner- com-
panion alias, set the envelope sender address to panion alias, set the envelope sender address to
the right-hand side of the owner alias, instead the right-hand side of the owner alias, instead
using of the left-hand side address. using of the left-hand side address.
<b>forward</b><i>_</i><b>path</b> <b>forward</b><i>_</i><b>path</b>
Search list for .forward files. The names are sub- Search list for .forward files. The names are sub-
ject to <i>$name</i> expansion. 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
@@ -335,7 +335,11 @@ LOCAL(8) LOCAL(8)
LOCAL(8) LOCAL(8) 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. ters.
<b>owner</b><i>_</i><b>request</b><i>_</i><b>special</b> <b>owner</b><i>_</i><b>request</b><i>_</i><b>special</b>
@@ -343,10 +347,10 @@ LOCAL(8) LOCAL(8)
addresses. addresses.
<b>prepend</b><i>_</i><b>delivered</b><i>_</i><b>header</b> <b>prepend</b><i>_</i><b>delivered</b><i>_</i><b>header</b>
Prepend an optional <b>Delivered-To:</b> header upon Prepend an optional <b>Delivered-To:</b> header upon
external forwarding, delivery to command or file. external forwarding, delivery to command or file.
Specify zero or more of: <b>command,</b> <b>file,</b> <b>forward</b>. Specify zero or more of: <b>command,</b> <b>file,</b> <b>forward</b>.
Turning off <b>Delivered-To:</b> when forwarding mail is Turning off <b>Delivered-To:</b> when forwarding mail is
not recommended. not recommended.
<b>recipient</b><i>_</i><b>delimiter</b> <b>recipient</b><i>_</i><b>delimiter</b>
@@ -354,41 +358,37 @@ LOCAL(8) LOCAL(8)
<b>test</b><i>_</i><b>home</b><i>_</i><b>directory</b> <b>test</b><i>_</i><b>home</b><i>_</i><b>directory</b>
Require that a recipient's home directory is acces- 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>Mailbox</b> <b>delivery</b>
<b>fallback</b><i>_</i><b>transport</b> <b>fallback</b><i>_</i><b>transport</b>
Message transport for recipients that are not found 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>. rides <b>luser</b><i>_</i><b>relay</b>.
<b>home</b><i>_</i><b>mailbox</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- directory. Specify a path ending in <b>/</b> for maildir-
style delivery. style delivery.
<b>luser</b><i>_</i><b>relay</b> <b>luser</b><i>_</i><b>relay</b>
Destination (<i>@domain</i> or <i>address</i>) for non-existent Destination (<i>@domain</i> or <i>address</i>) for non-existent
users. The <i>address</i> is subjected to <i>$name</i> expan- users. The <i>address</i> is subjected to <i>$name</i> expan-
sion. sion.
<b>mail</b><i>_</i><b>spool</b><i>_</i><b>directory</b> <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. pathname is system dependent.
<b>mailbox</b><i>_</i><b>command</b> <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 command executes with the recipient privileges
(exception: root). The string is subject to $name (exception: root). The string is subject to $name
expansions. expansions.
<b>mailbox</b><i>_</i><b>transport</b> <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 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>.
@@ -401,13 +401,17 @@ LOCAL(8) LOCAL(8)
LOCAL(8) LOCAL(8) 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>Locking</b> <b>controls</b>
<b>deliver</b><i>_</i><b>lock</b><i>_</i><b>attempts</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. sive lock on a mailbox or external file.
<b>deliver</b><i>_</i><b>lock</b><i>_</i><b>delay</b> <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. acquire an exclusive lock.
<b>stale</b><i>_</i><b>lock</b><i>_</i><b>time</b> <b>stale</b><i>_</i><b>lock</b><i>_</i><b>time</b>
@@ -415,45 +419,41 @@ LOCAL(8) LOCAL(8)
<b>Resource</b> <b>controls</b> <b>Resource</b> <b>controls</b>
<b>command</b><i>_</i><b>time</b><i>_</i><b>limit</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. command.
<b>duplicate</b><i>_</i><b>filter</b><i>_</i><b>limit</b> <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. from alias etc. expansion.
<b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b> <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. partial input line.
<b>local</b><i>_</i><b>destination</b><i>_</i><b>concurrency</b><i>_</i><b>limit</b> <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 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>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> <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- Limit the number of recipients per message deliv-
ery. The default limit is taken from the 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>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>Security</b> <b>controls</b>
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>commands</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. command.
<b>allow</b><i>_</i><b>mail</b><i>_</i><b>to</b><i>_</i><b>files</b> <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. file.
<b>command</b><i>_</i><b>expansion</b><i>_</i><b>filter</b> <b>command</b><i>_</i><b>expansion</b><i>_</i><b>filter</b>
What characters are allowed to appear in $name What characters are allowed to appear in $name
expansions of mailbox_command. Illegal characters expansions of mailbox_command. Illegal characters
are replaced by underscores. are replaced by underscores.
<b>default</b><i>_</i><b>privs</b>
Default rights for delivery to external file or
command.
@@ -467,16 +467,20 @@ LOCAL(8) LOCAL(8)
LOCAL(8) LOCAL(8) 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> <b>forward</b><i>_</i><b>expansion</b><i>_</i><b>filter</b>
What characters are allowed to appear in $name What characters are allowed to appear in $name
expansions of forward_path. Illegal characters are expansions of forward_path. Illegal characters are
replaced by underscores. replaced by underscores.
<b>HISTORY</b> <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. 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. Daniel Bernstein.
<b>SEE</b> <b>ALSO</b> <b>SEE</b> <b>ALSO</b>
@@ -487,7 +491,7 @@ LOCAL(8) LOCAL(8)
<a href="qmgr.8.html">qmgr(8)</a> queue manager <a href="qmgr.8.html">qmgr(8)</a> queue manager
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
@@ -515,10 +519,6 @@ LOCAL(8) LOCAL(8)

View File

@@ -87,44 +87,44 @@ SENDMAIL(1) SENDMAIL(1)
Set the sender full name. This is used only with Set the sender full name. This is used only with
messages that have no <b>From:</b> message header. 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. mand above.
<b>-N</b> <i>dsn</i> (ignored) <b>-N</b> <i>dsn</i> (ignored)
Delivery status notification control. Currently, Delivery status notification control. Currently,
Postfix does not implement <b>DSN</b>. Postfix does not implement <b>DSN</b>.
<b>-R</b> <i>return_limit</i> (ignored) <b>-R</b> <i>return_limit</i> (ignored)
Limit the size of bounced mail. Use the 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>bounce</b><i>_</i><b>size</b><i>_</i><b>limit</b> configuration parameter instead.
<b>-X</b> <i>log_file</i> (ignored) <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 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>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> configuration parameters instead.
<b>-U</b> (ignored) <b>-U</b> (ignored)
Initial user submission. 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. 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. 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. delivery. This is the default mode of operation.
<b>-bp</b> List the mail queue. See the <b>mailq</b> command above. <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 <b>-bs</b> Stand-alone SMTP server mode. Read SMTP commands
from standard input, and write responses to stan- from standard input, and write responses to stan-
dard output. This mode of operation is implemented dard output. This mode of operation is implemented
by running the <a href="smtpd.8.html"><b>smtpd</b>(8)</a> daemon. 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.
@@ -137,12 +137,17 @@ SENDMAIL(1) SENDMAIL(1)
SENDMAIL(1) SENDMAIL(1) 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) <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. tion parameter instead.
<b>-i</b> When reading a message from standard input, don't <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 treat a line with only a <b>.</b> character as the end of
input. input.
<b>-m</b> (ignored) <b>-m</b> (ignored)
@@ -152,45 +157,40 @@ SENDMAIL(1) SENDMAIL(1)
Backwards compatibility. Backwards compatibility.
<b>-oA</b><i>alias_database</i> <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. <i>type</i>:<i>pathname</i>. See <a href="postalias.1.html"><b>postalias</b>(1)</a> for details.
<b>-o7</b> (ignored) <b>-o7</b> (ignored)
<b>-o8</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>. ments <b>just-send-eight</b>.
<b>-oi</b> When reading a message from standard input, don't <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 treat a line with only a <b>.</b> character as the end of
input. input.
<b>-om</b> (ignored) <b>-om</b> (ignored)
The sender is never eliminated from alias etc. The sender is never eliminated from alias etc.
expansions. expansions.
<b>-o</b> <i>x</i> <i>value</i> (ignored) <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. ration parameter in <b>main.cf</b> instead.
<b>-r</b> <i>sender</i> <b>-r</b> <i>sender</i>
Set the envelope sender address. This is the Set the envelope sender address. This is the
address where delivery problems are sent to, unless 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. mented by kicking the <a href="qmgr.8.html"><b>qmgr</b>(8)</a> daemon.
<b>-q</b><i>interval</i> (ignored) <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>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
@@ -203,29 +203,35 @@ SENDMAIL(1) SENDMAIL(1)
SENDMAIL(1) SENDMAIL(1) 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 <a href="smtpd.8.html"><b>smtpd</b>(8)</a> for more information about the "fast
flush" service. flush" service.
<b>-qS</b><i>site</i> <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>sendmail</b> <b>-q</b> command instead.
<b>-t</b> Extract recipients from message headers. This <b>-t</b> Extract recipients from message headers. This
requires that no recipients be specified on the requires that no recipients be specified on the
command line. command line.
<b>-v</b> Enable verbose logging for debugging purposes. Mul- <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. verbose.
<b>SECURITY</b> <b>SECURITY</b>
By design, this program is not set-user (or group) id. By design, this program is not set-user (or group) id.
However, it must handle data from untrusted users or However, it must handle data from untrusted users or
untrusted machines. Thus, the usual precautions need to untrusted machines. Thus, the usual precautions need to
be taken against malicious inputs. be taken against malicious inputs.
<b>DIAGNOSTICS</b> <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. error stream.
<b>ENVIRONMENT</b> <b>ENVIRONMENT</b>
@@ -237,7 +243,7 @@ SENDMAIL(1) SENDMAIL(1)
<b>MAIL</b><i>_</i><b>DEBUG</b> <b>MAIL</b><i>_</i><b>DEBUG</b>
Enable debugging with an external command, as spec- 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. parameter.
<b>FILES</b> <b>FILES</b>
@@ -245,18 +251,12 @@ SENDMAIL(1) SENDMAIL(1)
/etc/postfix, configuration files /etc/postfix, configuration files
<b>CONFIGURATION</b> <b>PARAMETERS</b> <b>CONFIGURATION</b> <b>PARAMETERS</b>
See the Postfix <b>main.cf</b> file for syntax details and for 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 default values. Use the <b>postfix</b> <b>reload</b> command after a
configuration change. configuration change.
<b>alias</b><i>_</i><b>database</b> <b>alias</b><i>_</i><b>database</b>
Default alias database(s) for <b>newaliases</b>. The 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.
@@ -269,6 +269,13 @@ SENDMAIL(1) SENDMAIL(1)
SENDMAIL(1) SENDMAIL(1) 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> <b>database</b><i>_</i><b>type</b>
Default alias etc. database type. On many UNIX sys- Default alias etc. database type. On many UNIX sys-
tems the default type is either <b>dbm</b> or <b>hash</b>. tems the default type is either <b>dbm</b> or <b>hash</b>.
@@ -278,51 +285,44 @@ SENDMAIL(1) SENDMAIL(1)
initialized. initialized.
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> <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> host matches a pattern in the <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
parameter. parameter.
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b> <b>debug</b><i>_</i><b>peer</b><i>_</i><b>list</b>
List of domain or network patterns. When a remote List of domain or network patterns. When a remote
host matches a pattern, increase the verbose log- host matches a pattern, increase the verbose log-
ging level by the amount specified in the ging level by the amount specified in the
<b>debug</b><i>_</i><b>peer</b><i>_</i><b>level</b> parameter. <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> <b>fast</b><i>_</i><b>flush</b><i>_</i><b>domains</b>
List of domains that will receive "fast flush" ser- List of domains that will receive "fast flush" ser-
vice (default: all domains that this system is vice (default: all domains that this system is
willing to relay mail to). This greatly improves willing to relay mail to). This greatly improves
the performance of the SMTP <b>ETRN</b> request, and of the performance of the SMTP <b>ETRN</b> request, and of
the <b>sendmail</b> <b>-qR</b> command. For domains not in the the <b>sendmail</b> <b>-qR</b> command. For domains not in the
list, Postfix simply attempts to deliver all queued list, Postfix simply attempts to deliver all queued
mail. mail.
<b>fork</b><i>_</i><b>attempts</b> <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. ing up.
<b>fork</b><i>_</i><b>delay</b> <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. attempts.
<b>hopcount</b><i>_</i><b>limit</b> <b>hopcount</b><i>_</i><b>limit</b>
Limit the number of <b>Received:</b> message headers. Limit the number of <b>Received:</b> message headers.
<b>mail</b><i>_</i><b>owner</b> <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. processes.
<b>command</b><i>_</i><b>directory</b> <b>command</b><i>_</i><b>directory</b>
Directory with Postfix support commands (default: Directory with Postfix support commands (default:
<b>$program</b><i>_</i><b>directory</b>). <b>$program</b><i>_</i><b>directory</b>).
<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
@@ -335,10 +335,17 @@ SENDMAIL(1) SENDMAIL(1)
SENDMAIL(1) SENDMAIL(1) 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. chrooted.
<b>queue</b><i>_</i><b>run</b><i>_</i><b>delay</b> <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. queue.
<b>SEE</b> <b>ALSO</b> <b>SEE</b> <b>ALSO</b>
@@ -350,11 +357,11 @@ SENDMAIL(1) SENDMAIL(1)
<a href="qmgr.8.html">qmgr(8)</a> queue manager <a href="qmgr.8.html">qmgr(8)</a> queue manager
<a href="showq.8.html">showq(8)</a> list mail queue <a href="showq.8.html">showq(8)</a> list mail queue
<a href="smtpd.8.html">smtpd(8)</a> SMTP server <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 syslogd(8) system logging
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>
@@ -377,13 +384,6 @@ SENDMAIL(1) SENDMAIL(1)

View File

@@ -181,16 +181,16 @@ SMTPD(8) SMTPD(8)
Limit the time to send a server response and to Limit the time to send a server response and to
receive a client request. 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>Resource</b> <b>controls</b>
<b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b> <b>line</b><i>_</i><b>length</b><i>_</i><b>limit</b>
Limit the amount of memory in bytes used for the Limit the amount of memory in bytes used for the
handling of partial input lines. 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.
@@ -203,6 +203,10 @@ SMTPD(8) SMTPD(8)
SMTPD(8) SMTPD(8) 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> <b>queue</b><i>_</i><b>minfree</b>
Minimal amount of free space in bytes in the queue Minimal amount of free space in bytes in the queue
file system for the SMTP server to accept any mail file system for the SMTP server to accept any mail
@@ -253,10 +257,6 @@ SMTPD(8) SMTPD(8)
Restrict what domain names can be used in <b>ETRN</b> com- Restrict what domain names can be used in <b>ETRN</b> com-
mands, and what clients may issue <b>ETRN</b> commands. 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
@@ -269,6 +269,10 @@ SMTPD(8) SMTPD(8)
SMTPD(8) SMTPD(8) 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. hosts.
<b>restriction</b><i>_</i><b>classes</b> <b>restriction</b><i>_</i><b>classes</b>
@@ -319,10 +323,6 @@ SMTPD(8) SMTPD(8)
Server response when a client violates the Server response when a client violates the
<b>reject</b><i>_</i><b>unknown</b><i>_</i><b>hostname</b> restriction. <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
@@ -335,6 +335,11 @@ SMTPD(8) SMTPD(8)
SMTPD(8) SMTPD(8) 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> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
@@ -381,11 +386,6 @@ SMTPD(8) SMTPD(8)

View File

@@ -12,53 +12,53 @@ VIRTUAL(5) VIRTUAL(5)
<b>postmap</b> <b>/etc/postfix/virtual</b> <b>postmap</b> <b>/etc/postfix/virtual</b>
<b>DESCRIPTION</b> <b>DESCRIPTION</b>
The optional <b>virtual</b> table specifies redirections for The optional <b>virtual</b> table specifies address redirections
local and non-local recipients or domains. The redirec- for local and non-local recipients or domains. The redi-
tions are used by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon. The redirections rections are used by the <a href="cleanup.8.html"><b>cleanup</b>(8)</a> daemon. The redirec-
are recursive. tions are recursive.
The <b>virtual</b> redirection is applied only to the recipient The <b>virtual</b> redirection is applied only to recipient enve-
envelope address, and does not affect message headers. 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> 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- mapping to rewrite header and envelope addresses in gen-
eral. eral.
Normally, the file serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> com- Normally, the <b>virtual</b> table is specified as a text file
mand. The result, an indexed file in <b>dbm</b> or <b>db</b> format, is that serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command. The
used for fast searching by the mail system. Execute the result, an indexed file in <b>dbm</b> or <b>db</b> format, is used for
command <b>postmap</b> <b>/etc/postfix/virtual</b> in order to rebuild fast searching by the mail system. Execute the command
the indexed file after changing the virtual table. <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, When the table is provided via other means such as NIS,
LDAP or SQL, the same lookups are done as for ordinary LDAP or SQL, the same lookups are done as for ordinary
indexed files. 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- 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. different way as described below.
<b>TABLE</b> <b>FORMAT</b> <b>POSTFIX-STYLE</b> <b>VIRTUAL</b> <b>DOMAINS</b>
Typical support for a virtual domain looks like the fol- With a Postfix-style virtual domain, the virtual domain
lowing: 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>virtual.domain</i> <i>anything</i> (right-hand content does not matter)
<i>postmaster@virtual.domain</i> <i>postmaster</i> <i>postmaster@virtual.domain</i> <i>postmaster</i>
<i>user1@virtual.domain</i> <i>address1</i> <i>user1@virtual.domain</i> <i>address1</i>
<i>user2@virtual.domain</i> <i>address2,</i> <i>address3</i> <i>user2@virtual.domain</i> <i>address2,</i> <i>address3</i>
With this, the SMTP server accepts mail for <i>virtual.domain</i> The <i>virtual.domain</i> <i>anything</i> entry is required for a
and rejects mail for <i>unknown</i>@<i>virtual.domain</i> as undeliver-
able.
The format of the virtual table is as follows, mappings
being tried in the order as listed in this manual page:
blanks and comments
Blank lines are ignored, as are lines beginning
with `#'.
@@ -71,9 +71,73 @@ VIRTUAL(5) VIRTUAL(5)
VIRTUAL(5) VIRTUAL(5) 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:
blanks and comments
Blank lines are ignored, as are lines beginning
with `#'.
leading whitespace leading whitespace
Lines that begin with whitespace continue the pre- Lines that begin with whitespace continue the
vious line.
2
VIRTUAL(5) VIRTUAL(5)
previous line.
<i>pattern</i> <i>result</i> <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
@@ -126,9 +190,11 @@ VIRTUAL(5) VIRTUAL(5)
constituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and constituent parts, nor is <i>user+foo</i> broken up into <i>user</i> and
<i>foo</i>. <i>foo</i>.
Patterns are applied in the order as specified in the
2
3
@@ -137,7 +203,6 @@ VIRTUAL(5) VIRTUAL(5)
VIRTUAL(5) VIRTUAL(5) VIRTUAL(5) VIRTUAL(5)
Patterns are applied in the order as specified in the
table, until a pattern is found that matches the search table, until a pattern is found that matches the search
string. string.
@@ -194,7 +259,8 @@ VIRTUAL(5) VIRTUAL(5)
3
4
</pre> </body> </html> </pre> </body> </html>

View File

@@ -65,6 +65,8 @@ files are kept in \fB/etc/postfix\fR.
.IP "\fB-F \fIfull_name\fR .IP "\fB-F \fIfull_name\fR
Set the sender full name. This is used only with messages that Set the sender full name. This is used only with messages that
have no \fBFrom:\fR message header. have no \fBFrom:\fR message header.
.IP "\fB-G\fR (ignored)"
Gateway (relay) submission, as opposed to initial user submission.
.IP \fB-I\fR .IP \fB-I\fR
Initialize alias database. See the \fBnewaliases\fR Initialize alias database. See the \fBnewaliases\fR
command above. command above.

View File

@@ -14,7 +14,8 @@ format of the Postfix alias database
.ad .ad
.fi .fi
The \fBaliases\fR file provides a system-wide mechanism to 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 The file serves as input to the \fBpostalias\fR(1) command. The
result, an indexed file in \fBdbm\fR or \fBdb\fR format, is result, an indexed file in \fBdbm\fR or \fBdb\fR format, is

View File

@@ -12,15 +12,16 @@ format of Postfix canonical table
.SH DESCRIPTION .SH DESCRIPTION
.ad .ad
.fi .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 local and non-local addresses. The mapping is used by the
\fBcleanup\fR(8) daemon. The address mapping is recursive. \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, The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
is used for fast searching by the mail system. Execute the command is used for fast searching by the mail system. Execute the command
\fBpostmap /etc/postfix/canonical\fR in order to rebuild the indexed \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 When the table is provided via other means such as NIS, LDAP
or SQL, the same lookups are done as for ordinary indexed files. or SQL, the same lookups are done as for ordinary indexed files.

View File

@@ -12,20 +12,21 @@ format of Postfix virtual table
.SH DESCRIPTION .SH DESCRIPTION
.ad .ad
.fi .fi
The optional \fBvirtual\fR table specifies redirections for local The optional \fBvirtual\fR table specifies address redirections for
and non-local recipients or domains. The redirections are used by local and non-local recipients or domains. The redirections are used
the \fBcleanup\fR(8) daemon. The redirections are recursive. by the \fBcleanup\fR(8) daemon. The redirections are recursive.
The \fBvirtual\fR redirection is applied only to the recipient The \fBvirtual\fR redirection is applied only to recipient
envelope address, and does not affect message headers. envelope addresses, and does not affect message headers.
Think Sendmail rule set \fBS0\fR, if you like. Use \fBcanonical\fR(5) Think Sendmail rule set \fBS0\fR, if you like. Use \fBcanonical\fR(5)
mapping to rewrite header and envelope addresses in general. 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, The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
is used for fast searching by the mail system. Execute the command is used for fast searching by the mail system. Execute the command
\fBpostmap /etc/postfix/virtual\fR in order to rebuild the indexed \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 When the table is provided via other means such as NIS, LDAP
or SQL, the same lookups are done as for ordinary indexed files. or SQL, the same lookups are done as for ordinary indexed files.
@@ -33,13 +34,24 @@ or SQL, the same lookups are done as for ordinary indexed files.
Alternatively, the table can be provided as a regular-expression Alternatively, the table can be provided as a regular-expression
map where patterns are given as regular expressions. In that case, map where patterns are given as regular expressions. In that case,
the lookups are done in a slightly different way as described below. the lookups are done in a slightly different way as described below.
.SH TABLE FORMAT .SH POSTFIX-STYLE VIRTUAL DOMAINS
.na .na
.nf .nf
.ad .ad
.fi .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 .in +4
.nf .nf
\fIvirtual.domain anything\fR (right-hand content does not matter) \fIvirtual.domain anything\fR (right-hand content does not matter)
@@ -49,9 +61,66 @@ Typical support for a virtual domain looks like the following:
.fi .fi
.in -4 .in -4
With this, the SMTP server accepts mail for \fIvirtual.domain\fR and The \fIvirtual.domain anything\fR entry is required for a
rejects mail for \fIunknown\fR@\fIvirtual.domain\fR as undeliverable. 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 The format of the virtual table is as follows, mappings being
tried in the order as listed in this manual page: tried in the order as listed in this manual page:
.IP "blanks and comments" .IP "blanks and comments"

View File

@@ -50,7 +50,7 @@ This wakeup request from the master is an alternative way to
request \fBFLUSH_REQ_REFRESH\fR. request \fBFLUSH_REQ_REFRESH\fR.
.IP "\fBFLUSH_REQ_REFRESH\fR (completes in the background)" .IP "\fBFLUSH_REQ_REFRESH\fR (completes in the background)"
Refresh non-empty per-destination logfiles that were not read in 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. send requests (see above) for the corresponding destinations.
.sp .sp
Delete empty per-destination logfiles that were not updated in Delete empty per-destination logfiles that were not updated in
@@ -59,7 +59,7 @@ Delete empty per-destination logfiles that were not updated in
Refresh all non-empty per-destination logfiles, by simulating Refresh all non-empty per-destination logfiles, by simulating
send requests (see above) for the corresponding destinations. send requests (see above) for the corresponding destinations.
This can be incredibly expensive when logging is enabled for This can be incredibly expensive when logging is enabled for
all deferred mail, and is not recommended. many destinations, and is not recommended.
.sp .sp
Delete empty per-destination logfiles that were not updated in Delete empty per-destination logfiles that were not updated in
\fBfast_flush_purge_time\fR days. \fBfast_flush_purge_time\fR days.
@@ -95,8 +95,8 @@ be automated with a suitable wakeup timer setting in the
\fBmaster.cf\fR configuration file. \fBmaster.cf\fR configuration file.
Upon receipt of a request to deliver all mail for an eligible Upon receipt of a request to deliver all mail for an eligible
destination, this server requests delivery of all messages that destination, the \fBflush\fR server requests delivery of all messages
are listed in that destination's logfile, regardless of the that are listed in that destination's logfile, regardless of the
recipients of those messages. This is not an issue for mail recipients of those messages. This is not an issue for mail
that is sent to a \fBrelay_domains\fR destination because that is sent to a \fBrelay_domains\fR destination because
such mail typically only has recipients in one domain. such mail typically only has recipients in one domain.

View File

@@ -284,6 +284,9 @@ a configuration change.
.fi .fi
.IP \fBalias_maps\fR .IP \fBalias_maps\fR
List of alias databases. 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 .IP \fBexpand_owner_alias\fR
When delivering to an alias that has an owner- companion alias, When delivering to an alias that has an owner- companion alias,
set the envelope sender address to the right-hand side of the set the envelope sender address to the right-hand side of the

View File

@@ -138,6 +138,9 @@ per message delivery.
.IP \fBsmtpd_timeout\fR .IP \fBsmtpd_timeout\fR
Limit the time to send a server response and to receive a client Limit the time to send a server response and to receive a client
request. 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" .SH "Resource controls"
.ad .ad
.fi .fi

View File

@@ -8,7 +8,8 @@
# \fBnewaliases\fR # \fBnewaliases\fR
# DESCRIPTION # DESCRIPTION
# The \fBaliases\fR file provides a system-wide mechanism to # 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 # The file serves as input to the \fBpostalias\fR(1) command. The
# result, an indexed file in \fBdbm\fR or \fBdb\fR format, is # result, an indexed file in \fBdbm\fR or \fBdb\fR format, is

View File

@@ -6,15 +6,16 @@
# SYNOPSIS # SYNOPSIS
# \fBpostmap /etc/postfix/canonical\fR # \fBpostmap /etc/postfix/canonical\fR
# DESCRIPTION # 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 # local and non-local addresses. The mapping is used by the
# \fBcleanup\fR(8) daemon. The address mapping is recursive. # \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, # The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
# is used for fast searching by the mail system. Execute the command # is used for fast searching by the mail system. Execute the command
# \fBpostmap /etc/postfix/canonical\fR in order to rebuild the indexed # \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 # When the table is provided via other means such as NIS, LDAP
# or SQL, the same lookups are done as for ordinary indexed files. # or SQL, the same lookups are done as for ordinary indexed files.

View File

@@ -6,20 +6,21 @@
# SYNOPSIS # SYNOPSIS
# \fBpostmap /etc/postfix/virtual\fR # \fBpostmap /etc/postfix/virtual\fR
# DESCRIPTION # DESCRIPTION
# The optional \fBvirtual\fR table specifies redirections for local # The optional \fBvirtual\fR table specifies address redirections for
# and non-local recipients or domains. The redirections are used by # local and non-local recipients or domains. The redirections are used
# the \fBcleanup\fR(8) daemon. The redirections are recursive. # by the \fBcleanup\fR(8) daemon. The redirections are recursive.
# #
# The \fBvirtual\fR redirection is applied only to the recipient # The \fBvirtual\fR redirection is applied only to recipient
# envelope address, and does not affect message headers. # envelope addresses, and does not affect message headers.
# Think Sendmail rule set \fBS0\fR, if you like. Use \fBcanonical\fR(5) # Think Sendmail rule set \fBS0\fR, if you like. Use \fBcanonical\fR(5)
# mapping to rewrite header and envelope addresses in general. # 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, # The result, an indexed file in \fBdbm\fR or \fBdb\fR format,
# is used for fast searching by the mail system. Execute the command # is used for fast searching by the mail system. Execute the command
# \fBpostmap /etc/postfix/virtual\fR in order to rebuild the indexed # \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 # When the table is provided via other means such as NIS, LDAP
# or SQL, the same lookups are done as for ordinary indexed files. # or SQL, the same lookups are done as for ordinary indexed files.
@@ -27,11 +28,22 @@
# Alternatively, the table can be provided as a regular-expression # Alternatively, the table can be provided as a regular-expression
# map where patterns are given as regular expressions. In that case, # map where patterns are given as regular expressions. In that case,
# the lookups are done in a slightly different way as described below. # the lookups are done in a slightly different way as described below.
# TABLE FORMAT # POSTFIX-STYLE VIRTUAL DOMAINS
# .ad # .ad
# .fi # .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 # .in +4
# .nf # .nf
# \fIvirtual.domain anything\fR (right-hand content does not matter) # \fIvirtual.domain anything\fR (right-hand content does not matter)
@@ -41,9 +53,62 @@
# .fi # .fi
# .in -4 # .in -4
# #
# With this, the SMTP server accepts mail for \fIvirtual.domain\fR and # The \fIvirtual.domain anything\fR entry is required for a
# rejects mail for \fIunknown\fR@\fIvirtual.domain\fR as undeliverable. # 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 # The format of the virtual table is as follows, mappings being
# tried in the order as listed in this manual page: # tried in the order as listed in this manual page:
# .IP "blanks and comments" # .IP "blanks and comments"
@@ -94,11 +159,11 @@
# or \fBpcre_table\fR(5). # or \fBpcre_table\fR(5).
# #
# Each pattern is a regular expression that is applied to the entire # 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, # 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. # 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. # pattern is found that matches the search string.
# #
# Results are the same as with normal indexed file lookups, with # Results are the same as with normal indexed file lookups, with

View File

@@ -15,7 +15,7 @@
* Version of this program. * Version of this program.
*/ */
#define VAR_MAIL_VERSION "mail_version" #define VAR_MAIL_VERSION "mail_version"
#define DEF_MAIL_VERSION "Snapshot-20001109" #define DEF_MAIL_VERSION "Snapshot-20001118"
extern char *var_mail_version; extern char *var_mail_version;
/* LICENSE /* LICENSE

View File

@@ -256,6 +256,9 @@
/* .fi /* .fi
/* .IP \fBalias_maps\fR /* .IP \fBalias_maps\fR
/* List of alias databases. /* 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 /* .IP \fBexpand_owner_alias\fR
/* When delivering to an alias that has an owner- companion alias, /* When delivering to an alias that has an owner- companion alias,
/* set the envelope sender address to the right-hand side of the /* set the envelope sender address to the right-hand side of the

View File

@@ -177,9 +177,8 @@ static int deliver_switch(LOCAL_STATE state, USER_ATTR usr_attr)
* $HOME/.forward file, then mailbox delivery. Back off when the user's * $HOME/.forward file, then mailbox delivery. Back off when the user's
* home directory does not exist. * home directory does not exist.
*/ */
if ((mypwd = mypwnam(state.msg_attr.user)) == 0)
return (deliver_unknown(state, usr_attr));
if (var_stat_home_dir 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) && stat_as(mypwd->pw_dir, &st, mypwd->pw_uid, mypwd->pw_gid) < 0)
return (defer_append(BOUNCE_FLAG_KEEP, return (defer_append(BOUNCE_FLAG_KEEP,
BOUNCE_ATTR(state.msg_attr), BOUNCE_ATTR(state.msg_attr),

View File

@@ -143,6 +143,7 @@
#include <stringops.h> #include <stringops.h>
#include <myflock.h> #include <myflock.h>
#include <watchdog.h> #include <watchdog.h>
#include <clean_env.h>
/* Global library. */ /* Global library. */
@@ -183,6 +184,12 @@ int main(int argc, char **argv)
if (getenv(CONF_ENV_DEBUG)) if (getenv(CONF_ENV_DEBUG))
debug_me = 1; 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. * Don't die when a process goes away unexpectedly.
*/ */
@@ -202,12 +209,16 @@ int main(int argc, char **argv)
* Some systems such as AIX have a huge per-process open file limit. In * 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 * those cases, limit the search for potential file descriptor leaks to
* just the first couple hundred. * 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) if (fd_limit > 500)
fd_limit = 500; fd_limit = 500;
for (fd = 3; fd < fd_limit; fd++) for (fd = 3; fd < fd_limit; fd++)
if ((n = fcntl(fd, F_GETFD, 0)) >= 0 && (n & FD_CLOEXEC) == 0) (void) close(fd);
fcntl(fd, F_SETFD, n | FD_CLOEXEC);
/* /*
* Initialize logging and exit handler. * Initialize logging and exit handler.

View File

@@ -51,7 +51,8 @@
/* structure members. A null result means that the file could not be /* structure members. A null result means that the file could not be
/* read or that the file contained incorrect information. Recipient /* read or that the file contained incorrect information. Recipient
/* limit imposed this time is based on the position of the message /* 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 /* qmgr_message_free() destroys an in-core message structure and makes
/* the resources available for reuse. It is an error to destroy /* the resources available for reuse. It is an error to destroy
@@ -288,7 +289,7 @@ static int qmgr_message_read(QMGR_MESSAGE *message)
/* /*
* If we re-open this file, skip over on-file recipient records that we * 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 * For the first time, the message recipient limit is calculated from the
* global recipient limit. This is to avoid reading little recipients * global recipient limit. This is to avoid reading little recipients
@@ -302,6 +303,8 @@ static int qmgr_message_read(QMGR_MESSAGE *message)
if (message->rcpt_offset) { if (message->rcpt_offset) {
if (message->rcpt_list.len) if (message->rcpt_list.len)
msg_panic("%s: recipient list not empty on recipient reload", message->queue_id); 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) if (vstream_fseek(message->fp, message->rcpt_offset, SEEK_SET) < 0)
msg_fatal("seek file %s: %m", VSTREAM_PATH(message->fp)); msg_fatal("seek file %s: %m", VSTREAM_PATH(message->fp));
message->rcpt_offset = 0; message->rcpt_offset = 0;

View File

@@ -116,7 +116,9 @@ QMGR_PEER *qmgr_peer_select(QMGR_JOB *job)
if (queue->window > queue->busy_refcount && peer->entry_list.next != 0) { if (queue->window > queue->busy_refcount && peer->entry_list.next != 0) {
QMGR_LIST_ROTATE(job->peer_list, peer, peers); QMGR_LIST_ROTATE(job->peer_list, peer, peers);
if (msg_verbose) 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); return (peer);
} }
} }

View File

@@ -141,11 +141,12 @@ void qmgr_queue_unthrottle(QMGR_QUEUE *queue)
/* /*
* Increase the destination's concurrency limit until we reach the * 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 if (transport->dest_concurrency_limit == 0
|| transport->dest_concurrency_limit > queue->window) || transport->dest_concurrency_limit > queue->window)
if (queue->window <= queue->busy_refcount) if (queue->window <= queue->busy_refcount + transport->init_dest_concurrency)
queue->window++; queue->window++;
} }

View File

@@ -143,11 +143,12 @@ void qmgr_queue_unthrottle(QMGR_QUEUE *queue)
/* /*
* Increase the destination's concurrency limit until we reach the * 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 if (transport->dest_concurrency_limit == 0
|| transport->dest_concurrency_limit > queue->window) || transport->dest_concurrency_limit > queue->window)
if (queue->window <= queue->busy_refcount) if (queue->window <= queue->busy_refcount + transport->init_dest_concurrency)
queue->window++; queue->window++;
} }

View File

@@ -59,6 +59,8 @@
/* .IP "\fB-F \fIfull_name\fR /* .IP "\fB-F \fIfull_name\fR
/* Set the sender full name. This is used only with messages that /* Set the sender full name. This is used only with messages that
/* have no \fBFrom:\fR message header. /* have no \fBFrom:\fR message header.
/* .IP "\fB-G\fR (ignored)"
/* Gateway (relay) submission, as opposed to initial user submission.
/* .IP \fB-I\fR /* .IP \fB-I\fR
/* Initialize alias database. See the \fBnewaliases\fR /* Initialize alias database. See the \fBnewaliases\fR
/* command above. /* command above.
@@ -568,7 +570,7 @@ static void flush_queue(void)
/* chat - send command and examine reply */ /* 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; va_list ap;
@@ -791,7 +793,7 @@ int main(int argc, char **argv)
optind++; optind++;
continue; 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; break;
switch (c) { switch (c) {
default: default:
@@ -805,6 +807,8 @@ int main(int argc, char **argv)
case 'F': /* full name */ case 'F': /* full name */
full_name = optarg; full_name = optarg;
break; break;
case 'G': /* gateway submission */
break;
case 'I': /* newaliases */ case 'I': /* newaliases */
mode = SM_MODE_NEWALIAS; mode = SM_MODE_NEWALIAS;
break; break;

View File

@@ -124,6 +124,9 @@
/* .IP \fBsmtpd_timeout\fR /* .IP \fBsmtpd_timeout\fR
/* Limit the time to send a server response and to receive a client /* Limit the time to send a server response and to receive a client
/* request. /* 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" /* .SH "Resource controls"
/* .ad /* .ad
/* .fi /* .fi
@@ -861,6 +864,9 @@ static int data_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *unused_argv)
* XXX Force an empty record when the queue file content begins with * 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 * whitespace, so that it won't be considered as being part of our own
* Received: header. What an ugly Kluge. * 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)) if (vstream_fflush(state->cleanup))
state->err = CLEANUP_STAT_WRITE; state->err = CLEANUP_STAT_WRITE;
@@ -873,11 +879,14 @@ static int data_cmd(SMTPD_STATE *state, int argc, SMTPD_TOKEN *unused_argv)
start = vstring_str(state->buffer); start = vstring_str(state->buffer);
len = VSTRING_LEN(state->buffer); len = VSTRING_LEN(state->buffer);
if (first) { if (first) {
if (strncmp(start + strspn(start, ">"), "From ", 5) == 0) {
rec_fprintf(state->cleanup, curr_rec_type,
"Mbox-Line: %s", start);
continue;
}
first = 0; first = 0;
if (len > 0 && ISSPACE(start[0])) if (len > 0 && ISSPACE(start[0]))
rec_put(state->cleanup, REC_TYPE_NORM, "", 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 if (prev_rec_type != REC_TYPE_CONT
&& *start == '.' && (++start, --len) == 0) && *start == '.' && (++start, --len) == 0)

View File

@@ -28,6 +28,8 @@
/* /*
/* smtpd_chat_reply() formats a server reply, sends it to the /* smtpd_chat_reply() formats a server reply, sends it to the
/* client, and appends a copy to the SMTP transaction log. /* 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 /* smtpd_chat_notify() sends a copy of the SMTP transaction log
/* to the postmaster for review. The postmaster notice is sent only /* to the postmaster for review. The postmaster notice is sent only
@@ -138,6 +140,8 @@ void smtpd_chat_reply(SMTPD_STATE *state, char *format,...)
va_start(ap, format); va_start(ap, format);
vstring_vsprintf(state->buffer, format, ap); vstring_vsprintf(state->buffer, format, ap);
va_end(ap); va_end(ap);
if (var_soft_bounce && STR(state->buffer)[0] == '5')
STR(state->buffer)[0] = '4';
smtp_chat_append(state, "Out: "); smtp_chat_append(state, "Out: ");
if (msg_verbose) if (msg_verbose)

View File

@@ -1956,52 +1956,45 @@ char *smtpd_check_rcptmap(SMTPD_STATE *state, char *recipient)
if (!resolve_local(domain)) if (!resolve_local(domain))
SMTPD_CHECK_RCPT_RETURN(0); SMTPD_CHECK_RCPT_RETURN(0);
/* #define NOMATCH(map, rcpt) \
* Reject mail to unknown addresses in domains that match $mydestination (mail_addr_find(map, rcpt, (char **) 0) == 0 && dict_errno == 0)
* 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 * Reject mail to unknown addresses in Postfix-style virtual domains.
&& maps_find(virtual_maps, domain, 0)) { */
msg_warn("virtual domain \"%s\" is listed in $mydestination", if (*var_virtual_maps && maps_find(virtual_maps, domain, 0)) {
domain); if (NOMATCH(rcpt_canon_maps, STR(reply.recipient))
msg_warn("the $local_recipient_maps feature requires that no"); && NOMATCH(canonical_maps, STR(reply.recipient))
msg_warn("virtual domains are listed in $mydestination"); && NOMATCH(relocated_maps, STR(reply.recipient))
msg_warn("be sure to specify the required \"%s whatever\"", && NOMATCH(virtual_maps, STR(reply.recipient))) {
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)) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE, (void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
"%d <%s>: User unknown", "%d <%s>: User unknown", 550, recipient);
dict_errno ? 450 : 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)) {
(void) smtpd_check_reject(state, MAIL_ERROR_BOUNCE,
"%d <%s>: User unknown",
dict_errno ? 450 : 550, recipient);
SMTPD_CHECK_RCPT_RETURN(STR(error_text)); SMTPD_CHECK_RCPT_RETURN(STR(error_text));
} }
} }
/*
* 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", 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); SMTPD_CHECK_RCPT_RETURN(0);
} }

View File

@@ -47,6 +47,8 @@ OK
>>> client foo 123.123.123.123 >>> client foo 123.123.123.123
OK OK
>>> helo foo. >>> 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 ./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 450 <foo.>: Helo command rejected: Host not found
>>> helo foo >>> helo foo
@@ -65,6 +67,8 @@ OK
OK OK
>>> helo 123.123.123.123 >>> 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: 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 ./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 450 <123.123.123.123>: Helo command rejected: Host not found
>>> helo_restrictions permit_naked_ip_address,reject_invalid_hostname,reject_unknown_hostname >>> helo_restrictions permit_naked_ip_address,reject_invalid_hostname,reject_unknown_hostname

View File

@@ -47,6 +47,8 @@ OK
>>> client foo 123.123.123.123 >>> client foo 123.123.123.123
OK OK
>>> helo foo. >>> 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 ./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 450 <foo.>: Helo command rejected: Host not found
>>> helo foo >>> helo foo

View File

@@ -38,6 +38,8 @@
void clean_env(void) void clean_env(void)
{ {
char *TZ; char *TZ;
char *DISPLAY;
char *XAUTHORITY;
extern char **environ; extern char **environ;
/* /*
@@ -45,6 +47,8 @@ void clean_env(void)
* configurable. * configurable.
*/ */
TZ = getenv("TZ"); TZ = getenv("TZ");
DISPLAY = getenv("DISPLAY");
XAUTHORITY = getenv("XAUTHORITY");
/* /*
* Truncate the process environment, if available. On some systems * Truncate the process environment, if available. On some systems
@@ -58,6 +62,10 @@ void clean_env(void)
*/ */
if (TZ && setenv("TZ", TZ, 1)) if (TZ && setenv("TZ", TZ, 1))
msg_fatal("setenv: %m"); 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. * Update the process environment with configurable initial values.

View File

@@ -676,15 +676,17 @@ DICT *dict_ldap_open(const char *ldapsource, int dummy, int dict_flags)
domainlist = domainlist =
mystrdup((char *) get_mail_conf_str(vstring_str(config_param), mystrdup((char *) get_mail_conf_str(vstring_str(config_param),
"", 0, 0)); "", 0, 0));
if (domainlist) { if (*domainlist) {
dict_ldap->domain = match_list_init(domainlist, 1, match_string); dict_ldap->domain = match_list_init(domainlist, 1, match_string);
if (dict_ldap->domain == NULL) if (dict_ldap->domain == NULL)
msg_warn("%s: domain match list creation using \"%s\" failed, will continue without it", myname, domainlist); msg_warn("%s: domain match list creation using \"%s\" failed, will continue without it", myname, domainlist);
if (msg_verbose) if (msg_verbose)
msg_info("%s: domain list created using \"%s\"", myname, msg_info("%s: domain list created using \"%s\"", myname,
domainlist); domainlist);
myfree(domainlist); } else {
dict_ldap->domain = NULL;
} }
myfree(domainlist);
/* /*
* get configured value of "ldapsource_timeout"; default to 10 seconds * get configured value of "ldapsource_timeout"; default to 10 seconds