]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.7-20090427
authorWietse Venema <wietse@porcupine.org>
Mon, 27 Apr 2009 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:35:20 +0000 (06:35 +0000)
15 files changed:
postfix/README_FILES/FILTER_README
postfix/RELEASE_NOTES
postfix/html/FILTER_README.html
postfix/html/postconf.5.html
postfix/man/man5/postconf.5
postfix/mantools/postlink
postfix/proto/FILTER_README.html
postfix/proto/postconf.proto
postfix/src/global/mail_version.h
postfix/src/milter/milter.c
postfix/src/smtpd/smtpd_milter.c
postfix/src/util/Makefile.in
postfix/src/util/argv.h
postfix/src/util/argv_split.c
postfix/src/xsasl/xsasl_dovecot_server.c

index a06923e60055a69f6392a70e5f64bbdb80f253ac..ee5a275de0f96e09c119551e7a2ffb361a3082e8 100644 (file)
@@ -200,8 +200,7 @@ Once you're satisfied with the content filtering script:
     concurrent processes, use whatever process limit is feasible for your
     machine. Content inspection software can gobble up a lot of system
     resources, so you don't want to have too much of it running at the same
-    time. The empty null_sender feature is both necessary and available with
-    Postfix 2.3 and later.
+    time. The empty null_sender setting is required with Postfix 2.3 and later.
 
   * To turn on content filtering for mail arriving via SMTP only, append "-
     o content_filter=filter:dummy" to the master.cf entry that defines the
index bad09030230795a77ebe84ca5fd3016d6d3c5940..970dc5ced6fc2e1f916eb068ce00253a348c4a46 100644 (file)
@@ -11,6 +11,30 @@ instead, a new snapshot is released.
 The mail_release_date configuration parameter (format: yyyymmdd)
 specifies the release date of a stable release or snapshot release.
 
+Incompatibility with snapshot 20090426
+======================================
+
+The Postfix SMTP client no longer tries to use the obsolete SSLv2
+protocol by default, as this may prevent the use of modern SSL
+features.  Lack of SSLv2 support should never be a problem, since
+SSLv3 was defined in 1996, and TLSv1 in 2006. The Postfix SMTP
+server maintains SSLv2 support for backwards compatibility with
+ancient clients.
+
+Major changes with snapshot 20090426
+====================================
+
+The following improvements have been made to the Milter implementation:
+
+- Improved compatibility of the {mail_addr} and {rcpt_addr} macros.
+
+- Support for the {mail_host}, {mail_mailer}, {rcpt_host} and
+{rcpt_mailer} macros.
+
+- Milters can now request rejected recipients with the SMFIP_RCPT_REJ
+feature. In this case, {rcpt_mailer} is "error", {rcpt_host} is an
+enhanced status code, and {rcpt_addr} is descriptive text.
+
 Incompatibility with snapshot 20090330
 ======================================
 
index 5cc68299c77977b55ac5d170ed0a8568ca8c49cc..f1a6c12c8b44d5450300fac55e3f1f6eee53a77e 100644 (file)
@@ -374,8 +374,8 @@ description of the command syntax below). </p>
 limit of 10 concurrent processes, use whatever process limit is
 feasible for your machine.  Content inspection software can gobble
 up a lot of system resources, so you don't want to have too much
-of it running at the same time. The empty null_sender feature is
-both necessary and available with Postfix 2.3 and later. </p>
+of it running at the same time. The empty null_sender setting is
+required with Postfix 2.3 and later. </p>
 
 <li> <p> To turn on content filtering for mail arriving via SMTP
 only, append "-o <a href="postconf.5.html#content_filter">content_filter</a>=filter:dummy" to the <a href="master.5.html">master.cf</a>
index 1777b278746c2f5ed9a6215acfda33eeb92b6d29..500502a4684dfb60fea20609da1295b072455997 100644 (file)
@@ -9693,8 +9693,8 @@ configurations in environments where DNS security is not assured. </p>
 
 <p> List of TLS protocols that the Postfix SMTP client will exclude or
 include with opportunistic TLS encryption. Starting with Postfix 2.6,
