Google сообщил владельцам G Suite аккаунтов о том, что с 15 февраля 2021 года авторизация в Gmail и других продуктах будет работать только через OAuth.

Для IMAP-авторизации разработчикам предлагается использовать способ автризации под названием SASL XOAUTH2. Но дело в том, что стандартное расширение PHP IMAP (а именно функция imap_open) не способно авторизовываться по предлагаемому Google алгоритму.

Т.е. если в своих проектах вы используете стандартное расширение PHP IMAP, то скоро владельцы G Suite аккаунтов не смогут пользоваться вашим приложением. Также не исключено, что со временем не Google «позаботится» и о подключении к обычным Gmail-аккаунтам и не переведёт IMAP-авторизацию на OAuth.

Для справки, на одном только GitHub сейчас более 121 тысячи скриптов и проектов, использующих стандартное расширение PHP IMAP.



Какие могут быть варианты решения

  1. Сообщать в своём приложении, что оно несовместимо с Gmail-аккаунтами G Suite и предлагать завести почту на каком-нибудь другом сервисе.
  2. Переделать свои проекты на использование библиотеки Zend Mail, которая может авторизовываться по предлагаемому Google алгоритму. Другое дело, что мало кто будет рад переходу с быстрого нативного расширения PHP IMAP на стороннюю библиотеку.
  3. Попробовать уговорить 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)


  1. talik
    24.12.2019 15:31
    +2

    До этого самого момента, email оставался практически единственным протоколом, который большие корпорации не смогли похоронить.
    И вот на тебе… Гугл пытается вынести email в свой загончик.
    Вероятно считают, что раз с мессенжерами получилось всех по разным протоколам расскидать, то и тут выйдет.


    1. mayorovp
      24.12.2019 15:59
      +5

      Да причём тут "загончик"? Это ж не смена протокола, а всего лишь смена способа авторизации.


      2020й год уже скоро, сколько можно пароли третьим лицам передавать?


      1. talik
        24.12.2019 16:54
        +3

        Смотрите на вопрос шире.

        С xmpp было аналогично, всех данный протокол устраивал, но потом пользовательская база стала сильно прирастать у больших компаний, и каждый конкурент пришел к выводу, что надо огораживаться, что бы юзеры не утекали. И внезапно xmpp (общий для всех) объявили не безопасным, устаревшим и не поддерживающим нужного набора эмодзи и прочих стикеров. И каждый запили свою версию мессенжера, максимально не совместимого с конкурентами.

        Так и тут может случится.
        Сначала отменять авторизацию через imap.
        Потом разрешат вход только через приложение gmail (а ведь наличие gmail аккаунта = количеству аккаунтов в google play для android).

        Сколько там осталось MS Windows для выхода в интернет?
        А сколько уже сейчас android для интернет?

        Есть мнение, что раз Google не смог собрать конкурента мессенжерам (а все свои попытки сам же и закапывает), то будут использовать конкурентное преимущество в виде Gmail как части android и постепенным «улучшением» gmail и добавлением посторонних к email функций — соберут свой альтернативный «как бы убер-мессенжер».


        1. fougasse
          24.12.2019 18:51
          +1

          xmpp так и оставался развлечением гиков, т.к. светлые идеи без денег шансов не имеют


        1. interprise
          24.12.2019 19:54

          xmpp одна из причин что корпорации так легко все под себя взяли. Ужасный протокол, обмен файлами? голосовые сообщения? экономия трафика? нестабильное соединение? голосовые звонки? водео звонки? все это работает через жопу или не работает вовсе.


          1. konchok
            25.12.2019 09:27

            xmpp сдох когда потребовались стабильно работающие клиенты под смартфоны. Внезапно выяснилось что их просто невозможно сделать на этом протоколе.


  1. Victor_koly
    24.12.2019 16:01
    +2

    К возможности использовать Gmail в обычной программе на компе (вроде офисного Outlook) эта проблема не относится?


    1. mayorovp
      24.12.2019 16:16
      +3

      Вот это уже интереснее чем PHP IMAP. Потому что таки относится. Только что проверил: Outlook тоже только по паролю входить умеет. Да и вообще в справке самого gmail нового варианта авторизации даже не упомянуто.


      1. Victor_koly
        24.12.2019 16:48
        +2

        Я не знаю других способов использования Outlook, кроме как забить в него пароль и все настройки POP3/IMAP.
        Только наверное настраивать не буду, а то вдруг оно сможет «удалить все письма старше 14 дней» с сервера.


    1. 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.


      1. DrunkBear
        24.12.2019 16:33
        +5

        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.
        А я-то думал — что ещё придумают большие конторы, чтоб заставить людей купить/обновиться выше Outlook2010?
        Тада! И сектор педофилия терроризм безопасность на барабане! /sarcasm
        *ушёл радовать руководство необходимостью новых корпоративных закупок*


  1. Revertis
    24.12.2019 22:09
    +1

    Ну так понятное дело, Гуглу не выгодно когда юзеры за почтой ходят не просматривая баннеры. У меня вообще fetchmail забирает с гугла почту и несёт на мой сервер. Тоже может отвалиться :(


    1. tendium
      24.12.2019 22:32

      А в gsuite есть баннеры?


      1. Victor_koly
        24.12.2019 23:22
        -1

        10 дол. США за користувача на міс.

        Думаю, можно обойтись без рекламы.


    1. chapuza
      25.12.2019 10:07

      Просто любопытно: а зачем вам в этой схеме Гугл? Просто ради адреса? Так Гугл прекрасно умеет в переадресацию.


  1. KodyWiremane
    24.12.2019 22:48
    +2

    «4. Впилить SASL XOAUTH2 в PHP IMAP»?


    1. transpond Автор
      25.12.2019 16:35

      В итоге здесь пришли к тому же: github.com/google/gmail-oauth2-tools/issues/18#issuecomment-568880309


    1. transpond Автор
      26.12.2019 12:12

      Но оказывается не всё так просто:
      wiki.php.net/todo/ext/imap?s%5B%5D=imap
      bugs.php.net/bug.php?id=78572


      1. KodyWiremane
        26.12.2019 12:20

        Есть год на «перезагрузку», так понимаю.


        1. Melkij
          26.12.2019 12:53
          +1

          Сильно меньше, feature freeze в июне где-то обычно. Я не сильно знаком с процессом принятия патчей в PHP, но по-моему для стадии лишь только обсуждения идеи, а не review (полу)готового patch proposal — шансов попасть в релиз в следующем году уже нет. Как максимум отдельный pecl пакет, который ещё через релиз-два примут в ext/


    1. transpond Автор
      26.12.2019 15:07

      Вариант добавления OAuth в расширение PHP IMAP отпадает: news-web.php.net/php.internals/107950


  1. savostin
    24.12.2019 23:09
    +1

    Может кто поделится работающим кодом? Хоть с тем же zend-mail… А то везде примеры с паролем…


  1. azmar
    25.12.2019 02:00
    +1

    Все гораздо проще, просто не нужно использовать gmail для отправки писем с сайта. Нужно использовать инструменты по их прямому назначению. Например, пхп, который в 90% случаев работает синхронно с обработкой запроса клиента, просто не должен делать все это — устанавливать ssl сессию с gmail, не должен через него отправлять письмо и все такое. Должен быть релей в локальной сети. Тогда пользователь быстро получит письмо, а пхп воркер будет недолго занят.

    Ну и да, php-imap это все таки получение писем, думаю imap клиентов, написанных на php и реально используемых реальными людьми для получения писем из gmail очень мало. И, если они вообще есть, наверное им лучше поменять свой способ получения писем, в независимости от данной новости.


    1. Sheti
      25.12.2019 06:57

      Собственный сервер для отправки писем очень быстро попадёт в бан у gmail. Проходили такое уже. А вот если пересылать их же через почту на gmail, то уже нет.


      1. celebrate
        25.12.2019 08:40
        +1

        Здесь скорее идет речь про релей в локальной сети, а не самостоятельный почтовый сервер. Релей устанавливает соединение с Gmail, а клиенты просто используют релей для отправки писем, сами ничего про Gmail не зная.


    1. alexesDev
      25.12.2019 09:18

      imap клиентов на php не мало. Это тонна автоматизации у плюс минус продвинутых компаниях.


      1. azmar
        25.12.2019 10:36

        Чего то не могу я придумать пример использования php-imap в +- продвинутой компании в целях автоматизации для получения писем с gmail. У меня то компания совсем не продвинутая получается, то gmail лишний


        1. savostin
          25.12.2019 19:24

          У меня тикет-система забирает почту по imap.


          1. azmar
            25.12.2019 19:49
            +1

            эмм, с gmail?)


            1. savostin
              26.12.2019 00:59

              даже больше — с GSuite.


        1. tendium
          25.12.2019 22:31

          А для кого существует G Suite? Думаете, мало крупных компаний, которые его используют?


          1. chapuza
            25.12.2019 22:36

            Много. Но они вряд ли используют PHP IMAP для доступа.


            1. tendium
              25.12.2019 22:38
              +1

              Почему нет? Например, они могут использовать один из известных хелпдесков, написанный на PHP, который может забирать почту по IMAP...


              1. chapuza
                26.12.2019 17:42

                При современных ценах на SaaS хелпдески, как-то даже странно поддерживать свой велосипед.


                1. tendium
                  26.12.2019 19:27

                  Почему вы решили, что речь о своём велосипеде, а не о self-hosted версии коммерческого helpdesk'а? (почему не SaaS, предлагаю оставить за скобками)


                  1. chapuza
                    26.12.2019 20:11

                    Потому что если речь о self-hosted версии коммерческого helpdesk’а, то это проблема индейцев, которая шерифа волновать никаким боком не должна. Это, очевидно, головная боль коммерческого helpdesk’а.


                    1. tendium
                      26.12.2019 20:36

                      Вы правы. Что, впрочем, не отменяет тот факт, что проблема таки есть. И её как-то надо будет решать.


                    1. mayorovp
                      28.12.2019 15:11

                      А вот не факт. Если helpdesk был куплен однократно и как есть...


        1. alexesDev
          26.12.2019 08:34

          Разобрать стандартный xls из стандартного письма заказчика, положить во внутреннюю систему, раскидать под это дело таски нескольким людям. Если чего-то нет, автоматически заказать и тп.


          У нас так яндекс.еда заказывает (только скрипты на node.js и yandex почта, поэтому сильно не касается, но у меня были заказчики с такими же кейсами и gmail+php).


  1. celebrate
    25.12.2019 08:41

    Речь я так понимаю идет не только про IMAP, но и про SMTP тоже, правильно?