]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
snapshot-20001214
authorWietse Venema <wietse@porcupine.org>
Thu, 14 Dec 2000 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:27:01 +0000 (06:27 +0000)
16 files changed:
postfix/HISTORY
postfix/SASL_README
postfix/conf/main.cf
postfix/conf/sample-local.cf
postfix/conf/sample-misc.cf
postfix/html/smtp.8.html
postfix/html/trivial-rewrite.8.html
postfix/man/man8/smtp.8
postfix/man/man8/trivial-rewrite.8
postfix/src/global/deliver_pass.c
postfix/src/global/mail_version.h
postfix/src/nqmgr/qmgr.c
postfix/src/qmgr/qmgr.c
postfix/src/trivial-rewrite/resolve.c
postfix/src/trivial-rewrite/transport.c
postfix/src/trivial-rewrite/trivial-rewrite.c

index a60c733723f9cd936de73a07b934890292e2f97e..9993b0e0e8f69425880a97d7176b20a80e69fa78 100644 (file)
@@ -4632,3 +4632,10 @@ Apologies for any names omitted.
        after connection timeout. Problem reported by Alain Thivillon.
        did not take his patch because I have no means to verify
        the code. File: util/dict_ldap.c.
+
+20001214
+
+       Feature: local_transport and default_transport now also
+       understand the transport[:destination] notation, so that
+       transport parameters are similar again. File:
+       trivial-rewrite/resolve.c, trivial-rewrite/transport.c.
index 537337715157490f7c25a26bbf3e4720c0d25fed..243c98bd4fce16a1ecd86611f0a42cb215e23d93 100644 (file)
@@ -10,6 +10,9 @@ Postfix+SASL 1.5.5 appears to work on RedHat 6.1 (pwcheck_method
 set to shadow or sasldb), Solaris 2.7 (pwcheck_method set to shadow
 or sasldb), and FreeBSD 3.4 (pwcheck_method set to sasldb).  On
 RedHat 6.1, SASL 1.5.5 insisted on write access to /etc/sasldb.
+Note that this seems to be related to the auto_transition switch in
+SASL. Note also that the Cyrus SASL documentation says that it is
+pointless to enable that if you use "sasldb" for "pwcheck_method".
 
 SASL is a lot of complex code. In a future version the Postfix SASL
 code is likely to be put outside the SMTP server.
@@ -102,6 +105,11 @@ Postfix SMTP server needs read access to the sasldb file - you may
 have to play games with group access permissions. On RedHat 6.1,
 SASL 1.5.5 insists on write access to /etc/sasldb.
 
+IMPORTANT: To get sasldb running, make sure that you set the SASL domain
+(realm) to a fully qualified domain name. 
+
+EXAMPLE: saslpasswd -c -u `postconf -h myhostname` exampleuser
+
 Instead of the SASL-specific password file you can configure the
 Postfix SMTP server to validate client passwords against the UNIX
 shadow password file:
@@ -112,7 +120,7 @@ shadow password file:
 However this requires that Postfix has read access to the UNIX shadow
 password file, which is normally readable only by root.  Shadow
 password support has been found to work for Solaris 2.7 and RedHat
-6. 1 but not with freeBSD 3.4.
+6.1 but not with FreeBSD 3.4.
 
 To run software chrooted with SASL support is an interesting exercise.
 This is one of the many problems with the present SASL support.
@@ -135,6 +143,12 @@ Instead of dGVzdAB0ZXN0AHRlc3RwYXNz, specify the base64 encoded
 form of username\0username\0password (the \0 is a null byte). The
 example above is for a user named `test' with password `testpass'.
 
