On Mon, 10 Jul 2000, Chris Keane wrote:
> However, I'm think the behaviour of 'exim -qq' is not what's expected.
> Suppose ppp0 is inactive; then all remote mail will get passed to a
> queryprogram router which will return "DEFER". Then when ppp0 becomes
> active, 'exim -qqf' gets run, and at this point the queryprogram router
> returns
>
> OK remote_smtp some.smtp.server bydns_a
>
> for every message. So I'm under the impression that the first pass of
> 'exim -qq' should mean that *all* the outgoing messages in the queue get
> routed to some.smtp.server, and so the second pass should deliver them
> all in a single SMTP session (batch_max is unset). But if I run with
> 'exim -qqf -d9', it seems that each message is going in a separate SMTP
> session.
>
> Am I just misinterpreting what's expected here?
If I have understood you right, I don't think so, but I'm not sure. Can
you send me the -qqf output? ... No, don't bother. I've looked at the
code. The problem is the "f". It is forcing a delivery in the first
queue run instead of doing the queueing thing. I think this is because
the code is in common with what happens when queue_smtp is set; a force
overrides that. I have forgotten to cut that out when doing the 2-stage
queue run. I will do some tests and fix this in due course. Meanwhile,
look at lines starting at 1626 in transports/smtp.c:
if (!deliver_force && (queue_smtp ||
match_isinlist(addrlist->domain, &queue_smtp_domains,TRUE,TRUE,NULL)))
{
expired = FALSE;
for (addr = addrlist; addr != NULL; addr = addr->next)
{
if (addr->transport_return != DEFER) continue;
addr->message = "domain matches queue_smtp_domains, or -odqs set";
}
continue; /* With next host */
}
Try changing the first one to read
if ((!deliver_force || queue_2stage) && (queue_smtp ||
You do seem to be doing well at finding buglets.
(Of course, an alternative is to use -qq instead of -qqf.)
--
Philip Hazel University of Cambridge Computing Service,
ph10@??? Cambridge, England. Phone: +44 1223 334714.