2016-01-30 1 views
1

Не может быть очень полезным вопросом, но я не могу понять, что нет четкого ответа на эту проблему. Я только что понял через некоторые уже ответившие вопросы о проблемах с подключением imap_open(), что при подключении к серверу SSL функция, скорее всего, вернет ошибку. Так что мне просто интересно, что проблема PHP в использовании SSL?Почему php не imap_open(), как SSL?

Используя эту строку подключения возвращает сообщение об ошибке:

function connect($host, $port, $login, $pass){ 

    $this->server = $host; 
    $this->username = $login; 

    $this->link = imap_open("{". $host .":". $port."}INBOX", $login, $pass); 
     if($this->link) { 
      $this->status = 'Connected'; 
    } else { 
     $this->error[] = imap_last_error(); 
     $this->status = 'Not connected'; 
    } 
} 

Хотя это один подключается без проблем:

function connect($host, $port, $login, $pass){ 

    $this->server = $host; 
    $this->username = $login; 

    $this->link = imap_open("{". $host .":". $port."/imap/ssl/novalidate-cert}INBOX", $login, $pass); 
     if($this->link) { 
      $this->status = 'Connected'; 
    } else { 
     $this->error[] = imap_last_error(); 
     $this->status = 'Not connected'; 
    } 
} 
+2

Похоже, что большинство локальных корневых хранилищ сертификатов не настроено правильно (кажется, что PHP не поставляется с такой настройкой правильно), поэтому, когда он пытается проверить удаленный сертификат (необходимую часть безопасности), он может «т. Использование novalidate-cert оставляет вас открытым для атак. Кроме того, многие небольшие установки используют самоподписанные (недействительные) сертификаты. – Max

ответ

2

Если сервер требует шифрованного соединения, это означает, что вы подключаетесь к зашифрованному порту, и ваш скрипт не сработает, если вы не используете /ssl (он вообще не будет подключен).

Сервер также может принимать соединение с открытым текстом, а затем требует шифрования (см. STARTTLS), но я предполагаю, что он будет подключаться, а затем отправлять IMAP-ошибку.

Это может быть проверено подключаемым вами портом и спецификацией вашего почтового сервера. Обычно порты 465/993 назначаются для использования зашифрованных TLS/SSL-соединений, а 25/143/587 могут принимать незашифрованное соединение, а затем запрашивать обновление.