From: Wietse Venema (no email)
Date: Thu Dec 01 2005 - 09:13:35 EST
Wietse Venema:
> Christian Theune:
> > Ok, I increased the log level and here is what I got for one of the
> > error messages:
> >
> > Dec 1 13:00:41 uter postfix/lmtp[4407]: deliver_message: from
> >
> > Dec 1 13:00:41 uter postfix/lmtp[4407]: >
> > /var/imap/socket/lmtp[/var/imap/socket/lmtp]: RSET
> > Dec 1 13:00:41 uter postfix/lmtp[4407]: <
> > /var/imap/socket/lmtp[/var/imap/socket/lmtp]: 500 5.5.2 Syntax error
> > Dec 1 13:00:41 uter postfix/lmtp[4407]: deliver_message: reusing
>
> Cyrus is screwed up. Postfix sends a valid RESET command.
>
> > (count 3) session with: /var/imap/socket/lmtp
Surprise: the LMTP client reuses the session after 5xx error reply.
The Postfix SMTP client would never do that.
You can work around this with lmtp_cache_connection=no.
> > Dec 1 13:00:41 uter postfix/lmtp[4407]: >
> > /var/imap/socket/lmtp[/var/imap/socket/lmtp]: MAIL
> > FROM:<> SIZE=4246
> > Dec 1 13:00:41 uter postfix/lmtp[4407]: <
> > /var/imap/socket/lmtp[/var/imap/socket/lmtp]: 500 5.5.2 Syntax error
>
> Cyrus is screwed up. Same reply as RSET.
Now, what may be happening here is that server and client have
somehow gotten out of step.
For example (I am not saying that this is the cause!), if Cyrus
"detects" end-of-data too early it will spit out a gazillion "500
5.5.2 Syntax error" responses for every line of email content that
follows. Postfix won't flush the input buffers, and will read
these replies as if they are replies to commands sent after the
real end-of-data.
The 2.3 Postfix has a "purge" primitive for streams that discards
whatever is buffered in Postfix itself. This could be used to clear
the input buffer before sending RSET. However, this primitive does
not discard data that's still buffered in the kernel, and would
have to be extended to handle that.
But all this is academic. The LMTP client should not reuse the
session after a 5XX reply. Worse it's not even my own bug.
Wietse
|
|
|