]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.7-20090519
authorWietse Venema <wietse@porcupine.org>
Tue, 19 May 2009 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:35:27 +0000 (06:35 +0000)
24 files changed:
postfix/HISTORY
postfix/README_FILES/MILTER_README
postfix/RELEASE_NOTES-2.6
postfix/WISHLIST
postfix/html/MILTER_README.html
postfix/html/pcre_table.5.html
postfix/html/postconf.5.html
postfix/html/postfix-wrapper.5.html
postfix/man/man5/pcre_table.5
postfix/man/man5/postconf.5
postfix/man/man5/postfix-wrapper.5
postfix/proto/MILTER_README.html
postfix/proto/pcre_table
postfix/proto/postconf.proto
postfix/proto/postfix-wrapper
postfix/src/cleanup/cleanup_envelope.c
postfix/src/global/mail_version.h
postfix/src/master/multi_server.c
postfix/src/master/single_server.c
postfix/src/master/trigger_server.c
postfix/src/oqmgr/qmgr_message.c
postfix/src/qmgr/qmgr_message.c
postfix/src/smtpd/smtpd_proxy.c
postfix/src/xsasl/xsasl_dovecot_server.c

index b1e6913915e8b453dbe1c0c827d7f8f1af515a2b..dd04f009a7709c327a7791c3d3bfde6c183d9e98 100644 (file)
@@ -14855,7 +14855,7 @@ Apologies for any names omitted.
        Bugfix (introduced May 19, 1997): removing a parameter
        setting from main.cf did not reset the parameter to its
        default value. This was a problem only in the master daemon.
-       File: global/mail_params.c, master/master_vars.c.
+       File: global/mail_conf.c, master/master_vars.c.
 
 20090109
 
