我已成功设置 courier+postfix 以在同一台服务器上使用多个电子邮件域。目前我在 /etc/courier/imap-ssl 中有这些行:
TLS_CERTFILE=/etc/courier/imapd.pem
TLS_TRUSTCERTS=/etc/ssl/certs
将它们更改为此效果很好:
TLS_CERTFILE=/home/certs/certs/certificate.pem.ww2.endofstars.com
TLS_TRUSTCERTS=/home/certs/chains/endofstars.crt
第一个包含权威机构的证书和我的私钥。第二个有证书链。Thunderbird 没有向我的客户显示“没有合法的企业将使用未签名的证书”消息,并且运行:
openssl s_client -connect ww2.endofstars.com:993
返回this,这让我觉得它在工作。但从那里开始就走下坡路了。当我将 TLS_CERTFILE 设置更改为:
TLS_CERTFILE=/home/certs/certs/certificate.pem
Thunderbird 再次抱怨证书无效。该文件不存在,但 imap-ssl 文档说它应该自动附加主机名以便找到 certificate.pem.ww2.endofstars.com 文件。再用openssl查询就报这个错,mail.log报:
imapd-ssl: couriertls: /home/certs/certs/certificate.pem: error:02001002:system library:fopen:No such file or directory
它没有附加主机名。imap-ssl 中的评论说多域方法是“仅限 GnuTLS”,但我不确定如何判断我是否安装了它。运行 ldd /usr/sbin/couriertcpd 显示:
linux-vdso.so.1 => (0x00007fffa75ff000)
libgdbm.so.3 => /usr/lib/x86_64-linux-gnu/libgdbm.so.3 (0x00007fcff8433000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcff8076000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcff8640000)
但我不知道我这样做是否正确,或者它会显示是否使用了 gnutls。我在 ubuntu 服务器 12.04 上。