+You can use e. g.: printf 'username\0username\0password' | mmencode 
+or perl -MMIME::Base64 -e 'print
+       encode_base64("username\0username\0password");'
+to get this output (MIME::Base64 is available from CPAN in case you
+don't have it).
+
 Enabling SASL authentication in the Postfix SMTP client
 =======================================================
 
index a2a81298bd6f061a3736b9eea35a8f7bf708ae02..38ae9fcd806118c3c1ec653c03ebba01f27a17c7 100644 (file)
@@ -270,12 +270,25 @@ mail_owner = postfix
 # has precedence over the mailbox_command, fallback_transport and
 # luser_relay parameters.
 #
+# Specify a string of the form transport:nexthop, where transport is
+# the name of a mail delivery transport defined in master.cf.  The
+# :nexthop part is optional. For more details see the sample transport
+# configuration file.
+#
+#mailbox_transport = lmtp:unix:/file/name
 #mailbox_transport = cyrus
 
 # The fallback_transport specifies the optional transport in master.cf
 # to use for recipients that are not found in the UNIX passwd database.
 # This parameter has precedence over the luser_relay parameter.
 #
+# Specify a string of the form transport:nexthop, where transport is
+# the name of a mail delivery transport defined in master.cf.  The
+# :nexthop part is optional. For more details see the sample transport
+# configuration file.
+#
+#fallback_transport = lmtp:unix:/file/name
+#fallback_transport = cyrus
 #fallback_transport =
 
 # The luser_relay parameter specifies an optional destination address
index 183e524ffd6a83c98bee91c98582a69801c166d5..d7b7e0268756dd879a18306887c08fb570745d85 100644 (file)
@@ -37,6 +37,12 @@ require_home_directory = no
 # By default, local mail is delivered to the transport called "local",
 # which is just the name of a service that is defined the master.cf file.
 #
+# Specify a string of the form transport:nexthop, where transport is
+# the name of a mail delivery transport defined in master.cf.  The
+# :nexthop part is optional. For more details see the sample transports
+# file.
+#
+local_transport = lmtp:unix:/file/name
 local_transport = local
 
 #
@@ -159,9 +165,9 @@ mailbox_command =
 # luser_relay parameters.
 #
 # Specify a string of the form transport:nexthop, where transport is
-# the name of a mail delivery transport defined in master.cf.  Either
-# transport or nexthop are optional. For more details see the sample
-# transports file.
+# the name of a mail delivery transport defined in master.cf.  The
+# :nexthop part is optional. For more details see the sample transport
+# configuration file.
 #
 # mailbox_transport = lmtp:unix:/file/name
 # mailbox_transport = cyrus
@@ -172,9 +178,9 @@ mailbox_transport =
 # This parameter has precedence over the luser_relay parameter.
 #
 # Specify a string of the form transport:nexthop, where transport is
-# the name of a mail delivery transport defined in master.cf.  Either
-# transport or nexthop are optional. For more details see the sample
-# transports file.
+# the name of a mail delivery transport defined in master.cf.  The
+# :nexthop part is optional. For more details see the sample transport
+# configuration file.
 #
 # fallback_transport = lmtp:unix:/file/name
 # fallback_transport = cyrus
index 436767b3c453631399e9f08d36c5aca4e1e6806e..0b55f1ce330bee6814d43cc2c33118e09a154038 100644 (file)
@@ -28,7 +28,12 @@ daemon_timeout = 18000
 # delivery transport to use when no transport is explicitly given in
 # the optional transport(5) table.
 #
-# default_transport = uucp
+# Specify a string of the form transport:nexthop, where transport is
+# the name of a mail delivery transport defined in master.cf.  Either
+# transport or nexthop are optional. For more details see the sample
+# transports file.
+#
+# default_transport = uucp:relayhostname
 default_transport = smtp
 
 # The double_bounce_sender parameter specifies the sender address
index 99b5aa3ae8a86776c699b80b0196a5c7fb1c8d3f..874def28857cb7de97ae9f2c9b5f4edb8f9781f7 100644 (file)
@@ -209,54 +209,54 @@ SMTP(8)                                                   SMTP(8)
               <b>default</b><i>_</i><b>destination</b><i>_</i><b>recipient</b><i>_</i><b>limit</b> parameter.
 
 <b>Timeout</b> <b>controls</b>
+       The default time unit is seconds; an  explicit  time  unit
+       can be specified by appending a one-letter suffix: s (sec-
+       onds), m (minutes), h (hours), d (days) or w (weeks).
+
        <b>smtp</b><i>_</i><b>connect</b><i>_</i><b>timeout</b>
-              Timeout in seconds for completing a TCP connection.
-              When no connection can be made within the deadline,
-              the SMTP client tries the next address on the  mail
-              exchanger list.
+              Timeout (default: seconds)  for  completing  a  TCP
+              connection.  When  no connection can be made within
+              the  deadline,  the  SMTP  client  tries  the  next
+              address on the mail exchanger list.
 
        <b>smtp</b><i>_</i><b>helo</b><i>_</i><b>timeout</b>
-              Timeout  in seconds for receiving the SMTP greeting
-              banner.  When the server drops the connection with-
-              out  sending a greeting banner, or when it sends no
-              greeting  banner  within  the  deadline,  the  SMTP
-              client tries the next address on the mail exchanger
-              list.
+              Timeout  (default:  seconds) for receiving the SMTP
+              greeting banner.  When the server drops the connec-
+              tion  without sending a greeting banner, or when it
+              sends no greeting banner within the  deadline,  the
+              SMTP  client  tries  the  next  address on the mail
+              exchanger list.
 
        <b>smtp</b><i>_</i><b>helo</b><i>_</i><b>timeout</b>
-              Timeout in seconds for sending  the  <b>HELO</b>  command,
-              and for receiving the server response.
+              Timeout (default: seconds)  for  sending  the  <b>HELO</b>
+              command, and for receiving the server response.
 
        <b>smtp</b><i>_</i><b>mail</b><i>_</i><b>timeout</b>
-              Timeout  in  seconds for sending the <b>MAIL</b> <b>FROM</b> com-
-              mand, and for receiving the server response.
+              Timeout  (default:  seconds)  for  sending the <b>MAIL</b>
+              <b>FROM</b>  command,  and  for   receiving   the   server
+              response.
 
        <b>smtp</b><i>_</i><b>rcpt</b><i>_</i><b>timeout</b>
-              Timeout in seconds for sending the <b>RCPT</b> <b>TO</b> command,
-              and for receiving the server response.
+              Timeout  (default: seconds) for sending the <b>RCPT</b> <b>TO</b>
+              command, and for receiving the server response.
 
        <b>smtp</b><i>_</i><b>data</b><i>_</i><b>init</b><i>_</i><b>timeout</b>
-              Timeout  in  seconds  for sending the <b>DATA</b> command,
-              and for receiving the server response.
+              Timeout (default: seconds)  for  sending  the  <b>DATA</b>
+              command, and for receiving the server response.
 
        <b>smtp</b><i>_</i><b>data</b><i>_</i><b>xfer</b><i>_</i><b>timeout</b>
-              Timeout in seconds for sending the message content.
+              Timeout  (default: seconds) for sending the message
+              content.
 
        <b>smtp</b><i>_</i><b>data</b><i>_</i><b>done</b><i>_</i><b>timeout</b>
-              Timeout in seconds for sending the "<b>.</b>" command, and
-              for receiving the server response. When no response
-              is  received, a warning is logged that the mail may
-              be delivered multiple times.
+              Timeout (default: seconds) for sending the "<b>.</b>" com-
+              mand,  and  for receiving the server response. When
+              no response is received, a warning is  logged  that
+              the mail may be delivered multiple times.
 
        <b>smtp</b><i>_</i><b>quit</b><i>_</i><b>timeout</b>
-              Timeout in seconds for sending  the  <b>QUIT</b>  command,
-              and for receiving the server response.
-
-<b>SEE</b> <b>ALSO</b>
-       <a href="bounce.8.html">bounce(8)</a> non-delivery status reports
-       <a href="master.8.html">master(8)</a> process manager
-       <a href="qmgr.8.html">qmgr(8)</a> queue manager
-       syslogd(8) system logging
+              Timeout  (default:  seconds)  for  sending the <b>QUIT</b>
+              command, and for receiving the server response.
 
 
 
@@ -269,8 +269,14 @@ SMTP(8)                                                   SMTP(8)
 SMTP(8)                                                   SMTP(8)
 
 
+<b>SEE</b> <b>ALSO</b>
+       <a href="bounce.8.html">bounce(8)</a> non-delivery status reports
+       <a href="master.8.html">master(8)</a> process manager
+       <a href="qmgr.8.html">qmgr(8)</a> queue manager
+       syslogd(8) system logging
+
 <b>LICENSE</b>
-       The  Secure  Mailer  license must be distributed with this
+       The Secure Mailer license must be  distributed  with  this
        software.
 
 <b>AUTHOR(S)</b>
@@ -313,12 +319,6 @@ SMTP(8)                                                   SMTP(8)
 
 
 
-
-
-
-
-
-
 
 
 
index 08ff75d86beb2ea49b591829779ca9160ab64620..ce97479f810ff20b57345162d3aa40598dc13ab2 100644 (file)
@@ -109,21 +109,21 @@ TRIVIAL-REWRITE(8)                             TRIVIAL-REWRITE(8)
               Rewrite <i>site</i>!<i>user</i> to <i>user</i>@<i>site</i>.
 
 <b>Routing</b>
-       <b>default</b><i>_</i><b>transport</b>
-              The  default  transport to use when no transport is
-              explicitly given in the <a href="transport.5.html"><b>transport</b>(5)</a> table.
-
-       <b>relayhost</b>
-              The default host to send mail to when no  entry  is
-              matched in the <a href="transport.5.html"><b>transport</b>(5)</a> table.
+       <b>local</b><i>_</i><b>transport</b>
+              Where  to  deliver mail for destinations that match
+              $<b>mydestination</b> or  $<b>inet</b><i>_</i><b>interfaces</b>.   The  default
+              transport is <b>local</b>.
 
-              When  no  <b>relayhost</b>  is  specified,  mail is routed
-              directly to the destination's mail exchanger.
+              Syntax  is  <i>transport</i>:<i>nexthop</i>; see <a href="transport.5.html"><b>transport</b>(5)</a> for
+              details. The :<i>nexthop</i> part is optional.
 
-       <b>transport</b><i>_</i><b>maps</b>
-              List of tables with <i>domain</i> to (<i>transport,</i>  <i>nexthop</i>)
-              mappings.
+       <b>default</b><i>_</i><b>transport</b>
+              Where to deliver non-local mail when no information
+              is explicitly given in the <a href="transport.5.html"><b>transport</b>(5)</a> table.  The
+              default transport is <b>smtp</b>.
 
+              Syntax is <i>transport</i>:<i>nexthop</i>; see  <a href="transport.5.html"><b>transport</b>(5)</a>  for
+              details. The :<i>nexthop</i> part is optional.
 
 
 
@@ -137,13 +137,24 @@ TRIVIAL-REWRITE(8)                             TRIVIAL-REWRITE(8)
 TRIVIAL-REWRITE(8)                             TRIVIAL-REWRITE(8)
 
 
+       <b>relayhost</b>
+              The  default host to send non-local mail to when no
+              entry is matched in the <a href="transport.5.html"><b>transport</b>(5)</a> table.
+
+              When no <b>relayhost</b>  is  specified,  mail  is  routed
+              directly to the destination's mail exchanger.
+
+       <b>transport</b><i>_</i><b>maps</b>
+              List  of tables with <i>domain</i> to (<i>transport,</i> <i>nexthop</i>)
+              mappings.
+
 <b>SEE</b> <b>ALSO</b>
        <a href="master.8.html">master(8)</a> process manager
        syslogd(8) system logging
        <a href="transport.5.html">transport(5)</a> transport table format
 
 <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>
@@ -171,17 +182,6 @@ TRIVIAL-REWRITE(8)                             TRIVIAL-REWRITE(8)
 
 
 
-
-
-
-
-
-
-
-
-
-
-
 
 
 
index 976874a97a7c134ad141ebe227326400161be2cd..46a79e3f7248cbba3a9b3558422a1257e6bdd44c 100644 (file)
@@ -153,36 +153,40 @@ The default limit is taken from the
 .SH "Timeout controls"
 .ad
 .fi
+.PP
+The default time unit is seconds; an explicit time unit can
+be specified by appending a one-letter suffix: s (seconds),
+m (minutes), h (hours), d (days) or w (weeks).
 .IP \fBsmtp_connect_timeout\fR
-Timeout in seconds for completing a TCP connection. When no
+Timeout (default: seconds) for completing a TCP connection. When no
 connection can be made within the deadline, the SMTP client
 tries the next address on the mail exchanger list.
 .IP \fBsmtp_helo_timeout\fR
-Timeout in seconds for receiving the SMTP greeting banner.
+Timeout (default: seconds) for receiving the SMTP greeting banner.
 When the server drops the connection without sending a
 greeting banner, or when it sends no greeting banner within the
 deadline, the SMTP client tries the next address on the mail
 exchanger list.
 .IP \fBsmtp_helo_timeout\fR
-Timeout in seconds for sending the \fBHELO\fR command, and for
+Timeout (default: seconds) for sending the \fBHELO\fR command, and for
 receiving the server response.
 .IP \fBsmtp_mail_timeout\fR
-Timeout in seconds for sending the \fBMAIL FROM\fR command, and for
+Timeout (default: seconds) for sending the \fBMAIL FROM\fR command, and for
 receiving the server response.
 .IP \fBsmtp_rcpt_timeout\fR
-Timeout in seconds for sending the \fBRCPT TO\fR command, and for
+Timeout (default: seconds) for sending the \fBRCPT TO\fR command, and for
 receiving the server response.
 .IP \fBsmtp_data_init_timeout\fR
-Timeout in seconds for sending the \fBDATA\fR command, and for
+Timeout (default: seconds) for sending the \fBDATA\fR command, and for
 receiving the server response.
 .IP \fBsmtp_data_xfer_timeout\fR
-Timeout in seconds for sending the message content.
+Timeout (default: seconds) for sending the message content.
 .IP \fBsmtp_data_done_timeout\fR
-Timeout in seconds for sending the "\fB.\fR" command, and for
+Timeout (default: seconds) for sending the "\fB.\fR" command, and for
 receiving the server response. When no response is received, a
 warning is logged that the mail may be delivered multiple times.
 .IP \fBsmtp_quit_timeout\fR
-Timeout in seconds for sending the \fBQUIT\fR command, and for
+Timeout (default: seconds) for sending the \fBQUIT\fR command, and for
 receiving the server response.
 .SH SEE ALSO
 .na
index 2af0a0bcf50d33e5b2f070a2ac263978fd28df9b..bf110a70261e57bf44607655f81ab59e5a65b511 100644 (file)
@@ -94,11 +94,22 @@ Rewrite \fIsite\fR!\fIuser\fR to \fIuser\fR@\fIsite\fR.
 .SH Routing
 .ad
 .fi
+.IP \fBlocal_transport\fR
+Where to deliver mail for destinations that match $\fBmydestination\fR
+or $\fBinet_interfaces\fR.
+The default transport is \fBlocal\fR.
+.sp
+Syntax is \fItransport\fR:\fInexthop\fR; see \fBtransport\fR(5)
+for details. The :\fInexthop\fR part is optional.
 .IP \fBdefault_transport\fR
-The default transport to use when no transport is explicitly
+Where to deliver non-local mail when no information is explicitly
 given in the \fBtransport\fR(5) table.
+The default transport is \fBsmtp\fR.
+.sp
+Syntax is \fItransport\fR:\fInexthop\fR; see \fBtransport\fR(5)
+for details. The :\fInexthop\fR part is optional.
 .IP \fBrelayhost\fR
-The default host to send mail to when no entry is matched
+The default host to send non-local mail to when no entry is matched
 in the \fBtransport\fR(5) table.
 .sp
 When no \fBrelayhost\fR is specified, mail is routed directly
index f9ceda49ffcdec276989242db3ef01bb9151120d..2deec8c3c2adfb4afe753d542b7078e9bb2a1818 100644 (file)
@@ -142,7 +142,7 @@ int     deliver_pass(const char *class, const char *service,
     if ((nexthop = split_at(saved_service, ':')) == 0 || *nexthop == 0)
        nexthop = request->nexthop;
     if (*transport == 0)
-       transport = var_def_transport;
+       msg_fatal("missing transport name in \"%s\"", service);
 
     /*
      * Initialize.
index 8ae399bcaf1c5ff988801664dedcfe3c42a7a6c9..bf0df24ef9426dd792ba20711ef9b8e6133842be 100644 (file)
@@ -15,7 +15,7 @@
   * Version of this program.
   */
 #define VAR_MAIL_VERSION       "mail_version"
-#define DEF_MAIL_VERSION       "Snapshot-20001213"
+#define DEF_MAIL_VERSION       "Snapshot-20001214"
 extern char *var_mail_version;
 
 /* LICENSE
index 94c26a6efd9880b92bc5914a0e64505dcf308511..a5fbfa9181d6d13976b4fba869dc7212a5926226 100644 (file)
@@ -513,7 +513,7 @@ int     main(int argc, char **argv)
        VAR_QUEUE_RUN_DELAY, DEF_QUEUE_RUN_DELAY, &var_queue_run_delay, 's', 1, 0,
        VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 's', 1, 0,
        VAR_MAX_BACKOFF_TIME, DEF_MAX_BACKOFF_TIME, &var_max_backoff_time, 's', 1, 0,
-       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 'd', 1, 1000,
+       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 'd', 1, 8640000,
        VAR_XPORT_RETRY_TIME, DEF_XPORT_RETRY_TIME, &var_transport_retry_time, 's', 1, 0,
        0,
     };
index 30fd919f4c439fb0564e20828d35cc66a059bf3a..af6759542b13cbc41bf58bdd6150cf04dff5e702 100644 (file)
@@ -476,7 +476,7 @@ int     main(int argc, char **argv)
        VAR_QUEUE_RUN_DELAY, DEF_QUEUE_RUN_DELAY, &var_queue_run_delay, 's', 1, 0,
        VAR_MIN_BACKOFF_TIME, DEF_MIN_BACKOFF_TIME, &var_min_backoff_time, 's', 1, 0,
        VAR_MAX_BACKOFF_TIME, DEF_MAX_BACKOFF_TIME, &var_max_backoff_time, 's', 1, 0,
-       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 'd', 1, 1000,
+       VAR_MAX_QUEUE_TIME, DEF_MAX_QUEUE_TIME, &var_max_queue_time, 'd', 1, 8640000,
        VAR_XPORT_RETRY_TIME, DEF_XPORT_RETRY_TIME, &var_transport_retry_time, 's', 1, 0,
        0,
     };
index bc1fa58fbcc7823c708a5476cadd4c4ce0da2b9e..bd99fa61ae3c0584c6ec13b191853e2ebc98cd1e 100644 (file)
 void    resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop,
                             VSTRING *nextrcpt, int *flags)
 {
+    char   *myname = "resolve_addr";
     VSTRING *addr_buf = vstring_alloc(100);
     TOK822 *tree;
     TOK822 *saved_domain = 0;
     TOK822 *domain = 0;
+    char   *destination;
 
     *flags = 0;
 
@@ -115,7 +117,7 @@ void    resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop,
        if (tree->tail->type == '.' || tree->tail->type == '@') {
            tok822_free_tree(tok822_sub_keep_before(tree, tree->tail));
            continue;
-       }
+       }
 
        /*
         * A lone empty string becomes the postmaster.
@@ -205,10 +207,15 @@ void    resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop,
      */
     else if (domain != 0) {
        vstring_strcpy(channel, var_def_transport);
-       if (*var_relayhost)
+       if ((destination = split_at(STR(channel), ':')) != 0 && *destination)
+           vstring_strcpy(nexthop, destination);
+       else if (*var_relayhost)
            vstring_strcpy(nexthop, var_relayhost);
        else
            tok822_internalize(nexthop, domain->next, TOK822_STR_DEFL);
+       if (*STR(channel) == 0)
+           msg_fatal("null transport is not allowed: %s = %s",
+                     VAR_DEF_TRANSPORT, var_def_transport);
     }
 
     /*
@@ -217,8 +224,16 @@ void    resolve_addr(char *addr, VSTRING *channel, VSTRING *nexthop,
      */
     else {
        vstring_strcpy(channel, var_local_transport);
-       vstring_strcpy(nexthop, var_myhostname);
+       if ((destination = split_at(STR(channel), ':')) == 0
+           || *destination == 0)
+           destination = var_myhostname;
+       vstring_strcpy(nexthop, destination);
+       if (*STR(channel) == 0)
+           msg_fatal("null transport is not allowed: %s = %s",
+                     VAR_LOCAL_TRANSPORT, var_local_transport);
     }
+    if (*STR(nexthop) == 0)
+       msg_panic("%s: null nexthop", myname);
 
     /*
      * Clean up.
index e8ceee266d3ab929c638165cf737d6cf7e28bd2a..62e677728b8ac7538d869a813b09b6907595de21 100644 (file)
@@ -81,7 +81,7 @@ void    transport_init(void)
 
 /* transport_lookup - map a transport domain */
 
-int     transport_lookup(const char *domain, VSTRING *channel, VSTRING *nexthop)
+int     transport_lookup(const char *domain, VSTRING * channel, VSTRING * nexthop)
 {
     char   *low_domain = lowercase(mystrdup(domain));
     const char *name;
@@ -121,6 +121,7 @@ int     transport_lookup(const char *domain, VSTRING *channel, VSTRING *nexthop)
            if (*(transport = saved_value) == 0)
                transport = var_def_transport;
            vstring_strcpy(channel, transport);
+           (void) split_at(vstring_str(channel), ':');
            vstring_strcpy(nexthop, host);
            myfree(saved_value);
            found = 1;
index c533a9aeb3d28e02c4d0072391e8b8cecd47656f..61624ada5e49942ff501c43ff656d48ae996fbbe 100644 (file)
 /* .SH Routing
 /* .ad
 /* .fi
+/* .IP \fBlocal_transport\fR
+/*     Where to deliver mail for destinations that match $\fBmydestination\fR
+/*     or $\fBinet_interfaces\fR. 
+/*     The default transport is \fBlocal\fR.
+/* .sp
+/*     Syntax is \fItransport\fR:\fInexthop\fR; see \fBtransport\fR(5)
+/*     for details. The :\fInexthop\fR part is optional.
 /* .IP \fBdefault_transport\fR
-/*     The default transport to use when no transport is explicitly
+/*     Where to deliver non-local mail when no information is explicitly
 /*     given in the \fBtransport\fR(5) table.
+/*     The default transport is \fBsmtp\fR.
+/* .sp
+/*     Syntax is \fItransport\fR:\fInexthop\fR; see \fBtransport\fR(5)
+/*     for details. The :\fInexthop\fR part is optional.
 /* .IP \fBrelayhost\fR
-/*     The default host to send mail to when no entry is matched
+/*     The default host to send non-local mail to when no entry is matched
 /*     in the \fBtransport\fR(5) table.
 /* .sp
 /*     When no \fBrelayhost\fR is specified, mail is routed directly