@@ -15220,3 +15220,25 @@ Apologies for any names omitted.
        Code cleanups: don't clobber -o command-line arguments so
        that Linux people can debug daemon command lines more easily.
        Files: master/*server.c.
+
+20090513
+
+       Code cleanups: better parsing of Postfix daemon "-o"
+       command-line options, with better error handling.  Files:
+       master/*server.c.
+
+20090518
+
+       Documentation: missing dummy entries for lmtp_mumble_checks.
+       File: proto/postconf.proto.
+
+20090519
+
+       Bugfix (introduced: Postfix 2.3, but did not cause trouble
+       until 20090427).  Queue file corruption with (smtpd_milters
+       or non_smtpd_milters) enabled, AND with delay_warning_time
+       enabled, AND with short envelope sender addresses (e.g.,
+       local submissions with bare usernames, but not bounces).
+       The queue file would be corrupted when the delay_warning_time
+       record was marked as "done" after sending the "your mail
+       is delayed" notice.  File: qmgr/qmgr_message.c.
index 5dceb11e6c3e164df35a523a2d13f696f19166fb..87996fe3f4586fb04db55a4bebd7f3e4e6078d83 100644 (file)
@@ -468,7 +468,7 @@ W\bWo\bor\brk\bka\bar\bro\bou\bun\bnd\bds\bs
     queue ID in the message header.
 
     To fix the ugly message header, you will need to add code that looks up the
-    Postfix queue ID at some later point im time. The example below adds the
+    Postfix queue ID at some later point in time. The example below adds the
     lookup after the end-of-message.
 
       o Edit the filter source file (typically named xxx-filter/xxx-filter.c or
index 4433a5c555cb84ad5f740eba37d145febe099bf0..0a926aa3895d2340a8b845d683660dc071a6ad4d 100644 (file)
@@ -42,14 +42,9 @@ and more:
 
 Best of all, nothing changes when you use only one Postfix instance.
 
-The postfix-wrapper script (in the daemon directory) implements a
-simple but useful multi-instance manager, with instructions. The
-plug-in API itself is described in the postfix-wrapper(5) manpage.
-
-A more sophisticated multi-instance manager called postmulti(1) is
-approaching completion. A prototype version has been used internally
-at Morgan Stanley. This version will be adapted to the new plug-in
-API which makes some simplification possible.
+The MULTI_INSTANCE_README file presents an introduction to
+multi-instance management. Multi-instance support is based on an
+API that is described in the postfix-wrapper(5) manual page.
 
 Major changes - milter support
 ------------------------------
index d769972fac4abbbb0d89279d91ece720a23a0d9a..3a097008fd38db296d659db595a4d2913f9eb0b6 100644 (file)
@@ -2,6 +2,21 @@ Wish list:
 
        Remove this file from the stable release.
 
+       The cleanup server rejects mail with REC_TYPE_DRCP (recipient
+       deleted by Milter). What happens after "postsuper -r" with
+       such mail? If it is rejected, the mail is discarded.
+
+       With "mixed recipient and other" queue files that have many
+       recpients, can qmgr_message_read() set message->rcpt_offset
+       multiple times? If it does, then recipients will be skipped.
+
+       Apply header_checks and body_checks when Milters add or
+       modify the message content. Use case: Milters that add
+       spamminess headers.
+
+       Update FILTER_README for multi-instance support, and rename
+       the old document to FILTER_LEGACY_README.
+
        Need to sign delivery status notifications, to avoid surprises
        when eventually people start enforcing DKIM etc. signatures.
 
index 5aa69c06df7e9b4568c66f78cb8efcb54f10678b..f4f7512ef5a3e8ef8b51b9b8f00b3ea37c6f0f40 100644 (file)
@@ -718,7 +718,7 @@ version 1.0.0 no longer includes the queue ID in the message header.
 </p>
 
 <p> To fix the ugly message header, you will need to add code that
-looks up the Postfix queue ID at some later point im time. The
+looks up the Postfix queue ID at some later point in time. The
 example below adds the lookup after the end-of-message.  </p>
 
 <ul>
index 9db86451e43c45a72d286cee64f73d5e0c1413ba..a15207d0bd3fdd85ef4274e883bf8c46fa775158 100644 (file)
@@ -104,7 +104,7 @@ PCRE_TABLE(5)                                                    PCRE_TABLE(5)
        <b>s</b> (default: on)
               Toggles the PCRE_DOTALL flag. When this flag is on,
               the <b>.</b>  metacharacter matches the newline character.
-              With Postfix versions prior to 2.0, The flag is off
+              With Postfix versions prior to 2.0, the flag is off
               by default, which is  inconvenient  for  multi-line
               message header matching.
 
index 49287c76f0042f7bbe67e5f0d9b264786152e24f..48940dc6296b2173dafde2324a7b4a4773c70a21 100644 (file)
@@ -3478,6 +3478,17 @@ parameter.  See there for details. </p>
 <p> This feature is available in Postfix 2.3 and later. </p>
 
 
+</DD>
+
+<DT><b><a name="lmtp_body_checks">lmtp_body_checks</a>
+(default: empty)</b></DT><DD>
+
+<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_body_checks">smtp_body_checks</a> configuration
+parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+
 </DD>
 
 <DT><b><a name="lmtp_cache_connection">lmtp_cache_connection</a>
@@ -3753,6 +3764,17 @@ parameter.  See there for details. </p>
 <p> This feature is available in Postfix 2.3 and later. </p>
 
 
+</DD>
+
+<DT><b><a name="lmtp_header_checks">lmtp_header_checks</a>
+(default: empty)</b></DT><DD>
+
+<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_header_checks">smtp_header_checks</a> configuration
+parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+
 </DD>
 
 <DT><b><a name="lmtp_host_lookup">lmtp_host_lookup</a>
@@ -3835,6 +3857,17 @@ The default time unit is s (seconds).
 </p>
 
 
+</DD>
+
+<DT><b><a name="lmtp_mime_header_checks">lmtp_mime_header_checks</a>
+(default: empty)</b></DT><DD>
+
+<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_mime_header_checks">smtp_mime_header_checks</a>
+configuration parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+
 </DD>
 
 <DT><b><a name="lmtp_mx_address_limit">lmtp_mx_address_limit</a>
@@ -3857,6 +3890,17 @@ parameter.  See there for details. </p>
 <p> This feature is available in Postfix 2.3 and later. </p>
 
 
+</DD>
+
+<DT><b><a name="lmtp_nested_header_checks">lmtp_nested_header_checks</a>
+(default: empty)</b></DT><DD>
+
+<p> The LMTP-specific version of the <a href="postconf.5.html#smtp_nested_header_checks">smtp_nested_header_checks</a>
+configuration parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+
 </DD>
 
 <DT><b><a name="lmtp_pix_workaround_delay_time">lmtp_pix_workaround_delay_time</a>
index 645ab28ca3264de7e020edcb9172ad83e522117f..925fd207e2bca3fd23a8d09d710d9c48d0bead67 100644 (file)
@@ -22,18 +22,17 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
        multi-instance manager program.
 
        With multi-instance support, the default Postfix  instance
-       is   always  required.  The  <a href="postconf.5.html#config_directory">config_directory</a>  parameter's
-       default value specifies that instance's configuration file
-       location.
+       is  always  required.  This  instance is identified by the
+       <a href="postconf.5.html#config_directory">config_directory</a> parameter's default value.
 
 <b>GENERAL OPERATION</b>
-       Multi-instance  support  is backwards compatible: when you
-       run only one Postfix instance, commands such  as  "postfix
+       Multi-instance support is backwards compatible:  when  you
+       run  only  one Postfix instance, commands such as "postfix
        start" will not change behavior at all.
 
-       Even  with  multiple Postfix instances, you can keep using
-       the same postfix commands in boot scripts, upgrade  proce-
-       dures,  and  other  places. The commands do more work, but
+       Even with multiple Postfix instances, you can  keep  using
+       the  same postfix commands in boot scripts, upgrade proce-
+       dures, and other places. The commands do  more  work,  but
        humans are not forced to learn new tricks.
 
        For example, to start all Postfix instances, use:
@@ -41,7 +40,7 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
               # postfix start
 
        Other <a href="postfix.1.html">postfix(1)</a> commands also work as expected. For exam-
-       ple,  to find out what Postfix instances exist in a multi-
+       ple, to find out what Postfix instances exist in a  multi-
        instance configuration, use:
 
               # postfix status
@@ -55,58 +54,58 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
 
               # postfix -c <i>/path/to/config</i><b>_</b><i>directory command</i>
 
-       Alternatively,  the   <a href="postfix.1.html">postfix(1)</a>   command   accepts   the
-       instance's  configuration  directory  via  the MAIL_CONFIG
+       Alternatively,   the   <a href="postfix.1.html">postfix(1)</a>   command   accepts  the
+       instance's configuration  directory  via  the  MAIL_CONFIG
        environment  variable  (the  -c  command-line  option  has
        higher precedence).
 
-       When  no  Postfix  instance  information is specified, the
-       <a href="postfix.1.html">postfix(1)</a> command will operate on all Postfix  instances.
+       When no Postfix instance  information  is  specified,  the
+       <a href="postfix.1.html">postfix(1)</a>  command will operate on all Postfix instances.
 
 <b>ENABLING POSTFIX(1) MULTI-INSTANCE MODE</b>
-       By  default,  the  <a href="postfix.1.html">postfix(1)</a>  command operates in single-
-       instance mode. In this mode the command invokes the  post-
-       fix-script  file directly (currently installed in the dae-
-       mon directory).  This  file  contains  the  commands  that
-       start  or stop one Postfix instance, that upgrade the con-
+       By default, the <a href="postfix.1.html">postfix(1)</a>  command  operates  in  single-
+       instance  mode. In this mode the command invokes the post-
+       fix-script file directly (currently installed in the  dae-
+       mon  directory).   This  file  contains  the commands that
+       start or stop one Postfix instance, that upgrade the  con-
        figuration of one Postfix instance, and so on.
 
-       When the <a href="postfix.1.html">postfix(1)</a>  command  operates  in  multi-instance
-       mode  as  discussed  below,  the  command needs to execute
-       start, stop, etc.  commands  for  each  Postfix  instance.
-       This  multiplication  of  commands  is handled by a multi-
+       When  the  <a href="postfix.1.html">postfix(1)</a>  command  operates in multi-instance
+       mode as discussed below,  the  command  needs  to  execute
+       start,  stop,  etc.   commands  for each Postfix instance.
+       This multiplication of commands is  handled  by  a  multi-
        instance manager program.
 
        Turning on <a href="postfix.1.html">postfix(1)</a> multi-instance mode goes as follows:
        in the default Postfix instance's <a href="postconf.5.html">main.cf</a> file, 1) specify
-       the pathname of a multi-instance manager program with  the
-       <a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a>    parameter;   2)   populate   the
-       <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parameter with  the  configura-
-       tion  directory pathnames of additional Postfix instances.
+       the  pathname of a multi-instance manager program with the
+       <a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a>   parameter;   2)   populate    the
+       <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  parameter  with the configura-
+       tion directory pathnames of additional Postfix  instances.
        For example:
 
               /etc/postfix/<a href="postconf.5.html">main.cf</a>:
                   <a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a> = $<a href="postconf.5.html#daemon_directory">daemon_directory</a>/postfix-wrapper
                   <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> = /etc/postfix-test
 
-       The $<a href="postconf.5.html#daemon_directory">daemon_directory</a>/postfix-wrapper  file  implements  a
-       simple  manager  and  contains  instructions  for creating
-       Postfix instances by hand.  The <a href="postmulti.1.html">postmulti(1)</a> command  pro-
-       vides  a  more  extensive implementation including support
+       The  $<a href="postconf.5.html#daemon_directory">daemon_directory</a>/postfix-wrapper  file  implements a
+       simple manager  and  contains  instructions  for  creating
+       Postfix  instances by hand.  The <a href="postmulti.1.html">postmulti(1)</a> command pro-
+       vides a more extensive  implementation  including  support
        for life-cycle management.
 
-       The <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> and other  <a href="postconf.5.html">main.cf</a>  parame-
+       The  <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  and other <a href="postconf.5.html">main.cf</a> parame-
        ters are listed below in the CONFIGURATION PARAMETERS sec-
        tion.
 
        In multi-instance mode, the <a href="postfix.1.html">postfix(1)</a> command invokes the
-       $<a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a>  command  instead  of the postfix-
-       script file. This multi-instance manager in turn  executes
-       the  <a href="postfix.1.html">postfix(1)</a>  command  in single-instance mode for each
+       $<a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a> command instead  of  the  postfix-
+       script  file. This multi-instance manager in turn executes
+       the <a href="postfix.1.html">postfix(1)</a> command in single-instance  mode  for  each
        Postfix instance.
 
-       To illustrate the main ideas behind multi-instance  opera-
-       tion,  below  is  an example of a simple but useful multi-
+       To  illustrate the main ideas behind multi-instance opera-
+       tion, below is an example of a simple  but  useful  multi-
        instance manager implementation:
 
               #!/bin/sh
@@ -140,124 +139,124 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
 <b>PER-INSTANCE MULTI-INSTANCE MANAGER CONTROLS</b>
        Each Postfix instance has its own <a href="postconf.5.html">main.cf</a> file with param-
        eters that control how the multi-instance manager operates
-       on that instance.  This section discusses the most  impor-
+       on  that instance.  This section discusses the most impor-
        tant settings.
 
        The  setting  "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a>  =  yes"  allows  the
-       multi-instance manager to start (stop,  etc.)  the  corre-
-       sponding  Postfix  instance. For safety reasons, this set-
+       multi-instance  manager  to  start (stop, etc.) the corre-
+       sponding Postfix instance. For safety reasons,  this  set-
        ting is not the default.
 
        The default setting "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> = no" is useful
        for manual testing with "postfix -c <i>/path/name</i> start" etc.
-       The  multi-instance  manager  will  not  start   such   an
-       instance,  and  it  will  skip  commands such as "stop" or
-       "flush" that require  a  running  Postfix  instance.   The
+       The   multi-instance   manager  will  not  start  such  an
+       instance, and it will skip  commands  such  as  "stop"  or
+       "flush"  that  require  a  running  Postfix instance.  The
        multi-instance  manager  will  execute  commands  such  as
        "check", "set-permissions" or "upgrade-configuration", and
-       it  will  replace "start" by "check" so that problems will
+       it will replace "start" by "check" so that  problems  will
        be reported even when the instance is disabled.
 
 <b>MAINTAINING SHARED AND NON-SHARED FILES</b>
-       Some files are shared between Postfix instances,  such  as
+       Some  files  are shared between Postfix instances, such as
        executables and manpages, and some files are per-instance,
-       such as configuration files, mail queue  files,  and  data
-       files.   See the NON-SHARED FILES section below for a list
+       such  as  configuration  files, mail queue files, and data
+       files.  See the NON-SHARED FILES section below for a  list
        of per-instance files.
 
        Before Postfix multi-instance support was implemented, the
-       executables,  manpages,  etc., have always been maintained
+       executables, manpages, etc., have always  been  maintained
        as part of the default Postfix instance.
 
-       With multi-instance support,  we  simply  continue  to  do
-       this.   Specifically, a Postfix instance will not check or
-       update shared files when that instance's  <a href="postconf.5.html#config_directory">config_directory</a>
-       value   is   listed   with   the  default  <a href="postconf.5.html">main.cf</a>  file's
+       With  multi-instance  support,  we  simply  continue to do
+       this.  Specifically, a Postfix instance will not check  or
+       update  shared files when that instance's <a href="postconf.5.html#config_directory">config_directory</a>
+       value  is  listed  with   the   default   <a href="postconf.5.html">main.cf</a>   file's
        <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parameter.
 
        The consequence of this approach is that the default Post-
-       fix  instance  should  be  checked  and updated before any
+       fix instance should be  checked  and  updated  before  any
        other instances.
 
 <b>MULTI-INSTANCE API SUMMARY</b>
        Only the multi-instance manager implements support for the
-       <a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a>  configuration parameter. The multi-
-       instance manager will start only Postfix  instances  whose
-       <a href="postconf.5.html">main.cf</a>  file has "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> = yes". A setting
+       <a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> configuration parameter. The  multi-
+       instance  manager  will start only Postfix instances whose
+       <a href="postconf.5.html">main.cf</a> file has "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> = yes". A  setting
        of "no" allows a Postfix instance to be tested by hand.
 
        The  <a href="postfix.1.html">postfix(1)</a>  command  operates  on  only  one  Postfix
-       instance   when  the  -c  option  is  specified,  or  when
+       instance  when  the  -c  option  is  specified,  or   when
        MAIL_CONFIG is present in the process environment. This is
        necessary to terminate recursion.
 
-       Otherwise,  when  the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parameter
-       value is non-empty, the <a href="postfix.1.html">postfix(1)</a>  command  executes  the
-       command  specified with the <a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a> parame-
-       ter, instead of executing the commands in  postfix-script.
+       Otherwise, when the  <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  parameter
+       value  is  non-empty,  the <a href="postfix.1.html">postfix(1)</a> command executes the
+       command specified with the <a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a>  parame-
+       ter,  instead of executing the commands in postfix-script.
 
-       The  multi-instance  manager skips commands such as "stop"
-       or "reload" that require a running Postfix instance,  when
-       an  instance  does not have "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> = yes".
+       The multi-instance manager skips commands such  as  "stop"
+       or  "reload" that require a running Postfix instance, when
+       an instance does not have "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a>  =  yes".
        This avoids false error messages.
 
-       The multi-instance manager replaces a "start"  command  by
-       "check"  when  a  Postfix instance's <a href="postconf.5.html">main.cf</a> file does not
+       The  multi-instance  manager replaces a "start" command by
+       "check" when a Postfix instance's <a href="postconf.5.html">main.cf</a>  file  does  not
        have  "<a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a>  =  yes".  This  substitution
-       ensures  that  problems  will  be  reported  even when the
+       ensures that problems  will  be  reported  even  when  the
        instance is disabled.
 
-       No Postfix command or script will update or  check  shared
-       files  when  its  <a href="postconf.5.html#config_directory">config_directory</a>  value is listed in the
-       default  <a href="postconf.5.html">main.cf</a>'s  <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>   parameter
-       value.   Therefore, the default instance should be checked
-       and updated before any Postfix instances  that  depend  on
+       No  Postfix  command or script will update or check shared
+       files when its <a href="postconf.5.html#config_directory">config_directory</a> value  is  listed  in  the
+       default   <a href="postconf.5.html">main.cf</a>'s  <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  parameter
+       value.  Therefore, the default instance should be  checked
+       and  updated  before  any Postfix instances that depend on
        it.
 
-       Set-gid  commands  such  as  <a href="postdrop.1.html">postdrop(1)</a>  and <a href="postqueue.1.html">postqueue(1)</a>
-       effectively append the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  parame-
-       ter   value  to  the  legacy  <a href="postconf.5.html#alternate_config_directories">alternate_config_directories</a>
-       parameter value. The  commands  use  this  information  to
-       determine  whether  a -c option or MAIL_CONFIG environment
+       Set-gid commands  such  as  <a href="postdrop.1.html">postdrop(1)</a>  and  <a href="postqueue.1.html">postqueue(1)</a>
+       effectively  append the <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parame-
+       ter  value  to  the  legacy   <a href="postconf.5.html#alternate_config_directories">alternate_config_directories</a>
+       parameter  value.  The  commands  use  this information to
+       determine whether a -c option or  MAIL_CONFIG  environment
        setting specifies a legitimate value.
 
-       The legacy <a href="postconf.5.html#alternate_config_directories">alternate_config_directories</a> parameter  remains
-       necessary  for non-default Postfix instances that are run-
-       ning different versions of Postfix, or that are  not  man-
+       The  legacy <a href="postconf.5.html#alternate_config_directories">alternate_config_directories</a> parameter remains
+       necessary for non-default Postfix instances that are  run-
+       ning  different  versions of Postfix, or that are not man-
        aged together with the default Postfix instance.
 
 <b>ENVIRONMENT VARIABLES</b>
        MAIL_CONFIG
               When present, this forces the <a href="postfix.1.html">postfix(1)</a> command to
-              operate only on  the  specified  Postfix  instance.
-              This  environment variable is exported by the <a href="postfix.1.html">post-</a>
-              <a href="postfix.1.html">fix(1)</a> -c option, so that  <a href="postfix.1.html">postfix(1)</a>  commands  in
+              operate  only  on  the  specified Postfix instance.
+              This environment variable is exported by the  <a href="postfix.1.html">post-</a>
+              <a href="postfix.1.html">fix(1)</a>  -c  option,  so that <a href="postfix.1.html">postfix(1)</a> commands in
               descendant processes will work correctly.
 
 <b>CONFIGURATION PARAMETERS</b>
-       The  text  below  provides  only  a parameter summary. See
+       The text below provides  only  a  parameter  summary.  See
        <a href="postconf.5.html">postconf(5)</a> for more details.
 
        <b><a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> (empty)</b>
-              An optional list of non-default Postfix  configura-
+              An  optional list of non-default Postfix configura-
               tion directories; these directories belong to addi-
-              tional Postfix instances  that  share  the  Postfix
+              tional  Postfix  instances  that  share the Postfix
               executable files and documentation with the default
-              Postfix instance, and that  are  started,  stopped,
+              Postfix  instance,  and  that are started, stopped,
               etc., together with the default Postfix instance.
 
        <b><a href="postconf.5.html#multi_instance_wrapper">multi_instance_wrapper</a> (empty)</b>
-              The  pathname  of  a multi-instance manager command
-              that  the  <a href="postfix.1.html"><b>postfix</b>(1)</a>  command  invokes  when   the
-              <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a>  parameter value is non-
+              The pathname of a  multi-instance  manager  command
+              that   the  <a href="postfix.1.html"><b>postfix</b>(1)</a>  command  invokes  when  the
+              <a href="postconf.5.html#multi_instance_directories">multi_instance_directories</a> parameter value is  non-
               empty.
 
        <b><a href="postconf.5.html#multi_instance_name">multi_instance_name</a> (empty)</b>
-              The  optional  instance  name   of   this   Postfix
+              The   optional   instance   name  of  this  Postfix
               instance.
 
        <b><a href="postconf.5.html#multi_instance_group">multi_instance_group</a> (empty)</b>
-              The  optional  instance  group name of this Postfix
+              The optional instance group name  of  this  Postfix
               instance.
 
        <b><a href="postconf.5.html#multi_instance_enable">multi_instance_enable</a> (no)</b>
@@ -266,7 +265,7 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
 
 <b>NON-SHARED FILES</b>
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The  default  location  of  the Postfix <a href="postconf.5.html">main.cf</a> and
+              The default location of  the  Postfix  <a href="postconf.5.html">main.cf</a>  and
               <a href="master.5.html">master.cf</a> configuration files.
 
        <b><a href="postconf.5.html#data_directory">data_directory</a> (see 'postconf -d' output)</b>
@@ -274,7 +273,7 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
               example: caches, pseudo-random numbers).
 
        <b><a href="postconf.5.html#queue_directory">queue_directory</a> (see 'postconf -d' output)</b>
-              The  location of the Postfix top-level queue direc-
+              The location of the Postfix top-level queue  direc-
               tory.
 
 <b>SEE ALSO</b>
@@ -283,7 +282,7 @@ POSTFIX-WRAPPER(5)                                          POSTFIX-WRAPPER(5)
        $<a href="postconf.5.html#daemon_directory">daemon_directory</a>/postfix-wrapper simple multi-instance manager
 
 <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>
index f7b57a18744556fcefd96c0bcc526812ced5a369..71bc0ad27f93ce462ca6e04e3b3fe9f3c904f8d3 100644 (file)
@@ -95,7 +95,7 @@ matching at the start and end of the subject string.
 .IP "\fBs\fR (default: on)"
 Toggles the PCRE_DOTALL flag. When this flag is on, the \fB.\fR
 metacharacter matches the newline character. With
-Postfix versions prior to 2.0, The flag is off by
+Postfix versions prior to 2.0, the flag is off by
 default, which is inconvenient for multi-line message header
 matching.
 .IP "\fBx\fR (default: off)"
index 298ae59210f67504c9af35de42ccfa18d5391d33..ec635793a165436b86526b11c7cbf7140deed45d 100644 (file)
@@ -1928,6 +1928,11 @@ The LMTP-specific version of the smtp_bind_address6 configuration
 parameter.  See there for details.
 .PP
 This feature is available in Postfix 2.3 and later.
+.SH lmtp_body_checks (default: empty)
+The LMTP-specific version of the smtp_body_checks configuration
+parameter. See there for details.
+.PP
+This feature is available in Postfix 2.5 and later.
 .SH lmtp_cache_connection (default: yes)
 Keep Postfix LMTP client connections open for up to $max_idle
 seconds. When the LMTP client receives a request for the same
@@ -2076,6 +2081,11 @@ The LMTP-specific version of the smtp_generic_maps configuration
 parameter.  See there for details.
 .PP
 This feature is available in Postfix 2.3 and later.
+.SH lmtp_header_checks (default: empty)
+The LMTP-specific version of the smtp_header_checks configuration
+parameter. See there for details.
+.PP
+This feature is available in Postfix 2.5 and later.
 .SH lmtp_host_lookup (default: dns)
 The LMTP-specific version of the smtp_host_lookup configuration
 parameter.  See there for details.
@@ -2120,6 +2130,11 @@ for receiving the server response.
 .PP
 Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks).
 The default time unit is s (seconds).
+.SH lmtp_mime_header_checks (default: empty)
+The LMTP-specific version of the smtp_mime_header_checks
+configuration parameter. See there for details.
+.PP
+This feature is available in Postfix 2.5 and later.
 .SH lmtp_mx_address_limit (default: 5)
 The LMTP-specific version of the smtp_mx_address_limit configuration
 parameter.  See there for details.
@@ -2130,6 +2145,11 @@ The LMTP-specific version of the smtp_mx_session_limit configuration
 parameter.  See there for details.
 .PP
 This feature is available in Postfix 2.3 and later.
+.SH lmtp_nested_header_checks (default: empty)
+The LMTP-specific version of the smtp_nested_header_checks
+configuration parameter. See there for details.
+.PP
+This feature is available in Postfix 2.5 and later.
 .SH lmtp_pix_workaround_delay_time (default: 10s)
 The LMTP-specific version of the smtp_pix_workaround_delay_time
 configuration parameter.  See there for details.
index f2a1a71a8f799d7343c344ffc07d4387e665a9a0..d43a0a990e81db2902761c88962447f08acdb10b 100644 (file)
@@ -20,8 +20,8 @@ activities between the postfix(1) command and a multi-instance
 manager program.
 
 With multi-instance support, the default Postfix instance
-is always required. The config_directory parameter's default
-value specifies that instance's configuration file location.
+is always required. This instance is identified by the
+config_directory parameter's default value.
 .SH "GENERAL OPERATION"
 .na
 .nf
index 41f6938c3bd3ae7b40b8156fc95f49e14f34eca2..7bd2a71353424521d2f8d3dcab0756374585d79f 100644 (file)
@@ -718,7 +718,7 @@ version 1.0.0 no longer includes the queue ID in the message header.
 </p>
 
 <p> To fix the ugly message header, you will need to add code that
-looks up the Postfix queue ID at some later point im time. The
+looks up the Postfix queue ID at some later point in time. The
 example below adds the lookup after the end-of-message.  </p>
 
 <ul>
index 3c21a4ade311272787cab3c34339b50d9ce04a3a..5ae105ba40596d3ef39751c251520021a7a5b991 100644 (file)
@@ -85,7 +85,7 @@
 # .IP "\fBs\fR (default: on)"
 #      Toggles the PCRE_DOTALL flag. When this flag is on, the \fB.\fR
 #      metacharacter matches the newline character. With
-#      Postfix versions prior to 2.0, The flag is off by
+#      Postfix versions prior to 2.0, the flag is off by
 #      default, which is inconvenient for multi-line message header
 #      matching.
 # .IP "\fBx\fR (default: off)"
index e1139ec33fdcf3c76a4a6523df3b76fae50ee326..3b2ff61024c9d84e0ff5043824e2bc4404b9b056 100644 (file)
@@ -12269,3 +12269,32 @@ when not present.  Postfix 2.6 and later add these headers only
 when clients match the local_header_rewrite_clients parameter
 setting.  Earlier Postfix versions always add these headers; this
 may break DKIM signatures that cover non-existent headers. </p>
+
+%PARAM lmtp_header_checks
+
+<p> The LMTP-specific version of the smtp_header_checks configuration
+parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+%PARAM lmtp_mime_header_checks
+
+<p> The LMTP-specific version of the smtp_mime_header_checks
+configuration parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+%PARAM lmtp_nested_header_checks
+
+<p> The LMTP-specific version of the smtp_nested_header_checks
+configuration parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
+%PARAM lmtp_body_checks
+
+<p> The LMTP-specific version of the smtp_body_checks configuration
+parameter. See there for details. </p>
+
+<p> This feature is available in Postfix 2.5 and later. </p>
+
index 8856448fca13697ae235263b4e884494f73d8f50..abf3f56be47fb8c8794b7c9384de0db908f9887d 100644 (file)
@@ -16,8 +16,8 @@
 #      manager program.
 #
 #      With multi-instance support, the default Postfix instance
-#      is always required. The config_directory parameter's default
-#      value specifies that instance's configuration file location.
+#      is always required. This instance is identified by the
+#      config_directory parameter's default value.
 # GENERAL OPERATION
 # .ad
 # .fi
index 9ba1830dd27009f25d18dbf05a7f4f00432f68d3..2253fa17ae4853d58a3fd1dd114318fbbc5e37aa 100644 (file)
@@ -385,8 +385,7 @@ static void cleanup_envelope_process(CLEANUP_STATE *state, int type,
        cleanup_addr_sender(state, buf);
        if (state->milters || cleanup_milters) {
            /* Make room to replace sender. */
