Я пытаюсь получить roundcube, dovecot, postfix и сертификаты от letsencrypt для совместной работы в Debian 9.
Я установил roundcube с помощью команды apt-get.
При попытке войти в roundcube требуется много времени, когда появляется сообщение «Загрузка ...», но затем я не регистрируюсь. На экране отображается ошибка ] Ошибка подключения к серверу хранения
. Просматривая журналы ошибок roundcube, я получаю следующую ошибку:
IMAP Error: Login failed for user@example.com from 192.0.2.10. Empty startup greeting (localhost:143) in /usr/share/roundcube/program/lib/Roundcube/rcube_imap.php on line 193 (POST /?_task=login&_action=login)
Running /etc/init.d/dovecot status
Я получаю следующее:
dovecot[29431]: imap-login: Disconnected (no auth attempts in 60 secs): user=<>, rip=::1, lip=::1, TLS handshaking: SSL_accept() syscall failed: Success, session=<azgn6uptGtgAAAAAAAAAAAAAAAAAAAAB>
В моем config.inc.php есть следующее:
$config['default_host'] = 'tls://localhost';
и
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
),
);
$config['username_domain'] = '%d';
и следующее, указанное в моем файле dovecot 10-ssl.conf:
ssl = required
ssl_cert = </etc/letsencrypt/live/example.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/example.com/privkey.pem
У меня также есть следующее в моем файле 10-master.conf:
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 143
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 0
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
Если я использую telnet localhost 143
Я получаю:
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Я не уверен, должен ли я получать что-то большее, чем это.
Честно говоря, я не уверен, в чем заключается моя проблема или что еще нужно изучить. Почему я не могу войти в roundcube и где еще я должен проверить, чтобы определить мою проблему?
Чтобы заставить это работать, мне пришлось изменить следующее:
$config['default_host'] = 'tls://localhost';
на
$config['default_host'] = 'imaps://localhost';
Однако, я не уверен, почему это работает, так как кажется, что это нигде не задокументировано.
В случае, если это поможет кому-то другому, это остальная часть моей конфигурации:
/etc/dovecot/conf. d/10-master.conf:
service imap-login {
inet_listener imap {
#port = 143
port = 0
}
inet_listener imaps {
#port = 993
#ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
#port = 110
port = 0
}
inet_listener pop3s {
#port = 995
#ssl = yes
}
}
В моем файле roundcube/config/config.inc.php:
$config['default_host'] = 'imaps://localhost';
$config['username_domain'] = '%d';
$config['imap_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'allow_self_signed' => false,
'ssl_cert' => '/etc/letsencrypt/live/example.com/fullchain.pem',
'ssl_key' => '/etc/letsencrypt/live/example.com/privkey.pem',
'ciphers' => 'TLSv1+HIGH:!aNull:@STRENGTH',
'peer_name' => 'mail.example.com',
),
);
$config['smtp_conn_options'] = array(
'ssl' => array(
'verify_peer' => true,
'allow_self_signed' => false,
'ssl_cert' => '/etc/letsencrypt/live/example.com/fullchain.pem',
'ssl_key' => '/etc/letsencrypt/live/example.com/privkey.pem',
'ciphers' => 'TLSv1+HIGH:!aNull:@STRENGTH',
'peer_name' => 'mail.example.com',
),
);
Для помощи в диагностике я включил запись в файл roundcube/config/config.inc.php:
// Log successful/failed logins to <log_dir>/userlogins or to syslog
$config['log_logins'] = true;
// Log session authentication errors to <log_dir>/session or to syslog
$config['log_session'] = true;
// Log SQL queries to <log_dir>/sql or to syslog
$config['sql_debug'] = true;
// Log IMAP conversation to <log_dir>/imap or to syslog
$config['imap_debug'] = true;
// Log LDAP conversation to <log_dir>/ldap or to syslog
$config['ldap_debug'] = true;
// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;
Журналы были сохранены в каталоге установки roundcube/logs
.
TL;DR: Вы не можете выполнить настраиваемую конфигурацию порта и ожидаемые стандартные настройки клиента для работы
Установив конфигурацию складок, вы настроили dovecot на прослушивание с использованием протокола IMAPS на IMAP-порту:
У меня также есть следующее в моем файле 10-master.conf:
service imap-login { inet_listener imap { порт = 0 } inet_listener imaps { порт = 143 ssl = да } }
=> этот блок отключает протокол "imap" с открытым текстом (и TLS с возможностью обновления) (порт = 0) и включает порт "imaps" с принудительным начальным рукопожатием SSL/TLS на порту 143.
Порт 143, однако, является портом, назначенным IANA для протокола IMAP, IMAPS должен быть на 993 (см. /etc/services
для ссылок на порты).
Должна быть возможность сохранить эту конфигурацию и сделать dovecot счастливым, но вам нужно будет настроить все ваши клиентские конфигурации, так как никто этого не ожидает, настройки по умолчанию для порта IMAP (143) разрешают общение с чистым текстом и опциональное обновление TLS, когда это рекламируется.
Для того, чтобы roundcube работал с этим, вам понадобится что-то вроде этого:
$config['default_host'] = 'ssl://fqdn.of.server:143'
или
$config['default_host'] = 'tls://fqdn.of.server:143'
Это инструктирует roundcube, что ваш сервис imap ожидает предварительно зашифрованное соединение через стандартный порт простого текста (143).
Что касается telnet localhost 143
, то вы не можете использовать это для проверки SSL соединения, вам понадобится что-то вроде openssl s_client -servername fqdn.of.server -connect localhost:143
Пожалуйста, обратите внимание, что SSL/TLS работает с сертификатами, а эти сертификаты работают с именами хостов, поэтому вы не можете установить SSL соединение через localhost, не имея некоторых проблем с сертификатами.
Хотя можно настроить порт для каждого приложения, многие системы (брандмауэры, настройки по умолчанию, ...) полагаются на то, что каждому приложению был выделен отдельный порт.
Работа с imap-сервером с помощью IMAPS на порту 143 возможна, но вы столкнетесь с различными проблемами, зависящими от клиентов/сетей.
Лично я бы не рекомендовал изменять режим работы dovecot по умолчанию и удалять любые изменения конфигурации слушателя inet по умолчанию в 10-master.conf
.
Для обеспечения безопасной связи для imap/pop единственное необходимое изменение в конфигурации dovecot по умолчанию - это изменение, которое вы внесли по 10ssl.conf
(ssl = требуемый + cert/key).
Ссылка: https://wiki.dovecot.org/SSL/DovecotConfiguration
Добавление SSL-соединения на обратных шлейфовых каналах (localhost) не очень полезно, поэтому по умолчанию, даже при активном "ssl=required" или "disable_plaintext_auth", dovecot считает любое соединение в обратной шлейфовой сети (ip 127.0.0.1 или клиентский ip, идентичный серверному ip) безопасным даже без ssl/tls.
Таким образом, если служба roundcube находится на том же хосте, что и сервер dovecot, конфигурация должна быть :
$config['default_host'] = 'localhost'