]> git.ipfire.org Git - thirdparty/postfix.git/commitdiff
postfix-2.5-20071215
authorWietse Venema <wietse@porcupine.org>
Sat, 15 Dec 2007 05:00:00 +0000 (00:00 -0500)
committerViktor Dukhovni <viktor@dukhovni.org>
Tue, 5 Feb 2013 06:33:41 +0000 (06:33 +0000)
13 files changed:
postfix/HISTORY
postfix/README_FILES/SCHEDULER_README
postfix/html/SCHEDULER_README.html
postfix/html/postconf.5.html
postfix/man/man5/postconf.5
postfix/proto/SCHEDULER_README.html
postfix/proto/postconf.proto
postfix/src/global/deliver_request.h
postfix/src/global/mail_version.h
postfix/src/oqmgr/qmgr_entry.c
postfix/src/qmgr/qmgr_entry.c
postfix/src/qmqpd/qmqpd.c
postfix/src/smtp/smtp_connect.c

index 552e5fcc9f0bbb5e8fc7116e7a840b91003b9974..628bda4cdba170d22886b38e9a46f54857ae2843 100644 (file)
@@ -13972,12 +13972,12 @@ Apologies for any names omitted.
 
        Cleanup: the queue manager and SMTP client now distinguish
        between connection cache store and retrieve hints. Once the
-       queue manager enables enables connection caching (store and
-       load) hints on a per-destination queue, it keeps sending
-       connection cache retrieve hints to the delivery agent even
-       after it stops sending connection cache store hints.  This
-       prevents the SMTP client from making a new connection without
-       checking the connection cache first. Victor Duchovni.  Files:
+       queue manager enables connection caching (store and load)
+       hints on a per-destination queue, it keeps sending connection
+       cache retrieve hints to the delivery agent even after it
+       stops sending connection cache store hints.  This prevents
+       the SMTP client from making a new connection without checking
+       the connection cache first. Victor Duchovni.  Files:
        *qmgr/qmgr_entry.c, smtp/smtp_connect.c.
 
        Bugfix (introduced Postfix 2.3): the SMTP client never
@@ -13989,3 +13989,12 @@ Apologies for any names omitted.
        without connect or handshake error. Victor Duchovni. Files:
        smtp/smtp_connect.c, smtp/smtp_session.c, smtp/smtp_proto.c,
        smtp/smtp_trouble.c.
+
+20071215
+
+       Documentation and code cleanup. Files: global/deliver_request.h,
+       *qmgr/qmgr_entry.c, smtp/smtp_connect.c,
+       proto/SCHEDULER_README.html.
+
+       Bugfix: qmqpd ignored the qmqpd_client_port_logging parameter
+       setting. File: qmqpd/qmqpd.c.
index 4d544248eb6f9430a9ebd60094ecde56e730e4f3..3a858defe58da5af72d9833a71304240ddbf99bd 100644 (file)
@@ -9,12 +9,14 @@ It schedules delivery of new mail, retries failed deliveries at specific times,
 and removes mail from the queue after the last delivery attempt. There are two
 major classes of mechanisms that control the operation of the queue manager.
 
-  * Concurrency scheduling is concerned with the number of concurrent
-    deliveries to a specific destination, including decisions on when to
-    suspend deliveries after persistent failures.
-  * Preemptive scheduling is concerned with the selection of email messages and
+Topics covered by this document:
+
+  * Concurrency scheduling, concerned with the number of concurrent deliveries
+    to a specific destination, including decisions on when to suspend
+    deliveries after persistent failures.
+  * Preemptive scheduling, concerned with the selection of email messages and
     recipients for a given destination.
-  * Credits. This document would not be complete without.
+  * Credits, something this document would not be complete without.
 
 C\bCo\bon\bnc\bcu\bur\brr\bre\ben\bnc\bcy\by s\bsc\bch\bhe\bed\bdu\bul\bli\bin\bng\bg
 