-           if (len < REC_TYPE_PTR_PAYL_SIZE)
-               rec_pad(state->dst, REC_TYPE_PTR, REC_TYPE_PTR_PAYL_SIZE - len);
+           rec_pad(state->dst, REC_TYPE_PTR, REC_TYPE_PTR_PAYL_SIZE);
            /* Remember the after-sender record offset. */
            if ((state->sender_pt_target = vstream_ftell(state->dst)) < 0)
                msg_fatal("%s: vstream_ftell %s: %m:", myname, cleanup_path);
index 25266dca4b24f10c934c6e886e6e96d456f7f9aa..b08b75bb63ee24ac1ddaaf961fe396c34e8c1eb8 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      "20090511"
+#define MAIL_RELEASE_DATE      "20090519"
 #define MAIL_VERSION_NUMBER    "2.7"
 
 #ifdef SNAPSHOT
index 2641dd3253e9a827d8a38cca21cb22aa2e55d147..cd8159023aa3404ab6a5227382e33cebf6e41232 100644 (file)
@@ -513,6 +513,7 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...)
     WATCHDOG *watchdog;
     char   *oname;
     char   *oval;
+    const char *err;
     char   *generation;
     int     msg_vstream_needed = 0;
     int     redo_syslog_init = 0;
@@ -591,10 +592,8 @@ NORETURN multi_server_main(int argc, char **argv, MULTI_SERVER_FN service,...)
            service_name = optarg;
            break;
        case 'o':
