2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-09-01 06:35:27 +00:00

postfix-2.9-20111129

This commit is contained in:
Wietse Venema
2011-11-29 00:00:00 -05:00
committed by Viktor Dukhovni
parent 5854f6cb45
commit a2556d5b9d
17 changed files with 312 additions and 182 deletions

View File

@@ -17177,4 +17177,14 @@ Apologies for any names omitted.
Cleanup: added the pipe(8) delivery agent to the list of Cleanup: added the pipe(8) delivery agent to the list of
programs that implement transport_time_limit parameters. 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.

View File

@@ -207,11 +207,11 @@ NOTES:
* Lines 8, 9: always specify "check_policy_service" AFTER * Lines 8, 9: always specify "check_policy_service" AFTER
"reject_unauth_destination" or else your system could become an open relay. "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 * Line 11: this increases the time that a policy server process may run to
run from the default 1000 seconds to 3600 seconds. The default time limit 3600 seconds. The default time limit of 1000 seconds is too short; the
is too short for a policy daemon that needs to run long as the SMTP server policy daemon needs to run long as the SMTP server process that talks to
process that talks to it. See the spawn(8) manpage for more information it. See the spawn(8) manpage for more information about the
about the transport_time_limit parameter. transport_time_limit parameter.
Note: the "policy_time_limit" parameter will not show up in "postconf" Note: the "policy_time_limit" parameter will not show up in "postconf"
command output before Postfix version 2.9. This limitation applies to 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 * Line 3: Specify "greylist.pl -v" for verbose logging of each request and
reply. reply.
* Line 6: this increases the time that a greylist server process is allowed * Line 6: this increases the time that a greylist server process may run to
to run from the default 1000 seconds to 3600 seconds. The default time 3600 seconds. The default time limit of 1000 seconds is too short; the
limit is too short for a greylist daemon that needs to run long as the SMTP greylist daemon needs to run long as the SMTP server process that talks to
server process that talks to it. See the spawn(8) manpage for more it. See the spawn(8) manpage for more information about the
information about the transport_time_limit parameter. transport_time_limit parameter.
Note: the "greylist_time_limit" parameter will not show up in Note: the "greylist_time_limit" parameter will not show up in
"postconf" command output before Postfix version 2.9. This limitation "postconf" command output before Postfix version 2.9. This limitation

View File

@@ -2,6 +2,8 @@ Wish list:
Things to do before the stable release: Things to do before the stable release:
Add regression tests for postconf -C.
Remove this file from the stable release. Remove this file from the stable release.
Things to do after 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 that, it can discuss the gory details of higher security
levels for the few people who need it. 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 Investigate viability of memcached for applications
that require performance for low-security operations that require performance for low-security operations
such as sharing the postscreen cache. such as sharing the postscreen cache.

View 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> 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 9 <a href="postconf.5.html#check_policy_service">check_policy_service</a> unix:private/policy
10 ... 10 ...
11 policy_time_limit = 3600 11 <a href="postconf.5.html#transport_time_limit">policy_time_limit</a> = 3600
</pre> </pre>
</blockquote> </blockquote>
@@ -284,13 +284,13 @@ increase the smtpd process limit. </p>
open relay. </p> open relay. </p>
<li> <p> Line 11: this increases the time that a policy server <li> <p> Line 11: this increases the time that a policy server
process is allowed to run from the default 1000 seconds to 3600 process may run to 3600 seconds. The default time limit of 1000
seconds. The default time limit is too short for a policy daemon seconds is too short; the policy daemon needs to run long as the
that needs to run long as the SMTP server process that talks to it. SMTP server process that talks to it.
See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the 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> <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. show up in "postconf" command output before Postfix version 2.9.
This limitation applies to many parameters whose name is a combination 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 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 3 user=nobody argv=/usr/bin/perl /usr/libexec/postfix/greylist.pl
4 4
5 /etc/postfix/<a href="postconf.5.html">main.cf</a>: 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> = 7 <a href="postconf.5.html#smtpd_recipient_restrictions">smtpd_recipient_restrictions</a> =
8 ... 8 ...
9 <a href="postconf.5.html#reject_unauth_destination">reject_unauth_destination</a> 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> each request and reply. </p>
<li> <p> Line 6: this increases the time that a greylist server <li> <p> Line 6: this increases the time that a greylist server
process is allowed to run from the default 1000 seconds to 3600 process may run to 3600 seconds. The default time limit of 1000
seconds. The default time limit is too short for a greylist daemon seconds is too short; the greylist daemon needs to run long as the
that needs to run long as the SMTP server process that talks to it. SMTP server process that talks to it.
See the <a href="spawn.8.html">spawn(8)</a> manpage for more information about the 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> <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. show up in "postconf" command output before Postfix version 2.9.
This limitation applies to many parameters whose name is a combination 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 of a <a href="master.5.html">master.cf</a> service name (in the above example, "greylist") and

