Merge branch 'ag/doc-send-email'

The `send-email` documentation has been updated with OAuth2.0
related examples.

* ag/doc-send-email:
  docs: add credential helper for outlook and gmail in OAuth list of helpers
  docs: improve send-email documentation
  send-mail: improve checks for valid_fqdn
This commit is contained in:
Junio C Hamano
2025-05-19 16:02:45 -07:00
3 changed files with 66 additions and 9 deletions

View File

@@ -509,12 +509,12 @@ include::includes/cmd-config-section-all.adoc[]
include::config/sendemail.adoc[]
EXAMPLES
--------
Use gmail as the smtp server
EXAMPLES OF SMTP SERVERS
------------------------
Use Gmail as the SMTP Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
To use 'git send-email' to send your patches through the GMail SMTP server,
edit ~/.gitconfig to specify your account settings:
To use `git send-email` to send your patches through the Gmail SMTP server,
edit `~/.gitconfig` to specify your account settings:
----
[sendemail]
@@ -528,6 +528,41 @@ If you have multi-factor authentication set up on your Gmail account, you can
generate an app-specific password for use with 'git send-email'. Visit
https://security.google.com/settings/security/apppasswords to create it.
You can also use OAuth2.0 authentication with Gmail. `OAUTHBEARER` and
`XOAUTH2` are common methods used for this type of authentication. Gmail
supports both of them. As an example, if you want to use `OAUTHBEARER`, edit
your `~/.gitconfig` file and add `smtpAuth = OAUTHBEARER` to your account
settings:
----
[sendemail]
smtpEncryption = tls
smtpServer = smtp.gmail.com
smtpUser = yourname@gmail.com
smtpServerPort = 587
smtpAuth = OAUTHBEARER
----
Use Microsoft Outlook as the SMTP Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unlike Gmail, Microsoft Outlook no longer supports app-specific passwords.
Therefore, OAuth2.0 authentication must be used for Outlook. Also, it only
supports `XOAUTH2` authentication method.
Edit `~/.gitconfig` to specify your account settings for Outlook and use its
SMTP server with `git send-email`:
----
[sendemail]
smtpEncryption = tls
smtpServer = smtp.office365.com
smtpUser = yourname@outlook.com
smtpServerPort = 587
smtpAuth = XOAUTH2
----
SENDING PATCHES
---------------
Once your commits are ready to be sent to the mailing list, run the
following commands:
@@ -536,9 +571,25 @@ following commands:
$ git send-email outgoing/*
The first time you run it, you will be prompted for your credentials. Enter the
app-specific or your regular password as appropriate. If you have credential
helper configured (see linkgit:git-credential[1]), the password will be saved in
the credential store so you won't have to type it the next time.
app-specific or your regular password as appropriate.
If you have a credential helper configured (see linkgit:git-credential[1]), the
password will be saved in the credential store so you won't have to type it the
next time.
If you are using OAuth2.0 authentication, you need to use an access token in
place of a password when prompted. Various OAuth2.0 token generators are
available online. Community maintained credential helpers for Gmail and Outlook
are also available:
- https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail]
(cross platform, dedicated helper for authenticating Gmail accounts)
- https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook]
(cross platform, dedicated helper for authenticating Microsoft Outlook accounts)
You can also see linkgit:gitcredentials[7] for more OAuth based authentication
helpers.
Note: the following core Perl modules that may be installed with your
distribution of Perl are required:

View File

@@ -133,6 +133,10 @@ Popular helpers with OAuth support include:
- https://github.com/hickford/git-credential-oauth[git-credential-oauth] (cross platform, included in many Linux distributions)
- https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail] (cross platform, dedicated helper to authenticate Gmail accounts for linkgit:git-send-email[1])
- https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook] (cross platform, dedicated helper to authenticate Microsoft Outlook accounts for linkgit:git-send-email[1])
CREDENTIAL CONTEXTS
-------------------

View File

@@ -1359,7 +1359,9 @@ sub process_address_list {
sub valid_fqdn {
my $domain = shift;
return defined $domain && !($^O eq 'darwin' && $domain =~ /\.local$/) && $domain =~ /\./;
my $subdomain = '(?!-)[A-Za-z0-9-]{1,63}(?<!-)';
return defined $domain && !($^O eq 'darwin' && $domain =~ /\.local$/)
&& $domain =~ /^$subdomain(?:\.$subdomain)*$/;
}
sub maildomain_net {