[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fwd: 2.99.57.pre3 router problem (pipe prediction wrong error)]
- To: zmailer@nic.funet.fi
- Subject: [Fwd: 2.99.57.pre3 router problem (pipe prediction wrong error)]
- From: "Darryl L. Miles" <darryl@netbauds.net>
- Date: Tue, 12 Oct 2004 15:33:51 +0100
- Original-Recipient: rfc822;zmailer-log@nic.funet.fi
- Sender: zmailer-owner@nic.funet.fi
- User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.8a4) Gecko/20040927
Hi folks,
I've just upgraded from .55 to .57-pre3 everything seems to be working fine except for one thing:
# /usr/sbin/sendmail -bt
ZMailer router (2.99.57.pre3 #1: Mon Oct 11 01:43:12 BST 2004)
This is the current CVS build, the router appears to run fine for a
while then stops working with the last line in the router log of:
[11139] router: pipe prediction wrong: got 39|37 not 40|39
The router processes still exist, and an strace (under Linux) on the
router process IDs indicate the master is periodically scanning the
router directory and all the hash dirs, finding the files, sometings
stat() the files. But not doing any routing with them and goes back to
idle.
If I stop the router and restart it, it will scan a load of the router
queue and then do the same thing again, pretty quickly, should it not be
able to recover from this situation by throwing out the message to be
resubmitted later or just marking the message as bad with timelimit and
skipping it for now ? Rather than halting all processing from that
point on.
I have found the cause:
In rrouter() for a couple of email addresses I used to return two
destinations from rrouter, i.e. I wanted to duplicate the message and
have it delivered as if multiple recipients had been specified in the
original message. My current code to do this looks like:
dlm_host="mydomain.co.uk"
\1 = $dlm_host (at this point)
if [ "xDARRYL" = "x$dlm_user" ]; then
tmp=$(echo $dlm_user@once.mydomain.co.uk, copy_in_user@once.mydomain.co.uk | \
listaddresses -c "" | \
maprrouter "$A" "$dlm_user" "$dlm_host" "$plustail" "$domain")
echo $tmp;
return "$tmp";
fi
return (((basic "\1" "$dlm_user@\1" $A)))
This seemed to work for 2.99.55 for the past few years nicely. The
once.mydomain.co.uk was a special thing to hopefully prevent it from
doing the same processing at this point twice and thus setting up a
loop, the once. gets stripped by another rule for this domain and it
then gets delivered normally (without this duplication occuring).
Any thoughts on helping me fix this for 57-pre3 and maybe doing this
hack properly.
Ideally I'd like to make it more generic by using a db like aliases does
(one to many), and be sure that each unique email address is only
expanded once before delivery is done. My aliases file would have a
fquser+fqdn key and an address list target.
Thanks,
Darryl
--
Darryl L. Miles
M: 07968 320 114
-
To unsubscribe from this list: send the line "unsubscribe zmailer" in
the body of a message to majordomo@nic.funet.fi