-the Postfix SMTP client will by default only use SSLv3 and TLSv1, the
-SSLv2 protocol is insecure and obsolete. </p>
+the Postfix SMTP client will by default not use the obsolete SSLv2
+protocol. </p>
 
 <p> In <a href="postconf.5.html">main.cf</a> the values are separated by whitespace, commas or
 colons. In the policy table (see <a href="postconf.5.html#smtp_tls_policy_maps">smtp_tls_policy_maps</a>) the only valid
index 290b269a963997885efd3442eb2849dc661bc761..54015f74fc607e5216e53b9193da42b0f1bc4d20 100644 (file)
@@ -5764,8 +5764,8 @@ This feature is available in Postfix 2.3 and later.
 .SH smtp_tls_protocols (default: !SSLv2)
 List of TLS protocols that the Postfix SMTP client will exclude or
 include with opportunistic TLS encryption. Starting with Postfix 2.6,
-the Postfix SMTP client will by default only use SSLv3 and TLSv1, the
-SSLv2 protocol is insecure and obsolete.
+the Postfix SMTP client will by default not use the obsolete SSLv2
+protocol.
 .PP
 In main.cf the values are separated by whitespace, commas or
 colons. In the policy table (see smtp_tls_policy_maps) the only valid
index 3d01af7c540138611b669fee606e571e148d2802..7d4d59e5255ef268e0ede5ec1f01d9ec2ea008a5 100755 (executable)
@@ -667,7 +667,6 @@ while (<>) {
     s;\btls_eecdh_ultra_curve\b;<a href="postconf.5.html#tls_eecdh_ultra_curve">$&</a>;g;
  
     s;\bfrozen_delivered_to\b;<a href="postconf.5.html#frozen_delivered_to">$&</a>;g;
-    s;\bfrozen_owner_alias\b;<a href="postconf.5.html#frozen_owner_alias">$&</a>;g;
 
     # Transport-dependent magical parameters.
 
index 7ee33f665ee382ba29a3e355b76e6e6bab561f22..d021d8a33e4b09de592e6d6ad0794968ef03bdfa 100644 (file)
@@ -374,8 +374,8 @@ description of the command syntax below). </p>
 limit of 10 concurrent processes, use whatever process limit is
 feasible for your machine.  Content inspection software can gobble
 up a lot of system resources, so you don't want to have too much
-of it running at the same time. The empty null_sender feature is
-both necessary and available with Postfix 2.3 and later. </p>
+of it running at the same time. The empty null_sender setting is
+required with Postfix 2.3 and later. </p>
 
 <li> <p> To turn on content filtering for mail arriving via SMTP
 only, append "-o content_filter=filter:dummy" to the master.cf
index f46e246cc56f6fa3a28dced9fc9b1106dba1001f..083d51c48681bb3f39acc2f0e2b6099a08d69bcd 100644 (file)
@@ -11288,8 +11288,8 @@ the hostname and IP address. The logging format is "host[address]:port".
 
 <p> List of TLS protocols that the Postfix SMTP client will exclude or
 include with opportunistic TLS encryption. Starting with Postfix 2.6,
-the Postfix SMTP client will by default only use SSLv3 and TLSv1, the
-SSLv2 protocol is insecure and obsolete. </p>
+the Postfix SMTP client will by default not use the obsolete SSLv2
+protocol. </p>
 
 <p> In main.cf the values are separated by whitespace, commas or
 colons. In the policy table (see smtp_tls_policy_maps) the only valid
index 80c6d4906d08ba47aaea315b2e6f58550123abd0..f0cc339ff9a1a3a1a050ff1c55ea6fe60b42b5e5 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      "20090426"
+#define MAIL_RELEASE_DATE      "20090427"
 #define MAIL_VERSION_NUMBER    "2.7"
 
 #ifdef SNAPSHOT
