Яндекс Почта и Warning: fsockopen(): SSL

Тема в разделе "Ошибки и их решения", создана пользователем Jus, 7 янв 2019.

  1. Jus

    Jus Пользователь

    Сообщения:
    79
    Симпатии:
    17
    Здравствуйте. Пару недель назад я начал изучать вопрос о том, как создать свой интернет-магазин. В этом деле пока новичок. У меня возникла небольшая проблема. Сразу напишу, что схожие темы на форуме смотрел, но решения мне не помогли.
    Суть: решил для почты Opencarta 3.0.2.0 вместо протокола mail использовать smtp.
    Создал доменную почту на Яндексе. При тесте почты через форму обратной связи получил ошибку на белом фоне:

    Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /home/httpd/vhosts/2019.mcdir.ru/httpdocs/system/library/mail/smtp.php on line 87Warning: fsockopen(): Failed to enable crypto in /home/httpd/vhosts/2019.mcdir.ru/httpdocs/system/library/mail/smtp.php on line 87Warning: fsockopen(): unable to connect to ssl://smtp.yandex.ru:465 (Unknown error) in /home/httpd/vhosts/2019.mcdir.ru/httpdocs/system/library/mail/smtp.php on line 87

    в логе:
    2019-01-07 16:08:36 - PHP Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
    error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in /home/httpd/vhosts/2019.mcdir.ru/httpdocs/system/library/mail/smtp.php on line 87


    2019-01-07 16:08:36 - PHP Warning: fsockopen(): Failed to enable crypto in /home/httpd/vhosts/2019.mcdir.ru/httpdocs/system/library/mail/smtp.php on line 87

    2019-01-07 16:08:36 - PHP Warning: fsockopen(): unable to connect to ssl://smtp.yandex.ru:465 (Unknown error) in /home/httpd/vhosts/2019.mcdir.ru/httpdocs/system/library/mail/smtp.php on line 87

    Вместо Яндекса пробовал тестировать Гугл почту – всё ок, но она платная (5$ в месяц за почту, т.е. если зарегистрировал свой домен и создал там хотя бы 2 почты, то цена = 10$ в месяц). Остается mail.ru, но его я ещё не тестировал.
    Вопросы:
    1) Возможно ли запустить Яндекс на Openсart?
    2) Стоит ли платить Гуглу 5$ каждый месяц или попробовать mail.ru? Возможно есть другие хорошие варианты?

    Как я пробовал устранить проблему:
    1)
    На хостинге установил по новой (чистый) Опенкарт 3.0.2.0.
    2) Создал почту для домена на Яндексе. Мой сайт прошел проверку. Через вебинтерфейс Яндекса написал самому себе. Убедился, что созданная доменная почта работает.
    3) На хостинге нажал кнопку "Включить Яндекс почту" после чего автоматически создались DNS записи (mx, cname, txt) для Яндекса, а старые удалились. Новые DNS записи сверил с требованиями на сайте Яндекса - всё норм.
    4) Зашел в админку Опенкарта (появилось предупреждение, что необходимо переместить каталог Storage - выполнил вручную), затем перешел в "Настройки -> Магазин" и вписал созданную доменную почту, затем в "Настройки -> Почта":

    Почтовый протокол: SMTP
    Параметры функции mail: пусто
    SMTP Имя сервера: ssl://smtp.yandex.ru
    SMTP Логин: созданная мною доменная почта
    SMTP Пароль: мой пароль от почты
    SMTP Порт: 465
    SMTP Таймаут: 5

    Нажимаю "Сохранить", затем перехожу на страницу с обратной формой связи. После заполнения формы и отправки выходит ошибка на белом фоне.
    5) Нашел на форуме утверждение о том, что Яндекс почта не умеет работать с обратной формой, поэтому надо по адресу \catalog\controller\information\contact.php
    строку
    $mail->setFrom($this->request->post['email']);
    заменить на
    $mail->setFrom($this->config->get('config_email'));
    но у меня Опенкарт 3.0.2.0, поэтому замена уже произведена.
    6) После безуспешных попыток поиска ответа было решено отказаться от Яндекс почты и проделать пункты 2 и 3 для Гугл почты. Для пункта 4 указал следующие данные:

    SMTP Имя сервера: ssl://smtp.gmail.com
    SMTP Логин: созданная мною доменная почта
    SMTP Пароль: мой пароль от почты
    SMTP Порт: 465
    SMTP Таймаут: 5

    Всё заработало. Сделал вывод, что дело было не в порте 465, как пишут некоторые люди на форуме.

    7) а) На форуме нашел мнение, что, "вроде, Яндекс со своим сервером ssl://smtp.gmail.com работает только с сайтами с защищенным протоколом"
    б) У меня в Яндексе написано, что домен прошел проверку, но MX запись не установлена - проверка может занять до 72 часов (72 часа не прошло, но MX запись точно установлена, я проверял через специальные онлайн сервисы). Я очень сомневаюсь, что дело в этом, потому что на форуме есть много людей, у которых MX запись прошла проверку, но почта все равно не работает или у которых почта работала и вдруг перестала работать. Для сравнения в Гугл почте всё моментально заработало.
    в) Из вышеизложенного текста следует, что после установки движка я не устанавливал никакие модули и т. д., а сразу переходил к настройке почты. Вирусов у меня тоже нет.

    После ознакомления с схожими проблемами по работе с почтой на Опенкарт, делаю вывод, что почти все они связаны исключительно с Яндекс. Что я делаю не так…
     
    Bkmz и karpov нравится это.
  2. karpov

    karpov Продвинутый пользователь

    Сообщения:
    1.519
    Симпатии:
    241
    Прочитал как книжку на одном дыхании :) Все бы подходили к задаче так.
    Есть такое дело. Т.е вполне возможно. Установите себе сертификат бесплатный и проверите теорию. Даже ошибки ругаются на сертификат. А вот если спросите про данные ошибки, думаю получите еще более развернутый ответ.
     
    Вячеслав97 нравится это.
  3. Jus

    Jus Пользователь

    Сообщения:
    79
    Симпатии:
    17
    Спасибо за ответ.
    Сначала выполню то, что я обязан: изучу и установлю бесплатный сертификат. Если ошибка останется, а также будет решено принципиально использовать услуги Яндекс (маловероятно), то спрошу :)
     
    Вячеслав97 нравится это.
  4. Jus

    Jus Пользователь

    Сообщения:
    79
    Симпатии:
    17
    Добрый вечер. Меня мой вопрос никак не оставляет в покое :( Как вы думаете из-за чего почта Яндекса на чистом движке не работает через обратную форму связи, а, например, почта Гугла работает исправно? Ниже ссылка на проблему и на предложенное решение, которое не помогло:
    Что я сделал:
    1) В личном кабинете своего хостинга купил сертификат для сайта. Установка прошла автоматически.
    2) Прописал редиректы (с www на без www и с http на https).
    3) Замочек в адресной строке появился, редиректы работают.
    4) Проверил почту Яндекса. Получил ту же ошибку, которая была до установки сертификата. Для сравнения почта Гугл работает.
    5) Гуглил свою ошибку так:
    fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL
    Могу сильно ошибаться, вроде, предлагают 2 решения:
    а) отключить проверку сертификатов, но это якобы крайне нежелательно;
    б) поместить файлы сертификата в определенную папку, затем указать к ним путь в файле php.ini. Не совсем понимаю могу ли это выполнить самостоятельно или такое возможно только на стороне хостинга.
    Также на сайте Яндекса нашел возможные варианты решения проблемы с сертификатом:
    внизу страницы выбрать "Получаю ошибки о некорректном сертификате":
    Из предложенных решений наиболее подходящее на мой взгляд это "Добавить корневой сертификат в Linux". Возможно данное решение это и есть пункт б (выше):
    6) Написал в тех. поддержку хостинга (сожалею, что не отправил им ссылки выше) Попросили логин/пароль от админки магазина, несмотря на то, что отправил им параметры настройки почты и полученную ошибку. Вот что ответили:
    1111111111111111111111.png
    Т. е. тех. поддержка таким образом, получила ошибку 500 и сделала вывод, что проблемы на стороне Яндекса.
    Дело в том, что требования к шифрованию и порту 465 заложены в инструкции почтового сервиса.
    Откуда тех. поддержка взяла свои значения мне не понятно. Под "перепроверить настройки" она, cкорее всего, имеет ввиду параметры почты в Opencart и DNS записи на хостинге (других вариантов не вижу). Проверил всё, несмотря на то, что DNS записи проверять смысла нет, т. к. они создаются автоматически на хостинге при выборе желаемой почты. Допустим тех. поддержка указала верный сервер и порт, тогда для сравнения почта Гугл тоже выдавала ошибку 500 (ssl://smtp.gmail.com, порт 465), но я ее решил разрешением доступа небезопасным приложениям через личный кабинет почты Гугл. У Яндекса такого не нашел, значит повлиять таким образом на ошибку 500 нет возможности.
    8) Просто сижу думаю. С одной стороны, проблема не критическая. Есть ведь почта Гугл и она работает. Что еще надо? С другой стороны, никак не могу выкинуть эту ошибку из головы. Мне иногда даже снится, что почта Яндекса якобы заработала через обратную форму. Вроде, нет ничего проще, чем создать доменную почту, весь процесс почти автоматизирован: зарегал домен -> делегировал на хостинг ->зарегал доменную почту -> на хостинге нажал кнопку и получил DNS записи для нужной почты -> в Опенкарте указал параметры и вперед. Вот только: Гугл работает, а Яндекс нет. Плюнуть на это и забыть?
     
    Последнее редактирование: 22 янв 2019
    karpov нравится это.
  5. Ravilr

    Ravilr Специалист

    Сообщения:
    3.884
    Симпатии:
    1.065
    Я бы забил на время, но на тестовом магазине бы настраивал бы, долбилбы яндекс, поддержку и прочее. Но ради справедливости, решил бы проблемы :) Это же какой квест ))
     
  6. Jus

    Jus Пользователь

    Сообщения:
    79
    Симпатии:
    17
    Моя проблема решена. Почта заработала :cool: Ссылки на мои посты:
    Cразу напишу, что подробное решение привести не могу, но напишу с чем была связана проблема.
    1) Написал в тех. поддержку Яндекса. К удивлению, получил длинное автоматическое сообщение с кучей ссылок на инструкции по подключению почты. За три недели я данные инструкции выучил назубок. Больше писать туда не стал.
    2) Гуглил свою ошибку. Начал читать англоязычные страницы. Узнал, что такая ошибка появляется только на PHP 5.6 и выше. Объяснение этому нашел на php.net
    3) Облазил панель управления хостинга. Узнал, что у меня PHP 7.1. Выбрал другую версию - 5.5. Почта заработала.
    4) Написал второй раз в тех. поддержку хостинга (про первое обращение написано в моем предыдущем посте). На этот раз затронул тему PHP. Прикрепил им ссылку с возможным решением моей проблемы.
    5) Проблему устранили. Почта заработала на PHP 7.1. Я спросил что они сделали, но мне ответили, что это была ошибка на их стороне и она больше не повторится. Видимо, это не моё дело. Возможно, узнаю, когда в будущем вдруг перейду на VPS хостинг и буду сам настраивать.

    P.S. На тестовом сайте без SSL-сертификата запустил почту Яндекса. Тоже заработала. Сделал вывод, что для почты Яндекс сертификат необязателен.
     
    Romans, Vlad и Bkmz нравится это.