Обновился до PHP 7, не уходит почта с FormIt

Здравствуйте. Обновился с PHP 5.5 до PHP 7, все чудесно, но я так понял с версии РHP 5.6 произошли изменения по работе с TLS сертификатами. И вот Postfix на VPS — сервере уже не хочет от модекса, да и от Wordpress тоже принимать соединение. Пишет что проблема с CA сертификатами. Перегенерировал самоподписные сертификаты, результат тот же. Может кто боролся с таким? Подскажите.

[2016-04-30 21:40:10] (ERROR @ /var/www/web1/www/core/model/modx/mail/phpmailer/class.smtp.php : 343) PHP warning: stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
[2016-04-30 21:40:10] (ERROR @ /var/www/web1/www/core/components/formit/model/formit/fihooks.class.php : 552) [FormIt] Произошла ошибка при попытке отправить почту. Ошибка соединения с SMTP-сервером https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Сергей Росоловский
30 апреля 2016, 18:53
modx.pro
3 526
0

Комментарии: 3

Сергей Росоловский
03 мая 2016, 10:37
+1
Ну раз никто не ответил. Напишу тогда сам как удалось исправить проблему. Может кому надо будет.
В php.ini на сервере прописываем путь к CA сертификату
openssl.cafile = "/etc/ssl/ca-bundle.crt"
openssl.capath = "/etc/ssl"
Далее в настройках почты в панели управления MODx в SMTP-хосты (mail_smtp_hosts) прописываем FQDN имя нашего хоста, такое же как в Common Name при создании SSL сертификата, иначе не заработает. Теперь отправка почты через SMTP с шифрованием TLS средствами PHP работает. Такой вот маленький момент вроде как начиная с PHP 5.6 и дальше.
    Роман Садоян
    22 октября 2016, 16:27
    0
    А где взять сертификат и можно ли использовать сгенерированный Let's Encrypt?

    У меня на сервере несколько доменов, можно прописать в конфиге гаждого сайта почтовый сервер mail.site1.ru т.к. ip одинаковый же, и прописать в php.ini сертификат для этого домена, будет ли он работать для всех?
    Вадим Бендас
    07 октября 2017, 16:45
    0
    Была такая же ошибка после обновления php5.6 на 5.7 потратил полтора дня на решение пробовал как написано выше не дало результата

    в общем решил понизить php на 5.6 и увидел тут ошибку
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 335, in get_ppa_info
        ret = get_ppa_info_from_lp(user, ppa)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 92, in get_ppa_info_from_lp
        return get_info_from_lp(lp_url)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 88, in get_info_from_lp
        return _get_https_content_py3(lp_url)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 110, in _get_https_content_py3
        lp_page = urllib.request.urlopen(request, cafile=LAUNCHPAD_PPA_CERT)
      File "/usr/lib/python3.5/urllib/request.py", line 153, in urlopen
        capath=capath)
      File "/usr/lib/python3.5/ssl.py", line 470, in create_default_context
        context.load_verify_locations(cafile, capath, cadata)
    FileNotFoundError: [Errno 2] No such file or directory
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/bin/add-apt-repository", line 122, in <module>
        shortcut = shortcut_handler(line)
      File "/usr/lib/python3/dist-packages/softwareproperties/SoftwareProperties.py", line 864, in shortcut_handler
        ret = factory(shortcut)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 407, in shortcut_handler
        return PPAShortcutHandler(shortcut)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 364, in __init__
        info = get_ppa_info(self.shortcut)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 347, in get_ppa_info
        _get_suggested_ppa_message(user, ppa))
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 304, in _get_suggested_ppa_message
        lp_user = get_info_from_lp(LAUNCHPAD_USER_API % user)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 88, in get_info_from_lp
        return _get_https_content_py3(lp_url)
      File "/usr/lib/python3/dist-packages/softwareproperties/ppa.py", line 110, in _get_https_content_py3
        lp_page = urllib.request.urlopen(request, cafile=LAUNCHPAD_PPA_CERT)
      File "/usr/lib/python3.5/urllib/request.py", line 153, in urlopen
        capath=capath)
      File "/usr/lib/python3.5/ssl.py", line 470, in create_default_context
        context.load_verify_locations(cafile, capath, cadata)
    FileNotFoundError: [Errno 2] No such file or directory

    А решение очень простое
    apt-get install --reinstall ca-certificates
    update-ca-certificates

    после чего не стал понижать php, а решил попробовать и юху… работает отправка)))
    Может кому пригодится данное решение вопроса.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3