hi,
[copy of message sent to philip, with extra info added and non-reverse
patch :)]
today we've tracked down a bug in the handling of queue_smtp_domains,
in exim 4.52:
the manual states that it's an expanded domainlist, but after lots of
trying today i found that i really didnt behave like one :) single
domains worked, but domainlists like
8< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >8
domainlist known_domains = [host]:[host]
queue_smtp_domains = !+known_domains
8< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >8
never seemed to produce a match, not positively nor negatively.
so we dove into the code; and we discoved a smallish bug in
transports/smtp.c for which we provide a patch here:
[s001 exim-4.52-ok]$ diff -Nru6 ../exim-4.52/src/transports/smtp.c src/transports/smtp.c
--- ../exim-4.52/src/transports/smtp.c Fri Jul 1 13:09:15 2005
+++ src/transports/smtp.c Tue Jul 26 18:48:42 2005
@@ -2314,13 +2314,13 @@
deliveries. When doing a queue run, queue_smtp_domains is always unset. If
there is a lookup defer in queue_smtp_domains, proceed as if the domain
were not in it. We don't want to hold up all SMTP deliveries! Except when
doing a two-stage queue run, don't do this if forcing. */
if ((!deliver_force || queue_2stage) && (queue_smtp ||
- match_isinlist(addrlist->domain, &queue_smtp_domains, 0, NULL, NULL,
+ match_isinlist(addrlist->domain, &queue_smtp_domains, 0, &domainlist_anchor, NULL,
MCL_DOMAIN, TRUE, NULL) == OK))
{
expired = FALSE;
for (addr = addrlist; addr != NULL; addr = addr->next)
{
if (addr->transport_return != DEFER) continue;
with this fix exim works just fine regarding queue_smtp_domains!
however, there is a snag, but i do not know whether it is related;
exim crashes sometimes with signal 11. this is from the paniclog:
2005-07-27 11:05:12 1Dxhne-00071w-JO failed to read delivery status for ...@....nl from delivery subprocess
2005-07-27 11:05:12 1Dxhne-00071w-JO appendfile transport process returned non-zero status 0x000b: terminated by signal 11
2005-07-27 11:05:12 1Dxhqi-0007LD-GN failed to read delivery status for \0\...@....nl from delivery subprocess
2005-07-27 11:05:12 1Dxhqi-0007LD-GN appendfile transport process returned non-zero status 0x000b: terminated by signal 11
(the dots were real mailaddresses)
no core that i could find, sorry.
i've recompiled (make clean && make), just to be sure, haven't seen
the crash again until now, but i thought i'd mention it anyway.
thanks,
Mrten.
--
I don't mind going nowhere, as long as it's an interesting path.