]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.9-20110117
authorWietse Venema <wietse@porcupine.org>
Mon, 17 Jan 2011 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:37:02 +0000 (06:37 +0000)
14 files changed:
postfix/HISTORY
postfix/RELEASE_NOTES-2.8
postfix/WISHLIST
postfix/html/postconf.5.html
postfix/man/man5/postconf.5
postfix/proto/postconf.proto
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/postscreen/postscreen.c
postfix/src/postscreen/postscreen.h
postfix/src/postscreen/postscreen_state.c
postfix/src/tlsproxy/tlsproxy.c
postfix/src/util/sys_defs.h
postfix/src/util/watchdog.c

index 5551d55779497e25414190ae3ecf8041fa1ef78f..fb9db51c4de1c13ea3d7eed6a51c0f2e402ce827 100644 (file)
@@ -16471,3 +16471,25 @@ Apologies for any names omitted.
 
        Cleanup: documentation, in preparation for the Postfix 2.8
        stable release.
+
+20110117
+
+       Bugfix (introduced Postfix alpha, or thereabouts): on HP-UX
+       the Postfix event engine was deaf for SIGALRM signals.
+       Symptoms were killed processes when the watchdog timeout
+       was less than max_idle.  The fix is the same as Solaris fix
+       20110109. Since we can't know what other systems need this,
+       the workaround is enabled by default.  Files: util/sys_defs.h.
+
+       Cleanup: "smtpd_tls_eecdh_grade = strong" by default, instead
+       of snapshot-only. File: global/mail_params.h, proto/postconf.proto.
+
+       Cleanup: missing "#include <errno.h>" in util/watchdog.c.
+
+       Bugfix: when compiled without -DUSE_TLS, tlsproxy used the
+       wrong server skeleton (multi_server instead of event_server).
+       File: tlsproxy/tlsproxy.c.
+
+       Workaround: added a panic check for code that is mis-compiled
+       by the HP-UX compiler.  File: postscreen/postscreen.c,
+       postscreen/postscreen.h, postscreen/postscreen_state.c.
index 632904bf0eac39c4b095fea35fb5f0b4849d3cd8..536b595760c0771d033547e51b9844ac39e5d453 100644 (file)
@@ -14,6 +14,31 @@ specifies the release date of a stable release or snapshot release.
 If you upgrade from Postfix 2.6 or earlier, read RELEASE_NOTES-2.7
 before proceeding.
 
