Пароли приложений Gmail, IMAP и API: три способа подключения и когда какой подходит
Большинство проблем с подключением к Gmail сводятся к одному: нужен пароль приложения, а создать его нельзя, пока не включена двухфакторная аутентификация. Вот как это вписывается в три способа, которыми скрипт или клиент может реально получить доступ к почтовому ящику.
Avery BennettСамая частая проблема с Gmail — это вовсе не проблема Gmail. Клиенту или скрипту дают пароль от аккаунта, соединение отклоняется, и напрашивается очевидный вывод: пароль неверный. Но это не так. Google перестал принимать пароли от почтовых клиентов, а вместо этого требует пароль приложения.
Пароли приложений и предварительное условие, о котором все молчат
Пароль приложения — это отдельный credential, создаваемый внутри аккаунта, который один конкретный клиент использует вместо обычного пароля. Три факта о нём объясняют почти все запросы «не работает»:
- Его нельзя создать, пока не включена двухфакторная аутентификация. Это ответ на большинство таких запросов. Опция генерации пароля приложения просто отсутствует в аккаунте без второго фактора, поэтому люди ищут страницу, которой ещё нет. Сначала включите двухфакторку — и опция появится.
- Он показывается один раз. Сгенерирован, отображён и больше не доступен. Потеряли — значит, генерируете новый, а не ищете старый.
- Он отображается с пробелами, а вводится без них. Шестнадцать символов в четырёх группах. Одни клиенты справляются с пробелами, другие — нет, и только на этом спотыкается немалая доля попыток с в остальном верным паролем.
Они создаются в разделе безопасности аккаунта Google, а не в настройках самого Gmail — это вторая причина, по которой люди не могут найти нужную страницу.
Если вы купили аккаунт и в описании указан пароль приложения, именно эту строку и нужно вводить в клиенте. Обычный пароль от аккаунта там не сработает, а повторные попытки — это верный способ привлечь к себе лишнюю проверку, которая вам совсем не нужна.
Три способа подключения
Вход через веб-интерфейс
Браузер, пароль, второй фактор, если он задан. Нормально для человека, плохо для скрипта. Автоматический вход через веб-форму упирается в капчи, запросы о незнакомом устройстве, а иногда и в подтверждение по телефону — потому что за этим сценарием следят именно в поисках такого паттерна. Когда скрипт «не может войти», а учётные данные верны, причина обычно именно в этом.
IMAP и SMTP
Почтовые протоколы, на которых говорят все почтовые клиенты и все почтовые библиотеки. Требуют описанный выше пароль приложения. Лучший вариант для чтения почты, ожидания сообщения или отправки — без необходимости что-то строить.
Практические настройки: IMAP на порту 993 с SSL, SMTP на порту 587 со STARTTLS, а в качестве имени пользователя — полный адрес. Учтите, что доступ по IMAP на некоторых аккаунтах по умолчанию отключён и включается в собственных настройках Gmail — это отдельный переключатель, не связанный с паролем приложения, и его стоит проверить, когда учётные данные точно верны.
Gmail API
Полноценный программный интерфейс через OAuth2. Вы регистрируете проект, настраиваете OAuth-клиент, один раз проходите экран согласия и получаете токены, которые ваша программа использует в дальнейшем.
Два реальных преимущества перед IMAP: права ограничены — программе можно выдать доступ только на чтение, а не полный контроль, и вы получаете структурированные данные сообщений вместо разбора сырой почты. Две реальные издержки: настройка действительно сложнее, и у экранов согласия есть собственные правила проверки в зависимости от того, что вы запрашиваете.
Используйте его для того, что вы разрабатываете и поддерживаете. А чтобы вытащить код из входящих, IMAP — соразмерный ответ.
Выбор — одной строкой каждый
- Человек проверяет почту: веб-интерфейс или любой клиент через IMAP.
- Скрипт читает сообщения: IMAP с паролем приложения. Минимум настройки, работает везде.
- Программное обеспечение, которое вы разрабатываете: API — ради ограниченных прав и структурированных данных.
- Скрипт, управляющий веб-интерфейсом: избегайте. Трения, на которые вы наткнётесь, — это осознанное решение, и оно никуда не денется.
Что это значит при покупке почтового ящика
Два поля в описании соответствуют описанному выше, и это не одно и то же.
Указанный пароль приложения означает, что работа с двухфакторкой и генерацией уже сделана, и вы можете сразу подключить клиент. Поставка через OAuth2 — это путь через API, и здесь важна полнота: refresh-токен без client id и secret, под которые он был выдан, проработает до истечения текущего access-токена, а затем умрёт навсегда. Этот сбой наступает уже после закрытия любых гарантийных окон, так что проверять нужно не «подключается ли сейчас», а «могу ли я выполнить refresh».
Полезно знать и о цене: во всём почтовом каталоге доступ по протоколам — одна из самых дешёвых характеристик, тогда как атрибуты верификации, такие как двухфакторная аутентификация и SMS-подтверждение, — самые дорогие: примерно втрое и почти втрое дороже средней цены соответственно. Доступ стоит дёшево; верификация — нет.
Объявления Gmail с фильтрами по паролю приложения и OAuth2 — на полке Gmail.
