Re: [PATCH] send-email: implement SMTP bearer authentication
- From
M Hickford <mirth.hickford@gmail.com>
- Date
- Jan 11, 2025, 21:19 UTC
- Message-ID
- <CAKcCxfCepXUzcyT_i_eZ1wREU0J_T+LgrjcEzb++gY5J05phmg@mail.gmail.com>
- In-Reply-To
- <D6ZH9HE0N3X8.350NMMZ6IY8QA@swagemakers.org>
On Sat, Jan 11, 2025 at 7:06 PM Julian Swagemakers <julian@swagemakers.org> wrote:
Show 91 quoted lines
>
> Hi Mirth, thanks for taking a look and testing.
>
> > Please could you add instructions how to test it?
>
> Sure, below you can find steps which can be used for testing.
>
> # requirement git-credentials-oauth installed
>
> # build patched git
> git clone https://git.kernel.org/pub/scm/git/git.git tmp_git
> cd tmp_git
> curl https://lore.kernel.org/git/20240225103413.9845-1-julian@swagemakers.org/raw |git am
> make
>
> # backup gitconfig
> mv ~/.gitconfig{,_backup}
>
> # create minimal gitconfig
> cat << EOF >> ~/.gitconfig
>
> [credential]
> helper = cache --timeout 7200
> helper = oauth
> [credential "smtp://smtp.gmail.com:587"]
> oauthClientId = 406964657835-aq8lmia8j95dhl1a2bvharmfk3t1hgqj.apps.googleusercontent.com
> oauthClientSecret = kSmqreRr0qwBWJgbf5Y-PjSU
> oauthScopes = https://mail.google.com/
> oauthAuthURL = https://accounts.google.com/o/oauth2/auth
> oauthTokenURL = https://oauth2.googleapis.com/token
> [user]
> email = you@example.com
> name = Your Name
>
> EOF
>
> # create email to send
> cat << EOF >> message.txt
> Subject: test email from git
>
> Hay from git
>
> EOF
>
> # update PATH to use patched git
> export PATH="${PWD}:${PATH}"
>
> # confirm you are using the correct git version, should look
> # something like `git version 2.48.0.rc2.32.g5adec67521`
> git --version
>
> git send-email \
> --to=email@example.com \
> --smtp-auth=XOAUTH2 \
> --smtp-encryption=tls \
> --smtp-server-port=587 \
> --smtp-server=smtp.gmail.com \
> --smtp-debug=1 \
> --smtp-user=you@example.com \
> message.txt
>
> # now the browser should open with the oauth flow.
>
> > Which servers have you tested?
>
> I've tested this with gmail using a consumer google account as well as a
> managed google account and with the office settings I've tested
> office365.
>
> > Looking at the debug information, it looks like the SMTP command "AUTH
> > XOAUTH2 <base64>" was corrupted by a space at column 241. Exactly one
> > base64 string should follow "AUTH XOAUTH2 ", no spaces.
>
> I can also see a space in the debug output, but the position depends on
> my terminal size, and it is not interfering with authentication in my
> case. I think it is caused by output formatting of the debug statement
> and not the source of the issue you are having.
>
> If you have a coded auth string you can use openssl client directly
> to test it.
>
> openssl s_client -starttls smtp -connect smtp.gmail.com:587
>
> AUTH XOAUTH2 auth_sting
>
> If you have the xoauth2 access token you can create the auth string with
>
> echo -n -e "user=${EMAIL}\x01auth=Bearer ${TOKEN}\x01\x01" | base64 -w0
>
> If that does not help, can you give me some more details on your setup?
> Then I'll try to reproduce the problem.Oops I had my email accounts mixed up.
I confirm both XOAUTH2 and OAUTHBEARER work to send email with gmail.com
Tested-by: mirth.hickford@gmail.com
Show 6 quoted lines
> > I've tested the steps above on Arch Linux with Perl v5.40.0, and > Ubuntu with Perl v5.38.2. > > Regards Julian >