View File

@@ -12,7 +12,8 @@ POSTCONF(1) POSTCONF(1)
<b>SYNOPSIS</b> <b>SYNOPSIS</b>
<b>Managing <a href="postconf.5.html">main.cf</a>:</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>] <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 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 <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 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 also change <a href="postconf.5.html"><b>main.cf</b></a> configuration parameter values, or
display other configuration information about the Postfix display other configuration information about the Postfix
mail system. mail system.
Options: Options:
<b>-a</b> List the available SASL server plug-in types. The <b>-a</b> List the available SASL server plug-in types. The
SASL plug-in type is selected with 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- <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. 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. fix is built with Cyrus SASL support.
<b>dovecot</b> <b>dovecot</b>
This server plug-in uses the Dovecot authen- This server plug-in uses the Dovecot authen-
tication server, and is available when Post- 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
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
below.
<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
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-
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
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>
command line (in shell language: "").
This feature is available with Postfix 2.3 and This feature is available with Postfix 2.3 and
later. 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
below.
<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
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-
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
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>
command line (in shell language: "").
This feature is available with Postfix 2.3 and
later.
<b>-c</b> <i>config</i><b>_</b><i>dir</i> <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 instead of the default configuration
directory. 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 <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). 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 <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 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 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 quotes to protect special characters and whitespace
on the <a href="postconf.1.html"><b>postconf</b>(1)</a> command line. 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 The <b>-e</b> is no longer needed with Postfix version 2.8
and later. 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> <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. 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. later.
<b>-h</b> Show <a href="postconf.5.html"><b>main.cf</b></a> parameter values without the "<i>name</i> = " <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. 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: methods. Postfix supports the following methods:
<b>flock</b> A kernel-based advisory locking method for <b>flock</b> A kernel-based advisory locking method for
local files only. This locking method is local files only. This locking method is
available on systems with a BSD compatible available on systems with a BSD compatible
library. 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. local and remote files.
<b>dotlock</b> <b>dotlock</b>
An application-level locking method. An An application-level locking method. An
application locks a file named <i>filename</i> by application locks a file named <i>filename</i> by
creating a file named <i>filename</i><b>.lock</b>. The creating a file named <i>filename</i><b>.lock</b>. The
application is expected to remove its own application is expected to remove its own
lock file, as well as stale lock files that lock file, as well as stale lock files that
were left behind after abnormal termination. were left behind after abnormal termination.
<b>-m</b> List the names of all supported lookup table types. <b>-m</b> List the names of all supported lookup table types.
In Postfix configuration files, lookup tables are 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 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 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>- 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. <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- available on systems with support for Berke-
ley DB databases. ley DB databases.
<b>cdb</b> A read-optimized structure with no support <b>cdb</b> A read-optimized structure with no support
for incremental updates. This is available for incremental updates. This is available
on systems with support for CDB databases. on systems with support for CDB databases.
<b>cidr</b> A table that associates values with Class- <b>cidr</b> A table that associates values with Class-
less Inter-Domain Routing (CIDR) patterns. less Inter-Domain Routing (CIDR) patterns.
This is described in <a href="cidr_table.5.html"><b>cidr_table</b>(5)</a>. 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 <b>dbm</b> An indexed file type based on hashing. This
@@ -158,12 +174,12 @@ POSTCONF(1) POSTCONF(1)
<b>environ</b> <b>environ</b>
The UNIX process environment array. The The UNIX process environment array. The
lookup key is the variable name. Originally lookup key is the variable name. Originally
implemented for testing, someone may find implemented for testing, someone may find
this useful someday. this useful someday.
<b>hash</b> An indexed file type based on hashing. This <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. Berkeley DB databases.
<b>internal</b> <b>internal</b>
@@ -171,130 +187,130 @@ POSTCONF(1) POSTCONF(1)
tent are lost when a process terminates. tent are lost when a process terminates.
<b>ldap</b> (read-only) <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>. This is described in <a href="ldap_table.5.html"><b>ldap_table</b>(5)</a>.
<b>mysql</b> (read-only) <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>. This is described in <a href="mysql_table.5.html"><b>mysql_table</b>(5)</a>.
<b>pcre</b> (read-only) <b>pcre</b> (read-only)
A lookup table based on Perl Compatible Reg- 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>. described in <a href="pcre_table.5.html"><b>pcre_table</b>(5)</a>.
<b>pgsql</b> (read-only) <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>. col. This is described in <a href="pgsql_table.5.html"><b>pgsql_table</b>(5)</a>.
<b>proxy</b> (read-only) <b>proxy</b> (read-only)
A lookup table that is implemented via the A lookup table that is implemented via the
Postfix <a href="proxymap.8.html"><b>proxymap</b>(8)</a> service. The table name 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>. syntax is <i>type</i><b>:</b><i>name</i>.
<b>regexp</b> (read-only) <b>regexp</b> (read-only)
A lookup table based on regular expressions. 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>. <a href="regexp_table.5.html"><b>ble</b>(5)</a>.
<b>sdbm</b> An indexed file type based on hashing. This <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. SDBM databases.
<b>sqlite</b> (read-only) <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>. This is described in <a href="sqlite_table.5.html"><b>sqlite_table</b>(5)</a>.
<b>static</b> (read-only) <b>static</b> (read-only)
A table that always returns its name as A table that always returns its name as
lookup result. For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b> lookup result. For example, <b><a href="DATABASE_README.html#types">static</a>:foobar</b>
always returns the string <b>foobar</b> as lookup always returns the string <b>foobar</b> as lookup
result. result.
<b>tcp</b> (read-only) <b>tcp</b> (read-only)
Perform lookups using a simple request-reply 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) <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 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 <a href="postmap.1.html"><b>postmap</b>(1)</a> command before you can use the
file, and that it does not detect changes file, and that it does not detect changes
after the file is read. after the file is read.
<b>unix</b> (read-only) <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 tion database. The following tables are
implemented: implemented:
<b>unix:passwd.byname</b> <b>unix:passwd.byname</b>
The table is the UNIX password data- The table is the UNIX password data-
base. The key is a login name. The base. The key is a login name. The
result is a password file entry in result is a password file entry in
<b>passwd</b>(5) format. <b>passwd</b>(5) format.
<b>unix:group.byname</b> <b>unix:group.byname</b>
The table is the UNIX group database. The table is the UNIX group database.
The key is a group name. The result The key is a group name. The result
is a group file entry in <b>group</b>(5) is a group file entry in <b>group</b>(5)
format. format.
Other table types may exist depending on how Post- Other table types may exist depending on how Post-
fix was built. 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> <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 file contents. Specify <b>-Mf</b> to fold long lines for
human readability. human readability.
If <i>service ...</i> is specified, only the matching ser- If <i>service ...</i> is specified, only the matching ser-
vices will be output. For example, "<b>postconf -Mf</b> vices will be output. For example, "<b>postconf -Mf</b>
<b>inet</b>" will match all services that listen on the <b>inet</b>" will match all services that listen on the
network. network.
Specify zero or more arguments, each with a <i>ser-</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 <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> 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. <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. later.
<b>-n</b> Print <a href="postconf.5.html"><b>main.cf</b></a> parameter settings that are explic- <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 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 long lines for human readability (Postfix 2.9 and
later). later).
<b>-t</b> [<i>template</i><b>_</b><i>file</i>] <b>-t</b> [<i>template</i><b>_</b><i>file</i>]
Display the templates for text that appears at the Display the templates for text that appears at the
beginning of delivery status notification (DSN) beginning of delivery status notification (DSN)
messages, without expanding $<b>name</b> expressions. messages, without expanding $<b>name</b> expressions.
To override the built-in templates, specify a tem- 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- 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 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. 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- 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: ""). command line (in shell language: "").
This feature is available with Postfix 2.3 and This feature is available with Postfix 2.3 and
later. later.
<b>-v</b> Enable verbose logging for debugging purposes. Mul- <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. 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 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 line, so that those parameters revert to their
default values. The file is copied to a temporary default values. The file is copied to a temporary
file then renamed into place. Specify a list of file then renamed into place. Specify a list of
parameter names, not <i>name</i>=<i>value</i> pairs. There is no 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. tion.
This feature is available with Postfix 2.6 and This feature is available with Postfix 2.6 and
later. later.
<b>DIAGNOSTICS</b> <b>DIAGNOSTICS</b>
@@ -305,18 +321,18 @@ POSTCONF(1) POSTCONF(1)
Directory with Postfix configuration files. Directory with Postfix configuration files.
<b>CONFIGURATION PARAMETERS</b> <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. 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. <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> <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. <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> <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. sage templates.
<b>FILES</b> <b>FILES</b>
@@ -332,7 +348,7 @@ POSTCONF(1) POSTCONF(1)
<a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview <a href="DATABASE_README.html">DATABASE_README</a>, Postfix lookup table overview
<b>LICENSE</b> <b>LICENSE</b>
The Secure Mailer license must be distributed with this The Secure Mailer license must be distributed with this
software. software.
<b>AUTHOR(S)</b> <b>AUTHOR(S)</b>

