]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.3-20051125
authorWietse Venema <wietse@porcupine.org>
Fri, 25 Nov 2005 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:31:48 +0000 (06:31 +0000)
42 files changed:
postfix/HISTORY
postfix/README_FILES/ADDRESS_VERIFICATION_README
postfix/RELEASE_NOTES
postfix/conf/transport
postfix/html/ADDRESS_VERIFICATION_README.html
postfix/html/postconf.5.html
postfix/html/smtp.8.html
postfix/html/transport.5.html
postfix/html/trivial-rewrite.8.html
postfix/man/man5/postconf.5
postfix/man/man5/transport.5
postfix/man/man8/smtp.8
postfix/man/man8/trivial-rewrite.8
postfix/mantools/postlink
postfix/proto/ADDRESS_VERIFICATION_README.html
postfix/proto/postconf.proto
postfix/proto/transport
postfix/src/bounce/bounce_template.c
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/global/resolve_clnt.c
postfix/src/global/resolve_clnt.h
postfix/src/global/tok822.h
postfix/src/global/tok822_resolve.c
postfix/src/oqmgr/qmgr.c
postfix/src/oqmgr/qmgr.h
postfix/src/oqmgr/qmgr_message.c
postfix/src/qmgr/qmgr.c
postfix/src/qmgr/qmgr.h
postfix/src/qmgr/qmgr_message.c
postfix/src/smtp/smtp.c
postfix/src/smtp/smtp.h
postfix/src/smtp/smtp_connect.c
postfix/src/smtp/smtp_sasl_glue.c
postfix/src/smtp/smtp_sasl_proto.c
postfix/src/smtp/smtp_session.c
postfix/src/trivial-rewrite/Makefile.in
postfix/src/trivial-rewrite/resolve.c
postfix/src/trivial-rewrite/transport.c
postfix/src/trivial-rewrite/transport.h
postfix/src/trivial-rewrite/trivial-rewrite.c
postfix/src/trivial-rewrite/trivial-rewrite.h

index 7583a29b42254f4906ccedb077e7534b443dff27..5b2275f292adc20e12b65c384cdd03f68d3ba4fb 100644 (file)
@@ -11436,25 +11436,26 @@ Apologies for any names omitted.
        sites that used permit_mx_backup to authorize all their
        incoming mail.
 
-20051122
-
-       Feature: sender_relayhost_maps, lookup tables that specify
-       a per-sender override for the relayhost parameter setting.
-       This is an extended version of a patch by Mathias Hasselmann.
-       Files: trivial-rewrite/resolve.c, trivial-rewrite/transport.c,
+20051122-24
+
+       Feature: sender_dependent_relayhost_maps, lookup tables that specify
+       a sender-dependent override for the relayhost parameter
+       setting.  The lookup is done in the trivial-rewrite server,
+       instead of the queue manager where it does not belong.
+       Files: global/resolve_clnt.c, global/tok822_resolve.c,
+       trivial-rewrite/resolve.c, trivial-rewrite/transport.c,
        *qmgr/qmgr_message.c.
 
-       Feature: address_verify_sender_relayhost_maps, for consistency
-       with the other address_verify_mumble parameters.
+       Also: address_verify_sender_dependent_relayhost_maps for completeness.
 
 20051124
 
-       Feature: smtp_per_sender_auth, to enable per-sender SASL
-       authentication. This disables SMTP connection caching to
-       ensure that mail from different senders will be delivered
-       with the appropriate credentials. This is an extended version
-       of a patch by Mathias Hasselmann. Files: smtp/smtp_connect.c,
-       smtp/smtp_sasl_glue.c.
+       Feature: specify "smtp_sender_dependent_authentication = yes" to
+       enable sender-dependent SASL passwords. This disables SMTP
+       connection caching to ensure that mail from different senders
+       is delivered with the appropriate credentials. This is an
+       extended version of a patch by Mathias Hasselmann.  Files:
+       smtp/smtp_connect.c, smtp/smtp_sasl_glue.c.
 
 Open problems:
 
index 1b86e0d56f6d186946f6a69799b0e0466f6f3781..f3339537c49eec29ee98738d6ef1720b0531569c 100644 (file)
@@ -276,7 +276,9 @@ delivers an address verification probe message.
 
 First, the address_verify_relayhost parameter allows you to override the
 relayhost setting, and the address_verify_transport_maps parameter allows you
-to override the transport_maps setting.
+to override the transport_maps setting. The
+address_verify_sender_dependent_relayhost_maps parameter does the same for
+sender-dependent relayhost selection.
 
 Second, each address class is given its own address verification version of the
 message delivery transport, as shown in the table below. Address classes are
index f538c4387a2285987918b91c69b1c84ca2c2adc6..d924ef2d75afab8ad8a23bc4fed92420f9a49892 100644 (file)
@@ -17,23 +17,40 @@ Incompatibility with Postfix 2.1 and earlier
 If you upgrade from Postfix 2.1 or earlier, read RELEASE_NOTES-2.2
 before proceeding.
 
-Major changes with snapshot 20051124
+Incompatibility with snapshot 20051125
+======================================
+
+You MUST stop and restart Postfix, because the address resolver
+protocol has changed. If you don't stop and restart Postfix, you
+will have an endless stream of warning messages with "problem talking
+to service rewrite: Unknown error: 0" and "warning: unexpected
+attribute address in input from rewrite socket".
+
+Major changes with snapshot 20051125
 ====================================
 
 This snapshot adds support for sender-dependent ISP accounts.
 
-- Per-sender relayhost support, with the sender_relayhost_maps
-  feature. The maps are searched with the sender address and with
-  the sender @domain. The result overrides the global relayhost
-  setting, but otherwise has identical behavior.
+- Sender-dependent smarthost lookup tables.  The maps are searched
+  with the sender address and with the sender @domain.  The result
+  overrides the global relayhost setting, but otherwise has identical
+  behavior. See the postconf(5) manual page for more details.
 
-  Example: sender_relayhost_maps = hash:/etc/postfix/sender_relay
+  Example:
+    /etc/postfix/main.cf:
+       sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
 
-- Per-sender SASL authentication support. This disables SMTP
+- Sender-dependent SASL authentication support. This disables SMTP
   connection caching to ensure that mail from different senders
-  will use the correct authentication credentials.
-
-  Example: smtp_per_sender_authentication = yes
+  will use the correct authentication credentials. The SMTP SASL
+  password file is first searched by sender address, and then by
+  the remote domain and hostname as usual.
+
+  Example:
+    /etc/postfix/main.cf:
+       smtp_sasl_auth_enable = yes
+       smtp_sender_dependent_authentication = yes
+       smtp_sasl_password_maps = hash:/etc/postfix/sasl_pass
 
 Incompatibility with snapshot 20051121
 ======================================
index ecbecdb582359ff580729f47eba96f7513f28924..c3718ac081bde7a1cb34b9df3c837554d9ed56c0 100644 (file)
 #               This  is the default for remote delivery to domains
 #               listed with relay_domains. In order  of  decreasing
 #               precedence,  the  nexthop destination is taken from
-#               relay_transport, sender_relayhost_maps,  relayhost,
-#               or from the recipient domain.
+#               relay_transport,   sender_dependent_relayhost_maps,
+#               relayhost, or from the recipient domain.
 # 
 #        default_transport (default: smtp:)
 #               This  is  the  default for remote delivery to other
 #               destinations.  In order of  decreasing  precedence,
 #               the    nexthop    destination    is    taken   from
-#               default_transport,  sender_relayhost_maps,   relay-
-#               host, or from the recipient domain.
+#               default_transport, sender_dependent_relayhost_maps,
+#               relayhost, or from the recipient domain.
 # 
 #        Normally,  the  transport(5)  table is specified as a text
 #        file that serves as input to the postmap(1) command.   The
index 02a0a38d2ca85b1621bc1492b185ec2e36cc71e3..190bbaa7ed6922c6c334740b92cd4a6f7377f8b6 100644 (file)
@@ -35,7 +35,7 @@ until the address has been verified to be deliverable.  </p>
 with an unreplyable sender address.  </p>
 
 <p> The technique may also be useful to block mail for undeliverable
-recipients, for example on a mail relay host that does not have a
+recipients, for example on a mail <a href="postconf.5.html#relayhost">relay host</a> that does not have a
 list of all the valid recipient addresses. This prevents undeliverable
 junk mail from entering the queue, so that Postfix doesn't have to
 waste resources trying to send MAILER-DAEMON messages back. </p>
@@ -416,7 +416,9 @@ parameters when it delivers an address verification probe message.
 
 <p> First, the <a href="postconf.5.html#address_verify_relayhost">address_verify_relayhost</a> parameter allows you to
 override the <a href="postconf.5.html#relayhost">relayhost</a> setting, and the <a href="postconf.5.html#address_verify_transport_maps">address_verify_transport_maps</a>
-parameter allows you to override the <a href="postconf.5.html#transport_maps">transport_maps</a> setting. </p>
+parameter allows you to override the <a href="postconf.5.html#transport_maps">transport_maps</a> setting. 
+The <a href="postconf.5.html#address_verify_sender_dependent_relayhost_maps">address_verify_sender_dependent_relayhost_maps</a> parameter
+does the same for sender-dependent <a href="postconf.5.html#relayhost">relayhost</a> selection. </p>
 
 <p> Second, each address class is given its own address verification
 version of the message delivery transport, as shown in the table
index bea228c6689afa6610e3618e8fe19f15b704cef2..271364db1c16cf84197dc1865dc83bea59fb9e98 100644 (file)
@@ -333,7 +333,7 @@ This feature is available in Postfix 2.1 and later.
 
 <p>
 Overrides the <a href="postconf.5.html#relayhost">relayhost</a> parameter setting for address verification
-probes.
+probes. This information can be overruled with the <a href="transport.5.html">transport(5)</a> table.
 </p>
 
 <p>
@@ -373,11 +373,11 @@ This feature is available in Postfix 2.1 and later.
 
 </DD>
 
-<DT><b><a name="address_verify_sender_relayhost_maps">address_verify_sender_relayhost_maps</a>
+<DT><b><a name="address_verify_sender_dependent_relayhost_maps">address_verify_sender_dependent_relayhost_maps</a>
 (default: empty)</b></DT><DD>
 
 <p>
-Overrides the <a href="postconf.5.html#sender_relayhost_maps">sender_relayhost_maps</a> parameter setting for address
+Overrides the <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a> parameter setting for address
 verification probes.
 </p>
 
@@ -589,7 +589,7 @@ $<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_cli
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_clients</a> = static:all". </p>
 
 <p>
@@ -675,7 +675,7 @@ are calculated.
 
 <p>
 This feature is implemented by the <a href="anvil.8.html">anvil(8)</a> service which is not
-part of the stable Postfix 2.1 release.
+part of the stable Postfix version 2.1 release.
 </p>
 
 <p>
@@ -741,7 +741,7 @@ $<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_cli
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_clients</a> = static:all". </p>
 
 
@@ -778,7 +778,7 @@ $<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_cli
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_clients</a> = static:all". </p>
 
 
@@ -1123,10 +1123,10 @@ proportionally.  </p>
 (default: empty)</b></DT><DD>
 
 <p> Pathname of a configuration file with bounce message templates.
-These override the <a href="bounce.8.html">bounce(8)</a> server built-in templates of delivery
-status notification (DSN) messages for undeliverable mail, for
-delayed mail, for successful delivery, or for mail delivery
-verification. </p>
+These override the built-in templates of delivery status notification
+(DSN) messages for undeliverable mail, for delayed mail, successful
+delivery, or delivery verification. The <a href="bounce.5.html">bounce(5)</a> manual page
+describes how to edit and test template files.  </p>
 
 <p> Template message body text may contain $name references to
 Postfix configuration parameters. The result of $name expansion can
@@ -1208,7 +1208,7 @@ $<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_cli
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_clients</a> = static:all". </p>
 
 <p>
@@ -1752,7 +1752,7 @@ address, or Recipient address. </dd>
 <dd>The numerical SMTP response code, as specified with the
 <a href="postconf.5.html#maps_rbl_reject_code">maps_rbl_reject_code</a> configuration parameter. Note: The numerical
 SMTP response code is required, and must appear at the start of the
-reply. With Postfix 2.3 and later this information may be followed
+reply. With Postfix version 2.3 and later this information may be followed
 by an <a href="http://www.faqs.org/rfcs/rfc3463.html">RFC 3463</a> enhanced status code. </dd>
 
 <dt><b>$rbl_domain</b></dt>
@@ -1845,10 +1845,14 @@ and <a href="postconf.5.html#qmgr_message_recipient_minimum">qmgr_message_recipi
 (default: smtp)</b></DT><DD>
 
 <p>
-The default mail delivery transport for domains that do not match
-$<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a>, $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>,
-$<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>, or $<a href="postconf.5.html#relay_domains">relay_domains</a>.
-This information can be overruled with the <a href="transport.5.html">transport(5)</a> table.
+The default mail delivery transport and next-hop destination for
+destinations that do not match $<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a>,
+$<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>, $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>, $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>,
+or $<a href="postconf.5.html#relay_domains">relay_domains</a>.  In order of decreasing precedence, the nexthop
+destination is taken from $<a href="postconf.5.html#default_transport">default_transport</a>,
+$<a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a>, $<a href="postconf.5.html#relayhost">relayhost</a>, or from the recipient
+domain. This information can be overruled with the <a href="transport.5.html">transport(5)</a>
+table.
 </p>
 
 <p>
@@ -2168,8 +2172,8 @@ created locally as the result of configuration or software error.
 
 <p> Report mail delivery errors to the address specified with the
 non-standard Errors-To: message header, instead of the envelope
