Charlie, I'm beginning to wonder if you actually understand the RFCs. Don't just pick apart the excerpts I am posting. Go and read the full RFC4954 and my quotes in context. Is there a reason you are being so stubborn? Does your motivation lay anywhere along the lines of improving the qpsmtpd server, or is it merely to engage in retarded Internet quibbling?

Let me break it down:
1) RFC4954 obsoletes 2554. This information was vague in 2554. It is clear in 4954. 2) a 334 response is to contain the BASE64 encoded string supplied by the SASL mechanism and MUST NOT contain any text other than the BASE64 encoded challenge. 3) "Please continue" is what qpsmtpd returns. "Please continue" is not from the SASL mechanism. It is also not BASE64 encoded. This is a bug! It needs to be fixed. 4) If the initial response argument to the AUTH command is omitted (as is the case with the command "AUTH PLAIN" vs "AUTH PLAIN [argument]"), you can't just return whatever text response strikes your fancy. You must return the appropriate challenge as defined in the SASL documentation. For AUTH PLAIN, this happens to be nothing. 5) When you want to send an empty response, RFC4954 spells out to the letter that it needs to be "334 " including that cute little trailing space. 6) Maybe my interpretation is wrong. Let's observe the behavior of some other clients and servers, or look at some examples posted around the web or in the RFCs. Whoops, they match what I just said. Maybe you should pull your head out of your butt and listen to what I'm saying. There might be something to it. And even in this fantasy world where your interpretation on everything is the only right and just one, at least one other client and other servers don't seem to agree with you. Maybe even if you were right and all this documentation were totally ambiguous, we should go ahead and go with the flow just to be compatible and make qpsmtpd a better piece of software that is usable by all those mundanes who don't live in your fantasy world. 7) The RFCs also clearly state that all AUTH exchanges, without being limited to only certain mechanism, need to respond to a client command of "*" by canceling the AUTH exchange and issuing a 501. qpsmtpd doesn't do this for AUTH PLAIN! ANOTHER BUG! I'm only trying to help. Why are you being so stubborn? Read RFC4954. 8) You mentioned previously that you couldn't find any documentation to support alpine's behavior of canceling the authentication in this circumstance. You used the word "disconnect" but that's not what I said not was it what I meant. Well I found the documentation for you. Not surprisingly, it's right there in that document you never read that supersedes RFC2554--RFC4954: If the client cannot BASE64 decode any of the server's challenges, it MUST cancel the authentication using the "*" response. Well that's why alpine issues a * in response to "Please continue." But before you go right back to arguing that I'm a douche and we can just BASE64 encode "Please continue," alpine ALSO spits out a warning that the server is issuing a non zero length initial challenge to AUTH PLAIN which is incorrect. And as I've repeatedly claimed and defended, alpine is right! qpsmtpd should return "334 ". nothing more and nothing less. The RFCs say so, alpine says so, examples agree with me, postfix does it this way, and damnit *I* just say so. I'm a nobody. I'm not even a qpsmtpd contributor. You can choose to ignore me if you want, but I have spent the last two days reading and rereading RFCs, researching this issue, debugging the problem, and trying to figure out for myself if the problem is a buggy old command-line email client that I don't even use or if it's something in the not-even-version-1-yet smtp server software that I've been running mostly without issues for years. Well it's out there, archived on the list, and I'm done defending myself. When somebody else has issues with SMTP AUTH in the future, hopefully they will come across this discourse and be able to understand the 10-second fix I've explained. Or better yet, perhaps a more open-minded committer will read this tonight and patch the git respository so these obvious bugs I pointed out won't have to be revisited again in the future.

I've got mine patched already. Charlie, you must be the life of the party when somebody cracks a joke and you try to argue the semantics of the punchline. Peace,
-Rick

Charlie Brady wrote:

On Sun, 29 Nov 2009, Rick wrote:

That the initial ready response should be empty is a little more discreetly implied: "When the initial-response argument is used with such a mechanism, the *initial empty challenge* is not sent to the client and the server[...] as if it were sent in response to the *empty challenge.*"

The statement above says absolutely nothing about what happens when the initial-response argument is not used. It explicitly only applies to when the argument is used.

Examples also show this:

C: AUTH PLAIN
S: 334
C: AHdlbGRvbgB3M2xkMG4=

The example only shows that it is possible to have an empty argument. It does not state that the argument must not be used.

----------------------------------
And in RFC4954:
"In SMTP, a server challenge that contains no data is defined as a 334 reply with no text part.

That doesn't say anything about a 334 reply which does have a text part.

Reply via email to