]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.12-20140922
authorWietse Venema <wietse@porcupine.org>
Mon, 22 Sep 2014 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <postfix-users@dukhovni.org>
Thu, 25 Sep 2014 00:34:07 +0000 (20:34 -0400)
20 files changed:
postfix/.indent.pro
postfix/HISTORY
postfix/WISHLIST
postfix/html/postconf.5.html
postfix/html/postscreen.8.html
postfix/man/man5/postconf.5
postfix/man/man8/postscreen.8
postfix/proto/postconf.proto
postfix/src/global/deliver_request.h
postfix/src/global/mail_params.h
postfix/src/global/mail_version.h
postfix/src/global/sent.c
postfix/src/oqmgr/qmgr_active.c
postfix/src/oqmgr/qmgr_message.c
postfix/src/postconf/Makefile.in
postfix/src/postconf/postconf_dbms.c
postfix/src/postscreen/postscreen.c
postfix/src/qmgr/qmgr_active.c
postfix/src/qmgr/qmgr_message.c
postfix/src/util/dict_pipe.c

index 92d8d25a297cd73be93bfe7b6a47866ad3601012..e9b56d6850ad5b0d59987fa64e1d62b5ec305e29 100644 (file)
@@ -1,3 +1,4 @@
+-TDICT_UNION
 -TABOUNCE
 -TADDR_MATCH_LIST
 -TADDR_PATTERN
index 3921bf0f2f1c1e5d0357147fcdf8783d31075b64..14e6c6d9fe5c9c3fe69cd49b1a2ee415fef132cd 100644 (file)
@@ -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).
index bd1bbf5bf2f331f44b355a0a1e4ce21782936ce4..6a6f6a3f4ece4d4d6e981c0715414b3f6c87928a 100644 (file)
@@ -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)
index c5d32e7264c2631df94616354c414af23371d0de..4f4dcb92d1630b6b2b02723e76f93bdca1210551 100644 (file)
@@ -7503,7 +7503,7 @@ See <a href="postconf.5.html#smtpd_command_filter">smtpd_command_filter</a> for
 </DD>
 
 <DT><b><a name="postscreen_command_time_limit">postscreen_command_time_limit</a>
-(default: ${stress?10}${stress:300}s)</b></DT><DD>
+(default: normal: 300s, overload: 10s)</b></DT><DD>
 
 <p> The time limit to read an entire command line with <a href="postscreen.8.html">postscreen(8)</a>'s
 built-in SMTP protocol engine. </p>
@@ -7848,7 +7848,7 @@ one-letter suffix that specifies the time unit).  Time units: s
 </DD>
 
 <DT><b><a name="postscreen_greet_wait">postscreen_greet_wait</a>
-(default: ${stress?2}${stress:6}s)</b></DT><DD>
+(default: normal: 6s, overload: 2s)</b></DT><DD>
 
 <p> The amount of time that <a href="postscreen.8.html">postscreen(8)</a> will wait for an SMTP
 client to send a command before its turn, and for DNS blocklist
index 6d1e07ca252e3662ac5b814bdb36cb35a7cec60c..8abb6250fccd906d66f16b34117c40bd2aa887d4 100644 (file)
@@ -15,7 +15,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
 <b>DESCRIPTION</b>
        The Postfix <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server provides additional protection against
        mail  server  overload.  One  <a href="postscreen.8.html"><b>postscreen</b>(8)</a>  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,  <a href="postscreen.8.html"><b>postscreen</b>(8)</a>
        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, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> handles
        the MX service on TCP port 25, while MUA clients submit  mail  via  the
-       <b>submission</b>  service  on  TCP port 587 which requires client authentica-
+       <b>submission</b>  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 <b>submission</b> service and client authenti-
+       "port  25" server that provides <b>submission</b> service and client authenti
        cation, but no MX service.
 
        <a href="postscreen.8.html"><b>postscreen</b>(8)</a> 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, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> logs statistics and hands off  every  connec-
+       By default, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> logs statistics and hands off  every  connec
        tion  to  a  Postfix  SMTP  server  process, while excluding clients in