index 718940445e2f1c3050de8ab8483a8a695c0656ac..afd227e12fb45873dc7d8758e63222475808b46e 100644 (file)
 /*
 /*     milter_rcpt_event() reports an RCPT TO event to the specified
 /*     milter instances, after sending the macros that were specified
-/*     with the milter_create() rcpt_macros argument. When the flags
-/*     argument is non-zero, it selects only milter instances that
-/*     have at least one of the specificed flags. Known flags are:
+/*     with the milter_create() rcpt_macros argument. The flags
+/*     argument supports the following:
 /* .IP MILTER_FLAG_WANT_RCPT_REJ
-/*     This milter expects to receive rejected recipients with the
-/*     {rcpt_mailer} macro set to "error".
+/*     When this flag is cleared, invoke all milters.  When this
+/*     flag is set, invoke only milters that want to receive
+/*     rejected recipients; with Sendmail V8 Milters, {rcpt_mailer}
+/*     is set to "error", {rcpt_host} is set to an enhanced status
+/*     code, and {rcpt_addr} is set to descriptive text.
 /* .PP
 /*     milter_data_event() reports a DATA event to the specified
 /*     milter instances, after sending the macros that were specified
index b129f352a45087f77149f6a7b174866a9254e9a6..2557b3dcce78add9c304f3816d48a332234faa39 100644 (file)
@@ -189,6 +189,7 @@ const char *smtpd_milter_eval(const char *name, void *ptr)
        if (state->recipient[0] == 0)
            return ("");
        if (state->milter_reject_text) {
+           /* 554 5.7.1 <user@example.com>: Relay access denied */
            vstring_strcpy(state->expand_buf, state->milter_reject_text + 4);
            cp = split_at(STR(state->expand_buf), ' ');
            return (cp ? split_at(cp, ' ') : cp);
@@ -205,6 +206,7 @@ const char *smtpd_milter_eval(const char *name, void *ptr)
        if (state->recipient == 0)
            return (0);
        if (state->milter_reject_text) {
+           /* 554 5.7.1 <user@example.com>: Relay access denied */
            vstring_strcpy(state->expand_buf, state->milter_reject_text + 4);
            (void) split_at(STR(state->expand_buf), ' ');
            return (STR(state->expand_buf));
index 3db912c7edbd56e7b8e0c094e239f24bc5b277d0..de0172e2faa55b25ca75521fcb7db0676a5cb0ef 100644 (file)
@@ -569,6 +569,7 @@ argv.o: sys_defs.h
 argv_split.o: argv.h
 argv_split.o: argv_split.c
 argv_split.o: mymalloc.h
+argv_split.o: msg.h
 argv_split.o: stringops.h
 argv_split.o: sys_defs.h
 argv_split.o: vbuf.h
index f369c084d19fbb0950805b1c11224dfa9ef31f94..b039fbb72d3e97a8e04286761b392b8fdc4c8c3b 100644 (file)
@@ -28,6 +28,7 @@ extern void argv_truncate(ARGV *, ssize_t);
 extern ARGV *argv_free(ARGV *);
 
 extern ARGV *argv_split(const char *, const char *);
+extern ARGV *argv_split_count(const char *, const char *, ssize_t);
 extern ARGV *argv_split_append(ARGV *, const char *, const char *);
 
 #define ARGV_END       ((char *) 0)
index d7e6bafa27d740062ddd392faa49671503659e28..920bf399ac49d1a41d458825d92c4cb1f8976f15 100644 (file)
@@ -9,6 +9,10 @@
 /*     ARGV    *argv_split(string, delim)
 /*     const char *string;
 /*
+/*     ARGV    *argv_split_count(string, delim, count)
+/*     const char *string;
+/*     ssize_t count;
+/*
 /*     ARGV    *argv_split_append(argv, string, delim)
 /*     ARGV    *argv;
 /*     const char *string;
 /*     to the delimiters specified in \fIdelim\fR. The result is
 /*     a null-terminated string array.
 /*
+/*     argv_split_count() is like argv_split() but stops splitting
+/*     input after at most \fIcount\fR -1 times and leaves the
+/*     remainder, if any, in the last array element. It is an error
+/*     to specify a count < 1.
+/* 
 /*     argv_split_append() performs the same operation as argv_split(),
 /*     but appends the result to an existing string array.
 /* SEE ALSO
 /* System libraries. */
 
 #include <sys_defs.h>
+#include <string.h>
 
 /* Application-specific. */
 
 #include "mymalloc.h"
 #include "stringops.h"
 #include "argv.h"
+#include "msg.h"
 
 /* argv_split - split string into token array */
 
@@ -61,6 +72,28 @@ ARGV   *argv_split(const char *string, const char *delim)
     return (argvp);
 }
 
