Quoting Marc MERLIN <marc_news@???>:
> On Fri, Mar 21, 2003 at 04:47:12PM -0500, Patrice Fournier wrote: > > 2003-03-21 14:16:55 H=smtp3.wanadoo.fr (mwinf0402.wanadoo.fr)
> > [193.252.22.27] sender verify fail for <[a validaddress
> here]@wanadoo.fr>:
> > response to "RSET" from smtp.wanadoo.fr [193.252.22.83] was: 550
> > <mail.sabius.net-1048274167-testing@???>: Recipient address
> > rejected: User unknown
> >
> > A grep of the logs shows that this has never happened before.
> >
> > The callout cache cached the address it couldn't test as bad (but
> > didn't seem to cache the random test reject) and the mail was rejected.
> >
> > A quick glance at the code shows that this log could show up if the
> > 1st RSET smtp_write_command() failed... I can't confirm that's what
> > happened though.
>
> Are you doing postmaster and/or random address callout?
Yes, I do random address callout, (and you can see the error the server
sent to that test in the error log [550
<mail.sabius.net-1048274167-testing@???>: Recipient address
rejected: User unknown])
> If so, the problem is that after doing one RCPT TO, my original code
> issued a RSET because some sites refuse more than one RCPT TO for null
> envelopes.
This is correct, but I don't believe it's the cause of the problem.
> Unfortunately, some sites do not implement RSET correctly, hence the
> failure you see.
If it was, the response wouldn't probably be the one logged above. (and
that same server would have behaved like that only once, as no other such
line appears in my logs).
As the response is composed of the last text received by the
smtp_read_command() function, and the response logged is from the "RCPT
TO:" command, the callout stopped before the smtp_read_command() following
the "RSET". And as the logged command is taken from the last
smtp_write_command(), the last such call must be the one for the first
"RSET". Thus, the smtp_write_command() must have failed so that the
smtp_read_command() didn't get called. Later in the code, the last error
was checked and has it started by a '5', the coded decided that the callout
failed and logged the problem.
(This is all from memory from what I saw in the code when writing my bug
report so it may not be exact)