]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.9-20111024
authorWietse Venema <wietse@porcupine.org>
Mon, 24 Oct 2011 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:37:31 +0000 (06:37 +0000)
20 files changed:
postfix/HISTORY
postfix/README_FILES/TUNING_README
postfix/WISHLIST
postfix/html/DEBUG_README.html
postfix/html/TUNING_README.html
postfix/html/mailq.1.html
postfix/html/newaliases.1.html
postfix/html/postconf.5.html
postfix/html/sendmail.1.html
postfix/man/man1/sendmail.1
postfix/man/man5/postconf.5
postfix/proto/DEBUG_README.html
postfix/proto/TUNING_README.html
postfix/proto/postconf.proto
postfix/src/cleanup/cleanup.c
postfix/src/global/mail_version.h
postfix/src/global/mime_state.c
postfix/src/milter/milter.c
postfix/src/sendmail/sendmail.c
postfix/src/smtpd/smtpd.h

index d58dfe5812c2fc1f0f7e50998e32aced4beeb660..6e0561a754d9db5c44de41a572411854f627410f 100644 (file)
@@ -17004,3 +17004,19 @@ Apologies for any names omitted.
        all input lines ending in <CR><LF> only if the first input
        line ends in <CR><LF>).  Files: sendmail/sendmail.c,
        global/mail_params.h, proto/postconf.proto.
+
+20111017
+
+       Cleanup: refined the heuristic that automagically transforms
+       legacy "sendmail -V" VERP requests into contemporary "sendmail
+       -XV" syntax.  File: sendmail/sendmail.c.
+
+       Cleanup: when the cleanup daemon goes into discard mode,
+       don't get stuck when it runs onto milter file descriptor
+       information. File: cleanup/cleanup.c.
+
+20111020
+
+       EAI Future-proofing: don't apply strict_mime_encoding_domain
+       checks to unknown message subtypes such as message/global*.
+       File: global/mime_state.c.
index e7d80706c6c49fb9dc27bdead9077d5da054c5d2..b704fb2d29ef4121fc415f33b9c9a600c37caa34 100644 (file)
@@ -360,6 +360,11 @@ This process is governed by a bunch of little parameters.
         this parameter limits the size of the short-term, in-memory list of
         "dead" destinations. Destinations that don't fit the list are not
         added.
+    transport_destination_concurrency_failed_cohort_limit
+        Controls when a destination is considered "dead". This parameter is
+        critical with a non-zero transport_destination_rate_delay, with a
+        reduced transport_destination_concurrency_limit, or with a reduced
+        initial_destination_concurrency.
 
 IMPORTANT: If you increase the frequency of deferred mail delivery attempts, or
 if you flush the deferred mail queue frequently, then you may find that Postfix
index 6e5dc38fd23c71cf1b47c12d0dd1c4c3db11a95e..4157fa95582f8c1a9b082f23300e10da9ed0937f 100644 (file)
@@ -17,6 +17,41 @@ Wish list:
        that require performance for low-security operations
        such as sharing the postscreen cache.
 
+       What is the feasibility of adding an mta_name (personality)
+       attribute that is propagated via queue files and delivery
+       agent requests? It would default to myhostname.
+
+       Major performance improvement opportunity (that is until
+       everyone runs Postfix queues on SSDs).  Investigate the
+       viability of a daemon that produces incoming and postdrop
+       queue files on request (in reality it would maintain a
+       limited queue of "spare" files). Central queue file allocation
+       reduces the I/O performance disadvantage that qmgr has when
+       100 smtpd processes are receiving mail, or when lots of
+       mail is submitted with the sendmail command line.  When an
+       smtpd process accepts MAIL FROM, a cleanup daemon requests
+       a queue file and receives a queue ID + file handle from the
+       queue file daemon.  If the queue file daemon is down, the
+       cleanup daemon creates the file itself like it does now;
+       this can be hidden in the mail_stream library module.  If
+       the mail transaction is aborted, then the cleanup daemon
+       gives the queue file back to the queue file daemon's "spare"
+       file pool, saving most of the overhead of creating and
+       deleting a queue file (the file would still need to be
+       renamed at the start of the next mail transaction).  If the
+       cleanup daemon is unable to give a file back, then it can
+       delete the file like it does now; this can be hidden in the
+       mail_stream library module.  The whole thing can be
+       transparently added to Postfix by adding calls to a
+       queue-file-service client to the mail_queue_enter() and
+       mail_queue_remove() library routines.  Other advantages:
+       1) negligible performance hit when queue file allocation
+       happens earlier, so that logging and milters have a queue
+       ID for the whole transaction not just the first valid
+       recipient; 2) by not removing every queue files we get most
+       of the performance gain of a queue based on append/truncate
+       instead of the much more expensive create/delete.
+
        Investigate viability of Sendmail socket maps (the moral
        equivalent of tcp_table(5)), and dns maps.
 