View File

@@ -12,7 +12,7 @@ Postfix configuration utility
\fBManaging main.cf:\fR \fBManaging main.cf:\fR
\fBpostconf\fR [\fB-dfhnv\fR] [\fB-c \fIconfig_dir\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] \fBpostconf\fR [\fB-ev\fR] [\fB-c \fIconfig_dir\fR]
[\fIparameter=value ...\fR] [\fIparameter=value ...\fR]
@@ -90,6 +90,19 @@ This feature is available with Postfix 2.3 and later.
.IP "\fB-c \fIconfig_dir\fR" .IP "\fB-c \fIconfig_dir\fR"
The \fBmain.cf\fR configuration file is in the named directory The \fBmain.cf\fR configuration file is in the named directory
instead of the default configuration 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 .IP \fB-d\fR
Print \fBmain.cf\fR default parameter settings instead of Print \fBmain.cf\fR default parameter settings instead of
actual settings. actual settings.

View File

@@ -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_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; 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 # Hyperlink URLs and RFC documents
s/(http:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/; s/(http:\/\/[^ ,"\(\)]*[^ ,"\(\):;!?.])/<a href="$1">$1<\/a>/;

View File

@@ -284,9 +284,9 @@ increase the smtpd process limit. </p>
open relay. </p> open relay. </p>
<li> <p> Line 11: this increases the time that a policy server <li> <p> Line 11: this increases the time that a policy server
process is allowed to run from the default 1000 seconds to 3600 process may run to 3600 seconds. The default time limit of 1000
seconds. The default time limit is too short for a policy daemon seconds is too short; the policy daemon needs to run long as the
that needs to run long as the SMTP server process that talks to it. SMTP server process that talks to it.
See the spawn(8) manpage for more information about the See the spawn(8) manpage for more information about the
<i>transport</i>_time_limit parameter. </p> <i>transport</i>_time_limit parameter. </p>
@@ -428,9 +428,9 @@ increase the smtpd process limit. </p>
each request and reply. </p> each request and reply. </p>
<li> <p> Line 6: this increases the time that a greylist server <li> <p> Line 6: this increases the time that a greylist server
process is allowed to run from the default 1000 seconds to 3600 process may run to 3600 seconds. The default time limit of 1000
seconds. The default time limit is too short for a greylist daemon seconds is too short; the greylist daemon needs to run long as the
that needs to run long as the SMTP server process that talks to it. SMTP server process that talks to it.
See the spawn(8) manpage for more information about the See the spawn(8) manpage for more information about the
<i>transport</i>_time_limit parameter. </p> <i>transport</i>_time_limit parameter. </p>

View File

@@ -20,7 +20,7 @@
* Patches change both the patchlevel and the release date. Snapshots have no * Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only. * patchlevel; they change the release date only.
*/ */
#define MAIL_RELEASE_DATE "20111127" #define MAIL_RELEASE_DATE "20111129"
#define MAIL_VERSION_NUMBER "2.9" #define MAIL_VERSION_NUMBER "2.9"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@@ -41,7 +41,8 @@ Makefile: Makefile.in
test: $(TESTPROG) test: $(TESTPROG)
tests: test1 test2 test3 test4 test5 test6 test7 test8 test9 test10 test11 \ 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: root_tests:
@@ -284,6 +285,16 @@ test21: $(PROG) test21.ref
diff test21.ref test21.tmp diff test21.ref test21.tmp
rm -f main.cf master.cf 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) printfck: $(OBJS) $(PROG)
rm -rf printfck rm -rf printfck
mkdir printfck mkdir printfck
@@ -322,6 +333,7 @@ postconf.o: ../../include/mail_run.h
postconf.o: ../../include/mail_version.h postconf.o: ../../include/mail_version.h
postconf.o: ../../include/msg.h postconf.o: ../../include/msg.h
postconf.o: ../../include/msg_vstream.h postconf.o: ../../include/msg_vstream.h
postconf.o: ../../include/name_mask.h
postconf.o: ../../include/stringops.h postconf.o: ../../include/stringops.h
postconf.o: ../../include/sys_defs.h postconf.o: ../../include/sys_defs.h
postconf.o: ../../include/vbuf.h postconf.o: ../../include/vbuf.h

View File

@@ -8,7 +8,7 @@
/* \fBManaging main.cf:\fR /* \fBManaging main.cf:\fR
/* /*
/* \fBpostconf\fR [\fB-dfhnv\fR] [\fB-c \fIconfig_dir\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] /* \fBpostconf\fR [\fB-ev\fR] [\fB-c \fIconfig_dir\fR]
/* [\fIparameter=value ...\fR] /* [\fIparameter=value ...\fR]
@@ -84,6 +84,19 @@
/* .IP "\fB-c \fIconfig_dir\fR" /* .IP "\fB-c \fIconfig_dir\fR"
/* The \fBmain.cf\fR configuration file is in the named directory /* The \fBmain.cf\fR configuration file is in the named directory
/* instead of the default configuration 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 /* .IP \fB-d\fR
/* Print \fBmain.cf\fR default parameter settings instead of /* Print \fBmain.cf\fR default parameter settings instead of
/* actual settings. /* actual settings.
@@ -315,6 +328,7 @@
#include <vstring.h> #include <vstring.h>
#include <vstream.h> #include <vstream.h>
#include <stringops.h> #include <stringops.h>
#include <name_mask.h>
/* Global library. */ /* Global library. */
@@ -349,6 +363,13 @@ int main(int argc, char **argv)
struct stat st; struct stat st;
int junk; int junk;
ARGV *ext_argv = 0; 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. * Fingerprint executables and core dumps.
@@ -378,7 +399,7 @@ int main(int argc, char **argv)
/* /*
* Parse JCL. * Parse JCL.
*/ */
while ((ch = GETOPT(argc, argv, "aAbc:deEf#hlmMntv")) > 0) { while ((ch = GETOPT(argc, argv, "aAbc:C:deEf#hlmMntv")) > 0) {
switch (ch) { switch (ch) {
case 'a': case 'a':
cmd_mode |= SHOW_SASL_SERV; cmd_mode |= SHOW_SASL_SERV;
@@ -396,6 +417,10 @@ int main(int argc, char **argv)
if (setenv(CONF_ENV_PATH, optarg, 1) < 0) if (setenv(CONF_ENV_PATH, optarg, 1) < 0)
msg_fatal("out of memory"); msg_fatal("out of memory");
break; break;
case 'C':
param_class = name_mask_opt("-C option", param_class_table,
optarg, NAME_MASK_ANY_CASE | NAME_MASK_FATAL);
break;
case 'd': case 'd':
cmd_mode |= SHOW_DEFS; cmd_mode |= SHOW_DEFS;
break; break;
@@ -446,7 +471,7 @@ int main(int argc, char **argv)
msg_verbose++; msg_verbose++;
break; break;
default: 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 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", * Flag unused parameters. This makes no sense with "postconf -d",

View File

@@ -45,8 +45,15 @@ typedef struct {
} PC_PARAM_NODE; } PC_PARAM_NODE;
/* Values for flags. See the postconf_node module for narrative text. */ /* Values for flags. See the postconf_node module for narrative text. */
#define PC_PARAM_FLAG_NONE (0) #define PC_PARAM_FLAG_RAW (1<<0) /* raw parameter value */
#define PC_PARAM_FLAG_RAW (1<<0) #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) #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 read_parameters(void);
extern void set_parameters(void); extern void set_parameters(void);
extern void show_parameters(int, char **); extern void show_parameters(int, int, char **);
/* /*
* postconf_edit.c * postconf_edit.c

View File

@@ -333,36 +333,39 @@ void register_builtin_parameters(void)
param_table = PC_PARAM_TABLE_CREATE(100); 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++) 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); (char *) ctt, convert_time_parameter);
for (cbt = bool_table; cbt->name; cbt++) 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); (char *) cbt, convert_bool_parameter);
for (cit = int_table; cit->name; cit++) 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); (char *) cit, convert_int_parameter);
for (cst = str_table; cst->name; cst++) 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); (char *) cst, convert_str_parameter);
for (cft = str_fn_table; cft->name; cft++) 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); (char *) cft, convert_str_fn_parameter);
for (cft = str_fn_table_2; cft->name; cft++) 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); (char *) cft, convert_str_fn_parameter);
for (rst = raw_table; rst->name; rst++) 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); (char *) rst, convert_raw_parameter);
for (nst = nint_table; nst->name; nst++) 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); (char *) nst, convert_nint_parameter);
for (bst = nbool_table; bst->name; bst++) 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); (char *) bst, convert_nbool_parameter);
for (lst = long_table; lst->name; lst++) 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); (char *) lst, convert_long_parameter);
} }

View File

@@ -10,8 +10,9 @@
/* /*
/* void set_parameters() /* void set_parameters()
/* /*
/* void show_parameters(mode, names) /* void show_parameters(mode, param_class, names)
/* int mode; /* int mode;
/* int param_class;
/* char **names; /* char **names;
/* DESCRIPTION /* DESCRIPTION
/* read_parameters() reads parameters from main.cf. /* read_parameters() reads parameters from main.cf.
@@ -39,6 +40,16 @@
/* .IP SHOW_EVAL /* .IP SHOW_EVAL
/* Expand parameter values (not implemented). /* Expand parameter values (not implemented).
/* .RE /* .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 /* .IP names
/* List of zero or more parameter names. If the list is empty, /* List of zero or more parameter names. If the list is empty,
/* output all parameters. /* output all parameters.
@@ -225,7 +236,7 @@ static int comp_names(const void *a, const void *b)
/* show_parameters - show parameter info */ /* 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 **list;
PC_PARAM_INFO **ht; PC_PARAM_INFO **ht;
@@ -239,8 +250,9 @@ void show_parameters(int mode, char **names)
list = PC_PARAM_TABLE_LIST(param_table); list = PC_PARAM_TABLE_LIST(param_table);
qsort((char *) list, param_table->used, sizeof(*list), comp_names); qsort((char *) list, param_table->used, sizeof(*list), comp_names);
for (ht = list; *ht; ht++) for (ht = list; *ht; ht++)
print_parameter(mode, PC_PARAM_INFO_NAME(*ht), if (param_class & PC_PARAM_INFO_NODE(*ht)->flags)
PC_PARAM_INFO_NODE(*ht)); print_parameter(mode, PC_PARAM_INFO_NAME(*ht),
PC_PARAM_INFO_NODE(*ht));
myfree((char *) list); myfree((char *) list);
return; return;
} }

View File

@@ -2,7 +2,7 @@
/* NAME /* NAME
/* postconf_service 3 /* postconf_service 3
/* SUMMARY /* SUMMARY
/* service-defined parameter support /* service-defined parameter name support
/* SYNOPSIS /* SYNOPSIS
/* #include <postconf.h> /* #include <postconf.h>
/* /*
@@ -89,16 +89,22 @@ static void register_service_parameter(const char *service, const char *suffix,
const char *defparam) const char *defparam)
{ {
char *name = concatenate(service, suffix, (char *) 0); char *name = concatenate(service, suffix, (char *) 0);
PC_PARAM_NODE *node;
/* /*
* Skip service parameter names that have built-in definitions. This * Skip service parameter names that have built-in definitions. This
* happens with message delivery transports that have a non-default * happens with message delivery transports that have a non-default
* per-destination concurrency or recipient limit, such as local(8). * 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); myfree(name);
} else { } 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); (char *) defparam, convert_service_parameter);
} }
} }

View File

@@ -2,7 +2,7 @@
/* NAME /* NAME
/* postconf_user 3 /* postconf_user 3
/* SUMMARY /* SUMMARY
/* support for user-defined parameters /* support for user-defined parameter names
/* SYNOPSIS /* SYNOPSIS
/* #include <postconf.h> /* #include <postconf.h>
/* /*
@@ -13,11 +13,12 @@
/* space of each master.cf entry. Parameters in local name /* space of each master.cf entry. Parameters in local name
/* spaces take precedence over global parameters. /* 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 /* service-defined (see postconf_service.c), and valid
/* user-defined. /* 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 /* - Parameters whose user-defined-name appears in the value
/* of smtpd_restriction_classes in main.cf or master.cf. /* of smtpd_restriction_classes in main.cf or master.cf.
@@ -28,7 +29,7 @@
/* - In both cases the parameters must have a /* - In both cases the parameters must have a
/* "user-defined-name=value" entry in main.cf or master.cf. /* "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 /* register_user_parameters() scans the global and per-service
/* name spaces for user-defined parameters and flags /* 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 (local_scope && dict_get(local_scope->all_params, mac_name)) {
if (PC_PARAM_TABLE_LOCATE(local_scope->valid_names, mac_name) == 0) if (PC_PARAM_TABLE_LOCATE(local_scope->valid_names, mac_name) == 0)
PC_PARAM_TABLE_ENTER(local_scope->valid_names, mac_name, 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); convert_user_parameter);
} else if (mail_conf_lookup(mac_name) != 0) { } else if (mail_conf_lookup(mac_name) != 0) {
if (PC_PARAM_TABLE_LOCATE(param_table, 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); PC_PARAM_NO_DATA, convert_user_parameter);
} }
return (0); 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 && PC_PARAM_TABLE_LOCATE(local_scope->valid_names, cparam_name) == 0
&& htable_locate(rest_class_table, cparam_name) != 0) && htable_locate(rest_class_table, cparam_name) != 0)
PC_PARAM_TABLE_ENTER(local_scope->valid_names, cparam_name, 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); convert_user_parameter);
/* Skip "do not expand" parameters. */ /* Skip "do not expand" parameters. */
if ((node = PC_PARAM_TABLE_FIND(param_table, cparam_name)) != 0 if ((node = PC_PARAM_TABLE_FIND(param_table, cparam_name)) != 0

View File

@@ -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