1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-07 15:00:34 -08:00

Make xoauth2 auth fail when a smtp server replies 334 (Bug#78366)

* lisp/mail/smtpmail.el (smtpmail-try-auth-method): Throw error 535
when receiving a "334 server challenge" reply.

(cherry picked from commit 53371c9594)
This commit is contained in:
Xiyue Deng 2025-05-16 02:48:52 -07:00 committed by Robert Pluim
parent cd57a05542
commit 41f8dc18df

View file

@ -639,11 +639,21 @@ USER and PASSWORD should be non-nil."
(cl-defmethod smtpmail-try-auth-method
(process (_mech (eql 'xoauth2)) user password)
(smtpmail-command-or-throw
process
(concat "AUTH XOAUTH2 "
(base64-encode-string
(concat "user=" user "\1auth=Bearer " password "\1\1") t))))
(let ((ret (smtpmail-command-or-throw
process
(concat "AUTH XOAUTH2 "
(base64-encode-string
(concat "user=" user "\1auth=Bearer " password "\1\1")
t)))))
(if (eq (car ret) 334)
;; When a server returns 334 server challenge, it usually means
;; the credentials it received were wrong (e.g. was an actual
;; password instead of an access token). In such a case, we
;; should return a string with 535 to indicate a failure so that
;; smtpmail will try other authentication mechanisms. See also
;; https://debbugs.gnu.org/78366.
(throw 'done "535 5.7.8 Authentication credentials invalid")
ret)))
(defun smtpmail-response-code (string)
(when string