Postfix got updated quite quickly after the 2.9.0 release with 2 small bug fixes.

  • The “change header” Milter request could replace the wrong header. A long header name could match a shorter one, because a length check was done on the wrong string. Reported by Vladimir Vassiliev. This was introduced with Postfix 2.3.
  • “sendmail -bs” segfault, due to a missing guard statement after an smtpd_check_rewrite() call was moved closer to the command processor loop. Fix by Bartek Szady. This was introduced 20111219 near the end of the 2.9 development cycle.

From the earlier stable release 2.9.0, the main changes in no particular order are:

  • Support for long, non-repeating, queue IDs (queue file names). The main benefit of non-repeating names is simpler logfile analysis. See the description of “enable_long_queue_ids” in postconf(5) for details.
  • Memcache client support, and support to share postscreen(8) and verify(8) caches via the proxymap server. Details about memcache support are in memcache_table(5) and MEMCACHE_README.
  • Gradual degradation: if a database is unavailable (can’t open, most read or write errors) a Postfix daemon will log a warning and continue providing the services that don’t depend on that table, instead of immediately terminating with a fatal error. To terminate immediately when a database file can’t be opened, specify “daemon_table_open_error_is_fatal = yes”.
  • Revised postconf(1) command. It warns about unused parameter name=value settings in main.cf or master.cf (likely mistakes), understands “dynamic” parameter names such as names that depend on the name of a master.cf entry (finally, “postconf -n” shows all parameter settings), and it can display main.cf and master.cf in a more user-friendly format (postconf -nf, postconf -Mf).
  • Read/write deadline support in the SMTP client and server to defend against application-level DOS attacks that very slowly write or read data one byte at a time.

I’ve tested it and running it on my servers without any problems.