]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.9-20111129
authorWietse Venema <wietse@porcupine.org>
Tue, 29 Nov 2011 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:37:41 +0000 (06:37 +0000)
17 files changed:
postfix/HISTORY
postfix/README_FILES/SMTPD_POLICY_README
postfix/WISHLIST
postfix/html/SMTPD_POLICY_README.html
postfix/html/postconf.1.html
postfix/man/man1/postconf.1
postfix/mantools/postlink
postfix/proto/SMTPD_POLICY_README.html
postfix/src/global/mail_version.h
postfix/src/postconf/Makefile.in
postfix/src/postconf/postconf.c
postfix/src/postconf/postconf.h
postfix/src/postconf/postconf_builtin.c
postfix/src/postconf/postconf_main.c
postfix/src/postconf/postconf_service.c
postfix/src/postconf/postconf_user.c
postfix/src/postconf/test22.ref [new file with mode: 0644]

index f84c61182a16285211cbcd611e3f434b19633f39..c710c903672b4c2df58811169590bbb97361cb91 100644 (file)
@@ -17177,4 +17177,14 @@ Apologies for any names omitted.
 
        Cleanup: added the pipe(8) delivery agent to the list of
        programs that implement transport_time_limit parameters.
-       File: postconf/postconf_service.c, postconf/test6.ref.
+       File: postconf/postconf_service.c, postconf/test6.ref,
+       postconf/test22.ref.
+
+20111128
+
+       Feature: "postconf -C class,..." support to print parameters
+       in one or more classes (builtin= built-in parameter names,
+       service=service-defined parameter names, user=user-defined
+       parameter names). Files: postconf/postconf.c, postconf/postconf.h,
+       postconf_service.c, postconf/postconf_user.c.
+
index b873cc0ad8518d758b2c2495d46dbc80c48dd7e0..774e7489b51e75099372aa46f748795351342bfd 100644 (file)
@@ -207,11 +207,11 @@ NOTES:
   * Lines 8, 9: always specify "check_policy_service" AFTER
     "reject_unauth_destination" or else your system could become an open relay.
 
-  * Line 11: this increases the time that a policy server process is allowed to
-    run from the default 1000 seconds to 3600 seconds. The default time limit
-    is too short for a policy daemon that needs to run long as the SMTP server
-    process that talks to it. See the spawn(8) manpage for more information
-    about the transport_time_limit parameter.
+  * Line 11: this increases the time that a policy server process may run to
+    3600 seconds. The default time limit of 1000 seconds is too short; the
+    policy daemon needs to run long as the SMTP server process that talks to
+    it. See the spawn(8) manpage for more information about the
+    transport_time_limit parameter.
 
         Note: the "policy_time_limit" parameter will not show up in "postconf"
         command output before Postfix version 2.9. This limitation applies to
@@ -315,11 +315,11 @@ Notes:
   * Line 3: Specify "greylist.pl -v" for verbose logging of each request and
     reply.
 
-  * Line 6: this increases the time that a greylist server process is allowed
-    to run from the default 1000 seconds to 3600 seconds. The default time
-    limit is too short for a greylist daemon that needs to run long as the SMTP
-    server process that talks to it. See the spawn(8) manpage for more
-    information about the transport_time_limit parameter.
+  * Line 6: this increases the time that a greylist server process may run to
+    3600 seconds. The default time limit of 1000 seconds is too short; the
+    greylist daemon needs to run long as the SMTP server process that talks to
+    it. See the spawn(8) manpage for more information about the
+    transport_time_limit parameter.
 
         Note: the "greylist_time_limit" parameter will not show up in
         "postconf" command output before Postfix version 2.9. This limitation
index 4157fa95582f8c1a9b082f23300e10da9ed0937f..cdb3724229a5c9ee81bef563d8df80befacd5b5d 100644 (file)
@@ -2,6 +2,8 @@ Wish list:
 
        Things to do before the stable release:
 
+       Add regression tests for postconf -C.
+
        Remove this file from the stable release.
 
        Things to do after the stable release:
@@ -13,6 +15,9 @@ Wish list:
        that, it can discuss the gory details of higher security
        levels for the few people who need it.
 
+       make address_verify_sender dynamic so it won't work
+       with address harvesters.
+
        Investigate viability of memcached for applications
        that require performance for low-security operations
        such as sharing the postscreen cache.
index b37e28616495c695d9eefa5e3cf06f0b23a06aaa..22fd26f51d5e8a5e6274fe0d2384db63216241de 100644 (file)
@@ -261,7 +261,7 @@ daemon, you would use something like this: </p>
  8         <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> 
  9         <a href="postconf.5.html#check_policy_service">check_policy_service</a> unix:private/policy 
 10         ...
-11     policy_time_limit = 3600
+11     <a href="postconf.5.html#transport_time_limit">policy_time_limit</a> = 3600
 </pre>
 </blockquote>
 
@@ -284,13 +284,13 @@ increase the smtpd process limit. </p>
 open relay. </p>
 
 <li> <p> Line 11: this increases the time that a policy server
-process is allowed to run from the default 1000 seconds to 3600
-seconds.  The default time limit is too short for a policy daemon
-that needs to run long as the SMTP server process that talks to it.
+process may run to 3600 seconds.  The default time limit of 1000
+seconds is too short; the policy daemon needs to run long as the
+SMTP server process that talks to it.
 See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the
 <a href="postconf.5.html#transport_time_limit"><i>transport</i>_time_limit</a> parameter.  </p>
 
-<blockquote> <p> Note: the "policy_time_limit" parameter will not
+<blockquote> <p> Note: the "<a href="postconf.5.html#transport_time_limit">policy_time_limit</a>" parameter will not
 show up in "postconf" command output before Postfix version 2.9.
 This limitation applies to many parameters whose name is a combination
 of a <a href="master.5.html">master.cf</a> service name (in the above example, "policy") and a
@@ -401,7 +401,7 @@ processes only: </p>
  3       user=nobody argv=/usr/bin/perl /usr/libexec/postfix/greylist.pl
  4 
  5 /etc/postfix/<a href="postconf.5.html">main.cf</a>:
- 6     greylist_time_limit = 3600
+ 6     <a href="postconf.5.html#transport_time_limit">greylist_time_limit</a> = 3600
  7     <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
  8         ... 
  9         <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> 