-       <a href="postconf.5.html#mynetworks">mynetworks</a> from all tests (primarily, to avoid problems with  non-stan-
+       <a href="postconf.5.html#mynetworks">mynetworks</a> 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.
 
        <a href="postscreen.8.html"><b>postscreen</b>(8)</a>  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.
 
 <b>SECURITY</b>
@@ -85,7 +85,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
        the "live" connection to a Postfix SMTP server process in the middle of
        a session.  Instead, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> defers attempts to deliver mail with
        a 4XX status, and waits for the client to disconnect.  When the  client
-       connects  again, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> will allow the client to talk to a Post-
+       connects  again, <a href="postscreen.8.html"><b>postscreen</b>(8)</a> will allow the client to talk to a Post
        fix SMTP server process (provided that the  whitelist  status  has  not
        expired).   <a href="postscreen.8.html"><b>postscreen</b>(8)</a>  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  <a href="postconf.5.html"><b>postconf</b>(5)</a>  for
        more details including examples.
 
-       NOTE:  Some  <a href="postscreen.8.html"><b>postscreen</b>(8)</a> parameters implement stress-dependent behav-
+       NOTE:  Some  <a href="postscreen.8.html"><b>postscreen</b>(8)</a> 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 $<i>name</i> of an smtpd parameter with  a  stress-dependent  default).
+       stress-dependent  (that  is,  it looks like ${stress?{X}:{Y}}, or it is
+       the $<i>name</i> of an  smtpd  parameter  with  a  stress-dependent  default).
        Other  parameters  always  evaluate as if the <b>stress</b> parameter value is
        the empty string.
 
@@ -109,8 +109,8 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
        <b><a href="postconf.5.html#postscreen_command_filter">postscreen_command_filter</a> ($<a href="postconf.5.html#smtpd_command_filter">smtpd_command_filter</a>)</b>
               A mechanism to transform commands from remote SMTP clients.
 
-       <b><a href="postconf.5.html#postscreen_discard_ehlo_keyword_address_maps">postscreen_discard_ehlo_keyword_address_maps</a>  ($<a href="postconf.5.html#smtpd_discard_ehlo_keyword_address_maps">smtpd_discard_ehlo_key</a>-</b>
-       <b><a href="postconf.5.html#smtpd_discard_ehlo_keyword_address_maps">word_address_maps</a>)</b>
+       <b><a href="postconf.5.html#postscreen_discard_ehlo_keyword_address_maps">postscreen_discard_ehlo_keyword_address_maps</a>  ($smtpd_discard_ehlo_key</b>‐\b
+       <b>word_address_maps)</b>
               Lookup tables, indexed by the remote SMTP client  address,  with
               case  insensitive  lists of EHLO keywords (pipelining, starttls,
               auth, etc.) that the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server will not send  in  the
@@ -155,7 +155,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
 
        <b><a href="postconf.5.html#postscreen_blacklist_action">postscreen_blacklist_action</a> (ignore)</b>
               The action that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> takes when a remote SMTP client is
-              permanently  blacklisted with the <a href="postconf.5.html#postscreen_access_list">postscreen_access_list</a> parame-
+              permanently  blacklisted with the <a href="postconf.5.html#postscreen_access_list">postscreen_access_list</a> parame
               ter.
 
 <b>MAIL EXCHANGER POLICY TESTS</b>
@@ -168,12 +168,12 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
 
        <b><a href="postconf.5.html#postscreen_whitelist_interfaces">postscreen_whitelist_interfaces</a> (<a href="DATABASE_README.html#types">static</a>:all)</b>
               A  list  of local <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server IP addresses where a non-
-              whitelisted remote SMTP client can obtain <a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s tempo-
+              whitelisted remote SMTP client can obtain <a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s tempo
               rary whitelist status.
 
 <b>BEFORE 220 GREETING TESTS</b>
        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).
 
-       <b><a href="postconf.5.html#postscreen_greet_wait">postscreen_greet_wait</a> (${stress?2}${stress:6}s)</b>
+       <b><a href="postconf.5.html#postscreen_greet_wait">postscreen_greet_wait</a> (normal: 6s, overload: 2s)</b>
               The  amount  of  time  that  <a href="postscreen.8.html"><b>postscreen</b>(8)</a> 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).
 
        <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> hands off  allowed  con-
