Получение roundcube для работы с dovecot, postfix и letsencrypt

Я пытаюсь получить 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 и где еще я должен проверить, чтобы определить мою проблему?

3
задан 6 June 2018 в 18:55
2 ответа

Чтобы заставить это работать, мне пришлось изменить следующее:

$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.

0
ответ дан 3 December 2019 в 06:54

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'
2
ответ дан 3 December 2019 в 06:54

Теги

Похожие вопросы