From 53a2d9a860cd9c6fa4f2c8c76df405ff351e36b4 Mon Sep 17 00:00:00 2001 From: Wietse Venema Date: Wed, 18 Dec 2002 00:00:00 -0500 Subject: [PATCH] postfix-1.1.12-20021218 --- postfix/HISTORY | 7 - postfix/README_FILES/SASL_README | 9 +- postfix/conf/access | 2 +- postfix/conf/canonical | 2 +- postfix/conf/transport | 146 +++++++++--------- postfix/conf/virtual | 104 ++++++------- postfix/html/access.5.html | 2 +- postfix/html/canonical.5.html | 2 +- postfix/html/cleanup.8.html | 16 +- postfix/html/local.8.html | 38 ++--- postfix/html/master.8.html | 2 +- postfix/html/pcre_table.5.html | 2 +- postfix/html/pickup.8.html | 20 +-- postfix/html/postalias.1.html | 10 +- postfix/html/postconf.1.html | 2 +- postfix/html/postfix.1.html | 21 ++- postfix/html/qmqpd.8.html | 2 +- postfix/html/sendmail.1.html | 87 +++++------ postfix/html/transport.5.html | 146 +++++++++--------- postfix/html/trivial-rewrite.8.html | 17 +- postfix/html/virtual.5.html | 104 ++++++------- postfix/html/virtual.8.html | 8 +- postfix/man/man1/postalias.1 | 8 +- postfix/man/man1/postconf.1 | 2 +- postfix/man/man1/postfix.1 | 25 ++- postfix/man/man1/sendmail.1 | 4 +- postfix/man/man5/access.5 | 2 +- postfix/man/man5/canonical.5 | 2 +- postfix/man/man5/pcre_table.5 | 2 +- postfix/man/man5/transport.5 | 70 +++++---- postfix/man/man5/virtual.5 | 98 ++++++------ postfix/man/man8/cleanup.8 | 6 +- postfix/man/man8/local.8 | 10 +- postfix/man/man8/master.8 | 4 +- postfix/man/man8/pickup.8 | 15 +- postfix/man/man8/qmqpd.8 | 2 +- postfix/man/man8/trivial-rewrite.8 | 11 +- postfix/man/man8/virtual.8 | 5 +- postfix/proto/access | 2 +- postfix/proto/canonical | 2 +- postfix/proto/pcre_table | 2 +- postfix/proto/transport | 72 +++++---- postfix/proto/virtual | 90 +++++------ postfix/src/cleanup/cleanup.c | 6 +- postfix/src/global/Makefile.in | 3 +- postfix/src/global/mail_version.h | 2 +- postfix/src/local/local.c | 10 +- postfix/src/master/master.c | 4 +- postfix/src/pickup/pickup.c | 15 +- postfix/src/postalias/postalias.c | 8 +- postfix/src/postconf/postconf.c | 2 +- postfix/src/postfix/postfix.c | 23 ++- postfix/src/qmqpd/qmqpd.c | 2 +- postfix/src/sendmail/sendmail.c | 38 +++-- postfix/src/trivial-rewrite/Makefile.in | 2 +- postfix/src/trivial-rewrite/resolve.c | 4 +- postfix/src/trivial-rewrite/trivial-rewrite.c | 14 +- postfix/src/virtual/virtual.c | 7 +- 58 files changed, 694 insertions(+), 629 deletions(-) diff --git a/postfix/HISTORY b/postfix/HISTORY index d85530405..a68d0a460 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -7500,9 +7500,6 @@ Open problems: or maildir delivery that result in deferral rather than bouncing mail. - Low: don't do user@domain and @domain lookups in - local_recipient_maps queries. - Low: after reorganizing configuration parameters, add flags to all parameters whose value can be read from file. @@ -7528,7 +7525,3 @@ Open problems: Low: with quoted-printable, perhaps use =46rom instead of >From. - - Low: make it easier to have local_recipient_maps turned on - by default. This requires documentation of its existence - with anything that replaces or extends local delivery. diff --git a/postfix/README_FILES/SASL_README b/postfix/README_FILES/SASL_README index 67508d3fc..73ebdd6d3 100644 --- a/postfix/README_FILES/SASL_README +++ b/postfix/README_FILES/SASL_README @@ -46,10 +46,11 @@ was contributed by Jason Hoos. When receiving mail, Postfix logs the client-provided username, authentication method, and sender address to the maillog file, and optionally grants mail access via the permit_sasl_authenticated -UCE restriction. SASL authentication information is not passed on -via message headers or via SMTP. It is no-one's business what -username and authentication method the poster was using in order -to access the mail server. +UCE restriction. + +SASL authentication information is not passed on via message headers +or via SMTP. It is no-one's business what username and authentication +method the poster was using in order to access the mail server. When sending mail, Postfix looks up the server hostname or destination domain (the address remote part) in a table, and if a username/password diff --git a/postfix/conf/access b/postfix/conf/access index 1d7e01e64..0b4a8ad63 100644 --- a/postfix/conf/access +++ b/postfix/conf/access @@ -129,7 +129,7 @@ # tion schemes. # # DUNNO Pretend that the lookup key was not found in this -# table, to prevents Postfix from trying substrings +# table. This prevents Postfix from trying substrings # of the lookup key (such as a subdomain name, or a # network address subnetwork). # diff --git a/postfix/conf/canonical b/postfix/conf/canonical index 2ffb81e53..e140b0927 100644 --- a/postfix/conf/canonical +++ b/postfix/conf/canonical @@ -72,7 +72,7 @@ # user@domain is replaced by address. This form has # the highest precedence. # -# This form useful to clean up addresses produced by +# This is useful to clean up addresses produced by # legacy mail systems. It can also be used to pro- # duce Firstname.Lastname style addresses, but see # below for a simpler solution. diff --git a/postfix/conf/transport b/postfix/conf/transport index 65be20410..c5c6cf8c6 100644 --- a/postfix/conf/transport +++ b/postfix/conf/transport @@ -88,133 +88,141 @@ # Note 1: the special pattern * represents any address (i.e. # it functions as the wild-card pattern). # -# Note 2: the null recipient address is looked up as the -# local mailer-daemon address (mailer-daemon@fully-quali- -# fied-domain-name). +# Note 2: the null recipient address is looked up as +# $empty_address_recipient@$myhostname (default: mailer-dae- +# mon@hostname). # # RESULT FORMAT -# A null transport and null nexthop result means "do not -# change": use the delivery transport and nexthop informa- -# tion that would be used when the entire transport table -# did not exist. -# -# A non-null transport field with a null nexthop field -# resets the nexthop information to the recipient domain. -# -# A null transport field with non-null nexthop field does -# not modify the transport information. -# -# TRANSPORT FIELD -# The transport field specifies the name of a mail delivery +# The transport field specifies the name of a mail delivery # transport (the first name of a mail delivery service entry # in the Postfix master.cf file). # -# When a null transport field is specified, Postfix uses one -# of the following transports: -# -# $local_transport -# The domain matches $mydestination or $inet_inter- -# faces. -# -# $virtual_transport -# The domain matches $virtual_mailbox_domains. -# -# $relay_transport -# The domain matches $relay_transport. -# -# $default_transport -# All other non-local, non-virtual destinations. -# -# NEXTHOP FIELD -# The interpretation of the nexthop field is transport +# The interpretation of the nexthop field is transport # dependent. In the case of SMTP, specify host:service for a -# non-default server port, and use [host] or [host]:port in -# order to disable MX (mail exchanger) DNS lookups. The [] -# form can also be used with IP addresses instead of host- +# non-default server port, and use [host] or [host]:port in +# order to disable MX (mail exchanger) DNS lookups. The [] +# form can also be used with IP addresses instead of host- # names. # +# A null transport and null nexthop result means "do not +# change": use the delivery transport and nexthop informa- +# tion that would be used when the entire transport table +# did not exist. +# +# A non-null transport field with a null nexthop field +# resets the nexthop information to the recipient domain. +# +# A null transport field with non-null nexthop field does +# not modify the transport information. +# +# DEFAULT DELIVERY METHOD +# When the recipient address or domain does not match a +# transport table entry, Postfix uses one of the following +# delivery methods, with the recipient domain as the default +# nexthop. +# +# o The recipient domain matches $mydestination or +# $inet_interfaces. The transport and optional nex- +# thop are specified with $local_transport. +# +# o The recipient domain matches $virtual_mail- +# box_domains. The transport and optional nexthop +# are specified with $virtual_transport. +# +# o The recipient domain matches $relay_domains. The +# transport and optional nexthop are specified with +# $relay_transport. This overrides the nexthop infor- +# mation that is specified with $relayhost. +# +# o All other destinations. the transport and optional +# nexthop are specified with $relay_transport. This +# overrides the nexthop information that is specified +# with $relayhost. +# # EXAMPLES -# In order to deliver internal mail directly, while using a -# mail relay for all other mail, specify a null entry for -# internal destinations (do not change the delivery trans- -# port or the nexthop information) and specify a wildcard -# for all other destinations. Note that for this trick to -# work you should not specify a relayhost in the main.cf -# file. +# In order to deliver internal mail directly, while using a +# mail relay for all other mail, specify a null entry for +# internal destinations (do not change the delivery trans- +# port or the nexthop information) and specify a wildcard +# for all other destinations. # # my.domain : # .my.domain : # * smtp:outbound-relay.my.domain # -# In order to send mail for foo.org and its subdomains via +# In order to send mail for foo.org and its subdomains via # the uucp transport to the UUCP host named foo: # # foo.org uucp:foo # .foo.org uucp:foo # -# When no nexthop host name is specified, the destination -# domain name is used instead. For example, the following -# directs mail for user@foo.org via the slow transport to a -# mail exchanger for foo.org. The slow transport could be -# something that runs at most one delivery process at a +# When no nexthop host name is specified, the destination +# domain name is used instead. For example, the following +# directs mail for user@foo.org via the slow transport to a +# mail exchanger for foo.org. The slow transport could be +# something that runs at most one delivery process at a # time: # # foo.org slow: # # When no transport is specified, Postfix uses the transport # that matches the address domain class (see TRANSPORT FIELD -# discussion above). The following sends all mail for +# discussion above). The following sends all mail for # foo.org and its subdomains to host gateway.foo.org: # # foo.org :[gateway.foo.org] # .foo.org :[gateway.foo.org] # -# In the above example, the [] are used to suppress MX -# lookups. The result would likely point to your local +# In the above example, the [] are used to suppress MX +# lookups. The result would likely point to your local # machine. # -# In the case of delivery via SMTP, one may specify host- +# In the case of delivery via SMTP, one may specify host- # name:service instead of just a host: # # foo.org smtp:bar.org:2025 # -# This directs mail for user@foo.org to host bar.org port -# 2025. Instead of a numerical port a symbolic name may be -# used. Specify [] around the hostname in order to disable +# This directs mail for user@foo.org to host bar.org port +# 2025. Instead of a numerical port a symbolic name may be +# used. Specify [] around the hostname in order to disable # MX lookups. # # The error mailer can be used to bounce mail: # -# .foo.org error:mail for *.foo.org is not deliv- +# .foo.org error:mail for *.foo.org is not deliv- # erable # -# This causes all mail for user@anything.foo.org to be +# This causes all mail for user@anything.foo.org to be # bounced. # # REGULAR EXPRESSION TABLES -# This section describes how the table lookups change when +# This section describes how the table lookups change when # the table is given in the form of regular expressions. For -# a description of regular expression lookup table syntax, +# a description of regular expression lookup table syntax, # see regexp_table(5) or pcre_table(5). # -# Each pattern is a regular expression that is applied to +# Each pattern is a regular expression that is applied to # the entire domain being looked up. Thus, some.domain.hier- # archy is not broken up into parent domains. # -# Patterns are applied in the order as specified in the -# table, until a pattern is found that matches the search +# Patterns are applied in the order as specified in the +# table, until a pattern is found that matches the search # string. # -# Results are the same as with indexed file lookups, with -# the additional feature that parenthesized substrings from +# Results are the same as with indexed file lookups, with +# the additional feature that parenthesized substrings from # the pattern can be interpolated as $1, $2 and so on. # # CONFIGURATION PARAMETERS -# The following main.cf parameters are especially relevant -# to this topic. See the Postfix main.cf file for syntax -# details and for default values. Use the postfix reload +# The following main.cf parameters are especially relevant +# to this topic. See the Postfix main.cf file for syntax +# details and for default values. Use the postfix reload # command after a configuration change. # +# empty_address_recipient +# The address that is looked up instead of the null +# sender address. +# # parent_domain_matches_subdomains # List of Postfix features that use domain.tld pat- # terns to match sub.domain.tld (as opposed to diff --git a/postfix/conf/virtual b/postfix/conf/virtual index 6fa76dfe1..6f7f05fc2 100644 --- a/postfix/conf/virtual +++ b/postfix/conf/virtual @@ -18,8 +18,8 @@ # # The main applications of virtual aliasing are: # -# o To redirect mail from one address to one or more -# other addresses. +# o To redirect mail for one address to one or more +# addresses. # # o To simulate virtual domains where all virtual # addresses are aliased to non-virtual addresses. @@ -49,56 +49,6 @@ # sions. In that case, the lookups are done in a slightly # different way as described below. # -# SIMULATED VIRTUAL DOMAINS -# Besides virtual aliases, the virtual alias table can also -# be used to simulate virtual domains. With a simulated vir- -# tual domain, all recipient addresses are aliased to non- -# virtual addresses. These non-virtual addresses may be -# either local or remote. -# -# Simulated virtual domains are not to be confused with the -# true virtual domains that are implemented with the Postfix -# virtual(8) mail delivery agent. With true virtual domains, -# each recipient address can have its own mailbox. -# -# With a simulated virtual domain, the virtual domain has -# its own user name space. Local (i.e. non-virtual) user- -# names are not visible in a simulated virtual domain. In -# particular, local aliases(5) and local mailing lists are -# not visible as localname@simulated.domain. -# -# Support for a simulated virtual domain looks like: -# -# /etc/postfix/main.cf: -# virtual_alias_maps = hash:/etc/postfix/virtual -# -# Note: some systems use dbm databases instead of hash. -# See the output from postconf -m for available database -# types. -# -# /etc/postfix/virtual: -# simulated.domain anything (right-hand content does not matter) -# postmaster@simulated.domain postmaster -# user1@simulated.domain address1 -# user2@simulated.domain address2, address3 -# -# The simulated.domain anything entry is required for a sim- -# ulated virtual domain. Without this entry, mail will be -# rejected with a "relay access denied" error condition. -# -# Do not list a simulated virtual domain name in the main.cf -# mydestination configuration parameter. -# -# With a simulated virtual domain, the Postfix SMTP server -# accepts mail for known-user@simulated.domain, and rejects -# mail for unknown-user@simulated.domain as undeliverable. -# -# Instead of specifying the simulated virtual domain name -# via the virtual_alias_maps table, you may also specify it -# via the main.cf virtual_alias_domains configuration param- -# eter. This latter parameter uses the same syntax as the -# main.cf mydestination configuration parameter. -# # TABLE FORMAT # The format of the virtual table is as follows, mappings # being tried in the order as listed in this manual page: @@ -151,6 +101,56 @@ # @domain. An unmatched address extension (+foo) is propa- # gated to the result of table lookup. # +# SIMULATED VIRTUAL DOMAINS +# Besides virtual aliases, the virtual alias table can also +# be used to simulate virtual domains. With a simulated vir- +# tual domain, all recipient addresses are aliased to non- +# virtual addresses. These non-virtual addresses may be +# either local or remote. +# +# Simulated virtual domains are not to be confused with the +# true virtual domains that are implemented with the Postfix +# virtual(8) mail delivery agent. With true virtual domains, +# each recipient address can have its own mailbox. +# +# With a simulated virtual domain, the virtual domain has +# its own user name space. Local (i.e. non-virtual) user- +# names are not visible in a simulated virtual domain. In +# particular, local aliases(5) and local mailing lists are +# not visible as localname@simulated.domain. +# +# Support for a simulated virtual domain looks like: +# +# /etc/postfix/main.cf: +# virtual_alias_maps = hash:/etc/postfix/virtual +# +# Note: some systems use dbm databases instead of hash. +# See the output from postconf -m for available database +# types. +# +# /etc/postfix/virtual: +# simulated.domain anything (right-hand content does not matter) +# postmaster@simulated.domain postmaster +# user1@simulated.domain address1 +# user2@simulated.domain address2, address3 +# +# The simulated.domain anything entry is required for a sim- +# ulated virtual domain. Without this entry, mail will be +# rejected with a "relay access denied" error condition. +# +# Do not list a simulated virtual domain name in the main.cf +# mydestination configuration parameter. +# +# With a simulated virtual domain, the Postfix SMTP server +# accepts mail for known-user@simulated.domain, and rejects +# mail for unknown-user@simulated.domain as undeliverable. +# +# Instead of specifying the simulated virtual domain name +# via the virtual_alias_maps table, you may also specify it +# via the main.cf virtual_alias_domains configuration param- +# eter. This latter parameter uses the same syntax as the +# main.cf mydestination configuration parameter. +# # REGULAR EXPRESSION TABLES # This section describes how the table lookups change when # the table is given in the form of regular expressions. For diff --git a/postfix/html/access.5.html b/postfix/html/access.5.html index 71f575c84..5158b390c 100644 --- a/postfix/html/access.5.html +++ b/postfix/html/access.5.html @@ -130,7 +130,7 @@ ACCESS(5) ACCESS(5) tion schemes. DUNNO Pretend that the lookup key was not found in this - table, to prevents Postfix from trying substrings + table. This prevents Postfix from trying substrings of the lookup key (such as a subdomain name, or a network address subnetwork). diff --git a/postfix/html/canonical.5.html b/postfix/html/canonical.5.html index d830aa05e..641f732fa 100644 --- a/postfix/html/canonical.5.html +++ b/postfix/html/canonical.5.html @@ -73,7 +73,7 @@ CANONICAL(5) CANONICAL(5) user@domain is replaced by address. This form has the highest precedence. - This form useful to clean up addresses produced by + This is useful to clean up addresses produced by legacy mail systems. It can also be used to pro- duce Firstname.Lastname style addresses, but see below for a simpler solution. diff --git a/postfix/html/cleanup.8.html b/postfix/html/cleanup.8.html index 1c7326f38..8efac446b 100644 --- a/postfix/html/cleanup.8.html +++ b/postfix/html/cleanup.8.html @@ -188,20 +188,24 @@ CLEANUP(8) CLEANUP(8) Resource controls duplicate_filter_limit - Limit the number of envelope recipients that are + Limits the number of envelope recipients that are remembered. - header_size_limit - Limit the amount of memory in bytes used to process + header_address_token_limit + Limits the number of address tokens used to process a message header. + header_size_limit + Limits the amount of memory in bytes used to pro- + cess a message header. + in_flow_delay Amount of time to pause before accepting a message, - when the message arrival rate exceeds the message + when the message arrival rate exceeds the message delivery rate. extract_recipient_limit - Limit the amount of recipients extracted from mes- + Limit the amount of recipients extracted from mes- sage headers. SEE ALSO @@ -216,7 +220,7 @@ CLEANUP(8) CLEANUP(8) /etc/postfix/virtual*, virtual mapping table LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/local.8.html b/postfix/html/local.8.html index 076c8fe38..59d82ef1b 100644 --- a/postfix/html/local.8.html +++ b/postfix/html/local.8.html @@ -173,45 +173,47 @@ LOCAL(8) LOCAL(8) SENDER The entire sender address. The PATH environment variable is always reset to a system- - dependent default path, and the TZ (time zone) environment - variable is always passed on without change. + dependent default path, and environment variables whose + names are blessed by the export_environment configureation + parameter are exported unchanged. The current working directory is the mail queue directory. The local daemon prepends a "From sender time_stamp" enve- - lope header to each message, prepends an X-Original-To: - header with the recipient address as given to Postfix, + lope header to each message, prepends an X-Original-To: + header with the recipient address as given to Postfix, prepends an optional Delivered-To: header with the recipi- - ent envelope address, prepends a Return-Path: header with + ent envelope address, prepends a Return-Path: header with the sender envelope address, and appends no empty line. EXTERNAL FILE DELIVERY - The delivery format depends on the destination filename - syntax. The default is to use UNIX-style mailbox format. - Specify a name ending in / for qmail-compatible maildir + The delivery format depends on the destination filename + syntax. The default is to use UNIX-style mailbox format. + Specify a name ending in / for qmail-compatible maildir delivery. - The allow_mail_to_files configuration parameter restricts - delivery to external files. The default setting (alias, + The allow_mail_to_files configuration parameter restricts + delivery to external files. The default setting (alias, forward) forbids file destinations in :include: files. In the case of UNIX-style mailbox delivery, the local dae- mon prepends a "From sender time_stamp" envelope header to - each message, prepends an X-Original-To: header with the - recipient address as given to Postfix, prepends an - optional Delivered-To: header with the recipient envelope - address, prepends a > character to lines beginning with - "From ", and appends an empty line. The envelope sender + each message, prepends an X-Original-To: header with the + recipient address as given to Postfix, prepends an + optional Delivered-To: header with the recipient envelope + address, prepends a > character to lines beginning with + "From ", and appends an empty line. The envelope sender address is available in the Return-Path: header. When the - destination is a regular file, it is locked for exclusive + destination is a regular file, it is locked for exclusive access while delivery is in progress. In case of problems, an attempt is made to truncate a regular file to its orig- inal length. In the case of maildir delivery, the local daemon prepends an optional Delivered-To: header with the envelope recipi- - ent address. The envelope sender address is available in - the Return-Path: header. + ent address, and prepends an X-Original-To: header with + the recipient address as given to Postfix. The envelope + sender address is available in the Return-Path: header. ADDRESS EXTENSION The optional recipient_delimiter configuration parameter diff --git a/postfix/html/master.8.html b/postfix/html/master.8.html index 211c6b148..512485ca7 100644 --- a/postfix/html/master.8.html +++ b/postfix/html/master.8.html @@ -5,7 +5,7 @@ MASTER(8) MASTER(8) master - Postfix master process SYNOPSIS - master [-c config_dir] [-e exit_time] [-D] [-t] [-v] + master [-Dtv] [-c config_dir] [-e exit_time] DESCRIPTION The master daemon is the resident process that runs Post- diff --git a/postfix/html/pcre_table.5.html b/postfix/html/pcre_table.5.html index d74644c63..31da45f43 100644 --- a/postfix/html/pcre_table.5.html +++ b/postfix/html/pcre_table.5.html @@ -62,7 +62,7 @@ PCRE_TABLE(5) PCRE_TABLE(5) m (default: off) Toggles the PCRE_MULTILINE flag. When this flag is - on, the ^ and $ metacharacters match immediately + on, the ^ and $ metacharacters match immediately after and immediately before a newline character, respectively, in addition to matching at the start and end of the subject string. diff --git a/postfix/html/pickup.8.html b/postfix/html/pickup.8.html index dfd20d5d7..ba6056e8e 100644 --- a/postfix/html/pickup.8.html +++ b/postfix/html/pickup.8.html @@ -19,13 +19,13 @@ PICKUP(8) PICKUP(8) world. SECURITY - The pickup daemon runs with superuser privileges so that - it 1) can open a queue file with the rights of the submit- - ting user and 2) can access the Postfix private IPC chan- - nels. On the positive side, the program can run chrooted, - opens no files for writing, is careful about what files it - opens for reading, and does not actually touch any data - that is sent to its public service endpoint. + The pickup daemon is moderately security sensitive. It + runs with fixed low privilege and can run in a chrooted + environment. However, the program reads files from poten- + tially hostile users. The pickup daemon opens no files + for writing, is careful about what files it opens for + reading, and does not actually touch any data that is sent + to its public service endpoint. DIAGNOSTICS Problems and transactions are logged to syslogd(8). @@ -56,10 +56,6 @@ PICKUP(8) PICKUP(8) Address to send a copy of each message that enters the system. - mail_owner - The process privileges used while not opening a - maildrop file. - queue_directory Top-level directory of the Postfix queue. @@ -70,7 +66,7 @@ PICKUP(8) PICKUP(8) syslogd(8) system logging LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/postalias.1.html b/postfix/html/postalias.1.html index 8f96b4cef..b19ca66ec 100644 --- a/postfix/html/postalias.1.html +++ b/postfix/html/postalias.1.html @@ -51,7 +51,7 @@ POSTALIAS(1) POSTALIAS(1) -i Incremental mode. Read entries from standard input and do not truncate an existing database. By default, postalias creates a new database from the - entries in file_name. + entries in file_name. -n Don't include the terminating null character that terminates lookup keys and values. By default, @@ -113,7 +113,7 @@ POSTALIAS(1) POSTALIAS(1) file_name The name of the alias database source file when - rebuilding a database. + creating a database. DIAGNOSTICS Problems are logged to the standard error stream. No out- @@ -136,9 +136,9 @@ POSTALIAS(1) POSTALIAS(1) to this program. See the Postfix main.cf file for syntax details and for default values. - efault_Bdatabase_type - Default alias database type. On many UNIX systems, - the default type is either dbm or hash. + default_database_type + Default database type. On many UNIX systems, the + default type is either dbm or hash. berkeley_db_create_buffer_size Amount of buffer memory to be used when creating a diff --git a/postfix/html/postconf.1.html b/postfix/html/postconf.1.html index 2fd3a7539..0367e4f51 100644 --- a/postfix/html/postconf.1.html +++ b/postfix/html/postconf.1.html @@ -11,7 +11,7 @@ POSTCONF(1) POSTCONF(1) DESCRIPTION The postconf command prints the actual value of parameter - (all known parameters by default), one parameter per line, + (all known parameters by default) one parameter per line, changes its value, or prints other information about the Postfix mail system. diff --git a/postfix/html/postfix.1.html b/postfix/html/postfix.1.html index 2d2e98b3d..b2f1c1bbd 100644 --- a/postfix/html/postfix.1.html +++ b/postfix/html/postfix.1.html @@ -5,7 +5,7 @@ POSTFIX(1) POSTFIX(1) postfix - Postfix control program SYNOPSIS - postfix [-c config_dir] [-D] [-v] command + postfix [-Dv] [-c config_dir] command DESCRIPTION This command is reserved for the superuser. To submit @@ -67,11 +67,12 @@ POSTFIX(1) POSTFIX(1) verbose. ENVIRONMENT - The postfix command sets the following environment vari- - ables: + The postfix command exports the following environment + variables before executing the postfix-script file: MAIL_CONFIG - Directory with Postfix configuration files. + This is set when the -c command-line option is pre- + sent. MAIL_VERBOSE This is set when the -v command-line option is pre- @@ -81,10 +82,8 @@ POSTFIX(1) POSTFIX(1) This is set when the -D command-line option is pre- sent. -CONFIGURATION PARAMETERS - The following main.cf configuration parameters are made - available as process environment variables with the same - names: + The following main.cf configuration parameters are + exported as environment variables with the same names: command_directory Directory with Postfix administrative commands. @@ -111,14 +110,14 @@ POSTFIX(1) POSTFIX(1) commands. sendmail_path - The full pathname for the Postfix sendmail command. + The full pathname for the Postfix sendmail command. newaliases_path - The full pathname for the Postfix newaliases com- + The full pathname for the Postfix newaliases com- mand. mailq_path - The full pathname for the Postfix mailq command. + The full pathname for the Postfix mailq command. manpage_directory The directory for the Postfix on-line manual pages. diff --git a/postfix/html/qmqpd.8.html b/postfix/html/qmqpd.8.html index 37fc7294a..9c99eb526 100644 --- a/postfix/html/qmqpd.8.html +++ b/postfix/html/qmqpd.8.html @@ -96,7 +96,7 @@ QMQPD(8) QMQPD(8) address information. Tarpitting - qmqpd_error_sleep_time + qmqpd_error_delay Time to wait in seconds before informing the client of a problem. This slows down run-away errors. diff --git a/postfix/html/sendmail.1.html b/postfix/html/sendmail.1.html index ba691f1eb..b96c79529 100644 --- a/postfix/html/sendmail.1.html +++ b/postfix/html/sendmail.1.html @@ -164,63 +164,64 @@ SENDMAIL(1) SENDMAIL(1) -o7 (ignored) -o8 (ignored) - The message body type. Currently, Postfix imple- - ments just-send-eight. + To send 8-bit or binary content, use an appropriate + MIME encapsulation and specify the appropriate -B + command-line option. - -oi When reading a message from standard input, don't - treat a line with only a . character as the end of + -oi When reading a message from standard input, don't + treat a line with only a . character as the end of input. -om (ignored) - The sender is never eliminated from alias etc. + The sender is never eliminated from alias etc. expansions. -o x value (ignored) - Set option x to value. Use the equivalent configu- + Set option x to value. Use the equivalent configu- ration parameter in main.cf instead. -r sender Set the envelope sender address. This is the address where delivery problems are sent to, unless - the message contains an Errors-To: message header. + the message contains an Errors-To: message header. - -q Attempt to deliver all queued mail. This is imple- + -q Attempt to deliver all queued mail. This is imple- mented by executing the postqueue(1) command. -qinterval (ignored) - The interval between queue runs. Use the + The interval between queue runs. Use the queue_run_delay configuration parameter instead. -qRsite - Schedule immediate delivery of all mail that is + Schedule immediate delivery of all mail that is queued for the named site. This option accepts only - site names that are eligible for the "fast flush" - service, and is implemented by executing the + site names that are eligible for the "fast flush" + service, and is implemented by executing the postqueue(1) command. See flush(8) for more infor- mation about the "fast flush" service. -qSsite - This command is not implemented. Use the slower + This command is not implemented. Use the slower sendmail -q command instead. - -t Extract recipients from message headers. This - requires that no recipients be specified on the + -t Extract recipients from message headers. This + requires that no recipients be specified on the command line. -v Enable verbose logging for debugging purposes. Mul- - tiple -v options make the software increasingly - verbose. For compatibility with mailx and other - mail submission software, a single -v option pro- + tiple -v options make the software increasingly + verbose. For compatibility with mailx and other + mail submission software, a single -v option pro- duces no output. SECURITY - By design, this program is not set-user (or group) id. - However, it must handle data from untrusted users or - untrusted machines. Thus, the usual precautions need to + By design, this program is not set-user (or group) id. + However, it must handle data from untrusted users or + untrusted machines. Thus, the usual precautions need to be taken against malicious inputs. DIAGNOSTICS - Problems are logged to syslogd(8) and to the standard + Problems are logged to syslogd(8) and to the standard error stream. ENVIRONMENT @@ -232,7 +233,7 @@ SENDMAIL(1) SENDMAIL(1) MAIL_DEBUG Enable debugging with an external command, as spec- - ified with the debugger_command configuration + ified with the debugger_command configuration parameter. FILES @@ -240,13 +241,13 @@ SENDMAIL(1) SENDMAIL(1) /etc/postfix, configuration files CONFIGURATION PARAMETERS - See the Postfix main.cf file for syntax details and for - default values. Use the postfix reload command after a + See the Postfix main.cf file for syntax details and for + default values. Use the postfix reload command after a configuration change. alias_database - Default alias database(s) for newaliases. The - default value for this parameter is system-spe- + Default alias database(s) for newaliases. The + default value for this parameter is system-spe- cific. bounce_size_limit @@ -262,41 +263,41 @@ SENDMAIL(1) SENDMAIL(1) initialized. debug_peer_level - Increment in verbose logging level when a remote + Increment in verbose logging level when a remote host matches a pattern in the debug_peer_list parameter. debug_peer_list - List of domain or network patterns. When a remote - host matches a pattern, increase the verbose log- - ging level by the amount specified in the + List of domain or network patterns. When a remote + host matches a pattern, increase the verbose log- + ging level by the amount specified in the debug_peer_level parameter. default_verp_delimiters - The VERP delimiter characters that are used when - the -V command line option is specified without + The VERP delimiter characters that are used when + the -V command line option is specified without delimiter characters. fast_flush_domains List of domains that will receive "fast flush" ser- - vice (default: all domains that this system is - willing to relay mail to). This list specifies the - domains that Postfix accepts in the SMTP ETRN + vice (default: all domains that this system is + willing to relay mail to). This list specifies the + domains that Postfix accepts in the SMTP ETRN request and in the sendmail -qR command. fork_attempts - Number of attempts to fork() a process before giv- + Number of attempts to fork() a process before giv- ing up. fork_delay - Delay in seconds between successive fork() + Delay in seconds between successive fork() attempts. hopcount_limit Limit the number of Received: message headers. mail_owner - The owner of the mail queue and of most Postfix + The owner of the mail queue and of most Postfix processes. command_directory @@ -306,16 +307,16 @@ SENDMAIL(1) SENDMAIL(1) Directory with Postfix daemon programs. queue_directory - Top-level directory of the Postfix queue. This is + Top-level directory of the Postfix queue. This is also the root directory of Postfix daemons that run chrooted. queue_run_delay - The time between successive scans of the deferred + The time between successive scans of the deferred queue. verp_delimiter_filter - The characters that Postfix accepts as VERP delim- + The characters that Postfix accepts as VERP delim- iter characters. SEE ALSO @@ -331,7 +332,7 @@ SENDMAIL(1) SENDMAIL(1) syslogd(8) system logging LICENSE - The Secure Mailer license must be distributed with this + The Secure Mailer license must be distributed with this software. AUTHOR(S) diff --git a/postfix/html/transport.5.html b/postfix/html/transport.5.html index 58543b893..a7f22bb5a 100644 --- a/postfix/html/transport.5.html +++ b/postfix/html/transport.5.html @@ -89,133 +89,141 @@ TRANSPORT(5) TRANSPORT(5) Note 1: the special pattern * represents any address (i.e. it functions as the wild-card pattern). - Note 2: the null recipient address is looked up as the - local mailer-daemon address (mailer-daemon@fully-quali- - fied-domain-name). + Note 2: the null recipient address is looked up as + $empty_address_recipient@$myhostname (default: mailer-dae- + mon@hostname). RESULT FORMAT - A null transport and null nexthop result means "do not - change": use the delivery transport and nexthop informa- - tion that would be used when the entire transport table - did not exist. - - A non-null transport field with a null nexthop field - resets the nexthop information to the recipient domain. - - A null transport field with non-null nexthop field does - not modify the transport information. - -TRANSPORT FIELD - The transport field specifies the name of a mail delivery + The transport field specifies the name of a mail delivery transport (the first name of a mail delivery service entry in the Postfix master.cf file). - When a null transport field is specified, Postfix uses one - of the following transports: - - $local_transport - The domain matches $mydestination or $inet_inter- - faces. - - $virtual_transport - The domain matches $virtual_mailbox_domains. - - $relay_transport - The domain matches $relay_transport. - - $default_transport - All other non-local, non-virtual destinations. - -NEXTHOP FIELD - The interpretation of the nexthop field is transport + The interpretation of the nexthop field is transport dependent. In the case of SMTP, specify host:service for a - non-default server port, and use [host] or [host]:port in - order to disable MX (mail exchanger) DNS lookups. The [] - form can also be used with IP addresses instead of host- + non-default server port, and use [host] or [host]:port in + order to disable MX (mail exchanger) DNS lookups. The [] + form can also be used with IP addresses instead of host- names. + A null transport and null nexthop result means "do not + change": use the delivery transport and nexthop informa- + tion that would be used when the entire transport table + did not exist. + + A non-null transport field with a null nexthop field + resets the nexthop information to the recipient domain. + + A null transport field with non-null nexthop field does + not modify the transport information. + +DEFAULT DELIVERY METHOD + When the recipient address or domain does not match a + transport table entry, Postfix uses one of the following + delivery methods, with the recipient domain as the default + nexthop. + + o The recipient domain matches $mydestination or + $inet_interfaces. The transport and optional nex- + thop are specified with $local_transport. + + o The recipient domain matches $virtual_mail- + box_domains. The transport and optional nexthop + are specified with $virtual_transport. + + o The recipient domain matches $relay_domains. The + transport and optional nexthop are specified with + $relay_transport. This overrides the nexthop infor- + mation that is specified with $relayhost. + + o All other destinations. the transport and optional + nexthop are specified with $relay_transport. This + overrides the nexthop information that is specified + with $relayhost. + EXAMPLES - In order to deliver internal mail directly, while using a - mail relay for all other mail, specify a null entry for - internal destinations (do not change the delivery trans- - port or the nexthop information) and specify a wildcard - for all other destinations. Note that for this trick to - work you should not specify a relayhost in the main.cf - file. + In order to deliver internal mail directly, while using a + mail relay for all other mail, specify a null entry for + internal destinations (do not change the delivery trans- + port or the nexthop information) and specify a wildcard + for all other destinations. my.domain : .my.domain : * smtp:outbound-relay.my.domain - In order to send mail for foo.org and its subdomains via + In order to send mail for foo.org and its subdomains via the uucp transport to the UUCP host named foo: foo.org uucp:foo .foo.org uucp:foo - When no nexthop host name is specified, the destination - domain name is used instead. For example, the following - directs mail for user@foo.org via the slow transport to a - mail exchanger for foo.org. The slow transport could be - something that runs at most one delivery process at a + When no nexthop host name is specified, the destination + domain name is used instead. For example, the following + directs mail for user@foo.org via the slow transport to a + mail exchanger for foo.org. The slow transport could be + something that runs at most one delivery process at a time: foo.org slow: When no transport is specified, Postfix uses the transport that matches the address domain class (see TRANSPORT FIELD - discussion above). The following sends all mail for + discussion above). The following sends all mail for foo.org and its subdomains to host gateway.foo.org: foo.org :[gateway.foo.org] .foo.org :[gateway.foo.org] - In the above example, the [] are used to suppress MX - lookups. The result would likely point to your local + In the above example, the [] are used to suppress MX + lookups. The result would likely point to your local machine. - In the case of delivery via SMTP, one may specify host- + In the case of delivery via SMTP, one may specify host- name:service instead of just a host: foo.org smtp:bar.org:2025 - This directs mail for user@foo.org to host bar.org port - 2025. Instead of a numerical port a symbolic name may be - used. Specify [] around the hostname in order to disable + This directs mail for user@foo.org to host bar.org port + 2025. Instead of a numerical port a symbolic name may be + used. Specify [] around the hostname in order to disable MX lookups. The error mailer can be used to bounce mail: - .foo.org error:mail for *.foo.org is not deliv- + .foo.org error:mail for *.foo.org is not deliv- erable - This causes all mail for user@anything.foo.org to be + This causes all mail for user@anything.foo.org to be bounced. REGULAR EXPRESSION TABLES - This section describes how the table lookups change when + This section describes how the table lookups change when the table is given in the form of regular expressions. For - a description of regular expression lookup table syntax, + a description of regular expression lookup table syntax, see regexp_table(5) or pcre_table(5). - Each pattern is a regular expression that is applied to + Each pattern is a regular expression that is applied to the entire domain being looked up. Thus, some.domain.hier- archy is not broken up into parent domains. - Patterns are applied in the order as specified in the - table, until a pattern is found that matches the search + Patterns are applied in the order as specified in the + table, until a pattern is found that matches the search string. - Results are the same as with indexed file lookups, with - the additional feature that parenthesized substrings from + Results are the same as with indexed file lookups, with + the additional feature that parenthesized substrings from the pattern can be interpolated as $1, $2 and so on. CONFIGURATION PARAMETERS - The following main.cf parameters are especially relevant - to this topic. See the Postfix main.cf file for syntax - details and for default values. Use the postfix reload + The following main.cf parameters are especially relevant + to this topic. See the Postfix main.cf file for syntax + details and for default values. Use the postfix reload command after a configuration change. + empty_address_recipient + The address that is looked up instead of the null + sender address. + parent_domain_matches_subdomains List of Postfix features that use domain.tld pat- terns to match sub.domain.tld (as opposed to diff --git a/postfix/html/trivial-rewrite.8.html b/postfix/html/trivial-rewrite.8.html index 508bfca2b..77f3e6447 100644 --- a/postfix/html/trivial-rewrite.8.html +++ b/postfix/html/trivial-rewrite.8.html @@ -30,8 +30,8 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) field of an entry in the master.cf file. nexthop - The host to send to. For local delivery this - is an empty string. + The host to send to and optional delivery + method information. recipient The envelope recipient address that is @@ -66,11 +66,16 @@ TRIVIAL-REWRITE(8) TRIVIAL-REWRITE(8) command after a configuration change. Miscellaneous + empty_address_recipient + The recipient that is substituted for the null + address. + inet_interfaces - The network interfaces that this mail system - receives mail on. This information is used to - determine if user@[net.work.addr.ess] is local or - remote. + The network interfaces that this mail system + receives mail on. This information is used to + determine if user@[net.work.addr.ess] is local or + remote. Mail for local users is given to the + $local_transport. mydestination List of domains that are given to the $local_trans- diff --git a/postfix/html/virtual.5.html b/postfix/html/virtual.5.html index fd7fe1b66..72463e287 100644 --- a/postfix/html/virtual.5.html +++ b/postfix/html/virtual.5.html @@ -19,8 +19,8 @@ VIRTUAL(5) VIRTUAL(5) The main applications of virtual aliasing are: - o To redirect mail from one address to one or more - other addresses. + o To redirect mail for one address to one or more + addresses. o To simulate virtual domains where all virtual addresses are aliased to non-virtual addresses. @@ -50,56 +50,6 @@ VIRTUAL(5) VIRTUAL(5) sions. In that case, the lookups are done in a slightly different way as described below. -SIMULATED VIRTUAL DOMAINS - Besides virtual aliases, the virtual alias table can also - be used to simulate virtual domains. With a simulated vir- - tual domain, all recipient addresses are aliased to non- - virtual addresses. These non-virtual addresses may be - either local or remote. - - Simulated virtual domains are not to be confused with the - true virtual domains that are implemented with the Postfix - virtual(8) mail delivery agent. With true virtual domains, - each recipient address can have its own mailbox. - - With a simulated virtual domain, the virtual domain has - its own user name space. Local (i.e. non-virtual) user- - names are not visible in a simulated virtual domain. In - particular, local aliases(5) and local mailing lists are - not visible as localname@simulated.domain. - - Support for a simulated virtual domain looks like: - - /etc/postfix/main.cf: - virtual_alias_maps = hash:/etc/postfix/virtual - - Note: some systems use dbm databases instead of hash. - See the output from postconf -m for available database - types. - - /etc/postfix/virtual: - simulated.domain anything (right-hand content does not matter) - postmaster@simulated.domain postmaster - user1@simulated.domain address1 - user2@simulated.domain address2, address3 - - The simulated.domain anything entry is required for a sim- - ulated virtual domain. Without this entry, mail will be - rejected with a "relay access denied" error condition. - - Do not list a simulated virtual domain name in the main.cf - mydestination configuration parameter. - - With a simulated virtual domain, the Postfix SMTP server - accepts mail for known-user@simulated.domain, and rejects - mail for unknown-user@simulated.domain as undeliverable. - - Instead of specifying the simulated virtual domain name - via the virtual_alias_maps table, you may also specify it - via the main.cf virtual_alias_domains configuration param- - eter. This latter parameter uses the same syntax as the - main.cf mydestination configuration parameter. - TABLE FORMAT The format of the virtual table is as follows, mappings being tried in the order as listed in this manual page: @@ -152,6 +102,56 @@ VIRTUAL(5) VIRTUAL(5) @domain. An unmatched address extension (+foo) is propa- gated to the result of table lookup. +SIMULATED VIRTUAL DOMAINS + Besides virtual aliases, the virtual alias table can also + be used to simulate virtual domains. With a simulated vir- + tual domain, all recipient addresses are aliased to non- + virtual addresses. These non-virtual addresses may be + either local or remote. + + Simulated virtual domains are not to be confused with the + true virtual domains that are implemented with the Postfix + virtual(8) mail delivery agent. With true virtual domains, + each recipient address can have its own mailbox. + + With a simulated virtual domain, the virtual domain has + its own user name space. Local (i.e. non-virtual) user- + names are not visible in a simulated virtual domain. In + particular, local aliases(5) and local mailing lists are + not visible as localname@simulated.domain. + + Support for a simulated virtual domain looks like: + + /etc/postfix/main.cf: + virtual_alias_maps = hash:/etc/postfix/virtual + + Note: some systems use dbm databases instead of hash. + See the output from postconf -m for available database + types. + + /etc/postfix/virtual: + simulated.domain anything (right-hand content does not matter) + postmaster@simulated.domain postmaster + user1@simulated.domain address1 + user2@simulated.domain address2, address3 + + The simulated.domain anything entry is required for a sim- + ulated virtual domain. Without this entry, mail will be + rejected with a "relay access denied" error condition. + + Do not list a simulated virtual domain name in the main.cf + mydestination configuration parameter. + + With a simulated virtual domain, the Postfix SMTP server + accepts mail for known-user@simulated.domain, and rejects + mail for unknown-user@simulated.domain as undeliverable. + + Instead of specifying the simulated virtual domain name + via the virtual_alias_maps table, you may also specify it + via the main.cf virtual_alias_domains configuration param- + eter. This latter parameter uses the same syntax as the + main.cf mydestination configuration parameter. + REGULAR EXPRESSION TABLES This section describes how the table lookups change when the table is given in the form of regular expressions. For diff --git a/postfix/html/virtual.8.html b/postfix/html/virtual.8.html index 93e15fd6a..925526715 100644 --- a/postfix/html/virtual.8.html +++ b/postfix/html/virtual.8.html @@ -40,9 +40,11 @@ VIRTUAL(8) VIRTUAL(8) The virtual delivery agent prepends a "From sender time_stamp" envelope header to each message, prepends a Delivered-To: message header with the envelope recipient - address, prepends a Return-Path: message header with the - envelope sender address, prepends a > character to lines - beginning with "From ", and appends an empty line. + address, prepends an X-Original-To: header with the recip- + ient address as given to Postfix, prepends a Return-Path: + message header with the envelope sender address, prepends + a > character to lines beginning with "From ", and appends + an empty line. The mailbox is locked for exclusive access while delivery is in progress. In case of problems, an attempt is made to diff --git a/postfix/man/man1/postalias.1 b/postfix/man/man1/postalias.1 index e7594fe49..e7fc82ef0 100644 --- a/postfix/man/man1/postalias.1 +++ b/postfix/man/man1/postalias.1 @@ -49,7 +49,7 @@ a map. .IP \fB-i\fR Incremental mode. Read entries from standard input and do not truncate an existing database. By default, \fBpostalias\fR creates -a new database from the entries in \fBfile_name\fR. +a new database from the entries in \fIfile_name\fR. .IP \fB-n\fR Don't include the terminating null character that terminates lookup keys and values. By default, Postfix does whatever is the default for @@ -101,7 +101,7 @@ parameter. The default value for this parameter depends on the host environment. .RE .IP \fIfile_name\fR -The name of the alias database source file when rebuilding a database. +The name of the alias database source file when creating a database. .SH DIAGNOSTICS .ad .fi @@ -129,8 +129,8 @@ Enable verbose logging for debugging purposes. The following \fBmain.cf\fR parameters are especially relevant to this program. See the Postfix \fBmain.cf\fR file for syntax details and for default values. -.IP \fdefault_Bdatabase_type\fR -Default alias database type. On many UNIX systems, the default type +.IP \fBdefault_database_type\fR +Default database type. On many UNIX systems, the default type is either \fBdbm\fR or \fBhash\fR. .IP \fBberkeley_db_create_buffer_size\fR Amount of buffer memory to be used when creating a Berkeley DB diff --git a/postfix/man/man1/postconf.1 b/postfix/man/man1/postconf.1 index 8c0a4e339..74d20a49a 100644 --- a/postfix/man/man1/postconf.1 +++ b/postfix/man/man1/postconf.1 @@ -18,7 +18,7 @@ Postfix configuration utility .ad .fi The \fBpostconf\fR command prints the actual value of -\fIparameter\fR (all known parameters by default), one +\fIparameter\fR (all known parameters by default) one parameter per line, changes its value, or prints other information about the Postfix mail system. diff --git a/postfix/man/man1/postfix.1 b/postfix/man/man1/postfix.1 index 7e4ce0b95..9401d1273 100644 --- a/postfix/man/man1/postfix.1 +++ b/postfix/man/man1/postfix.1 @@ -9,8 +9,7 @@ Postfix control program .na .nf .fi -\fBpostfix\fR [\fB-c \fIconfig_dir\fR] [\fB-D\fR] [\fB-v\fR] -\fIcommand\fR +\fBpostfix\fR [\fB-Dv\fR] [\fB-c \fIconfig_dir\fR] \fIcommand\fR .SH DESCRIPTION .ad .fi @@ -67,21 +66,17 @@ options make the software increasingly verbose. .nf .ad .fi -The \fBpostfix\fR command sets the following environment -variables: +The \fBpostfix\fR command exports the following environment +variables before executing the \fBpostfix-script\fR file: .IP \fBMAIL_CONFIG\fR -Directory with Postfix configuration files. +This is set when the -c command-line option is present. .IP \fBMAIL_VERBOSE\fR This is set when the -v command-line option is present. .IP \fBMAIL_DEBUG\fR This is set when the -D command-line option is present. -.SH CONFIGURATION PARAMETERS -.na -.nf -.ad -.fi -The following \fBmain.cf\fR configuration parameters are made -available as process environment variables with the same names: +.PP +The following \fBmain.cf\fR configuration parameters are +exported as environment variables with the same names: .IP \fBcommand_directory\fR Directory with Postfix administrative commands. .IP \fBdaemon_directory\fR @@ -98,11 +93,11 @@ The owner of Postfix queue files and of most Postfix processes. .IP \fBsetgid_group\fR The group for mail submission and queue management commands. .IP \fBsendmail_path -The full pathname for the Postfix sendmail command. +The full pathname for the Postfix \fBsendmail\fR command. .IP \fBnewaliases_path -The full pathname for the Postfix newaliases command. +The full pathname for the Postfix \fBnewaliases\fR command. .IP \fBmailq_path -The full pathname for the Postfix mailq command. +The full pathname for the Postfix \fBmailq\fR command. .IP \fBmanpage_directory The directory for the Postfix on-line manual pages. .IP \fBsample_directory diff --git a/postfix/man/man1/sendmail.1 b/postfix/man/man1/sendmail.1 index 44a714b47..785ded049 100644 --- a/postfix/man/man1/sendmail.1 +++ b/postfix/man/man1/sendmail.1 @@ -140,8 +140,8 @@ Non-default alias database. Specify \fIpathname\fR or details. .IP "\fB-o7\fR (ignored)" .IP "\fB-o8\fR (ignored)" -The message body type. Currently, Postfix implements -\fBjust-send-eight\fR. +To send 8-bit or binary content, use an appropriate MIME encapsulation +and specify the appropriate \fB-B\fR command-line option. .IP "\fB-oi\fR" When reading a message from standard input, don\'t treat a line with only a \fB.\fR character as the end of input. diff --git a/postfix/man/man5/access.5 b/postfix/man/man5/access.5 index 54d9974da..12528f659 100644 --- a/postfix/man/man5/access.5 +++ b/postfix/man/man5/access.5 @@ -125,7 +125,7 @@ Accept the address etc. that matches the pattern. An all-numerical result is treated as OK. This format is generated by address-based relay authorization schemes. .IP \fBDUNNO\fR -Pretend that the lookup key was not found in this table, to +Pretend that the lookup key was not found in this table. This prevents Postfix from trying substrings of the lookup key (such as a subdomain name, or a network address subnetwork). .IP \fBHOLD\fR diff --git a/postfix/man/man5/canonical.5 b/postfix/man/man5/canonical.5 index 9259187df..2b413caf5 100644 --- a/postfix/man/man5/canonical.5 +++ b/postfix/man/man5/canonical.5 @@ -71,7 +71,7 @@ listed below: \fIuser\fR@\fIdomain\fR is replaced by \fIaddress\fR. This form has the highest precedence. .sp -This form useful to clean up addresses produced by legacy mail systems. +This is useful to clean up addresses produced by legacy mail systems. It can also be used to produce \fIFirstname.Lastname\fR style addresses, but see below for a simpler solution. .IP "\fIuser address\fR" diff --git a/postfix/man/man5/pcre_table.5 b/postfix/man/man5/pcre_table.5 index fbb076617..6293ed4a8 100644 --- a/postfix/man/man5/pcre_table.5 +++ b/postfix/man/man5/pcre_table.5 @@ -57,7 +57,7 @@ Toggles the case sensitivity flag. By default, matching is case insensitive. .IP "\fBm\fR (default: off)" Toggles the PCRE_MULTILINE flag. When this flag is on, the \fB^\fR -and \fb$\fR metacharacters match immediately after and immediately +and \fB$\fR metacharacters match immediately after and immediately before a newline character, respectively, in addition to matching at the start and end of the subject string. .IP "\fBs\fR (default: on)" diff --git a/postfix/man/man5/transport.5 b/postfix/man/man5/transport.5 index c35b35420..f73bbb69d 100644 --- a/postfix/man/man5/transport.5 +++ b/postfix/man/man5/transport.5 @@ -59,6 +59,8 @@ such as \fBsmtp\fR or \fBlocal\fR. The \fInexthop\fR field specifies where and how to deliver mail. More details are given in section "RESULT FORMAT". .SH TABLE LOOKUP +.na +.nf .ad .fi With lookups from indexed files such as DB or DBM, or from networked @@ -84,11 +86,23 @@ Otherwise, a domain name matches itself and its subdomains. Note 1: the special pattern \fB*\fR represents any address (i.e. it functions as the wild-card pattern). -Note 2: the null recipient address is looked up as the local -mailer-daemon address (mailer-daemon@fully-qualified-domain-name). +Note 2: the null recipient address is looked up as +\fB$empty_address_recipient\fR@\fB$myhostname\fR (default: +mailer-daemon@hostname). .SH RESULT FORMAT +.na +.nf .ad .fi +The transport field specifies the name of a mail delivery transport +(the first name of a mail delivery service entry in the Postfix +\fBmaster.cf\fR file). + +The interpretation of the nexthop field is transport +dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a +non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR +in order to disable MX (mail exchanger) DNS lookups. The [] form +can also be used with IP addresses instead of hostnames. A null \fItransport\fR and null \fInexthop\fR result means "do not change": use the delivery transport and nexthop information @@ -99,31 +113,32 @@ resets the nexthop information to the recipient domain. A null \fItransport\fR field with non-null \fInexthop\fR field does not modify the transport information. -.SH TRANSPORT FIELD +.SH DEFAULT DELIVERY METHOD +.na +.nf .ad .fi -The transport field specifies the name of a mail delivery transport -(the first name of a mail delivery service entry in the Postfix -\fBmaster.cf\fR file). - -When a null transport field is specified, Postfix uses one of the -following transports: -.IP \fB$local_transport\fR -The domain matches \fB$mydestination\fR or \fB$inet_interfaces\fR. -.IP \fB$virtual_transport\fR -The domain matches \fB$virtual_mailbox_domains\fR. -.IP \fB$relay_transport\fR -The domain matches \fB$relay_transport\fR. -.IP \fB$default_transport\fR -All other non-local, non-virtual destinations. -.SH NEXTHOP FIELD -.ad -.fi -The interpretation of the nexthop field is transport -dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a -non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR -in order to disable MX (mail exchanger) DNS lookups. The [] form -can also be used with IP addresses instead of hostnames. +When the recipient address or domain does not match a transport +table entry, Postfix uses one of the following delivery methods, +with the recipient domain as the default nexthop. +.IP \(bu +The recipient domain matches \fB$mydestination\fR or +\fB$inet_interfaces\fR. The transport and optional nexthop +are specified with \fB$local_transport\fR. +.IP \(bu +The recipient domain matches \fB$virtual_mailbox_domains\fR. +The transport and optional nexthop are specified with +\fB$virtual_transport\fR. +.IP \(bu +The recipient domain matches \fB$relay_domains\fR. The +transport and optional nexthop are specified with +\fB$relay_transport\fR. This overrides the nexthop information +that is specified with \fB$relayhost\fR. +.IP \(bu +All other destinations. the transport and optional nexthop are +specified with \fB$relay_transport\fR. +This overrides the nexthop information that is specified with +\fB$relayhost\fR. .SH EXAMPLES .na .nf @@ -133,8 +148,7 @@ In order to deliver internal mail directly, while using a mail relay for all other mail, specify a null entry for internal destinations (do not change the delivery transport or the nexthop information) and specify a wildcard for all other -destinations. Note that for this trick to work you should -not specify a \fBrelayhost\fR in the \fBmain.cf\fR file. +destinations. .ti +5 \fB\&my.domain :\fR @@ -219,6 +233,8 @@ The following \fBmain.cf\fR parameters are especially relevant to this topic. See the Postfix \fBmain.cf\fR file for syntax details and for default values. Use the \fBpostfix reload\fR command after a configuration change. +.IP \fBempty_address_recipient\fR +The address that is looked up instead of the null sender address. .IP \fBparent_domain_matches_subdomains\fR List of Postfix features that use \fIdomain.tld\fR patterns to match \fIsub.domain.tld\fR (as opposed to diff --git a/postfix/man/man5/virtual.5 b/postfix/man/man5/virtual.5 index 98d61140b..a9b493d3d 100644 --- a/postfix/man/man5/virtual.5 +++ b/postfix/man/man5/virtual.5 @@ -22,7 +22,7 @@ is recursive, and is done by the Postfix \fBcleanup\fR(8) daemon. The main applications of virtual aliasing are: .IP \(bu -To redirect mail from one address to one or more other addresses. +To redirect mail for one address to one or more addresses. .IP \(bu To simulate virtual domains where all virtual addresses are aliased to non-virtual addresses. @@ -49,6 +49,54 @@ or SQL, the same lookups are done as for ordinary indexed files. Alternatively, the table can be provided as a regular-expression map where patterns are given as regular expressions. In that case, the lookups are done in a slightly different way as described below. +.SH TABLE FORMAT +.na +.nf +.ad +.fi +The format of the virtual table is as follows, mappings being +tried in the order as listed in this manual page: +.IP "\fIpattern result\fR" +When \fIpattern\fR matches a mail address, replace it by the +corresponding \fIresult\fR. +.IP "blank lines and comments" +Empty lines and whitespace-only lines are ignored, as +are lines whose first non-whitespace character is a `#'. +.IP "multi-line text" +A logical line starts with non-whitespace text. A line that +starts with whitespace continues a logical line. +.PP +With lookups from indexed files such as DB or DBM, or from networked +tables such as NIS, LDAP or SQL, patterns are tried in the order as +listed below: +.IP "\fIuser\fR@\fIdomain address, address, ...\fR" +Mail for \fIuser\fR@\fIdomain\fR is redirected to \fIaddress\fR. +This form has the highest precedence. +.IP "\fIuser address, address, ...\fR" +Mail for \fIuser\fR@\fIsite\fR is redirected to \fIaddress\fR when +\fIsite\fR is equal to $\fBmyorigin\fR, when \fIsite\fR is listed in +$\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR. +.sp +This functionality overlaps with functionality of the local +\fIaliases\fR(5) database. The difference is that \fBvirtual\fR +mapping can be applied to non-local addresses. +.IP "@\fIdomain address, address, ...\fR" +Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR. +This form has the lowest precedence. +.PP +In all the above forms, when \fIaddress\fR has the form +@\fIotherdomain\fR, the result is the same user in \fIotherdomain\fR. +This works for the first address in the expansion only. +.SH ADDRESS EXTENSION +.na +.nf +.fi +.ad +When a mail address localpart contains the optional recipient delimiter +(e.g., \fIuser+foo\fR@\fIdomain\fR), the lookup order becomes: +\fIuser+foo\fR@\fIdomain\fR, \fIuser\fR@\fIdomain\fR, \fIuser+foo\fR, +\fIuser\fR, and @\fIdomain\fR. An unmatched address extension +(\fI+foo\fR) is propagated to the result of table lookup. .SH SIMULATED VIRTUAL DOMAINS .na .nf @@ -108,54 +156,6 @@ the \fBvirtual_alias_maps\fR table, you may also specify it via the \fBmain.cf virtual_alias_domains\fR configuration parameter. This latter parameter uses the same syntax as the \fBmain.cf mydestination\fR configuration parameter. -.SH TABLE FORMAT -.na -.nf -.ad -.fi -The format of the virtual table is as follows, mappings being -tried in the order as listed in this manual page: -.IP "\fIpattern result\fR" -When \fIpattern\fR matches a mail address, replace it by the -corresponding \fIresult\fR. -.IP "blank lines and comments" -Empty lines and whitespace-only lines are ignored, as -are lines whose first non-whitespace character is a `#'. -.IP "multi-line text" -A logical line starts with non-whitespace text. A line that -starts with whitespace continues a logical line. -.PP -With lookups from indexed files such as DB or DBM, or from networked -tables such as NIS, LDAP or SQL, patterns are tried in the order as -listed below: -.IP "\fIuser\fR@\fIdomain address, address, ...\fR" -Mail for \fIuser\fR@\fIdomain\fR is redirected to \fIaddress\fR. -This form has the highest precedence. -.IP "\fIuser address, address, ...\fR" -Mail for \fIuser\fR@\fIsite\fR is redirected to \fIaddress\fR when -\fIsite\fR is equal to $\fBmyorigin\fR, when \fIsite\fR is listed in -$\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR. -.sp -This functionality overlaps with functionality of the local -\fIaliases\fR(5) database. The difference is that \fBvirtual\fR -mapping can be applied to non-local addresses. -.IP "@\fIdomain address, address, ...\fR" -Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR. -This form has the lowest precedence. -.PP -In all the above forms, when \fIaddress\fR has the form -@\fIotherdomain\fR, the result is the same user in \fIotherdomain\fR. -This works for the first address in the expansion only. -.SH ADDRESS EXTENSION -.na -.nf -.fi -.ad -When a mail address localpart contains the optional recipient delimiter -(e.g., \fIuser+foo\fR@\fIdomain\fR), the lookup order becomes: -\fIuser+foo\fR@\fIdomain\fR, \fIuser\fR@\fIdomain\fR, \fIuser+foo\fR, -\fIuser\fR, and @\fIdomain\fR. An unmatched address extension -(\fI+foo\fR) is propagated to the result of table lookup. .SH REGULAR EXPRESSION TABLES .na .nf diff --git a/postfix/man/man8/cleanup.8 b/postfix/man/man8/cleanup.8 index 6f5e8f747..0e6e0cdc2 100644 --- a/postfix/man/man8/cleanup.8 +++ b/postfix/man/man8/cleanup.8 @@ -164,9 +164,11 @@ Address mapping lookup table for envelope recipient addresses. .ad .fi .IP \fBduplicate_filter_limit\fR -Limit the number of envelope recipients that are remembered. +Limits the number of envelope recipients that are remembered. +.IP \fBheader_address_token_limit\fR +Limits the number of address tokens used to process a message header. .IP \fBheader_size_limit\fR -Limit the amount of memory in bytes used to process a message header. +Limits the amount of memory in bytes used to process a message header. .IP \fBin_flow_delay\fR Amount of time to pause before accepting a message, when the message arrival rate exceeds the message delivery rate. diff --git a/postfix/man/man8/local.8 b/postfix/man/man8/local.8 index 9f85c78d0..4fc4cc8ac 100644 --- a/postfix/man/man8/local.8 +++ b/postfix/man/man8/local.8 @@ -185,8 +185,9 @@ The entire recipient address. The entire sender address. .PP The \fBPATH\fR environment variable is always reset to a -system-dependent default path, and the \fBTZ\fR (time zone) -environment variable is always passed on without change. +system-dependent default path, and environment variables +whose names are blessed by the \fBexport_environment\fR +configureation parameter are exported unchanged. The current working directory is the mail queue directory. @@ -228,7 +229,10 @@ is made to truncate a regular file to its original length. In the case of \fBmaildir\fR delivery, the local daemon prepends an optional -\fBDelivered-To:\fR header with the envelope recipient address. +\fBDelivered-To:\fR header with the envelope recipient address, and +prepends an +\fBX-Original-To:\fR header with the recipient address as given to +Postfix. The envelope sender address is available in the \fBReturn-Path:\fR header. .SH ADDRESS EXTENSION diff --git a/postfix/man/man8/master.8 b/postfix/man/man8/master.8 index b1379e199..ced98fe7c 100644 --- a/postfix/man/man8/master.8 +++ b/postfix/man/man8/master.8 @@ -9,8 +9,8 @@ Postfix master process .na .nf .fi -\fBmaster\fR [\fB-c \fIconfig_dir\fR] [\fB-e \fIexit_time\fR] -[\fB-D\fR] [\fB-t\fR] [\fB-v\fR] +\fBmaster\fR [\fB-Dtv\fR] [\fB-c \fIconfig_dir\fR] +[\fB-e \fIexit_time\fR] .SH DESCRIPTION .ad .fi diff --git a/postfix/man/man8/pickup.8 b/postfix/man/man8/pickup.8 index bcc1b43cd..199e03055 100644 --- a/postfix/man/man8/pickup.8 +++ b/postfix/man/man8/pickup.8 @@ -29,13 +29,12 @@ None. The \fBpickup\fR daemon does not interact with the outside world. .nf .ad .fi -The \fBpickup\fR daemon runs with superuser privileges so that it -1) can open a queue file with the rights of the submitting user -and 2) can access the Postfix private IPC channels. -On the positive side, the program can run chrooted, opens no files -for writing, is careful about what files it opens for reading, and -does not actually touch any data that is sent to its public service -endpoint. +The \fBpickup\fR daemon is moderately security sensitive. It runs +with fixed low privilege and can run in a chrooted environment. +However, the program reads files from potentially hostile users. +The \fBpickup\fR daemon opens no files for writing, is careful about +what files it opens for reading, and does not actually touch any data +that is sent to its public service endpoint. .SH DIAGNOSTICS .ad .fi @@ -67,8 +66,6 @@ a Postfix transport table. .fi .IP \fBalways_bcc\fR Address to send a copy of each message that enters the system. -.IP \fBmail_owner\fR -The process privileges used while not opening a \fBmaildrop\fR file. .IP \fBqueue_directory\fR Top-level directory of the Postfix queue. .SH SEE ALSO diff --git a/postfix/man/man8/qmqpd.8 b/postfix/man/man8/qmqpd.8 index f2b0c31a4..b608249fa 100644 --- a/postfix/man/man8/qmqpd.8 +++ b/postfix/man/man8/qmqpd.8 @@ -95,7 +95,7 @@ storage for sender and recipient address information. .SH Tarpitting .ad .fi -.IP \fBqmqpd_error_sleep_time\fR +.IP \fBqmqpd_error_delay\fR Time to wait in seconds before informing the client of a problem. This slows down run-away errors. .SH SEE ALSO diff --git a/postfix/man/man8/trivial-rewrite.8 b/postfix/man/man8/trivial-rewrite.8 index b299a9c96..ce170c760 100644 --- a/postfix/man/man8/trivial-rewrite.8 +++ b/postfix/man/man8/trivial-rewrite.8 @@ -28,7 +28,7 @@ Resolve an address to a (\fItransport\fR, \fInexthop\fR, The delivery agent to use. This is the first field of an entry in the \fBmaster.cf\fR file. .IP \fInexthop\fR -The host to send to. For local delivery this is an empty string. +The host to send to and optional delivery method information. .IP \fIrecipient\fR The envelope recipient address that is passed on to \fInexthop\fR. .PP @@ -72,18 +72,21 @@ a configuration change. .SH Miscellaneous .ad .fi +.IP \fBempty_address_recipient\fR +The recipient that is substituted for the null address. .IP \fBinet_interfaces\fR The network interfaces that this mail system receives mail on. This information is used to determine if \fIuser\fR@[\fInet.work.addr.ess\fR] is local or remote. +Mail for local users is given to the \fB$local_transport\fR. .IP \fBmydestination\fR List of domains that are given to the \fB$local_transport\fR. -.IP \fBvirtual_alias_domains\fT +.IP \fBvirtual_alias_domains\fR List of simulated virtual domains (domains with all recipients aliased to some other local or remote domain). -.IP \fBvirtual_mailbox_domains\fT +.IP \fBvirtual_mailbox_domains\fR List of domains that are given to the \fB$virtual_transport\fR. -.IP \fBrelay_domains\fT +.IP \fBrelay_domains\fR List of domains that are given to the \fB$relay_transport\fR. .IP \fBresolve_unquoted_address\fR When resolving an address, do not quote the address localpart as diff --git a/postfix/man/man8/virtual.8 b/postfix/man/man8/virtual.8 index 802764920..f74a6d228 100644 --- a/postfix/man/man8/virtual.8 +++ b/postfix/man/man8/virtual.8 @@ -49,7 +49,10 @@ messages in one textfile. The \fBvirtual\fR delivery agent prepends a "\fBFrom \fIsender time_stamp\fR" envelope header to each message, prepends a \fBDelivered-To:\fR message header with the envelope recipient -address, prepends a \fBReturn-Path:\fR message header with the +address, +prepends an \fBX-Original-To:\fR header with the recipient address as +given to Postfix, +prepends a \fBReturn-Path:\fR message header with the envelope sender address, prepends a \fB>\fR character to lines beginning with "\fBFrom \fR", and appends an empty line. diff --git a/postfix/proto/access b/postfix/proto/access index d9e0d3680..eef4a4bf1 100644 --- a/postfix/proto/access +++ b/postfix/proto/access @@ -109,7 +109,7 @@ # An all-numerical result is treated as OK. This format is # generated by address-based relay authorization schemes. # .IP \fBDUNNO\fR -# Pretend that the lookup key was not found in this table, to +# Pretend that the lookup key was not found in this table. This # prevents Postfix from trying substrings of the lookup key # (such as a subdomain name, or a network address subnetwork). # .IP \fBHOLD\fR diff --git a/postfix/proto/canonical b/postfix/proto/canonical index afc29f3cb..3c0e8427a 100644 --- a/postfix/proto/canonical +++ b/postfix/proto/canonical @@ -63,7 +63,7 @@ # \fIuser\fR@\fIdomain\fR is replaced by \fIaddress\fR. This form # has the highest precedence. # .sp -# This form useful to clean up addresses produced by legacy mail systems. +# This is useful to clean up addresses produced by legacy mail systems. # It can also be used to produce \fIFirstname.Lastname\fR style # addresses, but see below for a simpler solution. # .IP "\fIuser address\fR" diff --git a/postfix/proto/pcre_table b/postfix/proto/pcre_table index 97c0f4e85..c8512c70c 100644 --- a/postfix/proto/pcre_table +++ b/postfix/proto/pcre_table @@ -51,7 +51,7 @@ # insensitive. # .IP "\fBm\fR (default: off)" # Toggles the PCRE_MULTILINE flag. When this flag is on, the \fB^\fR -# and \fb$\fR metacharacters match immediately after and immediately +# and \fB$\fR metacharacters match immediately after and immediately # before a newline character, respectively, in addition to # matching at the start and end of the subject string. # .IP "\fBs\fR (default: on)" diff --git a/postfix/proto/transport b/postfix/proto/transport index c8634c45b..95cf09aa1 100644 --- a/postfix/proto/transport +++ b/postfix/proto/transport @@ -6,9 +6,9 @@ # SYNOPSIS # \fBpostmap /etc/postfix/transport\fR # -# \fBpostmap -q "\fIstring\fB" /etc/postfix/transport\fR +# \fBpostmap -q "\fIstring\fB" /etc/postfix/transport\fR # -# \fBpostmap -q - /etc/postfix/transport <\fIinputfile\fR +# \fBpostmap -q - /etc/postfix/transport <\fIinputfile\fR # DESCRIPTION # The optional \fBtransport\fR table specifies a mapping from email # addresses to message delivery transports and/or relay hosts. The @@ -50,7 +50,7 @@ # such as \fBsmtp\fR or \fBlocal\fR. The \fInexthop\fR field # specifies where and how to deliver mail. More details are given # in section "RESULT FORMAT". -# .SH TABLE LOOKUP +# TABLE LOOKUP # .ad # .fi # With lookups from indexed files such as DB or DBM, or from networked @@ -76,11 +76,21 @@ # Note 1: the special pattern \fB*\fR represents any address (i.e. it # functions as the wild-card pattern). # -# Note 2: the null recipient address is looked up as the local -# mailer-daemon address (mailer-daemon@fully-qualified-domain-name). -# .SH RESULT FORMAT +# Note 2: the null recipient address is looked up as +# \fB$empty_address_recipient\fR@\fB$myhostname\fR (default: +# mailer-daemon@hostname). +# RESULT FORMAT # .ad # .fi +# The transport field specifies the name of a mail delivery transport +# (the first name of a mail delivery service entry in the Postfix +# \fBmaster.cf\fR file). +# +# The interpretation of the nexthop field is transport +# dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a +# non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR +# in order to disable MX (mail exchanger) DNS lookups. The [] form +# can also be used with IP addresses instead of hostnames. # # A null \fItransport\fR and null \fInexthop\fR result means "do # not change": use the delivery transport and nexthop information @@ -91,31 +101,30 @@ # # A null \fItransport\fR field with non-null \fInexthop\fR field # does not modify the transport information. -# .SH TRANSPORT FIELD +# DEFAULT DELIVERY METHOD # .ad # .fi -# The transport field specifies the name of a mail delivery transport -# (the first name of a mail delivery service entry in the Postfix -# \fBmaster.cf\fR file). -# -# When a null transport field is specified, Postfix uses one of the -# following transports: -# .IP \fB$local_transport\fR -# The domain matches \fB$mydestination\fR or \fB$inet_interfaces\fR. -# .IP \fB$virtual_transport\fR -# The domain matches \fB$virtual_mailbox_domains\fR. -# .IP \fB$relay_transport\fR -# The domain matches \fB$relay_transport\fR. -# .IP \fB$default_transport\fR -# All other non-local, non-virtual destinations. -# .SH NEXTHOP FIELD -# .ad -# .fi -# The interpretation of the nexthop field is transport -# dependent. In the case of SMTP, specify \fIhost\fR:\fIservice\fR for a -# non-default server port, and use [\fIhost\fR] or [\fIhost\fR]:\fIport\fR -# in order to disable MX (mail exchanger) DNS lookups. The [] form -# can also be used with IP addresses instead of hostnames. +# When the recipient address or domain does not match a transport +# table entry, Postfix uses one of the following delivery methods, +# with the recipient domain as the default nexthop. +# .IP \(bu +# The recipient domain matches \fB$mydestination\fR or +# \fB$inet_interfaces\fR. The transport and optional nexthop +# are specified with \fB$local_transport\fR. +# .IP \(bu +# The recipient domain matches \fB$virtual_mailbox_domains\fR. +# The transport and optional nexthop are specified with +# \fB$virtual_transport\fR. +# .IP \(bu +# The recipient domain matches \fB$relay_domains\fR. The +# transport and optional nexthop are specified with +# \fB$relay_transport\fR. This overrides the nexthop information +# that is specified with \fB$relayhost\fR. +# .IP \(bu +# All other destinations. the transport and optional nexthop are +# specified with \fB$relay_transport\fR. +# This overrides the nexthop information that is specified with +# \fB$relayhost\fR. # EXAMPLES # .ad # .fi @@ -123,8 +132,7 @@ # mail relay for all other mail, specify a null entry for # internal destinations (do not change the delivery transport or # the nexthop information) and specify a wildcard for all other -# destinations. Note that for this trick to work you should -# not specify a \fBrelayhost\fR in the \fBmain.cf\fR file. +# destinations. # # .ti +5 # \fB\&my.domain :\fR @@ -205,6 +213,8 @@ # this topic. See the Postfix \fBmain.cf\fR file for syntax details # and for default values. Use the \fBpostfix reload\fR command after # a configuration change. +# .IP \fBempty_address_recipient\fR +# The address that is looked up instead of the null sender address. # .IP \fBparent_domain_matches_subdomains\fR # List of Postfix features that use \fIdomain.tld\fR patterns # to match \fIsub.domain.tld\fR (as opposed to diff --git a/postfix/proto/virtual b/postfix/proto/virtual index 0b5eaf374..f82d18740 100644 --- a/postfix/proto/virtual +++ b/postfix/proto/virtual @@ -16,7 +16,7 @@ # # The main applications of virtual aliasing are: # .IP \(bu -# To redirect mail from one address to one or more other addresses. +# To redirect mail for one address to one or more addresses. # .IP \(bu # To simulate virtual domains where all virtual addresses are aliased # to non-virtual addresses. @@ -43,6 +43,50 @@ # Alternatively, the table can be provided as a regular-expression # map where patterns are given as regular expressions. In that case, # the lookups are done in a slightly different way as described below. +# TABLE FORMAT +# .ad +# .fi +# The format of the virtual table is as follows, mappings being +# tried in the order as listed in this manual page: +# .IP "\fIpattern result\fR" +# When \fIpattern\fR matches a mail address, replace it by the +# corresponding \fIresult\fR. +# .IP "blank lines and comments" +# Empty lines and whitespace-only lines are ignored, as +# are lines whose first non-whitespace character is a `#'. +# .IP "multi-line text" +# A logical line starts with non-whitespace text. A line that +# starts with whitespace continues a logical line. +# .PP +# With lookups from indexed files such as DB or DBM, or from networked +# tables such as NIS, LDAP or SQL, patterns are tried in the order as +# listed below: +# .IP "\fIuser\fR@\fIdomain address, address, ...\fR" +# Mail for \fIuser\fR@\fIdomain\fR is redirected to \fIaddress\fR. +# This form has the highest precedence. +# .IP "\fIuser address, address, ...\fR" +# Mail for \fIuser\fR@\fIsite\fR is redirected to \fIaddress\fR when +# \fIsite\fR is equal to $\fBmyorigin\fR, when \fIsite\fR is listed in +# $\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR. +# .sp +# This functionality overlaps with functionality of the local +# \fIaliases\fR(5) database. The difference is that \fBvirtual\fR +# mapping can be applied to non-local addresses. +# .IP "@\fIdomain address, address, ...\fR" +# Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR. +# This form has the lowest precedence. +# .PP +# In all the above forms, when \fIaddress\fR has the form +# @\fIotherdomain\fR, the result is the same user in \fIotherdomain\fR. +# This works for the first address in the expansion only. +# ADDRESS EXTENSION +# .fi +# .ad +# When a mail address localpart contains the optional recipient delimiter +# (e.g., \fIuser+foo\fR@\fIdomain\fR), the lookup order becomes: +# \fIuser+foo\fR@\fIdomain\fR, \fIuser\fR@\fIdomain\fR, \fIuser+foo\fR, +# \fIuser\fR, and @\fIdomain\fR. An unmatched address extension +# (\fI+foo\fR) is propagated to the result of table lookup. # SIMULATED VIRTUAL DOMAINS # .ad # .fi @@ -100,50 +144,6 @@ # the \fBmain.cf virtual_alias_domains\fR configuration parameter. # This latter parameter uses the same syntax as the \fBmain.cf # mydestination\fR configuration parameter. -# TABLE FORMAT -# .ad -# .fi -# The format of the virtual table is as follows, mappings being -# tried in the order as listed in this manual page: -# .IP "\fIpattern result\fR" -# When \fIpattern\fR matches a mail address, replace it by the -# corresponding \fIresult\fR. -# .IP "blank lines and comments" -# Empty lines and whitespace-only lines are ignored, as -# are lines whose first non-whitespace character is a `#'. -# .IP "multi-line text" -# A logical line starts with non-whitespace text. A line that -# starts with whitespace continues a logical line. -# .PP -# With lookups from indexed files such as DB or DBM, or from networked -# tables such as NIS, LDAP or SQL, patterns are tried in the order as -# listed below: -# .IP "\fIuser\fR@\fIdomain address, address, ...\fR" -# Mail for \fIuser\fR@\fIdomain\fR is redirected to \fIaddress\fR. -# This form has the highest precedence. -# .IP "\fIuser address, address, ...\fR" -# Mail for \fIuser\fR@\fIsite\fR is redirected to \fIaddress\fR when -# \fIsite\fR is equal to $\fBmyorigin\fR, when \fIsite\fR is listed in -# $\fRmydestination\fR, or when it is listed in $\fIinet_interfaces\fR. -# .sp -# This functionality overlaps with functionality of the local -# \fIaliases\fR(5) database. The difference is that \fBvirtual\fR -# mapping can be applied to non-local addresses. -# .IP "@\fIdomain address, address, ...\fR" -# Mail for any user in \fIdomain\fR is redirected to \fIaddress\fR. -# This form has the lowest precedence. -# .PP -# In all the above forms, when \fIaddress\fR has the form -# @\fIotherdomain\fR, the result is the same user in \fIotherdomain\fR. -# This works for the first address in the expansion only. -# ADDRESS EXTENSION -# .fi -# .ad -# When a mail address localpart contains the optional recipient delimiter -# (e.g., \fIuser+foo\fR@\fIdomain\fR), the lookup order becomes: -# \fIuser+foo\fR@\fIdomain\fR, \fIuser\fR@\fIdomain\fR, \fIuser+foo\fR, -# \fIuser\fR, and @\fIdomain\fR. An unmatched address extension -# (\fI+foo\fR) is propagated to the result of table lookup. # REGULAR EXPRESSION TABLES # .ad # .fi diff --git a/postfix/src/cleanup/cleanup.c b/postfix/src/cleanup/cleanup.c index 1dd7f9881..7207298e7 100644 --- a/postfix/src/cleanup/cleanup.c +++ b/postfix/src/cleanup/cleanup.c @@ -150,9 +150,11 @@ /* .ad /* .fi /* .IP \fBduplicate_filter_limit\fR -/* Limit the number of envelope recipients that are remembered. +/* Limits the number of envelope recipients that are remembered. +/* .IP \fBheader_address_token_limit\fR +/* Limits the number of address tokens used to process a message header. /* .IP \fBheader_size_limit\fR -/* Limit the amount of memory in bytes used to process a message header. +/* Limits the amount of memory in bytes used to process a message header. /* .IP \fBin_flow_delay\fR /* Amount of time to pause before accepting a message, when the /* message arrival rate exceeds the message delivery rate. diff --git a/postfix/src/global/Makefile.in b/postfix/src/global/Makefile.in index 5a5a430eb..b9c37aa01 100644 --- a/postfix/src/global/Makefile.in +++ b/postfix/src/global/Makefile.in @@ -306,8 +306,7 @@ rewrite_clnt_test: rewrite_clnt rewrite_clnt.in rewrite_clnt.ref diff - rewrite_clnt.tmp rm -f rewrite_clnt.tmp -# Requires: Postfix, root, myorigin=$myhostname, relayhost=$mydomain, -# no transport map +# Requires: Postfix, root, relayhost=$mydomain, no transport map resolve_clnt_test: resolve_clnt resolve_clnt.in resolve_clnt.ref sed -e "s/MYDOMAIN/`postconf -h mydomain`/g" \ diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 3dc150f1e..8e65ad4e8 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change the patchlevel and the release date. Snapshots change the * release date only, unless they include the same bugfix as a patch release. */ -#define MAIL_RELEASE_DATE "20021217" +#define MAIL_RELEASE_DATE "20021218" #define VAR_MAIL_VERSION "mail_version" #define DEF_MAIL_VERSION "1.1.12-" MAIL_RELEASE_DATE diff --git a/postfix/src/local/local.c b/postfix/src/local/local.c index ac6c0ca70..be2a07aec 100644 --- a/postfix/src/local/local.c +++ b/postfix/src/local/local.c @@ -171,8 +171,9 @@ /* The entire sender address. /* .PP /* The \fBPATH\fR environment variable is always reset to a -/* system-dependent default path, and the \fBTZ\fR (time zone) -/* environment variable is always passed on without change. +/* system-dependent default path, and environment variables +/* whose names are blessed by the \fBexport_environment\fR +/* configureation parameter are exported unchanged. /* /* The current working directory is the mail queue directory. /* @@ -212,7 +213,10 @@ /* /* In the case of \fBmaildir\fR delivery, the local daemon prepends /* an optional -/* \fBDelivered-To:\fR header with the envelope recipient address. +/* \fBDelivered-To:\fR header with the envelope recipient address, and +/* prepends an +/* \fBX-Original-To:\fR header with the recipient address as given to +/* Postfix. /* The envelope sender address is available in the \fBReturn-Path:\fR /* header. /* ADDRESS EXTENSION diff --git a/postfix/src/master/master.c b/postfix/src/master/master.c index 9071f34e7..e4b29c6e9 100644 --- a/postfix/src/master/master.c +++ b/postfix/src/master/master.c @@ -5,8 +5,8 @@ /* Postfix master process /* SYNOPSIS /* .fi -/* \fBmaster\fR [\fB-c \fIconfig_dir\fR] [\fB-e \fIexit_time\fR] -/* [\fB-D\fR] [\fB-t\fR] [\fB-v\fR] +/* \fBmaster\fR [\fB-Dtv\fR] [\fB-c \fIconfig_dir\fR] +/* [\fB-e \fIexit_time\fR] /* DESCRIPTION /* The \fBmaster\fR daemon is the resident process that runs Postfix /* daemons on demand: daemons to send or receive messages via the diff --git a/postfix/src/pickup/pickup.c b/postfix/src/pickup/pickup.c index 40e1ab714..b8f697b28 100644 --- a/postfix/src/pickup/pickup.c +++ b/postfix/src/pickup/pickup.c @@ -19,13 +19,12 @@ /* SECURITY /* .ad /* .fi -/* The \fBpickup\fR daemon runs with superuser privileges so that it -/* 1) can open a queue file with the rights of the submitting user -/* and 2) can access the Postfix private IPC channels. -/* On the positive side, the program can run chrooted, opens no files -/* for writing, is careful about what files it opens for reading, and -/* does not actually touch any data that is sent to its public service -/* endpoint. +/* The \fBpickup\fR daemon is moderately security sensitive. It runs +/* with fixed low privilege and can run in a chrooted environment. +/* However, the program reads files from potentially hostile users. +/* The \fBpickup\fR daemon opens no files for writing, is careful about +/* what files it opens for reading, and does not actually touch any data +/* that is sent to its public service endpoint. /* DIAGNOSTICS /* Problems and transactions are logged to \fBsyslogd\fR(8). /* BUGS @@ -51,8 +50,6 @@ /* .fi /* .IP \fBalways_bcc\fR /* Address to send a copy of each message that enters the system. -/* .IP \fBmail_owner\fR -/* The process privileges used while not opening a \fBmaildrop\fR file. /* .IP \fBqueue_directory\fR /* Top-level directory of the Postfix queue. /* SEE ALSO diff --git a/postfix/src/postalias/postalias.c b/postfix/src/postalias/postalias.c index 72c2588b5..cadb61a7f 100644 --- a/postfix/src/postalias/postalias.c +++ b/postfix/src/postalias/postalias.c @@ -43,7 +43,7 @@ /* .IP \fB-i\fR /* Incremental mode. Read entries from standard input and do not /* truncate an existing database. By default, \fBpostalias\fR creates -/* a new database from the entries in \fBfile_name\fR. +/* a new database from the entries in \fIfile_name\fR. /* .IP \fB-n\fR /* Don't include the terminating null character that terminates lookup /* keys and values. By default, Postfix does whatever is the default for @@ -95,7 +95,7 @@ /* The default value for this parameter depends on the host environment. /* .RE /* .IP \fIfile_name\fR -/* The name of the alias database source file when rebuilding a database. +/* The name of the alias database source file when creating a database. /* DIAGNOSTICS /* Problems are logged to the standard error stream. No output means /* no problems were detected. Duplicate entries are skipped and are @@ -117,8 +117,8 @@ /* The following \fBmain.cf\fR parameters are especially relevant to /* this program. See the Postfix \fBmain.cf\fR file for syntax details /* and for default values. -/* .IP \fdefault_Bdatabase_type\fR -/* Default alias database type. On many UNIX systems, the default type +/* .IP \fBdefault_database_type\fR +/* Default database type. On many UNIX systems, the default type /* is either \fBdbm\fR or \fBhash\fR. /* .IP \fBberkeley_db_create_buffer_size\fR /* Amount of buffer memory to be used when creating a Berkeley DB diff --git a/postfix/src/postconf/postconf.c b/postfix/src/postconf/postconf.c index 6854a57eb..662c66b1d 100644 --- a/postfix/src/postconf/postconf.c +++ b/postfix/src/postconf/postconf.c @@ -12,7 +12,7 @@ /* [\fIparameter=value ...\fR] /* DESCRIPTION /* The \fBpostconf\fR command prints the actual value of -/* \fIparameter\fR (all known parameters by default), one +/* \fIparameter\fR (all known parameters by default) one /* parameter per line, changes its value, or prints other /* information about the Postfix mail system. /* diff --git a/postfix/src/postfix/postfix.c b/postfix/src/postfix/postfix.c index 91ac5be64..5912b7bf0 100644 --- a/postfix/src/postfix/postfix.c +++ b/postfix/src/postfix/postfix.c @@ -5,8 +5,7 @@ /* Postfix control program /* SYNOPSIS /* .fi -/* \fBpostfix\fR [\fB-c \fIconfig_dir\fR] [\fB-D\fR] [\fB-v\fR] -/* \fIcommand\fR +/* \fBpostfix\fR [\fB-Dv\fR] [\fB-c \fIconfig_dir\fR] \fIcommand\fR /* DESCRIPTION /* This command is reserved for the superuser. To submit mail, /* use the Postfix \fBsendmail\fR command. @@ -59,19 +58,17 @@ /* ENVIRONMENT /* .ad /* .fi -/* The \fBpostfix\fR command sets the following environment -/* variables: +/* The \fBpostfix\fR command exports the following environment +/* variables before executing the \fBpostfix-script\fR file: /* .IP \fBMAIL_CONFIG\fR -/* Directory with Postfix configuration files. +/* This is set when the -c command-line option is present. /* .IP \fBMAIL_VERBOSE\fR /* This is set when the -v command-line option is present. /* .IP \fBMAIL_DEBUG\fR /* This is set when the -D command-line option is present. -/* CONFIGURATION PARAMETERS -/* .ad -/* .fi -/* The following \fBmain.cf\fR configuration parameters are made -/* available as process environment variables with the same names: +/* .PP +/* The following \fBmain.cf\fR configuration parameters are +/* exported as environment variables with the same names: /* .IP \fBcommand_directory\fR /* Directory with Postfix administrative commands. /* .IP \fBdaemon_directory\fR @@ -88,11 +85,11 @@ /* .IP \fBsetgid_group\fR /* The group for mail submission and queue management commands. /* .IP \fBsendmail_path -/* The full pathname for the Postfix sendmail command. +/* The full pathname for the Postfix \fBsendmail\fR command. /* .IP \fBnewaliases_path -/* The full pathname for the Postfix newaliases command. +/* The full pathname for the Postfix \fBnewaliases\fR command. /* .IP \fBmailq_path -/* The full pathname for the Postfix mailq command. +/* The full pathname for the Postfix \fBmailq\fR command. /* .IP \fBmanpage_directory /* The directory for the Postfix on-line manual pages. /* .IP \fBsample_directory diff --git a/postfix/src/qmqpd/qmqpd.c b/postfix/src/qmqpd/qmqpd.c index 96dda4d4f..34ebb91c1 100644 --- a/postfix/src/qmqpd/qmqpd.c +++ b/postfix/src/qmqpd/qmqpd.c @@ -81,7 +81,7 @@ /* .SH Tarpitting /* .ad /* .fi -/* .IP \fBqmqpd_error_sleep_time\fR +/* .IP \fBqmqpd_error_delay\fR /* Time to wait in seconds before informing the client of /* a problem. This slows down run-away errors. /* SEE ALSO diff --git a/postfix/src/sendmail/sendmail.c b/postfix/src/sendmail/sendmail.c index f2fa7218d..954bd0717 100644 --- a/postfix/src/sendmail/sendmail.c +++ b/postfix/src/sendmail/sendmail.c @@ -134,8 +134,8 @@ /* details. /* .IP "\fB-o7\fR (ignored)" /* .IP "\fB-o8\fR (ignored)" -/* The message body type. Currently, Postfix implements -/* \fBjust-send-eight\fR. +/* To send 8-bit or binary content, use an appropriate MIME encapsulation +/* and specify the appropriate \fB-B\fR command-line option. /* .IP "\fB-oi\fR" /* When reading a message from standard input, don\'t treat a line /* with only a \fB.\fR character as the end of input. @@ -385,10 +385,12 @@ static void enqueue(const int flags, const char *encoding, const char *sender, * to use login names at all. */ if (sender != 0) { + VSTRING_RESET(buf); + VSTRING_TERMINATE(buf); tree = tok822_parse(sender); for (naddr = 0, tp = tree; tp != 0; tp = tp->next) - if (tp->type == TOK822_ADDR) - naddr++, tok822_internalize(buf, tp->head, TOK822_STR_DEFL); + if (tp->type == TOK822_ADDR && naddr++ == 0) + tok822_internalize(buf, tp->head, TOK822_STR_DEFL); tok822_free_tree(tree); saved_sender = mystrdup(STR(buf)); if (naddr > 1) @@ -431,7 +433,8 @@ static void enqueue(const int flags, const char *encoding, const char *sender, rec_fputs(dst, REC_TYPE_FULL, full_name); rec_fputs(dst, REC_TYPE_FROM, saved_sender); if (verp_delims && *saved_sender == 0) - msg_fatal("-V option requires non-null sender address"); + msg_fatal_status(EX_USAGE, + "-V option requires non-null sender address"); if (encoding) rec_fprintf(dst, REC_TYPE_ATTR, "%s=%s", MAIL_ATTR_ENCODING, encoding); if (verp_delims) @@ -756,7 +759,7 @@ int main(int argc, char **argv) } else if (optarg[0] == 'R') { site_to_flush = optarg + 1; if (*site_to_flush == 0) - msg_fatal("specify: -qRsitename"); + msg_fatal_status(EX_USAGE, "specify: -qRsitename"); } else { msg_fatal_status(EX_USAGE, "-q%c is not implemented", optarg[0]); @@ -784,13 +787,14 @@ int main(int argc, char **argv) * Look for conflicting options and arguments. */ if (extract_recipients && mode != SM_MODE_ENQUEUE) - msg_fatal("-t can be used only in delivery mode"); + msg_fatal_status(EX_USAGE, "-t can be used only in delivery mode"); if (site_to_flush && mode != SM_MODE_ENQUEUE) - msg_fatal("-qR can be used only in delivery mode"); + msg_fatal_status(EX_USAGE, "-qR can be used only in delivery mode"); if (extract_recipients && argv[OPTIND]) - msg_fatal("cannot handle command-line recipients with -t"); + msg_fatal_status(EX_USAGE, + "cannot handle command-line recipients with -t"); /* * Start processing. Everything is delegated to external commands. @@ -805,7 +809,7 @@ int main(int argc, char **argv) exit(0); } if (argv[OPTIND]) - msg_fatal("flush site requires no recipient"); + msg_fatal_status(EX_USAGE, "flush site requires no recipient"); ext_argv = argv_alloc(2); argv_add(ext_argv, "postqueue", "-s", site_to_flush, (char *) 0); for (n = 0; n < msg_verbose; n++) @@ -816,7 +820,8 @@ int main(int argc, char **argv) break; case SM_MODE_MAILQ: if (argv[OPTIND]) - msg_fatal("display queue mode requires no recipient"); + msg_fatal_status(EX_USAGE, + "display queue mode requires no recipient"); ext_argv = argv_alloc(2); argv_add(ext_argv, "postqueue", "-p", (char *) 0); for (n = 0; n < msg_verbose; n++) @@ -826,7 +831,8 @@ int main(int argc, char **argv) /* NOTREACHED */ case SM_MODE_FLUSHQ: if (argv[OPTIND]) - msg_fatal("flush queue mode requires no recipient"); + msg_fatal_status(EX_USAGE, + "flush queue mode requires no recipient"); ext_argv = argv_alloc(2); argv_add(ext_argv, "postqueue", "-f", (char *) 0); for (n = 0; n < msg_verbose; n++) @@ -836,7 +842,7 @@ int main(int argc, char **argv) /* NOTREACHED */ case SM_MODE_DAEMON: if (argv[OPTIND]) - msg_fatal("daemon mode requires no recipient"); + msg_fatal_status(EX_USAGE, "daemon mode requires no recipient"); ext_argv = argv_alloc(2); argv_add(ext_argv, "postfix", (char *) 0); for (n = 0; n < msg_verbose; n++) @@ -849,7 +855,8 @@ int main(int argc, char **argv) break; case SM_MODE_NEWALIAS: if (argv[OPTIND]) - msg_fatal("alias initialization mode requires no recipient"); + msg_fatal_status(EX_USAGE, + "alias initialization mode requires no recipient"); if (*var_alias_db_map == 0) return (0); ext_argv = argv_alloc(2); @@ -862,7 +869,8 @@ int main(int argc, char **argv) /* NOTREACHED */ case SM_MODE_USER: if (argv[OPTIND]) - msg_fatal("stand-alone mode requires no recipient"); + msg_fatal_status(EX_USAGE, + "stand-alone mode requires no recipient"); ext_argv = argv_alloc(2); argv_add(ext_argv, "smtpd", "-S", (char *) 0); for (n = 0; n < msg_verbose; n++) diff --git a/postfix/src/trivial-rewrite/Makefile.in b/postfix/src/trivial-rewrite/Makefile.in index 36d30660e..e8d9bc217 100644 --- a/postfix/src/trivial-rewrite/Makefile.in +++ b/postfix/src/trivial-rewrite/Makefile.in @@ -76,7 +76,6 @@ resolve.o: ../../include/mail_params.h resolve.o: ../../include/mail_proto.h resolve.o: ../../include/iostuff.h resolve.o: ../../include/attr.h -resolve.o: ../../include/mail_addr.h resolve.o: ../../include/rewrite_clnt.h resolve.o: ../../include/resolve_local.h resolve.o: ../../include/mail_conf.h @@ -152,6 +151,7 @@ trivial-rewrite.o: ../../include/mail_conf.h trivial-rewrite.o: ../../include/resolve_clnt.h trivial-rewrite.o: ../../include/rewrite_clnt.h trivial-rewrite.o: ../../include/tok822.h +trivial-rewrite.o: ../../include/mail_addr.h trivial-rewrite.o: ../../include/mail_server.h trivial-rewrite.o: trivial-rewrite.h trivial-rewrite.o: transport.h diff --git a/postfix/src/trivial-rewrite/resolve.c b/postfix/src/trivial-rewrite/resolve.c index 53fdd5b30..abcf25ca8 100644 --- a/postfix/src/trivial-rewrite/resolve.c +++ b/postfix/src/trivial-rewrite/resolve.c @@ -69,7 +69,6 @@ #include #include -#include #include #include #include @@ -320,8 +319,9 @@ void resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop, tok822_free(tree->head); tree->head = 0; } + /* XXX must be localpart only, not user@domain form. */ if (tree->head == 0) - tree->head = tok822_scan(MAIL_ADDR_MAIL_DAEMON, &tree->tail); + tree->head = tok822_scan(var_empty_addr, &tree->tail); /* * We're done. There are no domains left to strip off the address, diff --git a/postfix/src/trivial-rewrite/trivial-rewrite.c b/postfix/src/trivial-rewrite/trivial-rewrite.c index 2a7f0233f..d52e372dd 100644 --- a/postfix/src/trivial-rewrite/trivial-rewrite.c +++ b/postfix/src/trivial-rewrite/trivial-rewrite.c @@ -22,7 +22,7 @@ /* The delivery agent to use. This is the first field of an entry /* in the \fBmaster.cf\fR file. /* .IP \fInexthop\fR -/* The host to send to. For local delivery this is an empty string. +/* The host to send to and optional delivery method information. /* .IP \fIrecipient\fR /* The envelope recipient address that is passed on to \fInexthop\fR. /* .PP @@ -56,18 +56,21 @@ /* .SH Miscellaneous /* .ad /* .fi +/* .IP \fBempty_address_recipient\fR +/* The recipient that is substituted for the null address. /* .IP \fBinet_interfaces\fR /* The network interfaces that this mail system receives mail on. /* This information is used to determine if /* \fIuser\fR@[\fInet.work.addr.ess\fR] is local or remote. +/* Mail for local users is given to the \fB$local_transport\fR. /* .IP \fBmydestination\fR /* List of domains that are given to the \fB$local_transport\fR. -/* .IP \fBvirtual_alias_domains\fT +/* .IP \fBvirtual_alias_domains\fR /* List of simulated virtual domains (domains with all recipients /* aliased to some other local or remote domain). -/* .IP \fBvirtual_mailbox_domains\fT +/* .IP \fBvirtual_mailbox_domains\fR /* List of domains that are given to the \fB$virtual_transport\fR. -/* .IP \fBrelay_domains\fT +/* .IP \fBrelay_domains\fR /* List of domains that are given to the \fB$relay_transport\fR. /* .IP \fBresolve_unquoted_address\fR /* When resolving an address, do not quote the address localpart as @@ -176,6 +179,7 @@ #include #include #include +#include /* Multi server skeleton. */ @@ -206,6 +210,7 @@ char *var_virt_alias_doms; char *var_virt_mailbox_doms; char *var_relocated_maps; char *var_def_transport; +char *var_empty_addr; /* rewrite_service - read request and send reply */ @@ -281,6 +286,7 @@ int main(int argc, char **argv) VAR_VIRT_TRANSPORT, DEF_VIRT_TRANSPORT, &var_virt_transport, 1, 0, VAR_RELAY_TRANSPORT, DEF_RELAY_TRANSPORT, &var_relay_transport, 1, 0, VAR_RELOCATED_MAPS, DEF_RELOCATED_MAPS, &var_relocated_maps, 0, 0, + VAR_EMPTY_ADDR, DEF_EMPTY_ADDR, &var_empty_addr, 1, 0, 0, }; static CONFIG_BOOL_TABLE bool_table[] = { diff --git a/postfix/src/virtual/virtual.c b/postfix/src/virtual/virtual.c index 40767955d..0ae16d2e7 100644 --- a/postfix/src/virtual/virtual.c +++ b/postfix/src/virtual/virtual.c @@ -39,7 +39,10 @@ /* The \fBvirtual\fR delivery agent prepends a "\fBFrom \fIsender /* time_stamp\fR" envelope header to each message, prepends a /* \fBDelivered-To:\fR message header with the envelope recipient -/* address, prepends a \fBReturn-Path:\fR message header with the +/* address, +/* prepends an \fBX-Original-To:\fR header with the recipient address as +/* given to Postfix, +/* prepends a \fBReturn-Path:\fR message header with the /* envelope sender address, prepends a \fB>\fR character to lines /* beginning with "\fBFrom \fR", and appends an empty line. /* @@ -223,7 +226,7 @@ /* The \fBmaildir\fR structure appears in the \fBqmail\fR system /* by Daniel Bernstein. /* SEE ALSO -/* regexp_table(5) POSIX regular expression table format +/* regexp_table(5) POSIX regular expression table format /* pcre_table(5) Perl Compatible Regular Expression table format /* bounce(8) non-delivery status reports /* syslogd(8) system logging