我已成功设置 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 上。
您可以通过键入找出 Courier 使用的 SSL/TLS 库
ldd /usr/bin/couriertls
(这可能是另一个发行版中的不同路径)。您会看到在 Ubuntu 12.04 上,它是针对 OpenSSL 编译的(因为包依赖项也表明:请参阅
courier-ssl
和courier-imap-ssl
)。如果您希望它针对 GnuTLS 进行编译,您必须下载包源 (apt-get source courier-ssl
) 并调整其配置以改为使用 GnuTLS(您可能还必须安装 GnuTLS 和 gnutls-dev 包)。您可能需要阅读 Debian/Ubuntu 打包文档以找到要更改的选项。配置文件将在courier-0.66.../debian
.OpenSSL 现在也支持 Server Name Indication(这是你想要使用的),但 Courier 可能还不支持它(我不确定)。此消息似乎表明它可能会在将来的版本中发生。