Решение:
На сервере не были установлены корневые сертификаты. У меня Debian, но это не принципиально:
apt-get install ca-certificates
- ставим набор корневых сертификатов
php -r 'print_r(openssl_get_cert_locations());' | grep '\[default_cert_file\]' | awk '{print $3}'
определяем где php ищет корневой сертификат
у меня /usr/lib/ssl/cert.pem
wget http://curl.haxx.se/ca/cacert.pem -O /usr/lib/ssl/cert.pem
Скачиваю в нужный путь корневой сертификат
На всякий случай перезапустил apache и php
Получил эту ошибку: MAIL FROM not accepted from server!
В файле .../system/library/mail.php
if ($this->verp) {
fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . "\r\n");
} else {
fputs($handle, 'MAIL FROM: <' . $this->from . '>' . "\r\n");
}
Меняем на это
if ($this->verp) {
fputs($handle, 'MAIL FROM: <' . $this->smtp_username . '>XVERP' . "\r\n");
} else {
fputs($handle, 'MAIL FROM: <' . $this->smtp_username . '>' . "\r\n");
}
Уже работает! Но в письме заголовки From и Reply-To идут от имени клиента. Плохо, не все такие письма примут, а если примут, то с предупреждением, что жулики.
Находим в этом же файле такое:
$header .= 'From: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL;
if (!$this->reply_to) {
$header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->from . '>' . PHP_EOL;
И делаем так:
$header .= 'From: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->smtp_username . '>' . PHP_EOL;
if (!$this->reply_to) {
$header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->sender) . '?= <' . $this->smtp_username . '>' . PHP_EOL;
Надеюсь кому-нибудь поможет.