AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 915342
Accepted
kojow7
kojow7
Asked: 2018-06-06 13:25:12 +0800 CST2018-06-06 13:25:12 +0800 CST 2018-06-06 13:25:12 +0800 CST

让roundcube与dovecot、postfix和letsencrypt一起工作

  • 772

我正在尝试从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,我还应该在哪里检查以查明我的问题?

dovecot
  • 3 3 个回答
  • 4686 Views

3 个回答

  • Voted
  1. silmaril
    2018-06-07T01:05:06+08:002018-06-07T01:05:06+08:00

    TL;DR:您无法进行自定义端口配置和预期的标准客户端设置工作

    解释

    通过设置以下配置,您已将 dovecot 配置为在 IMAP 端口上使用 IMAPS 协议进行侦听:

    我的 10-master.conf 文件中还有以下内容:

    service imap-login {
      inet_listener imap {
        port = 0
      }
      inet_listener imaps {
        port = 143
        ssl = yes
      }
    }
    

    => 此块禁用明文(和 TLS 可升级)“imap”协议(端口 = 0)并启用“imap”端口,并在端口 143 上强制初始 SSL/TLS 握手。

    然而,端口 143 是 IMAP 协议的 IANA 分配的端口,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 与证书一起使用,而这些证书与主机名一起使用,因此您无法通过 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 服务器位于同一主机上,则配置只需:

    $config['default_host'] = 'localhost'
    
    • 4
  2. Best Answer
    kojow7
    2018-12-11T22:08:37+08:002018-12-11T22:08:37+08:00

    为了使它工作,我必须更改以下内容:

    $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安装目录中。

    • 1
  3. mrupio
    2022-06-24T21:25:31+08:002022-06-24T21:25:31+08:00

    Roundcube 中没有像“ssl_cert”或“ssl_key”这样的参数。此配置(kojow7 的)似乎是正确的,因为此 conf 中没有“cacert”,这意味着“verify_peer”设置为 false。

    正确的解决方案如下(至少在 Ubuntu 22.04 中):

    'cafile' => '/etc/ssl/certs/ISRG_Root_X1.pem',
    

    而不是“ssl_cert”和“ssl_key”。

    感谢您的关注。

    • -1

相关问题

  • Dovecot 损坏的事务日志文件正在延迟电子邮件

  • 任何关于如何在 Debian 上使用虚拟用户设置 Postfix + Dovecot 的最新教程?[关闭]

  • CentOS/Dovecot/Postfix 服务器不再允许外部电子邮件客户端发送电子邮件

  • 推荐 Dovecot / Thunderbird 到 Exchange / Outlook 迁移策略

  • 更改 Dovecot 的 IMAP 端口

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve