Hi Viktor...

excellent info, thanks a lot...

But then... why when a smtp dies due to watchdoug timeout, all other smtp 
processes die as well and there is no
kind of respawn?? (until qmgr tires delivery again, of course)

Thanks again!

Pedro.


--------------------------------------------
On Mon, 3/28/16, Viktor Dukhovni <postfix-us...@dukhovni.org> wrote:

 Subject: Re: Cascade smtp delivery failure when one smtp fails
 To: "Postfix users" <postfix-users@postfix.org>
 Date: Monday, March 28, 2016, 4:33 PM
 
 
 > On
 Mar 28, 2016, at 10:15 AM, Pedro David Marco <pedrod_ma...@yahoo.com>
 wrote:
 > 
 > It seems
 to me that when qmgr wants to deliver an email via smtp,
 qmgr
 > "assigns" it to a smtp
 process. As long as there are no concurrency
 > needs, the same smtp process is used
 repeatedly.... even for diferent
 > domain
 destinations.
 
 This
 impression is incorrect.  Deliveries are handled by the
 first
 idle smtp(8) delivery agent, or if
 none are idle, a new one is spawned,
 up to
 the process limit specified in master.cf or the default
 process
 limit.
 
 There is no prior "assignment". 
 Each smtp(8) delivery agent handles
 one
 request at a time, and goes back for more when it is
 done.
 
 The main complication
 is there are also per-nexthop destination
 concurrency limits, so messages for a busy
 destination may need
 to wait for delivery of
 other messages for the same destination
 when
 the concurrency limit is reached.  Similarly, once the
 process
 limit is reached, and all delivery
 agents are busy, new mail waits
 for other
 deliveries to complete.
 
 
 > NOW, if one smtp process delivery takes
 long, long long... until
 > it dies for
 the watchdog timeout,
 
 Watchdog timeouts are not normal Postfix
 behaviour.  They are a
 last-resort safety
 measure in the face of kernel bugs or execution
 on platforms that are not sufficiently
 compatible with Postfix.
 
 If
 you're seeing watchdog timeouts, there's something
 wrong with
 your system.
 
 > all smtp deliveries assigned to that smtp
 process fail! and
 > qmgr send them back
 to deferred queue....
 
 Exactly one delivery is "assigned" to
 a busy smtp(8) delivery
 agent.  No other
 deliveries wait for that agent specifically.
 
 However, if you restart the
 queue manager (via Postfix reload
 or
 similar) it will not be able to obtain an exclusive lock
 on a queue file that is open by a running
 delivery agent.
 In that case, other
 recipients from the same queue file may
 be
 blocked until the pending delivery completes.  This does
 not affect the delivery of new mail.
 
 DO NOT make a habit of
 restarting the queue manager.  In
 particular, avoid routine use of "postfix
 reload" from cron.
 
 > Is
 there any way to force postfix to use one smtp process
 > for each delivery so if one fail the
 others get delivered?
 
 The premise if flawed, so the question is
 moot.  Postfix
 uses multiple processes in
 parallel by default.
 
 -- 
     Viktor.

Reply via email to