我正在尝试从letsencrypt获得roundcube、dovecot、postfix和证书,以便在Debian 9上协同工作。
我使用 apt-get 命令安装了 roundcube。
尝试登录圆形立方体时,它需要很长时间才能显示“正在加载...”,但随后并没有让我登录。屏幕上的错误显示Connection to storage server failed
。查看圆形立方体错误日志,我收到以下错误:
IMAP Error: Login failed for [email protected] 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)
运行/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,我还应该在哪里检查以查明我的问题?
TL;DR:您无法进行自定义端口配置和预期的标准客户端设置工作
解释
通过设置以下配置,您已将 dovecot 配置为在 IMAP 端口上使用 IMAPS 协议进行侦听:
=> 此块禁用明文(和 TLS 可升级)“imap”协议(端口 = 0)并启用“imap”端口,并在端口 143 上强制初始 SSL/TLS 握手。
然而,端口 143 是 IMAP 协议的 IANA 分配的端口,IMAPS 应该在 993 上(请参阅
/etc/services
端口参考)。应该可以保持此配置并使 dovecot 满意,但您将需要调整所有客户端配置,因为没人预料到这一点,IMAP 端口 (143) 的默认设置是允许明文通信和广告时可选的 TLS 升级。
要使用roundcube,您将需要以下内容:
或者
这将指示 roundcube 您的 imap 服务期望通过标准纯文本 (143) 端口进行预加密连接。
至于
telnet localhost 143
你不能用它来测试 SSL 连接,你需要类似的东西openssl s_client -servername fqdn.of.server -connect localhost:143
请注意,SSL/TLS 与证书一起使用,而这些证书与主机名一起使用,因此您无法通过 localhost 进行 SSL 连接而不会出现一些证书问题。
建议:
虽然可以为每个应用程序调整端口,但许多系统(防火墙、默认设置等)依赖于每个应用程序都分配了一个特定端口这一事实。
使用 IMAPS 在端口 143 上使用 imap 服务器是可能的,但您会遇到各种问题,具体取决于客户端/网络。
就我个人而言,我建议不要修改 dovecot 的默认操作模式并删除对
10-master.conf
.要为 imap/pop 启用安全通信,默认 dovecot 配置中唯一需要的更改是您所做的更改
10-ssl.conf
(ssl = required + cert/key)。参考:https ://wiki.dovecot.org/SSL/DovecotConfiguration
此外,环回通道 (localhost) 上的 SSL 通信并不是很有用,这就是为什么默认情况下,即使“ssl=required”或“disable_plaintext_auth”处于活动状态,dovecot 也会考虑环回网络上的任何连接(ip 127.0.0.1 或客户端 ip与服务器 ip 相同)即使没有 ssl/tls 也是安全的。
因此,如果您的 roundcube 服务与 dovecot 服务器位于同一主机上,则配置只需:
为了使它工作,我必须更改以下内容:
至
但是,我不确定为什么会这样,因为它似乎没有在任何地方记录。
如果它对其他人有帮助,这是我的其余配置:
/etc/dovecot/conf.d/10-master.conf:
在我的 roundcube/config/config.inc.php 我有:
为了帮助诊断这一点,我还在我的 roundcube/config/config.inc.php 文件中启用了日志记录:
日志保存在
roundcube/logs
安装目录中。Roundcube 中没有像“ssl_cert”或“ssl_key”这样的参数。此配置(kojow7 的)似乎是正确的,因为此 conf 中没有“cacert”,这意味着“verify_peer”设置为 false。
正确的解决方案如下(至少在 Ubuntu 22.04 中):
而不是“ssl_cert”和“ssl_key”。
感谢您的关注。