-           /* XXX Use split_nameval() */
-           oname = mystrdup(optarg);
-           if ((oval = split_at(oname, '=')) == 0)
-               oval = "";
+           if ((err = split_nameval(mystrdup(optarg), &oname, &oval)) != 0)
+               msg_fatal("invalid \"-o %s\" option value: %s", optarg, err);
            mail_conf_update(oname, oval);
            if (strcmp(oname, VAR_SYSLOG_NAME) == 0)
                redo_syslog_init = 1;
index 99dfa218a8159bad03b1358d9023dbeb7ea96f9b..a984ac47978a557b9870e42ae1897e2005fc66d8 100644 (file)
@@ -404,6 +404,7 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...)
     WATCHDOG *watchdog;
     char   *oname;
     char   *oval;
+    const char *err;
     char   *generation;
     int     msg_vstream_needed = 0;
     int     redo_syslog_init = 0;
@@ -482,10 +483,8 @@ NORETURN single_server_main(int argc, char **argv, SINGLE_SERVER_FN service,...)
            service_name = optarg;
            break;
        case 'o':
-           /* XXX Use split_nameval() */
-           oname = mystrdup(optarg);
-           if ((oval = split_at(oname, '=')) == 0)
-               oval = "";
+           if ((err = split_nameval(mystrdup(optarg), &oname, &oval)) != 0)
+               msg_fatal("invalid \"-o %s\" option value: %s", optarg, err);
            mail_conf_update(oname, oval);
            if (strcmp(oname, VAR_SYSLOG_NAME) == 0)
                redo_syslog_init = 1;
