bg-tutorials

如何在 Courier IMAP 服务器上安装 SSL 证书

在本教程中,您将学习如何在 Courier IMAP 服务器上安装 SSL 证书。您需要将证书、私钥和 CA 证书链合并到一个 PEM 文件中,将 Courier 的 TLS_CERTFILE 设置指向该文件,然后重启服务,使 IMAPS 和 POP3S 提供新证书。

在 Courier IMAP 服务器上生成 CSR 代码

如果您已经生成了 CSR 并收到了 SSL 文件,可跳过第一部分,直接进入安装步骤。

CSR(证书签名请求)是一段包含您联系信息的编码文本。您创建它并发送给证书颁发机构(CA)以通过 SSL 验证。生成 CSR 的同时也会创建对应的私钥,该私钥留存在您的服务器上,安装时需要用到。您有两种方式可以选择:

使用任意纯文本编辑器打开 CSR 文件。下单时,请复制整个代码块,包括 BEGIN 和 END 行。请妥善保管私钥文件:安装时您需要将它合并到 PEM 文件中。

在 Courier IMAP 服务器上安装 SSL 证书

通过验证后,CA 会向您发送一封包含 SSL 文件的 ZIP 压缩包邮件:主(服务器)证书和一个或多个中间(CA)证书。请在您的服务器上解压该压缩包,然后按以下步骤操作。

第一步:将证书、证书链和密钥合并到一个 PEM 文件中

Courier 从 TLS_CERTFILE 中设置的单个 PEM 文件中读取证书和私钥。请按以下顺序连接文件:先是您的服务器证书,然后是 CA 中间证书链,最后是您的私钥。在存放解压文件的目录中,运行:

cat yourdomain.crt yourdomain.ca-bundle yourdomain.key > imapd.pem
sudo mv imapd.pem /etc/courier/imapd.pem
sudo chmod 600 /etc/courier/imapd.pem

如果您的 CA 提供的中间证书是多个独立文件,而不是单个 .ca-bundle 文件,请将每个证书依次列在证书和密钥之间。完成后的 PEM 文件应类似如下:

-----BEGIN CERTIFICATE-----
(the text of your primary SSL certificate)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(the text of the intermediate / CA chain certificate)
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
(the text of your private key)
-----END PRIVATE KEY-----

较旧的密钥可能标记为 BEGIN RSA PRIVATE KEY,而不是 BEGIN PRIVATE KEY;两者都可以。密钥不得使用密码短语加密,因为 Courier 加载密钥时不会提示输入密码。由于该 PEM 文件包含私钥,因此必须仅允许 root 读取(如上文的 chmod 600)。

如果您希望将私钥单独保存在其自己的文件中,可以在 PEM 文件中不包含密钥,并在配置文件中将 TLS_PRIVATE_KEYFILE 设置为该密钥的路径(第二步)。如果密钥已经嵌入在 TLS_CERTFILE 中,则单独的密钥文件是可选的。

第二步:将 Courier 指向您的 PEM 文件

打开 Courier 用于 SSL 上的 IMAP 的配置文件。路径取决于您的发行版:通常是 /etc/courier/imapd-ssl,某些系统上则是 /usr/lib/courier-imap/etc/imapd-ssl。使用文本编辑器编辑该文件,例如:

sudo nano /etc/courier/imapd-ssl

找到 TLS_CERTFILE 一行(如果没有请添加),将其设置为您的 PEM 文件:

TLS_CERTFILE=/etc/courier/imapd.pem

如果您在第一步中将私钥单独保存,还需要设置其路径:

TLS_PRIVATE_KEYFILE=/etc/courier/imapd.key

在编辑此文件时,请顺便加强 TLS 设置。删除或注释掉任何强制使用过时协议的行,例如 TLS_PROTOCOL=SSL3:SSLv3 以及早期的 TLS 1.0 和 1.1 版本均不安全,应当禁用。将 Courier 设置为要求使用 TLS 1.2 或更高版本。TLS_PROTOCOL 适用于专用的 SSL 端口(IMAPS),而 TLS_STARTTLS_PROTOCOL 适用于标准端口上的 STARTTLS:

TLS_PROTOCOL=TLSv1.2
TLS_STARTTLS_PROTOCOL=TLSv1.2

TLSv1.2 这个值表示“TLS 1.2 或更高版本”,因此当您的 OpenSSL 版本支持时,仍会协商使用 TLS 1.3。您无需设置 TLS_TRUSTCERTS 就可以向邮件客户端提供您的证书;该变量仅用于验证客户端证书。

Debian、Ubuntu 和 Devuan 用户注意:在这些发行版上,Courier 是基于 GnuTLS 而非 OpenSSL 构建的,TLS_PROTOCOL 不会生效。请改用 TLS_PRIORITY 来设置协议下限,例如 TLS_PRIORITY=NORMAL:-VERS-TLS1.0:-VERS-TLS1.1(这样只保留 TLS 1.2 和 1.3)。两种构建版本中的 TLS_CERTFILE 和上面合并的 PEM 文件是相同的,因此证书安装本身没有变化。