@@ -428,13 +428,13 @@ increase the smtpd process limit. </p>
 each request and reply. </p>
 
 <li> <p> Line 6: this increases the time that a greylist server
-process is allowed to run from the default 1000 seconds to 3600
-seconds.  The default time limit is too short for a greylist daemon
-that needs to run long as the SMTP server process that talks to it.
+process may run to 3600 seconds.  The default time limit of 1000
+seconds is too short; the greylist daemon needs to run long as the
+SMTP server process that talks to it.
 See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the
 <a href="postconf.5.html#transport_time_limit"><i>transport</i>_time_limit</a> parameter.  </p>
 
-<blockquote> <p> Note: the "greylist_time_limit" parameter will not
+<blockquote> <p> Note: the "<a href="postconf.5.html#transport_time_limit">greylist_time_limit</a>" parameter will not
 show up in "postconf" command output before Postfix version 2.9.
 This limitation applies to many parameters whose name is a combination
 of a <a href="master.5.html">master.cf</a> service name (in the above example, "greylist") and
index dcbd5e1779e1fc92a87112b50e8960d083167bb3..5e6c368e00cd554fb91d786983414bb23937bd48 100644 (file)
@@ -12,7 +12,8 @@ POSTCONF(1)                                                        POSTCONF(1)
 <b>SYNOPSIS</b>
        <b>Managing <a href="postconf.5.html">main.cf</a>:</b>
 
-       <b>postconf</b> [<b>-dfhnv</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>parameter ...</i>]
+       <b>postconf</b> [<b>-dfhnv</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<b>-C</b> <i>class</i>] [<i>parameter</i>
+       <i>...</i>]
 
        <b>postconf</b> [<b>-ev</b>] [<b>-c</b> <i>config</i><b>_</b><i>dir</i>] [<i>parameter=value ...</i>]
 
@@ -34,122 +35,137 @@ POSTCONF(1)                                                        POSTCONF(1)
        By default, the <a href="postconf.1.html"><b>postconf</b>(1)</a> command displays the values of
        <a href="postconf.5.html"><b>main.cf</b></a> configuration parameters, and warns about possible
        mis-typed parameter names (Postfix 2.9 and later).  It can
-       also change <a href="postconf.5.html"><b>main.cf</b></a>  configuration  parameter  values,  or
-       display  other configuration information about the Postfix
+       also  change  <a href="postconf.5.html"><b>main.cf</b></a>  configuration  parameter values, or
+       display other configuration information about the  Postfix
        mail system.
 
        Options:
 
-       <b>-a</b>     List the available SASL server plug-in types.   The
-              SASL    plug-in   type   is   selected   with   the
+       <b>-a</b>     List  the available SASL server plug-in types.  The
+              SASL   plug-in   type   is   selected   with    the
               <b><a href="postconf.5.html#smtpd_sasl_type">smtpd_sasl_type</a></b> configuration parameter by specify-
               ing one of the names listed below.
 
-              <b>cyrus</b>  This  server plug-in is available when Post-
+              <b>cyrus</b>  This server plug-in is available when  Post-
                      fix is built with Cyrus SASL support.
 
               <b>dovecot</b>
                      This server plug-in uses the Dovecot authen-
                      tication server, and is available when Post-
-                     fix is built with any form of SASL  support.
+                     fix  is built with any form of SASL support.
 
-              This  feature  is  available  with  Postfix 2.3 and
+              This feature is  available  with  Postfix  2.3  and
               later.
 
-       <b>-A</b>     List the available SASL client plug-in types.   The
-              SASL    plug-in   type   is   selected   with   the
-              <b><a href="postconf.5.html#smtp_sasl_type">smtp_sasl_type</a></b>  or   <b><a href="postconf.5.html#lmtp_sasl_type">lmtp_sasl_type</a></b>   configuration
-              parameters  by  specifying  one of the names listed
+       <b>-A</b>     List  the available SASL client plug-in types.  The
+              SASL   plug-in   type   is   selected   with    the
+              <b><a href="postconf.5.html#smtp_sasl_type">smtp_sasl_type</a></b>   or   <b><a href="postconf.5.html#lmtp_sasl_type">lmtp_sasl_type</a></b>  configuration
+              parameters by specifying one of  the  names  listed
               below.
 
-              <b>cyrus</b>  This client plug-in is available when  Post-
+              <b>cyrus</b>  This  client plug-in is available when Post-
                      fix is built with Cyrus SASL support.
 
-              This  feature  is  available  with  Postfix 2.3 and
+              This feature is  available  with  Postfix  2.3  and
               later.
 
        <b>-b</b> [<i>template</i><b>_</b><i>file</i>]
               Display the message text that appears at the begin-
-              ning  of  delivery  status  notification (DSN) mes-
+              ning of delivery  status  notification  (DSN)  mes-
               sages, replacing $<b>name</b> expressions with actual val-
               ues as described in <a href="bounce.5.html"><b>bounce</b>(5)</a>.
 
-              To  override the built-in templates, specify a tem-
-              plate file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a>  com-
-              mand  line,  or specify a file name in <a href="postconf.5.html"><b>main.cf</b></a> with
+              To override the built-in templates, specify a  tem-
+              plate  file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
+              mand line, or specify a file name in  <a href="postconf.5.html"><b>main.cf</b></a>  with
               the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter.
 
               To force selection of the built-in templates, spec-
-              ify  an empty template file name on the <a href="postconf.1.html"><b>postconf</b>(1)</a>
+              ify an empty template file name on the  <a href="postconf.1.html"><b>postconf</b>(1)</a>
               command line (in shell language: "").
 
-              This feature is  available  with  Postfix  2.3  and
+              This  feature  is  available  with  Postfix 2.3 and
               later.
 
        <b>-c</b> <i>config</i><b>_</b><i>dir</i>
-              The  <a href="postconf.5.html"><b>main.cf</b></a>  configuration  file  is  in the named
+              The <a href="postconf.5.html"><b>main.cf</b></a> configuration  file  is  in  the  named
               directory  instead  of  the  default  configuration
               directory.
 