-sender address (this feature is removed with Postfix 2.2, is
-turned off by default with Postfix 2.1, and is always turned on
+sender address (this feature is removed with Postfix version 2.2, is
+turned off by default with Postfix version 2.1, and is always turned on
 with older Postfix versions).  </p>
 
 
@@ -2191,7 +2195,7 @@ duplicate elimination on the rewritten recipient address only, and
 generates empty original recipient queue file records.  </p>
 
 <p> This feature is available in Postfix 2.1 and later. With Postfix
-2.0, support for the X-Original-To message header is always turned
+version 2.0, support for the X-Original-To message header is always turned
 on. Postfix versions before 2.0 have no support for the X-Original-To
 message header.  </p>
 
@@ -2261,7 +2265,7 @@ time keeping on System-V-ish systems.
 <p>
 Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. The name=value form is supported with
-Postfix 2.1 and later.
+Postfix version 2.1 and later.
 </p>
 
 <p>
@@ -2284,7 +2288,7 @@ from message headers when mail is submitted with "<b>sendmail -t</b>".
 </p>
 
 <p>
-This feature was removed in Postfix 2.1.
+This feature was removed in Postfix version 2.1.
 </p>
 
 
@@ -2747,7 +2751,7 @@ parameters:
 
 <p> Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. The name=value form is supported with
-Postfix 2.1 and later.  </p>
+Postfix version 2.1 and later.  </p>
 
 
 </DD>
@@ -2779,7 +2783,7 @@ Specify 0 to disable the feature. Valid delays are 0..10.
 <p> The network interface addresses that this mail system receives
 mail on. Specify "all" to receive mail on all network
 interfaces (default), and "loopback-only" to receive mail
-on loopback network interfaces only (Postfix 2.2 and later).  The
+on loopback network interfaces only (Postfix version 2.2 and later).  The
 parameter also controls delivery of mail to <tt>user@[ip.address]</tt>.
 </p>
 
@@ -2825,9 +2829,9 @@ Examples:
 
 <pre>
 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = all (DEFAULT)
-<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only (Postfix 2.2 and later)
+<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = loopback-only (Postfix version 2.2 and later)
 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = 127.0.0.1
-<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = 127.0.0.1, [::1] (Postfix 2.2 and later)
+<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = 127.0.0.1, [::1] (Postfix version 2.2 and later)
 <a href="postconf.5.html#inet_interfaces">inet_interfaces</a> = 192.168.1.2, 127.0.0.1
 </pre>
 
@@ -2843,7 +2847,7 @@ or "ipv6", separated by whitespace or commas. The form
 "all" is equivalent to "ipv4, ipv6" or "ipv4", depending
 on whether the operating system implements IPv6. </p>
 
-<p> This feature is available in Postfix version 2.2 and later. </p>
+<p> This feature is available in Postfix 2.2 and later. </p>
 
 <p> Note: you MUST stop and start Postfix after changing this
 parameter. </p>
@@ -3556,9 +3560,10 @@ Examples:
 <DT><b><a name="local_transport">local_transport</a>
 (default: <a href="local.8.html">local</a>:$<a href="postconf.5.html#myhostname">myhostname</a>)</b></DT><DD>
 
-<p> The default mail delivery transport for domains that match
-$<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>.  This
-information can be overruled with the <a href="transport.5.html">transport(5)</a> table.  </p>
+<p> The default mail delivery transport and next-hop destination
+for final delivery to domains listed with <a href="postconf.5.html#mydestination">mydestination</a>, and for
+[ipaddress] destinations that match $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>.
+This information can be overruled with the <a href="transport.5.html">transport(5)</a> table. </p>
 
 <p>
 By default, local mail is delivered to the transport called "local",
@@ -3691,7 +3696,7 @@ or daemon.  PLEASE USE A DEDICATED USER ID AND GROUP ID.
 
 <p>
 When this parameter value is changed you need to re-run "<b>postfix
-set-permissions</b>" (with Postfix 2.0 and earlier:
+set-permissions</b>" (with Postfix version 2.0 and earlier:
 "<b>/etc/postfix/post-install set-permissions</b>".
 </p>
 
@@ -3769,22 +3774,22 @@ The following environment variables are exported to the command:
 
 <dt><b>CLIENT_ADDRESS</b></dt>
 
-<dd>Remote client network address. Available in Postfix 2.2 and
+<dd>Remote client network address. Available in Postfix version 2.2 and
 later. </dd>
 
 <dt><b>CLIENT_HELO</b></dt>
 
-<dd>Remote client EHLO command parameter. Available in Postfix 2.2
+<dd>Remote client EHLO command parameter. Available in Postfix version 2.2
 and later.</dd>
 
 <dt><b>CLIENT_HOSTNAME</b></dt>
 
-<dd>Remote client hostname. Available in Postfix 2.2 and later.
+<dd>Remote client hostname. Available in Postfix version 2.2 and later.
 </dd>
 
 <dt><b>CLIENT_PROTOCOL</b></dt>
 
-<dd>Remote client protocol. Available in Postfix 2.2 and later.
+<dd>Remote client protocol. Available in Postfix version 2.2 and later.
 </dd>
 
 <dt><b>DOMAIN</b></dt>
@@ -3814,17 +3819,17 @@ and later.</dd>
 <dt><b>SASL_METHOD</b></dt>
 
 <dd>SASL authentication method specified in the remote client AUTH
-command. Available in Postfix 2.2 and later. </dd>
+command. Available in Postfix version 2.2 and later. </dd>
 
 <dt><b>SASL_SENDER</b></dt>
 
 <dd>SASL sender address specified in the remote client MAIL FROM
-command. Available in Postfix 2.2 and later. </dd>
+command. Available in Postfix version 2.2 and later. </dd>
 
 <dt><b>SASL_USER</b></dt>
 
 <dd>SASL username specified in the remote client AUTH command.
-Available in Postfix 2.2 and later.  </dd>
+Available in Postfix version 2.2 and later.  </dd>
 
 <dt><b>SENDER</b></dt>
 
@@ -4080,7 +4085,7 @@ $<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_cli
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_clients</a> = static:all". </p>
 
 <p>
@@ -5039,7 +5044,7 @@ server to decide if it will accept any mail at all.
 </p>
 
 <p>
-By default, the Postfix 2.1 SMTP server rejects MAIL FROM commands
+By default, the Postfix version 2.1 SMTP server rejects MAIL FROM commands
 when the amount of free space is less than 1.5*$<a href="postconf.5.html#message_size_limit">message_size_limit</a>.
 To specify a higher minimum free space limit, specify a <a href="postconf.5.html#queue_minfree">queue_minfree</a>
 value that is at least 1.5*$<a href="postconf.5.html#message_size_limit">message_size_limit</a>.
@@ -5338,7 +5343,7 @@ D7:04:2F:A7:0B:8C:A5:21:FA:31:77:E1:41:8A:EE:80 lutzpc.at.home </p>
 an appropriate <a href="access.5.html">access(5)</a> policy for each client.
 See <a href="RESTRICTION_CLASS_README.html">RESTRICTION_CLASS_README</a>.</p>
 
-<p>This feature is available with Postfix 2.2.</p>
+<p>This feature is available with Postfix version 2.2.</p>
 
 
 </DD>
@@ -5351,7 +5356,7 @@ via the relay message delivery transport. This limit is enforced
 by the queue manager. The message delivery transport name is the
 first field in the entry in the master.cf file.  </p>
 
-<p> This feature is available in Postfix version 2.0 and later. </p>
+<p> This feature is available in Postfix 2.0 and later. </p>
 
 
 </DD>
@@ -5368,7 +5373,7 @@ the entry in the master.cf file.  </p>
 <a href="postconf.5.html#relay_destination_concurrency_limit">relay_destination_concurrency_limit</a> from concurrency per domain
 into concurrency per recipient.  </p>
 
-<p> This feature is available in Postfix version 2.0 and later. </p>
+<p> This feature is available in Postfix 2.0 and later. </p>
 
 
 </DD>
@@ -5458,9 +5463,12 @@ This feature is available in Postfix 2.0 and later.
 (default: relay)</b></DT><DD>
 
 <p>
-The default mail delivery transport and next-hop information for
-domains that match the $<a href="postconf.5.html#relay_domains">relay_domains</a> parameter value. This
-information can be overruled with the <a href="transport.5.html">transport(5)</a> table.
+The default mail delivery transport and next-hop destination for
+remote delivery to domains listed with $<a href="postconf.5.html#relay_domains">relay_domains</a>. In order of
+decreasing precedence, the nexthop destination is taken from
+$<a href="postconf.5.html#relay_transport">relay_transport</a>, $<a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a>, $<a href="postconf.5.html#relayhost">relayhost</a>, or
+from the recipient domain. This information can be overruled with
+the <a href="transport.5.html">transport(5)</a> table.
 </p>
 
 <p>
@@ -5486,9 +5494,10 @@ This feature is available in Postfix 2.0 and later.
 (default: empty)</b></DT><DD>
 
 <p>
-The default host to send non-local mail to when no entry is matched
-in the optional <a href="transport.5.html">transport(5)</a> table. When no <a href="postconf.5.html#relayhost">relayhost</a> is given,
-mail is routed directly to the destination.
+The next-hop destination of non-local mail; overrides non-local
+domains in recipient addresses. This information is overruled with
+<a href="postconf.5.html#relay_transport">relay_transport</a>, <a href="postconf.5.html#default_transport">default_transport</a>, <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a>
+and with the <a href="transport.5.html">transport(5)</a> table.
 </p>
 
 <p>
@@ -5619,7 +5628,7 @@ backup MX service for Sendmail systems.  </p>
 local hostname were specified, instead of rejecting the address as
 invalid.  </p>
 
-<p> This feature is available in Postfix version 2.1 and later.
+<p> This feature is available in Postfix 2.1 and later.
 Earlier versions always resolve the null domain as the local
 hostname.  </p>
 
@@ -5660,8 +5669,8 @@ The name of the directory with example Postfix configuration files.
 (default: no)</b></DT><DD>
 
 <p>
-This parameter should not be used. It was replaced by <a href="postconf.5.html#sender_relayhost_maps">sender_relayhost_maps</a>
-in Postfix 2.3.
+This parameter should not be used. It was replaced by <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a>
+in Postfix version 2.3.
 </p>
 
 
@@ -5772,12 +5781,13 @@ Example:
 
 </DD>
 
-<DT><b><a name="sender_relayhost_maps">sender_relayhost_maps</a>
+<DT><b><a name="sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a>
 (default: empty)</b></DT><DD>
 
-<p> A sender-specific override for the global <a href="postconf.5.html#relayhost">relayhost</a> parameter
+<p> A sender-dependent override for the global <a href="postconf.5.html#relayhost">relayhost</a> parameter
 setting. The tables are searched by the sender address and by the
-sender @domain. </p>
+sender @domain. This information is overruled with <a href="postconf.5.html#relay_transport">relay_transport</a>,
+<a href="postconf.5.html#default_transport">default_transport</a> and with the <a href="transport.5.html">transport(5)</a> table. </p>
 
 <p>
 This feature is available in Postfix 2.3 and later.
@@ -5820,7 +5830,7 @@ The default time unit is s (seconds).
 <p>
 The group ownership of set-gid Postfix commands and of group-writable
 Postfix directories. When this parameter value is changed you need
-to re-run "<b>postfix set-permissions</b>" (with Postfix 2.0 and
+to re-run "<b>postfix set-permissions</b>" (with Postfix version 2.0 and
 earlier: "<b>/etc/postfix/post-install set-permissions</b>".
 </p>
 
@@ -5913,7 +5923,7 @@ An optional numerical network address that the SMTP client should
 bind to when making an IPv6 connection.
 </p>
 
-<p> This feature is available in Postfix version 2.2 and later. </p>
+<p> This feature is available in Postfix 2.2 and later. </p>
 
 <p>
 This can be specified in the main.cf file for all SMTP clients, or
@@ -6068,7 +6078,7 @@ delivery latency becomes effectively that of the slowest MX host
 divided by the total number of MX hosts. </p>
 
 <p> The solution uses connection caching in a way that differs from
-Postfix 2.2.  By limiting the amount of time during which a connection
+Postfix version 2.2.  By limiting the amount of time during which a connection
 can be used repeatedly (instead of limiting the number of deliveries
 over that connection), Postfix not only restores fairness in the
 distribution of simultaneous connections across a set of MX hosts,
@@ -6080,7 +6090,7 @@ smtp transaction timeouts which are fair estimates of maximum excess
 latency for a slow delivery.  Note that hosts may accept thousands
 of messages over a single connection within the default connection
 reuse time limit. This number is much larger than the default Postfix
-2.2 limit of 10 messages per cached connection. It may prove necessary
+version 2.2 limit of 10 messages per cached connection. It may prove necessary
 to lower the limit to avoid interoperability issues with MTAs that
 exhibit bugs when many messages are delivered via a single connection.
 A lower reuse time limit risks losing the benefit of connection
@@ -6400,7 +6410,7 @@ The default time unit is s (seconds).
 <p>
 The maximal number of MX (mail exchanger) IP addresses that can
 result from mail exchanger lookups, or zero (no limit). Prior to
-Postfix 2.3, this limit was disabled by default.
+Postfix version 2.3, this limit was disabled by default.
 </p>
 
 <p>
@@ -6416,8 +6426,8 @@ This feature is available in Postfix 2.1 and later.
 <p> The maximal number of SMTP sessions per delivery request before
 giving up or delivering to a fall-back <a href="postconf.5.html#relayhost">relay host</a>, or zero (no
 limit). This restriction ignores sessions that fail to complete the
-SMTP initial handshake (Postfix 2.2 and earlier) or that fail to
-complete the EHLO and TLS handshake (Postfix 2.3 and later).  </p>
+SMTP initial handshake (Postfix version 2.2 and earlier) or that fail to
+complete the EHLO and TLS handshake (Postfix version 2.3 and later).  </p>
 
 <p> This feature is available in Postfix 2.1 and later.  </p>
 
@@ -6431,23 +6441,6 @@ complete the EHLO and TLS handshake (Postfix 2.3 and later).  </p>
 <a href="postconf.5.html#smtp_always_send_ehlo">smtp_always_send_ehlo</a> parameter.  </p>
 
 
-</DD>
-
-<DT><b><a name="smtp_per_sender_authentication">smtp_per_sender_authentication</a>
-(default: no)</b></DT><DD>
-
-<p>
-Enable per-sender authentication in the SMTP client; this is available
-only with SASL authentication, and disables SMTP connection caching
-to ensure that mail from different senders will use the appropriate
-credentials.
-</p>
-
-<p>
-This feature is available in Postfix 2.3 and later.
-</p>
-
-
 </DD>
 
 <DT><b><a name="smtp_pix_workaround_delay_time">smtp_pix_workaround_delay_time</a>
@@ -6632,8 +6625,8 @@ Examples:
 
 <p>
 Optional SMTP client lookup tables with one username:password entry
-per remote hostname or domain (or per sender address, when per-sender
-authentication is enabled).  If no username:password entry is found,
+per remote hostname or domain, or sender address when sender-dependent
+authentication is enabled.  If no username:password entry is found,
 then the Postfix SMTP client will not
 attempt to authenticate to the remote host.
 </p>
@@ -6726,6 +6719,22 @@ This feature is available in Postfix 2.1 and later.
 </p>
 
 
+</DD>
+
+<DT><b><a name="smtp_sender_dependent_authentication">smtp_sender_dependent_authentication</a>
+(default: no)</b></DT><DD>
+
+<p>
+Enable sender-dependent authentication in the SMTP client; this is
+available only with SASL authentication, and disables SMTP connection
+caching to ensure that mail from different senders will use the
+appropriate credentials.  </p>
+
+<p>
+This feature is available in Postfix 2.3 and later.
+</p>
+
+
 </DD>
 
 <DT><b><a name="smtp_skip_4xx_greeting">smtp_skip_4xx_greeting</a>
@@ -6742,7 +6751,7 @@ By default, Postfix moves on the next mail exchanger. Specify
 immediately.
 </p>
 
-<p> This feature is available in Postfix version 2.0 and earlier.
+<p> This feature is available in Postfix 2.0 and earlier.
 Later Postfix versions always skip SMTP servers that greet with a
 4XX status code. </p>
 
@@ -7104,8 +7113,8 @@ time with a per recipient return address.  </p>
 
 <p> By default, no clients are allowed to specify XVERP.  </p>
 
-<p> This parameter was renamed with Postfix 2.1. The default value
-is backwards compatible with Postfix 2.0.  </p>
+<p> This parameter was renamed with Postfix version 2.1. The default value
+is backwards compatible with Postfix version 2.0.  </p>
 
 <p> Specify a list of network/netmask patterns, separated by commas
 and/or whitespace. The mask specifies the number of bits in the
@@ -7467,7 +7476,7 @@ client network address information.
 
 <dd>When the remote SMTP client certificate is verified successfully,
 use the client certificate fingerprint as lookup key for the specified
-<a href="access.5.html">access(5)</a> database. This feature is available with Postfix 2.2.</dd>
+<a href="access.5.html">access(5)</a> database. This feature is available with Postfix version 2.2.</dd>
 
 <dt><b><a name="check_client_access">check_client_access</a> <i><a href="DATABASE_README.html">type:table</a></i></b></dt>
 
@@ -7496,13 +7505,13 @@ authenticated via the <a href="http://www.faqs.org/rfcs/rfc2554.html">RFC 2554</
 verified successfully.  This option must be used only if a special
 CA issues the certificates and only this CA is listed as trusted
 CA, otherwise all clients with a recognized certificate would be
-allowed to relay. This feature is available with Postfix 2.2.</dd>
+allowed to relay. This feature is available with Postfix version 2.2.</dd>
 
 <dt><b><a name="permit_tls_clientcerts">permit_tls_clientcerts</a></b></dt>
 
 <dd>Permit the request when the remote SMTP client certificate is
 verified successfully, and the certificate fingerprint is listed
-in $<a href="postconf.5.html#relay_clientcerts">relay_clientcerts</a>. This feature is available with Postfix 2.2.</dd>
+in $<a href="postconf.5.html#relay_clientcerts">relay_clientcerts</a>. This feature is available with Postfix version 2.2.</dd>
 <dt><b><a name="reject_rbl_client">reject_rbl_client <i>rbl_domain=d.d.d.d</i></a></b></dt>
 
 <dd>Reject the request when the reversed client network address is
@@ -7548,7 +7557,7 @@ also that the two mappings reproduce the client IP address.  <br>
 The <a href="postconf.5.html#unknown_client_reject_code">unknown_client_reject_code</a> parameter specifies the response
 code for rejected requests (default: 450).  The reply is always 450
 in case the address-&gt;name lookup failed due to a temporary
-problem. <br> This feature is available in Postfix version 2.3 and
+problem. <br> This feature is available in Postfix 2.3 and
 later.  </dd>
 
 </dl>
@@ -7579,14 +7588,14 @@ the SMTP server reply code (default: 450).</dd>
 <dd>Defer the request if some later restriction would result in an
 explicit or implicit PERMIT action.  This is useful when a blacklisting
 feature fails due to a temporary problem.  This feature is available
-in Postfix 2.1 and later.  </dd>
+in Postfix version 2.1 and later.  </dd>
 
 <dt><b><a name="defer_if_reject">defer_if_reject</a></b></dt>
 
 <dd>Defer the request if some later restriction would result in a
 REJECT action.  This is useful when a whitelisting feature fails
 due to a temporary problem.  This feature is available in Postfix
-2.1 and later.  </dd>
+version 2.1 and later.  </dd>
 
 <dt><b><a name="permit">permit</a></b></dt>
 
@@ -7823,12 +7832,12 @@ key. This is intended behavior. </p>
 <DT><b><a name="smtpd_error_sleep_time">smtpd_error_sleep_time</a>
 (default: 1s)</b></DT><DD>
 
-<p>With Postfix 2.1 and later: the SMTP server response delay after
+<p>With Postfix version 2.1 and later: the SMTP server response delay after
 a client has made more than $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> errors, and
 fewer than $<a href="postconf.5.html#smtpd_hard_error_limit">smtpd_hard_error_limit</a> errors, without delivering mail.
 </p>
 
-<p>With Postfix 2.0 and earlier: the SMTP server delay before
+<p>With Postfix version 2.0 and earlier: the SMTP server delay before
 sending a reject (4xx or 5xx) response, when the client has made
 fewer than $<a href="postconf.5.html#smtpd_soft_error_limit">smtpd_soft_error_limit</a> errors without delivering
 mail. </p>
@@ -8388,7 +8397,7 @@ parameter specifies the response code for rejected requests (default:
 554); the <a href="postconf.5.html#default_rbl_reply">default_rbl_reply</a> parameter specifies the default server
 reply; and the <a href="postconf.5.html#rbl_reply_maps">rbl_reply_maps</a> parameter specifies tables with server
 replies indexed by <i>rbl_domain</i>.  This feature is available
-in Postfix 2.0 and later.</dd>
+in Postfix version 2.0 and later.</dd>
 
 <dt><b><a name="reject_unauth_destination">reject_unauth_destination</a></b></dt>
 
@@ -8413,12 +8422,12 @@ code for rejected requests (default: 554). </dd>
 <dd>Reject the request when Postfix is not final destination for
 the recipient address, and the RCPT TO address has no DNS A or MX
 record, or when it has a malformed MX record such as a record with
-a zero-length MX hostname (Postfix 2.3 and later). <br> The
+a zero-length MX hostname (Postfix version 2.3 and later). <br> The
 <a href="postconf.5.html#unknown_address_reject_code">unknown_address_reject_code</a> parameter specifies the response code
 for rejected requests (default: 450).  The response is always 450
 in case of a temporary DNS error.</dd>
 
-<dt><b><a name="reject_unlisted_recipient">reject_unlisted_recipient</a></b> (with Postfix 2.0: check_recipient_maps)</dt>
+<dt><b><a name="reject_unlisted_recipient">reject_unlisted_recipient</a></b> (with Postfix version 2.0: check_recipient_maps)</dt>
 
 <dd> Reject the request when the RCPT TO address is not listed in
 the list of valid recipients for its domain class. See the
@@ -8885,7 +8894,7 @@ Postfix version 2.1 and later. </dd>
 <dd>Reject the request when Postfix is not final destination for
 the sender address, and the MAIL FROM address has no DNS A or MX
 record, or when it has a malformed MX record such as a record with
-a zero-length MX hostname (Postfix 2.3 and later). <br> The
+a zero-length MX hostname (Postfix version 2.3 and later). <br> The
 <a href="postconf.5.html#unknown_address_reject_code">unknown_address_reject_code</a> parameter specifies the response code
 for rejected requests (default: 450).  The response is always 450
 in case of a temporary DNS error.  </dd>
@@ -9507,7 +9516,7 @@ $<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_cli
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "<a href="postconf.5.html#local_header_rewrite_clients">local_header_rewrite_clients</a> = static:all". </p>
 
 <p>
@@ -9924,7 +9933,7 @@ in the <a href="ADDRESS_CLASS_README.html">ADDRESS_CLASS_README</a> file </p>
 
 <p>
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 </p>
 
 <p>
@@ -9986,7 +9995,7 @@ manipulations see the <a href="ADDRESS_REWRITING_README.html">ADDRESS_REWRITING_
 
 <p>
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 </p>
 
 <p>
@@ -10124,7 +10133,7 @@ configuration parameter.  </p>
 
 <p>
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 </p>
 
 
@@ -10221,7 +10230,7 @@ it will open the table directly. Before Postfix version 2.2, the
 addresses are aliased to addresses in other local or remote domains,
 and b) addresses that are aliased to addresses in other local or
 remote domains.  Available before Postfix version 2.0. With Postfix
-2.0 and later, this is replaced by separate controls: <a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>
+version 2.0 and later, this is replaced by separate controls: <a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>
 and <a href="postconf.5.html#virtual_alias_maps">virtual_alias_maps</a>. </p>
 
 
@@ -10244,9 +10253,9 @@ deferred.
 (default: virtual)</b></DT><DD>
 
 <p>
-The default mail delivery transport for domains that match the
-$<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> parameter value. This information can
-be overruled with the <a href="transport.5.html">transport(5)</a> table.
+The default mail delivery transport and next-hop destination for
+final delivery to domains listed with <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
+This information can be overruled with the <a href="transport.5.html">transport(5)</a> table.
 </p>
 
 <p>
index f7be280cf1b848d8b056398317f15de3dbf22262..65b2ff9dbea42b4664266805422fc575b6a6b6b8 100644 (file)
@@ -188,9 +188,9 @@ SMTP(8)                                                                SMTP(8)
 
        <b><a href="postconf.5.html#smtp_sasl_password_maps">smtp_sasl_password_maps</a> (empty)</b>
               Optional SMTP client lookup tables with  one  user-
-              name:password  entry  per remote hostname or domain
-              (or per sender, when per-sender  authentication  is
-              enabled).
+              name:password  entry per remote hostname or domain,
+              or sender address when sender-dependent authentica-
+              tion is enabled.
 
        <b><a href="postconf.5.html#smtp_sasl_security_options">smtp_sasl_security_options</a> (noplaintext, noanonymous)</b>
               What  authentication  mechanisms  the  Postfix SMTP
@@ -205,8 +205,8 @@ SMTP(8)                                                                SMTP(8)
 
        Available in Postfix version 2.3 and later:
 
-       <b><a href="postconf.5.html#smtp_per_sender_authentication">smtp_per_sender_authentication</a> (no)</b>
-              Enable  per-sender  authentication  in   the   SMTP
+       <b><a href="postconf.5.html#smtp_sender_dependent_authentication">smtp_sender_dependent_authentication</a> (no)</b>
+              Enable sender-dependent authentication in the  SMTP
               client;  this is available only with SASL authenti-
               cation, and disables  SMTP  connection  caching  to
               ensure  that  mail  from different senders will use
index a0263aad067e3121f548ff0baec67c0373801d63..5e9225f39953f9d76a5dca6271ad1a77838318ba 100644 (file)
@@ -41,15 +41,15 @@ TRANSPORT(5)                                                      TRANSPORT(5)
               This  is the default for remote delivery to domains
               listed with <b><a href="postconf.5.html#relay_domains">relay_domains</a></b>. In order  of  decreasing
               precedence,  the  <i>nexthop</i> destination is taken from
-              <b><a href="postconf.5.html#relay_transport">relay_transport</a></b>, <b><a href="postconf.5.html#sender_relayhost_maps">sender_relayhost_maps</a></b>,  <b><a href="postconf.5.html#relayhost">relayhost</a></b>,
-              or from the recipient domain.
+              <b><a href="postconf.5.html#relay_transport">relay_transport</a></b>,   <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a></b>,
+              <b><a href="postconf.5.html#relayhost">relayhost</a></b>, or from the recipient domain.
 
        <b><a href="postconf.5.html#default_transport">default_transport</a> (default: <a href="smtp.8.html">smtp</a>:)</b>
               This  is  the  default for remote delivery to other
               destinations.  In order of  decreasing  precedence,
               the    <i>nexthop</i>    destination    is    taken   from
-              <b><a href="postconf.5.html#default_transport">default_transport</a></b>,  <b><a href="postconf.5.html#sender_relayhost_maps">sender_relayhost_maps</a></b>,   <b><a href="postconf.5.html#relayhost">relay</a>-</b>
-              <b><a href="postconf.5.html#relayhost">host</a></b>, or from the recipient domain.
+              <b><a href="postconf.5.html#default_transport">default_transport</a></b>, <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a></b>,
+              <b><a href="postconf.5.html#relayhost">relayhost</a></b>, or from the recipient domain.
 
        Normally,  the  <a href="transport.5.html"><b>transport</b>(5)</a>  table is specified as a text
        file that serves as input to the <a href="postmap.1.html"><b>postmap</b>(1)</a> command.   The
@@ -114,8 +114,8 @@ TRANSPORT(5)                                                      TRANSPORT(5)
        <i>.domain transport</i>:<i>nexthop</i>
               Deliver mail for any subdomain  of  <i>domain</i>  through
               <i>transport</i>  to  <i>nexthop</i>.  This applies only when the
-              string <b><a href="postconf.5.html#transport_maps">transport_maps</a></b> is not  listed  in  the  <b>par-</b>
-              <b>ent_domain_matches_subdomains</b>   configuration  set-
+              string <b><a href="postconf.5.html#transport_maps">transport_maps</a></b> is not  listed  in  the  <b><a href="postconf.5.html#parent_domain_matches_subdomains">par</a>-</b>
+              <b><a href="postconf.5.html#parent_domain_matches_subdomains">ent_domain_matches_subdomains</a></b>   configuration  set-
               ting.  Otherwise, a domain name matches itself  and
               its subdomains.
 
index 9bb40a0814831fe567ba839b9d6fb73ab8157eb8..1aaa7183d56333ca3294531221f8d34298269964 100644 (file)
@@ -36,10 +36,10 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
                      the <a href="ADDRESS_CLASS_README.html#local_domain_class">local domain</a> to spam from poorly written
                      remote clients.
 
-       <b>resolve</b> <i>address</i>
-              Resolve an address to a (<i>transport</i>, <i>nexthop</i>, <i>recip-</i>
-              <i>ient</i>, <i>flags</i>) quadruple. The meaning of the  results
-              is as follows:
+       <b>resolve</b> <i>sender address</i>
+              Resolve  the  address  to  a  (<i>transport</i>,  <i>nexthop</i>,
+              <i>recipient</i>, <i>flags</i>) quadruple.  The  meaning  of  the
+              results is as follows:
 
               <i>transport</i>
                      The delivery agent to use. This is the first
@@ -57,8 +57,8 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
                      requires  relaying,  whether the address has
                      problems, and whether the request failed.
 
-       <b>verify</b> <i>address</i>
-              Resolve an address for  address  verification  pur-
+       <b>verify</b> <i>sender address</i>
+              Resolve the address for address  verification  pur-
               poses.
 
 <b>SERVER PROCESS MANAGEMENT</b>
@@ -145,36 +145,38 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
        <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a> or <a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>.
 
        <b><a href="postconf.5.html#local_transport">local_transport</a> (<a href="local.8.html">local</a>:$<a href="postconf.5.html#myhostname">myhostname</a>)</b>
-              The  default  mail  delivery  transport for domains
-              that  match  $<a href="postconf.5.html#mydestination">mydestination</a>,  $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a>   or
-              $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>.
+              The  default  mail  delivery transport and next-hop
+              destination for final delivery  to  domains  listed
+              with  <a href="postconf.5.html#mydestination">mydestination</a>,  and  for [ipaddress] destina-
+              tions that match $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a> or  $<a href="postconf.5.html#proxy_interfaces">proxy_inter</a>-
+              <a href="postconf.5.html#proxy_interfaces">faces</a>.
 
        <b><a href="postconf.5.html#virtual_transport">virtual_transport</a> (virtual)</b>
-              The  default  mail  delivery  transport for domains
-              that match the  $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>  parameter
-              value.
+              The  default  mail  delivery transport and next-hop
+              destination for final delivery  to  domains  listed
+              with <a href="postconf.5.html#virtual_mailbox_domains">virtual_mailbox_domains</a>.
 
        <b><a href="postconf.5.html#relay_transport">relay_transport</a> (relay)</b>
               The  default  mail  delivery transport and next-hop
-              information   for   domains    that    match    the
-              $<a href="postconf.5.html#relay_domains">relay_domains</a> parameter value.
+              destination for remote delivery to  domains  listed
+              with $<a href="postconf.5.html#relay_domains">relay_domains</a>.
 
        <b><a href="postconf.5.html#default_transport">default_transport</a> (smtp)</b>
-              The  default  mail  delivery  transport for domains
-              that do not match $<a href="postconf.5.html#mydestination">mydestination</a>, $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a>,
-              $<a href="postconf.5.html#proxy_interfaces">proxy_interfaces</a>,   $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>,  $<a href="postconf.5.html#virtual_mailbox_domains">vir</a>-
-              <a href="postconf.5.html#virtual_mailbox_domains">tual_mailbox_domains</a>, or $<a href="postconf.5.html#relay_domains">relay_domains</a>.
+              The  default  mail  delivery transport and next-hop
+              destination for  destinations  that  do  not  match
+              $<a href="postconf.5.html#mydestination">mydestination</a>,   $<a href="postconf.5.html#inet_interfaces">inet_interfaces</a>,   $<a href="postconf.5.html#proxy_interfaces">proxy_inter</a>-
+              <a href="postconf.5.html#proxy_interfaces">faces</a>,    $<a href="postconf.5.html#virtual_alias_domains">virtual_alias_domains</a>,    $<a href="postconf.5.html#virtual_mailbox_domains">virtual_mail-
+              box_domains</a>, or $<a href="postconf.5.html#relay_domains">relay_domains</a>.
 
-       <b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a> (see 'postconf  -d'  out-</b>
+       <b><a href="postconf.5.html#parent_domain_matches_subdomains">parent_domain_matches_subdomains</a>  (see  'postconf -d' out-</b>
        <b>put)</b>
               What   Postfix   features   match   subdomains   of
               "domain.tld" automatically, instead of requiring an
               explicit ".domain.tld" pattern.
 
        <b><a href="postconf.5.html#relayhost">relayhost</a> (empty)</b>
-              The default host to send non-local mail to when  no
-              entry  is  matched in the optional <a href="transport.5.html"><b>transport</b>(5)</a> ta-
-              ble.
+              The  next-hop  destination of non-local mail; over-
+              rides non-<a href="ADDRESS_CLASS_README.html#local_domain_class">local domains</a> in recipient addresses.
 
        <b><a href="postconf.5.html#transport_maps">transport_maps</a> (empty)</b>
               Optional lookup tables with mappings from recipient
@@ -183,9 +185,9 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
 
        Available in Postfix version 2.3 and later:
 
-       <b><a href="postconf.5.html#sender_relayhost_maps">sender_relayhost_maps</a> (empty)</b>
-              A sender-specific override for the global <a href="postconf.5.html#relayhost">relayhost</a>
-              parameter setting.
+       <b><a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a> (empty)</b>
+              A sender-dependent override for the  global  <a href="postconf.5.html#relayhost">relay</a>-
+              <a href="postconf.5.html#relayhost">host</a> parameter setting.
 
 <b>ADDRESS VERIFICATION CONTROLS</b>
        Postfix   version  2.1  introduces  sender  and  recipient
@@ -216,26 +218,28 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
               Overrides   the  <a href="postconf.5.html#relayhost">relayhost</a>  parameter  setting  for
               address verification probes.
 
-       <b><a href="postconf.5.html#address_verify_sender_relayhost_maps">address_verify_sender_relayhost_maps</a> (empty)</b>
-              Overrides the <a href="postconf.5.html#sender_relayhost_maps">sender_relayhost_maps</a> parameter  set-
-              ting for address verification probes.
-
        <b><a href="postconf.5.html#address_verify_transport_maps">address_verify_transport_maps</a> ($<a href="postconf.5.html#transport_maps">transport_maps</a>)</b>
-              Overrides  the <a href="postconf.5.html#transport_maps">transport_maps</a> parameter setting for
+              Overrides the <a href="postconf.5.html#transport_maps">transport_maps</a> parameter setting  for
               address verification probes.
 
+       Available in Postfix version 2.3 and later:
+
+       <b><a href="postconf.5.html#address_verify_sender_dependent_relayhost_maps">address_verify_sender_dependent_relayhost_maps</a> (empty)</b>
+              Overrides    the    <a href="postconf.5.html#sender_dependent_relayhost_maps">sender_dependent_relayhost_maps</a>
+              parameter setting for address verification  probes.
+
 <b>MISCELLANEOUS CONTROLS</b>
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The default location of  the  Postfix  main.cf  and
+              The  default  location  of  the Postfix main.cf and
               master.cf configuration files.
 
        <b><a href="postconf.5.html#daemon_timeout">daemon_timeout</a> (18000s)</b>
-              How  much time a Postfix daemon process may take to
-              handle a request  before  it  is  terminated  by  a
+              How much time a Postfix daemon process may take  to
+              handle  a  request  before  it  is  terminated by a
               built-in watchdog timer.
 
        <b><a href="postconf.5.html#empty_address_recipient">empty_address_recipient</a> (MAILER-DAEMON)</b>
-              The   recipient  of  mail  addressed  to  the  null
+              The  recipient  of  mail  addressed  to  the   null
               address.
 
        <b><a href="postconf.5.html#ipc_timeout">ipc_timeout</a> (3600s)</b>
@@ -243,12 +247,12 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
               over an internal communication channel.
 
        <b><a href="postconf.5.html#max_idle">max_idle</a> (100s)</b>
-              The  maximum  amount  of  time that an idle Postfix
-              daemon process waits for the next  service  request
+              The maximum amount of time  that  an  idle  Postfix
+              daemon  process  waits for the next service request
               before exiting.
 
        <b><a href="postconf.5.html#max_use">max_use</a> (100)</b>
-              The  maximal number of connection requests before a
+              The maximal number of connection requests before  a
               Postfix daemon process terminates.
 
        <b><a href="postconf.5.html#relocated_maps">relocated_maps</a> (empty)</b>
@@ -256,33 +260,33 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
               for users or domains that no longer exist.
 
        <b><a href="postconf.5.html#process_id">process_id</a> (read-only)</b>
-              The  process  ID  of  a  Postfix  command or daemon
+              The process ID  of  a  Postfix  command  or  daemon
               process.
 
        <b><a href="postconf.5.html#process_name">process_name</a> (read-only)</b>
-              The process name of a  Postfix  command  or  daemon
+              The  process  name  of  a Postfix command or daemon
               process.
 
        <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
-              The  location of the Postfix top-level queue direc-
+              The location of the Postfix top-level queue  direc-
               tory.
 
        <b><a href="postconf.5.html#show_user_unknown_table_name">show_user_unknown_table_name</a> (yes)</b>
-              Display the name of  the  recipient  table  in  the
+              Display  the  name  of  the  recipient table in the
               "User unknown" responses.
 
        <b><a href="postconf.5.html#syslog_facility">syslog_facility</a> (mail)</b>
               The syslog facility of Postfix logging.
 
        <b><a href="postconf.5.html#syslog_name">syslog_name</a> (postfix)</b>
-              The  mail  system  name  that  is  prepended to the
-              process name in syslog  records,  so  that  "smtpd"
+              The mail system  name  that  is  prepended  to  the
+              process  name  in  syslog  records, so that "smtpd"
               becomes, for example, "postfix/smtpd".
 
        Available in Postfix version 2.0 and later:
 
        <b><a href="postconf.5.html#helpful_warnings">helpful_warnings</a> (yes)</b>
-              Log  warnings  about problematic configuration set-
+              Log warnings about problematic  configuration  set-
               tings, and provide helpful suggestions.
 
 <b>SEE ALSO</b>
@@ -297,7 +301,7 @@ TRIVIAL-REWRITE(8)                                          TRIVIAL-REWRITE(8)
        <a href="ADDRESS_VERIFICATION_README.html">ADDRESS_VERIFICATION_README</a>, Postfix address verification
 
 <b>LICENSE</b>
-       The  Secure  Mailer  license must be distributed with this
+       The Secure Mailer license must be  distributed  with  this
        software.
 
 <b>AUTHOR(S)</b>
index 4811516063d616c3fdebe2e52d2c52abf8625446..4d4a5de7ea106503729961d764f1f14dabd14673 100644 (file)
@@ -172,7 +172,7 @@ verification probes.
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_relayhost (default: $relayhost)
 Overrides the relayhost parameter setting for address verification
-probes.
+probes. This information can be overruled with the \fBtransport\fR(5) table.
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH address_verify_sender (default: postmaster)
@@ -197,8 +197,8 @@ address_verify_sender = postmaster@my.domain
 .ft R
 .PP
 This feature is available in Postfix 2.1 and later.
-.SH address_verify_sender_relayhost_maps (default: empty)
-Overrides the sender_relayhost_maps parameter setting for address
+.SH address_verify_sender_dependent_relayhost_maps (default: empty)
+Overrides the sender_dependent_relayhost_maps parameter setting for address
 verification probes.
 .PP
 This feature is available in Postfix 2.3 and later.
@@ -322,7 +322,7 @@ $local_header_rewrite_clients,
 The message is received from the network, and the
 remote_header_rewrite_domain parameter specifies a non-empty value.
 .PP
-To get the behavior before Postfix 2.2, specify
+To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all".
 .PP
 Example:
@@ -369,7 +369,7 @@ The time unit over which client connection rates and other rates
 are calculated.
 .PP
 This feature is implemented by the \fBanvil\fR(8) service which is not
-part of the stable Postfix 2.1 release.
+part of the stable Postfix version 2.1 release.
 .PP
 The default interval is relatively short. Because of the high
 frequency of updates, the \fBanvil\fR(8) server uses volatile memory
@@ -404,7 +404,7 @@ $local_header_rewrite_clients,
 The message is received from the network, and the
 remote_header_rewrite_domain parameter specifies a non-empty value.
 .PP
-To get the behavior before Postfix 2.2, specify
+To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all".
 .SH append_dot_mydomain (default: yes)
 With locally submitted mail, append the string ".$mydomain" to
@@ -427,7 +427,7 @@ $local_header_rewrite_clients,
 The message is received from the network, and the
 remote_header_rewrite_domain parameter specifies a non-empty value.
 .PP
-To get the behavior before Postfix 2.2, specify
+To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all".
 .SH application_event_drain_time (default: 100s)
 How long the \fBpostkick\fR(1) command waits for a request to enter the
@@ -606,10 +606,10 @@ this limit, then you should increase the mime_nesting_limit value
 proportionally.
 .SH bounce_template_file (default: empty)
 Pathname of a configuration file with bounce message templates.
-These override the \fBbounce\fR(8) server built-in templates of delivery
-status notification (DSN) messages for undeliverable mail, for
-delayed mail, for successful delivery, or for mail delivery
-verification.
+These override the built-in templates of delivery status notification
+(DSN) messages for undeliverable mail, for delayed mail, successful
+delivery, or delivery verification. The \fBbounce\fR(5) manual page
+describes how to edit and test template files.
 .PP
 Template message body text may contain $name references to
 Postfix configuration parameters. The result of $name expansion can
@@ -661,7 +661,7 @@ $local_header_rewrite_clients,
 The message is received from the network, and the
 remote_header_rewrite_domain parameter specifies a non-empty value.
 .PP
-To get the behavior before Postfix 2.2, specify
+To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all".
 .PP
 Examples:
@@ -953,7 +953,7 @@ address, or Recipient address.
 The numerical SMTP response code, as specified with the
 maps_rbl_reject_code configuration parameter. Note: The numerical
 SMTP response code is required, and must appear at the start of the
-reply. With Postfix 2.3 and later this information may be followed
+reply. With Postfix version 2.3 and later this information may be followed
 by an RFC 3463 enhanced status code.
 .IP "\fB$rbl_domain\fR"
 The RBL domain where $rbl_what is blacklisted.
@@ -1001,10 +1001,14 @@ qmgr_message_recipient_limit after the message has been assigned
 to the respective transports.  See also default_extra_recipient_limit
 and qmgr_message_recipient_minimum.
 .SH default_transport (default: smtp)
-The default mail delivery transport for domains that do not match
-$mydestination, $inet_interfaces, $proxy_interfaces,
-$virtual_alias_domains, $virtual_mailbox_domains, or $relay_domains.
-This information can be overruled with the \fBtransport\fR(5) table.
+The default mail delivery transport and next-hop destination for
+destinations that do not match $mydestination, $inet_interfaces,
+$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
+or $relay_domains.  In order of decreasing precedence, the nexthop
+destination is taken from $default_transport,
+$sender_dependent_relayhost_maps, $relayhost, or from the recipient
+domain. This information can be overruled with the \fBtransport\fR(5)
+table.
 .PP
 Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
 is the name of a mail delivery transport defined in master.cf.
@@ -1155,8 +1159,8 @@ created locally as the result of configuration or software error.
 .SH enable_errors_to (default: no)
 Report mail delivery errors to the address specified with the
 non-standard Errors-To: message header, instead of the envelope
-sender address (this feature is removed with Postfix 2.2, is
-turned off by default with Postfix 2.1, and is always turned on
+sender address (this feature is removed with Postfix version 2.2, is
+turned off by default with Postfix version 2.1, and is always turned on
 with older Postfix versions).
 .SH enable_original_recipient (default: yes)
 Enable support for the X-Original-To message header. This header
@@ -1172,7 +1176,7 @@ duplicate elimination on the rewritten recipient address only, and
 generates empty original recipient queue file records.
 .PP
 This feature is available in Postfix 2.1 and later. With Postfix
-2.0, support for the X-Original-To message header is always turned
+version 2.0, support for the X-Original-To message header is always turned
 on. Postfix versions before 2.0 have no support for the X-Original-To
 message header.
 .SH error_notice_recipient (default: postmaster)
@@ -1203,7 +1207,7 @@ time keeping on System-V-ish systems.
 .PP
 Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. The name=value form is supported with
-Postfix 2.1 and later.
+Postfix version 2.1 and later.
 .PP
 Example:
 .PP
@@ -1218,7 +1222,7 @@ export_environment = TZ PATH=/bin:/usr/bin
 The maximal number of recipient addresses that Postfix will extract
 from message headers when mail is submitted with "\fBsendmail -t\fR".
 .PP
-This feature was removed in Postfix 2.1.
+This feature was removed in Postfix version 2.1.
 .SH fallback_relay (default: empty)
 Optional list of relay hosts for SMTP destinations that can't be
 found or that are unreachable.
@@ -1444,7 +1448,7 @@ Needed to make "\fBpostfix -c\fR" work.
 .PP
 Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. The name=value form is supported with
-Postfix 2.1 and later.
+Postfix version 2.1 and later.
 .SH in_flow_delay (default: 1s)
 Time to pause before accepting a new message, when the message
 arrival rate exceeds the message delivery rate. This feature is
@@ -1459,7 +1463,7 @@ Specify 0 to disable the feature. Valid delays are 0..10.
 The network interface addresses that this mail system receives
 mail on. Specify "all" to receive mail on all network
 interfaces (default), and "loopback-only" to receive mail
-on loopback network interfaces only (Postfix 2.2 and later).  The
+on loopback network interfaces only (Postfix version 2.2 and later).  The
 parameter also controls delivery of mail to user@[ip.address].
 .PP
 Note 1: you need to stop and start Postfix when this parameter changes.
@@ -1498,9 +1502,9 @@ Examples:
 .na
 .ft C
 inet_interfaces = all (DEFAULT)
-inet_interfaces = loopback-only (Postfix 2.2 and later)
+inet_interfaces = loopback-only (Postfix version 2.2 and later)
 inet_interfaces = 127.0.0.1
-inet_interfaces = 127.0.0.1, [::1] (Postfix 2.2 and later)
+inet_interfaces = 127.0.0.1, [::1] (Postfix version 2.2 and later)
 inet_interfaces = 192.168.1.2, 127.0.0.1
 .fi
 .ad
@@ -1512,7 +1516,7 @@ or "ipv6", separated by whitespace or commas. The form
 "all" is equivalent to "ipv4, ipv6" or "ipv4", depending
 on whether the operating system implements IPv6.
 .PP
-This feature is available in Postfix version 2.2 and later.
+This feature is available in Postfix 2.2 and later.
 .PP
 Note: you MUST stop and start Postfix after changing this
 parameter.
@@ -1934,9 +1938,10 @@ local_recipient_maps =
 .ad
 .ft R
 .SH local_transport (default: local:$myhostname)
-The default mail delivery transport for domains that match
-$mydestination, $inet_interfaces or $proxy_interfaces.  This
-information can be overruled with the \fBtransport\fR(5) table.
+The default mail delivery transport and next-hop destination
+for final delivery to domains listed with mydestination, and for
+[ipaddress] destinations that match $inet_interfaces or $proxy_interfaces.
+This information can be overruled with the \fBtransport\fR(5) table.
 .PP
 By default, local mail is delivered to the transport called "local",
 which is just the name of a service that is defined the master.cf file.
@@ -2008,7 +2013,7 @@ or processes on the system.  In particular, don't specify nobody
 or daemon.  PLEASE USE A DEDICATED USER ID AND GROUP ID.
 .PP
 When this parameter value is changed you need to re-run "\fBpostfix
-set-permissions\fR" (with Postfix 2.0 and earlier:
+set-permissions\fR" (with Postfix version 2.0 and earlier:
 "\fB/etc/postfix/post-install set-permissions\fR".
 .SH mail_release_date (default: see "postconf -d" output)
 The Postfix release date, in "YYYYMMDD" format.
@@ -2047,15 +2052,15 @@ aliased to a real user and 2) don't log in as root, use "su" instead.
 .PP
 The following environment variables are exported to the command:
 .IP "\fBCLIENT_ADDRESS\fR"
-Remote client network address. Available in Postfix 2.2 and
+Remote client network address. Available in Postfix version 2.2 and
 later.
 .IP "\fBCLIENT_HELO\fR"
-Remote client EHLO command parameter. Available in Postfix 2.2
+Remote client EHLO command parameter. Available in Postfix version 2.2
 and later.
 .IP "\fBCLIENT_HOSTNAME\fR"
-Remote client hostname. Available in Postfix 2.2 and later.
+Remote client hostname. Available in Postfix version 2.2 and later.
 .IP "\fBCLIENT_PROTOCOL\fR"
-Remote client protocol. Available in Postfix 2.2 and later.
+Remote client protocol. Available in Postfix version 2.2 and later.
 .IP "\fBDOMAIN\fR"
 The domain part of the recipient address.
 .IP "\fBEXTENSION\fR"
@@ -2070,13 +2075,13 @@ The recipient's username.
 The full recipient address.
 .IP "\fBSASL_METHOD\fR"
 SASL authentication method specified in the remote client AUTH
-command. Available in Postfix 2.2 and later.
+command. Available in Postfix version 2.2 and later.
 .IP "\fBSASL_SENDER\fR"
 SASL sender address specified in the remote client MAIL FROM
-command. Available in Postfix 2.2 and later.
+command. Available in Postfix version 2.2 and later.
 .IP "\fBSASL_USER\fR"
 SASL username specified in the remote client AUTH command.
-Available in Postfix 2.2 and later.
+Available in Postfix version 2.2 and later.
 .IP "\fBSENDER\fR"
 The full sender address.
 .IP "\fBSHELL\fR"
@@ -2218,7 +2223,7 @@ $local_header_rewrite_clients,
 The message is received from the network, and the
 remote_header_rewrite_domain parameter specifies a non-empty value.
 .PP
-To get the behavior before Postfix 2.2, specify
+To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all".
 .PP
 Example:
@@ -2759,7 +2764,7 @@ The minimal amount of free space in bytes in the queue file system
 that is needed to receive mail.  This is currently used by the SMTP
 server to decide if it will accept any mail at all.
 .PP
-By default, the Postfix 2.1 SMTP server rejects MAIL FROM commands
+By default, the Postfix version 2.1 SMTP server rejects MAIL FROM commands
 when the amount of free space is less than 1.5*$message_size_limit.
 To specify a higher minimum free space limit, specify a queue_minfree
 value that is at least 1.5*$message_size_limit.
@@ -2947,14 +2952,14 @@ For more fine-grained control, use check_ccert_access to select
 an appropriate \fBaccess\fR(5) policy for each client.
 See RESTRICTION_CLASS_README.
 .PP
-This feature is available with Postfix 2.2.
+This feature is available with Postfix version 2.2.
 .SH relay_destination_concurrency_limit (default: $default_destination_concurrency_limit)
 The maximal number of parallel deliveries to the same destination
 via the relay message delivery transport. This limit is enforced
 by the queue manager. The message delivery transport name is the
 first field in the entry in the master.cf file.
 .PP
-This feature is available in Postfix version 2.0 and later.
+This feature is available in Postfix 2.0 and later.
 .SH relay_destination_recipient_limit (default: $default_destination_recipient_limit)
 The maximal number of recipients per delivery via the relay
 message delivery transport. This limit is enforced by the queue
@@ -2965,7 +2970,7 @@ Setting this parameter to a value of 1 changes the meaning of
 relay_destination_concurrency_limit from concurrency per domain
 into concurrency per recipient.
 .PP
-This feature is available in Postfix version 2.0 and later.
+This feature is available in Postfix 2.0 and later.
 .SH relay_domains (default: $mydestination)
 What destination domains (and subdomains thereof) this system
 will relay mail to. Subdomain matching is controlled with the
@@ -3022,9 +3027,12 @@ relay_recipient_maps = hash:/etc/postfix/relay_recipients
 .PP
 This feature is available in Postfix 2.0 and later.
 .SH relay_transport (default: relay)
-The default mail delivery transport and next-hop information for
-domains that match the $relay_domains parameter value. This
-information can be overruled with the \fBtransport\fR(5) table.
+The default mail delivery transport and next-hop destination for
+remote delivery to domains listed with $relay_domains. In order of
+decreasing precedence, the nexthop destination is taken from
+$relay_transport, $sender_dependent_relayhost_maps, $relayhost, or
+from the recipient domain. This information can be overruled with
+the \fBtransport\fR(5) table.
 .PP
 Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
 is the name of a mail delivery transport defined in master.cf.
@@ -3036,9 +3044,10 @@ file.
 .PP
 This feature is available in Postfix 2.0 and later.
 .SH relayhost (default: empty)
-The default host to send non-local mail to when no entry is matched
-in the optional \fBtransport\fR(5) table. When no relayhost is given,
-mail is routed directly to the destination.
+The next-hop destination of non-local mail; overrides non-local
+domains in recipient addresses. This information is overruled with
+relay_transport, default_transport, sender_dependent_relayhost_maps
+and with the \fBtransport\fR(5) table.
 .PP
 On an intranet, specify the organizational domain name. If your
 internal DNS uses no MX records, specify the name of the intranet
@@ -3138,7 +3147,7 @@ Resolve an address that ends in the "@" null domain as if the
 local hostname were specified, instead of rejecting the address as
 invalid.
 .PP
-This feature is available in Postfix version 2.1 and later.
+This feature is available in Postfix 2.1 and later.
 Earlier versions always resolve the null domain as the local
 hostname.
 .PP
@@ -3154,8 +3163,8 @@ This feature is available in Postfix 2.0 and later.
 .SH sample_directory (default: /etc/postfix)
 The name of the directory with example Postfix configuration files.
 .SH sender_based_routing (default: no)
-This parameter should not be used. It was replaced by sender_relayhost_maps
-in Postfix 2.3.
+This parameter should not be used. It was replaced by sender_dependent_relayhost_maps
+in Postfix version 2.3.
 .SH sender_bcc_maps (default: empty)
 Optional BCC (blind carbon-copy) address lookup tables, indexed
 by sender address.  The BCC address (multiple results are not
@@ -3228,10 +3237,11 @@ sender_canonical_maps = hash:/etc/postfix/sender_canonical
 .fi
 .ad
 .ft R
-.SH sender_relayhost_maps (default: empty)
-A sender-specific override for the global relayhost parameter
+.SH sender_dependent_relayhost_maps (default: empty)
+A sender-dependent override for the global relayhost parameter
 setting. The tables are searched by the sender address and by the
-sender @domain.
+sender @domain. This information is overruled with relay_transport,
+default_transport and with the \fBtransport\fR(5) table.
 .PP
 This feature is available in Postfix 2.3 and later.
 .SH sendmail_path (default: see "postconf -d" output)
@@ -3247,7 +3257,7 @@ The default time unit is s (seconds).
 .SH setgid_group (default: postdrop)
 The group ownership of set-gid Postfix commands and of group-writable
 Postfix directories. When this parameter value is changed you need
-to re-run "\fBpostfix set-permissions\fR" (with Postfix 2.0 and
+to re-run "\fBpostfix set-permissions\fR" (with Postfix version 2.0 and
 earlier: "\fB/etc/postfix/post-install set-permissions\fR".
 .SH show_user_unknown_table_name (default: yes)
 Display the name of the recipient table in the "User unknown"
@@ -3295,7 +3305,7 @@ but this form is not recommended here.
 An optional numerical network address that the SMTP client should
 bind to when making an IPv6 connection.
 .PP
-This feature is available in Postfix version 2.2 and later.
+This feature is available in Postfix 2.2 and later.
 .PP
 This can be specified in the main.cf file for all SMTP clients, or
 it can be specified in the master.cf file for a specific client,
@@ -3403,7 +3413,7 @@ delivery latency becomes effectively that of the slowest MX host
 divided by the total number of MX hosts.
 .PP
 The solution uses connection caching in a way that differs from
-Postfix 2.2.  By limiting the amount of time during which a connection
+Postfix version 2.2.  By limiting the amount of time during which a connection
 can be used repeatedly (instead of limiting the number of deliveries
 over that connection), Postfix not only restores fairness in the
 distribution of simultaneous connections across a set of MX hosts,
@@ -3415,7 +3425,7 @@ smtp transaction timeouts which are fair estimates of maximum excess
 latency for a slow delivery.  Note that hosts may accept thousands
 of messages over a single connection within the default connection
 reuse time limit. This number is much larger than the default Postfix
-2.2 limit of 10 messages per cached connection. It may prove necessary
+version 2.2 limit of 10 messages per cached connection. It may prove necessary
 to lower the limit to avoid interoperability issues with MTAs that
 exhibit bugs when many messages are delivered via a single connection.
 A lower reuse time limit risks losing the benefit of connection
@@ -3580,27 +3590,20 @@ The default time unit is s (seconds).
 .SH smtp_mx_address_limit (default: 5)
 The maximal number of MX (mail exchanger) IP addresses that can
 result from mail exchanger lookups, or zero (no limit). Prior to
-Postfix 2.3, this limit was disabled by default.
+Postfix version 2.3, this limit was disabled by default.
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH smtp_mx_session_limit (default: 2)
 The maximal number of SMTP sessions per delivery request before
 giving up or delivering to a fall-back relay host, or zero (no
 limit). This restriction ignores sessions that fail to complete the
-SMTP initial handshake (Postfix 2.2 and earlier) or that fail to
-complete the EHLO and TLS handshake (Postfix 2.3 and later).
+SMTP initial handshake (Postfix version 2.2 and earlier) or that fail to
+complete the EHLO and TLS handshake (Postfix version 2.3 and later).
 .PP
 This feature is available in Postfix 2.1 and later.
 .SH smtp_never_send_ehlo (default: no)
 Never send EHLO at the start of an SMTP session. See also the
 smtp_always_send_ehlo parameter.
-.SH smtp_per_sender_authentication (default: no)
-Enable per-sender authentication in the SMTP client; this is available
-only with SASL authentication, and disables SMTP connection caching
-to ensure that mail from different senders will use the appropriate
-credentials.
-.PP
-This feature is available in Postfix 2.3 and later.
 .SH smtp_pix_workaround_delay_time (default: 10s)
 How long the Postfix SMTP client pauses before sending
 ".<CR><LF>" in order to work around the PIX firewall
@@ -3703,8 +3706,8 @@ smtp_sasl_mechanism_filter = !gssapi, !login, static:rest
 .ft R
 .SH smtp_sasl_password_maps (default: empty)
 Optional SMTP client lookup tables with one username:password entry
-per remote hostname or domain (or per sender address, when per-sender
-authentication is enabled).  If no username:password entry is found,
+per remote hostname or domain, or sender address when sender-dependent
+authentication is enabled.  If no username:password entry is found,
 then the Postfix SMTP client will not
 attempt to authenticate to the remote host.
 .PP
@@ -3751,6 +3754,13 @@ queuing SMTP server. This can produce more useful logging than
 localhost[127.0.0.1] etc.
 .PP
 This feature is available in Postfix 2.1 and later.
+.SH smtp_sender_dependent_authentication (default: no)
+Enable sender-dependent authentication in the SMTP client; this is
+available only with SASL authentication, and disables SMTP connection
+caching to ensure that mail from different senders will use the
+appropriate credentials.
+.PP
+This feature is available in Postfix 2.3 and later.
 .SH smtp_skip_4xx_greeting (default: yes)
 Skip SMTP servers that greet with a 4XX status code (go away, try
 again later).
@@ -3759,7 +3769,7 @@ By default, Postfix moves on the next mail exchanger. Specify
 "smtp_skip_4xx_greeting = no" if Postfix should defer delivery
 immediately.
 .PP
-This feature is available in Postfix version 2.0 and earlier.
+This feature is available in Postfix 2.0 and earlier.
 Later Postfix versions always skip SMTP servers that greet with a
 4XX status code.
 .SH smtp_skip_5xx_greeting (default: yes)
@@ -4008,8 +4018,8 @@ time with a per recipient return address.
 .PP
 By default, no clients are allowed to specify XVERP.
 .PP
-This parameter was renamed with Postfix 2.1. The default value
-is backwards compatible with Postfix 2.0.
+This parameter was renamed with Postfix version 2.1. The default value
+is backwards compatible with Postfix version 2.0.
 .PP
 Specify a list of network/netmask patterns, separated by commas
 and/or whitespace. The mask specifies the number of bits in the
@@ -4237,7 +4247,7 @@ client network address information.
 .IP "\fBcheck_ccert_access \fItype:table\fR\fR"
 When the remote SMTP client certificate is verified successfully,
 use the client certificate fingerprint as lookup key for the specified
-\fBaccess\fR(5) database. This feature is available with Postfix 2.2.
+\fBaccess\fR(5) database. This feature is available with Postfix version 2.2.
 .IP "\fBcheck_client_access \fItype:table\fR\fR"
 Search the specified access database for the client hostname,
 parent domains, client IP address, or networks obtained by stripping
@@ -4256,11 +4266,11 @@ Permit the request when the remote SMTP client certificate is
 verified successfully.  This option must be used only if a special
 CA issues the certificates and only this CA is listed as trusted
 CA, otherwise all clients with a recognized certificate would be
-allowed to relay. This feature is available with Postfix 2.2.
+allowed to relay. This feature is available with Postfix version 2.2.
 .IP "\fBpermit_tls_clientcerts\fR"
 Permit the request when the remote SMTP client certificate is
 verified successfully, and the certificate fingerprint is listed
-in $relay_clientcerts. This feature is available with Postfix 2.2.
+in $relay_clientcerts. This feature is available with Postfix version 2.2.
 .IP "\fBreject_rbl_client \fIrbl_domain=d.d.d.d\fR\fR"
 Reject the request when the reversed client network address is
 listed with the A record "\fId.d.d.d\fR" under \fIrbl_domain\fR
@@ -4309,7 +4319,7 @@ code for rejected requests (default: 450).  The reply is always 450
 in case the address->name lookup failed due to a temporary
 problem.
 .br
-This feature is available in Postfix version 2.3 and
+This feature is available in Postfix 2.3 and
 later.
 .PP
 In addition, you can use any of the following
@@ -4330,12 +4340,12 @@ the SMTP server reply code (default: 450).
 Defer the request if some later restriction would result in an
 explicit or implicit PERMIT action.  This is useful when a blacklisting
 feature fails due to a temporary problem.  This feature is available
-in Postfix 2.1 and later.
+in Postfix version 2.1 and later.
 .IP "\fBdefer_if_reject\fR"
 Defer the request if some later restriction would result in a
 REJECT action.  This is useful when a whitelisting feature fails
 due to a temporary problem.  This feature is available in Postfix
-2.1 and later.
+version 2.1 and later.
 .IP "\fBpermit\fR"
 Permit the request. This restriction is useful at the end of
 a restriction list, to make the default policy explicit.
@@ -4499,11 +4509,11 @@ Note 2: when invoked via "\fBsendmail -bs\fR", Postfix will never offer
 STARTTLS due to insufficient privileges to access the server private
 key. This is intended behavior.
 .SH smtpd_error_sleep_time (default: 1s)
-With Postfix 2.1 and later: the SMTP server response delay after
+With Postfix version 2.1 and later: the SMTP server response delay after
 a client has made more than $smtpd_soft_error_limit errors, and
 fewer than $smtpd_hard_error_limit errors, without delivering mail.
 .PP
-With Postfix 2.0 and earlier: the SMTP server delay before
+With Postfix version 2.0 and earlier: the SMTP server delay before
 sending a reject (4xx or 5xx) response, when the client has made
 fewer than $smtpd_soft_error_limit errors without delivering
 mail.
@@ -4826,7 +4836,7 @@ parameter specifies the response code for rejected requests (default:
 554); the default_rbl_reply parameter specifies the default server
 reply; and the rbl_reply_maps parameter specifies tables with server
 replies indexed by \fIrbl_domain\fR.  This feature is available
-in Postfix 2.0 and later.
+in Postfix version 2.0 and later.
 .IP "\fBreject_unauth_destination\fR"
 Reject the request unless one of the following is true:
 .IP \(bu
@@ -4844,13 +4854,13 @@ code for rejected requests (default: 554).
 Reject the request when Postfix is not final destination for
 the recipient address, and the RCPT TO address has no DNS A or MX
 record, or when it has a malformed MX record such as a record with
-a zero-length MX hostname (Postfix 2.3 and later).
+a zero-length MX hostname (Postfix version 2.3 and later).
 .br
 The
 unknown_address_reject_code parameter specifies the response code
 for rejected requests (default: 450).  The response is always 450
 in case of a temporary DNS error.
-.IP "\fBreject_unlisted_recipient\fR (with Postfix 2.0: check_recipient_maps)"
+.IP "\fBreject_unlisted_recipient\fR (with Postfix version 2.0: check_recipient_maps)"
 Reject the request when the RCPT TO address is not listed in
 the list of valid recipients for its domain class. See the
 smtpd_reject_unlisted_recipient parameter description for details.
@@ -5151,7 +5161,7 @@ Postfix version 2.1 and later.
 Reject the request when Postfix is not final destination for
 the sender address, and the MAIL FROM address has no DNS A or MX
 record, or when it has a malformed MX record such as a record with
-a zero-length MX hostname (Postfix 2.3 and later).
+a zero-length MX hostname (Postfix version 2.3 and later).
 .br
 The
 unknown_address_reject_code parameter specifies the response code
@@ -5552,7 +5562,7 @@ $local_header_rewrite_clients,
 The message is received from the network, and the
 remote_header_rewrite_domain parameter specifies a non-empty value.
 .PP
-To get the behavior before Postfix 2.2, specify
+To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all".
 .PP
 Example:
@@ -5756,7 +5766,7 @@ non-existent recipients. See also the virtual alias domain class
 in the ADDRESS_CLASS_README file
 .PP
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 .PP
 The default value is $virtual_alias_maps so that you can keep all
 information about virtual alias domains in one place.  If you have
@@ -5796,7 +5806,7 @@ are documented in \fBvirtual\fR(5). For an overview of Postfix address
 manipulations see the ADDRESS_REWRITING_README document.
 .PP
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 .PP
 If you use this feature with indexed files, run "\fBpostmap
 /etc/postfix/virtual\fR" after changing the file.
@@ -5882,7 +5892,7 @@ This parameter expects the same syntax as the mydestination
 configuration parameter.
 .PP
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 .SH virtual_mailbox_limit (default: 51200000)
 The maximal size in bytes of an individual mailbox or maildir file,
 or zero (no limit).
@@ -5932,7 +5942,7 @@ Optional lookup tables with a) names of domains for which all
 addresses are aliased to addresses in other local or remote domains,
 and b) addresses that are aliased to addresses in other local or
 remote domains.  Available before Postfix version 2.0. With Postfix
-2.0 and later, this is replaced by separate controls: virtual_alias_domains
+version 2.0 and later, this is replaced by separate controls: virtual_alias_domains
 and virtual_alias_maps.
 .SH virtual_minimum_uid (default: 100)
 The minimum user ID value that the \fBvirtual\fR(8) delivery agent accepts
@@ -5940,9 +5950,9 @@ as a result from $virtual_uid_maps table lookup.  Returned
 values less than this will be rejected, and the message will be
 deferred.
 .SH virtual_transport (default: virtual)
-The default mail delivery transport for domains that match the
-$virtual_mailbox_domains parameter value. This information can
-be overruled with the \fBtransport\fR(5) table.
+The default mail delivery transport and next-hop destination for
+final delivery to domains listed with virtual_mailbox_domains.
+This information can be overruled with the \fBtransport\fR(5) table.
 .PP
 Specify a string of the form \fItransport:nexthop\fR, where \fItransport\fR
 is the name of a mail delivery transport defined in master.cf.
index 6528941b855e56608ca4070c3f69ff3e3d5a8e6b..ff1096f7dbabae9b7944766526972fe8595d14e8 100644 (file)
@@ -36,13 +36,13 @@ destination is the recipient domain.
 This is the default for remote delivery to domains listed
 with \fBrelay_domains\fR. In order of decreasing precedence,
 the \fInexthop\fR destination is taken from \fBrelay_transport\fR,
-\fBsender_relayhost_maps\fR, \fBrelayhost\fR, or from the
+\fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from the
 recipient domain.
 .IP "\fBdefault_transport (default: smtp:)\fR"
 This is the default for remote delivery to other destinations.
 In order of decreasing precedence, the \fInexthop\fR
 destination is taken from \fBdefault_transport\fR,
-\fBsender_relayhost_maps\fR, \fBrelayhost\fR, or from the
+\fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from the
 recipient domain.
 .PP
 Normally, the \fBtransport\fR(5) table is specified as a text file
index 0f3aefbe7422458d803e61a2eefb71aec59f0ff7..bce7bafc5e59318ba9a73f1917a41d760022cb1b 100644 (file)
@@ -176,8 +176,8 @@ response announces XFORWARD support.
 Enable SASL authentication in the Postfix SMTP client.
 .IP "\fBsmtp_sasl_password_maps (empty)\fR"
 Optional SMTP client lookup tables with one username:password entry
-per remote hostname or domain (or per sender, when per-sender
-authentication is enabled).
+per remote hostname or domain, or sender address when sender-dependent
+authentication is enabled.
 .IP "\fBsmtp_sasl_security_options (noplaintext, noanonymous)\fR"
 What authentication mechanisms the Postfix SMTP client is allowed
 to use.
@@ -188,11 +188,11 @@ If non-empty, a Postfix SMTP client filter for the remote SMTP
 server's list of offered SASL mechanisms.
 .PP
 Available in Postfix version 2.3 and later:
-.IP "\fBsmtp_per_sender_authentication (no)\fR"
-Enable per-sender authentication in the SMTP client; this is available
-only with SASL authentication, and disables SMTP connection caching
-to ensure that mail from different senders will use the appropriate
-credentials.
+.IP "\fBsmtp_sender_dependent_authentication (no)\fR"
+Enable sender-dependent authentication in the SMTP client; this is
+available only with SASL authentication, and disables SMTP connection
+caching to ensure that mail from different senders will use the
+appropriate credentials.
 .SH "STARTTLS SUPPORT CONTROLS"
 .na
 .nf
index 6c580a087dd6186a38b40763e4f5158974f103b7..d51635ddbd21e26101abd868a23171f89f09aeb1 100644 (file)
@@ -32,8 +32,8 @@ the \fBlocal\fR address rewriting context. This prevents
 Postfix from appending the local domain to spam from poorly
 written remote clients.
 .RE
-.IP "\fBresolve \fIaddress\fR"
-Resolve an address to a (\fItransport\fR, \fInexthop\fR,
+.IP "\fBresolve \fIsender\fR \fIaddress\fR"
+Resolve the address to a (\fItransport\fR, \fInexthop\fR,
 \fIrecipient\fR, \fIflags\fR) quadruple. The meaning of
 the results is as follows:
 .RS
@@ -48,8 +48,8 @@ The envelope recipient address that is passed on to \fInexthop\fR.
 The address class, whether the address requires relaying,
 whether the address has problems, and whether the request failed.
 .RE
-.IP "\fBverify \fIaddress\fR"
-Resolve an address for address verification purposes.
+.IP "\fBverify \fIsender\fR \fIaddress\fR"
+Resolve the address for address verification purposes.
 .SH "SERVER PROCESS MANAGEMENT"
 .na
 .nf
@@ -141,31 +141,33 @@ Earlier versions do not have support for: virtual_transport,
 relay_transport, virtual_alias_domains, virtual_mailbox_domains
 or proxy_interfaces.
 .IP "\fBlocal_transport (local:$myhostname)\fR"
-The default mail delivery transport for domains that match
-$mydestination, $inet_interfaces or $proxy_interfaces.
+The default mail delivery transport and next-hop destination
+for final delivery to domains listed with mydestination, and for
+[ipaddress] destinations that match $inet_interfaces or $proxy_interfaces.
 .IP "\fBvirtual_transport (virtual)\fR"
-The default mail delivery transport for domains that match the
-$virtual_mailbox_domains parameter value.
+The default mail delivery transport and next-hop destination for
+final delivery to domains listed with virtual_mailbox_domains.
 .IP "\fBrelay_transport (relay)\fR"
-The default mail delivery transport and next-hop information for
-domains that match the $relay_domains parameter value.
+The default mail delivery transport and next-hop destination for
+remote delivery to domains listed with $relay_domains.
 .IP "\fBdefault_transport (smtp)\fR"
-The default mail delivery transport for domains that do not match
-$mydestination, $inet_interfaces, $proxy_interfaces,
-$virtual_alias_domains, $virtual_mailbox_domains, or $relay_domains.
+The default mail delivery transport and next-hop destination for
+destinations that do not match $mydestination, $inet_interfaces,
+$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
+or $relay_domains.
 .IP "\fBparent_domain_matches_subdomains (see 'postconf -d' output)\fR"
 What Postfix features match subdomains of "domain.tld" automatically,
 instead of requiring an explicit ".domain.tld" pattern.
 .IP "\fBrelayhost (empty)\fR"
-The default host to send non-local mail to when no entry is matched
-in the optional \fBtransport\fR(5) table.
+The next-hop destination of non-local mail; overrides non-local
+domains in recipient addresses.
 .IP "\fBtransport_maps (empty)\fR"
 Optional lookup tables with mappings from recipient address to
 (message delivery transport, next-hop destination).
 .PP
 Available in Postfix version 2.3 and later:
-.IP "\fBsender_relayhost_maps (empty)\fR"
-A sender-specific override for the global relayhost parameter
+.IP "\fBsender_dependent_relayhost_maps (empty)\fR"
+A sender-dependent override for the global relayhost parameter
 setting.
 .SH "ADDRESS VERIFICATION CONTROLS"
 .na
@@ -194,12 +196,14 @@ verification probes.
 .IP "\fBaddress_verify_relayhost ($relayhost)\fR"
 Overrides the relayhost parameter setting for address verification
 probes.
-.IP "\fBaddress_verify_sender_relayhost_maps (empty)\fR"
-Overrides the sender_relayhost_maps parameter setting for address
-verification probes.
 .IP "\fBaddress_verify_transport_maps ($transport_maps)\fR"
 Overrides the transport_maps parameter setting for address verification
 probes.
+.PP
+Available in Postfix version 2.3 and later:
+.IP "\fBaddress_verify_sender_dependent_relayhost_maps (empty)\fR"
+Overrides the sender_dependent_relayhost_maps parameter setting for address
+verification probes.
 .SH "MISCELLANEOUS CONTROLS"
 .na
 .nf
index efce85a0d2aa2b15eafe44eb851d86166d4c4acb..00fb66a3ac85cf30f3d0063bb717f7c4947c6e8b 100755 (executable)
@@ -78,7 +78,7 @@ while (<>) {
     s;\baddress_verify_positive_refresh_time\b;<a href="postconf.5.html#address_verify_positive_refresh_time">$&</a>;g;
     s;\baddress_verify_relay_transport\b;<a href="postconf.5.html#address_verify_relay_transport">$&</a>;g;
     s;\baddress_verify_relay[-</bB>]*\n*[ <bB>]*host\b;<a href="postconf.5.html#address_verify_relayhost">$&</a>;g;
-    s;\baddress_verify_sender_relay[-</bB>]*\n*[ <bB>]*host_maps\b;<a href="postconf.5.html#address_verify_sender_relayhost_maps">$&</a>;g;
+    s;\baddress_verify_sender_dependent_relay[-</bB>]*\n*[ <bB>]*host_maps\b;<a href="postconf.5.html#address_verify_sender_dependent_relayhost_maps">$&</a>;g;
     s;\baddress_verify_sender\b;<a href="postconf.5.html#address_verify_sender">$&</a>;g;
     s;\baddress_verify_service_name\b;<a href="postconf.5.html#address_verify_service_name">$&</a>;g;
     s;\baddress_verify_transport_maps\b;<a href="postconf.5.html#address_verify_transport_maps">$&</a>;g;
@@ -245,7 +245,7 @@ while (<>) {
     s;\bmime_nesting_limit\b;<a href="postconf.5.html#mime_nesting_limit">$&</a>;g;
     s;\bminimal_backoff_time\b;<a href="postconf.5.html#minimal_backoff_time">$&</a>;g;
     s;\bmulti_recip[-</bB>]*\n* *[<bB>]*ient_bounce_reject_code\b;<a href="postconf.5.html#multi_recipient_bounce_reject_code">$&</a>;g;
-    s;\bmydes[-</bB>]*\n*[ <bB>]*tina[-</bB>]*\n*[ <bB>]*tion\b;<a href="postconf.5.html#mydestination">$&</a>;g;
+    s;\bmydes[-</bB>]*\n*[ <bB>]*ti[-</bB>]*\n*[ <bB>]*na[-</bB>]*\n*[ <bB>]*tion\b;<a href="postconf.5.html#mydestination">$&</a>;g;
     s;\bmydo[-</bB>]*\n* *[<bB>]*main\b;<a href="postconf.5.html#mydomain">$&</a>;g;
     s;\bmyhostname\b;<a href="postconf.5.html#myhostname">$&</a>;g;
     s;\bmynet[-</bB>]*\n* *[<bB>]*works\b;<a href="postconf.5.html#mynetworks">$&</a>;g;
@@ -256,7 +256,7 @@ while (<>) {
     s;\bnon_fqdn_reject_code\b;<a href="postconf.5.html#non_fqdn_reject_code">$&</a>;g;
     s;\bnotify_classes\b;<a href="postconf.5.html#notify_classes">$&</a>;g;
     s;\bowner_request_special\b;<a href="postconf.5.html#owner_request_special">$&</a>;g;
-    s;\bparent_domain_matches_subdomains\b;<a href="postconf.5.html#parent_domain_matches_subdomains">$&</a>;g;
+    s;\bpar[-</bB>]*\n* *[<bB>]*ent_domain_matches_subdomains\b;<a href="postconf.5.html#parent_domain_matches_subdomains">$&</a>;g;
     s;\bpermit_mx_backup_networks\b;<a href="postconf.5.html#permit_mx_backup_networks">$&</a>;g;
     s;\bpickup_service_name\b;<a href="postconf.5.html#pickup_service_name">$&</a>;g;
     s;\bprepend_delivered_header\b;<a href="postconf.5.html#prepend_delivered_header">$&</a>;g;
@@ -306,7 +306,7 @@ while (<>) {
     s;\bsender_bcc_maps\b;<a href="postconf.5.html#sender_bcc_maps">$&</a>;g;
     s;\bsender_canonical_classes\b;<a href="postconf.5.html#sender_canonical_classes">$&</a>;g;
     s;\bsender_canonical_maps\b;<a href="postconf.5.html#sender_canonical_maps">$&</a>;g;
-    s;\bsender_relay[-</bB>]*\n*[ <bB>]*host_maps\b;<a href="postconf.5.html#sender_relayhost_maps">$&</a>;g;
+    s;\bsender_dependent_relay[-</bB>]*\n*[ <bB>]*host_maps\b;<a href="postconf.5.html#sender_dependent_relayhost_maps">$&</a>;g;
     s;\bsendmail_path\b;<a href="postconf.5.html#sendmail_path">$&</a>;g;
     s;\bservice_throttle_time\b;<a href="postconf.5.html#service_throttle_time">$&</a>;g;
     s;\bsetgid_group\b;<a href="postconf.5.html#setgid_group">$&</a>;g;
@@ -352,7 +352,7 @@ while (<>) {
     s;\bsmtp_mx_address_limit\b;<a href="postconf.5.html#smtp_mx_address_limit">$&</a>;g;
     s;\bsmtp_mx_session_limit\b;<a href="postconf.5.html#smtp_mx_session_limit">$&</a>;g;
     s;\bsmtp_never_send_ehlo\b;<a href="postconf.5.html#smtp_never_send_ehlo">$&</a>;g;
-    s;\bsmtp_per_sender_authentication\b;<a href="postconf.5.html#smtp_per_sender_authentication">$&</a>;g;
+    s;\bsmtp_sender_depen[-</bB>]*\n*[ <bB>]*dent_authentication\b;<a href="postconf.5.html#smtp_sender_dependent_authentication">$&</a>;g;
     s;\bsmtp_pix_workaround_delay_time\b;<a href="postconf.5.html#smtp_pix_workaround_delay_time">$&</a>;g;
     s;\bsmtp_pix_workaround_threshold_time\b;<a href="postconf.5.html#smtp_pix_workaround_threshold_time">$&</a>;g;
     s;\bsmtp_quit_timeout\b;<a href="postconf.5.html#smtp_quit_timeout">$&</a>;g;
index 091c4e562c740a31c8233da83eebd2ec70a20bfb..ef1fb069c453102f280adc673b29887f008d39a0 100644 (file)
@@ -416,7 +416,9 @@ parameters when it delivers an address verification probe message.
 
 <p> First, the address_verify_relayhost parameter allows you to
 override the relayhost setting, and the address_verify_transport_maps
-parameter allows you to override the transport_maps setting. </p>
+parameter allows you to override the transport_maps setting. 
+The address_verify_sender_dependent_relayhost_maps parameter
+does the same for sender-dependent relayhost selection. </p>
 
 <p> Second, each address class is given its own address verification
 version of the message delivery transport, as shown in the table
index 2809d39f6cd84781f7abd00d366233f9962358d3..35230c37af80e52b50fa3228661b8e31991309f0 100644 (file)
@@ -333,7 +333,7 @@ This feature is available in Postfix 2.1 and later.
 
 <p>
 Overrides the relayhost parameter setting for address verification
-probes.
+probes. This information can be overruled with the transport(5) table.
 </p>
 
 <p>
@@ -526,7 +526,7 @@ remote_header_rewrite_domain parameter specifies a non-empty value.
  
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all". </p>
 
 <p>
@@ -718,7 +718,7 @@ remote_header_rewrite_domain parameter specifies a non-empty value.
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all". </p>
 
 <p>
@@ -1006,7 +1006,7 @@ address, or Recipient address. </dd>
 <dd>The numerical SMTP response code, as specified with the
 maps_rbl_reject_code configuration parameter. Note: The numerical
 SMTP response code is required, and must appear at the start of the
-reply. With Postfix 2.3 and later this information may be followed
+reply. With Postfix version 2.3 and later this information may be followed
 by an RFC 3463 enhanced status code. </dd>
 
 <dt><b>$rbl_domain</b></dt>
@@ -1098,10 +1098,14 @@ and qmgr_message_recipient_minimum.
 %PARAM default_transport smtp
 
 <p>
-The default mail delivery transport for domains that do not match
-$mydestination, $inet_interfaces, $proxy_interfaces,
-$virtual_alias_domains, $virtual_mailbox_domains, or $relay_domains.
-This information can be overruled with the transport(5) table.
+The default mail delivery transport and next-hop destination for
+destinations that do not match $mydestination, $inet_interfaces,
+$proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
+or $relay_domains.  In order of decreasing precedence, the nexthop
+destination is taken from $default_transport,
+$sender_dependent_relayhost_maps, $relayhost, or from the recipient
+domain. This information can be overruled with the transport(5)
+table.
 </p>
 
 <p>
@@ -1208,7 +1212,7 @@ duplicate elimination on the rewritten recipient address only, and
 generates empty original recipient queue file records.  </p>
 
 <p> This feature is available in Postfix 2.1 and later. With Postfix
-2.0, support for the X-Original-To message header is always turned
+version 2.0, support for the X-Original-To message header is always turned
 on. Postfix versions before 2.0 have no support for the X-Original-To
 message header.  </p>
 
@@ -1223,7 +1227,7 @@ time keeping on System-V-ish systems.
 <p>
 Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. The name=value form is supported with
-Postfix 2.1 and later.
+Postfix version 2.1 and later.
 </p>
 
 <p>
@@ -1626,7 +1630,7 @@ parameters:
 
 <p> Specify a list of names and/or name=value pairs, separated by
 whitespace or comma. The name=value form is supported with
-Postfix 2.1 and later.  </p>
+Postfix version 2.1 and later.  </p>
 
 %PARAM in_flow_delay 1s
 
@@ -1650,7 +1654,7 @@ Specify 0 to disable the feature. Valid delays are 0..10.
 <p> The network interface addresses that this mail system receives
 mail on. Specify "all" to receive mail on all network
 interfaces (default), and "loopback-only" to receive mail
-on loopback network interfaces only (Postfix 2.2 and later).  The
+on loopback network interfaces only (Postfix version 2.2 and later).  The
 parameter also controls delivery of mail to <tt>user@[ip.address]</tt>.
 </p>
 
@@ -1696,9 +1700,9 @@ Examples:
 
 <pre>
 inet_interfaces = all (DEFAULT)
-inet_interfaces = loopback-only (Postfix 2.2 and later)
+inet_interfaces = loopback-only (Postfix version 2.2 and later)
 inet_interfaces = 127.0.0.1
-inet_interfaces = 127.0.0.1, [::1] (Postfix 2.2 and later)
+inet_interfaces = 127.0.0.1, [::1] (Postfix version 2.2 and later)
 inet_interfaces = 192.168.1.2, 127.0.0.1
 </pre>
 
@@ -1710,7 +1714,7 @@ or "ipv6", separated by whitespace or commas. The form
 "all" is equivalent to "ipv4, ipv6" or "ipv4", depending
 on whether the operating system implements IPv6. </p>
 
-<p> This feature is available in Postfix version 2.2 and later. </p>
+<p> This feature is available in Postfix 2.2 and later. </p>
 
 <p> Note: you MUST stop and start Postfix after changing this
 parameter. </p>
@@ -2091,9 +2095,10 @@ local_recipient_maps =
 
 %PARAM local_transport local:$myhostname
 
-<p> The default mail delivery transport for domains that match
-$mydestination, $inet_interfaces or $proxy_interfaces.  This
-information can be overruled with the transport(5) table.  </p>
+<p> The default mail delivery transport and next-hop destination
+for final delivery to domains listed with mydestination, and for
+[ipaddress] destinations that match $inet_interfaces or $proxy_interfaces.
+This information can be overruled with the transport(5) table. </p>
 
 <p>
 By default, local mail is delivered to the transport called "local",
@@ -2214,7 +2219,7 @@ or daemon.  PLEASE USE A DEDICATED USER ID AND GROUP ID.
 
 <p>
 When this parameter value is changed you need to re-run "<b>postfix
-set-permissions</b>" (with Postfix 2.0 and earlier:
+set-permissions</b>" (with Postfix version 2.0 and earlier:
 "<b>/etc/postfix/post-install set-permissions</b>".
 </p>
 
@@ -2270,22 +2275,22 @@ The following environment variables are exported to the command:
 
 <dt><b>CLIENT_ADDRESS</b></dt>
 
-<dd>Remote client network address. Available in Postfix 2.2 and
+<dd>Remote client network address. Available in Postfix version 2.2 and
 later. </dd>
 
 <dt><b>CLIENT_HELO</b></dt>
 
-<dd>Remote client EHLO command parameter. Available in Postfix 2.2
+<dd>Remote client EHLO command parameter. Available in Postfix version 2.2
 and later.</dd>
 
 <dt><b>CLIENT_HOSTNAME</b></dt>
 
-<dd>Remote client hostname. Available in Postfix 2.2 and later.
+<dd>Remote client hostname. Available in Postfix version 2.2 and later.
 </dd>
 
 <dt><b>CLIENT_PROTOCOL</b></dt>
 
-<dd>Remote client protocol. Available in Postfix 2.2 and later.
+<dd>Remote client protocol. Available in Postfix version 2.2 and later.
 </dd>
 
 <dt><b>DOMAIN</b></dt>
@@ -2315,17 +2320,17 @@ and later.</dd>
 <dt><b>SASL_METHOD</b></dt>
 
 <dd>SASL authentication method specified in the remote client AUTH
-command. Available in Postfix 2.2 and later. </dd>
+command. Available in Postfix version 2.2 and later. </dd>
 
 <dt><b>SASL_SENDER</b></dt>
 
 <dd>SASL sender address specified in the remote client MAIL FROM
-command. Available in Postfix 2.2 and later. </dd>
+command. Available in Postfix version 2.2 and later. </dd>
 
 <dt><b>SASL_USER</b></dt>
 
 <dd>SASL username specified in the remote client AUTH command.
-Available in Postfix 2.2 and later.  </dd>
+Available in Postfix version 2.2 and later.  </dd>
 
 <dt><b>SENDER</b></dt>
 
@@ -2470,7 +2475,7 @@ remote_header_rewrite_domain parameter specifies a non-empty value.
 
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all". </p>
 
 
@@ -3001,7 +3006,7 @@ server to decide if it will accept any mail at all.
 </p>
 
 <p>
-By default, the Postfix 2.1 SMTP server rejects MAIL FROM commands
+By default, the Postfix version 2.1 SMTP server rejects MAIL FROM commands
 when the amount of free space is less than 1.5*$message_size_limit.
 To specify a higher minimum free space limit, specify a queue_minfree
 value that is at least 1.5*$message_size_limit.
@@ -3274,9 +3279,10 @@ This feature is available in Postfix 2.0 and later.
 %PARAM relayhost 
 
 <p>
-The default host to send non-local mail to when no entry is matched
-in the optional transport(5) table. When no relayhost is given,
-mail is routed directly to the destination.
+The next-hop destination of non-local mail; overrides non-local
+domains in recipient addresses. This information is overruled with
+relay_transport, default_transport, sender_dependent_relayhost_maps
+and with the transport(5) table.
 </p>
 
 <p>
@@ -3362,7 +3368,7 @@ backup MX service for Sendmail systems.  </p>
 local hostname were specified, instead of rejecting the address as
 invalid.  </p>
 
-<p> This feature is available in Postfix version 2.1 and later.
+<p> This feature is available in Postfix 2.1 and later.
 Earlier versions always resolve the null domain as the local
 hostname.  </p>
 
@@ -3498,7 +3504,7 @@ An optional numerical network address that the SMTP client should
 bind to when making an IPv6 connection.
 </p>
 
-<p> This feature is available in Postfix version 2.2 and later. </p>
+<p> This feature is available in Postfix 2.2 and later. </p>
 
 <p>
 This can be specified in the main.cf file for all SMTP clients, or
@@ -3565,7 +3571,7 @@ delivery latency becomes effectively that of the slowest MX host
 divided by the total number of MX hosts. </p>
 
 <p> The solution uses connection caching in a way that differs from
-Postfix 2.2.  By limiting the amount of time during which a connection
+Postfix version 2.2.  By limiting the amount of time during which a connection
 can be used repeatedly (instead of limiting the number of deliveries
 over that connection), Postfix not only restores fairness in the
 distribution of simultaneous connections across a set of MX hosts,
@@ -3577,7 +3583,7 @@ smtp transaction timeouts which are fair estimates of maximum excess
 latency for a slow delivery.  Note that hosts may accept thousands
 of messages over a single connection within the default connection
 reuse time limit. This number is much larger than the default Postfix
-2.2 limit of 10 messages per cached connection. It may prove necessary
+version 2.2 limit of 10 messages per cached connection. It may prove necessary
 to lower the limit to avoid interoperability issues with MTAs that
 exhibit bugs when many messages are delivered via a single connection.
 A lower reuse time limit risks losing the benefit of connection
@@ -3738,7 +3744,7 @@ via the relay message delivery transport. This limit is enforced
 by the queue manager. The message delivery transport name is the
 first field in the entry in the master.cf file.  </p>
 
-<p> This feature is available in Postfix version 2.0 and later. </p>
+<p> This feature is available in Postfix 2.0 and later. </p>
 
 %PARAM relay_destination_recipient_limit $default_destination_recipient_limit
 
@@ -3751,7 +3757,7 @@ the entry in the master.cf file.  </p>
 relay_destination_concurrency_limit from concurrency per domain
 into concurrency per recipient.  </p>
 
-<p> This feature is available in Postfix version 2.0 and later. </p>
+<p> This feature is available in Postfix 2.0 and later. </p>
 
 %PARAM smtp_destination_concurrency_limit $default_destination_concurrency_limit
 
@@ -3890,7 +3896,7 @@ The default time unit is s (seconds).
 <p>
 The maximal number of MX (mail exchanger) IP addresses that can
 result from mail exchanger lookups, or zero (no limit). Prior to
-Postfix 2.3, this limit was disabled by default.
+Postfix version 2.3, this limit was disabled by default.
 </p>
 
 <p>
@@ -3902,8 +3908,8 @@ This feature is available in Postfix 2.1 and later.
 <p> The maximal number of SMTP sessions per delivery request before
 giving up or delivering to a fall-back relay host, or zero (no
 limit). This restriction ignores sessions that fail to complete the
-SMTP initial handshake (Postfix 2.2 and earlier) or that fail to
-complete the EHLO and TLS handshake (Postfix 2.3 and later).  </p>
+SMTP initial handshake (Postfix version 2.2 and earlier) or that fail to
+complete the EHLO and TLS handshake (Postfix version 2.3 and later).  </p>
 
 <p> This feature is available in Postfix 2.1 and later.  </p>
 
@@ -4002,8 +4008,8 @@ smtp_sasl_auth_enable = yes
 
 <p>
 Optional SMTP client lookup tables with one username:password entry
-per remote hostname or domain (or per sender address, when per-sender
-authentication is enabled).  If no username:password entry is found,
+per remote hostname or domain, or sender address when sender-dependent
+authentication is enabled.  If no username:password entry is found,
 then the Postfix SMTP client will not
 attempt to authenticate to the remote host.
 </p>
@@ -4117,7 +4123,7 @@ By default, Postfix moves on the next mail exchanger. Specify
 immediately.
 </p>
 
-<p> This feature is available in Postfix version 2.0 and earlier.
+<p> This feature is available in Postfix 2.0 and earlier.
 Later Postfix versions always skip SMTP servers that greet with a
 4XX status code. </p>
 
@@ -4192,8 +4198,8 @@ time with a per recipient return address.  </p>
 
 <p> By default, no clients are allowed to specify XVERP.  </p>
 
-<p> This parameter was renamed with Postfix 2.1. The default value
-is backwards compatible with Postfix 2.0.  </p>
+<p> This parameter was renamed with Postfix version 2.1. The default value
+is backwards compatible with Postfix version 2.0.  </p>
 
 <p> Specify a list of network/netmask patterns, separated by commas
 and/or whitespace. The mask specifies the number of bits in the
@@ -4515,7 +4521,7 @@ client network address information.
 
 <dd>When the remote SMTP client certificate is verified successfully,
 use the client certificate fingerprint as lookup key for the specified
-access(5) database. This feature is available with Postfix 2.2.</dd>
+access(5) database. This feature is available with Postfix version 2.2.</dd>
 
 <dt><b><a name="check_client_access">check_client_access</a> <i><a href="DATABASE_README.html">type:table</a></i></b></dt>
 
@@ -4545,13 +4551,13 @@ authenticated via the RFC 2554 (AUTH) protocol. </dd>
 verified successfully.  This option must be used only if a special
 CA issues the certificates and only this CA is listed as trusted
 CA, otherwise all clients with a recognized certificate would be
-allowed to relay. This feature is available with Postfix 2.2.</dd>
+allowed to relay. This feature is available with Postfix version 2.2.</dd>
 
 <dt><b><a name="permit_tls_clientcerts">permit_tls_clientcerts</a></b></dt>
 
 <dd>Permit the request when the remote SMTP client certificate is
 verified successfully, and the certificate fingerprint is listed
-in $relay_clientcerts. This feature is available with Postfix 2.2.</dd>
+in $relay_clientcerts. This feature is available with Postfix version 2.2.</dd>
 <dt><b><a name="reject_rbl_client">reject_rbl_client <i>rbl_domain=d.d.d.d</i></a></b></dt>
 
 <dd>Reject the request when the reversed client network address is
@@ -4597,7 +4603,7 @@ also that the two mappings reproduce the client IP address.  <br>
 The unknown_client_reject_code parameter specifies the response
 code for rejected requests (default: 450).  The reply is always 450
 in case the address-&gt;name lookup failed due to a temporary
-problem. <br> This feature is available in Postfix version 2.3 and
+problem. <br> This feature is available in Postfix 2.3 and
 later.  </dd>
 
 #<dt><b><a name="reject_unknown_forward_client_hostname">reject_unknown_forward_client_hostname</a></b></dt>
@@ -4641,14 +4647,14 @@ the SMTP server reply code (default: 450).</dd>
 <dd>Defer the request if some later restriction would result in an
 explicit or implicit PERMIT action.  This is useful when a blacklisting
 feature fails due to a temporary problem.  This feature is available
-in Postfix 2.1 and later.  </dd>
+in Postfix version 2.1 and later.  </dd>
 
 <dt><b><a name="defer_if_reject">defer_if_reject</a></b></dt>
 
 <dd>Defer the request if some later restriction would result in a
 REJECT action.  This is useful when a whitelisting feature fails
 due to a temporary problem.  This feature is available in Postfix
-2.1 and later.  </dd>
+version 2.1 and later.  </dd>
 
 <dt><b><a name="permit">permit</a></b></dt>
 
@@ -4751,7 +4757,7 @@ client makes without delivering mail.
 <ul>
 
 <li><p>When the error counter is less than $smtpd_soft_error_limit the
-Postfix SMTP server replies immediately (Postfix 2.0 and earlier
+Postfix SMTP server replies immediately (Postfix version 2.0 and earlier
 delay their 4xx or 5xx error response). </p>
 
 <li><p>When the error counter reaches $smtpd_soft_error_limit, the Postfix
@@ -4764,12 +4770,12 @@ SMTP server breaks the connection. </p>
 
 %PARAM smtpd_error_sleep_time 1s
 
-<p>With Postfix 2.1 and later: the SMTP server response delay after
+<p>With Postfix version 2.1 and later: the SMTP server response delay after
 a client has made more than $smtpd_soft_error_limit errors, and
 fewer than $smtpd_hard_error_limit errors, without delivering mail.
 </p>
 
-<p>With Postfix 2.0 and earlier: the SMTP server delay before
+<p>With Postfix version 2.0 and earlier: the SMTP server delay before
 sending a reject (4xx or 5xx) response, when the client has made
 fewer than $smtpd_soft_error_limit errors without delivering
 mail. </p>
@@ -5234,7 +5240,7 @@ parameter specifies the response code for rejected requests (default:
 554); the default_rbl_reply parameter specifies the default server
 reply; and the rbl_reply_maps parameter specifies tables with server
 replies indexed by <i>rbl_domain</i>.  This feature is available
-in Postfix 2.0 and later.</dd>
+in Postfix version 2.0 and later.</dd>
 
 <dt><b><a name="reject_unauth_destination">reject_unauth_destination</a></b></dt>
 
@@ -5259,12 +5265,12 @@ code for rejected requests (default: 554). </dd>
 <dd>Reject the request when Postfix is not final destination for
 the recipient address, and the RCPT TO address has no DNS A or MX
 record, or when it has a malformed MX record such as a record with
-a zero-length MX hostname (Postfix 2.3 and later). <br> The
+a zero-length MX hostname (Postfix version 2.3 and later). <br> The
 unknown_address_reject_code parameter specifies the response code
 for rejected requests (default: 450).  The response is always 450
 in case of a temporary DNS error.</dd>
 
-<dt><b><a name="reject_unlisted_recipient">reject_unlisted_recipient</a></b> (with Postfix 2.0: check_recipient_maps)</dt>
+<dt><b><a name="reject_unlisted_recipient">reject_unlisted_recipient</a></b> (with Postfix version 2.0: check_recipient_maps)</dt>
 
 <dd> Reject the request when the RCPT TO address is not listed in
 the list of valid recipients for its domain class. See the
@@ -5599,7 +5605,7 @@ Postfix version 2.1 and later. </dd>
 <dd>Reject the request when Postfix is not final destination for
 the sender address, and the MAIL FROM address has no DNS A or MX
 record, or when it has a malformed MX record such as a record with
-a zero-length MX hostname (Postfix 2.3 and later). <br> The
+a zero-length MX hostname (Postfix version 2.3 and later). <br> The
 unknown_address_reject_code parameter specifies the response code
 for rejected requests (default: 450).  The response is always 450
 in case of a temporary DNS error.  </dd>
@@ -5739,7 +5745,7 @@ remote_header_rewrite_domain parameter specifies a non-empty value.
  
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all". </p>
 
 <p>
@@ -5944,7 +5950,7 @@ in the ADDRESS_CLASS_README file </p>
 
 <p>
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 </p>
 
 <p>
@@ -5998,7 +6004,7 @@ manipulations see the ADDRESS_REWRITING_README document.
 
 <p>
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 </p>
 
 <p>
@@ -6117,7 +6123,7 @@ remote_header_rewrite_domain parameter specifies a non-empty value.
  
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all". </p>
 
 %PARAM append_dot_mydomain yes
@@ -6150,7 +6156,7 @@ remote_header_rewrite_domain parameter specifies a non-empty value.
  
 </ul>
 
-<p> To get the behavior before Postfix 2.2, specify
+<p> To get the behavior before Postfix version 2.2, specify
 "local_header_rewrite_clients = static:all". </p>
 
 %PARAM application_event_drain_time 100s
@@ -6331,8 +6337,8 @@ The default time unit is s (seconds).
 
 <p> Report mail delivery errors to the address specified with the
 non-standard Errors-To: message header, instead of the envelope
-sender address (this feature is removed with Postfix 2.2, is
-turned off by default with Postfix 2.1, and is always turned on
+sender address (this feature is removed with Postfix version 2.2, is
+turned off by default with Postfix version 2.1, and is always turned on
 with older Postfix versions).  </p>
 
 %PARAM extract_recipient_limit 10240
@@ -6343,7 +6349,7 @@ from message headers when mail is submitted with "<b>sendmail -t</b>".
 </p>
 
 <p>
-This feature was removed in Postfix 2.1.
+This feature was removed in Postfix version 2.1.
 </p>
 
 %PARAM anvil_rate_time_unit 60s
@@ -6355,7 +6361,7 @@ are calculated.
 
 <p>
 This feature is implemented by the anvil(8) service which is not
-part of the stable Postfix 2.1 release.
+part of the stable Postfix version 2.1 release.
 </p>
 
 <p>
@@ -6434,7 +6440,7 @@ encoded in the envelope sender address.  The VERP_README file
 describes configuration and operation details of Postfix support
 for variable envelope return path addresses.  VERP style delivery
 is requested with the SMTP XVERP command or with the "<b>sendmail
--V</b>" command-line option and is available in Postfix version 
+-V</b>" command-line option and is available in Postfix 
 1.1 and later.
 </p>
 
@@ -7071,9 +7077,12 @@ configure or operate a specific Postfix subsystem or feature.
 %PARAM relay_transport relay
 
 <p>
-The default mail delivery transport and next-hop information for
-domains that match the $relay_domains parameter value. This
-information can be overruled with the transport(5) table.
+The default mail delivery transport and next-hop destination for
+remote delivery to domains listed with $relay_domains. In order of
+decreasing precedence, the nexthop destination is taken from
+$relay_transport, $sender_dependent_relayhost_maps, $relayhost, or
+from the recipient domain. This information can be overruled with
+the transport(5) table.
 </p>
 
 <p>
@@ -7113,8 +7122,8 @@ The name of the directory with example Postfix configuration files.
 %PARAM sender_based_routing no
 
 <p>
-This parameter should not be used. It was replaced by sender_relayhost_maps
-in Postfix 2.3.
+This parameter should not be used. It was replaced by sender_dependent_relayhost_maps
+in Postfix version 2.3.
 </p>
 
 %PARAM sendmail_path see "postconf -d" output
@@ -7142,7 +7151,7 @@ The default time unit is s (seconds).
 <p>
 The group ownership of set-gid Postfix commands and of group-writable
 Postfix directories. When this parameter value is changed you need
-to re-run "<b>postfix set-permissions</b>" (with Postfix 2.0 and
+to re-run "<b>postfix set-permissions</b>" (with Postfix version 2.0 and
 earlier: "<b>/etc/postfix/post-install set-permissions</b>".
 </p>
 
@@ -7617,7 +7626,7 @@ configuration parameter.  </p>
 
 <p>
 This feature is available in Postfix 2.0 and later. The default
-value is backwards compatible with Postfix 1.1.
+value is backwards compatible with Postfix version 1.1.
 </p>
 
 %PARAM virtual_mailbox_limit 51200000
@@ -7704,9 +7713,9 @@ deferred.
 %PARAM virtual_transport virtual
 
 <p>
-The default mail delivery transport for domains that match the
-$virtual_mailbox_domains parameter value. This information can
-be overruled with the transport(5) table.
+The default mail delivery transport and next-hop destination for
+final delivery to domains listed with virtual_mailbox_domains.
+This information can be overruled with the transport(5) table.
 </p>
 
 <p>
@@ -7779,7 +7788,7 @@ parameter in the default main.cf file.  </p>
 addresses are aliased to addresses in other local or remote domains,
 and b) addresses that are aliased to addresses in other local or
 remote domains.  Available before Postfix version 2.0. With Postfix
-2.0 and later, this is replaced by separate controls: virtual_alias_domains
+version 2.0 and later, this is replaced by separate controls: virtual_alias_domains
 and virtual_alias_maps. </p>
 
 %PARAM smtp_discard_ehlo_keywords
@@ -8230,7 +8239,7 @@ relay_clientcerts = hash:/etc/postfix/relay_clientcerts
 an appropriate access(5) policy for each client.
 See RESTRICTION_CLASS_README.</p>
 
-<p>This feature is available with Postfix 2.2.</p>
+<p>This feature is available with Postfix version 2.2.</p>
 
 %PARAM smtpd_tls_cipherlist
 
@@ -8694,10 +8703,10 @@ precision.  </p>
 %PARAM bounce_template_file empty
 
 <p> Pathname of a configuration file with bounce message templates.
-These override the bounce(8) server built-in templates of delivery
-status notification (DSN) messages for undeliverable mail, for
-delayed mail, for successful delivery, or for mail delivery
-verification. </p>
+These override the built-in templates of delivery status notification
+(DSN) messages for undeliverable mail, for delayed mail, successful
+delivery, or delivery verification. The bounce(5) manual page
+describes how to edit and test template files.  </p>
 
 <p> Template message body text may contain $name references to
 Postfix configuration parameters. The result of $name expansion can
@@ -8706,20 +8715,21 @@ is placed into the Postfix configuration directory.  </p>
 
 <p> This feature is available in Postfix 2.3 and later.  </p>
 
-%PARAM sender_relayhost_maps empty
+%PARAM sender_dependent_relayhost_maps empty
 
-<p> A sender-specific override for the global relayhost parameter
+<p> A sender-dependent override for the global relayhost parameter
 setting. The tables are searched by the sender address and by the
-sender @domain. </p>
+sender @domain. This information is overruled with relay_transport,
+default_transport and with the transport(5) table. </p>
 
 <p>
 This feature is available in Postfix 2.3 and later.
 </p>
 
-%PARAM address_verify_sender_relayhost_maps empty
+%PARAM address_verify_sender_dependent_relayhost_maps empty
 
 <p>
-Overrides the sender_relayhost_maps parameter setting for address
+Overrides the sender_dependent_relayhost_maps parameter setting for address
 verification probes.
 </p>
 
@@ -8727,14 +8737,13 @@ verification probes.
 This feature is available in Postfix 2.3 and later.
 </p>
 
-%PARAM smtp_per_sender_authentication no
+%PARAM smtp_sender_dependent_authentication no
 
 <p>
-Enable per-sender authentication in the SMTP client; this is available
-only with SASL authentication, and disables SMTP connection caching
-to ensure that mail from different senders will use the appropriate
-credentials.
-</p>
+Enable sender-dependent authentication in the SMTP client; this is
+available only with SASL authentication, and disables SMTP connection
+caching to ensure that mail from different senders will use the
+appropriate credentials.  </p>
 
 <p>
 This feature is available in Postfix 2.3 and later.
index f096779f48170b86911f9a17a4b25236b887ef6c..8ad53e2cce4c67553bb9fc6b2040dd0c65720379 100644 (file)
 #      This is the default for remote delivery to domains listed
 #      with \fBrelay_domains\fR. In order of decreasing precedence,
 #      the \fInexthop\fR destination is taken from \fBrelay_transport\fR,
-#      \fBsender_relayhost_maps\fR, \fBrelayhost\fR, or from the
+#      \fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from the
 #      recipient domain.
 # .IP "\fBdefault_transport (default: smtp:)\fR"
 #      This is the default for remote delivery to other destinations.
 #      In order of decreasing precedence, the \fInexthop\fR
 #      destination is taken from \fBdefault_transport\fR,
-#      \fBsender_relayhost_maps\fR, \fBrelayhost\fR, or from the
+#      \fBsender_dependent_relayhost_maps\fR, \fBrelayhost\fR, or from the
 #      recipient domain.
 # .PP
 #      Normally, the \fBtransport\fR(5) table is specified as a text file
index eb2e0167dfa641587e7aac1c810f4e2c77149a55..99ded09665781c668dc898517051715c14b5aeca 100644 (file)
@@ -407,6 +407,7 @@ static const char *bounce_template_lookup(const char *key, int unused_mode,
                                 tp->origin, tp->class, key);
                        msg_warn("please reduce time unit \"%s\" of \"%s\" "
                              "in %s template", bd->suffix, key, tp->class);
+                       msg_warn("for instructions see the bounce(5) manual");
                    }
                    if (buf == 0)
                        buf = vstring_alloc(10);
index 1f76e7ca8689ccc0e405cb8b6c13b57f0a10262e..fc513fe02513603abfba5c5477dd8b04e4d2be69 100644 (file)
@@ -185,7 +185,7 @@ extern char *var_masq_classes;
 #define DEF_RELAYHOST          ""
 extern char *var_relayhost;
 
-#define VAR_SND_RELAY_MAPS     "sender_relayhost_maps"
+#define VAR_SND_RELAY_MAPS     "sender_dependent_relayhost_maps"
 #define DEF_SND_RELAY_MAPS     ""
 extern char *var_snd_relay_maps;
 
@@ -2156,7 +2156,7 @@ extern char *var_vrfy_def_xport;
 #define DEF_VRFY_RELAYHOST             "$" VAR_RELAYHOST
 extern char *var_vrfy_relayhost;
 
-#define VAR_VRFY_RELAY_MAPS            "address_verify_sender_relayhost_maps"
+#define VAR_VRFY_RELAY_MAPS            "address_verify_sender_dependent_relayhost_maps"
 #define DEF_VRFY_RELAY_MAPS            "$" VAR_SND_RELAY_MAPS
 extern char *var_vrfy_relay_maps;
 
@@ -2413,9 +2413,9 @@ extern int var_delay_max_res;
 extern char *var_bounce_tmpl;
 
  /*
-  * Per-sender authentication.
+  * Sender-dependent authentication.
   */
-#define VAR_SMTP_SENDER_AUTH   "smtp_per_sender_authentication"
+#define VAR_SMTP_SENDER_AUTH   "smtp_sender_dependent_authentication"
 #define DEF_SMTP_SENDER_AUTH   0
 extern bool var_smtp_sender_auth;
 
index 731c190b44d68fe64e5263c80570e8a91fa5d9d7..143d31f277468145f2c4de91dbd7f4311e1773c6 100644 (file)
@@ -20,7 +20,7 @@
   * Patches change both the patchlevel and the release date. Snapshots have no
   * patchlevel; they change the release date only.
   */
-#define MAIL_RELEASE_DATE      "20051124"
+#define MAIL_RELEASE_DATE      "20051125"
 #define MAIL_VERSION_NUMBER    "2.3"
 
 #ifdef SNAPSHOT
index 123d0fe686b9dfa9f6db8dd615656c84551b155d..7dd7147a3537c3c67ee626eeaa98111bb8f8c397 100644 (file)
 /*     const char *address;
 /*     RESOLVE_REPLY *reply;
 /*
+/*     void    resolve_clnt_query_from(sender, address, reply)
+/*     const char *sender;
+/*     const char *address;
+/*     RESOLVE_REPLY *reply;
+/*
 /*     void    resolve_clnt_verify(address, reply)
 /*     const char *address;
 /*     RESOLVE_REPLY *reply;
 /*
+/*     void    resolve_clnt_verify_from(sender, address, reply)
+/*     const char *sender;
+/*     const char *address;
+/*     RESOLVE_REPLY *reply;
+/*
 /*     void    resolve_clnt_free(reply)
 /*     RESOLVE_REPLY *reply;
 /* DESCRIPTION
 /*     resolve_clnt_verify() implements an alternative version that can
 /*     be used for address verification.
 /*
+/*     resolve_clnt_query_from() and resolve_clnt_verify_from()
+/*     allow the caller to supply sender context that will be used
+/*     for sender-dependent relayhost lookup.
+/*
 /*     In the resolver reply, the flags member is the bit-wise OR of
 /*     zero or more of the following:
 /* .IP RESOLVE_FLAG_FINAL
@@ -59,9 +73,6 @@
 /*     The address resolved to something that has invalid syntax.
 /* .IP RESOLVE_FLAG_FAIL
 /*     The request could not be completed.
-/* .IP RESOLVE_FLAG_SMARTHOST
-/*     The client may override the next-hop host with per-sender
-/*     relay host information.
 /* .PP
 /*     In addition, the address domain class is returned by setting
 /*     one of the following flags (this is preliminary code awaiting
 extern CLNT_STREAM *rewrite_clnt_stream;
 
 static VSTRING *last_class;
+static VSTRING *last_sender;
 static VSTRING *last_addr;
 static RESOLVE_REPLY last_reply;
 
@@ -146,7 +158,8 @@ void    resolve_clnt_init(RESOLVE_REPLY *reply)
 
 /* resolve_clnt - resolve address to (transport, next hop, recipient) */
 
-void    resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
+void    resolve_clnt(const char *class, const char *sender,
+                            const char *addr, RESOLVE_REPLY *reply)
 {
     char   *myname = "resolve_clnt";
     VSTREAM *stream;
@@ -157,6 +170,7 @@ void    resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
      */
     if (last_addr == 0) {
        last_class = vstring_alloc(10);
+       last_sender = vstring_alloc(10);
        last_addr = vstring_alloc(100);
        resolve_clnt_init(&last_reply);
     }
@@ -176,14 +190,15 @@ void    resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
 #define IFSET(flag, text) ((reply->flags & (flag)) ? (text) : "")
 
     if (*addr && strcmp(addr, STR(last_addr)) == 0
-       && strcmp(class, STR(last_class)) == 0) {
+       && strcmp(class, STR(last_class)) == 0
+       && strcmp(sender, STR(last_sender)) == 0) {
        vstring_strcpy(reply->transport, STR(last_reply.transport));
        vstring_strcpy(reply->nexthop, STR(last_reply.nexthop));
        vstring_strcpy(reply->recipient, STR(last_reply.recipient));
        reply->flags = last_reply.flags;
        if (msg_verbose)
-           msg_info("%s: cached: `%s' -> transp=`%s' host=`%s' rcpt=`%s' flags=%s%s%s%s class=%s%s%s%s%s",
-                    myname, addr, STR(reply->transport),
+           msg_info("%s: cached: `%s' -> `%s' -> transp=`%s' host=`%s' rcpt=`%s' flags=%s%s%s%s class=%s%s%s%s%s",
+                    myname, sender, addr, STR(reply->transport),
                     STR(reply->nexthop), STR(reply->recipient),
                     IFSET(RESOLVE_FLAG_FINAL, "final"),
                     IFSET(RESOLVE_FLAG_ROUTED, "routed"),
@@ -213,6 +228,7 @@ void    resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
        errno = 0;
        if (attr_print(stream, ATTR_FLAG_NONE,
                       ATTR_TYPE_STR, MAIL_ATTR_REQ, class,
+                      ATTR_TYPE_STR, MAIL_ATTR_SENDER, sender,
                       ATTR_TYPE_STR, MAIL_ATTR_ADDR, addr,
                       ATTR_TYPE_END) != 0
            || vstream_fflush(stream)
@@ -258,6 +274,7 @@ void    resolve_clnt(const char *class, const char *addr, RESOLVE_REPLY *reply)
      * Update the cache.
      */
     vstring_strcpy(last_class, class);
+    vstring_strcpy(last_sender, sender);
     vstring_strcpy(last_addr, addr);
     vstring_strcpy(last_reply.transport, STR(reply->transport));
     vstring_strcpy(last_reply.nexthop, STR(reply->nexthop));
index 8f012a133abd0e41be233c4b1a2f289f34f2094b..a198bfdaf41580bcddc8f41ac90848c4d9d8d91c 100644 (file)
@@ -26,7 +26,6 @@
 #define RESOLVE_FLAG_ROUTED    (1<<1)  /* routed destination */
 #define RESOLVE_FLAG_ERROR     (1<<2)  /* bad destination syntax */
 #define RESOLVE_FLAG_FAIL      (1<<3)  /* request failed */
-#define RESOLVE_FLAG_SMARTHOST (1<<4)  /* smarthost route */
 
 #define RESOLVE_CLASS_LOCAL    (1<<8)  /* mydestination/inet_interfaces */
 #define RESOLVE_CLASS_ALIAS    (1<<9)  /* virtual_alias_domains */
@@ -46,14 +45,23 @@ typedef struct RESOLVE_REPLY {
     VSTRING *nexthop;
     VSTRING *recipient;
     int     flags;
-}       RESOLVE_REPLY;
+} RESOLVE_REPLY;
 
 extern void resolve_clnt_init(RESOLVE_REPLY *);
-extern void resolve_clnt(const char *, const char *, RESOLVE_REPLY *);
+extern void resolve_clnt(const char *, const char *, const char *, RESOLVE_REPLY *);
 extern void resolve_clnt_free(RESOLVE_REPLY *);
 
-#define resolve_clnt_query(a, r) resolve_clnt(RESOLVE_REGULAR, (a), (r))
-#define resolve_clnt_verify(a, r) resolve_clnt(RESOLVE_VERIFY, (a), (r))
+#define RESOLVE_NULL_FROM      ""
+
+#define resolve_clnt_query(a, r) \
+       resolve_clnt(RESOLVE_REGULAR, RESOLVE_NULL_FROM, (a), (r))
+#define resolve_clnt_verify(a, r) \
+       resolve_clnt(RESOLVE_VERIFY, RESOLVE_NULL_FROM, (a), (r))
+
+#define resolve_clnt_query_from(f, a, r) \
+       resolve_clnt(RESOLVE_REGULAR, (f), (a), (r))
+#define resolve_clnt_verify_from(f, a, r) \
+       resolve_clnt(RESOLVE_VERIFY, (f), (a), (r))
 
 #define RESOLVE_CLNT_ASSIGN(reply, transport, nexthop, recipient) { \
        (reply).transport = (transport); \
index 23ddfbef0d9ec89624777187a5d2d1ef338d1fd9..11432965aacf419b76ceaf49af571865ab31e72a 100644 (file)
@@ -105,7 +105,9 @@ extern TOK822 *tok822_rewrite(TOK822 *, const char *);
  /*
   * tok822_resolve.c
   */
-extern void tok822_resolve(TOK822 *, RESOLVE_REPLY *);
+#define tok822_resolve(t, r) tok822_resolve_from(RESOLVE_NULL_FROM, (t), (r))
+
+extern void tok822_resolve_from(const char *, TOK822 *, RESOLVE_REPLY *);
 
 /* LICENSE
 /* .ad
index ae491ff2d223532a4bf2d79753481b30ecc9e419..f178aaf9a9314cddf527dcde199c037b6a253e36 100644 (file)
@@ -9,10 +9,18 @@
 /*     void    tok822_resolve(addr, reply)
 /*     TOK822  *addr;
 /*     RESOLVE_REPLY *reply;
+/*
+/*     void    tok822_resolve_from(sender, addr, reply)
+/*     const char *sender;
+/*     TOK822  *addr;
+/*     RESOLVE_REPLY *reply;
 /* DESCRIPTION
 /*     tok822_resolve() takes an address token tree and finds out the
 /*     transport to deliver via, the next-hop host on that transport,
 /*     and the recipient relative to that host.
+/*
+/*     tok822_resolve_from() allows the caller to specify sender context
+/*     that will be used to look up sender-dependent relayhost information.
 /* SEE ALSO
 /*     resolve_clnt(3) basic resolver client interface
 /* LICENSE
@@ -42,7 +50,8 @@
 
 /* tok822_resolve - address rewriting interface */
 
-void    tok822_resolve(TOK822 *addr, RESOLVE_REPLY *reply)
+void    tok822_resolve_from(const char *sender, TOK822 *addr,
+                                   RESOLVE_REPLY *reply)
 {
     VSTRING *intern_form = vstring_alloc(100);
 
@@ -54,9 +63,10 @@ void    tok822_resolve(TOK822 *addr, RESOLVE_REPLY *reply)
      * Shipping string forms is much simpler than shipping parse trees.
      */
     tok822_internalize(intern_form, addr->head, TOK822_STR_DEFL);
-    resolve_clnt_query(vstring_str(intern_form), reply);
+    resolve_clnt_query_from(sender, vstring_str(intern_form), reply);
     if (msg_verbose)
-       msg_info("tok822_resolve: addr=%s -> chan=%s, host=%s, rcpt=%s",
+       msg_info("tok822_resolve: from=%s addr=%s -> chan=%s, host=%s, rcpt=%s",
+                sender,
                 vstring_str(intern_form), vstring_str(reply->transport),
                 vstring_str(reply->nexthop), vstring_str(reply->recipient));
 
index 319b56120db65ee4c17a04e5fe332c7e7ffa27fc..d666d33817c1d07fff46970678d6df7f244890f5 100644 (file)
@@ -329,15 +329,10 @@ int     var_local_con_lim;                /* XXX */
 int     var_proc_limit;
 bool    var_verp_bounce_off;
 int     var_qmgr_clog_warn_time;
-char   *var_snd_relay_maps;
-char   *var_vrfy_relay_maps;
 
 static QMGR_SCAN *qmgr_incoming;
 static QMGR_SCAN *qmgr_deferred;
 
-MAPS   *qmgr_snd_relay_maps;
-MAPS   *qmgr_vrfy_relay_maps;
-
 /* qmgr_deferred_run_event - queue manager heartbeat */
 
 static void qmgr_deferred_run_event(int unused_event, char *dummy)
@@ -488,12 +483,6 @@ static void pre_accept(char *unused_name, char **unused_argv)
 static void qmgr_pre_init(char *unused_name, char **unused_argv)
 {
     flush_init();
-    if (*var_snd_relay_maps)
-       qmgr_snd_relay_maps =
-           maps_create(VAR_SND_RELAY_MAPS, var_snd_relay_maps, 0);
-    if (*var_vrfy_relay_maps)
-       qmgr_vrfy_relay_maps =
-           maps_create(VAR_VRFY_RELAY_MAPS, var_vrfy_relay_maps, 0);
 }
 
 /* qmgr_post_init - post-jail initialization */
@@ -542,8 +531,6 @@ int     main(int argc, char **argv)
 {
     static CONFIG_STR_TABLE str_table[] = {
        VAR_DEFER_XPORTS, DEF_DEFER_XPORTS, &var_defer_xports, 0, 0,
-       VAR_SND_RELAY_MAPS, DEF_SND_RELAY_MAPS, &var_snd_relay_maps, 0, 0,
-       VAR_VRFY_RELAY_MAPS, DEF_VRFY_RELAY_MAPS, &var_vrfy_relay_maps, 0, 0,
        0,
     };
     static CONFIG_TIME_TABLE time_table[] = {
index 2630116bb3a9a8ed031b50f0b13bd5fafe95df53..5966b8df832c24355968bff02db73d703b799387 100644 (file)
@@ -25,7 +25,6 @@
   */
 #include <recipient_list.h>
 #include <dsn.h>
-#include <maps.h>                      /* Grr.. sender relay maps */
 
  /*
   * The queue manager is built around lots of mutually-referring structures.
@@ -321,12 +320,6 @@ extern QMGR_SCAN *qmgr_scan_create(const char *);
 extern void qmgr_scan_request(QMGR_SCAN *, int);
 extern char *qmgr_scan_next(QMGR_SCAN *);
 
- /*
-  * qmgr.c
-  */
-extern MAPS *qmgr_snd_relay_maps;
-extern MAPS *qmgr_vrfy_relay_maps;
-
 /* LICENSE
 /* .ad
 /* .fi
index b282be6e1c761ede39e5db369e4613a03b948bcf..a973ffa65bb95afea9c010de0c91d59e2e82d422 100644 (file)
 #include <split_addr.h>
 #include <dsn_mask.h>
 #include <dsn_attr_map.h>
-#include <mail_addr_find.h>
 
 /* Client stubs. */
 
@@ -845,23 +844,14 @@ static void qmgr_message_sort(QMGR_MESSAGE *message)
 /* qmgr_resolve_one - resolve or skip one recipient */
 
 static int qmgr_resolve_one(QMGR_MESSAGE *message, RECIPIENT *recipient,
-                                   const char *addr, RESOLVE_REPLY *reply,
-                                   int do_snd_relay_maps)
+                                   const char *addr, RESOLVE_REPLY *reply)
 {
-    MAPS   *snd_relay_maps;
-    const char *smarthost;
     DSN     dsn;
 
-#define NO_SENDER_RELAY_MAPS   0
-#define DO_SENDER_RELAY_MAPS   1
-
-    if ((message->tflags & DEL_REQ_FLAG_MTA_VRFY) == 0) {
-       snd_relay_maps = qmgr_snd_relay_maps;
-       resolve_clnt_query(addr, reply);
-    } else {
-       snd_relay_maps = qmgr_vrfy_relay_maps;
-       resolve_clnt_verify(addr, reply);
-    }
+    if ((message->tflags & DEL_REQ_FLAG_MTA_VRFY) == 0)
+       resolve_clnt_query_from(message->sender, addr, reply);
+    else
+       resolve_clnt_verify_from(message->sender, addr, reply);
     if (reply->flags & RESOLVE_FLAG_FAIL) {
        qmgr_defer_recipient(message, recipient,
                             DSN_SMTP(&dsn, "4.3.0",
@@ -875,31 +865,6 @@ static int qmgr_resolve_one(QMGR_MESSAGE *message, RECIPIENT *recipient,
                                       "bad address syntax"));
        return (-1);
     } else {
-
-       /*
-        * The next-hop destination may be replaced by the per-sender relay
-        * host.
-        * 
-        * XXX This violates the principle that qmgr does no map lookups. Map
-        * changes require process restart which is bad for queue manager
-        * performance.
-        */
-       if ((reply->flags & RESOLVE_FLAG_SMARTHOST) && do_snd_relay_maps
-           && message->sender[0] && snd_relay_maps) {
-           if ((smarthost = mail_addr_find(snd_relay_maps, message->sender,
-                                           (char **) 0)) != 0) {
-               if (msg_verbose)
-                   msg_info("using smart host %s for sender %s",
-                            smarthost, message->sender);
-               vstring_strcpy(reply->nexthop, smarthost);
-           } else if (dict_errno != 0) {
-               qmgr_defer_recipient(message, recipient,
-                                    DSN_SMTP(&dsn, "4.3.0",
-                                             "451 address resolver failure",
-                                             "address resolver failure"));
-               return (-1);
-           }
-       }
        return (0);
     }
 }
@@ -945,8 +910,7 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message)
                                  reply.recipient);
            RECIPIENT_UPDATE(recipient->address, STR(reply.recipient));
            if (qmgr_resolve_one(message, recipient,
-                                recipient->address, &reply,
-                                NO_SENDER_RELAY_MAPS) < 0)
+                                recipient->address, &reply) < 0)
                continue;
            if (!STREQ(recipient->address, STR(reply.recipient)))
                RECIPIENT_UPDATE(recipient->address, STR(reply.recipient));
@@ -971,8 +935,7 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message)
         */
        else {
            if (qmgr_resolve_one(message, recipient,
-                                recipient->address, &reply,
-                                DO_SENDER_RELAY_MAPS) < 0)
+                                recipient->address, &reply) < 0)
                continue;
            if (!STREQ(recipient->address, STR(reply.recipient)))
                RECIPIENT_UPDATE(recipient->address, STR(reply.recipient));
index fb8667f9a6a2b86f63388eb03df6054e7ac0b53f..1c43299a36c8a9fd361da619cd66a5baf403117d 100644 (file)
@@ -376,15 +376,10 @@ int     var_local_rcpt_lim;
 int     var_proc_limit;
 bool    var_verp_bounce_off;
 int     var_qmgr_clog_warn_time;
-char   *var_snd_relay_maps;
-char   *var_vrfy_relay_maps;
 
 static QMGR_SCAN *qmgr_incoming;
 static QMGR_SCAN *qmgr_deferred;
 
-MAPS   *qmgr_snd_relay_maps;
-MAPS   *qmgr_vrfy_relay_maps;
-
 /* qmgr_deferred_run_event - queue manager heartbeat */
 
 static void qmgr_deferred_run_event(int unused_event, char *dummy)
@@ -532,12 +527,6 @@ static void pre_accept(char *unused_name, char **unused_argv)
 static void qmgr_pre_init(char *unused_name, char **unused_argv)
 {
     flush_init();
-    if (*var_snd_relay_maps)
-       qmgr_snd_relay_maps =
-           maps_create(VAR_SND_RELAY_MAPS, var_snd_relay_maps, 0);
-    if (*var_vrfy_relay_maps)
-       qmgr_vrfy_relay_maps =
-           maps_create(VAR_VRFY_RELAY_MAPS, var_vrfy_relay_maps, 0);
 }
 
 /* qmgr_post_init - post-jail initialization */
@@ -596,8 +585,6 @@ int     main(int argc, char **argv)
 {
     static CONFIG_STR_TABLE str_table[] = {
        VAR_DEFER_XPORTS, DEF_DEFER_XPORTS, &var_defer_xports, 0, 0,
-       VAR_SND_RELAY_MAPS, DEF_SND_RELAY_MAPS, &var_snd_relay_maps, 0, 0,
-       VAR_VRFY_RELAY_MAPS, DEF_VRFY_RELAY_MAPS, &var_vrfy_relay_maps, 0, 0,
        0,
     };
     static CONFIG_TIME_TABLE time_table[] = {
index 793ed8ce5fbe6667714ad0521bb962a9b0a86ec7..83be8073eb01cf26ee72d15acf567c3be561d9c0 100644 (file)
@@ -25,7 +25,6 @@
   */
 #include <recipient_list.h>
 #include <dsn.h>
-#include <maps.h>                      /* Grr.. sender relay maps */
 
  /*
   * The queue manager is built around lots of mutually-referring structures.
@@ -423,12 +422,6 @@ extern QMGR_SCAN *qmgr_scan_create(const char *);
 extern void qmgr_scan_request(QMGR_SCAN *, int);
 extern char *qmgr_scan_next(QMGR_SCAN *);
 
- /*
-  * qmgr.c
-  */
-extern MAPS *qmgr_snd_relay_maps;
-extern MAPS *qmgr_vrfy_relay_maps;
-
 /* LICENSE
 /* .ad
 /* .fi
index e5232f8d8015aaaa1394ab079cccdb115924b2cb..bd4ab56e2cccf55ee847b0c1c69395498c641b94 100644 (file)
 #include <split_addr.h>
 #include <dsn_mask.h>
 #include <dsn_attr_map.h>
-#include <mail_addr_find.h>
 
 /* Client stubs. */
 
@@ -887,23 +886,14 @@ static void qmgr_message_sort(QMGR_MESSAGE *message)
 /* qmgr_resolve_one - resolve or skip one recipient */
 
 static int qmgr_resolve_one(QMGR_MESSAGE *message, RECIPIENT *recipient,
-                                   const char *addr, RESOLVE_REPLY *reply,
-                                   int do_snd_relay_maps)
+                                   const char *addr, RESOLVE_REPLY *reply)
 {
-    MAPS   *snd_relay_maps;
-    const char *smarthost;
     DSN     dsn;
 
-#define NO_SENDER_RELAY_MAPS   0
-#define DO_SENDER_RELAY_MAPS   1
-
-    if ((message->tflags & DEL_REQ_FLAG_MTA_VRFY) == 0) {
-       snd_relay_maps = qmgr_snd_relay_maps;
-       resolve_clnt_query(addr, reply);
-    } else {
-       snd_relay_maps = qmgr_vrfy_relay_maps;
-       resolve_clnt_verify(addr, reply);
-    }
+    if ((message->tflags & DEL_REQ_FLAG_MTA_VRFY) == 0)
+       resolve_clnt_query_from(message->sender, addr, reply);
+    else
+       resolve_clnt_verify_from(message->sender, addr, reply);
     if (reply->flags & RESOLVE_FLAG_FAIL) {
        qmgr_defer_recipient(message, recipient,
                             DSN_SMTP(&dsn, "4.3.0",
@@ -917,31 +907,6 @@ static int qmgr_resolve_one(QMGR_MESSAGE *message, RECIPIENT *recipient,
                                       "bad address syntax"));
        return (-1);
     } else {
-
-       /*
-        * The next-hop destination may be replaced by the per-sender relay
-        * host.
-        * 
-        * XXX This violates the principle that qmgr does no map lookups. Map
-        * changes require process restart which is bad for queue manager
-        * performance.
-        */
-       if ((reply->flags & RESOLVE_FLAG_SMARTHOST) && do_snd_relay_maps
-           && message->sender[0] && snd_relay_maps) {
-           if ((smarthost = mail_addr_find(snd_relay_maps, message->sender,
-                                           (char **) 0)) != 0) {
-               if (msg_verbose)
-                   msg_info("using smart host %s for sender %s",
-                            smarthost, message->sender);
-               vstring_strcpy(reply->nexthop, smarthost);
-           } else if (dict_errno != 0) {
-               qmgr_defer_recipient(message, recipient,
-                                    DSN_SMTP(&dsn, "4.3.0",
-                                             "451 address resolver failure",
-                                             "address resolver failure"));
-               return (-1);
-           }
-       }
        return (0);
     }
 }
@@ -987,8 +952,7 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message)
                                  reply.recipient);
            RECIPIENT_UPDATE(recipient->address, STR(reply.recipient));
            if (qmgr_resolve_one(message, recipient,
-                                recipient->address, &reply,
-                                NO_SENDER_RELAY_MAPS) < 0)
+                                recipient->address, &reply) < 0)
                continue;
            if (!STREQ(recipient->address, STR(reply.recipient)))
                RECIPIENT_UPDATE(recipient->address, STR(reply.recipient));
@@ -1013,8 +977,7 @@ static void qmgr_message_resolve(QMGR_MESSAGE *message)
         */
        else {
            if (qmgr_resolve_one(message, recipient,
-                                recipient->address, &reply,
-                                DO_SENDER_RELAY_MAPS) < 0)
+                                recipient->address, &reply) < 0)
                continue;
            if (!STREQ(recipient->address, STR(reply.recipient)))
                RECIPIENT_UPDATE(recipient->address, STR(reply.recipient));
index 36230b60e3a7201988dc621136383c83ea11c972..0208d2749cd2ecf659572280b5e507010b4a3d25 100644 (file)
 /*     Enable SASL authentication in the Postfix SMTP client.
 /* .IP "\fBsmtp_sasl_password_maps (empty)\fR"
 /*     Optional SMTP client lookup tables with one username:password entry
-/*     per remote hostname or domain (or per sender, when per-sender
-/*     authentication is enabled).
+/*     per remote hostname or domain, or sender address when sender-dependent
+/*     authentication is enabled.
 /* .IP "\fBsmtp_sasl_security_options (noplaintext, noanonymous)\fR"
 /*     What authentication mechanisms the Postfix SMTP client is allowed
 /*     to use.
 /*     server's list of offered SASL mechanisms.
 /* .PP
 /*     Available in Postfix version 2.3 and later:
-/* .IP "\fBsmtp_per_sender_authentication (no)\fR"
-/*     Enable per-sender authentication in the SMTP client; this is available
-/*     only with SASL authentication, and disables SMTP connection caching
-/*     to ensure that mail from different senders will use the appropriate
-/*     credentials.
+/* .IP "\fBsmtp_sender_dependent_authentication (no)\fR"
+/*     Enable sender-dependent authentication in the SMTP client; this is
+/*     available only with SASL authentication, and disables SMTP connection
+/*     caching to ensure that mail from different senders will use the
+/*     appropriate credentials.
 /* STARTTLS SUPPORT CONTROLS
 /* .ad
 /* .fi
@@ -505,12 +505,14 @@ char   *var_smtp_ehlo_dis_maps;
 bool    var_smtp_use_tls;
 bool    var_smtp_enforce_tls;
 char   *var_smtp_tls_per_site;
+
 #ifdef USE_TLS
 int     var_smtp_starttls_tmout;
 char   *var_smtp_sasl_tls_opts;
 bool    var_smtp_tls_enforce_peername;
 int     var_smtp_tls_scert_vd;
 bool    var_smtp_tls_note_starttls_offer;
+
 #endif
 
 char   *var_smtp_generic_maps;
index c042ad9be5391b4ca5972c916019007298558e6d..681a7e05f6d2d7a5672ce41fba5a5b9fa5a032da 100644 (file)
@@ -221,6 +221,7 @@ typedef struct SMTP_SESSION {
     TLScontext_t *tls_context;         /* TLS session state */
 #endif
 
+    SMTP_STATE *state;                 /* back link */
 } SMTP_SESSION;
 
 extern SMTP_SESSION *smtp_session_alloc(VSTREAM *, const char *, const char *,
index c23d87cfc498e5355ebd675197383f3e572582ee..62fa9c53b88242f2f3d767f207306671f488aa78 100644 (file)
@@ -626,10 +626,10 @@ int     smtp_connect(SMTP_STATE *state)
         * queue manager. This is turned temporarily when a destination has a
         * high volume of mail in the active queue.
         * 
-        * XXX Disable connection caching when per-sender credentials are
-        * enabled. We must not send someone elses mail over an authenticated
-        * connection, and we must not send mail that requires authentication
-        * over a connection that wasn't authenticated.
+        * XXX Disable connection caching when sender-dependent authentication
+        * is enabled. We must not send someone elses mail over an
+        * authenticated connection, and we must not send mail that requires
+        * authentication over a connection that wasn't authenticated.
         */
        if (cpp == sites->argv
            && !var_smtp_sender_auth
@@ -699,6 +699,7 @@ int     smtp_connect(SMTP_STATE *state)
                || (session = smtp_reuse_addr(state, addr, port)) == 0)
                session = smtp_connect_addr(dest, addr, port, why, sess_flags);
            if ((state->session = session) != 0) {
+               session->state = state;
                if (addr->pref == domain_best_pref)
                    session->features |= SMTP_FEATURE_BEST_MX;
                /* Don't count handshake errors towards the session limit. */
index cec62363de83b12dff2d2e7306b8c91b9690ca74..81a931d0340acedfb69ceb200fa27bc764ad379a 100644 (file)
@@ -308,6 +308,7 @@ static int smtp_sasl_get_passwd(sasl_conn_t *conn, void *context,
 int     smtp_sasl_passwd_lookup(SMTP_SESSION *session)
 {
     char   *myname = "smtp_sasl_passwd_lookup";
+    SMTP_STATE *state = session->state;
     const char *value;
     char   *passwd;
 
@@ -330,7 +331,7 @@ int     smtp_sasl_passwd_lookup(SMTP_SESSION *session)
      * but didn't canonicalize the TCP port, and did not append the port to
      * the MX hostname.
      */
-    if ((var_sender_auth
+    if ((var_smtp_sender_auth && state->request->sender[0]
         && (value = mail_addr_find(smtp_sasl_passwd_map,
                                 state->request->sender, (char **) 0)) != 0)
        || (value = maps_find(smtp_sasl_passwd_map, session->host, 0)) != 0
index 7b8ed12f07f9eb82e6ec5b7315577eae2b745b0b..153b041a5e789078f44be1e5daf2297d2a65a54e 100644 (file)
@@ -82,7 +82,6 @@ static const char *smtp_sasl_compat_mechs(const char *words)
     char   *mech_list;
     char   *save_mech;
     char   *mech;
-    int     ret;
 
     /*
      * Use server's mechanisms if no filter specified
index e9d8caf60591ab255976ea5c580b971b6e7fc08e..b5b51471fd844c897637908cc1fcd145e4e7b1a7 100644 (file)
@@ -277,6 +277,7 @@ SMTP_SESSION *smtp_session_alloc(VSTREAM *stream, const char *dest,
            session->tls_use_tls = 1;
     }
 #endif
+    session->state = 0;
     debug_peer_check(host, addr);
     return (session);
 }
index 9fe752d80849b876fca05118bbeb8623c2e682a5..d5c16e2e3399965ee831cedab97307e0ec8777f7 100644 (file)
@@ -125,7 +125,6 @@ transport.o: ../../include/match_ops.h
 transport.o: ../../include/match_parent_style.h
 transport.o: ../../include/msg.h
 transport.o: ../../include/mymalloc.h
-transport.o: ../../include/resolve_clnt.h
 transport.o: ../../include/split_at.h
 transport.o: ../../include/stringops.h
 transport.o: ../../include/strip_addr.h
index a45c4dd9ea100682d34ca3320ccad7ab610864b2..2ba518da99d57d504d9d61266d31ef8025e62d55 100644 (file)
@@ -134,7 +134,7 @@ static MAPS *relocated_maps;
 
 /* resolve_addr - resolve address according to rule set */
 
-static void resolve_addr(RES_CONTEXT *rp, char *addr,
+static void resolve_addr(RES_CONTEXT *rp, char *sender, char *addr,
                                 VSTRING *channel, VSTRING *nexthop,
                                 VSTRING *nextrcpt, int *flags)
 {
@@ -152,6 +152,7 @@ static void resolve_addr(RES_CONTEXT *rp, char *addr,
     char   *local;
     char   *oper;
     char   *junk;
+    const char *relay;
 
     *flags = 0;
     vstring_strcpy(channel, "CHANNEL NOT UPDATED");
@@ -395,7 +396,7 @@ static void resolve_addr(RES_CONTEXT *rp, char *addr,
      * highest precedence to transport associated nexthop information.
      * 
      * Otherwise, with relay or other non-local destinations, the relayhost
-     * setting overrides the recipient domain name, and the per-sender
+     * setting overrides the recipient domain name, and the sender-dependent
      * relayhost overrides both.
      * 
      * XXX Nag if the recipient domain is listed in multiple domain lists. The
@@ -490,16 +491,14 @@ static void resolve_addr(RES_CONTEXT *rp, char *addr,
            }
 
            /*
-            * With off-host delivery, per-sender or global relayhost
-            * override the recipient domain. The per-sender override is done
-            * in the client, and permission to do so is is signaled with the
-            * SMARTHOST flag. This is technically incorrect, but avoids the
-            * need to change the resolver client protocol for something that
-            * is irrelevant for most resolver clients, and that most Postfix
-            * sites will never need.
+            * With off-host delivery, sender-dependent or global relayhost
+            * override the recipient domain.
             */
-           *flags |= RESOLVE_FLAG_SMARTHOST;
-           if (*RES_PARAM_VALUE(rp->relayhost))
+           if (rp->snd_relay_info && *sender
+               && (relay = mail_addr_find(rp->snd_relay_info, sender,
+                                          (char **) 0)) != 0)
+               vstring_strcpy(nexthop, relay);
+           else if (*RES_PARAM_VALUE(rp->relayhost))
                vstring_strcpy(nexthop, RES_PARAM_VALUE(rp->relayhost));
            else
                vstring_strcpy(nexthop, rcpt_domain);
@@ -537,10 +536,8 @@ static void resolve_addr(RES_CONTEXT *rp, char *addr,
      * force mail for any domain in $mydestination/${proxy,inet}_interfaces
      * to share the same queue.
      */
-    if ((destination = split_at(STR(channel), ':')) != 0 && *destination) {
+    if ((destination = split_at(STR(channel), ':')) != 0 && *destination)
        vstring_strcpy(nexthop, destination);
-       *flags &= ~RESOLVE_FLAG_SMARTHOST;
-    }
 
     /*
      * Sanity checks.
@@ -584,7 +581,7 @@ static void resolve_addr(RES_CONTEXT *rp, char *addr,
      * XXX Don't override the virtual alias class (error:User unknown) result.
      */
     if (rp->transport_info && !(*flags & RESOLVE_CLASS_ALIAS)) {
-       if (transport_lookup(rp->transport_info, flags, STR(nextrcpt),
+       if (transport_lookup(rp->transport_info, STR(nextrcpt),
                             rcpt_domain, channel, nexthop) == 0
            && dict_errno != 0) {
            msg_warn("%s lookup failure", rp->transport_maps_name);
@@ -630,6 +627,7 @@ static VSTRING *channel;
 static VSTRING *nexthop;
 static VSTRING *nextrcpt;
 static VSTRING *query;
+static VSTRING *sender;
 
 /* resolve_proto - read request and send reply */
 
@@ -638,15 +636,17 @@ int     resolve_proto(RES_CONTEXT *context, VSTREAM *stream)
     int     flags;
 
     if (attr_scan(stream, ATTR_FLAG_STRICT,
+                 ATTR_TYPE_STR, MAIL_ATTR_SENDER, sender,
                  ATTR_TYPE_STR, MAIL_ATTR_ADDR, query,
-                 ATTR_TYPE_END) != 1)
+                 ATTR_TYPE_END) != 2)
        return (-1);
 
-    resolve_addr(context, STR(query),
+    resolve_addr(context, STR(sender), STR(query),
                 channel, nexthop, nextrcpt, &flags);
 
     if (msg_verbose)
-       msg_info("%s -> (`%s' `%s' `%s' `%d')", STR(query), STR(channel),
+       msg_info("`%s' -> `%s' -> (`%s' `%s' `%s' `%d')",
+                STR(sender), STR(query), STR(channel),
                 STR(nexthop), STR(nextrcpt), flags);
 
     attr_print(stream, ATTR_FLAG_NONE,
@@ -668,6 +668,7 @@ int     resolve_proto(RES_CONTEXT *context, VSTREAM *stream)
 
 void    resolve_init(void)
 {
+    sender = vstring_alloc(100);
     query = vstring_alloc(100);
     channel = vstring_alloc(100);
     nexthop = vstring_alloc(100);
index db29d12df1fd5c569d70d5d653c3f66c255f80ce..db6bc26c90b90235b47895d5264e19329b46d17d 100644 (file)
 /*     void    transport_post_init(info)
 /*     TRANSPORT_INFO *info;
 /*
-/*     int     transport_lookup(info, res_flags, address, rcpt_domain,
-/*                                     channel, nexthop)
+/*     int     transport_lookup(info, address, rcpt_domain, channel, nexthop)
 /*     TRANSPORT_INFO *info;
-/*     int     *res_flags;
 /*     const char *address;
 /*     const char *rcpt_domain;
 /*     VSTRING *channel;
@@ -37,8 +35,7 @@
 /*
 /*     transport_lookup() finds the channel and nexthop for the given
 /*     domain, and returns 1 if something was found.   Otherwise, 0
-/*     is returned. The res_flags SMARTHOST bit is reset when the nexthop
-/*     information is updated.
+/*     is returned.
 /* DIAGNOSTICS
 /*     The global \fIdict_errno\fR is non-zero when the lookup
 /*     should be tried again.
@@ -80,7 +77,6 @@
 #include <maps.h>
 #include <match_parent_style.h>
 #include <mail_proto.h>
-#include <resolve_clnt.h>
 
 /* Application-specific. */
 
@@ -132,7 +128,7 @@ void    transport_free(TRANSPORT_INFO *tp)
 
 static void update_entry(const char *new_channel, const char *new_nexthop,
                                 const char *rcpt_domain, VSTRING *channel,
-                                VSTRING *nexthop, int *res_flags)
+                                VSTRING *nexthop)
 {
 
     /*
@@ -141,10 +137,8 @@ static void update_entry(const char *new_channel, const char *new_nexthop,
      * side of ":" is the transport table equivalent of a NOOP.
      */
     if (*new_channel == 0) {                   /* :[nexthop] */
-       if (*new_nexthop != 0) {
+       if (*new_nexthop != 0)
            vstring_strcpy(nexthop, new_nexthop);
-           *res_flags &= ~RESOLVE_FLAG_SMARTHOST;
-       }
     }
 
     /*
@@ -159,18 +153,14 @@ static void update_entry(const char *new_channel, const char *new_nexthop,
            vstring_strcpy(nexthop, rcpt_domain);
        else
            vstring_strcpy(nexthop, "Address is undeliverable");
-       *res_flags &= ~RESOLVE_FLAG_SMARTHOST;
     }
 }
 
 /* find_transport_entry - look up and parse transport table entry */
 
-static int find_transport_entry(TRANSPORT_INFO *tp, int *res_flags,
-                                       const char *key,
-                                       const char *rcpt_domain,
-                                       int map_flags,
-                                       VSTRING *channel,
-                                       VSTRING *nexthop)
+static int find_transport_entry(TRANSPORT_INFO *tp, const char *key,
+                                       const char *rcpt_domain, int flags,
+                                       VSTRING *channel, VSTRING *nexthop)
 {
     char   *saved_value;
     const char *host;
@@ -189,7 +179,7 @@ static int find_transport_entry(TRANSPORT_INFO *tp, int *res_flags,
      * 
      * XXX Should report lookup failure status to caller instead of aborting.
      */
-    if ((value = maps_find(tp->transport_path, key, map_flags)) == 0)
+    if ((value = maps_find(tp->transport_path, key, flags)) == 0)
        return (NOTFOUND);
 
     /*
@@ -203,7 +193,7 @@ static int find_transport_entry(TRANSPORT_INFO *tp, int *res_flags,
        saved_value = mystrdup(value);
        host = split_at(saved_value, ':');
        update_entry(saved_value, host ? host : "", rcpt_domain,
-                    channel, nexthop, res_flags);
+                    channel, nexthop);
        myfree(saved_value);
        return (FOUND);
     }
@@ -215,7 +205,6 @@ static void transport_wildcard_init(TRANSPORT_INFO *tp)
 {
     VSTRING *channel = vstring_alloc(10);
     VSTRING *nexthop = vstring_alloc(10);
-    int     dummy;
 
     /*
      * Technically, the wildcard lookup pattern is redundant. A static map
@@ -231,8 +220,7 @@ static void transport_wildcard_init(TRANSPORT_INFO *tp)
 #define FULL           0
 #define PARTIAL                DICT_FLAG_FIXED
 
-    if (find_transport_entry(tp, &dummy, WILDCARD, "",
-                            FULL, channel, nexthop)) {
+    if (find_transport_entry(tp, WILDCARD, "", FULL, channel, nexthop)) {
        tp->transport_errno = 0;
        if (tp->wildcard_channel)
            vstring_free(tp->wildcard_channel);
@@ -252,7 +240,7 @@ static void transport_wildcard_init(TRANSPORT_INFO *tp)
 
 /* transport_lookup - map a transport domain */
 
-int     transport_lookup(TRANSPORT_INFO *tp, int *res_flags, const char *addr,
+int     transport_lookup(TRANSPORT_INFO *tp, const char *addr,
                                 const char *rcpt_domain,
                                 VSTRING *channel, VSTRING *nexthop)
 {
@@ -291,8 +279,7 @@ int     transport_lookup(TRANSPORT_INFO *tp, int *res_flags, const char *addr,
     if ((ratsign = strrchr(full_addr, '@')) == 0 || ratsign[1] == 0)
        msg_panic("transport_lookup: bad address: \"%s\"", full_addr);
 
-    if (find_transport_entry(tp, res_flags, full_addr, rcpt_domain,
-                            FULL, channel, nexthop))
+    if (find_transport_entry(tp, full_addr, rcpt_domain, FULL, channel, nexthop))
        RETURN_FREE(FOUND);
     if (dict_errno != 0)
        RETURN_FREE(NOTFOUND);
@@ -304,8 +291,8 @@ int     transport_lookup(TRANSPORT_INFO *tp, int *res_flags, const char *addr,
      */
     if ((stripped_addr = strip_addr(full_addr, DISCARD_EXTENSION,
                                    *var_rcpt_delim)) != 0) {
-       found = find_transport_entry(tp, res_flags, stripped_addr, rcpt_domain,
-                                    PARTIAL, channel, nexthop);
+       found = find_transport_entry(tp, stripped_addr, rcpt_domain, PARTIAL,
+                                    channel, nexthop);
 
        myfree(stripped_addr);
        if (found)
@@ -331,8 +318,7 @@ int     transport_lookup(TRANSPORT_INFO *tp, int *res_flags, const char *addr,
      * with regular expressions.
      */
     for (name = ratsign + 1; *name != 0; name = next) {
-       if (find_transport_entry(tp, res_flags, name, rcpt_domain,
-                                PARTIAL, channel, nexthop))
+       if (find_transport_entry(tp, name, rcpt_domain, PARTIAL, channel, nexthop))
            RETURN_FREE(FOUND);
        if (dict_errno != 0)
            RETURN_FREE(NOTFOUND);
@@ -352,7 +338,7 @@ int     transport_lookup(TRANSPORT_INFO *tp, int *res_flags, const char *addr,
        RETURN_FREE(NOTFOUND);
     } else if (tp->wildcard_channel) {
        update_entry(STR(tp->wildcard_channel), STR(tp->wildcard_nexthop),
-                    rcpt_domain, channel, nexthop, res_flags);
+                    rcpt_domain, channel, nexthop);
        RETURN_FREE(FOUND);
     }
 
index e52785d74e83ddfdcb596759310a0d3512a07b5a..27912d821e81a9f92d08e10aacbdbc0229684376 100644 (file)
@@ -30,7 +30,7 @@ typedef struct TRANSPORT_INFO {
 
 extern TRANSPORT_INFO *transport_pre_init(const char *, const char *);
 extern void transport_post_init(TRANSPORT_INFO *);
-extern int transport_lookup(TRANSPORT_INFO *, int *, const char *, const char *, VSTRING *, VSTRING *);
+extern int transport_lookup(TRANSPORT_INFO *, const char *, const char *, VSTRING *, VSTRING *);
 extern void transport_free(TRANSPORT_INFO *);
 
 /* LICENSE
index 549ec0ff4f63de0cf852a1933d9263d6b57b8b92..36db1b7b61a91831eac3af84befd4273199aea30 100644 (file)
@@ -26,8 +26,8 @@
 /*      Postfix from appending the local domain to spam from poorly
 /*     written remote clients.
 /* .RE
-/* .IP "\fBresolve \fIaddress\fR"
-/*     Resolve an address to a (\fItransport\fR, \fInexthop\fR,
+/* .IP "\fBresolve \fIsender\fR \fIaddress\fR"
+/*     Resolve the address to a (\fItransport\fR, \fInexthop\fR,
 /*      \fIrecipient\fR, \fIflags\fR) quadruple. The meaning of
 /*     the results is as follows:
 /* .RS
@@ -42,8 +42,8 @@
 /*     The address class, whether the address requires relaying,
 /*     whether the address has problems, and whether the request failed.
 /* .RE
-/* .IP "\fBverify \fIaddress\fR"
-/*     Resolve an address for address verification purposes.
+/* .IP "\fBverify \fIsender\fR \fIaddress\fR"
+/*     Resolve the address for address verification purposes.
 /* SERVER PROCESS MANAGEMENT
 /* .ad
 /* .fi
 /*     relay_transport, virtual_alias_domains, virtual_mailbox_domains
 /*     or proxy_interfaces.
 /* .IP "\fBlocal_transport (local:$myhostname)\fR"
-/*     The default mail delivery transport for domains that match
-/*     $mydestination, $inet_interfaces or $proxy_interfaces.
+/*     The default mail delivery transport and next-hop destination
+/*     for final delivery to domains listed with mydestination, and for
+/*     [ipaddress] destinations that match $inet_interfaces or $proxy_interfaces.
 /* .IP "\fBvirtual_transport (virtual)\fR"
-/*     The default mail delivery transport for domains that match the
-/*     $virtual_mailbox_domains parameter value.
+/*     The default mail delivery transport and next-hop destination for
+/*     final delivery to domains listed with virtual_mailbox_domains.
 /* .IP "\fBrelay_transport (relay)\fR"
-/*     The default mail delivery transport and next-hop information for
-/*     domains that match the $relay_domains parameter value.
+/*     The default mail delivery transport and next-hop destination for
+/*     remote delivery to domains listed with $relay_domains.
 /* .IP "\fBdefault_transport (smtp)\fR"
-/*     The default mail delivery transport for domains that do not match
-/*     $mydestination, $inet_interfaces, $proxy_interfaces,
-/*     $virtual_alias_domains, $virtual_mailbox_domains, or $relay_domains.
+/*     The default mail delivery transport and next-hop destination for
+/*     destinations that do not match $mydestination, $inet_interfaces,
+/*     $proxy_interfaces, $virtual_alias_domains, $virtual_mailbox_domains,
+/*     or $relay_domains.
 /* .IP "\fBparent_domain_matches_subdomains (see 'postconf -d' output)\fR"
 /*     What Postfix features match subdomains of "domain.tld" automatically,
 /*     instead of requiring an explicit ".domain.tld" pattern.
 /* .IP "\fBrelayhost (empty)\fR"
-/*     The default host to send non-local mail to when no entry is matched
-/*     in the optional \fBtransport\fR(5) table.
+/*     The next-hop destination of non-local mail; overrides non-local
+/*     domains in recipient addresses.
 /* .IP "\fBtransport_maps (empty)\fR"
 /*     Optional lookup tables with mappings from recipient address to
 /*     (message delivery transport, next-hop destination).
 /* .PP
 /*     Available in Postfix version 2.3 and later:
-/* .IP "\fBsender_relayhost_maps (empty)\fR"
-/*     A sender-specific override for the global relayhost parameter
+/* .IP "\fBsender_dependent_relayhost_maps (empty)\fR"
+/*     A sender-dependent override for the global relayhost parameter
 /*     setting.
 /* ADDRESS VERIFICATION CONTROLS
 /* .ad
 /* .IP "\fBaddress_verify_relayhost ($relayhost)\fR"
 /*     Overrides the relayhost parameter setting for address verification
 /*     probes.
-/* .IP "\fBaddress_verify_sender_relayhost_maps (empty)\fR"
-/*     Overrides the sender_relayhost_maps parameter setting for address
-/*     verification probes.
 /* .IP "\fBaddress_verify_transport_maps ($transport_maps)\fR"
 /*     Overrides the transport_maps parameter setting for address verification
 /*     probes.
+/* .PP
+/*     Available in Postfix version 2.3 and later:
+/* .IP "\fBaddress_verify_sender_dependent_relayhost_maps (empty)\fR"
+/*     Overrides the sender_dependent_relayhost_maps parameter setting for address
+/*     verification probes.
 /* MISCELLANEOUS CONTROLS
 /* .ad
 /* .fi
@@ -306,6 +310,7 @@ char   *var_empty_addr;
 int     var_show_unk_rcpt_table;
 int     var_resolve_nulldom;
 char   *var_remote_rwr_domain;
+char   *var_snd_relay_maps;
 
  /*
   * Shadow personality for address verification.
@@ -316,6 +321,7 @@ char   *var_vrfy_virt_xport;
 char   *var_vrfy_relay_xport;
 char   *var_vrfy_def_xport;
 char   *var_vrfy_relayhost;
+char   *var_vrfy_relay_maps;
 
  /*
   * Different resolver personalities depending on the kind of request.
@@ -326,6 +332,7 @@ RES_CONTEXT resolve_regular = {
     VAR_RELAY_TRANSPORT, &var_relay_transport,
     VAR_DEF_TRANSPORT, &var_def_transport,
     VAR_RELAYHOST, &var_relayhost,
+    VAR_SND_RELAY_MAPS, &var_snd_relay_maps, 0,
     VAR_TRANSPORT_MAPS, &var_transport_maps, 0
 };
 
@@ -335,6 +342,7 @@ RES_CONTEXT resolve_verify = {
     VAR_VRFY_RELAY_XPORT, &var_vrfy_relay_xport,
     VAR_VRFY_DEF_XPORT, &var_vrfy_def_xport,
     VAR_VRFY_RELAYHOST, &var_vrfy_relayhost,
+    VAR_VRFY_RELAY_MAPS, &var_vrfy_relay_maps, 0,
     VAR_VRFY_XPORT_MAPS, &var_vrfy_xport_maps, 0
 };
 
@@ -491,6 +499,14 @@ static void pre_jail_init(char *unused_name, char **unused_argv)
        resolve_verify.transport_info =
            transport_pre_init(resolve_verify.transport_maps_name,
                            RES_PARAM_VALUE(resolve_verify.transport_maps));
+    if (*RES_PARAM_VALUE(resolve_regular.snd_relay_maps))
+       resolve_regular.snd_relay_info =
+           maps_create(resolve_regular.snd_relay_maps_name,
+                       RES_PARAM_VALUE(resolve_regular.snd_relay_maps), 0);
+    if (*RES_PARAM_VALUE(resolve_verify.snd_relay_maps))
+       resolve_verify.snd_relay_info =
+           maps_create(resolve_verify.snd_relay_maps_name,
+                       RES_PARAM_VALUE(resolve_verify.snd_relay_maps), 0);
 }
 
 /* post_jail_init - initialize after entering chroot jail */
@@ -529,6 +545,8 @@ int     main(int argc, char **argv)
        VAR_VRFY_DEF_XPORT, DEF_VRFY_DEF_XPORT, &var_vrfy_def_xport, 1, 0,
        VAR_VRFY_RELAYHOST, DEF_VRFY_RELAYHOST, &var_vrfy_relayhost, 0, 0,
        VAR_REM_RWR_DOMAIN, DEF_REM_RWR_DOMAIN, &var_remote_rwr_domain, 0, 0,
+       VAR_SND_RELAY_MAPS, DEF_SND_RELAY_MAPS, &var_snd_relay_maps, 0, 0,
+       VAR_VRFY_RELAY_MAPS, DEF_VRFY_RELAY_MAPS, &var_vrfy_relay_maps, 0, 0,
        0,
     };
     static CONFIG_BOOL_TABLE bool_table[] = {
index c5f7d1b5b2e70c9a0cdfd29f0d6c8f5e65bf29a0..d94cbb3bae7d4fbb83d4f00bb47af4486e857b70 100644 (file)
@@ -58,6 +58,9 @@ typedef struct {
     char  **def_transport;             /* default transport:nexthop */
     const char *relayhost_name;                /* name of variable */
     char  **relayhost;                 /* for relay and default transport */
+    const char *snd_relay_maps_name;   /* name of variable */
+    char  **snd_relay_maps;            /* maptype:mapname */
+    MAPS   *snd_relay_info;            /* handle */
     const char *transport_maps_name;   /* name of variable */
     char  **transport_maps;            /* maptype:mapname */
     struct TRANSPORT_INFO *transport_info;     /* handle */