From: Wietse Venema
When no "=filter" is specified, postscreen(8) will use any -non-error DNSBL reply. Otherwise, the filter must be an IPv4 -address, and postscreen(8) uses only DNSBL replies that match the -filter.
+non-error DNSBL reply. Otherwise, postscreen(8) uses only DNSBL +replies that match the filter. The filter has the form d.d.d.d, +where each d is a number, or a pattern inside [] that contains one +or more comma-separated numbers or number..number ranges.When no "*weight" is specified, postscreen(8) increments the SMTP client's DNSBL score by 1. Otherwise, the weight must be @@ -12343,6 +12344,11 @@ restriction lists" for a discussion of evaluation context and time. The default is to permit everything.
+Note: specify "smtpd_helo_required = yes" to fully enforce this +restriction (without "smtpd_helo_required = yes", a client can +simply skip smtpd_helo_restrictions by not sending HELO or EHLO). +
+Specify a list of restrictions, separated by commas and/or whitespace. Continue long lines by starting the next line with whitespace. @@ -12362,7 +12368,8 @@ received with the HELO or EHLO command.
Note: specify "smtpd_helo_required = yes" to fully enforce this +restriction (without "smtpd_helo_required = yes", a client can +simply skip smtpd_helo_restrictions by not sending HELO or EHLO). +
+Specify a list of restrictions, separated by commas and/or whitespace. Continue long lines by starting the next line with whitespace. @@ -5347,7 +5352,8 @@ received with the HELO or EHLO command.
When no "=filter" is specified, postscreen(8) will use any -non-error DNSBL reply. Otherwise, the filter must be an IPv4 -address, and postscreen(8) uses only DNSBL replies that match the -filter.
+non-error DNSBL reply. Otherwise, postscreen(8) uses only DNSBL +replies that match the filter. The filter has the form d.d.d.d, +where each d is a number, or a pattern inside [] that contains one +or more comma-separated numbers or number..number ranges.When no "*weight" is specified, postscreen(8) increments the SMTP client's DNSBL score by 1. Otherwise, the weight must be diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 6758078fd..652a4e712 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20101130" +#define MAIL_RELEASE_DATE "20101201" #define MAIL_VERSION_NUMBER "2.8" #ifdef SNAPSHOT diff --git a/postfix/src/postscreen/postscreen.c b/postfix/src/postscreen/postscreen.c index 37fca2746..2667acf1e 100644 --- a/postfix/src/postscreen/postscreen.c +++ b/postfix/src/postscreen/postscreen.c @@ -351,6 +351,7 @@ int var_ps_barlf_ttl; int var_ps_cmd_count; char *var_ps_cmd_time; +int var_smtpd_cconn_limit; int var_ps_cconn_limit; /* @@ -866,6 +867,7 @@ int main(int argc, char **argv) VAR_PROC_LIMIT, DEF_PROC_LIMIT, &var_proc_limit, 1, 0, VAR_PS_DNSBL_THRESH, DEF_PS_DNSBL_THRESH, &var_ps_dnsbl_thresh, 0, 0, VAR_PS_CMD_COUNT, DEF_PS_CMD_COUNT, &var_ps_cmd_count, 1, 0, + VAR_SMTPD_CCONN_LIMIT, DEF_SMTPD_CCONN_LIMIT, &var_smtpd_cconn_limit, 0, 0, 0, }; static const CONFIG_NINT_TABLE nint_table[] = { diff --git a/postfix/src/util/make_dirs.c b/postfix/src/util/make_dirs.c index cf50aae25..cf96d2481 100644 --- a/postfix/src/util/make_dirs.c +++ b/postfix/src/util/make_dirs.c @@ -49,12 +49,14 @@ int make_dirs(const char *path, int perms) { + const char *myname = "make_dirs"; char *saved_path; unsigned char *cp; int saved_ch; struct stat st; int ret; mode_t saved_mode = 0; + gid_t egid = -1; /* * Initialize. Make a copy of the path that we can safely clobber. @@ -117,6 +119,21 @@ int make_dirs(const char *path, int perms) break; } } + + /* + * Fix directory ownership when mkdir() ignores the effective + * GID. Don't change the effective UID for doing this. + */ + if ((ret = stat(saved_path, &st)) < 0) { + msg_warn("%s: stat saved_path: %m", myname); + break; + } + if (egid == -1) + egid = getegid(); + if (st.st_gid != egid && (ret = chown(saved_path, -1, egid)) < 0) { + msg_warn("%s: chgrp saved_path: %m", myname); + break; + } } if (saved_ch != 0) *cp = saved_ch;