关于 Diffie-Hellman 参数的说明:当前版本的 Courier 软件包会通过 mkdhparams 脚本和定期的 cron 任务自动生成 DH 参数文件,并从 TLS_DHPARAMS 中读取,因此对于标准安装,您不再需要手动创建该文件。旧版的 TLS_DHCERTFILE 指令已在 Courier 4.15 中移除。如果您的服务器上从未运行过 mkdhparams,请手动运行一次以创建该文件。

如果您还需要提供 POP3S 服务(端口 995),请打开 POP3 配置文件 /etc/courier/pop3d-ssl(或 /usr/lib/courier-imap/etc/pop3d-ssl),并应用相同的设置。您可以重用同一个 PEM 文件,或者创建一个专门的 /etc/courier/pop3d.pem,内容相同:

TLS_CERTFILE=/etc/courier/pop3d.pem
TLS_PROTOCOL=TLSv1.2
TLS_STARTTLS_PROTOCOL=TLSv1.2

第三步:重启 Courier

重启 Courier,使其加载新证书。在大多数基于 systemd 的发行版上,请重启 SSL 服务和身份验证守护进程:

sudo systemctl restart courier-imap-ssl
sudo systemctl restart courier-pop3-ssl
sudo systemctl restart courier-authdaemon

部分软件包提供的是单一的合并单元。如果上述服务未找到,请尝试:

sudo systemctl restart courier

在不使用 systemd 的系统上,请通过 Courier 自带的脚本进行重启:

/usr/lib/courier-imap/libexec/imapd-ssl.rc restart
/usr/lib/courier-imap/libexec/pop3d-ssl.rc restart

服务成功重启后,您的新 SSL 证书将立即生效,适用于 IMAPS(端口 993)和 POP3S(端口 995),以及端口 143 和 110 上的 STARTTLS。

测试您的 SSL 安装

安装完成后,请确认证书是否正确提供。在终端中,打开一个到 IMAPS 端口的 TLS 连接,读取服务器提供的证书:

openssl s_client -connect mail.yourdomain.com:993 -servername mail.yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates

对于 POP3S,请使用端口 995。若要在标准 IMAP 端口上测试 STARTTLS,请运行:

openssl s_client -connect mail.yourdomain.com:143 -starttls imap

第一条命令将连接传输给 openssl x509,并打印出颁发者、主题(通用名称)和有效期,以便您确认所提供的证书正确无误。STARTTLS 命令显示完整的握手过程:请检查颁发者和证书链是否正确,并确认末尾出现 Verify return code: 0 (ok)。如需获取有关您的证书及其配置的完整报告,请使用我们的 SSL Checker。

常见问题

在 Courier PEM 文件中,我应该按什么顺序合并这些文件?

先是服务器证书,然后是中间(CA)证书链,最后是私钥,全部放在一个 PEM 文件中。Courier 从 TLS_CERTFILE 中读取此文件,并将完整证书链提供给客户端。私钥必须是未加密的(不能设置密码短语)。

Courier SSL 配置文件在哪里?

SSL 上的 IMAP 配置文件为 /etc/courier/imapd-ssl,SSL 上的 POP3 配置文件为 /etc/courier/pop3d-ssl。在某些发行版上,这些文件位于 /usr/lib/courier-imap/etc/ 目录下。明文端口的 STARTTLS 设置则在对应的 imapd 和 pop3d 文件中。

Courier 还需要 Diffie-Hellman(DH)参数吗?

对于普通安装,不需要手动操作。当前版本的 Courier 软件包会通过 mkdhparams 脚本自动生成 DH 参数文件,并按计划刷新,从 TLS_DHPARAMS 中读取。旧版的 TLS_DHCERTFILE 指令已在 Courier 4.15 中移除。只有在尚未存在 DH 文件的情况下,才需要手动运行一次 mkdhparams。

如何在 Courier 中禁用 SSLv3 和旧版本的 TLS?

删除任何 TLS_PROTOCOL=SSL3 这一行,并在 imapd-ssl 和 pop3d-ssl 中设置 TLS_PROTOCOL=TLSv1.2。为 STARTTLS 端口设置 TLS_STARTTLS_PROTOCOL=TLSv1.2。TLSv1.2 这个值表示“1.2 或更高版本”,因此当您的 OpenSSL 支持时,会自动使用 TLS 1.3。

重启 Courier 后,如何验证证书?

使用 OpenSSL 连接到邮件端口,读取所提供的证书:对于 IMAPS,使用 openssl s_client -connect mail.yourdomain.com:993;若在端口 143 上测试,则添加 -starttls imap。确认颁发者和证书链正确,且输出显示 Verify return code: 0 (ok)。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.