9.2. 设置具有 LDAP 身份验证的 Dovecot 服务器
如果您的基础架构使用 LDAP 服务器来存储帐户,您可以对其验证 Dovecot 用户。在这种情况下,您可以在目录中集中管理帐户,用户不需要对 Dovecot 服务器上的文件系统进行本地访问。
如果您计划设置具有复制的多个 Dovecot 服务器,以使您的邮箱具有高可用性,则集中管理的帐户也是一个好处。
9.2.1. 安装 Dovecot
					dovecot 软件包提供:
				
- 
							dovecot服务以及维护它的工具
- Dovecot 按需启动的服务,如用于身份验证
- 插件,如服务器端的邮件过滤
- 
							/etc/dovecot/目录中的配置文件
- 
							/usr/share/doc/dovecot/目录中的文档
流程
- 安装 - dovecot软件包:- yum install dovecot - # yum install dovecot- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 如果 Dovecot 已安装,并且需要清理配置文件,请重命名或删除 - /etc/dovecot/目录。之后,重新安装软件包。无需删除配置文件,- yum reinstall dovecot命令不会重置- /etc/dovecot/中的配置文件。
9.2.2. 在 Dovecot 服务器上配置 TLS 加密
Dovecot 提供一个安全的默认配置。例如,默认启用 TLS 通过网络来传输加密的凭证和数据。要在 Dovecot 服务器上配置 TLS,您只需设置证书和私钥文件的路径。另外,您可以通过生成并使用 Diffie-Hellman 参数来提供 perfect forward secrecy(PFS)来提高 TLS 连接的安全性。
先决条件
- Dovecot 已安装。
- 以下文件已复制到服务器上列出的位置: - 
									服务器证书:/etc/pki/dovecot/certs/server.example.com.crt
- 
									私钥:/etc/pki/dovecot/private/server.example.com.key
- 
									证书颁发机构(CA)证书:/etc/pki/dovecot/certs/ca.crt
 
- 
									服务器证书:
- 
							服务器证书 Subject DN字段中的主机名与服务器的完全限定域名(FQDN)匹配。
流程
- 对私钥文件设置安全权限: - chown root:root /etc/pki/dovecot/private/server.example.com.key chmod 600 /etc/pki/dovecot/private/server.example.com.key - # chown root:root /etc/pki/dovecot/private/server.example.com.key # chmod 600 /etc/pki/dovecot/private/server.example.com.key- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 Diffie-Hellman 参数生成文件: - openssl dhparam -out /etc/dovecot/dh.pem 4096 - # openssl dhparam -out /etc/dovecot/dh.pem 4096- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 根据服务器上的硬件和熵,生成 4096 位的 Diffie-Hellman 参数可能需要几分钟。 
- 在 - /etc/dovecot/conf.d/10-ssl.conf文件中设置证书和私钥文件的路径:- 更新 - ssl_cert和- ssl_key参数,并将其设置为使用服务器的证书和私钥的路径:- ssl_cert = </etc/pki/dovecot/certs/server.example.com.crt ssl_key = </etc/pki/dovecot/private/server.example.com.key - ssl_cert = </etc/pki/dovecot/certs/server.example.com.crt ssl_key = </etc/pki/dovecot/private/server.example.com.key- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 取消 - ssl_ca参数的注释,并将其设置为使用 CA 证书的路径:- ssl_ca = </etc/pki/dovecot/certs/ca.crt - ssl_ca = </etc/pki/dovecot/certs/ca.crt- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 取消 - ssl_dh参数的注释,并将其设置为使用 Diffie-Hellman 参数文件的路径:- ssl_dh = </etc/dovecot/dh.pem - ssl_dh = </etc/dovecot/dh.pem- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 重要- 为确保 Dovecot 从文件中读取参数的值,该路径必须以 - <字符开头。
9.2.3. 准备 Dovecot 以使用虚拟用户
默认情况下,Dovecot 以使用服务的用户的身份对文件系统执行许多操作。但是,将 Dovecot 后端配置为使用一个本地用户来执行这些操作有以下几点好处:
- Dovecot 以特定的本地用户身份执行文件系统操作,而不使用用户的 ID (UID)。
- 用户不需要在服务器上本地提供。
- 您可以将所有邮箱和特定于用户的文件存储在一个根目录中。
- 用户不需要 UID 和组 ID (GID),这可以减少管理工作。
- 有权访问服务器上文件系统的用户无法破坏其邮箱或索引,因为它们无法访问这些文件。
- 设置复制很简单。
先决条件
- Dovecot 已安装。
流程
- 创建 - vmail用户:- useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail - # useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Dovecot 之后将使用此用户来管理邮箱。出于安全考虑,请不要为此使用 - dovecot或- dovenull系统用户。
- 如果您使用与 - /var/mail/不同的路径,请对其设置- mail_spool_tSELinux 上下文,例如:- semanage fcontext -a -t mail_spool_t "<path>(/.*)?" restorecon -Rv <path> - # semanage fcontext -a -t mail_spool_t "<path>(/.*)?" # restorecon -Rv <path>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 仅将 - /var/mail/的写权限授予- vmail用户:- chown vmail:vmail /var/mail/ chmod 700 /var/mail/ - # chown vmail:vmail /var/mail/ # chmod 700 /var/mail/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 取消 - /etc/dovecot/conf.d/10-mail.conf文件中- mail_location参数的注释,并将其设置为 mailbox 格式和位置:- mail_location = sdbox:/var/mail/%n/ - mail_location = sdbox:/var/mail/%n/- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 使用这个设置: - 
									Dovecot 在 single模式下使用高性能dbox邮箱格式。在此模式下,服务将每个邮件存储在单独的文件中,类似于maildir格式。
