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 / 问题 / 1175777
Accepted
Markus Grunwald
Markus Grunwald
Asked: 2025-03-19 17:47:41 +0800 CST2025-03-19 17:47:41 +0800 CST 2025-03-19 17:47:41 +0800 CST

我如何才能知道客户端尝试使用哪些密码连接到我的 Postfix 服务器?

  • 772

有时我会看到类似这样的 Postfix 日志:

Mar 18 13:19:19 ... smtpd[1217240]: SSL_accept error from mx0b-002b8002.pphosted.com[148.163.140.242]: -1
Mar 18 13:19:19 ... smtpd[1217240]: warning: TLS library problem: error:0A0000C1:SSL routines::no shared cipher:../ssl/statem/statem_srvr.c:2220:

我确实阻止了古老的密码:

smtpd_tls_mandatory_ciphers = high                                                             
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA                                        
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3                                                 
smtpd_tls_protocols = >=TLSv1  

所以现在我想看看客户端在尝试连接到我的服务器时提供了哪些密码,但我在日志中看不到。有没有办法获取此信息?

postfix
  • 1 1 个回答
  • 91 Views

1 个回答

  • Voted
  1. Best Answer
    Esa Jokinen
    2025-03-20T17:10:28+08:002025-03-20T17:10:28+08:00

    调试提供的密码套件

    您可以按照Postfix 调试方法debug_peer_list中的建议将客户端的 IP 地址添加到。

    可选的下一跳目的地、远程客户端或服务器名称或网络地址模式列表,如果匹配,则会导致详细日志记录级别增加指定的量$debug_peer_level。

    默认debug_peer_level = 2日志:

    • 包含命令和响应的完整 SMTP 对话。
    • 来自远程服务器的任何错误或异常响应。
    • 协议的协商以及任何尝试的 TLS 握手。
    postfix/smtpd[123]: connect from mail.example.com[192.0.2.1]
    postfix/smtpd[123]: 1A2B3C4D5E: client=mail.example.com[192.0.2.1]
    postfix/smtpd[123]: 1A2B3C4D5E: SSL/TLS session started
    postfix/smtpd[123]: 1A2B3C4D5E: SSL/TLS handshake failed: no shared cipher suites
    postfix/smtpd[123]: 1A2B3C4D5E: warning: no common cipher suites found for TLS negotiation
    postfix/smtpd[123]: 1A2B3C4D5E: disconnect from mail.example.com[192.0.2.1] ehlo=1 starttls=0/1
    

    因为您想要查看客户端提供的密码,所以您需要将调试级别增加一级。

    debug_peer_level = 3
    

    这将输出如下内容:

    postfix/smtpd[123]: connect from mail.example.com[192.0.2.1]
    postfix/smtpd[123]: 1A2B3C4D5E: client=mail.example.com[192.0.2.1]
    postfix/smtpd[123]: 1A2B3C4D5E: SSL/TLS session started
    postfix/smtpd[123]: 1A2B3C4D5E: cipher suites offered by mail.example.com: ECDHE-RSA-AES128-GCM-SHA256, ECDHE-RSA-AES256-SHA384, DHE-RSA-AES128-SHA256
    postfix/smtpd[123]: 1A2B3C4D5E: cipher suites offered by server: ECDHE-RSA-AES256-GCM-SHA384, AES128-SHA256, AES128-GCM-SHA256
    postfix/smtpd[123]: 1A2B3C4D5E: SSL/TLS handshake failed: no common cipher suites
    postfix/smtpd[123]: 1A2B3C4D5E: warning: no common cipher suites found for TLS negotiation
    postfix/smtpd[123]: 1A2B3C4D5E: disconnect from mail.example.com[192.0.2.1] ehlo=1 starttls=0/1
    

    还有什么问题?证书不兼容!

    也error:0A0000C1:SSL routines::no shared cipher可能是由于证书类型不同造成的。在这种情况下,您会看到列表中有常见的密码套件,但它们未被使用。

    例如,您的服务器可能只有 ECC 证书可用,而客户端仅支持 RSA 证书。这将导致您遇到的确切错误,并且您的调试尝试将非常令人困惑,显示如下内容:

    postfix/smtpd[123]: 1A2B3C4D5E: cipher suites offered by mail.example.com: ECDHE-RSA-AES256-GCM-SHA384, ECDHE-RSA-AES128-GCM-SHA256, DHE-RSA-AES256-GCM-SHA384
    postfix/smtpd[123]: 1A2B3C4D5E: cipher suites offered by server: ECDHE-RSA-AES256-GCM-SHA384, AES128-SHA256, AES128-GCM-SHA256, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES128-GCM-SHA256
    postfix/smtpd[123]: 1A2B3C4D5E: warning: TLS library problem: error:0A0000C1:SSL routines::no shared cipher:../ssl/statem/statem_srvr.c:2220:
    

    自从 Let's Encrypt 开始默认颁发 ECC 证书后,这种情况就经常发生:

    • 如何从 Let's Encrypt 获取 Postfix 的 ECC 和 RSA 证书?
    • 3

相关问题

  • Postfix 在特定端口上接受邮件

  • 让 Postfix 以两种方式处理垃圾邮件

  • Postfix 或 exim:自动/程序化和转发电子邮件设置

  • 后缀电子邮件地址

  • 什么是最好的开源电子邮件解决方案包

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