2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-29 13:18:12 +00:00

postfix-3.3-20170728

This commit is contained in:
Wietse Venema 2017-07-28 00:00:00 -05:00 committed by Viktor Dukhovni
parent e655208749
commit 5204816be8
15 changed files with 303 additions and 97 deletions

View File

@ -23072,3 +23072,26 @@ Apologies for any names omitted.
Cleanup: don't log the 'delay_dotcrlf' workaround for CISCO Cleanup: don't log the 'delay_dotcrlf' workaround for CISCO
PIX bugs before the smtp_pix_workaround_threshold_time has PIX bugs before the smtp_pix_workaround_threshold_time has
passed. Reported by Ralf Hildebrandt. File: smtp/smtp_proto.c. passed. Reported by Ralf Hildebrandt. File: smtp/smtp_proto.c.
20170727
Cleanup: the postconf command now uses mechanically-generated
lists of DBMS parameter names. This eliminates false positives
with mysql databases. Files: postconf/Makefile.in,
postconf/extract_cfg.sh, postconf/postconf_dbms.c.
Cleanup: removed `#if 0/#endif' dead code from dict_ldap.c,
to avoid spurious output from the extract_cfg.sh parameter name
extraction tool.
20170728
Documentation: added warnings that "enable_original_recipient
= no" prevents Postfix from saving the address verification
result under the original probe destination address, if it
is changed by aliasing or canonical mapping. Files:
proto/ADDRESS_VERIFICATION_README.html, proto/postconf.proto.
Cleanup: don't store an empty address in the verify cache
(this could happen with "enable_original_recipient = no").
File: global/verify.c.

View File

@ -47,11 +47,9 @@ could include the Postfix MTA itself, or some remote MTAs (SMTP interruptus).
Probe messages are like normal mail, except that they are never delivered, Probe messages are like normal mail, except that they are never delivered,
deferred or bounced; probe messages are always discarded. deferred or bounced; probe messages are always discarded.
probe Postfix probe Postfix
message -> mail message -> mail
queue Postfix Postfix -> queue
Postfix Postfix ->
Internet -> SMTP <-> verify Internet -> SMTP <-> verify
server server | server server |
v v
@ -62,7 +60,6 @@ deferred or bounced; probe messages are always discarded.
^ ^
| |
v v
Address Address
verification verification
@ -167,6 +164,11 @@ same address repeatedly.
# Postfix 2.6 and later privacy feature. # Postfix 2.6 and later privacy feature.
# unverified_recipient_reject_reason = Address lookup failed # unverified_recipient_reject_reason = Address lookup failed
# Do not set enable_original_recipient=no. This prevents Postfix
# from saving the recipient address verification result under
# the original address, when the address verification probe
# message goes through address aliasing or canonical mapping.
The "reject_unknown_recipient_domain" restriction blocks mail for non-existent The "reject_unknown_recipient_domain" restriction blocks mail for non-existent
domains. Putting this before "reject_unverified_recipient" avoids the overhead domains. Putting this before "reject_unverified_recipient" avoids the overhead
of generating unnecessary probe messages. of generating unnecessary probe messages.
@ -207,6 +209,11 @@ verification for specific domains that often appear in forged email.
# Note 2: Avoid hash files here. Use btree or lmdb instead. # Note 2: Avoid hash files here. Use btree or lmdb instead.
address_verify_map = btree:/var/lib/postfix/verify address_verify_map = btree:/var/lib/postfix/verify
# Do not set enable_original_recipient=no. This prevents Postfix
# from saving the sender address verification result under the
# original address, when the address verification probe message
# goes through address aliasing or canonical mapping.
/etc/postfix/sender_access: /etc/postfix/sender_access:
# Don't do this when you handle lots of email. # Don't do this when you handle lots of email.
aol.com reject_unverified_sender aol.com reject_unverified_sender

View File

@ -27,7 +27,8 @@ Wish list:
with a compatibility_level safety net. with a compatibility_level safety net.
In the bounce daemon, set util_utf8_enable if returning an In the bounce daemon, set util_utf8_enable if returning an
SMTPUTF8 message. SMTPUTF8 message. This is wrong; if SMTPUTF8 is disabled,
then Postfix must not turn it on.
Add a header_body_checks extension callback in smtp_proto.c Add a header_body_checks extension callback in smtp_proto.c
that implements the PASS action. that implements the PASS action.

View File

@ -298,6 +298,11 @@ the same address repeatedly. </p>
... ...
# Postfix 2.6 and later privacy feature. # Postfix 2.6 and later privacy feature.
# <a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> = Address lookup failed # <a href="postconf.5.html#unverified_recipient_reject_reason">unverified_recipient_reject_reason</a> = Address lookup failed
# Do not set <a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a>=no. This prevents Postfix
# from saving the recipient address verification result under
# the original address, when the address verification probe
# message goes through address aliasing or canonical mapping.
</pre> </pre>
</blockquote> </blockquote>
@ -348,6 +353,11 @@ in forged email. </p>
# Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below! # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below!
# Note 2: Avoid hash files here. Use btree or lmdb instead. # Note 2: Avoid hash files here. Use btree or lmdb instead.
<a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="DATABASE_README.html#types">btree</a>:/var/lib/postfix/verify <a href="postconf.5.html#address_verify_map">address_verify_map</a> = <a href="DATABASE_README.html#types">btree</a>:/var/lib/postfix/verify
# Do not set <a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a>=no. This prevents Postfix
# from saving the sender address verification result under the
# original address, when the address verification probe message
# goes through address aliasing or canonical mapping.
/etc/postfix/sender_access: /etc/postfix/sender_access:
# Don't do this when you handle lots of email. # Don't do this when you handle lots of email.

View File

@ -3203,22 +3203,39 @@ name changes. </p>
<DT><b><a name="enable_original_recipient">enable_original_recipient</a> <DT><b><a name="enable_original_recipient">enable_original_recipient</a>
(default: yes)</b></DT><DD> (default: yes)</b></DT><DD>
<p> Enable support for the X-Original-To message header. This header <p> Enable support to save the original address if a recipient address
is needed for multi-recipient mailboxes. </p> is rewritten to a different address (for example with an alias or with
canonical mapping). </p>
<p> When this parameter is set to yes, the <a href="cleanup.8.html">cleanup(8)</a> daemon performs <p> The original recipient address is used as follows: </p>
duplicate elimination on distinct pairs of (original recipient,
rewritten recipient), and generates non-empty original recipient
queue file records. </p>
<p> When this parameter is set to no, the <a href="cleanup.8.html">cleanup(8)</a> daemon performs <dl>
<dt> X-Original-To message header </dt> <dd> When this parameter
is set to <b>yes</b>, the original recipient address is stored in
the X-Original-To message header. This header is needed to distinguish
between different recipients that share the same mailbox. </dd>
<dt> Recipient deduplication </dt> <dd> When this parameter is set
to <b>yes</b>, the <a href="cleanup.8.html">cleanup(8)</a> daemon performs duplicate elimination
on distinct pairs of (original recipient, rewritten recipient), and
generates non-empty original recipient queue file records. When
this parameter is set to <b>no</b>, the <a href="cleanup.8.html">cleanup(8)</a> daemon performs
duplicate elimination on the rewritten recipient address only, and duplicate elimination on the rewritten recipient address only, and
generates empty original recipient queue file records. </p> generates empty original recipient queue file records. </dd>
<p> This feature is available in Postfix 2.1 and later. With Postfix <dt>Address verification </dt> <dd> When this parameter is set to
version 2.0, support for the X-Original-To message header is always turned <b>yes</b>, an addres verification result is stored under both the
on. Postfix versions before 2.0 have no support for the X-Original-To original and the final recipient address. When this parameter is
message header. </p> set to <b>no</b>, an address verification result is stored only
under the final recipient address. </dd>
</ul>
<p> This feature is available in Postfix 2.1 and later. Postfix
version 2.0 behaves as if this parameter is always set to <b>yes</b>.
Postfix versions before 2.0 have no support for the original recipient
address. </p>
</DD> </DD>
@ -15258,8 +15275,9 @@ numerical response code when an address probe failed due to a
temporary problem (default: 450). <br> The temporary problem (default: 450). <br> The
<a href="postconf.5.html#unverified_recipient_tempfail_action">unverified_recipient_tempfail_action</a> parameter specifies the action <a href="postconf.5.html#unverified_recipient_tempfail_action">unverified_recipient_tempfail_action</a> parameter specifies the action
after address probe failure due to a temporary problem (default: after address probe failure due to a temporary problem (default:
<a href="postconf.5.html#defer_if_permit">defer_if_permit</a>). <br> This feature is available in Postfix 2.1 <a href="postconf.5.html#defer_if_permit">defer_if_permit</a>). <br> This feature breaks for aliased addresses
and later. </dd> when <a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a> is set to "no". <br> This feature
is available in Postfix 2.1 and later. </dd>
</dl> </dl>
@ -16002,8 +16020,9 @@ change into 550 when you are confident that it is safe to do so).
code when an address probe failed due to a temporary problem code when an address probe failed due to a temporary problem
(default: 450). <br> The <a href="postconf.5.html#unverified_sender_tempfail_action">unverified_sender_tempfail_action</a> parameter (default: 450). <br> The <a href="postconf.5.html#unverified_sender_tempfail_action">unverified_sender_tempfail_action</a> parameter
specifies the action after address probe failure due to a temporary specifies the action after address probe failure due to a temporary
problem (default: <a href="postconf.5.html#defer_if_permit">defer_if_permit</a>). <br> This feature is available problem (default: <a href="postconf.5.html#defer_if_permit">defer_if_permit</a>). <br> This feature breaks for
in Postfix 2.1 and later. </dd> aliased addresses when <a href="postconf.5.html#enable_original_recipient">enable_original_recipient</a> is set to "no".
<br> This feature is avaiable in Postfix 2.1 and later. </dd>
</dl> </dl>

View File

@ -1,5 +1,8 @@
#!/bin/sh #!/bin/sh
# To view the formatted manual page of this file, type:
# POSTFIXSOURCE/mantools/srctoman - makedefs | nroff -man
#++ #++
# NAME # NAME
# makedefs 1 # makedefs 1

View File

@ -2007,22 +2007,39 @@ name changes.
.PP .PP
This feature is available in Postfix 2.9 and later. This feature is available in Postfix 2.9 and later.
.SH enable_original_recipient (default: yes) .SH enable_original_recipient (default: yes)
Enable support for the X\-Original\-To message header. This header Enable support to save the original address if a recipient address
is needed for multi\-recipient mailboxes. is rewritten to a different address (for example with an alias or with
canonical mapping).
.PP .PP
When this parameter is set to yes, the \fBcleanup\fR(8) daemon performs The original recipient address is used as follows:
duplicate elimination on distinct pairs of (original recipient, .IP "X\-Original\-To message header"
rewritten recipient), and generates non\-empty original recipient When this parameter
queue file records. is set to \fByes\fR, the original recipient address is stored in
.PP the X\-Original\-To message header. This header is needed to distinguish
When this parameter is set to no, the \fBcleanup\fR(8) daemon performs between different recipients that share the same mailbox.
.br
.IP "Recipient deduplication"
When this parameter is set
to \fByes\fR, the \fBcleanup\fR(8) daemon performs duplicate elimination
on distinct pairs of (original recipient, rewritten recipient), and
generates non\-empty original recipient queue file records. When
this parameter is set to \fBno\fR, the \fBcleanup\fR(8) daemon performs
duplicate elimination on the rewritten recipient address only, and duplicate elimination on the rewritten recipient address only, and
generates empty original recipient queue file records. generates empty original recipient queue file records.
.br
.IP "Address verification"
When this parameter is set to
\fByes\fR, an addres verification result is stored under both the
original and the final recipient address. When this parameter is
set to \fBno\fR, an address verification result is stored only
under the final recipient address.
.br
.br
.PP .PP
This feature is available in Postfix 2.1 and later. With Postfix This feature is available in Postfix 2.1 and later. Postfix
version 2.0, support for the X\-Original\-To message header is always turned version 2.0 behaves as if this parameter is always set to \fByes\fR.
on. Postfix versions before 2.0 have no support for the X\-Original\-To Postfix versions before 2.0 have no support for the original recipient
message header. address.
.SH error_notice_recipient (default: postmaster) .SH error_notice_recipient (default: postmaster)
The recipient of postmaster notifications about mail delivery The recipient of postmaster notifications about mail delivery
problems that are caused by policy, resource, software or protocol problems that are caused by policy, resource, software or protocol
@ -10254,8 +10271,11 @@ unverified_recipient_tempfail_action parameter specifies the action
after address probe failure due to a temporary problem (default: after address probe failure due to a temporary problem (default:
defer_if_permit). defer_if_permit).
.br .br
This feature is available in Postfix 2.1 This feature breaks for aliased addresses
and later. when enable_original_recipient is set to "no".
.br
This feature
is available in Postfix 2.1 and later.
.br .br
.br .br
.PP .PP
@ -10834,8 +10854,10 @@ The unverified_sender_tempfail_action parameter
specifies the action after address probe failure due to a temporary specifies the action after address probe failure due to a temporary
problem (default: defer_if_permit). problem (default: defer_if_permit).
.br .br
This feature is available This feature breaks for
in Postfix 2.1 and later. aliased addresses when enable_original_recipient is set to "no".
.br
This feature is avaiable in Postfix 2.1 and later.
.br .br
.br .br
.PP .PP

View File

@ -298,6 +298,11 @@ the same address repeatedly. </p>
... ...
# Postfix 2.6 and later privacy feature. # Postfix 2.6 and later privacy feature.
# unverified_recipient_reject_reason = Address lookup failed # unverified_recipient_reject_reason = Address lookup failed
# Do not set enable_original_recipient=no. This prevents Postfix
# from saving the recipient address verification result under
# the original address, when the address verification probe
# message goes through address aliasing or canonical mapping.
</pre> </pre>
</blockquote> </blockquote>
@ -348,6 +353,11 @@ in forged email. </p>
# Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below! # Note 1: Be sure to read the "<a href="#caching">Caching</a>" section below!
# Note 2: Avoid hash files here. Use btree or lmdb instead. # Note 2: Avoid hash files here. Use btree or lmdb instead.
address_verify_map = btree:/var/lib/postfix/verify address_verify_map = btree:/var/lib/postfix/verify
# Do not set enable_original_recipient=no. This prevents Postfix
# from saving the sender address verification result under the
# original address, when the address verification probe message
# goes through address aliasing or canonical mapping.
/etc/postfix/sender_access: /etc/postfix/sender_access:
# Don't do this when you handle lots of email. # Don't do this when you handle lots of email.

View File

@ -1402,22 +1402,39 @@ for showq(8) queue displays. </p>
%PARAM enable_original_recipient yes %PARAM enable_original_recipient yes
<p> Enable support for the X-Original-To message header. This header <p> Enable support to save the original address if a recipient address
is needed for multi-recipient mailboxes. </p> is rewritten to a different address (for example with an alias or with
canonical mapping). </p>
<p> When this parameter is set to yes, the cleanup(8) daemon performs <p> The original recipient address is used as follows: </p>
duplicate elimination on distinct pairs of (original recipient,
rewritten recipient), and generates non-empty original recipient
queue file records. </p>
<p> When this parameter is set to no, the cleanup(8) daemon performs <dl>
<dt> X-Original-To message header </dt> <dd> When this parameter
is set to <b>yes</b>, the original recipient address is stored in
the X-Original-To message header. This header is needed to distinguish
between different recipients that share the same mailbox. </dd>
<dt> Recipient deduplication </dt> <dd> When this parameter is set
to <b>yes</b>, the cleanup(8) daemon performs duplicate elimination
on distinct pairs of (original recipient, rewritten recipient), and
generates non-empty original recipient queue file records. When
this parameter is set to <b>no</b>, the cleanup(8) daemon performs
duplicate elimination on the rewritten recipient address only, and duplicate elimination on the rewritten recipient address only, and
generates empty original recipient queue file records. </p> generates empty original recipient queue file records. </dd>
<p> This feature is available in Postfix 2.1 and later. With Postfix <dt>Address verification </dt> <dd> When this parameter is set to
version 2.0, support for the X-Original-To message header is always turned <b>yes</b>, an addres verification result is stored under both the
on. Postfix versions before 2.0 have no support for the X-Original-To original and the final recipient address. When this parameter is
message header. </p> set to <b>no</b>, an address verification result is stored only
under the final recipient address. </dd>
</ul>
<p> This feature is available in Postfix 2.1 and later. Postfix
version 2.0 behaves as if this parameter is always set to <b>yes</b>.
Postfix versions before 2.0 have no support for the original recipient
address. </p>
%PARAM export_environment see "postconf -d" output %PARAM export_environment see "postconf -d" output
@ -6121,8 +6138,9 @@ numerical response code when an address probe failed due to a
temporary problem (default: 450). <br> The temporary problem (default: 450). <br> The
unverified_recipient_tempfail_action parameter specifies the action unverified_recipient_tempfail_action parameter specifies the action
after address probe failure due to a temporary problem (default: after address probe failure due to a temporary problem (default:
defer_if_permit). <br> This feature is available in Postfix 2.1 defer_if_permit). <br> This feature breaks for aliased addresses
and later. </dd> when enable_original_recipient is set to "no". <br> This feature
is available in Postfix 2.1 and later. </dd>
</dl> </dl>
@ -6590,8 +6608,9 @@ change into 550 when you are confident that it is safe to do so).
code when an address probe failed due to a temporary problem code when an address probe failed due to a temporary problem
(default: 450). <br> The unverified_sender_tempfail_action parameter (default: 450). <br> The unverified_sender_tempfail_action parameter
specifies the action after address probe failure due to a temporary specifies the action after address probe failure due to a temporary
problem (default: defer_if_permit). <br> This feature is available problem (default: defer_if_permit). <br> This feature breaks for
in Postfix 2.1 and later. </dd> aliased addresses when enable_original_recipient is set to "no".
<br> This feature is avaiable in Postfix 2.1 and later. </dd>
</dl> </dl>

View File

@ -1352,10 +1352,10 @@ static const char *dict_ldap_lookup(DICT *dict, const char *name)
* Optionally fold the key. * Optionally fold the key.
*/ */
if (dict->flags & DICT_FLAG_FOLD_FIX) { if (dict->flags & DICT_FLAG_FOLD_FIX) {
if (dict->fold_buf == 0) if (dict->fold_buf == 0)
dict->fold_buf = vstring_alloc(10); dict->fold_buf = vstring_alloc(10);
vstring_strcpy(dict->fold_buf, name); vstring_strcpy(dict->fold_buf, name);
name = lowercase(vstring_str(dict->fold_buf)); name = lowercase(vstring_str(dict->fold_buf));
} }
/* /*
@ -1770,17 +1770,9 @@ DICT *dict_ldap_open(const char *ldapsource, int open_flags, int dict_flags)
* set. * set.
*/ */
dict_ldap->timeout = cfg_get_int(dict_ldap->parser, "timeout", 10, 0, 0); dict_ldap->timeout = cfg_get_int(dict_ldap->parser, "timeout", 10, 0, 0);
dict_ldap->query =
#if 0 /* No benefit from changing cfg_get_str(dict_ldap->parser, "query_filter",
* this to match the "(mailacceptinggeneralid=%s)", 0, 0);
* MySQL/PGSQL syntax */
if ((dict_ldap->query =
cfg_get_str(dict_ldap->parser, "query", 0, 0, 0)) == 0)
#endif
dict_ldap->query =
cfg_get_str(dict_ldap->parser, "query_filter",
"(mailacceptinggeneralid=%s)", 0, 0);
if ((dict_ldap->result_format = if ((dict_ldap->result_format =
cfg_get_str(dict_ldap->parser, "result_format", 0, 0, 0)) == 0) cfg_get_str(dict_ldap->parser, "result_format", 0, 0, 0)) == 0)
dict_ldap->result_format = dict_ldap->result_format =

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 "20170722" #define MAIL_RELEASE_DATE "20170728"
#define MAIL_VERSION_NUMBER "3.3" #define MAIL_VERSION_NUMBER "3.3"
#ifdef SNAPSHOT #ifdef SNAPSHOT

View File

@ -100,12 +100,12 @@ int verify_append(const char *queue_id, MSG_STATS *stats,
* XXX vrfy_stat is competely redundant because of dsn. * XXX vrfy_stat is competely redundant because of dsn.
*/ */
if (var_verify_neg_cache || vrfy_stat == DEL_RCPT_STAT_OK) { if (var_verify_neg_cache || vrfy_stat == DEL_RCPT_STAT_OK) {
req_stat = verify_clnt_update(recipient->orig_addr, vrfy_stat, req_stat = verify_clnt_update(recipient->address, vrfy_stat,
my_dsn.reason); my_dsn.reason);
/* Two verify updates for one verify request! */ /* Two verify updates for one verify request! */
if (req_stat == VRFY_STAT_OK if (req_stat == VRFY_STAT_OK && recipient->orig_addr[0]
&& strcasecmp_utf8(recipient->address, recipient->orig_addr) != 0) && strcasecmp_utf8(recipient->address, recipient->orig_addr) != 0)
req_stat = verify_clnt_update(recipient->address, vrfy_stat, req_stat = verify_clnt_update(recipient->orig_addr, vrfy_stat,
my_dsn.reason); my_dsn.reason);
} else { } else {
my_dsn.action = "undeliverable-but-not-cached"; my_dsn.action = "undeliverable-but-not-cached";

View File

@ -15,7 +15,9 @@ TESTPROG=
MAKES = bool_table.h bool_vars.h int_table.h int_vars.h str_table.h \ MAKES = bool_table.h bool_vars.h int_table.h int_vars.h str_table.h \
str_vars.h time_table.h time_vars.h raw_table.h raw_vars.h \ str_vars.h time_table.h time_vars.h raw_table.h raw_vars.h \
nint_table.h nint_vars.h nbool_table.h nbool_vars.h long_table.h \ nint_table.h nint_vars.h nbool_table.h nbool_vars.h long_table.h \
long_vars.h str_fn_table.h str_fn_vars.h long_vars.h str_fn_table.h str_fn_vars.h
DB_MAKES= pcf_ldap_suffixes.h pcf_memcache_suffixes.h pcf_mysql_suffixes.h \
pcf_pgsql_suffixes.h pcf_sqlite_suffixes.h
TEST_TMP= main.cf master.cf test*.tmp TEST_TMP= main.cf master.cf test*.tmp
DUMMIES = makes_dummy # for "make -j" DUMMIES = makes_dummy # for "make -j"
PROG = postconf PROG = postconf
@ -67,6 +69,22 @@ makes_dummy: $(INC_DIR)/mail_params.h ../global/mail_params.c extract.awk Makefi
$(AWK) -f extract.awk ../*/*.c | $(SHELL) $(AWK) -f extract.awk ../*/*.c | $(SHELL)
touch makes_dummy touch makes_dummy
$(DB_MAKES): extract_cfg.sh Makefile.in
pcf_ldap_suffixes.h: ../global/dict_ldap.c
sh extract_cfg.sh -d ../global/dict_ldap.c > $@
pcf_memcache_suffixes.h: ../global/dict_memcache.c
sh extract_cfg.sh -d ../global/dict_memcache.c > $@
pcf_mysql_suffixes.h: ../global/dict_mysql.c
sh extract_cfg.sh -d -s ../global/dict_mysql.c > $@
pcf_pgsql_suffixes.h: ../global/dict_pgsql.c
sh extract_cfg.sh -d -s ../global/dict_pgsql.c > $@
pcf_sqlite_suffixes.h: ../global/dict_sqlite.c
sh extract_cfg.sh -d -s ../global/dict_sqlite.c > $@
# Define two parameters with smtpd_restriction_classes. One will be ignored. # Define two parameters with smtpd_restriction_classes. One will be ignored.
@ -899,7 +917,7 @@ lint:
clean: clean:
rm -f *.o *core $(PROG) $(TESTPROG) junk $(MAKES) $(AUTOS) $(DUMMIES) \ rm -f *.o *core $(PROG) $(TESTPROG) junk $(MAKES) $(AUTOS) $(DUMMIES) \
$(TEST_TMP) $(TEST_TMP) $(DB_MAKES)
rm -rf printfck rm -rf printfck
tidy: clean tidy: clean
@ -1009,8 +1027,13 @@ postconf_dbms.o: ../../include/sys_defs.h
postconf_dbms.o: ../../include/vbuf.h postconf_dbms.o: ../../include/vbuf.h
postconf_dbms.o: ../../include/vstream.h postconf_dbms.o: ../../include/vstream.h
postconf_dbms.o: ../../include/vstring.h postconf_dbms.o: ../../include/vstring.h
postconf_dbms.o: postconf.h postconf_dbms.o: pcf_ldap_suffixes.h
postconf_dbms.o: pcf_memcache_suffixes.h
postconf_dbms.o: pcf_mysql_suffixes.h
postconf_dbms.o: pcf_pgsql_suffixes.h
postconf_dbms.o: postconf_dbms.c postconf_dbms.o: postconf_dbms.c
postconf_dbms.o: postconf.h
postconf_dbms.o: pcf_sqlite_suffixes.h
postconf_edit.o: ../../include/argv.h postconf_edit.o: ../../include/argv.h
postconf_edit.o: ../../include/check_arg.h postconf_edit.o: ../../include/check_arg.h
postconf_edit.o: ../../include/dict.h postconf_edit.o: ../../include/dict.h
@ -1029,8 +1052,8 @@ postconf_edit.o: ../../include/vbuf.h
postconf_edit.o: ../../include/vstream.h postconf_edit.o: ../../include/vstream.h
postconf_edit.o: ../../include/vstring.h postconf_edit.o: ../../include/vstring.h
postconf_edit.o: ../../include/vstring_vstream.h postconf_edit.o: ../../include/vstring_vstream.h
postconf_edit.o: postconf.h
postconf_edit.o: postconf_edit.c postconf_edit.o: postconf_edit.c
postconf_edit.o: postconf.h
postconf_lookup.o: ../../include/argv.h postconf_lookup.o: ../../include/argv.h
postconf_lookup.o: ../../include/check_arg.h postconf_lookup.o: ../../include/check_arg.h
postconf_lookup.o: ../../include/dict.h postconf_lookup.o: ../../include/dict.h

View File

@ -0,0 +1,89 @@
#!/bin/sh
# To view the formatted manual page of this file, type:
# POSTFIXSOURCE/mantools/srctoman - extract_cfg.sh | nroff -man
#++
# NAME
# extract_cfg 1
# SUMMARY
# extract database parameter names from cfg_get_xxx() calls
# SYNOPSIS
# \fBextract_cfg [-d|-s] [\fIfile...\fB]\fR
# DESCRIPTION
# The \fBextract_cfg\fR command extracts the parameter names
# from cfg_get_{str,int,bool}() calls in dict_xxx.c files. The
# output is one parameter name per line, formatted as a C string
# followed by comma.
#
# Options:
# .IP \fB-d\fR
# Add the "domain" parameter to the output. This is used by
# the LDAP, memcache, and *SQL* tables.
# .IP \fB-s\fR
# Add the legacy SQL query parameters: "select_field", "table",
# "where_field", and "additional_conditions".
# LICENSE
# .ad
# .fi
# The Secure Mailer license must be distributed with this software.
# HISTORY
# .ad
# .fi
# This command was introduced with Postfix 3.3.
# AUTHOR(S)
# Wietse Venema
# Google, Inc.
# 111 8th Avenue
# New York, NY 10011, USA
#--
# Flags to add db_common parameter names.
add_legacy_sql_query_params=
add_domain_param=
# Parse JCL.
while :
do
case "$1" in
-d) add_domain_param=1;;
-s) add_legacy_sql_query_params=1;;
-*) echo Bad option: $1 1>&2; exit 1;;
*) break;;
esac
shift
done
# We use m4 macros to extract arguments from cfg_get_xxx() calls that
# may span multiple lines. We sandwich information of interest between
# control-A characters. Multiple cfg_get_xxx() calls on the same line
# should be OK, as long as the calls don't nest.
(
cat <<'EOF'
define(`cfg_get_str',`$2
')dnl
define(`cfg_get_int',`$2
')dnl
define(`cfg_get_bool',`$2
')dnl
EOF
# Convert selected C macro definitions into m4 macro definitions.
sed 's/^#define[ ]*\([DICT_MC_NAME_A-Za-z0-9_]*\)[ ]*\("[^"]*"\)/define(`\1'"'"',`\2'"'"')/' "$@"
) | m4 | awk -F '// { print $2 }' | (
test -n "$add_domain_param" && {
cat <<EOF
"domain"
EOF
}
test -n "$add_legacy_sql_query_params" && {
cat <<EOF
"table"
"select_field"
"where_field"
"additional_conditions"
EOF
}
cat -
) | sort -u | sed 's/$/,/'

View File

@ -91,48 +91,36 @@
/* See ldap_table(5). */ /* See ldap_table(5). */
static const char *pcf_ldap_suffixes[] = { static const char *pcf_ldap_suffixes[] = {
"bind", "bind_dn", "bind_pw", "cache", "cache_expiry", "cache_size", #include "pcf_ldap_suffixes.h"
"chase_referrals", "debuglevel", "dereference", "domain", 0,
"expansion_limit", "leaf_result_attribute", "query_filter",
"recursion_limit", "result_attribute", "result_format",
"sasl_authz_id", "sasl_mechs", "sasl_minssf", "sasl_realm",
"scope", "search_base", "server_host", "server_port", "size_limit",
"special_result_attribute", "start_tls", "terminal_result_attribute",
"timeout", "tls_ca_cert_dir", "tls_ca_cert_file", "tls_cert",
"tls_cipher_suite", "tls_key", "tls_random_file", "tls_require_cert",
"version", 0,
}; };
/* See mysql_table(5). */ /* See mysql_table(5). */
static const char *pcf_mysql_suffixes[] = { static const char *pcf_mysql_suffixes[] = {
"additional_conditions", "dbname", "domain", "expansion_limit", #include "pcf_mysql_suffixes.h"
"hosts", "password", "query", "result_format", "require_result_set", 0,
"select_field", "table", "user", "where_field", 0,
}; };
/* See pgsql_table(5). */ /* See pgsql_table(5). */
static const char *pcf_pgsql_suffixes[] = { static const char *pcf_pgsql_suffixes[] = {
"additional_conditions", "dbname", "domain", "expansion_limit", #include "pcf_pgsql_suffixes.h"
"hosts", "password", "query", "result_format", "select_field", 0,
"select_function", "table", "user", "where_field", 0,
}; };
/* See sqlite_table(5). */ /* See sqlite_table(5). */
static const char *pcf_sqlite_suffixes[] = { static const char *pcf_sqlite_suffixes[] = {
"additional_conditions", "dbpath", "domain", "expansion_limit", #include "pcf_sqlite_suffixes.h"
"query", "result_format", "select_field", "table", "where_field",
0, 0,
}; };
/* See memcache_table(5). */ /* See memcache_table(5). */
static const char *pcf_memcache_suffixes[] = { static const char *pcf_memcache_suffixes[] = {
"backup", "data_size_limit", "domain", "flags", "key_format", #include "pcf_memcache_suffixes.h"
"line_size_limit", "max_try", "memcache", "retry_pause", 0,
"timeout", "ttl", 0,
}; };
/* /*