- 
									Dovecot 将路径中的 %n变量解析为用户名。这需要确保每个用户对其邮箱都有一个单独的目录。
 
- 
									Dovecot 在 
9.2.4. 使用 LDAP 作为 Dovecot 身份验证后端
LDAP 目录中的用户通常可以向目录服务进行身份验证。Dovecot 可在用户登录到 IMAP 和 POP3 服务时使用此来验证它们。这个验证方法有很多优点,例如:
- 管理员可以在目录中集中管理用户。
- LDAP 帐户不需要任何特殊属性。它们只需要能够向 LDAP 服务器进行身份验证。因此,此方法独立于 LDAP 服务器上使用的密码存储方案。
- 用户不需要通过名称服务交换机(NSS)界面和可插拔验证模块(PAM)框架在服务器上本地提供。
先决条件
- Dovecot 已安装。
- 虚拟用户功能已配置。
- 到 LDAP 服务器的连接支持 TLS 加密。
- Dovecot 服务器上的 RHEL 信任 LDAP 服务器的证书颁发机构(CA)证书。
- 如果用户存储在 LDAP 目录中的不同树中,则存在用于 Dovecot 的专用 LDAP 帐户,以搜索目录。此帐户需要搜索其他用户的可辨识名称(DN)的权限。
流程
- 在 - /etc/dovecot/conf.d/10-auth.conf文件中配置身份验证后端:- 注释掉您不需要的 - auth-*.conf.ext身份验证后端配置文件的- include语句,例如:- #!include auth-system.conf.ext - #!include auth-system.conf.ext- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过取消下列行的注释来启用 LDAP 身份验证: - !include auth-ldap.conf.ext - !include auth-ldap.conf.ext- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 编辑 - /etc/dovecot/conf.d/auth-ldap.conf.ext文件,并按如下所示将- override_fields参数添加到- userdb部分:- userdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }- userdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 由于值固定,Dovecot 不会从 LDAP 服务器查询这些设置。因此,这些属性也不是必须出现。 
- 使用以下设置创建 - /etc/dovecot/dovecot-ldap.conf.ext文件:- 根据 LDAP 结构,配置以下之一: - 如果用户存储在 LDAP 目录中的不同树中,请配置动态 DN 查找: - dn = cn=dovecot_LDAP,dc=example,dc=com dnpass = password pass_filter = (&(objectClass=posixAccount)(uid=%n)) - dn = cn=dovecot_LDAP,dc=example,dc=com dnpass = password pass_filter = (&(objectClass=posixAccount)(uid=%n))- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Dovecot 使用指定的 DN、密码和过滤器在目录中搜索身份验证用户的 DN。在此搜索中,Dovecot 将过滤器中的 - %n替换为用户名。请注意,LDAP 搜索必须只返回一个结果。
- 如果所有用户都存储在特定条目下,请配置 DN 模板: - auth_bind_userdn = cn=%n,ou=People,dc=example,dc=com - auth_bind_userdn = cn=%n,ou=People,dc=example,dc=com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 启用绑定到 LDAP 服务器的身份验证以验证 Dovecot 用户: - auth_bind = yes - auth_bind = yes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 URL 设置为 LDAP 服务器: - uris = ldaps://LDAP-srv.example.com - uris = ldaps://LDAP-srv.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 为安全起见,请只使用使用 LDAPS 的加密连接,或使用通过 LDAP 协议的 - STARTTLS命令。对于后者,在设置中额外添加- tls = yes。- 对于正常工作的证书验证,LDAP 服务器的主机名必须与其 TLS 证书中使用的主机名匹配。 
- 启用 LDAP 服务器的 TLS 证书的验证: - tls_require_cert = hard - tls_require_cert = hard- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将基本 DN 设置为要开始搜索用户的 DN: - base = ou=People,dc=example,dc=com - base = ou=People,dc=example,dc=com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 设置搜索范围: - scope = onelevel - scope = onelevel- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Dovecot 仅在指定的基本 DN 中使用 - onelevel范围搜索,并且也使用子树中的- subtree范围搜索。
 