+Major changes - restart Postfix
+-------------------------------
+
+If you upgrade from Postfix 2.6 or earlier, you must execute "postfix
+stop" and "postfix start" before you can use the postscreen(8)
+daemon.  This is needed because the Postfix 2.6 "pass" master service
+type did not work reliably on some systems.
+
+If you upgrade from Postfix 2.7, or from Postfix 2.8 before July
+25, 2010, you must execute "postfix reload" (or "postfix stop"
+followed by "postfix start"). This is needed because the queue
+manager to delivery agent protocol has changed. Failure to do this
+results in repeated logging of warnings with:
+
+    warning: unexpected attribute rewrite_context ...
+
+If the warning does not go away after restarting Postfix, examine
+the output from this command:
+
+    strings -af /usr/libexec/postfix/* | grep mail_version=
+
+(where /usr/libexec/postfix is the value of main.cf:daemon_directory)
+and update the executables that have a version string that differs
+from the other programs.
+
 Major changes - DNSBL/DNSWL support
 -----------------------------------
 
@@ -324,11 +349,6 @@ parameter specifies how long to keep an expired entry in the cache.
 This prevents a client from being logged as "NEW" after its record
 expired only a little while ago.
 
-[Incompat 20091008] If you upgrade from Postfix 2.6 or earlier, you
-must stop and start the Postfix master daemon before you can use
-the postscreen(8) daemon.  This is needed because the Postfix 2.6
-"pass" master service type did not work reliably on some systems.
-
 [Feature 20091008] Prototype postscreen(8) server that runs a number
 of time-consuming checks in parallel for all incoming SMTP connections,
 before clients are allowed to talk to a real Postfix SMTP server.
index 7004a33b3c88d55c71c17b4ecf2e919ad629f260..7421706fd64bae7f71194843fa879c5dd55ae6fc 100644 (file)
@@ -6,6 +6,15 @@ Wish list:
 
        Things to do after the stable release:
 
+       events.c: cache the side effects of file descriptor event
+       enable/disable operations in user space, and do bulk kernel
+       updates at event_loop() time.  This can eliminate costly
+       system calls with successive event disable/enable operations
+       on the same file descriptor. This can also eliminate the
+       need for tricky code that tries to avoid the expense of
+       successive disable/enable operations. Such code is likely
+       to introduce bugs.
+
        When does it pay off to send domains in the active queue
        to a DNS prefetch daemon? Could this generalize to a dynamic
        transport map that piggy-backs domains with the same MX
index b879d0a45111b0f17e49a5c517db8007c92e6fa9..548eb615fa27ab368d0ed88af628bea05a2a1f4a 100644 (file)
@@ -14177,14 +14177,14 @@ Diffie-Hellman (EECDH) key exchange. </p>
 <dl>
 
 <dt><b>none</b></dt> <dd> Don't use EECDH. Ciphers based on EECDH key
-exchange will be disabled. This is the default in official Postfix
-releases (<a href="postconf.5.html#mail_version">mail_version</a> = major.minor.patchlevel). </dd>
+exchange will be disabled. This is the default in Postfix versions
+2.6 and 2.7. </dd>
 
 <dt><b>strong</b></dt> <dd> Use EECDH with approximately 128
 bits of security at a reasonable computational cost. This is the
 current best-practice trade-off between security and computational
-efficiency. This is the default in Postfix snapshot releases
-(<a href="postconf.5.html#mail_version">mail_version</a> = major.minor-releasedate). </dd>
+efficiency. This is the default in Postfix version 2.8 and later.
+</dd>
 
 <dt><b>ultra</b></dt> <dd> Use EECDH with approximately 192 bits of
 security at computational cost that is approximately twice as high
index 994b6b3efdf2a8c48998c9a799c33552116e0d62..ac9bfab21cdeeb72de9c49928d8751c57ed1fe6f 100644 (file)
@@ -8988,14 +8988,13 @@ Diffie-Hellman (EECDH) key exchange.
 The available choices are:
 .IP "\fBnone\fR"
 Don't use EECDH. Ciphers based on EECDH key
-exchange will be disabled. This is the default in official Postfix
-releases (mail_version = major.minor.patchlevel).
+exchange will be disabled. This is the default in Postfix versions
+2.6 and 2.7.
 .IP "\fBstrong\fR"
 Use EECDH with approximately 128
 bits of security at a reasonable computational cost. This is the
 current best-practice trade-off between security and computational
-efficiency. This is the default in Postfix snapshot releases
-(mail_version = major.minor-releasedate).
+efficiency. This is the default in Postfix version 2.8 and later.
 .IP "\fBultra\fR"
 Use EECDH with approximately 192 bits of
 security at computational cost that is approximately twice as high
index 4e6df6662d2fdfec0de6f4154ad1b9403c2b0bfd..3797966c64c97595a3c2fd91ea02b8e055ffaf9e 100644 (file)
@@ -11739,14 +11739,14 @@ Diffie-Hellman (EECDH) key exchange. </p>
 <dl>
 
 <dt><b>none</b></dt> <dd> Don't use EECDH. Ciphers based on EECDH key
-exchange will be disabled. This is the default in official Postfix
-releases (mail_version = major.minor.patchlevel). </dd>
+exchange will be disabled. This is the default in Postfix versions
+2.6 and 2.7. </dd>
 
 <dt><b>strong</b></dt> <dd> Use EECDH with approximately 128
 bits of security at a reasonable computational cost. This is the
 current best-practice trade-off between security and computational
-efficiency. This is the default in Postfix snapshot releases
-(mail_version = major.minor-releasedate). </dd>
+efficiency. This is the default in Postfix version 2.8 and later.
+</dd>
 
 <dt><b>ultra</b></dt> <dd> Use EECDH with approximately 192 bits of
 security at computational cost that is approximately twice as high
index 61f914c06bafcfa2a91830280ca32286c2f5cf17..15d6394b7294c554aa23d4b3b1b246552cd5ce96 100644 (file)
@@ -1281,11 +1281,7 @@ extern char *var_smtpd_tls_dh512_param_file;
 extern char *var_smtpd_tls_dh1024_param_file;
 
 #define VAR_SMTPD_TLS_EECDH    "smtpd_tls_eecdh_grade"
-#ifdef SNAPSHOT
 #define DEF_SMTPD_TLS_EECDH    "strong"
-#else
-#define DEF_SMTPD_TLS_EECDH    "none"
-#endif
 extern char *var_smtpd_tls_eecdh;
 
 #define VAR_SMTPD_TLS_LOGLEVEL "smtpd_tls_loglevel"
@@ -3557,11 +3553,7 @@ extern char *var_tlsp_tls_dh512_param_file;
 extern char *var_tlsp_tls_dh1024_param_file;
 
 #define VAR_TLSP_TLS_EECDH     "tlsproxy_tls_eecdh_grade"
-#ifdef SNAPSHOT
 #define DEF_TLSP_TLS_EECDH     "$" VAR_SMTPD_TLS_EECDH
-#else
-#define DEF_TLSP_TLS_EECDH     "$" VAR_SMTPD_TLS_EECDH
-#endif
 extern char *var_tlsp_tls_eecdh;
 
 #define VAR_TLSP_TLS_LOGLEVEL  "tlsproxy_tls_loglevel"
index a766bc15163d3a4ea46e1175a443bfe884a674ab..ef4fa9b38749bb3760c399453f493ae10f60d678 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      "20110116"
+#define MAIL_RELEASE_DATE      "20110117"
 #define MAIL_VERSION_NUMBER    "2.9"
 
 #ifdef SNAPSHOT
index dd39271302c9906ba989f8a6dc9f482f7792d258..8df4269240c196c1998ca6b574e32f5785dc26de 100644 (file)
@@ -487,8 +487,8 @@ int     psc_normal_greet_wait;              /* stressed greet wait */
 int     psc_stress_cmd_time_limit;     /* stressed command limit */
 int     psc_normal_cmd_time_limit;     /* normal command time limit */
 int     psc_stress;                    /* stress level */