index 279ce2ed9558a3c7c90b6350e98102fb50b239aa..62330f0389fca835f8c8f6b5d75251c512e95c6d 100644 (file)
@@ -415,6 +415,7 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,..
     WATCHDOG *watchdog;
     char   *oname;
     char   *oval;
+    const char *err;
     char   *generation;
     int     msg_vstream_needed = 0;
     int     redo_syslog_init = 0;
@@ -493,10 +494,8 @@ NORETURN trigger_server_main(int argc, char **argv, TRIGGER_SERVER_FN service,..
            service_name = optarg;
            break;
        case 'o':
-           /* XXX Use split_nameval() */
-           oname = mystrdup(optarg);
-           if ((oval = split_at(oname, '=')) == 0)
-               oval = "";
+           if ((err = split_nameval(mystrdup(optarg), &oname, &oval)) != 0)
+               msg_fatal("invalid \"-o %s\" option value: %s", optarg, err);
            mail_conf_update(oname, oval);
            if (strcmp(oname, VAR_SYSLOG_NAME) == 0)
                redo_syslog_init = 1;
index b3a7b15a1e106adcf65510be8d066f081d17b6c1..27c5c92bbd05efcde2f072346a56173aa2257429 100644 (file)
@@ -366,10 +366,16 @@ static int qmgr_message_read(QMGR_MESSAGE *message)
                msg_fatal("seek file %s: %m", VSTREAM_PATH(message->fp));
            curr_offset += message->data_size;
        }