+       <b>-C</b> <i>class,...</i>
+              When displaying  <a href="postconf.5.html"><b>main.cf</b></a>  parameters,  select  only
+              parameters  from the specified class(es), specified
+              as a comma-separated list:
+
+              <b>builtin</b>
+                     Parameters with built-in names.
+
+              <b>service</b>
+                     Parameters with service-defined  names  (the
+                     first  field  of  a  <a href="master.5.html"><b>master.cf</b></a>  entry plus a
+                     Postfix-defined suffix).
+
+              <b>user</b>   Parameters with user-defined names.
+
        <b>-d</b>     Print <a href="postconf.5.html"><b>main.cf</b></a> default parameter settings instead of
-              actual settings.  Specify <b>-df</b> to  fold  long  lines
+              actual  settings.   Specify  <b>-df</b> to fold long lines
               for human readability (Postfix 2.9 and later).
 
-       <b>-e</b>     Edit  the  <a href="postconf.5.html"><b>main.cf</b></a>  configuration  file, and update
-              parameter settings with the "<i>name</i>=<i>value</i>"  pairs  on
+       <b>-e</b>     Edit the <a href="postconf.5.html"><b>main.cf</b></a>  configuration  file,  and  update
+              parameter  settings  with the "<i>name</i>=<i>value</i>" pairs on
               the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line. The file is copied to
-              a temporary file then renamed into place.   Specify
+              a  temporary file then renamed into place.  Specify
               quotes to protect special characters and whitespace
               on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line.
 
               The <b>-e</b> is no longer needed with Postfix version 2.8
               and later.
 
-       <b>-f</b>     Fold  long lines when printing <a href="postconf.5.html"><b>main.cf</b></a> or <a href="master.5.html"><b>master.cf</b></a>
-              configuration file entries, for human  readability.
+       <b>-f</b>     Fold long lines when printing <a href="postconf.5.html"><b>main.cf</b></a> or  <a href="master.5.html"><b>master.cf</b></a>
+              configuration  file entries, for human readability.
 
-              This  feature  is  available  with  Postfix 2.9 and
+              This feature is  available  with  Postfix  2.9  and
               later.
 
        <b>-h</b>     Show <a href="postconf.5.html"><b>main.cf</b></a> parameter values without the "<i>name</i> = "
               label that normally precedes the value.
 
-       <b>-l</b>     List  the  names  of  all supported mailbox locking
+       <b>-l</b>     List the names of  all  supported  mailbox  locking
               methods.  Postfix supports the following methods:
 
-              <b>flock</b>  A kernel-based advisory locking  method  for
-                     local  files  only.   This locking method is
-                     available on systems with a  BSD  compatible
+              <b>flock</b>  A  kernel-based  advisory locking method for
+                     local files only.  This  locking  method  is
+                     available  on  systems with a BSD compatible
                      library.
 
-              <b>fcntl</b>  A  kernel-based  advisory locking method for
+              <b>fcntl</b>  A kernel-based advisory locking  method  for
                      local and remote files.
 
               <b>dotlock</b>
-                     An  application-level  locking  method.   An
-                     application  locks  a file named <i>filename</i> by
-                     creating a file  named  <i>filename</i><b>.lock</b>.   The
-                     application  is  expected  to remove its own
-                     lock file, as well as stale lock files  that
+                     An   application-level  locking  method.  An
+                     application locks a file named  <i>filename</i>  by
+                     creating  a  file  named <i>filename</i><b>.lock</b>.  The
+                     application is expected to  remove  its  own
+                     lock  file, as well as stale lock files that
                      were left behind after abnormal termination.
 
        <b>-m</b>     List the names of all supported lookup table types.
-              In  Postfix  configuration files, lookup tables are
-              specified as <i>type</i><b>:</b><i>name</i>, where <i>type</i> is  one  of  the
-              types  listed  below. The table <i>name</i> syntax depends
-              on the lookup table type as described in the  <a href="DATABASE_README.html">DATA</a>-
+              In Postfix configuration files, lookup  tables  are
+              specified  as  <i>type</i><b>:</b><i>name</i>,  where <i>type</i> is one of the
+              types listed below. The table <i>name</i>  syntax  depends
+              on  the lookup table type as described in the <a href="DATABASE_README.html">DATA</a>-
               <a href="DATABASE_README.html">BASE_README</a> document.
 
-              <b>btree</b>  A  sorted, balanced tree structure.  This is
+              <b>btree</b>  A sorted, balanced tree structure.  This  is
                      available on systems with support for Berke-
                      ley DB databases.
 
-              <b>cdb</b>    A  read-optimized  structure with no support
-                     for incremental updates.  This is  available
+              <b>cdb</b>    A read-optimized structure with  no  support
+                     for  incremental updates.  This is available
                      on systems with support for CDB databases.
 
-              <b>cidr</b>   A  table  that associates values with Class-
-                     less Inter-Domain Routing  (CIDR)  patterns.
+              <b>cidr</b>   A table that associates values  with  Class-
+                     less  Inter-Domain  Routing (CIDR) patterns.
                      This is described in <a href="cidr_table.5.html"><b>cidr_table</b>(5)</a>.
 
               <b>dbm</b>    An indexed file type based on hashing.  This
@@ -158,12 +174,12 @@ POSTCONF(1)                                                        POSTCONF(1)
 
               <b>environ</b>
                      The  UNIX  process  environment  array.  The
-                     lookup key is the variable name.  Originally
-                     implemented  for  testing,  someone may find
+                     lookup  key is the variable name. Originally
+                     implemented for testing,  someone  may  find
                      this useful someday.
 
               <b>hash</b>   An indexed file type based on hashing.  This
-                     is  available  on  systems  with support for
+                     is available on  systems  with  support  for
                      Berkeley DB databases.
 
               <b>internal</b>
@@ -171,130 +187,130 @@ POSTCONF(1)                                                        POSTCONF(1)
                      tent are lost when a process terminates.
 
               <b>ldap</b> (read-only)
-                     Perform  lookups  using  the  LDAP protocol.
+                     Perform lookups  using  the  LDAP  protocol.
                      This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
 
               <b>mysql</b> (read-only)
-                     Perform lookups using  the  MYSQL  protocol.
+                     Perform  lookups  using  the MYSQL protocol.
                      This is described in <a href="mysql_table.5.html"><b>mysql_table</b>(5)</a>.
 
               <b>pcre</b> (read-only)
                      A lookup table based on Perl Compatible Reg-
-                     ular  Expressions.  The   file   format   is
+                     ular   Expressions.   The   file  format  is
                      described in <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>.
 
               <b>pgsql</b> (read-only)
