I got this from a friend on the ZMailer list..
----- Forwarded message from Matti Aarnio <[EMAIL PROTECTED]> -----
Subject: Re: Zmailer and Qmail are not fully compatible ...
From: Matti Aarnio <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED] (Matti Aarnio)
Date: Wed, 12 May 1999 19:06:20 +0300 (EET DST)
Cc: [EMAIL PROTECTED], [EMAIL PROTECTED],
[EMAIL PROTECTED]
(following on my previous letter topics)
After a bit more of manual testing:
...
> That is "250 ok" for the MAIL, but no replies to "RCPT" or "DATA".
> It looks like PIPELINING does not work at the QMAIL after all ?
> Then your quick cure would be to remove the "PIPELINING" text
> from the smtp server's EHLO responses.
>
> Timeout (300 sec) while waiting responses from remote
>
> Huh ? And ZMailer proceeds with message sending ?
> Now that might be a bug here, indeed.. (and produce the
> "hundreds of '500' errors you mention")
Yes, that it definitely is, now I have a sort of fix for it, too.
(but it isn't complete, I will return to that.)
The test seem to indicate that QMAIL does violate PIPELINING
rule (see RFC 2197) that says: (chapter 4.2):
(1) MUST NOT flush or otherwise lose the contents of the
TCP input buffer under any circumstances whatsoever.
This could be said more clearly. Like:
"When reading inputs from TCP input stream, it shall
consume only those characters that the command line
currently under processing does contain, and NEVER
loose data related to latter lines in the input, which
may appear in lowlevel socket read function."
At ZMailer this is done with double-buffering, socket is
read into a buffer from which a local special version of
getc() (and gets() calling it) does reading, and if needed,
buffer refilling.
What I do find surprising is that with PIPELINING input of:
MAIL From:<[EMAIL PROTECTED]> BODY=8BITMIME
RCPT To:<[EMAIL PROTECTED]>
(pausing here for the replies)
works just fine, but:
MAIL From:<[EMAIL PROTECTED]> BODY=8BITMIME
RCPT To:<[EMAIL PROTECTED]>
RCPT To:<[EMAIL PROTECTED]>
RCPT To:<[EMAIL PROTECTED]>
RCPT To:<[EMAIL PROTECTED]>
DATA
Yields only two replies:
250 ok
250 ok
waiting some 20-30 seconds, I can issue:
RSET
250 flushed
and it is honoured.
That tells me that your instance of QMAIL does
break PIPELINING rules at the RCPT processing.
A quick cure for you is to use some binary editing
capable editor e.g. emacs, and replace the:
250-PIPELINING\r\n
with e.g.:
250-X-PELINING\r\n
Then systems capable to use PIPELINING when sending
to your smtp server will cease of doing so.
/Matti Aarnio <[EMAIL PROTECTED]>
----- End forwarded message -----
----- End forwarded message -----
Greetz, Peter
--
| 'He broke my heart, | Peter van Dijk |
I broke his neck' | [EMAIL PROTECTED] |
nognikz - As the sun | Hardbeat@ircnet - #cistron/#linux.nl |
| Hardbeat@undernet - #groningen/#kinkfm/#vdh |