@@ -37,11 +39,11 @@ The material is organized as follows:
 D\bDr\bra\baw\bwb\bba\bac\bck\bks\bs o\bof\bf t\bth\bhe\be e\bex\bxi\bis\bst\bti\bin\bng\bg c\bco\bon\bnc\bcu\bur\brr\bre\ben\bnc\bcy\by s\bsc\bch\bhe\bed\bdu\bul\ble\ber\br
 
 From the start, Postfix has used a simple but robust algorithm where the per-
-destination delivery concurrency is decremented by 1 after a delivery suffered
-connection or handshake failure, and incremented by 1 otherwise. Of course the
-concurrency is never allowed to exceed the maximum per-destination concurrency
-limit. And when a destination's concurrency level drops to zero, the
-destination is declared "dead" and delivery is suspended.
+destination delivery concurrency is decremented by 1 after delivery failed due
+to connection or handshake failure, and incremented by 1 otherwise. Of course
+the concurrency is never allowed to exceed the maximum per-destination
+concurrency limit. And when a destination's concurrency level drops to zero,
+the destination is declared "dead" and delivery is suspended.
 
 Drawbacks of +/-1 concurrency feedback per delivery are:
 
@@ -200,8 +202,9 @@ Server configuration:
     number is also used as the backlog argument to the listen(2) system call,
     and "postfix reload" does not re-issue this call.
   * Mail was discarded with "local_recipient_maps = static:all" and
-    "local_transport = discard". The discard action in header/body checks could
-    not be used as it fails to update the in_flow_delay counters.
+    "local_transport = discard". The discard action in access maps or header/
+    body checks could not be used as it fails to update the in_flow_delay
+    counters.
 
 Client configuration:
 
@@ -302,7 +305,7 @@ measurement we specified a server concurrency limit and a client initial
 destination concurrency of 5, and a server process limit of 10; all other
 conditions were the same as with the first measurement. The same result would
 be obtained with a FreeBSD or Linux server, because the "pushing back" is done
-entirely by the receiving Postfix.
+entirely by the receiving side.
 
     c\bcl\bli\bie\ben\bnt\bt s\bse\ber\brv\bve\ber\br f\bfe\bee\bed\bdb\bba\bac\bck\bk  c\bco\bon\bnn\bne\bec\bct\bti\bio\bon\bn p\bpe\ber\brc\bce\ben\bnt\bta\bag\bge\be c\bcl\bli\bie\ben\bnt\bt         t\bth\bhe\beo\bor\bre\bet\bti\bic\bca\bal\bl
     l\bli\bim\bmi\bit\bt  l\bli\bim\bmi\bit\bt  s\bst\bty\byl\ble\be     c\bca\bac\bch\bhi\bin\bng\bg    d\bde\bef\bfe\ber\brr\bre\bed\bd   c\bco\bon\bnc\bcu\bur\brr\bre\ben\bnc\bcy\by    d\bde\bef\bfe\ber\br r\bra\bat\bte\be
@@ -333,12 +336,16 @@ entirely by the receiving Postfix.
 D\bDi\bis\bsc\bcu\bus\bss\bsi\bio\bon\bn o\bof\bf c\bco\bon\bnc\bcu\bur\brr\bre\ben\bnc\bcy\by l\bli\bim\bmi\bit\bte\bed\bd s\bse\ber\brv\bve\ber\br r\bre\bes\bsu\bul\blt\bts\bs
 
 All results in the previous sections are based on the first delivery runs only;
-they do not include any second etc. delivery attempts. The first two examples
-show that the effect of feedback is negligible when concurrency is limited due
-to congestion. This is because the initial concurrency is already at the
-client's concurrency maximum, and because there is 10-100 times more positive
-than negative feedback. Under these conditions, it is no surprise that the
-contribution from SMTP connection caching is also negligible.
+they do not include any second etc. delivery attempts. It's also worth noting
+that the measurements look at steady-state behavior only. They don't show what
+happens when the client starts sending at a much higher or lower concurrency.
+
+The first two examples show that the effect of feedback is negligible when
+concurrency is limited due to congestion. This is because the initial
+concurrency is already at the client's concurrency maximum, and because there
+is 10-100 times more positive than negative feedback. Under these conditions,
+it is no surprise that the contribution from SMTP connection caching is also
+negligible.
 
 In the last example, the old +/-1 feedback per delivery will defer 50% of the
 mail when confronted with an active (anvil-style) server concurrency limit,