index 48dea66873e1a145649f5aa1b66c50d518fff02e..708290b0acdd7c5b5c6e4134d4976d38c6c9cdb9 100644 (file)
@@ -315,7 +315,7 @@ so that it invokes the call tracer of your choice, for example:
 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
     <a href="postconf.5.html#debugger_command">debugger_command</a> =
          PATH=/bin:/usr/bin:/usr/local/bin;
-         (truss -p $<a href="postconf.5.html#process_id">process_id</a> 2&gt&amp;1 | logger -p mail.info) &amp; sleep 5
+         (truss -p $<a href="postconf.5.html#process_id">process_id</a> 2&gt;&amp;1 | logger -p mail.info) &amp; sleep 5
 </pre>
 </blockquote>
 
index 2da1fbbc91a0ab78defabb9fd76580e325f81a42..343e424e1560f09184c0c674b6a75773140e2c17 100644 (file)
@@ -509,6 +509,13 @@ this parameter limits the size of the short-term, in-memory list
 of "dead" destinations. Destinations that don't fit the list are
 not added. </dd>
 
+<dt> <a href="postconf.5.html#transport_destination_concurrency_failed_cohort_limit"><i>transport</i>_destination_concurrency_failed_cohort_limit</a>
+</dt> <dd> Controls when a destination is considered "dead". This
+parameter is critical with a non-zero
+<a href="postconf.5.html#transport_destination_rate_delay"><i>transport</i>_destination_rate_delay</a>, with a reduced
+<a href="postconf.5.html#transport_destination_concurrency_limit"><i>transport</i>_destination_concurrency_limit</a>, or with
+a reduced <a href="postconf.5.html#initial_destination_concurrency">initial_destination_concurrency</a>.  </dd>
+
 </dl>
 
 </blockquote>
index b33a05965110cd827353a2ee80fa3f854a885ade..9cec093fd9629a1ebaad7e5e18594a5c73128869 100644 (file)
@@ -322,6 +322,8 @@ SENDMAIL(1)                                                        SENDMAIL(1)
        ples.
 
 <b>COMPATIBILITY CONTROLS</b>
+       Available with Postfix 2.9 and later:
+
        <b>sendmail_fix_line_endings (always)</b>
               Controls how the Postfix sendmail command  converts
               email  message line endings from &lt;CR&gt;&lt;LF&gt; into UNIX
index b33a05965110cd827353a2ee80fa3f854a885ade..9cec093fd9629a1ebaad7e5e18594a5c73128869 100644 (file)
@@ -322,6 +322,8 @@ SENDMAIL(1)                                                        SENDMAIL(1)
        ples.
 
 <b>COMPATIBILITY CONTROLS</b>
+       Available with Postfix 2.9 and later:
+
        <b>sendmail_fix_line_endings (always)</b>
               Controls how the Postfix sendmail command  converts
               email  message line endings from &lt;CR&gt;&lt;LF&gt; into UNIX
index 5cc67421815c81b11b64272a05e6369b04cd83b0..45d1e652cbb25c216d5db886ab528c7eb1f887df 100644 (file)
@@ -12531,8 +12531,7 @@ restriction lists" for a discussion of evaluation context and time.
 <p> Mandatory TLS: announce STARTTLS support to SMTP clients,
 and require that clients use TLS encryption.  According to <a href="http://tools.ietf.org/html/rfc2487">RFC 2487</a>
 this MUST NOT be applied in case of a publicly-referenced SMTP
-server.  This option is off by default and should be used only on
-dedicated servers. </p>
+server.  This option is therefore off by default. </p>
 
 <p> Note 1: "<a href="postconf.5.html#smtpd_enforce_tls">smtpd_enforce_tls</a> = yes" implies "<a href="postconf.5.html#smtpd_tls_auth_only">smtpd_tls_auth_only</a> = yes". </p>
 
