Для IMAP-авторизации разработчикам предлагается использовать способ автризации под названием SASL XOAUTH2. Но дело в том, что стандартное расширение PHP IMAP (а именно функция imap_open) не способно авторизовываться по предлагаемому Google алгоритму.
Т.е. если в своих проектах вы используете стандартное расширение PHP IMAP, то скоро владельцы G Suite аккаунтов не смогут пользоваться вашим приложением. Также не исключено, что со временем не Google «позаботится» и о подключении к обычным Gmail-аккаунтам и не переведёт IMAP-авторизацию на OAuth.
Для справки, на одном только GitHub сейчас более 121 тысячи скриптов и проектов, использующих стандартное расширение PHP IMAP.
Какие могут быть варианты решения
- Сообщать в своём приложении, что оно несовместимо с Gmail-аккаунтами G Suite и предлагать завести почту на каком-нибудь другом сервисе.
- Переделать свои проекты на использование библиотеки Zend Mail, которая может авторизовываться по предлагаемому Google алгоритму. Другое дело, что мало кто будет рад переходу с быстрого нативного расширения PHP IMAP на стороннюю библиотеку.
- Попробовать уговорить Google принимать OAuth-токен в пароле IMAP: github.com/google/gmail-oauth2-tools/issues/18. Вполне, простое и логичное решение. Тогда все имеющиеся IMAP-библиотеки, включая PHP IMAP, продолжат функционировать и будут способны получать почту из Gmail, передавая OAuth-токен в пароле IMAP.
UPD 1
В комментариях и здесь поступило четвёртое предложение — дождаться, пока IMAP OAuth-авторизация будет реализована в расширении PHP IMAP. Но тут не всё так просто. Здесь и здесь обсуждение на PHP.net
UPD 2
Вариант добавления OAuth в расширение PHP IMAP отпадает: news-web.php.net/php.internals/107950
UPD 3
Желающих пригласили принять участие в разработке обёртки вокруг Zend Mail, поддерживающей XOUATH2 и предоставляющей нобор функций аналогичный PHP IMAP: github.com/freescout-helpdesk/ximap
Комментарии (40)
Victor_koly
24.12.2019 16:01+2К возможности использовать Gmail в обычной программе на компе (вроде офисного Outlook) эта проблема не относится?
mayorovp
24.12.2019 16:16+3Вот это уже интереснее чем PHP IMAP. Потому что таки относится. Только что проверил: Outlook тоже только по паролю входить умеет. Да и вообще в справке самого gmail нового варианта авторизации даже не упомянуто.
Victor_koly
24.12.2019 16:48+2Я не знаю других способов использования Outlook, кроме как забить в него пароль и все настройки POP3/IMAP.
Только наверное настраивать не буду, а то вдруг оно сможет «удалить все письма старше 14 дней» с сервера.
Kelv13
24.12.2019 16:20+2Вот, что Гугл пишет в своей рассылке:
Email
If you are using stand-alone Outlook 2016 or earlier, move to Office 365 (a web-based version of Outlook) or Outlook 2019, both of which support OAuth access. Alternatively you can use G Suite Sync for Microsoft Outlook.
If you are using Thunderbird or another email client, re-add your Google Account and configure it to use IMAP with OAuth.
If you are using the mail app on iOS or MacOS, or Outlook for Mac, and use only a password to login, you’ll need to remove and re-add your account. When you add it back, select “sign in with Google” to automatically use OAuth.
Calendar
If you use CalDAV to give an app or device access to your calendar, switch to a method that supports OAuth. We recommend the Google Calendar app [Web/iOS/Android] as the most secure app to use with your G Suite account.
If your G Suite account is linked to the calendar app in iOS or MacOS and uses only a password to login, you’ll need to remove and re-add your account to your device. When you add it back, select “sign in with Google” to automatically use OAuth. Read more
Contacts
If your G Suite account is syncing contacts to iOS or MacOS via CardDAV and uses only a password to login, you’ll need to remove your account. When you add it back, select “sign in with Google” to automatically use OAuth. Read More
If your G Suite account is syncing contacts to any other platform or app via CardDAV and uses only a password to login, switch to a method that supports OAuth.DrunkBear
24.12.2019 16:33+5If you are using stand-alone Outlook 2016 or earlier, move to Office 365 (a web-based version of Outlook) or Outlook 2019, both of which support OAuth access.
А я-то думал — что ещё придумают большие конторы, чтоб заставить людей купить/обновиться выше Outlook2010?
Тада! И секторпедофилиятерроризмбезопасность на барабане! /sarcasm
*ушёл радовать руководство необходимостью новых корпоративных закупок*
Revertis
24.12.2019 22:09+1Ну так понятное дело, Гуглу не выгодно когда юзеры за почтой ходят не просматривая баннеры. У меня вообще fetchmail забирает с гугла почту и несёт на мой сервер. Тоже может отвалиться :(
chapuza
25.12.2019 10:07Просто любопытно: а зачем вам в этой схеме Гугл? Просто ради адреса? Так Гугл прекрасно умеет в переадресацию.
KodyWiremane
24.12.2019 22:48+2«4. Впилить SASL XOAUTH2 в PHP IMAP»?
transpond Автор
25.12.2019 16:35В итоге здесь пришли к тому же: github.com/google/gmail-oauth2-tools/issues/18#issuecomment-568880309
transpond Автор
26.12.2019 12:12Но оказывается не всё так просто:
wiki.php.net/todo/ext/imap?s%5B%5D=imap
bugs.php.net/bug.php?id=78572KodyWiremane
26.12.2019 12:20Есть год на «перезагрузку», так понимаю.
Melkij
26.12.2019 12:53+1Сильно меньше, feature freeze в июне где-то обычно. Я не сильно знаком с процессом принятия патчей в PHP, но по-моему для стадии лишь только обсуждения идеи, а не review (полу)готового patch proposal — шансов попасть в релиз в следующем году уже нет. Как максимум отдельный pecl пакет, который ещё через релиз-два примут в ext/
transpond Автор
26.12.2019 15:07Вариант добавления OAuth в расширение PHP IMAP отпадает: news-web.php.net/php.internals/107950
savostin
24.12.2019 23:09+1Может кто поделится работающим кодом? Хоть с тем же zend-mail… А то везде примеры с паролем…
azmar
25.12.2019 02:00+1Все гораздо проще, просто не нужно использовать gmail для отправки писем с сайта. Нужно использовать инструменты по их прямому назначению. Например, пхп, который в 90% случаев работает синхронно с обработкой запроса клиента, просто не должен делать все это — устанавливать ssl сессию с gmail, не должен через него отправлять письмо и все такое. Должен быть релей в локальной сети. Тогда пользователь быстро получит письмо, а пхп воркер будет недолго занят.
Ну и да, php-imap это все таки получение писем, думаю imap клиентов, написанных на php и реально используемых реальными людьми для получения писем из gmail очень мало. И, если они вообще есть, наверное им лучше поменять свой способ получения писем, в независимости от данной новости.Sheti
25.12.2019 06:57Собственный сервер для отправки писем очень быстро попадёт в бан у gmail. Проходили такое уже. А вот если пересылать их же через почту на gmail, то уже нет.
celebrate
25.12.2019 08:40+1Здесь скорее идет речь про релей в локальной сети, а не самостоятельный почтовый сервер. Релей устанавливает соединение с Gmail, а клиенты просто используют релей для отправки писем, сами ничего про Gmail не зная.
alexesDev
25.12.2019 09:18imap клиентов на php не мало. Это тонна автоматизации у плюс минус продвинутых компаниях.
azmar
25.12.2019 10:36Чего то не могу я придумать пример использования php-imap в +- продвинутой компании в целях автоматизации для получения писем с gmail. У меня то компания совсем не продвинутая получается, то gmail лишний
tendium
25.12.2019 22:31А для кого существует G Suite? Думаете, мало крупных компаний, которые его используют?
chapuza
25.12.2019 22:36Много. Но они вряд ли используют PHP IMAP для доступа.
tendium
25.12.2019 22:38+1Почему нет? Например, они могут использовать один из известных хелпдесков, написанный на PHP, который может забирать почту по IMAP...
chapuza
26.12.2019 17:42При современных ценах на SaaS хелпдески, как-то даже странно поддерживать свой велосипед.
tendium
26.12.2019 19:27Почему вы решили, что речь о своём велосипеде, а не о self-hosted версии коммерческого helpdesk'а? (почему не SaaS, предлагаю оставить за скобками)
chapuza
26.12.2019 20:11Потому что если речь о self-hosted версии коммерческого helpdesk’а, то это проблема индейцев, которая шерифа волновать никаким боком не должна. Это, очевидно, головная боль коммерческого helpdesk’а.
tendium
26.12.2019 20:36Вы правы. Что, впрочем, не отменяет тот факт, что проблема таки есть. И её как-то надо будет решать.
alexesDev
26.12.2019 08:34Разобрать стандартный xls из стандартного письма заказчика, положить во внутреннюю систему, раскидать под это дело таски нескольким людям. Если чего-то нет, автоматически заказать и тп.
У нас так яндекс.еда заказывает (только скрипты на node.js и yandex почта, поэтому сильно не касается, но у меня были заказчики с такими же кейсами и gmail+php).
talik
До этого самого момента, email оставался практически единственным протоколом, который большие корпорации не смогли похоронить.
И вот на тебе… Гугл пытается вынести email в свой загончик.
Вероятно считают, что раз с мессенжерами получилось всех по разным протоколам расскидать, то и тут выйдет.
mayorovp
Да причём тут "загончик"? Это ж не смена протокола, а всего лишь смена способа авторизации.
2020й год уже скоро, сколько можно пароли третьим лицам передавать?
talik
Смотрите на вопрос шире.
С xmpp было аналогично, всех данный протокол устраивал, но потом пользовательская база стала сильно прирастать у больших компаний, и каждый конкурент пришел к выводу, что надо огораживаться, что бы юзеры не утекали. И внезапно xmpp (общий для всех) объявили не безопасным, устаревшим и не поддерживающим нужного набора эмодзи и прочих стикеров. И каждый запили свою версию мессенжера, максимально не совместимого с конкурентами.
Так и тут может случится.
Сначала отменять авторизацию через imap.
Потом разрешат вход только через приложение gmail (а ведь наличие gmail аккаунта = количеству аккаунтов в google play для android).
Сколько там осталось MS Windows для выхода в интернет?
А сколько уже сейчас android для интернет?
Есть мнение, что раз Google не смог собрать конкурента мессенжерам (а все свои попытки сам же и закапывает), то будут использовать конкурентное преимущество в виде Gmail как части android и постепенным «улучшением» gmail и добавлением посторонних к email функций — соберут свой альтернативный «как бы убер-мессенжер».
fougasse
xmpp так и оставался развлечением гиков, т.к. светлые идеи без денег шансов не имеют
interprise
xmpp одна из причин что корпорации так легко все под себя взяли. Ужасный протокол, обмен файлами? голосовые сообщения? экономия трафика? нестабильное соединение? голосовые звонки? водео звонки? все это работает через жопу или не работает вовсе.
konchok
xmpp сдох когда потребовались стабильно работающие клиенты под смартфоны. Внезапно выяснилось что их просто невозможно сделать на этом протоколе.