@@ -350,6 +357,18 @@ next section.
 
 L\bLi\bim\bmi\bit\bta\bat\bti\bio\bon\bns\bs o\bof\bf l\ble\bes\bss\bs-\b-t\bth\bha\ban\bn-\b-1\b1 p\bpe\ber\br d\bde\bel\bli\biv\bve\ber\bry\by f\bfe\bee\bed\bdb\bba\bac\bck\bk
 
+Less-than-1 feedback is of interest primarily when sending large amounts of
+mail to destinations with active concurrency limiters (servers that reply with
+421, or firewalls that send RST). When sending small amounts of mail per
+destination, less-than-1 per-delivery feedback won't have a noticeable effect
+on the per-destination concurrency, because the number of deliveries to the
+same destination is too small. You might just as well use zero per-delivery
+feedback and stay with the initial per-destination concurrency. And when mail
+deliveries fail due to congestion instead of active concurrency limiters, the
+measurements above show that per-delivery feedback has no effect. With large
+amounts of mail you might just as well use zero per-delivery feedback and start
+with the maximal per-destination concurrency.
+
 The scheduler with less-than-1 concurrency feedback per delivery solves a
 problem with servers that have active concurrency limiters. This works only
 because feedback is handled in a peculiar manner: positive feedback will
@@ -379,8 +398,8 @@ of 4 bad servers in the above load balancer scenario, use positive feedback of
 1/4 per "good" delivery (no connect or handshake error), and use an equal or
 smaller amount of negative feedback per "bad" delivery. The downside of using
 concurrency-independent feedback is that some of the old +/-1 feedback problems
-will return at large concurrencies. Sites that deliver at non-trivial per-
-destination concurrencies will require special configuration.
+will return at large concurrencies. Sites that must deliver mail at non-trivial
+per-destination concurrencies will require special configuration.
 
 C\bCo\bon\bnc\bcu\bur\brr\bre\ben\bnc\bcy\by c\bco\bon\bnf\bfi\big\bgu\bur\bra\bat\bti\bio\bon\bn p\bpa\bar\bra\bam\bme\bet\bte\ber\brs\bs
 
@@ -448,7 +467,7 @@ Postfix versions.
 
 P\bPr\bre\bee\bem\bmp\bpt\bti\biv\bve\be s\bsc\bch\bhe\bed\bdu\bul\bli\bin\bng\bg
 
-This document attempts to describe the new queue manager and its preemptive
+The following sections describe the new queue manager and its preemptive
 scheduler algorithm. Note that the document was originally written to describe
 the changes between the new queue manager (in this text referred to as nqmgr,
 the name it was known by before it became the default queue manager) and the
@@ -1113,14 +1132,15 @@ C\bCr\bre\bed\bdi\bit\bts\bs
   * Wietse Venema designed and implemented the initial queue manager with per-
     domain FIFO scheduling, and per-delivery +/-1 concurrency feedback.
   * Patrik Rak designed and implemented preemption where mail with fewer
-    recipients can slip past mail with more recipients.
+    recipients can slip past mail with more recipients in a controlled manner,
+    and wrote up its documentation.
   * Wietse Venema initiated a discussion with Patrik Rak and Victor Duchovni on
     alternatives for the +/-1 feedback scheduler's aggressive behavior. This is
     when K/N feedback was reviewed (N = concurrency). The discussion ended
     without a good solution for both negative feedback and dead site detection.
   * Victor Duchovni resumed work on concurrency feedback in the context of
     concurrency-limited servers.
-  * Wietse Venema then re-designed the concurrency scheduler in terms of
+  * Wietse Venema then re-designed the concurrency scheduler in terms of the
     simplest possible concepts: less-than-1 concurrency feedback per delivery,
     forward and reverse concurrency feedback hysteresis, and pseudo-cohort
     failure. At this same time, concurrency feedback was separated from dead
index 8f5f75680a61d2deb3a45cd7d635c2c7b74e5676..4705fd6056f597ab1a80e73bff2208d5772c6088 100644 (file)
@@ -26,17 +26,19 @@ deliveries at specific times, and removes mail from the queue after
 the last delivery attempt.  There are two major classes of mechanisms
 that control the operation of the queue manager. </p>
 