index b33a05965110cd827353a2ee80fa3f854a885ade..9cec093fd9629a1ebaad7e5e18594a5c73128869 100644 (file)
@@ -322,6 +322,8 @@ SENDMAIL(1)                                                        SENDMAIL(1)
        ples.
 
 <b>COMPATIBILITY CONTROLS</b>
+       Available with Postfix 2.9 and later:
+
        <b>sendmail_fix_line_endings (always)</b>
               Controls how the Postfix sendmail command  converts
               email  message line endings from &lt;CR&gt;&lt;LF&gt; into UNIX
index fba4317b91a06fe53ed87cf622782082bed9a8d5..96eb34548980bd57f898cd6357e79283d7152e6e 100644 (file)
@@ -279,6 +279,7 @@ The text below provides only a parameter summary. See
 .nf
 .ad
 .fi
+Available with Postfix 2.9 and later:
 .IP "\fBsendmail_fix_line_endings (always)\fR"
 Controls how the Postfix sendmail command converts email message
 line endings from <CR><LF> into UNIX format (<LF>).
index a81c2b0e0099ece48f42a62e540e59854d6f3b8a..c2b6dee9e18cb853e98b023f8b526057e0060ed6 100644 (file)
@@ -7854,8 +7854,7 @@ See smtpd_data_restrictions for details and limitations.
 Mandatory TLS: announce STARTTLS support to SMTP clients,
 and require that clients use TLS encryption.  According to RFC 2487
 this MUST NOT be applied in case of a publicly-referenced SMTP
-server.  This option is off by default and should be used only on
-dedicated servers.
+server.  This option is therefore off by default.
 .PP
 Note 1: "smtpd_enforce_tls = yes" implies "smtpd_tls_auth_only = yes".
 .PP
index 180849597a07e5b69efe6bc3a9f3bc60bcbff6c1..a65e42a1a5954379e6efe5fc870e7ba07993a7b5 100644 (file)
@@ -315,7 +315,7 @@ so that it invokes the call tracer of your choice, for example:
 /etc/postfix/main.cf:
     debugger_command =
          PATH=/bin:/usr/bin:/usr/local/bin;
-         (truss -p $process_id 2&gt&amp;1 | logger -p mail.info) &amp; sleep 5
+         (truss -p $process_id 2&gt;&amp;1 | logger -p mail.info) &amp; sleep 5
 </pre>
 </blockquote>
 
index 09fc4bff276fa7f43858655e169935c9a1ebf323..5c7b5b39bfb264526a95f5dd6b6bad8e7b3ffb27 100644 (file)
@@ -509,6 +509,13 @@ this parameter limits the size of the short-term, in-memory list
 of "dead" destinations. Destinations that don't fit the list are
 not added. </dd>
 
+<dt> <i>transport</i>_destination_concurrency_failed_cohort_limit
+</dt> <dd> Controls when a destination is considered "dead". This
+parameter is critical with a non-zero
+<i>transport</i>_destination_rate_delay, with a reduced
+<i>transport</i>_destination_concurrency_limit, or with
+a reduced initial_destination_concurrency.  </dd>
+
 </dl>
 
 </blockquote>
index f1e25d3836fa5e986c96b48b3b53c6bc3d22c23d..e25f9c6b0dc18e6506697313c7f885907155835c 100644 (file)
@@ -8888,8 +8888,7 @@ Postfix 2.3 and later use smtpd_tls_security_level instead. </p>
 <p> Mandatory TLS: announce STARTTLS support to SMTP clients,
 and require that clients use TLS encryption.  According to RFC 2487
 this MUST NOT be applied in case of a publicly-referenced SMTP
-server.  This option is off by default and should be used only on
-dedicated servers. </p>
+server.  This option is therefore off by default. </p>
 
 <p> Note 1: "smtpd_enforce_tls = yes" implies "smtpd_tls_auth_only = yes". </p>
 