+/* argv_split_count - split string into token array */
+
+ARGV   *argv_split_count(const char *string, const char *delim, ssize_t count)
+{
+    ARGV   *argvp = argv_alloc(1);
+    char   *saved_string = mystrdup(string);
+    char   *bp = saved_string;
+    char   *arg;
+
+    if (count < 1)
+       msg_panic("argv_split_count: bad count: %ld", (long) count);
+    while (count-- > 1 && (arg = mystrtok(&bp, delim)) != 0)
+       argv_add(argvp, arg, (char *) 0);
+    if (*bp)
+       bp += strspn(bp, delim);
+    if (*bp)
+       argv_add(argvp, bp, (char *) 0);
+    argv_terminate(argvp);
+    myfree(saved_string);
+    return (argvp);
+}
+
 /* argv_split_append - split string into token array, append to array */
 
 ARGV   *argv_split_append(ARGV *argvp, const char *string, const char *delim)
index 3ad1c74b5eb098bae47c8c834786e0b0c5c8df66..4af958ebdc2bb9a7317752e41b610529b0f116d0 100644 (file)
@@ -282,7 +282,7 @@ static int xsasl_dovecot_server_connect(XSASL_DOVECOT_SERVER_IMPL *xp)
                    VSTREAM_CTL_TIMEOUT, AUTH_TIMEOUT,
                    VSTREAM_CTL_END);
 
-       /* XXX Encapsulate for logging. */
+    /* XXX Encapsulate for logging. */
     vstream_fprintf(sasl_stream,
                    "VERSION\t%u\t%u\n"
                    "CPID\t%u\n",
@@ -295,7 +295,7 @@ static int xsasl_dovecot_server_connect(XSASL_DOVECOT_SERVER_IMPL *xp)
     }
     success = 0;
     line_str = vstring_alloc(256);
-       /* XXX Encapsulate for logging. */
+    /* XXX Encapsulate for logging. */
     while (vstring_get_nonl(line_str, sasl_stream) != VSTREAM_EOF) {
        line = vstring_str(line_str);
 
@@ -545,7 +545,7 @@ static int xsasl_dovecot_handle_reply(XSASL_DOVECOT_SERVER *server,
     const char *myname = "xsasl_dovecot_handle_reply";
     char   *line, *cmd;
 
-       /* XXX Encapsulate for logging. */
+    /* XXX Encapsulate for logging. */
     while (vstring_get_nonl(server->sasl_line,
                            server->impl->sasl_stream) != VSTREAM_EOF) {
        line = vstring_str(server->sasl_line);
@@ -647,7 +647,7 @@ int     xsasl_dovecot_server_first(XSASL_SERVER *xp, const char *sasl_method,
                        server->service, server->server_addr,
                        server->client_addr);
        if (server->tls_flag)
-       /* XXX Encapsulate for logging. */
+           /* XXX Encapsulate for logging. */
            vstream_fputs("\tsecured", server->impl->sasl_stream);
        if (init_response) {
 
@@ -655,7 +655,7 @@ int     xsasl_dovecot_server_first(XSASL_SERVER *xp, const char *sasl_method,
             * initial response is already base64 encoded, so we can send it
             * directly.
             */
-       /* XXX Encapsulate for logging. */
+           /* XXX Encapsulate for logging. */
            vstream_fprintf(server->impl->sasl_stream,
                            "\tresp=%s", init_response);
        }
@@ -690,7 +690,7 @@ static int xsasl_dovecot_server_next(XSASL_SERVER *xp, const char *request,
        vstring_strcpy(reply, "Invalid base64 data in continued response");
        return XSASL_AUTH_FAIL;
     }
-       /* XXX Encapsulate for logging. */
+    /* XXX Encapsulate for logging. */
     vstream_fprintf(server->impl->sasl_stream,
                    "CONT\t%u\t%s\n", server->last_request_id, request);
     if (vstream_fflush(server->impl->sasl_stream) == VSTREAM_EOF) {