-                     Perform  lookups using the PostgreSQL proto-
+                     Perform lookups using the PostgreSQL  proto-
                      col. This is described in <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>.
 
               <b>proxy</b> (read-only)
-                     A lookup table that is implemented  via  the
-                     Postfix  <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table name
+                     A  lookup  table that is implemented via the
+                     Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table  name
                      syntax is <i>type</i><b>:</b><i>name</i>.
 
               <b>regexp</b> (read-only)
                      A lookup table based on regular expressions.
-                     The  file  format is described in <a href="regexp_table.5.html"><b>regexp_ta-</b></a>
+                     The file format is described  in  <a href="regexp_table.5.html"><b>regexp_ta-</b></a>
                      <a href="regexp_table.5.html"><b>ble</b>(5)</a>.
 
               <b>sdbm</b>   An indexed file type based on hashing.  This
-                     is  available  on  systems  with support for
+                     is available on  systems  with  support  for
                      SDBM databases.
 
               <b>sqlite</b> (read-only)
-                     Perform lookups from SQLite database  files.
+                     Perform  lookups from SQLite database files.
                      This is described in <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>.
 
               <b>static</b> (read-only)
-                     A  table  that  always  returns  its name as
-                     lookup result.  For  example,  <b><a href="DATABASE_README.html#types">static</a>:foobar</b>
-                     always  returns  the string <b>foobar</b> as lookup
+                     A table that  always  returns  its  name  as
+                     lookup  result.  For  example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b>
+                     always returns the string <b>foobar</b>  as  lookup
                      result.
 
               <b>tcp</b> (read-only)
                      Perform lookups using a simple request-reply
-                     protocol  that is described in <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.
+                     protocol that is described in  <a href="tcp_table.5.html"><b>tcp_table</b>(5)</a>.
 
               <b>texthash</b> (read-only)
-                     Produces similar  results  as  hash:  files,
+                     Produces  similar  results  as  hash: files,
                      except  that  you  don't  need  to  run  the
-                     <a href="postmap.1.html"><b>postmap</b>(1)</a> command before you  can  use  the
-                     file,  and  that  it does not detect changes
+                     <a href="postmap.1.html"><b>postmap</b>(1)</a>  command  before  you can use the
+                     file, and that it does  not  detect  changes
                      after the file is read.
 
               <b>unix</b> (read-only)
-                     A limited way to query the UNIX  authentica-
+                     A  limited way to query the UNIX authentica-
                      tion  database.  The  following  tables  are
                      implemented:
 
                      <b>unix:passwd.byname</b>
-                            The table is the UNIX password  data-
-                            base.  The  key is a login name.  The
-                            result is a password  file  entry  in
+                            The  table is the UNIX password data-
+                            base. The key is a login  name.   The
+                            result  is  a  password file entry in
                             <b>passwd</b>(5) format.
 
                      <b>unix:group.byname</b>
                             The table is the UNIX group database.
-                            The key is a group name.  The  result
-                            is  a  group  file  entry in <b>group</b>(5)
+                            The  key is a group name.  The result
+                            is a group  file  entry  in  <b>group</b>(5)
                             format.
 
-              Other table types may exist depending on how  Post-
+              Other  table types may exist depending on how Post-
               fix was built.
 
-       <b>-M</b>     Show  <a href="master.5.html"><b>master.cf</b></a>  file  contents  instead of <a href="postconf.5.html"><b>main.cf</b></a>
-              file contents.  Specify <b>-Mf</b> to fold long lines  for
+       <b>-M</b>     Show <a href="master.5.html"><b>master.cf</b></a> file  contents  instead  of  <a href="postconf.5.html"><b>main.cf</b></a>
+              file  contents.  Specify <b>-Mf</b> to fold long lines for
               human readability.
 
               If <i>service ...</i> is specified, only the matching ser-
-              vices will be output. For  example,  "<b>postconf  -Mf</b>
-              <b>inet</b>"  will  match  all services that listen on the
+              vices  will  be  output. For example, "<b>postconf -Mf</b>
+              <b>inet</b>" will match all services that  listen  on  the
               network.
 
-              Specify zero or more arguments, each  with  a  <i>ser-</i>
-              <i>vice-type</i>  name (<b>inet</b>, <b>unix</b>, <b>fifo</b>, or <b>pass</b>) or with
-              a <i>service-name.service-type</i>  pair,  where  <i>service-</i>
+              Specify  zero  or  more arguments, each with a <i>ser-</i>
+              <i>vice-type</i> name (<b>inet</b>, <b>unix</b>, <b>fifo</b>, or <b>pass</b>) or  with
+              a  <i>service-name.service-type</i>  pair,  where <i>service-</i>
               <i>name</i> is the first field of a <a href="master.5.html">master.cf</a> entry.
 
-              This  feature  is  available  with  Postfix 2.9 and
+              This feature is  available  with  Postfix  2.9  and
               later.
 