-       rec_type = rec_get(message->fp, buf, 0);
+       rec_type = rec_get_raw(message->fp, buf, 0, REC_FLAG_NONE);
        start = vstring_str(buf);
        if (msg_verbose > 1)
            msg_info("record %c %s", rec_type, start);
+       if (rec_type == REC_TYPE_PTR) {
+           if ((rec_type = rec_goto(message->fp, start)) == REC_TYPE_ERROR)
+               break;
+           /* Need to update curr_offset after pointer jump. */
+           continue;
+       }
        if (rec_type <= 0) {
            msg_warn("%s: message rejected: missing end record",
                     message->queue_id);
index 24a981ed701f20d4b1f1433c166840e87f08847a..a588d67919055d68e661c55102afe1538459b069 100644 (file)
@@ -406,10 +406,16 @@ static int qmgr_message_read(QMGR_MESSAGE *message)
                msg_fatal("seek file %s: %m", VSTREAM_PATH(message->fp));
            curr_offset += message->data_size;
        }
-       rec_type = rec_get(message->fp, buf, 0);
+       rec_type = rec_get_raw(message->fp, buf, 0, REC_FLAG_NONE);
        start = vstring_str(buf);
        if (msg_verbose > 1)
            msg_info("record %c %s", rec_type, start);
