我有一个颁发的 Comodo PositiveSSL 证书,mail.btcontract.com并且我已经设置了 Postfix 和 Dovecot 以通过以下方式使用它:
后缀 main.cf:
smtpd_tls_cert_file = /etc/ssl/mail/mail_btcontract_com.crt
smtpd_tls_key_file = /etc/ssl/mail/mail_btcontract_com.key
smtpd_tls_CAfile = /etc/ssl/mail/AddTrustExternalCARoot.crt
smtp_tls_CAfile = /etc/ssl/mail/AddTrustExternalCARoot.crt
dovecot.conf:
ssl_cert =< /etc/ssl/mail/mail_btcontract_com.pem
ssl_key =< /etc/ssl/mail/mail_btcontract_com.key
我已经按照本教程生成pem:crthttp: //blog.wong42.com/2011/05/converting-a-ssl-certificate-from-crt-format-to-pem/
问题是当我尝试从 Thunderbird 邮件客户端连接到我的服务器时,我看到以下错误:

同时在/var/log/mail.log我看到这个:
Nov 16 12:15:57 BTContractTest postfix/smtpd[22870]: connect from 51-28-134-95.pool.ukrtel.net[95.134.28.51]
Nov 16 12:15:58 BTContractTest postfix/smtpd[22870]: Anonymous TLS connection established from 51-28-134-95.pool.ukrtel.net[95.134.28.51]: TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Nov 16 12:15:58 BTContractTest postfix/smtpd[22870]: warning: TLS library problem: 22870:error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c:1258:SSL alert number 48:
Nov 16 12:15:58 BTContractTest postfix/smtpd[22870]: lost connection after STARTTLS from 51-28-134-95.pool.ukrtel.net[95.134.28.51]
当我尝试时,openssl s_client -connect mail.btcontract.com:143 -starttls imap我第一次看到:
CONNECTED(00000003)
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = mail.btcontract.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = mail.btcontract.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = mail.btcontract.com
verify error:num=21:unable to verify the first certificate
verify return:1
发生了什么事,我应该怎么做才能解决这一切?
此外,这些是我从证书颁发机构获得的所有文件:

我不在任何地方使用中间证书,这可能是问题的根源吗?
更新
按照 Thomas Pornin 的建议,我做了以下事情:
cat mail_btcontract_com.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > full.crt
然后在 Postfix main.cf 中:
smtpd_tls_cert_file = /etc/ssl/mail/full.crt
smtpd_tls_key_file = /etc/ssl/mail/mail_btcontract_com.key
smtpd_tls_CAfile = /etc/ssl/mail/AddTrustExternalCARoot.crt
smtp_tls_CAfile = /etc/ssl/mail/AddTrustExternalCARoot.crt
dovecot.conf:
ssl_cert =< /etc/ssl/mail/full.crt
现在我得到了一个不同的错误:
Nov 16 13:28:09 BTContractTest postfix/smtpd[23921]: warning: cannot get RSA private key from file /etc/ssl/mail/mail_btcontract_com.key: disabling TLS support
Nov 16 13:28:09 BTContractTest postfix/smtpd[23921]: warning: TLS library problem: 23921:error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch:x509_cmp.c:330:
我尝试过切换连接证书的位置,还尝试像这样包含根 ca:
cat AddTrustExternalCARoot.crt mail_btcontract_com.crt COMODORSAAddTrustCA.crt COMODORSADomainValidationSecureServerCA.crt > full.crt
但到目前为止还没有运气。