- 对 - /etc/dovecot/dovecot-ldap.conf.ext文件设置安全权限:- chown root:root /etc/dovecot/dovecot-ldap.conf.ext chmod 600 /etc/dovecot/dovecot-ldap.conf.ext - # chown root:root /etc/dovecot/dovecot-ldap.conf.ext # chmod 600 /etc/dovecot/dovecot-ldap.conf.ext- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
9.2.5. 完成 Dovecot 配置
					安装和配置 Dovecot 后,在 firewalld 服务中打开所需的端口,然后启用并启动服务。之后,您可以测试服务器。
				
先决条件
- 在 Dovecot 中已配置了以下内容: - TLS 加密
- 身份验证后端
 
- 客户端信任证书颁发机构(CA)证书。
流程
- 如果您只想向用户提供 IMAP 或 POP3 服务,请取消 - /etc/dovecot/dovecot.conf文件中- protocols参数的注释,并将其设置为所需的协议。例如,如果您不需要 POP3,请设置:- protocols = imap lmtp - protocols = imap lmtp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 默认情况下启用 - imap、- pop3和- lmtp协议。
- 在本地防火墙中打开端口。例如,要为 IMAPS、IMAP、POP3S 和 POP3 协议打开端口,请输入: - firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3 firewall-cmd --reload - # firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3 # firewall-cmd --reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 启用并启动 - dovecot服务:- systemctl enable --now dovecot - # systemctl enable --now dovecot- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 使用 Mozilla Thunderbird 等邮件客户端连接到 Dovecot ,并读取电子邮件。邮件客户端的设置取决于您要使用的协议: - Expand - 表 9.2. 到 Dovecot 服务器的连接设置 - 协议 - 端口 - 连接安全性 - 身份验证方法 - IMAP - 143 - STARTTLS - PLAIN[a] - IMAPS - 993 - SSL/TLS - PLAIN[a] - POP3 - 110 - STARTTLS - PLAIN[a] - POP3S - 995 - SSL/TLS - PLAIN[a] [a] 客户端通过 TLS 连接传输加密的数据。因此,凭证不会被披露。- 请注意,这个表不会列出未加密连接的设置,因为默认情况下,Dovecot 在没有 TLS 的连接上不接受纯文本身份验证。 
- 显示具有非默认值的配置设置: - doveconf -n - # doveconf -n- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow