[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Zmailer and Qmail are not fully compatible ...



(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:<matti.aarnio@sonera.fi> BODY=8BITMIME
RCPT To:<hugues.dugres@temex.fr>
	(pausing here for the replies)

	works just fine, but:

MAIL From:<matti.aarnio@sonera.fi> BODY=8BITMIME
RCPT To:<hugues.dugres@temex.fr>
RCPT To:<hugues.dugres@temex.fr>
RCPT To:<hugues.dugres@temex.fr>
RCPT To:<hugues.dugres@temex.fr>
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 <mea@nic.funet.fi>