Как продолжить использование 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.

  1. Используйте быстрый старт Python API Gmail, чтобы получить мои учетные данные, которые выглядят следующим образом:
    • мой идентификатор клиента:xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
    • мой секрет клиента:xxxxxxxxxxxxxxxxxxxxxxxx
  2. Получите копию ( Код «токен обновления действует неопределенное время»).
  3. Получите токен бессмертного обновления:$ 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 .

0 ответов

Другие вопросы по тегам