+<p> Topics covered by this document: </p>
+
 <ul>
 
-<li> <a href="#concurrency"> Concurrency scheduling </a> is concerned
+<li> <a href="#concurrency"> Concurrency scheduling</a>, concerned
 with the number of concurrent deliveries to a specific destination,
 including decisions on when to suspend deliveries after persistent
 failures.
 
-<li> <a href="#jobs"> Preemptive scheduling </a> is concerned with
+<li> <a href="#jobs"> Preemptive scheduling</a>, concerned with
 the selection of email messages and recipients for a given destination.
 
-<li> <a href="#credits"> Credits </a>. This document would not be
+<li> <a href="#credits"> Credits</a>, something this document would not be
 complete without.
 
 </ul>
@@ -97,7 +99,7 @@ concurrency scheduler </a> </h3>
 
 <p> From the start, Postfix has used a simple but robust algorithm
 where the per-destination delivery concurrency is decremented by 1
-after a delivery suffered connection or handshake failure, and
+after delivery failed due to connection or handshake failure, and
 incremented by 1 otherwise.  Of course the concurrency is never
 allowed to exceed the maximum per-destination concurrency limit.
 And when a destination's concurrency level drops to zero, the
@@ -282,7 +284,8 @@ argument to the listen(2) system call, and "postfix reload" does
 not re-issue this call.
 
 <li> Mail was discarded with "<a href="postconf.5.html#local_recipient_maps">local_recipient_maps</a> = static:all" and
-"<a href="postconf.5.html#local_transport">local_transport</a> = discard". The discard action in header/body checks
+"<a href="postconf.5.html#local_transport">local_transport</a> = discard". The discard action in access maps or
+header/body checks
 could not be used as it fails to update the <a href="postconf.5.html#in_flow_delay">in_flow_delay</a> counters.
 
 </ul>
@@ -468,7 +471,7 @@ a server concurrency limit and a client initial destination concurrency
 of 5, and a server process limit of 10; all other conditions were
 the same as with the first measurement. The same result would be
 obtained with a FreeBSD or Linux server, because the "pushing back"
-is done entirely by the receiving Postfix. </p>
+is done entirely by the receiving side. </p>
 
 <blockquote>
 
@@ -529,7 +532,12 @@ with increasing concurrency. See text for a discussion of results.
 
 <p> All results in the previous sections are based on the first
 delivery runs only; they do not include any second etc. delivery
-attempts.  The first two examples show that the effect of feedback
+attempts. It's also worth noting that the measurements look at
+steady-state behavior only. They don't show what happens when the
+client starts sending at a much higher or lower concurrency.
+</p>
+
+<p> The first two examples show that the effect of feedback
 is negligible when concurrency is limited due to congestion. This
 is because the initial concurrency is already at the client's
 concurrency maximum, and because there is 10-100 times more positive
@@ -548,6 +556,20 @@ the next section.  </p>
 
 <h3> <a name="concurrency_limitations"> Limitations of less-than-1 per delivery feedback </a> </h3>
 
+<p> Less-than-1 feedback is of interest primarily when sending large
+amounts of mail to destinations with active concurrency limiters
+(servers that reply with 421, or firewalls that send RST).  When
+sending small amounts of mail per destination, less-than-1 per-delivery
+feedback won't have a noticeable effect on the per-destination
+concurrency, because the number of deliveries to the same destination
+is too small. You might just as well use zero per-delivery feedback
+and stay with the initial per-destination concurrency. And when
+mail deliveries fail due to congestion instead of active concurrency
+limiters, the measurements above show that per-delivery feedback
+has no effect.  With large amounts of mail you might just as well
+use zero per-delivery feedback and start with the maximal per-destination
+concurrency.  </p>
+
 <p> The scheduler with less-than-1 concurrency
 feedback per delivery solves a problem with servers that have active
 concurrency limiters.  This works only because feedback is handled
