Dovecot
Dovecot 是一个开源的 IMAP 和 POP3 服务器,主要为 Linux/UNIX-like 系统设计,并着重于安全性。Dovecot 的主要目标是成为一个轻量级、快速且易于设置的开源邮件服务器。更多详细信息,请参阅官方 Dovecot 文档。
本文档将介绍如何为个人或小型办公室设置 Dovecot。
由于 Dovecot 2.4 版本在配置格式上进行了破坏性更改,Arch Linux 同时提供了最新发布版和 2.3 系列的版本。后者除了关键安全更新外,将不再接收新功能或错误修复。
安装
要安装最新版本的 Dovecot,请 安装 dovecot 软件包;要安装旧的 2.3 系列版本,请安装 dovecot23 软件包。
配置
- 在 Dovecot 2.4 中,**配置语法与 2.3 及更早版本相比发生了巨大变化**(破坏性更改!)。不再支持 2.4 之前的配置文件。如果您从 2.4 之前的版本升级,则必须重写您的配置。
- 请注意,迁移过程可能具有挑战性。不要轻率对待。迁移指南与 Dovecot 的其他文档一样,内容精炼。请花时间,让自己熟悉该主题。很可能,您需要经历一个反复试验的过程。如果可能,请设置一个可以自由尝试的测试环境。在此期间,请考虑在生产环境中使用 dovecot23。
Dovecot 的配置文件存储在 /etc/dovecot/dovecot.conf。软件包随附了一个示例配置文件。要使用示例配置,仍需进行一些手动步骤:
- 需要创建
vmail用户和组。 - 需要 SSL 证书或需要创建。
有关更多信息,请参阅官方文档 TLDR 和 SSL 和明文身份验证。
此外,开发人员已将旧示例迁移到 2.4 语法,并在 GitHub 上提供。这些示例希望能有所帮助,但预计该存档不会及时更新。
必需的设置
dovecot_config_version **必须**设置,并且必须是配置文件中的第一个设置。dovecot_storage_version 也必须设置。这些设置的值应与实际使用的配置语法、名称以及 Dovecot 本身创建的文件格式相匹配。
身份认证
用户身份验证通过 passdb 过滤器进行管理。
启用 PAM passdb 驱动
passdb pam {
# Additional PAM-specific settings here, if needed.
}
相关的 PAM 配置包含在 /etc/pam.d/dovecot 中。
有关其他驱动程序及其设置列表,请参阅 passdb 文档。
TLS 连接
要接受 TLS 连接,您需要获取一个证书。本节假定您已经拥有证书及其私钥。两者都必须是 PEM 格式。
首先,生成 Diffie-Hellman 密钥交换所需的参数。
$ openssl dhparam -out dhparams.pem 4096
此操作可能需要一些时间。输出将写入 dhparams.pem。
最后,配置 Dovecot 以使用所有三个文件。
ssl_server {
cert_file = /path/to/fullchain.pem
key_file = /path/to/privkey.pem
dh_file = /path/to/dhparams.pem
}
全文搜索
默认情况下,Dovecot 不会索引完整的邮件内容,这会导致对大型邮箱执行 IMAP SEARCH 查询时响应缓慢。Dovecot 可以连接到多种 FTS 后端[死链 2025-08-15—HTTP 404]。
Dovecot 需要一个针对所选搜索后端的插件。solr 插件包含在 dovecot 中,但 solr 本身并不容易设置。有适用于 Xapian(dovecot-fts-xapian)和 Elasticsearch(dovecot-fts-elastic)的软件包。
启动服务器
启动/启用 dovecot.service。
技巧与提示
使用非默认哈希函数生成哈希值。
$ doveadm pw -s SHA512-CRYPT -p "password"
确保数据库中的列足够大。如果太小,会发出警告。
记住设置密码方案。
dovecot-sql.conf
default_pass_scheme = SHA512-CRYPT
故障排除
警告:pipe 标志 `D' 需要 dovecot_destination_recipient_limit = 1
如果您无法接收具有多个收件人的电子邮件,并且日志中出现类似以下内容:
mail postfix/pipe[663]: 72A62733: to=<user2@example.com>, relay=dovecot, delay=495, delays=495/0.01/0/0.08, dsn=4.3.5, status=deferred (mail system configuration error) mail postfix/pipe[663]: 72A62733: to=<user1@example.com>, relay=dovecot, delay=495, delays=495/0.01/0/0.06, dsn=4.3.5, status=deferred (mail system configuration error) mail postfix/pipe[1614231]: warning: pipe flag `D' requires dovecot_destination_recipient_limit = 1
在 /etc/postfix/main.cf 中添加 dovecot_destination_recipient_limit = 1,然后重新加载 postfix。
更新到 2.4 后 dovecot.service 无法启动
Dovecot 2.4 对配置文件格式和变量名进行了更改。您需要将 2.3 配置转换为 2.4 兼容格式。有关更多信息,请参阅 #Configuration。
作为临时解决方案,可以安装 dovecot23 来代替 dovecot。
dovecot & Postfix : 无法读取 SSL 私钥
如果您运行的是 dovecot 2.4,并且在 procmail.log 中遇到与 dovecot 的 deliver 权限相关的问题,例如:Fatal: Error in configuration file /etc/dovecot/dovecot.conf line 80: cert_file: open(/etc/letsencrypt/live/server.tld/fullchain.pem) failed: Permission denied,您可以创建一个设置为 0600 的 dovecot-ssl.conf 文件,其中包含上面定义的 ssl_server {...} 的内容。
cert_file = /path/to/fullchain.pem key_file = /path/to/privkey.pem dh_file = /path/to/dhparams.pem
并用以下内容替换 ssl_server 部分:
ssl_server {
!include_try /etc/dovecot/dovecot-ssl.conf
}
不要忘记运行 chmod 600 /etc/dovecot/dovecot-ssl.conf 来阻止用户读取它。
然后 "doveconf" 作为 root 用户应该可以正常工作(列出您的私钥),并为不允许查看密钥的用户添加一个空的 ssl_server 部分(以便 deliver 可以工作)。