У меня есть Постфикс / Голубятня / установка Roundcube, которую я использую лично, а также предоставляю другим пользователям. Я пытаюсь передать эту всю установку новому полю, но имею некоторые проблемы.
Почтовое получение хорошо работает, (только протестированный внутренне, домен еще не передается.), а также внешняя IMAP & SMTP работающее отлично использование TLS/SSL (Thunderbird, например)
Проблема с моей установкой roundcube, которая может использовать IMAP для 127.0.0.1, и отображает электронную почту пользователя замечательно, но не может послать электронное письмо, просто требуя: "SMTP Error (220): Authentication failed."
Странно, с той же конфигурацией Постфикса/Голубятни, которую я использовал на своем текущем сервере, Roundcube больше не может получать доступ к нему на моем новом сервере. Вот соответствующая конфигурация roundcube:
$config['smtp_server'] = 'tls://localhost';
// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;
// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 587;
// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '%u';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '%p';
Журнал журналов/ошибок Roundcube просто говорит:
[02-Jan-2015 16:55:49 America/New_York] STARTTLS failed ():
[02-Jan-2015 16:55:49 -0500]: SMTP Error: SMTP error: Authentication failure: STARTTLS failed (Code: ) in /var/wwwmail/program/lib/Roundcube/rcube.php on line 1505 (POST /?_task=mail&_unlock=loading1420235752730&_lang=undefined&_framed=1?_task=mail&_action=send)
В то время как logs/smtp Roundcube регистрируют шоу:
[02-Jan-2015 17:50:01 -0500]: Recv: 220 example.net ESMTP Postfix
[02-Jan-2015 17:50:01 -0500]: Send: EHLO example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-PIPELINING
[02-Jan-2015 17:50:01 -0500]: Recv: 250-SIZE 104857600
[02-Jan-2015 17:50:01 -0500]: Recv: 250-VRFY
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ETRN
[02-Jan-2015 17:50:01 -0500]: Recv: 250-STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ENHANCEDSTATUSCODES
[02-Jan-2015 17:50:01 -0500]: Recv: 250-8BITMIME
[02-Jan-2015 17:50:01 -0500]: Recv: 250 DSN
[02-Jan-2015 17:50:01 -0500]: Send: STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 220 2.0.0 Ready to start TLS
[02-Jan-2015 17:50:01 -0500]: Send: RSET
[02-Jan-2015 17:50:01 -0500]: Recv: M I A…"qhçR¸
[02-Jan-2015 17:50:01 -0500]: Send: QUIT
Вот соответствующие отрывки моей постфиксной конфигурации от/etc/postfix/main.cf
# TLS parameters for SMTP service
smtpd_tls_security_level = may
smtpd_tls_cert_file = /etc/ssl/private/example.net/example.net.crt
smtpd_tls_key_file = /etc/ssl/private/example.net/example.net.key
smtpd_tls_auth_only = yes
Вот соответствующие отрывки моей постфиксной конфигурации от/etc/postfix/master.cf
smtp inet n - - - - smtpd
-o content_filter=spamassassin
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o cleanup_service_name=cleanup_submit
smtps inet n - - - - smtpd
-o content_filter=spamassassin
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
Постфиксный журнал /var/log/mail.log
отчеты следующие ошибки:
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: connect from localhost.localdomain[127.0.0.1]
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: SSL_accept error from localhost.localdomain[127.0.0.1]: 0
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: warning: TLS library problem: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1292:SSL alert number 48:
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: lost connection after STARTTLS from localhost.localdomain[127.0.0.1]
Jan 2 17:50:01 example postfix/submission/smtpd[19959]: disconnect from localhost.localdomain[127.0.0.1]
Я считал несколько других вопросов с подобными кодами ошибок, но они все, кажется, используют или самоподписанные сертификаты или добавляют ссылку к хешу сертификата от/etc/ssl/certs/, который я попробовал, хотя я, возможно, понял мисс и связал неправильный сертификат.
Roundcube обновляется к 1.0.4, который, как предполагалось, устранил проблему с php несовместимостью версии из-за openssl. Я - все из идей, у кого-либо есть какие-либо идеи?
Сообщение об ошибке, приведенное выше, похоже на то, что клиенту (сценарий PHP, запущенный roundcube) не удается проверить сертификат узла из-за неизвестного CA . Эта ошибка произошла по многим причинам.
Что касается openssl, Roundcube версии 1.0-RC и более поздних версий поставлялись с опцией подключения SSL. Параметр smtp_conn_options
и imap_conn_options
был добавлен в версии 1.0-RC и 1.0.3 соответственно. По умолчанию значение обоих параметров было нулевым. Приведенный ниже фрагмент был взят из файла roundcube config / defaults.inc.php
. Вы можете обратиться к руководству по PHP , чтобы получить полное описание этого параметра.
// SMTP socket context options
// See http://php.net/manual/en/context.ssl.php
// The example below enables server certificate validation, and
// requires 'smtp_timeout' to be non zero.
// $config['smtp_conn_options'] = array(
// 'ssl' => array(
// 'verify_peer' => true,
// 'verify_depth' => 3,
// 'cafile' => '/etc/openssl/certs/ca.crt',
// ),
// );
$config['smtp_conn_options'] = null;
Во многих системах, использующих самоподписанный сертификат, значение по умолчанию работает для PHP 5.5 и ранее. По умолчанию PHP 5.6 проверяет сертификат однорангового узла по установленному ЦС и проверяет имя узла .
Теперь похоже, что Debian jessie также поставляется с версией PHP 5.6 по умолчанию . Очевидно, PHP не может проверить сертификат postfix. Возможные причины: PHP не работает в verify_peer_name (потому что вы указываете localhost в hostname) или в verify_peer (потому что CA был неизвестен)
Подобный случай также произошел с пользователем Arch Linux . Решение было либо:
У меня была такая же ошибка. Исправьте это, добавив файл CA в файл postfix main.cf.
Расположение может быть по адресу /etc/postfix/main.cf
.
smtpd_tls_CAfile = /etc/postfix/cacert.pem
smtpd_tls_cert_file = /etc/postfix/foo-cert.pem
smtpd_tls_key_file = /etc/postfix/foo-key.pem
, так как я использую dovecot, моим решением было добавить CA в /etc/dovecot/dovecot.conf
ssl_ca = </etc/ssl/ca.pem
PHP 5.6 выполняет проверку однорангового узла SSL, что означает, что он проверяет сертификат SMTP-сервера, является ли он известным CA.
Параметр smtp_server должен соответствовать полю CN сертификата! (Общее имя)
Так что не помещайте туда localhost, поместите туда полное квалифицированное доменное имя, которое соответствует вашему сертификату.
Кредитование: https://www.blogobramje.nl/posts/ Roundcube_sending_mail_broken_with_PHP_5.6 _-_ STARTTLS_failed /
Та же проблема! Быстрый грязный обходной путь: изменение в config / defaults.inc.php verify_peer на false.
$config['smtp_conn_options'] = array(
'ssl' => array(
'verify_peer' => false,
'verify_depth' => 3,
'cafile' => '/etc/openssl/certs/ca.crt',
),
);
ПРЕДУПРЕЖДЕНИЕ ТОЛЬКО для тестирования; НЕ ДЛЯ ПРОИЗВОДСТВЕННЫХ сред