@@ -582,8 +604,8 @@ delivery (no connect or handshake error), and use an equal or smaller
 amount of negative feedback per "bad" delivery.  The downside of
 using concurrency-independent feedback is that some of the old +/-1
 feedback problems will return at large concurrencies.  Sites that
-deliver at non-trivial per-destination concurrencies will require
-special configuration.  </p>
+must deliver mail at non-trivial per-destination concurrencies will
+require special configuration.  </p>
 
 <h3> <a name="concurrency_config"> Concurrency configuration parameters </a> </h3>
 
@@ -643,7 +665,7 @@ activity </td> </tr>
 
 <p>
 
-This document attempts to describe the new queue manager and its
+The following sections describe the new queue manager and its
 preemptive scheduler algorithm. Note that the document was originally
 written to describe the changes between the new queue manager (in
 this text referred to as <tt>nqmgr</tt>, the name it was known by
@@ -1776,7 +1798,8 @@ with per-domain FIFO scheduling, and per-delivery +/-1 concurrency
 feedback.
 
 <li> Patrik Rak designed and implemented preemption where mail with
-fewer recipients can slip past mail with more recipients.
+fewer recipients can slip past mail with more recipients in a
+controlled manner, and wrote up its documentation.
 
 <li> Wietse Venema initiated a discussion with Patrik Rak and Victor
 Duchovni on alternatives for the +/-1 feedback scheduler's aggressive
@@ -1788,10 +1811,10 @@ feedback and dead site detection.
 context of concurrency-limited servers.
 
 <li> Wietse Venema then re-designed the concurrency scheduler in
-terms of simplest possible concepts: less-than-1 concurrency feedback
-per delivery, forward and reverse concurrency feedback hysteresis,
-and pseudo-cohort failure. At this same time, concurrency feedback
-was separated from dead site detection.
+terms of the simplest possible concepts: less-than-1 concurrency
+feedback per delivery, forward and reverse concurrency feedback
+hysteresis, and pseudo-cohort failure. At this same time, concurrency
+feedback was separated from dead site detection.
 
 <li> These simplifications, and their modular implementation, helped
 to develop further insights into the different roles that positive
index a3df159e69b0a62ef4ddbdd3e30aa2a0aafffe6c..91aa69b439ea15621c80a0f3ab8fc34ad21f1e31 100644 (file)
@@ -3278,8 +3278,7 @@ Examples:
 
 <p>
 The initial per-destination concurrency level for parallel delivery
-to the same destination. This limit applies to delivery via <a href="smtp.8.html">smtp(8)</a>,
-and via the <a href="pipe.8.html">pipe(8)</a> and <a href="virtual.8.html">virtual(8)</a> delivery agents.
+to the same destination.
 With per-destination recipient limit &gt; 1, a destination is a domain,
 otherwise it is a recipient.
 </p>
index e56ee0512eed02b62c9f72533bcf578e8bd40bfe..31d55efce52e1d661c6d209ddf4b1aaf4576d49e 100644 (file)
@@ -1829,8 +1829,7 @@ inet_protocols = ipv4, ipv6
 .ft R
 .SH initial_destination_concurrency (default: 5)
 The initial per-destination concurrency level for parallel delivery
-to the same destination. This limit applies to delivery via \fBsmtp\fR(8),
-and via the \fBpipe\fR(8) and \fBvirtual\fR(8) delivery agents.
+to the same destination.
 With per-destination recipient limit > 1, a destination is a domain,
 otherwise it is a recipient.
 .PP
index 537b27937de951418ff1f3be61ec9c99537d649f..8e35f8122ea0564577f507a13e5f9bce90463b49 100644 (file)
@@ -26,17 +26,19 @@ deliveries at specific times, and removes mail from the queue after
 the last delivery attempt.  There are two major classes of mechanisms
 that control the operation of the queue manager. </p>
 
+<p> Topics covered by this document: </p>
+
 <ul>
 
-<li> <a href="#concurrency"> Concurrency scheduling </a> is concerned
+<li> <a href="#concurrency"> Concurrency scheduling</a>, concerned
 with the number of concurrent deliveries to a specific destination,
 including decisions on when to suspend deliveries after persistent
 failures.
 
-<li> <a href="#jobs"> Preemptive scheduling </a> is concerned with
+<li> <a href="#jobs"> Preemptive scheduling</a>, concerned with
 the selection of email messages and recipients for a given destination.
 
-<li> <a href="#credits"> Credits </a>. This document would not be
+<li> <a href="#credits"> Credits</a>, something this document would not be
 complete without.
 
 </ul>
@@ -97,7 +99,7 @@ concurrency scheduler </a> </h3>
 
 <p> From the start, Postfix has used a simple but robust algorithm
 where the per-destination delivery concurrency is decremented by 1
-after a delivery suffered connection or handshake failure, and
+after delivery failed due to connection or handshake failure, and
 incremented by 1 otherwise.  Of course the concurrency is never
 allowed to exceed the maximum per-destination concurrency limit.
 And when a destination's concurrency level drops to zero, the
@@ -282,7 +284,8 @@ argument to the listen(2) system call, and "postfix reload" does
 not re-issue this call.
 
 <li> Mail was discarded with "local_recipient_maps = static:all" and
-"local_transport = discard". The discard action in header/body checks
+"local_transport = discard". The discard action in access maps or
+header/body checks
 could not be used as it fails to update the in_flow_delay counters.
 
 </ul>
@@ -468,7 +471,7 @@ a server concurrency limit and a client initial destination concurrency
 of 5, and a server process limit of 10; all other conditions were
 the same as with the first measurement. The same result would be
 obtained with a FreeBSD or Linux server, because the "pushing back"
-is done entirely by the receiving Postfix. </p>
+is done entirely by the receiving side. </p>
 
 <blockquote>
 
@@ -529,7 +532,12 @@ with increasing concurrency. See text for a discussion of results.
 
 <p> All results in the previous sections are based on the first
 delivery runs only; they do not include any second etc. delivery
-attempts.  The first two examples show that the effect of feedback
+attempts. It's also worth noting that the measurements look at
+steady-state behavior only. They don't show what happens when the
+client starts sending at a much higher or lower concurrency.
+</p>
+
+<p> The first two examples show that the effect of feedback
 is negligible when concurrency is limited due to congestion. This
 is because the initial concurrency is already at the client's
 concurrency maximum, and because there is 10-100 times more positive
@@ -548,6 +556,20 @@ the next section.  </p>
 
 <h3> <a name="concurrency_limitations"> Limitations of less-than-1 per delivery feedback </a> </h3>
 
+<p> Less-than-1 feedback is of interest primarily when sending large
+amounts of mail to destinations with active concurrency limiters
+(servers that reply with 421, or firewalls that send RST).  When
+sending small amounts of mail per destination, less-than-1 per-delivery
+feedback won't have a noticeable effect on the per-destination
+concurrency, because the number of deliveries to the same destination
+is too small. You might just as well use zero per-delivery feedback
+and stay with the initial per-destination concurrency. And when
+mail deliveries fail due to congestion instead of active concurrency
+limiters, the measurements above show that per-delivery feedback
+has no effect.  With large amounts of mail you might just as well
+use zero per-delivery feedback and start with the maximal per-destination
+concurrency.  </p>
+
 <p> The scheduler with less-than-1 concurrency
 feedback per delivery solves a problem with servers that have active
 concurrency limiters.  This works only because feedback is handled
@@ -582,8 +604,8 @@ delivery (no connect or handshake error), and use an equal or smaller
 amount of negative feedback per "bad" delivery.  The downside of
 using concurrency-independent feedback is that some of the old +/-1
 feedback problems will return at large concurrencies.  Sites that
-deliver at non-trivial per-destination concurrencies will require
-special configuration.  </p>
+must deliver mail at non-trivial per-destination concurrencies will
+require special configuration.  </p>
 
 <h3> <a name="concurrency_config"> Concurrency configuration parameters </a> </h3>
 
@@ -643,7 +665,7 @@ activity </td> </tr>
 
 <p>
 
-This document attempts to describe the new queue manager and its
+The following sections describe the new queue manager and its
 preemptive scheduler algorithm. Note that the document was originally
 written to describe the changes between the new queue manager (in
 this text referred to as <tt>nqmgr</tt>, the name it was known by
@@ -1776,7 +1798,8 @@ with per-domain FIFO scheduling, and per-delivery +/-1 concurrency
 feedback.
 
 <li> Patrik Rak designed and implemented preemption where mail with
-fewer recipients can slip past mail with more recipients.
+fewer recipients can slip past mail with more recipients in a
+controlled manner, and wrote up its documentation.
 
 <li> Wietse Venema initiated a discussion with Patrik Rak and Victor
 Duchovni on alternatives for the +/-1 feedback scheduler's aggressive
@@ -1788,10 +1811,10 @@ feedback and dead site detection.
 context of concurrency-limited servers.
 
 <li> Wietse Venema then re-designed the concurrency scheduler in
-terms of simplest possible concepts: less-than-1 concurrency feedback
-per delivery, forward and reverse concurrency feedback hysteresis,
-and pseudo-cohort failure. At this same time, concurrency feedback
-was separated from dead site detection.
+terms of the simplest possible concepts: less-than-1 concurrency
+feedback per delivery, forward and reverse concurrency feedback
+hysteresis, and pseudo-cohort failure. At this same time, concurrency
+feedback was separated from dead site detection.
 
 <li> These simplifications, and their modular implementation, helped
 to develop further insights into the different roles that positive
index 9902af95518368cd0d445683c200f96845b2c574..b81932523f4d69d9cb3428c2f207fca510ebb05d 100644 (file)
@@ -1859,8 +1859,7 @@ inet_protocols = ipv4, ipv6
 
 <p>
 The initial per-destination concurrency level for parallel delivery
-to the same destination. This limit applies to delivery via smtp(8),
-and via the pipe(8) and virtual(8) delivery agents.
+to the same destination.
 With per-destination recipient limit &gt; 1, a destination is a domain,
 otherwise it is a recipient.
 </p>
index 8c07e0209498b65026af9432b12275383e79efdb..2c74c00f74f4e201585d6b8fb43823b664c9a997 100644 (file)
@@ -69,14 +69,15 @@ typedef struct DELIVER_REQUEST {
 #define DEL_REQ_FLAG_MTA_VRFY  (1<<8)  /* MTA-requested address probe */
 #define DEL_REQ_FLAG_USR_VRFY  (1<<9)  /* user-requested address probe */
 #define DEL_REQ_FLAG_RECORD    (1<<10) /* record and deliver */
-#define DEL_REQ_FLAG_SCACHE_LD (1<<11) /* Consult opportunistic cache */
-#define DEL_REQ_FLAG_SCACHE_ST (1<<12) /* Update opportunistic cache */
+#define DEL_REQ_FLAG_CONN_LOAD (1<<11) /* Consult opportunistic cache */
+#define DEL_REQ_FLAG_CONN_STORE        (1<<12) /* Update opportunistic cache */
 
  /*
-  * Cache Load and Store as value or mask. Use explicit names for multi-bit
+  * Cache Load and Store as value or mask. Use explicit _MASK for multi-bit
   * values.
   */
-#define DEL_REQ_FLAG_SCACHE_MASK (DEL_REQ_FLAG_SCACHE_LD|DEL_REQ_FLAG_SCACHE_ST)
+#define DEL_REQ_FLAG_CONN_MASK \
+       (DEL_REQ_FLAG_CONN_LOAD | DEL_REQ_FLAG_CONN_STORE)
 
  /*
   * For compatibility, the old confusing names.
index def7a4d996cb4fb3e9711987c4d17377b26eeb90..6259379e109ad419b76363e8d39f043b151b1cfc 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      "20071213"
+#define MAIL_RELEASE_DATE      "20071215"
 #define MAIL_VERSION_NUMBER    "2.5"
 
 #ifdef SNAPSHOT
index 225e092134c93bc68174a18065670ddae1e6a5b3..b37394c77d495d9092ef54b068b10f3256e3b18e 100644 (file)
@@ -138,12 +138,12 @@ QMGR_ENTRY *qmgr_entry_select(QMGR_QUEUE *queue)
         * prevents unnecessary session caching when we have a burst of mail
         * <= the initial concurrency limit.
         */
-       if ((queue->dflags & DEL_REQ_FLAG_SCACHE_ST) == 0) {
+       if ((queue->dflags & DEL_REQ_FLAG_CONN_STORE) == 0) {
            if (BACK_TO_BACK_DELIVERY()) {
                if (msg_verbose)
                    msg_info("%s: allowing on-demand session caching for %s",
                             myname, queue->name);
-               queue->dflags |= DEL_REQ_FLAG_SCACHE_MASK;
+               queue->dflags |= DEL_REQ_FLAG_CONN_MASK;
            }
        }
 
@@ -158,7 +158,7 @@ QMGR_ENTRY *qmgr_entry_select(QMGR_QUEUE *queue)
                if (msg_verbose)
                    msg_info("%s: disallowing on-demand session caching for %s",
                             myname, queue->name);
-               queue->dflags &= ~DEL_REQ_FLAG_SCACHE_ST;
+               queue->dflags &= ~DEL_REQ_FLAG_CONN_STORE;
            }
        }
     }
index 9e10a21ff8475d6cda6d28fd652d57d9b9fb8906..9f89e0a7335dfb7aeddebffaa937204a38d1af20 100644 (file)
@@ -150,12 +150,12 @@ QMGR_ENTRY *qmgr_entry_select(QMGR_PEER *peer)
         * prevents unnecessary session caching when we have a burst of mail
         * <= the initial concurrency limit.
         */
-       if ((queue->dflags & DEL_REQ_FLAG_SCACHE_ST) == 0) {
+       if ((queue->dflags & DEL_REQ_FLAG_CONN_STORE) == 0) {
            if (BACK_TO_BACK_DELIVERY()) {
                if (msg_verbose)
                    msg_info("%s: allowing on-demand session caching for %s",
                             myname, queue->name);
-               queue->dflags |= DEL_REQ_FLAG_SCACHE_MASK;
+               queue->dflags |= DEL_REQ_FLAG_CONN_MASK;
            }
        }
 
@@ -170,7 +170,7 @@ QMGR_ENTRY *qmgr_entry_select(QMGR_PEER *peer)
                if (msg_verbose)
                    msg_info("%s: disallowing on-demand session caching for %s",
                             myname, queue->name);
-               queue->dflags &= ~DEL_REQ_FLAG_SCACHE_ST;
+               queue->dflags &= ~DEL_REQ_FLAG_CONN_STORE;
            }
        }
     }
