From: Wietse Venema Date: Mon, 22 Sep 2014 05:00:00 +0000 (-0500) Subject: postfix-2.12-20140922 X-Git-Tag: v3.0.0-RC1~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f62728c5688b5975fc5cc6db3c14a9bb080ef6de;p=thirdparty%2Fpostfix.git postfix-2.12-20140922 --- diff --git a/postfix/.indent.pro b/postfix/.indent.pro index 92d8d25a2..e9b56d685 100644 --- a/postfix/.indent.pro +++ b/postfix/.indent.pro @@ -1,3 +1,4 @@ +-TDICT_UNION -TABOUNCE -TADDR_MATCH_LIST -TADDR_PATTERN diff --git a/postfix/HISTORY b/postfix/HISTORY index 3921bf0f2..14e6c6d9f 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -20410,3 +20410,19 @@ Apologies for any names omitted. Cleanup: postconf code to determine the default mydomain value had not evolved since 1997, while the rest of Postfix changed in 2000. File: postconf/postconf-dbms.c. + +20140922 + + Cleanup: the confirm_delay_cleared feature now sends no + notification when the sender requests NOTIFY options that + do not include NOTIFY=DELAY. Files: global/deliver_request,h, + global/sent.c, *qmgr/qmgr_active.c, *qmgr/qmgr_message.c. + + Bugfix (introduced: yesterday): missing print arguments. + File: postconf/postconf_dbms.c. + + Cleanup: simplified "nested" lookup table checks. + + Cleanup: replace stress-dependent main.cf defaults with the + ternary form: "${stress?{x}:{y}}" File: global/mail_params.h, + proto/postconf.proto, postscreen/postscreen.c (comments). diff --git a/postfix/WISHLIST b/postfix/WISHLIST index bd1bbf5bf..6a6f6a3f4 100644 --- a/postfix/WISHLIST +++ b/postfix/WISHLIST @@ -11,14 +11,8 @@ Wish list: The pickup daemon logs warnings only when the cleanup daemon dit not provide a "reason" attribute. Is this logic right? - Make the "relayed after delay" notification conditional on - the presence of the DSN_NOTIFY_DELAY flag. - up-convert myhostname to UTF-8 in MIME boundary strings? - Update postconf to recursively parse legacy-style mapnames - in random:, pipe:, and other multimaps. - Introduce constants to replace all the ad-hoc ", \t\r\n" etc. for tokenization. That will have to go into an "util" file because match_strings(3), dict_pipe(3) and dict_random(3) diff --git a/postfix/html/postconf.5.html b/postfix/html/postconf.5.html index c5d32e726..4f4dcb92d 100644 --- a/postfix/html/postconf.5.html +++ b/postfix/html/postconf.5.html @@ -7503,7 +7503,7 @@ See smtpd_command_filter for
postscreen_command_time_limit -(default: ${stress?10}${stress:300}s)
+(default: normal: 300s, overload: 10s)

The time limit to read an entire command line with postscreen(8)'s built-in SMTP protocol engine.

@@ -7848,7 +7848,7 @@ one-letter suffix that specifies the time unit). Time units: s
postscreen_greet_wait -(default: ${stress?2}${stress:6}s)
+(default: normal: 6s, overload: 2s)

