我们的邮件服务器最初是使用自创证书设置的。然而,当证书过期时,我试图重新创建它们,结果整个系统都崩溃了。因为我知道这很重要,所以我们运行的是 Debian 服务器和 postfix。
现在我看到邮件日志中产生了这些错误:
May 15 08:06:34 letterpress postfix/smtpd[22901]: warning: cannot get certificate from file /etc/postfix/ssl/smtpd.cert
May 15 08:06:34 letterpress postfix/smtpd[22901]: warning: TLS library problem: 22901:error:02001002:system library:fopen:No such file or directory:bss_file.c:352:fopen('/etc/postfix/ssl/smtpd.cert','r'):
May 15 08:06:34 letterpress postfix/smtpd[22901]: warning: TLS library problem: 22901:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:354:
May 15 08:06:34 letterpress postfix/smtpd[22901]: warning: TLS library problem: 22901:error:140DC002:SSL routines:SSL_CTX_use_certificate_chain_file:system lib:ssl_rsa.c:720:
May 15 08:06:34 letterpress postfix/smtpd[22901]: cannot load RSA certificate and key data
当尝试从本地网络之外的 Thunderbird 等客户端访问电子邮件时,您会收到“无法连接到 smtp 服务器”的消息。
我已经验证文件 /etc/postfix/ssl/smtpd.cert 确实存在。该文件的当前所有者是root:root
。这是否需要更改?
答案1
您的/etc/postfix/main.cf
意愿包含以下三个指令。
smtpd_tls_cert_file=
smtpd_tls_key_file=
smtpd_use_tls=yes
这告诉 Postfix 使用 TLS。
您可以通过禁用 TLS 或创建新证书使其重新工作。
禁用 TLS
- 改变smtpd_use_tls从是到否
- /etc/init.d/postfix 重启
创建新证书
- 找到密钥文件(根据smtpd_tls_key_文件)。如果缺失,则必须创建一个新的。(openssl genrsa -out 文件名.key 1024; chmod 600 文件名.key)
- 创建一个企业社会责任(openssl req -new -key 文件名.key -out 文件名.csr)
- 创建证书(openssl x509 -req -days 730 -in 文件名.csr -signkey 文件名.key -out 文件名.crt)
- 将其转换为 .pem 格式(cat 文件名.key 文件名.crt > 文件名.pem;chmod 600 文件名.pem;chown postfix 文件名.pem)
然后确保它位于需要的位置/etc/postfix/main.cf,然后重新启动 Postfix。一切就绪。
答案2
看起来好像您在“/etc/postfix/ssl/smtpd.cert”中遇到了问题,要么是文件丢失,要么是文件上的权限错误,要么是其中的证书格式无效。
答案3
我遇到了这个问题。原来我的私钥名称是邮件服务器。质子泵但在 postfix 的配置中它是邮件服务器。钥匙。我遵循了一个包含 .pem 扩展名的教程。
我还让证书和私钥只能由 root 读取,我对此进行了更改,以便 root 和 postfix 都可以读取它们(chown root:postfix filename;chmod 640 filename)。不确定是否需要第二步。