+              The internal service that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> 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 <a href="postscreen.8.html"><b>postscreen</b>(8)</a> daemon.
 
        <b><a href="postconf.5.html#postscreen_forbidden_commands">postscreen_forbidden_commands</a> ($<a href="postconf.5.html#smtpd_forbidden_commands">smtpd_forbidden_commands</a>)</b>
-              List of commands that the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server considers in vio-
+              List of commands that the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server considers in vio
               lation of the SMTP protocol.
 
        <b><a href="postconf.5.html#postscreen_helo_required">postscreen_helo_required</a> ($<a href="postconf.5.html#smtpd_helo_required">smtpd_helo_required</a>)</b>
-              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.
 
        <b><a href="postconf.5.html#postscreen_non_smtp_command_action">postscreen_non_smtp_command_action</a> (drop)</b>
               The action that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> takes when a  remote  SMTP  client
-              sends non-SMTP commands as specified with the <a href="postconf.5.html#postscreen_forbidden_commands">postscreen_forbid</a>-
-              <a href="postconf.5.html#postscreen_forbidden_commands">den_commands</a> parameter.
+              sends non-SMTP commands as specified with the postscreen_forbid‐
+              den_commands parameter.
 
        <b><a href="postconf.5.html#postscreen_non_smtp_command_enable">postscreen_non_smtp_command_enable</a> (no)</b>
               Enable "non-SMTP command" tests in the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server.
 
        <b><a href="postconf.5.html#postscreen_pipelining_action">postscreen_pipelining_action</a> (enforce)</b>
               The action that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> 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.
 
        <b><a href="postconf.5.html#postscreen_pipelining_enable">postscreen_pipelining_enable</a> (no)</b>
@@ -285,7 +285,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
               Persistent storage for the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server decisions.
 
        <b><a href="postconf.5.html#postscreen_cache_retention_time">postscreen_cache_retention_time</a> (7d)</b>
-              The amount of time that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> will cache an expired tem-
+              The amount of time that <a href="postscreen.8.html"><b>postscreen</b>(8)</a> will cache an expired tem
               porary whitelist entry before it is removed.
 
        <b><a href="postconf.5.html#postscreen_bare_newline_ttl">postscreen_bare_newline_ttl</a> (30d)</b>
@@ -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.
 
-       <b><a href="postconf.5.html#postscreen_client_connection_count_limit">postscreen_client_connection_count_limit</a>         ($<a href="postconf.5.html#smtpd_client_connection_count_limit">smtpd_client_connec</a>-</b>
-       <b><a href="postconf.5.html#smtpd_client_connection_count_limit">tion_count_limit</a>)</b>
+       <b><a href="postconf.5.html#postscreen_client_connection_count_limit">postscreen_client_connection_count_limit</a>         ($smtpd_client_connec</b>‐\b
+       <b>tion_count_limit)</b>
               How many simultaneous connections  any  remote  SMTP  client  is
               allowed to have with the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> daemon.
 
@@ -322,7 +322,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
               The  limit  on the total number of commands per SMTP session for
               <a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s built-in SMTP protocol engine.
 
-       <b><a href="postconf.5.html#postscreen_command_time_limit">postscreen_command_time_limit</a> (${stress?10}${stress:300}s)</b>
+       <b><a href="postconf.5.html#postscreen_command_time_limit">postscreen_command_time_limit</a> (normal: 300s, overload: 10s)</b>
               The  time  limit  to  read   an   entire   command   line   with
               <a href="postscreen.8.html"><b>postscreen</b>(8)</a>'s built-in SMTP protocol engine.
 
@@ -343,7 +343,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
 <b>STARTTLS CONTROLS</b>
        <b><a href="postconf.5.html#postscreen_tls_security_level">postscreen_tls_security_level</a> ($<a href="postconf.5.html#smtpd_tls_security_level">smtpd_tls_security_level</a>)</b>
               The SMTP TLS security level for the <a href="postscreen.8.html"><b>postscreen</b>(8)</a> server; when a
-              non-empty value is specified, this overrides the obsolete param-
+              non-empty value is specified, this overrides the obsolete param
               eters <a href="postconf.5.html#postscreen_use_tls">postscreen_use_tls</a> and <a href="postconf.5.html#postscreen_enforce_tls">postscreen_enforce_tls</a>.
 
        <b><a href="postconf.5.html#tlsproxy_service_name">tlsproxy_service_name</a> (tlsproxy)</b>
