- else {
- CtdlEncodeBase64(buf, "Username:", 9);
- cprintf("334 %s\r\n", buf);
- SMTP->command_state = smtp_user;
+ if (!strncasecmp(method, "plain", 5) ) {
+ extract_token(encoded_authstring, argbuf, 1, ' ');
+ CtdlDecodeBase64(decoded_authstring,
+ encoded_authstring,
+ strlen(encoded_authstring) );
+ strcpy(ident, decoded_authstring);
+ strcpy(user, &decoded_authstring[strlen(ident) + 1] );
+ strcpy(pass, &decoded_authstring[strlen(ident) + strlen(user) + 2] );
+
+ if (CtdlLoginExistingUser(ident) == login_ok) {
+ if (CtdlTryPassword(pass) == pass_ok) {
+ smtp_auth_greeting();
+ return;
+ }
+ }
+ cprintf("504 5.7.4 Authentication failed.\r\n");