我已经成功地设置了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
返回这个 ,这让我觉得它的工作。 但是从那里下坡了。 当我将我的TLS_CERTFILE设置更改为:
TLS_CERTFILE=/home/certs/certs/certificate.pem
雷鸟再次抱怨一个无效的证书。 这个文件不存在,但是imap-ssl文档说它应该自动附加主机名以便findcertificate.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 only”,但我不知道如何知道如果我已经安装它。 运行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。
你可以通过键入ldd /usr/bin/couriertls (这可能是另一个发行版中的不同path)来找出Courier使用的SSL / TLS库。
你会发现,在Ubuntu 12.04上,它是针对OpenSSL编译的(因为软件包依赖关系也指出:请参阅courier-ssl和courier-imap-ssl )。 如果你想让它针对GnuTLS进行编译,你必须下载软件包源代码( apt-get source courier-ssl ),并调整它的configuration来使用GnuTLS(你可能需要安装GnuTLS和gnutls- dev软件包)。 您可能需要阅读Debian / Ubuntu的包装文档,找出哪些选项可以改变。 configuration文件将在courier-0.66.../debian 。
现在OpenSSL也支持服务器名称指示(这就是你想使用的),但是这可能不被Courier支持(我不确定)。 这个消息似乎表明它可能会在未来的版本中发生。