@@ -363,11 +363,11 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
 
 <b>MISCELLANEOUS CONTROLS</b>
        <b><a href="postconf.5.html#config_directory">config_directory</a> (see 'postconf -d' output)</b>
-              The  default  location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con-
+              The  default  location of the Postfix <a href="postconf.5.html">main.cf</a> and <a href="master.5.html">master.cf</a> con
               figuration files.
 
        <b><a href="postconf.5.html#delay_logging_resolution_limit">delay_logging_resolution_limit</a> (2)</b>
-              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.
 
        <b><a href="postconf.5.html#command_directory">command_directory</a> (see 'postconf -d' output)</b>
@@ -388,7 +388,7 @@ POSTSCREEN(8)                                                    POSTSCREEN(8)
 
        <b><a href="postconf.5.html#syslog_name">syslog_name</a> (see 'postconf -d' output)</b>
               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".
 
 <b>SEE ALSO</b>
index 0cb0a6344843f45c9a7d69cca5bbb27e3025d49e..970608a4411dd5faa9652dafcbb98873f71ee925 100644 (file)
@@ -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,
index c6d20db71a6fc6574048a5e342a5ce051437ae07..fd06da2add845cf7f44b2bd22a2e5ebf767463df 100644 (file)
@@ -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"
index 30dc837ad3a0fc7d101efc54e509b080d09f98ca..35c944d453b3410dd00d1bcccd0698d9b6501129 100644 (file)
@@ -13697,7 +13697,7 @@ seconds. </p>
 
 <p> This feature is available in Postfix 2.8. </p>
 
-%PARAM postscreen_greet_wait ${stress?2}${stress:6}s
+%PARAM postscreen_greet_wait normal: 6s, overload: 2s
 
 <p> 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.  </p>
 
 <p> This feature is available in Postfix 2.8.  </p>
 
-%PARAM postscreen_command_time_limit ${stress?10}${stress:300}s
+%PARAM postscreen_command_time_limit normal: 300s, overload: 10s
 
 <p> The time limit to read an entire command line with postscreen(8)'s
 built-in SMTP protocol engine. </p>
index e38b50e09edd87b7b99c8c856713b005d436087c..0dd25734eabbc889346f3aeac75faea07f490719 100644 (file)
@@ -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)
 
  /*
index 056d6060259fadd52fdd994fc45eac65b4983f81..1ae2a01149142f7fa778d77a4f514163e5822574 100644 (file)
@@ -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"
index c4bfa30d8e41a657b74cef054a80aef4d9ddf550..3091735b844675856ff766c22dbb45f170fcdb1e 100644 (file)
@@ -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
index 393807848e03fa5b6fbb9e91f2f147c5dfd928f2..8a8ba3037b29d0f4673017c796c2c8d90b23eb32 100644 (file)
@@ -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)) {
index 04cf152ca8f8eb3b04b52fa0ad1fc767d6e34600..b215f3683838653533df330c588882e9892b14e6 100644 (file)
@@ -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,
index bd049c895974fcb0c19044fd9dbdb85e437afd40..33cfad725817c06a23874480e28db4acc2047a1b 100644 (file)
@@ -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
index b7eefb516aa09f05bfad15701cff3f2dd62c973d..1a7791f399fb8acea6246ba167966591f1fe69c8 100644 (file)
@@ -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
index a618fdac755406495f3d61e34cfd86651227cf25..1b0b6f56cb0218bcd9fba28aaff2b6e0d6418195 100644 (file)
@@ -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);
index fb0227c1207dcfedff5b7e864901d04180e50bda..4a22d4b96b3323ecff753e0fdf3783486aaf6a43 100644 (file)
 /*     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.
 /*     \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,
 /* .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"
index 04cf152ca8f8eb3b04b52fa0ad1fc767d6e34600..b215f3683838653533df330c588882e9892b14e6 100644 (file)
@@ -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,
index e559d11cdd42fcbd24fa8cdee383a302c1f32f83..f2c69a699bdd39949cc26975434a431440333c63 100644 (file)
@@ -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
index e7e56787e02da26c90c73f30aab479799e752ea1..d2036fae4c10bb39a25fec38e0d1528abdb7755a 100644 (file)
@@ -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