The amount of time that postscreen(8) will wait for an SMTP client to send a command before its turn, and for DNS blocklist diff --git a/postfix/html/postscreen.8.html b/postfix/html/postscreen.8.html index 6d1e07ca2..8abb6250f 100644 --- a/postfix/html/postscreen.8.html +++ b/postfix/html/postscreen.8.html @@ -15,7 +15,7 @@ POSTSCREEN(8) POSTSCREEN(8) DESCRIPTION The Postfix postscreen(8) server provides additional protection against mail server overload. One postscreen(8) process handles multiple - inbound SMTP connections, and decides which clients may talk to a Post- + inbound SMTP connections, and decides which clients may talk to a Post‐ fix SMTP server process. By keeping spambots away, postscreen(8) leaves more SMTP server processes available for legitimate clients, and delays the onset of server overload conditions. @@ -23,9 +23,9 @@ POSTSCREEN(8) POSTSCREEN(8) This program should not be used on SMTP ports that receive mail from end-user clients (MUAs). In a typical deployment, postscreen(8) handles the MX service on TCP port 25, while MUA clients submit mail via the - submission service on TCP port 587 which requires client authentica- + submission service on TCP port 587 which requires client authentica‐ tion. Alternatively, a site could set up a dedicated, non-postscreen, - "port 25" server that provides submission service and client authenti- + "port 25" server that provides submission service and client authenti‐ cation, but no MX service. postscreen(8) maintains a temporary whitelist for clients that have @@ -34,9 +34,9 @@ POSTSCREEN(8) POSTSCREEN(8) Postfix SMTP server process. This minimizes the overhead for legitimate mail. - By default, postscreen(8) logs statistics and hands off every connec- + By default, postscreen(8) logs statistics and hands off every connec‐ tion to a Postfix SMTP server process, while excluding clients in - mynetworks from all tests (primarily, to avoid problems with non-stan- + mynetworks from all tests (primarily, to avoid problems with non-stan‐ dard SMTP implementations in network appliances). This mode is useful for non-destructive testing. @@ -46,7 +46,7 @@ POSTSCREEN(8) POSTSCREEN(8) information. postscreen(8) is not an SMTP proxy; this is intentional. The purpose - is to keep spambots away from Postfix SMTP server processes, while min- + is to keep spambots away from Postfix SMTP server processes, while min‐ imizing overhead for legitimate traffic. SECURITY @@ -85,7 +85,7 @@ POSTSCREEN(8) POSTSCREEN(8) the "live" connection to a Postfix SMTP server process in the middle of a session. Instead, postscreen(8) defers attempts to deliver mail with a 4XX status, and waits for the client to disconnect. When the client - connects again, postscreen(8) will allow the client to talk to a Post- + connects again, postscreen(8) will allow the client to talk to a Post‐ fix SMTP server process (provided that the whitelist status has not expired). postscreen(8) mitigates the impact of this limitation by giving the "after 220 server greeting" tests a long expiration time. @@ -98,10 +98,10 @@ POSTSCREEN(8) POSTSCREEN(8) The text below provides only a parameter summary. See postconf(5) for more details including examples. - NOTE: Some postscreen(8) parameters implement stress-dependent behav- + NOTE: Some postscreen(8) parameters implement stress-dependent behav‐ ior. This is supported only when the default parameter value is - stress-dependent (that is, it looks like ${stress?X}${stress:Y}, or it - is the $name of an smtpd parameter with a stress-dependent default). + stress-dependent (that is, it looks like ${stress?{X}:{Y}}, or it is + the $name of an smtpd parameter with a stress-dependent default). Other parameters always evaluate as if the stress parameter value is the empty string. @@ -109,8 +109,8 @@ POSTSCREEN(8) POSTSCREEN(8) postscreen_command_filter ($smtpd_command_filter) A mechanism to transform commands from remote SMTP clients. - postscreen_discard_ehlo_keyword_address_maps ($smtpd_discard_ehlo_key- - word_address_maps) + postscreen_discard_ehlo_keyword_address_maps ($smtpd_discard_ehlo_key‐‐ + word_address_maps) Lookup tables, indexed by the remote SMTP client address, with case insensitive lists of EHLO keywords (pipelining, starttls, auth, etc.) that the postscreen(8) server will not send in the @@ -155,7 +155,7 @@ POSTSCREEN(8) POSTSCREEN(8) postscreen_blacklist_action (ignore) The action that postscreen(8) takes when a remote SMTP client is - permanently blacklisted with the postscreen_access_list parame- + permanently blacklisted with the postscreen_access_list parame‐ ter. MAIL EXCHANGER POLICY TESTS @@ -168,12 +168,12 @@ POSTSCREEN(8) POSTSCREEN(8) postscreen_whitelist_interfaces (static:all) A list of local postscreen(8) server IP addresses where a non- - whitelisted remote SMTP client can obtain postscreen(8)'s tempo- + whitelisted remote SMTP client can obtain postscreen(8)'s tempo‐ rary whitelist status. BEFORE 220 GREETING TESTS These tests are executed before the remote SMTP client receives the - "220 servername" greeting. If no tests remain after the successful com- + "220 servername" greeting. If no tests remain after the successful com‐ pletion of this phase, the client will be handed off immediately to a Postfix SMTP server process. @@ -211,14 +211,14 @@ POSTSCREEN(8) POSTSCREEN(8) text..." response, in an attempt to confuse bad SMTP clients so that they speak before their turn (pre-greet). - postscreen_greet_wait (${stress?2}${stress:6}s) + postscreen_greet_wait (normal: 6s, overload: 2s) The amount of time that postscreen(8) will wait for an SMTP client to send a command before its turn, and for DNS blocklist lookup results to arrive (default: up to 2 seconds under stress, up to 6 seconds otherwise). smtpd_service_name (smtpd) - The internal service that postscreen(8) hands off allowed con- + The internal service that postscreen(8) hands off allowed con‐ nections to. Available in Postfix version 2.11 and later: @@ -253,24 +253,24 @@ POSTSCREEN(8) POSTSCREEN(8) Disable the SMTP VRFY command in the postscreen(8) daemon. postscreen_forbidden_commands ($smtpd_forbidden_commands) - List of commands that the postscreen(8) server considers in vio- + List of commands that the postscreen(8) server considers in vio‐ lation of the SMTP protocol. postscreen_helo_required ($smtpd_helo_required) - Require that a remote SMTP client sends HELO or EHLO before com- + Require that a remote SMTP client sends HELO or EHLO before com‐ mencing a MAIL transaction. postscreen_non_smtp_command_action (drop) The action that postscreen(8) takes when a remote SMTP client - sends non-SMTP commands as specified with the postscreen_forbid- - den_commands parameter. + sends non-SMTP commands as specified with the postscreen_forbid‐ + den_commands parameter. postscreen_non_smtp_command_enable (no) Enable "non-SMTP command" tests in the postscreen(8) server. postscreen_pipelining_action (enforce) The action that postscreen(8) takes when a remote SMTP client - sends multiple commands instead of sending one command and wait- + sends multiple commands instead of sending one command and wait‐ ing for the server to respond. postscreen_pipelining_enable (no) @@ -285,7 +285,7 @@ POSTSCREEN(8) POSTSCREEN(8) Persistent storage for the postscreen(8) server decisions. postscreen_cache_retention_time (7d) - The amount of time that postscreen(8) will cache an expired tem- + The amount of time that postscreen(8) will cache an expired tem‐ porary whitelist entry before it is removed. postscreen_bare_newline_ttl (30d) @@ -313,8 +313,8 @@ POSTSCREEN(8) POSTSCREEN(8) Upon input, long lines are chopped up into pieces of at most this length; upon delivery, long lines are reconstructed. - postscreen_client_connection_count_limit ($smtpd_client_connec- - tion_count_limit) + postscreen_client_connection_count_limit ($smtpd_client_connec‐‐ + tion_count_limit) How many simultaneous connections any remote SMTP client is allowed to have with the postscreen(8) daemon. @@ -322,7 +322,7 @@ POSTSCREEN(8) POSTSCREEN(8) The limit on the total number of commands per SMTP session for postscreen(8)'s built-in SMTP protocol engine. - postscreen_command_time_limit (${stress?10}${stress:300}s) + postscreen_command_time_limit (normal: 300s, overload: 10s) The time limit to read an entire command line with postscreen(8)'s built-in SMTP protocol engine. @@ -343,7 +343,7 @@ POSTSCREEN(8) POSTSCREEN(8) STARTTLS CONTROLS postscreen_tls_security_level ($smtpd_tls_security_level) The SMTP TLS security level for the postscreen(8) server; when a - non-empty value is specified, this overrides the obsolete param- + non-empty value is specified, this overrides the obsolete param‐ eters postscreen_use_tls and postscreen_enforce_tls. tlsproxy_service_name (tlsproxy) @@ -363,11 +363,11 @@ POSTSCREEN(8) POSTSCREEN(8) MISCELLANEOUS CONTROLS config_directory (see 'postconf -d' output) - The default location of the Postfix main.cf and master.cf con- + The default location of the Postfix main.cf and master.cf con‐ figuration files. delay_logging_resolution_limit (2) - The maximal number of digits after the decimal point when log- + The maximal number of digits after the decimal point when log‐ ging sub-second delay values. command_directory (see 'postconf -d' output) @@ -388,7 +388,7 @@ POSTSCREEN(8) POSTSCREEN(8) syslog_name (see 'postconf -d' output) The mail system name that is prepended to the process name in - syslog records, so that "smtpd" becomes, for example, "post- + syslog records, so that "smtpd" becomes, for example, "post‐ fix/smtpd". SEE ALSO diff --git a/postfix/man/man5/postconf.5 b/postfix/man/man5/postconf.5 index 0cb0a6344..970608a44 100644 --- a/postfix/man/man5/postconf.5 +++ b/postfix/man/man5/postconf.5 @@ -4537,7 +4537,7 @@ A mechanism to transform commands from remote SMTP clients. See smtpd_command_filter for further details. .PP This feature is available in Postfix 2.8 and later. -.SH postscreen_command_time_limit (default: ${stress?10}${stress:300}s) +.SH postscreen_command_time_limit (default: normal: 300s, overload: 10s) The time limit to read an entire command line with \fBpostscreen\fR(8)'s built-in SMTP protocol engine. .PP @@ -4777,7 +4777,7 @@ one-letter suffix that specifies the time unit). Time units: s (seconds), m (minutes), h (hours), d (days), w (weeks). .PP This feature is available in Postfix 2.8. -.SH postscreen_greet_wait (default: ${stress?2}${stress:6}s) +.SH postscreen_greet_wait (default: normal: 6s, overload: 2s) The amount of time that \fBpostscreen\fR(8) will wait for an SMTP client to send a command before its turn, and for DNS blocklist lookup results to arrive (default: up to 2 seconds under stress, diff --git a/postfix/man/man8/postscreen.8 b/postfix/man/man8/postscreen.8 index c6d20db71..fd06da2ad 100644 --- a/postfix/man/man8/postscreen.8 +++ b/postfix/man/man8/postscreen.8 @@ -119,7 +119,7 @@ The text below provides only a parameter summary. See NOTE: Some \fBpostscreen\fR(8) parameters implement stress-dependent behavior. This is supported only when the default parameter value is stress-dependent (that is, it -looks like ${stress?X}${stress:Y}, or it is the $\fIname\fR +looks like ${stress?{X}:{Y}}, or it is the $\fIname\fR of an smtpd parameter with a stress-dependent default). Other parameters always evaluate as if the \fBstress\fR parameter value is the empty string. @@ -234,7 +234,7 @@ response that \fBpostscreen\fR(8) sends ahead of the real Postfix SMTP server's "220 text..." response, in an attempt to confuse bad SMTP clients so that they speak before their turn (pre-greet). -.IP "\fBpostscreen_greet_wait (${stress?2}${stress:6}s)\fR" +.IP "\fBpostscreen_greet_wait (normal: 6s, overload: 2s)\fR" The amount of time that \fBpostscreen\fR(8) will wait for an SMTP client to send a command before its turn, and for DNS blocklist lookup results to arrive (default: up to 2 seconds under stress, @@ -334,7 +334,7 @@ with the \fBpostscreen\fR(8) daemon. .IP "\fBpostscreen_command_count_limit (20)\fR" The limit on the total number of commands per SMTP session for \fBpostscreen\fR(8)'s built-in SMTP protocol engine. -.IP "\fBpostscreen_command_time_limit (${stress?10}${stress:300}s)\fR" +.IP "\fBpostscreen_command_time_limit (normal: 300s, overload: 10s)\fR" The time limit to read an entire command line with \fBpostscreen\fR(8)'s built-in SMTP protocol engine. .IP "\fBpostscreen_post_queue_limit ($default_process_limit)\fR" diff --git a/postfix/proto/postconf.proto b/postfix/proto/postconf.proto index 30dc837ad..35c944d45 100644 --- a/postfix/proto/postconf.proto +++ b/postfix/proto/postconf.proto @@ -13697,7 +13697,7 @@ seconds.

This feature is available in Postfix 2.8.

-%PARAM postscreen_greet_wait ${stress?2}${stress:6}s +%PARAM postscreen_greet_wait normal: 6s, overload: 2s

The amount of time that postscreen(8) will wait for an SMTP client to send a command before its turn, and for DNS blocklist @@ -14250,7 +14250,7 @@ and error commands.

This feature is available in Postfix 2.8.

-%PARAM postscreen_command_time_limit ${stress?10}${stress:300}s +%PARAM postscreen_command_time_limit normal: 300s, overload: 10s

The time limit to read an entire command line with postscreen(8)'s built-in SMTP protocol engine.

diff --git a/postfix/src/global/deliver_request.h b/postfix/src/global/deliver_request.h index e38b50e09..0dd25734e 100644 --- a/postfix/src/global/deliver_request.h +++ b/postfix/src/global/deliver_request.h @@ -73,7 +73,7 @@ typedef struct DELIVER_REQUEST { #define DEL_REQ_FLAG_RECORD (1<<10) /* record and deliver */ #define DEL_REQ_FLAG_CONN_LOAD (1<<11) /* Consult opportunistic cache */ #define DEL_REQ_FLAG_CONN_STORE (1<<12) /* Update opportunistic cache */ -#define DEL_REQ_FLAG_REC_SENT (1<<13) /* Record if sent only */ +#define DEL_REQ_FLAG_REC_DLY_SENT (1<<13) /* Record delayed delivery */ /* * Cache Load and Store as value or mask. Use explicit _MASK for multi-bit @@ -93,7 +93,7 @@ typedef struct DELIVER_REQUEST { */ #define DEL_REQ_TRACE_FLAGS_MASK \ (DEL_REQ_FLAG_MTA_VRFY | DEL_REQ_FLAG_USR_VRFY | DEL_REQ_FLAG_RECORD \ - | DEL_REQ_FLAG_REC_SENT) + | DEL_REQ_FLAG_REC_DLY_SENT) #define DEL_REQ_TRACE_FLAGS(f) ((f) & DEL_REQ_TRACE_FLAGS_MASK) /* diff --git a/postfix/src/global/mail_params.h b/postfix/src/global/mail_params.h index 056d60602..1ae2a0114 100644 --- a/postfix/src/global/mail_params.h +++ b/postfix/src/global/mail_params.h @@ -1170,11 +1170,11 @@ extern char *var_smtp_generic_maps; extern char *var_smtpd_banner; #define VAR_SMTPD_TMOUT "smtpd_timeout" -#define DEF_SMTPD_TMOUT "${stress?10}${stress:300}s" +#define DEF_SMTPD_TMOUT "${stress?{10}:{300}}s" extern int var_smtpd_tmout; #define VAR_SMTPD_STARTTLS_TMOUT "smtpd_starttls_timeout" -#define DEF_SMTPD_STARTTLS_TMOUT "${stress?10}${stress:300}s" +#define DEF_SMTPD_STARTTLS_TMOUT "${stress?{10}:{300}}s" extern int var_smtpd_starttls_tmout; #define VAR_SMTPD_RCPT_LIMIT "smtpd_recipient_limit" @@ -1186,7 +1186,7 @@ extern int var_smtpd_rcpt_limit; extern int var_smtpd_soft_erlim; #define VAR_SMTPD_HARD_ERLIM "smtpd_hard_error_limit" -#define DEF_SMTPD_HARD_ERLIM "${stress?1}${stress:20}" +#define DEF_SMTPD_HARD_ERLIM "${stress?{1}:{20}}" extern int var_smtpd_hard_erlim; #define VAR_SMTPD_ERR_SLEEP "smtpd_error_sleep_time" @@ -1194,7 +1194,7 @@ extern int var_smtpd_hard_erlim; extern int var_smtpd_err_sleep; #define VAR_SMTPD_JUNK_CMD "smtpd_junk_command_limit" -#define DEF_SMTPD_JUNK_CMD "${stress?1}${stress:100}" +#define DEF_SMTPD_JUNK_CMD "${stress?{1}:{100}}" extern int var_smtpd_junk_cmd_limit; #define VAR_SMTPD_RCPT_OVERLIM "smtpd_recipient_overshoot_limit" @@ -2705,7 +2705,7 @@ extern char *var_verify_sender; extern int var_verify_sender_ttl; #define VAR_VERIFY_POLL_COUNT "address_verify_poll_count" -#define DEF_VERIFY_POLL_COUNT "${stress?1}${stress:3}" +#define DEF_VERIFY_POLL_COUNT "${stress?{1}:{3}}" extern int var_verify_poll_count; #define VAR_VERIFY_POLL_DELAY "address_verify_poll_delay" @@ -3427,7 +3427,7 @@ extern int var_psc_cache_ret; extern int var_psc_cache_scan; #define VAR_PSC_GREET_WAIT "postscreen_greet_wait" -#define DEF_PSC_GREET_WAIT "${stress?2}${stress:6}s" +#define DEF_PSC_GREET_WAIT "${stress?{2}:{6}}s" extern int var_psc_greet_wait; #define VAR_PSC_PREGR_BANNER "postscreen_greet_banner" @@ -3734,7 +3734,7 @@ extern char *var_smtpd_rej_footer; * Per-record time limit support. */ #define VAR_SMTPD_REC_DEADLINE "smtpd_per_record_deadline" -#define DEF_SMTPD_REC_DEADLINE "${stress?yes}${stress:no}" +#define DEF_SMTPD_REC_DEADLINE "${stress?{yes}:{no}}" extern bool var_smtpd_rec_deadline; #define VAR_SMTP_REC_DEADLINE "smtp_per_record_deadline" diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index c4bfa30d8..3091735b8 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 "20140921" +#define MAIL_RELEASE_DATE "20140922" #define MAIL_VERSION_NUMBER "2.12" #ifdef SNAPSHOT diff --git a/postfix/src/global/sent.c b/postfix/src/global/sent.c index 393807848..8a8ba3037 100644 --- a/postfix/src/global/sent.c +++ b/postfix/src/global/sent.c @@ -140,10 +140,17 @@ int sent(int flags, const char *id, MSG_STATS *stats, * Normal mail delivery. May also send a delivery record to the user. */ else { + + /* Readability macros: record all deliveries, or the delayed ones. */ +#define REC_ALL_SENT(flags) (flags & DEL_REQ_FLAG_RECORD) +#define REC_DLY_SENT(flags, rcpt) \ + ((flags & DEL_REQ_FLAG_REC_DLY_SENT) \ + && (rcpt->dsn_notify == 0 || (rcpt->dsn_notify & DSN_NOTIFY_DELAY))) + if (my_dsn.action == 0 || my_dsn.action[0] == 0) my_dsn.action = "delivered"; - if (((flags & (DEL_REQ_FLAG_RECORD | DEL_REQ_FLAG_REC_SENT)) == 0 + if (((REC_ALL_SENT(flags) == 0 && REC_DLY_SENT(flags, recipient) == 0) || trace_append(flags, id, stats, recipient, relay, &my_dsn) == 0) && ((recipient->dsn_notify & DSN_NOTIFY_SUCCESS) == 0 || trace_append(flags, id, stats, recipient, relay, &my_dsn) == 0)) { diff --git a/postfix/src/oqmgr/qmgr_active.c b/postfix/src/oqmgr/qmgr_active.c index 04cf152ca..b215f3683 100644 --- a/postfix/src/oqmgr/qmgr_active.c +++ b/postfix/src/oqmgr/qmgr_active.c @@ -386,7 +386,7 @@ static void qmgr_active_done_2_generic(QMGR_MESSAGE *message) * See also comments in bounce/bounce_notify_util.c. */ if ((message->tflags & (DEL_REQ_FLAG_USR_VRFY | DEL_REQ_FLAG_RECORD - | DEL_REQ_FLAG_REC_SENT)) + | DEL_REQ_FLAG_REC_DLY_SENT)) || (message->rflags & QMGR_READ_FLAG_NOTIFY_SUCCESS)) { atrace_flush(message->tflags, message->queue_name, diff --git a/postfix/src/oqmgr/qmgr_message.c b/postfix/src/oqmgr/qmgr_message.c index bd049c895..33cfad725 100644 --- a/postfix/src/oqmgr/qmgr_message.c +++ b/postfix/src/oqmgr/qmgr_message.c @@ -768,7 +768,7 @@ static int qmgr_message_read(QMGR_MESSAGE *message) * burst when the queue drains after a network outage. */ if (var_dsn_delay_cleared && message->warn_time < 0) - message->tflags |= DEL_REQ_FLAG_REC_SENT; + message->tflags |= DEL_REQ_FLAG_REC_DLY_SENT; /* * Avoid clumsiness elsewhere in the program. When sending data across an diff --git a/postfix/src/postconf/Makefile.in b/postfix/src/postconf/Makefile.in index b7eefb516..1a7791f39 100644 --- a/postfix/src/postconf/Makefile.in +++ b/postfix/src/postconf/Makefile.in @@ -779,7 +779,7 @@ test57: $(PROG) test57.ref test58: $(PROG) test58.ref rm -f main.cf master.cf touch main.cf master.cf - echo 'mydestination = foo bar pipemap:{ldap:xxx, memcache:yy} randmap:{xx' >> main.cf + echo 'mydestination = foo bar pipemap:{ldap:xxx, memcache:yy}x randmap:{xx' >> main.cf echo 'xxx_domain = foo' >> main.cf echo 'xxx_bogus = foo' >> main.cf echo 'yy_backup = bbb' >> main.cf diff --git a/postfix/src/postconf/postconf_dbms.c b/postfix/src/postconf/postconf_dbms.c index a618fdac7..1b0b6f56c 100644 --- a/postfix/src/postconf/postconf_dbms.c +++ b/postfix/src/postconf/postconf_dbms.c @@ -144,13 +144,6 @@ static const PCF_DBMS_INFO pcf_dbms_info[] = { 0, }; - /* - * Pseudo-databases that wrap around other databases. - */ -static const char *pcf_multi_dbms_names[] = { - "pipemap", "addr_pipemap", "unionmap", 0, -}; - /* pcf_register_dbms_helper - parse one possible database type:name */ static void pcf_register_dbms_helper(char *str_value, @@ -188,18 +181,25 @@ static void pcf_register_dbms_helper(char *str_value, if (prefix != 0 && *prefix != '/' && *prefix != '.') { if (*prefix == '{') { if ((len = balpar(prefix, "{}")) > 0) { - prefix[len - 1] = 0; - for (cpp = pcf_multi_dbms_names; *cpp; cpp++) { - if (strcmp(db_type, *cpp) == 0) { - pcf_register_dbms_helper(prefix + 1, flag_parameter, - local_scope); - break; - } + if (prefix[len] != 0) { + /* XXX Encapsulate this in pcf_warn() function. */ + if (local_scope) + msg_warn("%s:%s: syntax error after '}' in \"%s:%s\"", + MASTER_CONF_FILE, local_scope->name_space, + db_type, prefix); + else + msg_warn("%s: syntax error after '}' in \"%s:%s\"", + MAIN_CONF_FILE, db_type, prefix); } + prefix[len - 1] = 0; + pcf_register_dbms_helper(prefix + 1, flag_parameter, + local_scope); } else { + /* XXX Encapsulate this in pcf_warn() function. */ if (local_scope) msg_warn("%s:%s: missing '}' in parameter value: \"%s:%s\"", - MASTER_CONF_FILE, local_scope->name_space); + MASTER_CONF_FILE, local_scope->name_space, + db_type, prefix); else msg_warn("%s: missing '}' in parameter value: \"%s:%s\"", MAIN_CONF_FILE, db_type, prefix); diff --git a/postfix/src/postscreen/postscreen.c b/postfix/src/postscreen/postscreen.c index fb0227c12..4a22d4b96 100644 --- a/postfix/src/postscreen/postscreen.c +++ b/postfix/src/postscreen/postscreen.c @@ -103,7 +103,7 @@ /* NOTE: Some \fBpostscreen\fR(8) parameters implement /* stress-dependent behavior. This is supported only when the /* default parameter value is stress-dependent (that is, it -/* looks like ${stress?X}${stress:Y}, or it is the $\fIname\fR +/* looks like ${stress?{X}:{Y}}, or it is the $\fIname\fR /* of an smtpd parameter with a stress-dependent default). /* Other parameters always evaluate as if the \fBstress\fR /* parameter value is the empty string. @@ -206,7 +206,7 @@ /* \fBpostscreen\fR(8) sends ahead of the real Postfix SMTP server's "220 /* text..." response, in an attempt to confuse bad SMTP clients so /* that they speak before their turn (pre-greet). -/* .IP "\fBpostscreen_greet_wait (${stress?2}${stress:6}s)\fR" +/* .IP "\fBpostscreen_greet_wait (normal: 6s, overload: 2s)\fR" /* The amount of time that \fBpostscreen\fR(8) will wait for an SMTP /* client to send a command before its turn, and for DNS blocklist /* lookup results to arrive (default: up to 2 seconds under stress, @@ -300,7 +300,7 @@ /* .IP "\fBpostscreen_command_count_limit (20)\fR" /* The limit on the total number of commands per SMTP session for /* \fBpostscreen\fR(8)'s built-in SMTP protocol engine. -/* .IP "\fBpostscreen_command_time_limit (${stress?10}${stress:300}s)\fR" +/* .IP "\fBpostscreen_command_time_limit (normal: 300s, overload: 10s)\fR" /* The time limit to read an entire command line with \fBpostscreen\fR(8)'s /* built-in SMTP protocol engine. /* .IP "\fBpostscreen_post_queue_limit ($default_process_limit)\fR" diff --git a/postfix/src/qmgr/qmgr_active.c b/postfix/src/qmgr/qmgr_active.c index 04cf152ca..b215f3683 100644 --- a/postfix/src/qmgr/qmgr_active.c +++ b/postfix/src/qmgr/qmgr_active.c @@ -386,7 +386,7 @@ static void qmgr_active_done_2_generic(QMGR_MESSAGE *message) * See also comments in bounce/bounce_notify_util.c. */ if ((message->tflags & (DEL_REQ_FLAG_USR_VRFY | DEL_REQ_FLAG_RECORD - | DEL_REQ_FLAG_REC_SENT)) + | DEL_REQ_FLAG_REC_DLY_SENT)) || (message->rflags & QMGR_READ_FLAG_NOTIFY_SUCCESS)) { atrace_flush(message->tflags, message->queue_name, diff --git a/postfix/src/qmgr/qmgr_message.c b/postfix/src/qmgr/qmgr_message.c index e559d11cd..f2c69a699 100644 --- a/postfix/src/qmgr/qmgr_message.c +++ b/postfix/src/qmgr/qmgr_message.c @@ -809,7 +809,7 @@ static int qmgr_message_read(QMGR_MESSAGE *message) * burst when the queue drains after a network outage. */ if (var_dsn_delay_cleared && message->warn_time < 0) - message->tflags |= DEL_REQ_FLAG_REC_SENT; + message->tflags |= DEL_REQ_FLAG_REC_DLY_SENT; /* * Remember when we have read the last recipient batch. Note that we do diff --git a/postfix/src/util/dict_pipe.c b/postfix/src/util/dict_pipe.c index e7e56787e..d2036fae4 100644 --- a/postfix/src/util/dict_pipe.c +++ b/postfix/src/util/dict_pipe.c @@ -12,7 +12,7 @@ /* int dict_flags; /* DESCRIPTION /* dict_pipe_open() opens a pipeline of one or more tables. -/* Example: "\fBpipemap:{\fItype_1:name_1, ... ,type_n:name_n\fR}". +/* Example: "\fBpipemap:{\fItype_1:name_1, ..., type_n:name_n\fR}". /* /* Each "pipemap:" query is given to the first table. Each /* lookup result becomes the query for the next table in the