-       <b>-n</b>     Print <a href="postconf.5.html"><b>main.cf</b></a> parameter settings that  are  explic-
-              itly  specified  in  <a href="postconf.5.html"><b>main.cf</b></a>.   Specify <b>-nf</b> to fold
-              long lines for human readability (Postfix  2.9  and
+       <b>-n</b>     Print  <a href="postconf.5.html"><b>main.cf</b></a>  parameter settings that are explic-
+              itly specified in <a href="postconf.5.html"><b>main.cf</b></a>.   Specify  <b>-nf</b>  to  fold
+              long  lines  for human readability (Postfix 2.9 and
               later).
 
        <b>-t</b> [<i>template</i><b>_</b><i>file</i>]
-              Display  the templates for text that appears at the
-              beginning of  delivery  status  notification  (DSN)
+              Display the templates for text that appears at  the
+              beginning  of  delivery  status  notification (DSN)
               messages, without expanding $<b>name</b> expressions.
 
-              To  override the built-in templates, specify a tem-
-              plate file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a>  com-
-              mand  line,  or specify a file name in <a href="postconf.5.html"><b>main.cf</b></a> with
+              To override the built-in templates, specify a  tem-
+              plate  file name at the end of the <a href="postconf.1.html"><b>postconf</b>(1)</a> com-
+              mand line, or specify a file name in  <a href="postconf.5.html"><b>main.cf</b></a>  with
               the <b><a href="postconf.5.html#bounce_template_file">bounce_template_file</a></b> parameter.
 
               To force selection of the built-in templates, spec-
-              ify  an empty template file name on the <a href="postconf.1.html"><b>postconf</b>(1)</a>
+              ify an empty template file name on the  <a href="postconf.1.html"><b>postconf</b>(1)</a>
               command line (in shell language: "").
 
-              This feature is  available  with  Postfix  2.3  and
+              This  feature  is  available  with  Postfix 2.3 and
               later.
 
        <b>-v</b>     Enable verbose logging for debugging purposes. Mul-
-              tiple <b>-v</b> options  make  the  software  increasingly
+              tiple  <b>-v</b>  options  make  the software increasingly
               verbose.
 
-       <b>-#</b>     Edit  the  <a href="postconf.5.html"><b>main.cf</b></a>  configuration file, and comment
+       <b>-#</b>     Edit the <a href="postconf.5.html"><b>main.cf</b></a> configuration  file,  and  comment
               out the parameters given on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command
-              line,  so  that  those  parameters  revert to their
-              default values.  The file is copied to a  temporary
-              file  then  renamed  into place.  Specify a list of
+              line, so that  those  parameters  revert  to  their
+              default  values.  The file is copied to a temporary
+              file then renamed into place.  Specify  a  list  of
               parameter names, not <i>name</i>=<i>value</i> pairs.  There is no
-              <a href="postconf.1.html"><b>postconf</b>(1)</a>  command  to perform the reverse opera-
+              <a href="postconf.1.html"><b>postconf</b>(1)</a> command to perform the  reverse  opera-
               tion.
 
-              This feature is  available  with  Postfix  2.6  and
+              This  feature  is  available  with  Postfix 2.6 and
               later.
 
 <b>DIAGNOSTICS</b>
@@ -305,18 +321,18 @@ POSTCONF(1)                                                        POSTCONF(1)
               Directory with Postfix configuration files.
 
 <b>CONFIGURATION PARAMETERS</b>
-       The  following  <a href="postconf.5.html"><b>main.cf</b></a> parameters are especially relevant
+       The following <a href="postconf.5.html"><b>main.cf</b></a> parameters are  especially  relevant
        to this program.
 
-       The text below provides  only  a  parameter  summary.  See
+       The  text  below  provides  only  a parameter summary. See
        <a href="postconf.5.html"><b>postconf</b>(5)</a> for more details including examples.
 
        <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#bounce_template_file">bounce_template_file</a> (empty)</b>
-              Pathname of a configuration file with  bounce  mes-
+              Pathname  of  a configuration file with bounce mes-
               sage templates.
 
 <b>FILES</b>
@@ -332,7 +348,7 @@ POSTCONF(1)                                                        POSTCONF(1)
        <a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
 
 <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 57d2d061bdb7104258f3538f944400ec495eadbf..d839dea3ba421113da158eb09ef891e78ab380cf 100644 (file)
@@ -12,7 +12,7 @@ Postfix configuration utility
 \fBManaging main.cf:\fR
 
 \fBpostconf\fR [\fB-dfhnv\fR] [\fB-c \fIconfig_dir\fR]
-[\fIparameter ...\fR]
+[\fB-C \fIclass\fR] [\fIparameter ...\fR]
 
 \fBpostconf\fR [\fB-ev\fR] [\fB-c \fIconfig_dir\fR]
 [\fIparameter=value ...\fR]
@@ -90,6 +90,19 @@ This feature is available with Postfix 2.3 and later.
 .IP "\fB-c \fIconfig_dir\fR"
 The \fBmain.cf\fR configuration file is in the named directory
 instead of the default configuration directory.
+.IP "\fB-C \fIclass,...\fR"
+When displaying \fBmain.cf\fR parameters, select only
+parameters from the specified class(es), specified as a
+comma-separated list:
+.RS
+.IP \fBbuiltin\fR
+Parameters with built-in names.
+.IP \fBservice\fR
+Parameters with service-defined names (the first field of
+a \fBmaster.cf\fR entry plus a Postfix-defined suffix).
+.IP \fBuser\fR
+Parameters with user-defined names.
+.RE
 .IP \fB-d\fR
 Print \fBmain.cf\fR default parameter settings instead of
 actual settings.
index 82c47044cc6456137475912b6469931b8918c839..23f7e69d7a75d10729e017bb00343f61eb7002d0 100755 (executable)
@@ -996,6 +996,11 @@ while (<>) {
     s;\btlsproxy_tls_session_cache_timeout\b;<a href="postconf.5.html#tlsproxy_tls_session_cache_timeout">$&</a>;g;
     s;\btlsproxy_use_tls\b;<a href="postconf.5.html#tlsproxy_use_tls">$&</a>;g;
 
+    # Service-defined parameters...
+
+    s;\bpolicy_time_limit\b;<a href="postconf.5.html#transport_time_limit">$&</a>;g;
+    s;\bgreylist_time_limit\b;<a href="postconf.5.html#transport_time_limit">$&</a>;g;
+
     # Hyperlink URLs and RFC documents
 
     s/(http:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/;
index 178813fc8a440a314a14e8e692ebceab21834bc0..d3531f05142ff6547fb21eb47e8a5c6066a79942 100644 (file)
@@ -284,9 +284,9 @@ increase the smtpd process limit. </p>
 open relay. </p>
 
 <li> <p> Line 11: this increases the time that a policy server
-process is allowed to run from the default 1000 seconds to 3600
-seconds.  The default time limit is too short for a policy daemon
-that needs to run long as the SMTP server process that talks to it.
+process may run to 3600 seconds.  The default time limit of 1000
+seconds is too short; the policy daemon needs to run long as the
+SMTP server process that talks to it.
 See the spawn(8) manpage for more information about the
 <i>transport</i>_time_limit parameter.  </p>
 
@@ -428,9 +428,9 @@ increase the smtpd process limit. </p>
 each request and reply. </p>
 
 <li> <p> Line 6: this increases the time that a greylist server
-process is allowed to run from the default 1000 seconds to 3600
-seconds.  The default time limit is too short for a greylist daemon
-that needs to run long as the SMTP server process that talks to it.
+process may run to 3600 seconds.  The default time limit of 1000
+seconds is too short; the greylist daemon needs to run long as the
+SMTP server process that talks to it.
 See the spawn(8) manpage for more information about the
 <i>transport</i>_time_limit parameter.  </p>
 
index 2588e3406ff4a1759fe6169ca40d94d205a5b20b..8704ec30a811af5c5b4dfde439d774098dea5cd3 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      "20111127"
+#define MAIL_RELEASE_DATE      "20111129"
 #define MAIL_VERSION_NUMBER    "2.9"
 
 #ifdef SNAPSHOT
index 82a9c8bb0201e54ff7ee1d5d5e78f2942975b4b7..605e1e2f75fa5b698bdb51ff6ae6af0b0d55859d 100644 (file)
@@ -41,7 +41,8 @@ Makefile: Makefile.in
 test:  $(TESTPROG)
 
 tests: test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test11 \
-       test12 test13 test14 test15 test16 test17 test18 test19 test20 test21
+       test12 test13 test14 test15 test16 test17 test18 test19 test20 test21 \
+       test22
 
 root_tests:
 
@@ -284,6 +285,16 @@ test21:    $(PROG) test21.ref
        diff test21.ref test21.tmp
        rm -f main.cf master.cf test21.tmp
 
+# Like test6, but using a delivery agent that has no _time_limit magic.
+
+test22:        $(PROG) test22.ref
+       rm -f main.cf master.cf
+       touch main.cf master.cf
+       echo whatevershebrings unix - n n - 0 smtp >> master.cf
+       ./$(PROG) -c . 2>&1 | grep whatevershebrings >test22.tmp
+       diff test22.ref test22.tmp
+       rm -f main.cf master.cf test22.tmp
+
 printfck: $(OBJS) $(PROG)
        rm -rf printfck
        mkdir printfck
@@ -322,6 +333,7 @@ postconf.o: ../../include/mail_run.h
 postconf.o: ../../include/mail_version.h
 postconf.o: ../../include/msg.h
 postconf.o: ../../include/msg_vstream.h
+postconf.o: ../../include/name_mask.h
 postconf.o: ../../include/stringops.h
 postconf.o: ../../include/sys_defs.h
 postconf.o: ../../include/vbuf.h
index 10a273c15bdcc208d901ef4678b535af3922d093..10c17f7501ceaeff1e5f3972db4b467d7187efd1 100644 (file)
@@ -8,7 +8,7 @@
 /*     \fBManaging main.cf:\fR
 /*
 /*     \fBpostconf\fR [\fB-dfhnv\fR] [\fB-c \fIconfig_dir\fR]
-/*     [\fIparameter ...\fR]
+/*     [\fB-C \fIclass\fR] [\fIparameter ...\fR]
 /*
 /*     \fBpostconf\fR [\fB-ev\fR] [\fB-c \fIconfig_dir\fR]
 /*     [\fIparameter=value ...\fR]
 /* .IP "\fB-c \fIconfig_dir\fR"
 /*     The \fBmain.cf\fR configuration file is in the named directory
 /*     instead of the default configuration directory.
+/* .IP "\fB-C \fIclass,...\fR"
+/*     When displaying \fBmain.cf\fR parameters, select only
+/*     parameters from the specified class(es), specified as a
+/*     comma-separated list:
+/* .RS
+/* .IP \fBbuiltin\fR
+/*     Parameters with built-in names.
+/* .IP \fBservice\fR
+/*     Parameters with service-defined names (the first field of
+/*     a \fBmaster.cf\fR entry plus a Postfix-defined suffix).
+/* .IP \fBuser\fR
+/*     Parameters with user-defined names.
+/* .RE
 /* .IP \fB-d\fR
 /*     Print \fBmain.cf\fR default parameter settings instead of
 /*     actual settings.
 #include <vstring.h>
 #include <vstream.h>
 #include <stringops.h>
+#include <name_mask.h>
 
 /* Global library. */
 
@@ -349,6 +363,13 @@ int     main(int argc, char **argv)
     struct stat st;
     int     junk;
     ARGV   *ext_argv = 0;
+    int     param_class = PC_PARAM_MASK_CLASS;
+    static const NAME_MASK param_class_table[] = {
+       "builtin", PC_PARAM_FLAG_BUILTIN,
+       "service", PC_PARAM_FLAG_SERVICE,
+       "user", PC_PARAM_FLAG_USER,
+       0,
+    };
 
     /*
      * Fingerprint executables and core dumps.
@@ -378,7 +399,7 @@ int     main(int argc, char **argv)
     /*
      * Parse JCL.
      */
-    while ((ch = GETOPT(argc, argv, "aAbc:deEf#hlmMntv")) > 0) {
+    while ((ch = GETOPT(argc, argv, "aAbc:C:deEf#hlmMntv")) > 0) {
        switch (ch) {
        case 'a':
            cmd_mode |= SHOW_SASL_SERV;
@@ -396,6 +417,10 @@ int     main(int argc, char **argv)
            if (setenv(CONF_ENV_PATH, optarg, 1) < 0)
                msg_fatal("out of memory");
            break;
+       case 'C':
+           param_class = name_mask_opt("-C option", param_class_table,
+                                   optarg, NAME_MASK_ANY_CASE | NAME_MASK_FATAL);
+           break;
        case 'd':
            cmd_mode |= SHOW_DEFS;
            break;
@@ -446,7 +471,7 @@ int     main(int argc, char **argv)
            msg_verbose++;
            break;
        default:
-           msg_fatal("usage: %s [-a (server SASL types)] [-A (client SASL types)] [-b (bounce templates)] [-c config_dir] [-d (defaults)] [-e (edit)] [-f (fold lines)] [-# (comment-out)] [-h (no names)] [-l (lock types)] [-m (map types)] [-M (master.cf)] [-n (non-defaults)] [-v] [name...]", argv[0]);
+           msg_fatal("usage: %s [-a (server SASL types)] [-A (client SASL types)] [-b (bounce templates)] [-c config_dir] [-C param_class] [-d (defaults)] [-e (edit)] [-f (fold lines)] [-# (comment-out)] [-h (no names)] [-l (lock types)] [-m (map types)] [-M (master.cf)] [-n (non-defaults)] [-v] [name...]", argv[0]);
        }
     }
 
@@ -548,7 +573,7 @@ int     main(int argc, char **argv)
        /*
         * Show the requested values.
         */
-       show_parameters(cmd_mode, argv + optind);
+       show_parameters(cmd_mode, param_class, argv + optind);
 
        /*
         * Flag unused parameters. This makes no sense with "postconf -d",
index f2003d504995d85b3466d01365f68011eaee8a5d..cb77952bafe151b50187d10e9e2e9de8d024e848 100644 (file)
@@ -45,8 +45,15 @@ typedef struct {
 } PC_PARAM_NODE;
 
  /* Values for flags. See the postconf_node module for narrative text. */
-#define PC_PARAM_FLAG_NONE     (0)
-#define PC_PARAM_FLAG_RAW      (1<<0)
+#define PC_PARAM_FLAG_RAW      (1<<0)  /* raw parameter value */
+#define PC_PARAM_FLAG_BUILTIN  (1<<1)  /* built-in parameter name */
+#define PC_PARAM_FLAG_SERVICE  (1<<2)  /* service-defined parameter name */
+#define PC_PARAM_FLAG_USER     (1<<3)  /* user-defined parameter name */
+
+#define PC_PARAM_MASK_CLASS \
+       (PC_PARAM_FLAG_BUILTIN | PC_PARAM_FLAG_SERVICE | PC_PARAM_FLAG_USER)
+#define PC_PARAM_CLASS_OVERRIDE(node, class) \
+       ((node)->flags = (((node)->flags & ~PC_PARAM_MASK_CLASS) | (class)))
 
 #define PC_RAW_PARAMETER(node) ((node)->flags & PC_PARAM_FLAG_RAW)
 
@@ -123,7 +130,7 @@ extern void set_config_dir(void);
   */
 extern void read_parameters(void);
 extern void set_parameters(void);
-extern void show_parameters(int, char **);
+extern void show_parameters(int, int, char **);
 
  /*
   * postconf_edit.c
index 09893e50d4b0323644f6d2f8f6b98f9c033a832e..b915ad84a57db88df97c2a8968312d425b9fef21 100644 (file)
@@ -333,36 +333,39 @@ void    register_builtin_parameters(void)
     param_table = PC_PARAM_TABLE_CREATE(100);
 
     /*
-     * Add the built-in parameters to the global name space.
+     * Add the built-in parameters to the global name space. The class
+     * (built-i) is tentative; some parameters are actually service-defined,
+     * but they have their own default value.
      */
     for (ctt = time_table; ctt->name; ctt++)
-       PC_PARAM_TABLE_ENTER(param_table, ctt->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, ctt->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) ctt, convert_time_parameter);
     for (cbt = bool_table; cbt->name; cbt++)
-       PC_PARAM_TABLE_ENTER(param_table, cbt->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, cbt->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) cbt, convert_bool_parameter);
     for (cit = int_table; cit->name; cit++)
-       PC_PARAM_TABLE_ENTER(param_table, cit->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, cit->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) cit, convert_int_parameter);
     for (cst = str_table; cst->name; cst++)
-       PC_PARAM_TABLE_ENTER(param_table, cst->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, cst->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) cst, convert_str_parameter);
     for (cft = str_fn_table; cft->name; cft++)
