Tony Finch wrote:
The latter, I think, depending on what you mean by "online hold".
"Connection Sharing/Caching" (CS) or like methods.
When a message arrives, Exim normally tries to deliver it immediately.
In my experience, its been typical of most mailer, if not all, to
begin delivery of email (netmail) immediately with options to delay of
course for some.
If that
succeeds it looks at the "waiting" hints database to see if there are any
messages queued for the same host, and delivers them immediately. There
is no in-memory state for these queued messages. Exim doesn't keep SMTP
connections idle, and normally runs the queue in a random order.
IMTO, this is the better approach than the connect, hold approach.
Yes. Exim has an option to serialize deliveries to certain hosts, in which
case there is another hints database recording currently active
connections. When Exim is about to connect to a host it checks this
database and skips the host if there is a record for it. If there aren't
any other destination hosts the message will be queued and should soon be
picked up by the waiting mechanism. (This is more likely if the target is
relatively slow, which is what the feature was designed for.) We use this
to avoid load spikes caused by large mailing list deliveries to our
message store servers, but not for general purpose deliveries.
I see.
What I was expressing to Klensin in my generalization of how SMTP
reduced the complexity for queuing, I should of noted that this was
highly dependent on leverage multi-threaded technology to maximize
throughput. More powerful hardware and OS allowed the efficiency of
1-M and N-M queuing strategies be more feasible and realistic. I
suggest that many of the long time mailers uses strategies that was
appropriate for the era.
Mail Queuing is really no different than everyday queuing concept we
see, have used and probably still use today. A Super Market/Grocery
Store checkout lines, a Bank, an airline, etc. The queues they they
employ is not by accident. Overall, as an checkout line becomes
empty, people on other close lines begin to move to it. Even with a
dedicated queue, such as a "Less than 10 items" queue, if another
queue is/near empty, people move to it. When people were forced to
stay in a queue, the efficiency and throughput is shot. If a queue
become too large, then a new checkout line is opened (we hope <g>).
Same applies to mail when all service workers/queues are available to
all messages to maximize their throughput. The N-M queue model is
only efficient as it approaches the 1-M model.
If we strictly dealing with the question of how to handle part time
SMTP receiver failure, then the ultimate conclusion is as Crocker
eluded to, is defining the final exit strategy, Today, with SMTP, we
only have one final exit strategy:
BOUNCE when all attempts is exhausted
I guess at the implementation level, that may also includes
BLOCK
SMTP encourages a 2nd MX on a different MX host network. If that is
available, then the odds are good that there will never be a build up.
Old schooler mailer like Fidonet, it had a mandatory 1 hour period
(ZMH) where receivers must be available for routing, and among its
scheduler rules, it had ideas like:
00-23 Route Mail directly to target host
05-06 Route Mail via Your Network host (ZMH)
It seems that there might be a need to not bounce or block if the part
time receiver is known with specific settings set for it.
--
Sincerely
Hector Santos
http://www.santronics.com