-int     psc_check_queue_length_lowat;  /* stress low-water mark */
-int     psc_check_queue_length_hiwat;  /* stress high-water mark */
+int     psc_lowat_check_queue_length;  /* stress low-water mark */
+int     psc_hiwat_check_queue_length;  /* stress high-water mark */
 DICT   *psc_dnsbl_reply;               /* DNSBL name mapper */
 HTABLE *psc_client_concurrency;                /* per-client concurrency */
 
@@ -1048,12 +1048,19 @@ static void post_jail_init(char *unused_name, char **unused_argv)
     psc_normal_greet_wait =
        get_mail_conf_time(VAR_PSC_GREET_WAIT, DEF_PSC_GREET_WAIT, 1, 0);
 
-    psc_check_queue_length_lowat = .7 * var_psc_pre_queue_limit;
-    psc_check_queue_length_hiwat = .9 * var_psc_pre_queue_limit;
+    psc_lowat_check_queue_length = .7 * var_psc_pre_queue_limit;
+    psc_hiwat_check_queue_length = .9 * var_psc_pre_queue_limit;
     if (msg_verbose)
        msg_info(VAR_PSC_CMD_TIME ": stress=%d normal=%d lowat=%d hiwat=%d",
                 psc_stress_cmd_time_limit, psc_normal_cmd_time_limit,
-                psc_check_queue_length_lowat, psc_check_queue_length_hiwat);
+                psc_lowat_check_queue_length, psc_hiwat_check_queue_length);
+
+    if (psc_lowat_check_queue_length == 0)
+       msg_panic("compiler error: 0.7 * %d = %d", var_psc_pre_queue_limit,
+                 psc_lowat_check_queue_length);
+    if (psc_hiwat_check_queue_length == 0)
+       msg_panic("compiler error: 0.9 * %d = %d", var_psc_pre_queue_limit,
+                 psc_hiwat_check_queue_length);
 
     /*
      * Per-client concurrency.
index f141a0d367bd2c84b9d88617323007c65463db70..afea976ff1bec1aae9b0d340f7df9b497be328e7 100644 (file)
@@ -292,8 +292,8 @@ extern int psc_normal_greet_wait;   /* stressed greet wait */
 extern int psc_stress_cmd_time_limit;  /* stressed command limit */
 extern int psc_normal_cmd_time_limit;  /* normal command time limit */
 extern int psc_stress;                 /* stress level */