-       PC_PARAM_TABLE_ENTER(param_table, cft->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, cft->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) cft, convert_str_fn_parameter);
     for (cft = str_fn_table_2; cft->name; cft++)
-       PC_PARAM_TABLE_ENTER(param_table, cft->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, cft->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) cft, convert_str_fn_parameter);
     for (rst = raw_table; rst->name; rst++)
-       PC_PARAM_TABLE_ENTER(param_table, rst->name, PC_PARAM_FLAG_RAW,
+       PC_PARAM_TABLE_ENTER(param_table, rst->name,
+                            PC_PARAM_FLAG_BUILTIN | PC_PARAM_FLAG_RAW,
                             (char *) rst, convert_raw_parameter);
     for (nst = nint_table; nst->name; nst++)
-       PC_PARAM_TABLE_ENTER(param_table, nst->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, nst->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) nst, convert_nint_parameter);
     for (bst = nbool_table; bst->name; bst++)
-       PC_PARAM_TABLE_ENTER(param_table, bst->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, bst->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) bst, convert_nbool_parameter);
     for (lst = long_table; lst->name; lst++)
-       PC_PARAM_TABLE_ENTER(param_table, lst->name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, lst->name, PC_PARAM_FLAG_BUILTIN,
                             (char *) lst, convert_long_parameter);
 }
