Как продолжить использование msmtp OAuth 2.0 для Gmail в mutt после прекращения поддержки OOB?
фон
В течение двух лет я успешно получал доступ к своим учетным записям Gmail с помощью .
Я синхронизирую локальную и онлайн-учетную запись Gmail с помощьюmbsync
и пароль приложения «Двухэтапная аутентификация» (Войдите с помощью паролей приложений ).
отправка электронной почты с помощью msmtp, до сих пор
Чтобы отправить Gmail с помощьюneomutt
сложнее, потому чтоmsmtp
требуется токен с неистекшим сроком действия отGmail API
. К счастью, пользователь GitHub tenllado предоставил единственное работающее решение с открытым исходным кодом, которое мне удалось найти, — свой скрипт oauth2token . Я адаптировал его как oauth2tool.sh . Чтобы это работало, выполните следующие действия:
1. Подготовьтесь: получите учетные данные Gmail OAuth 2.0.
- Используйте быстрый старт Python API Gmail, чтобы получить мои учетные данные, которые выглядят следующим образом:
- мой идентификатор клиента:
xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
- мой секрет клиента:
xxxxxxxxxxxxxxxxxxxxxxxx
- мой идентификатор клиента:
- Получите копию ( Код «токен обновления действует неопределенное время»).
- Получите токен бессмертного обновления:
$ python2 oauth2.py --user=my@gmail.com --client_id=<myCI> --client_secret=<myCS> --generate_oauth2_token
и следуйте инструкциям. Это выглядит так:- обновить токен:
1//03xxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxx
- обновить токен:
2 подготовить — настроить msmtprc
account my
auth oauthbearer
host smtp.gmail.com
port 587
from my@gmail.com
user my@gmail.com
passwordeval bash oauth2tool.sh my
3 использования - отправка писем из командной строки, до сих пор
Затем, когда я отправляю электронное письмоecho "test" | msmtp -a my <target_email>
, мойoauth2tool.sh
подтягивает действительный токен. Это делается так: он захватывает токен с помощьюpass
если срок его действия не истек, в противном случае он захватывает новый с помощьюpython2 oauth2.py --user=my@gmail.com --client_id=<myCI> --client_secret=<myCS> --refresh_token=<myRT>
.
Благодаря всему этому до сих пор я мог легко отправлять электронные письма со своих учетных записей Gmail из командной строки.
теперь oob больше нельзя
Срок действия моих когда-то бессмертных токенов обновления истекает, и я не могу их продлить, потому что Gmailoauth2.py
используетredirect_uri = urn:ietf:wg:oauth:2.0:oob
, который устарел.
Повышение безопасности взаимодействия Google OAuth за счет использования более безопасных потоков OAuth "OAuth
внеполосный (oob) поток будет объявлен устаревшим».
Как продолжить отправку с помощью msmtp?
OAuth 2.0 для мобильных и настольных приложений «IP-адрес обратной связи (macOS, Linux, рабочий стол Windows)» кажется шагом вперед, но мне понадобится несколько недель свободного времени, которого у меня нет, чтобы понять, как это сделать. . Есть какие-нибудь идеи?
Вопрос по теме: Google Cloud: клиенты OAuth в тестовом режиме, использующие поток OAuth OOB .