[comp.mail.sendmail] dangling null pointers

reeder@ut-emx.UUCP (William P. Reeder) (03/02/89)

While I am digging into sendmail some more, I was wondering if anyone had
already chased down this problem:

If a mailer returns rcode=EX_TEMPFAIL, 
sendmail (re)queues the message for a later trial.  I believe this
is done in queueup(), which is called from dropenvelope().

In this case, queueup() only writes "R" lines for addresses which
have the QQUEUEUP flag set.  The problem I have seen is that sometimes
there will be an address record with QQUEUEUP set, but the q_paddr
field is NULL.  queueup() doesn't check to see if this field is NULL
and does an fprintf(tfp, "R%s\n", q->q_paddr).  I have been told that
location 0 in a VAX is always zero, which makes it look like a null
string.  Having a line in the qf file with only "R" on it is no problem.
What is a problem is that I don't have a VAX, and location zero in my
machine is 022 followed by 000.  I get anywhere from 1 to 3 errors
a day claiming that ^R is an unknown user.  In every case, I have found
that sendmail experienced a temporary failure of some sort (usually
an open timed out sending SMTP mail to another host) and rewrote the
queue file for a later attempt.  When the daemon comes around during
the next queue run, it reads the queue file, finds a recipient ^R,
and complains.

Has anyone else seen this problem?  How do you deal with it?

Thanks for your time,
William Reeder
reeder@emx.utexas.edu, postmaster@emx.utexas.edu
-- 
DISCLAIMER:	I speak only for myself, and usually only to myself.