index e7b0f72ab6ea13a1f4dd95df8190cc095c131aed..d566869d886f14037ec931294c9f8ce101e30534 100644 (file)
@@ -10,8 +10,9 @@
 /*
 /*     void    set_parameters()
 /*
-/*     void    show_parameters(mode, names)
+/*     void    show_parameters(mode, param_class, names)
 /*     int     mode;
+/*     int     param_class;
 /*     char    **names;
 /* DESCRIPTION
 /*     read_parameters() reads parameters from main.cf.
 /* .IP SHOW_EVAL
 /*     Expand parameter values (not implemented).
 /* .RE
+/* .IP param_class
+/*     Bit-wise OR of one or more of the following:
+/* .RS
+/* .IP PC_PARAM_FLAG_BUILTIN
+/*     Show built-in parameters.
+/* .IP PC_PARAM_FLAG_SERVICE
+/*     Show service-defined parameters.
+/* .IP PC_PARAM_FLAG_USER
+/*     Show user-defined parameters.
+/* .RE
 /* .IP names
 /*     List of zero or more parameter names. If the list is empty,
 /*     output all parameters.
@@ -225,7 +236,7 @@ static int comp_names(const void *a, const void *b)
 
 /* show_parameters - show parameter info */
 
-void    show_parameters(int mode, char **names)
+void    show_parameters(int mode, int param_class, char **names)
 {
     PC_PARAM_INFO **list;
     PC_PARAM_INFO **ht;
@@ -239,8 +250,9 @@ void    show_parameters(int mode, char **names)
        list = PC_PARAM_TABLE_LIST(param_table);
        qsort((char *) list, param_table->used, sizeof(*list), comp_names);
        for (ht = list; *ht; ht++)
-           print_parameter(mode, PC_PARAM_INFO_NAME(*ht),
-                           PC_PARAM_INFO_NODE(*ht));
+           if (param_class & PC_PARAM_INFO_NODE(*ht)->flags)
+               print_parameter(mode, PC_PARAM_INFO_NAME(*ht),
+                               PC_PARAM_INFO_NODE(*ht));
        myfree((char *) list);
        return;
     }
