The fix is cheap, and therefore implemented for all Postfix
in-memory hash tables. Problem reported by Pascal Junod.
File: util/htable.c.
+
+20210103
+
+ Documentation: CIDR example for mynetworks. Scott Kitterman.
+ File: proto/postconf.proto.
+
+ Updated the hash function to make the distance between
+ colliding inputs seed-dependent, which is really the only
+ property that we needed. File: util/htable.c.
"/file/name". IP version 6 addresses contain the ":" character,
and would otherwise be confused with a "<a href="DATABASE_README.html">type:table</a>" pattern. </p>
+<p> Note 3: CIDR ranges cannot be specified in hash tables. Use cidr
+tables if CIDR ranges are used. </p>
+
<p> Examples: </p>
<pre>
<a href="postconf.5.html#mynetworks">mynetworks</a> = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64
<a href="postconf.5.html#mynetworks">mynetworks</a> = $<a href="postconf.5.html#config_directory">config_directory</a>/mynetworks
<a href="postconf.5.html#mynetworks">mynetworks</a> = <a href="DATABASE_README.html#types">hash</a>:/etc/postfix/network_table
+<a href="postconf.5.html#mynetworks">mynetworks</a> = <a href="cidr_table.5.html">cidr</a>:/etc/postfix/network_table.cidr
</pre>
tion logfiles with mail that is queued to those destinations.
<b><a href="postconf.5.html#import_environment">import_environment</a> (see 'postconf -d' output)</b>
- The list of environment parameters that a privileged Postfix
+ The list of environment variables that a privileged Postfix
process will import from a non-Postfix parent process, or
name=value environment overrides.
Optional list of destinations that are eligible for per\-destination
logfiles with mail that is queued to those destinations.
.IP "\fBimport_environment (see 'postconf -d' output)\fR"
-The list of environment parameters that a privileged Postfix
+The list of environment variables that a privileged Postfix
process will import from a non\-Postfix parent process, or name=value
environment overrides.
.IP "\fBqueue_directory (see 'postconf -d' output)\fR"
"/file/name". IP version 6 addresses contain the ":" character,
and would otherwise be confused with a "type:table" pattern.
.PP
+Note 3: CIDR ranges cannot be specified in hash tables. Use cidr
+tables if CIDR ranges are used.
+.PP
Examples:
.PP
.nf
mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64
mynetworks = $config_directory/mynetworks
mynetworks = hash:/etc/postfix/network_table
+mynetworks = cidr:/etc/postfix/network_table.cidr
.fi
.ad
.ft R
"/file/name". IP version 6 addresses contain the ":" character,
and would otherwise be confused with a "type:table" pattern. </p>
+<p> Note 3: CIDR ranges cannot be specified in hash tables. Use cidr
+tables if CIDR ranges are used. </p>
+
<p> Examples: </p>
<pre>
mynetworks = 127.0.0.0/8 168.100.189.0/28 [::1]/128 [2001:240:587::]/64
mynetworks = $config_directory/mynetworks
mynetworks = hash:/etc/postfix/network_table
+mynetworks = cidr:/etc/postfix/network_table.cidr
</pre>
%PARAM myorigin $myhostname
prolog
proto
ICMP
+NORANDOMIZE
+wallclock
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20220102"
+#define MAIL_RELEASE_DATE "20220103"
#define MAIL_VERSION_NUMBER "3.7"
#ifdef SNAPSHOT
/* Optional list of destinations that are eligible for per-destination
/* logfiles with mail that is queued to those destinations.
/* .IP "\fBimport_environment (see 'postconf -d' output)\fR"
-/* The list of environment parameters that a privileged Postfix
+/* The list of environment variables that a privileged Postfix
/* process will import from a non-Postfix parent process, or name=value
/* environment overrides.
/* .IP "\fBqueue_directory (see 'postconf -d' output)\fR"
}
/*
- * Inspired the "Dragon" book by Aho, Sethi and Ullman. Updated to use a
- * seed, and to maintain 32+ bit state.
+ * Heavily mutilated code based on the "Dragon" book by Aho, Sethi and
+ * Ullman. Updated to use a seed, to maintain 32+ bit state, and to make
+ * the distance between colliding inputs seed-dependent.
*/
h = seed;
while (*s) {
g = h & 0xf0000000;
- h = ((h << 4U) | (g >> 28U)) + *(unsigned const char *) s++;
+ h = (h << 4U) ^ (((g >> 28U) + 1) * *(unsigned const char *) s++);
}
return (h % size);
}