Hey folks,
I have this question out of general curiosity. If you don't have time
to answer this, just ignore this.
Anyway, on page 375 of the exim book I read:
======================================================================
"Exim contains support for ETRN but it does not fit naturally into the
way Exim is designed. Because Exim does not organize its message queue
by host, it is not straightforward to find ''all messages waiting for
this host" -- meaning the dial-up host that connects to fetch its batch
of email messages.
======================================================================
But on page 269:
=======================================================================
"There is a database that contains lists of messages that are awaiting
delivery to specific hosts, after having failed at their first attempt.
...The name of the database is wait-."
======================================================================
Doesn't it negate the paragraph on page 375? I might have taken this out
of the context, but I couldn't understand it otherwise.
Then, on page 286 in the "Host Errors" section:
=======================================================================
"Retry data is created for the host, and is not tried again, for any
message, until its retry time arrives. If the current set of addresses
are not all delivered to some backup host by this delivery process, the
message is added to a list of those waiting for the failing host."
=======================================================================
This supports the paragraph on page 269. Then, on the same page in the
"Message Errors" section:
=======================================================================
"For a temporary message error, all addresses that are routed to the host
are deferred. Retry data is not created for the host, but instead, a
retry record for the combination of a host plus a message ID is created.
The message is not added to the list of those waiting for this host."
=======================================================================
This again supports the paragraph on page 375 again.
I have two questions.
1) Why not treat all errors (host, message and recipient) the same?
That is, the retry information is still host based, but the association
between the host and a particular message address is always maintained.
And then, as soon as the host is alive and kicking, exim would just push
all the messages waiting for it -- regardless of what class of error
caused the delay of any of the messages on the queue.
The book DOES give an explanation of why message errors are treated
differently. A similar explanation is given for the recipient errors as
well:
"...The message is not added to the list of those waiting for this
host. This ensures that the failing messages will not be sent to this
host again until the retry time arrives."
But why wouldn't we want the message to be tried when the host becomes
available even if it was a message error?
2) Isn't there enough information even with the current design to
"queue run" only those messages that are destined for a particular host
in response to an ETRN command? I know that the "R" option can be used
but that's a little different, isn't it?
3) Finally, what is the difference between the retry and wait databases?
There, I've typed 1/600th of the O'Reilly book! Hope my rambling is not
totally off mark here -- there is a lot of information to digest.
Cheers,
Sergei