[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)]




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