index c73a7d59eb8c912ecb04b4fe3ca8df3baf70da9e..dab3b09dcc1895a0f4342c2a9bf431076ee1c1be 100644 (file)
@@ -802,6 +802,7 @@ int     main(int argc, char **argv)
     single_server_main(argc, argv, qmqpd_service,
                       MAIL_SERVER_TIME_TABLE, time_table,
                       MAIL_SERVER_STR_TABLE, str_table,
+                      MAIL_SERVER_BOOL_TABLE, bool_table,
                       MAIL_SERVER_PRE_INIT, pre_jail_init,
                       MAIL_SERVER_PRE_ACCEPT, pre_accept,
                       MAIL_SERVER_POST_INIT, post_jail_init,
index 6b7582b0dbae9d22db8bb58ea5e7ccab8139c0f7..f8ec4fdcc60b983455b4d2352e3c2213d4124def 100644 (file)
@@ -457,9 +457,9 @@ static void smtp_cache_policy(SMTP_STATE *state, const char *dest)
     if (smtp_cache_dest && string_list_match(smtp_cache_dest, dest)) {
        state->misc_flags |= SMTP_MISC_FLAG_CONN_CACHE_MASK;
     } else if (var_smtp_cache_demand) {
-       if (request->flags & DEL_REQ_FLAG_SCACHE_LD)
+       if (request->flags & DEL_REQ_FLAG_CONN_LOAD)
            state->misc_flags |= SMTP_MISC_FLAG_CONN_LOAD;
-       if (request->flags & DEL_REQ_FLAG_SCACHE_ST)
+       if (request->flags & DEL_REQ_FLAG_CONN_STORE)
            state->misc_flags |= SMTP_MISC_FLAG_CONN_STORE;
     }
 }