which changes once every year or so, a problem that was
reported by Victor Duchovni. The base 16 encoding gives
finer control over the number of directories than possible
- with base 52 encoding. Files: global/mail_queue.c. This
+ with base 52 encoding. Files: global/mail_queue.[hc]. This
change requires "postfix reload".
+
+20110322
+
+ Cleanup: preserve the microseconds value when renaming
+ long->short or short->short queue file names. As a side
+ benefit, renaming long->short queue IDs will not change the
+ result from queue hashing. File: postsuper/postsuper.c.
body_checks = pcre:/etc/postfix/body_checks
/etc/postfix/header_checks:
- # Do not indent the text between "if" and "endif".
+ # Do not indent the patterns between "if" and "endif".
if /^Received:/
/^Received: +from +(porcupine\.org) +/
reject forged client name in Received: header: $1
reject forged domain name in Message-ID: header: $1
/etc/postfix/body_checks:
- # Do not indent the text between "if" and "endif".
+ # Do not indent the patterns between "if" and "endif".
if /^[> ]*Received:/
/^[> ]*Received: +from +(porcupine\.org) /
reject forged client name in Received: header: $1
<a href="postconf.5.html#body_checks">body_checks</a> = <a href="pcre_table.5.html">pcre</a>:/etc/postfix/body_checks
/etc/postfix/header_checks:
- # Do not indent the text between "if" and "endif".
+ # Do not indent the patterns between "if" and "endif".
if /^Received:/
/^Received: +from +(porcupine\.org) +/
reject forged client name in Received: header: $1
reject forged domain name in Message-ID: header: $1
/etc/postfix/body_checks:
- # Do not indent the text between "if" and "endif".
+ # Do not indent the patterns between "if" and "endif".
if /^[> ]*Received:/
/^[> ]*Received: +from +(porcupine\.org) /
reject forged client name in Received: header: $1
<DT><b><a name="smtpd_service_name">smtpd_service_name</a>
(default: smtpd)</b></DT><DD>
-<p> The internal service that <a href="postscreen.8.html">postscreen(8)</a> forwards allowed
+<p> The internal service that <a href="postscreen.8.html">postscreen(8)</a> hands off allowed
connections to. In a future version there may be different
classes of SMTP service. </p>
seconds otherwise).
<b><a href="postconf.5.html#smtpd_service_name">smtpd_service_name</a> (smtpd)</b>
- The internal service that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> forwards
+ The internal service that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> hands off
allowed connections to.
<b>AFTER-GREETING TESTS</b>
.ad
.ft R
.SH smtpd_service_name (default: smtpd)
-The internal service that \fBpostscreen\fR(8) forwards allowed
+The internal service that \fBpostscreen\fR(8) hands off allowed
connections to. In a future version there may be different
classes of SMTP service.
.PP
lookup results to arrive (default: up to 2 seconds under stress,
up to 6 seconds otherwise).
.IP "\fBsmtpd_service_name (smtpd)\fR"
-The internal service that \fBpostscreen\fR(8) forwards allowed
+The internal service that \fBpostscreen\fR(8) hands off allowed
connections to.
.SH "AFTER-GREETING TESTS"
.na
body_checks = pcre:/etc/postfix/body_checks
/etc/postfix/header_checks:
- # Do not indent the text between "if" and "endif".
+ # Do not indent the patterns between "if" and "endif".
if /^Received:/
/^Received: +from +(porcupine\.org) +/
reject forged client name in Received: header: $1
reject forged domain name in Message-ID: header: $1
/etc/postfix/body_checks:
- # Do not indent the text between "if" and "endif".
+ # Do not indent the patterns between "if" and "endif".
if /^[> ]*Received:/
/^[> ]*Received: +from +(porcupine\.org) /
reject forged client name in Received: header: $1
%PARAM smtpd_service_name smtpd
-<p> The internal service that postscreen(8) forwards allowed
+<p> The internal service that postscreen(8) hands off allowed
connections to. In a future version there may be different
classes of SMTP service. </p>
#define MQID_LG_INUM_PAD 0 /* no padding needed */
#define MQID_FIND_LG_INUM_SEPARATOR(cp, path) \
- ((cp) = strrchr((path), MQID_LG_INUM_SEP)) != 0 \
- && ((cp) - (path) >= MQID_LG_TIME_PAD)
+ (((cp) = strrchr((path), MQID_LG_INUM_SEP)) != 0 \
+ && ((cp) - (path) >= MQID_LG_TIME_PAD))
#define MQID_GET_INUM(path, inum, long_form, error) do { \
char *_cp; \
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20110321"
+#define MAIL_RELEASE_DATE "20110322"
#define MAIL_VERSION_NUMBER "2.9"
#ifdef SNAPSHOT
/* lookup results to arrive (default: up to 2 seconds under stress,
/* up to 6 seconds otherwise).
/* .IP "\fBsmtpd_service_name (smtpd)\fR"
-/* The internal service that \fBpostscreen\fR(8) forwards allowed
+/* The internal service that \fBpostscreen\fR(8) hands off allowed
/* connections to.
/* AFTER-GREETING TESTS
/* .ad
* be deterministic so that we can recover even when the renaming
* operation is interrupted in the middle.
*/
- if (MQID_FIND_LG_INUM_SEPARATOR(cp, actual_id) && var_long_queue_ids) {
+ if (MQID_FIND_LG_INUM_SEPARATOR(cp, actual_id) == 0) {
+ /* Short->short queue ID. Replace the inode portion. */
+ vstring_sprintf(new_id, "%.*s%s",
+ MQID_SH_USEC_PAD, actual_id,
+ get_file_id_st(st, 0));
+ } else if (var_long_queue_ids) {
+ /* Long->long queue ID. Replace the inode portion. */
vstring_sprintf(new_id, "%.*s%c%s",
(int) (cp - actual_id), actual_id, MQID_LG_INUM_SEP,
get_file_id_st(st, 1));
} else {
- vstring_sprintf(new_id, "%0*X%s",
- MQID_SH_USEC_PAD, myrand() % 1000000,
- get_file_id_st(st, 0));
+ /* Long->short queue ID. Reformat time and replace inode portion. */
+ MQID_LG_GET_HEX_USEC(new_id, cp);
+ vstring_strcat(new_id, get_file_id_st(st, 0));
}
/*