Cleanup: added inet_prefix_top() tests. File:
util/inet_prefix_top.c.
+
+20230413
+
+ Cleanup: in postconf source, removed redundant pcf_set_config_dir()
+ calls as these are made automatically when a config file
+ pathname cache is queried. Files: postconf/postconf_edit.c,
+ postconf/postconf_main.c, postconf/postconf_master.c.
+
+ Cleanup: in source-code comments, replaced redundant (and
+ sometimes incomplete) lookup table configuration info with
+ a reference to the corresponding *_table(5) manpage.
Viktor Dukhovni
- Wietse Venema
-
POSTTLS-FINGER(1)
</pre> </body> </html>
New York, NY 10011, USA
Viktor Dukhovni
-
-Wietse Venema
/* .IP dummy
/* Not used; this argument exists only for compatibility with
/* the dict_open(3) interface.
-/* .PP
-/* Configuration parameters:
-/* .IP server_host
-/* List of hosts at which all LDAP queries are directed.
-/* The host names can also be LDAP URLs if the LDAP client library used
-/* is OpenLDAP.
-/* .IP server_port
-/* The port the LDAP server listens on.
-/* .IP search_base
-/* The LDAP search base, for example: \fIO=organization name, C=country\fR.
-/* .IP domain
-/* If specified, only lookups ending in this value will be queried.
-/* This can significantly reduce the query load on the LDAP server.
-/* .IP timeout
-/* Deadline for LDAP open() and LDAP search() .
-/* .IP query_filter
-/* The search filter template used to search for directory entries,
-/* for example \fI(mailacceptinggeneralid=%s)\fR. See ldap_table(5)
-/* for details.
-/* .IP result_format
-/* The result template used to expand results from queries. Default
-/* is \fI%s\fR. See ldap_table(5) for details. Also supported under
-/* the name \fIresult_filter\fR for compatibility with older releases.
-/* .IP result_attribute
-/* The attribute(s) returned by the search, in which to find
-/* RFC822 addresses, for example \fImaildrop\fR.
-/* .IP special_result_attribute
-/* The attribute(s) of directory entries that can contain DNs or URLs.
-/* If found, a recursive subsequent search is done using their values.
-/* .IP leaf_result_attribute
-/* These are only returned for "leaf" LDAP entries, i.e. those that are
-/* not "terminal" and have no values for any of the "special" result
-/* attributes.
-/* .IP terminal_result_attribute
-/* If found, the LDAP entry is considered a terminal LDAP object, not
-/* subject to further direct or recursive expansion. Only the terminal
-/* result attributes are returned.
-/* .IP scope
-/* LDAP search scope: sub, base, or one.
-/* .IP bind
-/* Whether or not to bind to the server -- LDAP v3 implementations don't
-/* require it, which saves some overhead.
-/* .IP bind_dn
-/* If you must bind to the server, do it with this distinguished name ...
-/* .IP bind_pw
-/* \&... and this password.
-/* .IP cache (no longer supported)
-/* Whether or not to turn on client-side caching.
-/* .IP cache_expiry (no longer supported)
-/* If you do cache results, expire them after this many seconds.
-/* .IP cache_size (no longer supported)
-/* The cache size in bytes. Does nothing if the cache is off, of course.
-/* .IP recursion_limit
-/* Maximum recursion depth when expanding DN or URL references.
-/* Queries which exceed the recursion limit fail with
-/* dict->error = DICT_ERR_RETRY.
-/* .IP expansion_limit
-/* Limit (if any) on the total number of lookup result values. Lookups which
-/* exceed the limit fail with dict->error=DICT_ERR_RETRY. Note that
-/* each value of a multivalued result attribute counts as one result.
-/* .IP size_limit
-/* Limit on the number of entries returned by individual LDAP queries.
-/* Queries which exceed the limit fail with dict->error=DICT_ERR_RETRY.
-/* This is an *entry* count, for any single query performed during the
-/* possibly recursive lookup.
-/* .IP chase_referrals
-/* Controls whether LDAP referrals are obeyed.
-/* .IP dereference
-/* How to handle LDAP aliases. See ldap.h or ldap_open(3) man page.
-/* .IP version
-/* Specifies the LDAP protocol version to use. Default is version
-/* \fI2\fR.
-/* .IP "\fBsasl_mechs (empty)\fR"
-/* Specifies a space-separated list of LDAP SASL Mechanisms.
-/* .IP "\fBsasl_realm (empty)\fR"
-/* The realm to use for SASL binds.
-/* .IP "\fBsasl_authz_id (empty)\fR"
-/* The SASL Authorization Identity to assert.
-/* .IP "\fBsasl_minssf (0)\fR"
-/* The minimum SASL SSF to allow.
-/* .IP start_tls
-/* Whether or not to issue STARTTLS upon connection to the server.
-/* At this time, STARTTLS and LDAP SSL are only available if the
-/* LDAP client library used is OpenLDAP. Default is \fIno\fR.
-/* .IP tls_ca_cert_file
-/* File containing certificates for all of the X509 Certification
-/* Authorities the client will recognize. Takes precedence over
-/* tls_ca_cert_dir.
-/* .IP tls_ca_cert_dir
-/* Directory containing X509 Certification Authority certificates
-/* in separate individual files.
-/* .IP tls_cert
-/* File containing client's X509 certificate.
-/* .IP tls_key
-/* File containing the private key corresponding to
-/* tls_cert.
-/* .IP tls_require_cert
-/* Whether or not to request server's X509 certificate and check its
-/* validity. The value "no" means don't check the cert trust chain
-/* and (OpenLDAP 2.1+) don't check the peername. The value "yes" means
-/* check both the trust chain and the peername (with OpenLDAP <= 2.0.11,
-/* the peername checks use the reverse hostname from the LDAP servers's
-/* IP address, not the user supplied servername).
-/* .IP tls_random_file
-/* Path of a file to obtain random bits from when /dev/[u]random is
-/* not available. Generally set to the name of the EGD/PRNGD socket.
-/* .IP tls_cipher_suite
-/* Cipher suite to use in SSL/TLS negotiations.
-/* .IP debuglevel
-/* Debug level. See 'loglevel' option in slapd.conf(5) man page.
-/* Currently only in openldap libraries (and derivatives).
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* ldap_table(5) LDAP client configuration
/* AUTHOR(S)
/* Prabhat K Singh
/* VSNL, Bombay, India.
/* John Hensley
/* john@sunislelodge.com
/*
-/* Current maintainers:
-/*
/* LaMont Jones
/* lamont@debian.org
/*
/* a dictionary interface for Postfix key->value mappings.
/* The result is a pointer to the installed dictionary.
/*
-/* Configuration parameters are described in memcache_table(5).
-/*
/* Arguments:
/* .IP name
/* The path to the Postfix memcache configuration file.
/* See dict_open(3).
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* memcache_table(5) memcache client configuration
/* HISTORY
/* .ad
/* .fi
/* Must be O_RDONLY.
/* .IP dict_flags
/* See dict_open(3).
-/* .PP
-/* Configuration parameters:
-/* .IP user
-/* Username for connecting to the database.
-/* .IP password
-/* Password for the above.
-/* .IP dbname
-/* Name of the database.
-/* .IP domain
-/* List of domains the queries should be restricted to. If
-/* specified, only FQDN addresses whose domain parts matching this
-/* list will be queried against the SQL database. Lookups for
-/* partial addresses are also suppressed. This can significantly
-/* reduce the query load on the server.
-/* .IP query
-/* Query template, before the query is actually issued, variable
-/* substitutions are performed. See mysql_table(5) for details. If
-/* No query is specified, the legacy variables \fItable\fR,
-/* \fIselect_field\fR, \fIwhere_field\fR and \fIadditional_conditions\fR
-/* are used to construct the query template.
-/* .IP result_format
-/* The format used to expand results from queries. Substitutions
-/* are performed as described in mysql_table(5). Defaults to returning
-/* the lookup result unchanged.
-/* .IP expansion_limit
-/* Limit (if any) on the total number of lookup result values. Lookups which
-/* exceed the limit fail with dict->error=DICT_ERR_RETRY. Note that each
-/* non-empty (and non-NULL) column of a multi-column result row counts as
-/* one result.
-/* .IP table
-/* When \fIquery\fR is not set, name of the table used to construct the
-/* query string. This provides compatibility with older releases.
-/* .IP select_field
-/* When \fIquery\fR is not set, name of the result field used to
-/* construct the query string. This provides compatibility with older
-/* releases.
-/* .IP where_field
-/* When \fIquery\fR is not set, name of the where clause field used to
-/* construct the query string. This provides compatibility with older
-/* releases.
-/* .IP additional_conditions
-/* When \fIquery\fR is not set, additional where clause conditions used
-/* to construct the query string. This provides compatibility with older
-/* releases.
-/* .IP hosts
-/* List of hosts to connect to.
-/* .IP option_file
-/* Read options from the given file instead of the default my.cnf
-/* location.
-/* .IP option_group
-/* Read options from the given group.
-/* .IP require_result_set
-/* Require that every query produces a result set.
-/* .IP tls_cert_file
-/* File containing client's X509 certificate.
-/* .IP tls_key_file
-/* File containing the private key corresponding to \fItls_cert_file\fR.
-/* .IP tls_CAfile
-/* File containing certificates for all of the X509 Certification
-/* Authorities the client will recognize. Takes precedence over
-/* \fItls_CApath\fR.
-/* .IP tls_CApath
-/* Directory containing X509 Certification Authority certificates
-/* in separate individual files.
-/* .IP tls_verify_cert
-/* Verify that the server's name matches the common name of the
-/* certificate.
-/* .PP
-/* For example, if you want the map to reference databases of
-/* the name "your_db" and execute a query like this: select
-/* forw_addr from aliases where alias like '<some username>'
-/* against any database called "vmailer_info" located on hosts
-/* host1.some.domain and host2.some.domain, logging in as user
-/* "vmailer" and password "passwd" then the configuration file
-/* should read:
-/* .PP
-/* user = vmailer
-/* .br
-/* password = passwd
-/* .br
-/* dbname = vmailer_info
-/* .br
-/* table = aliases
-/* .br
-/* select_field = forw_addr
-/* .br
-/* where_field = alias
-/* .br
-/* hosts = host1.some.domain host2.some.domain
-/* .PP
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* mysql_table(5) MySQL client configuration
/* AUTHOR(S)
/* Scott Cotton, Joshua Marcus
/* IC Group, Inc.
/* Must be O_RDONLY.
/* .IP dict_flags
/* See dict_open(3).
-/*
-/* .PP
-/* Configuration parameters:
-/* .IP user
-/* Username for connecting to the database.
-/* .IP password
-/* Password for the above.
-/* .IP dbname
-/* Name of the database.
-/* .IP "encoding (default: UTF8)
-/* Client encoding, Postfix 3.8 and later. Previously this was
-/* hard-coded as LATIN1.
-/* .IP query
-/* Query template. If not defined a default query template is constructed
-/* from the legacy \fIselect_function\fR or failing that the \fItable\fR,
-/* \fIselect_field\fR, \fIwhere_field\fR, and \fIadditional_conditions\fR
-/* parameters. Before the query is issues, variable substitutions are
-/* performed. See pgsql_table(5).
-/* .IP domain
-/* List of domains the queries should be restricted to. If
-/* specified, only FQDN addresses whose domain parts matching this
-/* list will be queried against the SQL database. Lookups for
-/* partial addresses are also suppressed. This can significantly
-/* reduce the query load on the server.
-/* .IP result_format
-/* The format used to expand results from queries. Substitutions
-/* are performed as described in pgsql_table(5). Defaults to returning
-/* the lookup result unchanged.
-/* .IP expansion_limit
-/* Limit (if any) on the total number of lookup result values. Lookups which
-/* exceed the limit fail with dict->error=DICT_ERR_RETRY. Note that each
-/* non-empty (and non-NULL) column of a multi-column result row counts as
-/* one result.
-/* .IP select_function
-/* When \fIquery\fR is not defined, the function to be used instead of
-/* the default query based on the legacy \fItable\fR, \fIselect_field\fR,
-/* \fIwhere_field\fR, and \fIadditional_conditions\fR parameters.
-/* .IP table
-/* When \fIquery\fR and \fIselect_function\fR are not defined, the name of the
-/* FROM table used to construct the default query template, see pgsql_table(5).
-/* .IP select_field
-/* When \fIquery\fR and \fIselect_function\fR are not defined, the name of the
-/* SELECT field used to construct the default query template, see pgsql_table(5).
-/* .IP where_field
-/* When \fIquery\fR and \fIselect_function\fR are not defined, the name of the
-/* WHERE field used to construct the default query template, see pgsql_table(5).
-/* .IP additional_conditions
-/* When \fIquery\fR and \fIselect_function\fR are not defined, the name of the
-/* additional text to add to the WHERE field in the default query template (this
-/* usually begins with "and") see pgsql_table(5).
-/* .IP hosts
-/* List of hosts to connect to.
-/* .PP
-/* For example, if you want the map to reference databases of
-/* the name "your_db" and execute a query like this: select
-/* forw_addr from aliases where alias like '<some username>'
-/* against any database called "postfix_info" located on hosts
-/* host1.some.domain and host2.some.domain, logging in as user
-/* "postfix" and password "passwd" then the configuration file
-/* should read:
-/* .PP
-/* user = postfix
-/* .br
-/* password = passwd
-/* .br
-/* dbname = postfix_info
-/* .br
-/* table = aliases
-/* .br
-/* select_field = forw_addr
-/* .br
-/* where_field = alias
-/* .br
-/* hosts = host1.some.domain host2.some.domain
-/* .PP
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* pgsql_table(5) PostgreSQL client configuration
/* AUTHOR(S)
/* Aaron Sethman
/* androsyn@ratbox.org
/*
* Don't frustrate future attempts to make Postfix UTF-8 transparent.
*/
+#ifdef SNAPSHOT
if ((dict->flags & DICT_FLAG_UTF8_ACTIVE) == 0
&& !valid_utf8_string(name, strlen(name))) {
if (msg_verbose)
myname, dict_pgsql->parser->name, name);
return (0);
}
+#endif
/*
* Optionally fold the key.
/* Must be O_RDONLY.
/* .IP dict_flags
/* See dict_open(3).
-/* .PP
-/* Configuration parameters:
-/* .IP dbpath
-/* Path to SQLite database
-/* .IP query
-/* Query template. Before the query is actually issued, variable
-/* substitutions are performed. See sqlite_table(5) for details.
-/* .IP result_format
-/* The format used to expand results from queries. Substitutions
-/* are performed as described in sqlite_table(5). Defaults to
-/* returning the lookup result unchanged.
-/* .IP expansion_limit
-/* Limit (if any) on the total number of lookup result values.
-/* Lookups which exceed the limit fail with dict->error=DICT_ERR_RETRY.
-/* Note that each non-empty (and non-NULL) column of a
-/* multi-column result row counts as one result.
-/* .IP "select_field, where_field, additional_conditions"
-/* Legacy query interface.
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* sqlite_table(5) sqlite client configuration
/* AUTHOR(S)
/* Axel Steiner
/* ast@treibsand.com
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20230412"
+#define MAIL_RELEASE_DATE "20230416"
#define MAIL_VERSION_NUMBER "3.9"
#ifdef SNAPSHOT
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
* Open a temp file for the result. This uses a deterministic name so we
* don't leave behind thrash with random names.
*/
- pcf_set_config_dir();
path = pcf_get_main_path();
if ((ep = edit_file_open(path, O_CREAT | O_WRONLY, 0644)) == 0)
msg_fatal("open %s%s: %m", path, EDIT_FILE_SUFFIX);
* Open a temp file for the result. This uses a deterministic name so we
* don't leave behind thrash with random names.
*/
- pcf_set_config_dir();
path = pcf_get_master_path();
if ((ep = edit_file_open(path, O_CREAT | O_WRONLY, 0644)) == 0)
msg_fatal("open %s%s: %m", path, EDIT_FILE_SUFFIX);
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
* A direct rip-off of mail_conf_read(). XXX Avoid code duplication by
* better code decomposition.
*/
- pcf_set_config_dir();
path = pcf_get_main_path();
if (dict_load_file_xt(CONFIG_DICT, path) == 0)
msg_fatal("open %s: %m", path);
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
/*
* Get the location of master.cf.
*/
- if (var_config_dir == 0)
- pcf_set_config_dir();
path = pcf_get_master_path();
/*
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
/* New York, NY 10011, USA
/*
/* Viktor Dukhovni
-/*
-/* Wietse Venema
/*--*/
/*
/*
/* Victor Duchovni
/* Morgan Stanley
-/*
-/* Wietse Venema
/*--*/
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
/* "naked" IP address or a netblock in CIDR notation.
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* cidr_table(5) CIDR table configuration
/* AUTHOR(S)
/* Jozsef Kadlecsik
/* kadlec@blackhole.kfki.hu
/* against the table.
/* SEE ALSO
/* dict(3) generic dictionary manager
+/* pcre_table(5) PCRE table configuration
/* AUTHOR(S)
/* Andrew McNamara
/* andrewm@connect.com.au
/* against the table.
/* SEE ALSO
/* dict(3) generic dictionary manager
-/* regexp_table(5) format of Postfix regular expression tables
+/* regexp_table(5) regular expression table configuration
/* AUTHOR(S)
/* LaMont Jones
/* lamont@hp.com
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
/* System library. */
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
-/*
-/* Wietse Venema
/*--*/
/* System libraries. */
/* Google, Inc.
/* 111 8th Avenue
/* New York, NY 10011, USA
-/*
-/* Wietse Venema
/*--*/
#endif