index 0f8df6616f9bf7ac07ba2550deb912649bdc26de..77916d07ec52ea67a2a6a697bdbb86a3dd2d0bd7 100644 (file)
@@ -490,8 +490,15 @@ static void cleanup_service(VSTREAM *src, char *unused_service, char **argv)
      */
     if (CLEANUP_OUT_OK(state) == 0 && type > 0) {
        while (type != REC_TYPE_END
-              && (type = rec_get(src, buf, 0)) > 0)
-            /* void */ ;
+              && (type = rec_get(src, buf, 0)) > 0) {
+           if (type == REC_TYPE_MILT_COUNT) {
+               int     milter_count = atoi(vstring_str(buf));
+
+               /* Avoid deadlock. */
+               if (milter_count >= 0)
+                   cleanup_milter_receive(state, milter_count);
+           }
+       }
     }
 
     /*
index a59d32504121c45bec95b4ed967474924c43e01a..ab6759329ddb4adf1dea5af4e7a127ffe93308c9 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      "20111012"
+#define MAIL_RELEASE_DATE      "20111024"
 #define MAIL_VERSION_NUMBER    "2.9"
 
 #ifdef SNAPSHOT
index b807844e48e5f70b2f9691875cbc6ec2ba0e3563..bac033d16149675dcc3b378b533be25b3e0f703b 100644 (file)
@@ -925,7 +925,9 @@ int     mime_state_update(MIME_STATE *state, int rec_type,
                    if (state->curr_domain != MIME_ENC_7BIT)
                        REPORT_ERROR(state, MIME_ERR_ENCODING_DOMAIN,
                                 mime_state_enc_name(state->curr_encoding));
-               } else {
+               }
+               /* EAI: message/global allows non-identity encoding. */
+               else if (state->curr_stype == MIME_STYPE_RFC822) {
                    if (state->curr_encoding != state->curr_domain)
                        REPORT_ERROR(state, MIME_ERR_ENCODING_DOMAIN,
                                 mime_state_enc_name(state->curr_encoding));
index ee38b0f238acf055eb91d16652f14fa5f1e75b03..f4c64aff7cfc46162f606e67a783c410d60b12b9 100644 (file)
@@ -634,6 +634,9 @@ int     milter_send(MILTERS *milters, VSTREAM *stream)
                count++;
     (void) rec_fprintf(stream, REC_TYPE_MILT_COUNT, "%d", count);
 
+    if (msg_verbose)
+       msg_info("send %d milters");
+
     /*
      * XXX Optimization: don't send or receive further information when there
      * aren't any active filters.
@@ -679,6 +682,9 @@ MILTERS *milter_receive(VSTREAM *stream, int count)
     MILTER *tail = 0;
     MILTER *milter = 0;
 
+    if (msg_verbose)
+       msg_info("receive %d milters", count);
+
     /*
      * XXX We must instantiate a MILTERS structure even when the sender has
      * no active filters, otherwise the cleanup server would try to use its
index 99059633eb0de650c3ac74711c167d403b7e1156..a1a5dd7928bb9a2a0ca6741b017b60ca2a3a3e25 100644 (file)
 /* COMPATIBILITY CONTROLS
 /* .ad
 /* .fi
+/*     Available with Postfix 2.9 and later:
 /* .IP "\fBsendmail_fix_line_endings (always)\fR"
 /*     Controls how the Postfix sendmail command converts email message
 /*     line endings from <CR><LF> into UNIX format (<LF>).
@@ -1102,7 +1103,8 @@ int     main(int argc, char **argv)
            optind++;
            continue;
        }
-       if (strcmp(argv[OPTIND], "-V") == 0) {
+       if (strcmp(argv[OPTIND], "-V") == 0
+           && argv[OPTIND + 1] != 0 && strlen(argv[OPTIND + 1]) == 2) {
            msg_warn("option -V is deprecated with Postfix 2.3; "
                     "specify -XV instead");
            argv[OPTIND] = "-XV";
index 93e42e3cc70fa39ff2a36f1c48214b9392e21d99..73f15ffbeb089eb874ac7196ba7cfd62680bcd14 100644 (file)
@@ -183,6 +183,7 @@ typedef struct {
 #define SMTPD_FLAG_ILL_PIPELINING  (1<<1)      /* inappropriate pipelining */
 #define SMTPD_FLAG_AUTH_USED      (1<<2)       /* don't reuse SASL state */
 
+ /* Security: don't reset SMTPD_FLAG_AUTH_USED. */
 #define SMTPD_MASK_MAIL_KEEP           ~0      /* keep all after MAIL reset */
 
 #define SMTPD_STATE_XFORWARD_INIT  (1<<0)      /* xforward preset done */