[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Any interest in an XOAUTH2 patch for smtpmail (Gmail 2-factor auth)?

From: Cesar Crusius
Subject: Re: Any interest in an XOAUTH2 patch for smtpmail (Gmail 2-factor auth)?
Date: Sat, 06 Jan 2018 22:19:08 -0800
User-agent: mu4e 0.9.18; emacs 25.3.1

On Sat 06 Jan 2018 at 05:32, John Wiegley wrote:

>>>>>> "CC" == Cesar Crusius <address@hidden> writes:
> CC> I recently had to add XOAUTH2 support in smtpmail to access my two-factor
> CC> authenticated Gmail account, which turned out to be surprisingly simple
> CC> (my hack has about 20 lines of code, I guess it would about double to do
> CC> it properly).
> CC> It uses oauth2.el, so my plan would be to make smtpmail load that library
> CC> on demand, in case the new smtpmail-xoauth2 variables are configured. I
> CC> guess the required functionality could be copy-and-pasted, but that seems
> CC> a waste.
> CC> Is there any interest in a patch?
> This sounds useful to me. How will users know to enable the extra behavior?

Now that I made the hack "proper," I think I may take another route
here. SMTP XOAuth2, basically a Gmail-only thing, probably does not
belong in the Emacs main repository. Instead,

1. All that needs to happen in smtpmail.el is for the
   'smtpmail-try-auth-methods' to have the following patch:

diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index 20cbeb5f4e..a33a552cd0 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -547,6 +551,13 @@ The list is in preference order.")
          (not password))
       ;; No mechanism, or no credentials.
+     ((eq mech 'xoauth2)
+      (smtpmail-command-or-throw
+       process
+       (concat "AUTH XOAUTH2 "
+        (base64-encode-string
+         (concat "user=" user "\1auth=Bearer " password "\1\1") t))
+       235))
      ((eq mech 'cram-md5)
       (setq ret (smtpmail-command-or-throw process "AUTH CRAM-MD5"))
       (when (eq (car ret) 334)

2. I can create a MELPA package 'auth-source-xoauth2.el' that can then
   be transparently used to provide the XOAuth2 "password" when required.

smtpmail.el should /not/ include xoauth2 in the supported auth methods
by default, as the configuration is non-trivial, and it would likely
immediately break all Gmail configurations using application passwords.

Cesar Crusius

Attachment: signature.asc
Description: PGP signature

reply via email to

[Prev in Thread] Current Thread [Next in Thread]