+       if (rec_type == REC_TYPE_PTR) {
+           if ((rec_type = rec_goto(message->fp, start)) == REC_TYPE_ERROR)
+               break;
+           /* Need to update curr_offset after pointer jump. */
+           continue;
+       }
        if (rec_type <= 0) {
            msg_warn("%s: message rejected: missing end record",
                     message->queue_id);
index cfefe7e3dde80307c66b7f02d4b420ca87accad0..1df887cbac05a13ee00e656c35917368689e1436 100644 (file)
@@ -565,7 +565,7 @@ int     smtpd_proxy_cmd(SMTPD_STATE *state, int expect, const char *fmt,...)
      * Log a warning in case the proxy does not send the expected response.
      * Silently accept any response when the client expressed no expectation.
      * 
-     * Don't pass through misleading 2xx replies. it confuses naive users and
+     * Don't pass through misleading 2xx replies. It confuses naive users and
      * SMTP clients, and creates support problems.
      */
     if (expect != SMTPD_PROX_WANT_ANY && expect != *STR(state->proxy_buffer)) {
index 4af958ebdc2bb9a7317752e41b610529b0f116d0..5fc1e0f7d0d411a92e706e78714a21f02239ad5b 100644 (file)
@@ -365,11 +365,16 @@ static void xsasl_dovecot_server_disconnect(XSASL_DOVECOT_SERVER_IMPL *xp)
 
 /* xsasl_dovecot_server_init - create implementation handle */
 
-XSASL_SERVER_IMPL *xsasl_dovecot_server_init(const char *unused_server_type,
+XSASL_SERVER_IMPL *xsasl_dovecot_server_init(const char *server_type,
                                                     const char *path_info)
 {
     XSASL_DOVECOT_SERVER_IMPL *xp;
 
+    if (strchr(path_info, '/') == 0)
+       msg_warn("when SASL type is \"%s\", SASL path \"%s\" "
+                "should be a socket pathname",
+                server_type, path_info);
+
     xp = (XSASL_DOVECOT_SERVER_IMPL *) mymalloc(sizeof(*xp));
     xp->xsasl.create = xsasl_dovecot_server_create;
     xp->xsasl.done = xsasl_dovecot_server_done;