index 168b9ec3d5549c171c2af32dc82eab931b2d49de..ddd8bf99f22b33ad1946acf539316db51950e115 100644 (file)
@@ -2,7 +2,7 @@
 /* NAME
 /*     postconf_service 3
 /* SUMMARY
-/*     service-defined parameter support
+/*     service-defined parameter name support
 /* SYNOPSIS
 /*     #include <postconf.h>
 /*
@@ -89,16 +89,22 @@ static void register_service_parameter(const char *service, const char *suffix,
                                               const char *defparam)
 {
     char   *name = concatenate(service, suffix, (char *) 0);
+    PC_PARAM_NODE *node;
 
     /*
      * Skip service parameter names that have built-in definitions. This
      * happens with message delivery transports that have a non-default
      * per-destination concurrency or recipient limit, such as local(8).
+     * 
+     * Some parameters were tentatively flagged as built-in, but they are
+     * service parameters with their own default value. We don't change the
+     * default but we correct the parameter class.
      */
-    if (PC_PARAM_TABLE_LOCATE(param_table, name) != 0) {
+    if ((node = PC_PARAM_TABLE_FIND(param_table, name)) != 0) {
+       PC_PARAM_CLASS_OVERRIDE(node, PC_PARAM_FLAG_SERVICE);
        myfree(name);
     } else {
-       PC_PARAM_TABLE_ENTER(param_table, name, PC_PARAM_FLAG_NONE,
+       PC_PARAM_TABLE_ENTER(param_table, name, PC_PARAM_FLAG_SERVICE,
                             (char *) defparam, convert_service_parameter);
     }
 }
index 28362bf90cf0b54c061b2feb16d0f64cc70faf39..8e0557f03ef5db6378ad90f48a4f48870f5a03b0 100644 (file)
@@ -2,7 +2,7 @@
 /* NAME
 /*     postconf_user 3
 /* SUMMARY
-/*     support for user-defined parameters
+/*     support for user-defined parameter names
 /* SYNOPSIS
 /*     #include <postconf.h>
 /*
 /*     space of each master.cf entry. Parameters in local name
 /*     spaces take precedence over global parameters.
 /*
-/*     There are three categories of known parameters: built-in,
+/*     There are three categories of known parameter names: built-in,
 /*     service-defined (see postconf_service.c), and valid
 /*     user-defined.
 /*
-/*     There are two categories of valid user-defined parameters:
+/*     There are two categories of valid user-defined parameter
+/*     names:
 /*
 /*     - Parameters whose user-defined-name appears in the value
 /*     of smtpd_restriction_classes in main.cf or master.cf.
@@ -28,7 +29,7 @@
 /*     - In both cases the parameters must have a
 /*     "user-defined-name=value" entry in main.cf or master.cf.
 /*
-/*     Other user-defined parameters are flagged as "unused".
+/*     Other user-defined parameter names are flagged as "unused".
 /*
 /*     register_user_parameters() scans the global and per-service
 /*     name spaces for user-defined parameters and flags
@@ -122,11 +123,11 @@ static const char *flag_user_parameter(const char *mac_name,
     if (local_scope && dict_get(local_scope->all_params, mac_name)) {
        if (PC_PARAM_TABLE_LOCATE(local_scope->valid_names, mac_name) == 0)
            PC_PARAM_TABLE_ENTER(local_scope->valid_names, mac_name,
-                                PC_PARAM_FLAG_NONE, PC_PARAM_NO_DATA,
+                                PC_PARAM_FLAG_USER, PC_PARAM_NO_DATA,
                                 convert_user_parameter);
     } else if (mail_conf_lookup(mac_name) != 0) {
        if (PC_PARAM_TABLE_LOCATE(param_table, mac_name) == 0)
-           PC_PARAM_TABLE_ENTER(param_table, mac_name, PC_PARAM_FLAG_NONE,
+           PC_PARAM_TABLE_ENTER(param_table, mac_name, PC_PARAM_FLAG_USER,
                                 PC_PARAM_NO_DATA, convert_user_parameter);
     }
     return (0);
@@ -198,7 +199,7 @@ static void scan_user_parameter_namespace(const char *dict_name,
         && PC_PARAM_TABLE_LOCATE(local_scope->valid_names, cparam_name) == 0
            && htable_locate(rest_class_table, cparam_name) != 0)
            PC_PARAM_TABLE_ENTER(local_scope->valid_names, cparam_name,
-                             PC_PARAM_FLAG_NONE, PC_PARAM_NO_DATA,
+                             PC_PARAM_FLAG_USER, PC_PARAM_NO_DATA,
                              convert_user_parameter);
        /* Skip "do not expand" parameters. */
        if ((node = PC_PARAM_TABLE_FIND(param_table, cparam_name)) != 0
diff --git a/postfix/src/postconf/test22.ref b/postfix/src/postconf/test22.ref
new file mode 100644 (file)
index 0000000..bb1c81e
--- /dev/null
@@ -0,0 +1,15 @@
+whatevershebrings_delivery_slot_cost = $default_delivery_slot_cost
+whatevershebrings_delivery_slot_discount = $default_delivery_slot_discount
+whatevershebrings_delivery_slot_loan = $default_delivery_slot_loan
+whatevershebrings_destination_concurrency_failed_cohort_limit = $default_destination_concurrency_failed_cohort_limit
+whatevershebrings_destination_concurrency_limit = $default_destination_concurrency_limit
+whatevershebrings_destination_concurrency_negative_feedback = $default_destination_concurrency_negative_feedback
+whatevershebrings_destination_concurrency_positive_feedback = $default_destination_concurrency_positive_feedback
+whatevershebrings_destination_rate_delay = $default_destination_rate_delay
+whatevershebrings_destination_recipient_limit = $default_destination_recipient_limit
+whatevershebrings_extra_recipient_limit = $default_extra_recipient_limit
+whatevershebrings_initial_destination_concurrency = $initial_destination_concurrency
+whatevershebrings_minimum_delivery_slots = $default_minimum_delivery_slots
+whatevershebrings_recipient_limit = $default_recipient_limit
+whatevershebrings_recipient_refill_delay = $default_recipient_refill_delay
+whatevershebrings_recipient_refill_limit = $default_recipient_refill_limit