-extern int psc_check_queue_length_lowat;/* stress low-water mark */
-extern int psc_check_queue_length_hiwat;/* stress high-water mark */
+extern int psc_lowat_check_queue_length;/* stress low-water mark */
+extern int psc_hiwat_check_queue_length;/* stress high-water mark */
 extern DICT *psc_dnsbl_reply;          /* DNSBL name mapper */
 extern HTABLE *psc_client_concurrency; /* per-client concurrency */
 
@@ -469,7 +469,7 @@ extern const char *psc_expand_lookup(const char *, int, char *);
 
 extern void psc_acl_pre_jail_init(void);
 extern ARGV *psc_acl_parse(const char *, const char *);
-extern int psc_acl_eval(PSC_STATE *,ARGV *, const char *);
+extern int psc_acl_eval(PSC_STATE *, ARGV *, const char *);
 
 /* LICENSE
 /* .ad
index bb205d5e1bbe066a1a5d40568f02f7f29005f0e9..fe189ffa217a3187062cea04cbf1866024bb73a7 100644 (file)
@@ -171,7 +171,7 @@ PSC_STATE *psc_new_session_state(VSTREAM *stream,
      * Update the stress level.
      */
     if (psc_stress == 0
-       && psc_check_queue_length >= psc_check_queue_length_hiwat) {
+       && psc_check_queue_length >= psc_hiwat_check_queue_length) {
        psc_stress = 1;
        msg_info("entering STRESS mode with %d connections",
                 psc_check_queue_length);
@@ -238,7 +238,7 @@ void    psc_free_session_state(PSC_STATE *state)
      * Update the stress level.
      */
     if (psc_stress != 0
-       && psc_check_queue_length <= psc_check_queue_length_lowat) {
+       && psc_check_queue_length <= psc_lowat_check_queue_length) {
        psc_stress = 0;
        msg_info("leaving STRESS mode with %d connections",
                 psc_check_queue_length);
index 06dea0e959a047640f61261932856d7b40847ad5..d52205262b678757f30ecc1065cbc4a140b2772b 100644 (file)
@@ -1147,7 +1147,7 @@ int     main(int argc, char **argv)
      * (including logging) and then invoke the tlsp_service() routine to log
      * the message that says why this program will not run.
      */
-    multi_server_main(argc, argv, tlsp_service,
+    event_server_main(argc, argv, tlsp_service,
                      0);
 }
 
index 26fbace79c7c9dbabba044c9c522e7d3b0eb75b2..f3d0eaa5b40f86412a88654dac81658514d8c92d 100644 (file)
@@ -441,7 +441,6 @@ extern int opterr;
 #define USE_SYSV_POLL
 #ifndef NO_DEVPOLL
 # define EVENTS_STYLE  EVENTS_STYLE_DEVPOLL
-# define USE_WATCHDOG_PIPE
 #endif
 
 /*
@@ -1280,6 +1279,17 @@ extern int dup2_pass_on_exec(int oldd, int newd);
 extern const char *inet_ntop(int, const void *, char *, size_t);
 extern int inet_pton(int, const char *, void *);
 
+#endif
+
+ /*
+  * Workaround: after a watchdog alarm signal, wake up from select/poll/etc.
+  * by writing to a pipe. Solaris needs this, and HP-UX apparently, too. The
+  * run-time cost is negligible so we just turn it on for all systems. As a
+  * side benefit, making this code system-independent will simplify the
+  * detection of bit-rot problems.
+  */
+#ifndef NO_WATCHDOG_PIPE
+#define USE_WATCHDOG_PIPE
 #endif
 
  /*
index 7481c88871d8cfe0c1a07038b9c3690a78f1c23e..71b483fbe42762f1e30b80aeb1c4b08725debdbb 100644 (file)
@@ -126,6 +126,7 @@ static WATCHDOG *watchdog_curr;
   * watchdog timeout is less than the max_idle time.
   */
 #ifdef USE_WATCHDOG_PIPE
+#include <errno.h>
 #include <iostuff.h>
 #include <events.h>