令我困惑的 dovecot 权限(cram md5 passwd db 文件)错误

令我困惑的 dovecot 权限(cram md5 passwd db 文件)错误

我正在忙着迁移。我正在从 macOS+MacPorts 迁移到 Ubuntu+Docker

在旧系统上,我在 dovecot 配置中有这个:

mail_uid = _dovecot
mail_gid = mail
mail_privileged_group = mail
mail_access_groups = mail

我觉得这很奇怪,我认为只有理解了文档,dovecot 用户才应该在 dovecot 组中。在旧系统上,dovecot、postfix、dovenull 和 rspamd 都是邮件组的成员。

无论如何。在该系统上,cram md5 passwd 数据库(文件)具有以下权限:

drwxr-xr-x   3 root  wheel    96 Feb  2  2021 .
drwxr-xr-x  22 root  admin   704 Jan  4 15:17 ..
-rw-r-----   1 root  mail   1234 Feb  2  2021 cram-md5.pwd

这个机制已经运行了很多年,基本上从 Mac OS X Server 开始,经历了各种 macOS 迁移。

在我的新的 Ubuntu 系统(基于 ubuntu:jammy 的容器)上,我已将此设置复制过来:

drwxr-xr-x 2 root root 4096 Jan  4 09:49 .
drwxr-xr-x 7 root root 4096 Jan  4 15:21 ..
-rw-r----- 1 root mail 1234 Feb  2  2021 cram-md5.pwd

mail_uid = dovecot
mail_gid = mail
mail_privileged_group = mail
mail_access_groups = mail

但:

Jan 04 15:40:08 auth: Error: passwd-file /etc/dovecot/etc/cram-md5.pwd:open(/etc/dovecot/etc/cram-md5.pwd) failed: Permission denied (euid=91(dovecot) egid=91(dovecot) missing +r perm: /etc/dovecot/etc/cram-md5.pwd, we're not in group 8(mail), dir owned by 0:0 mode=0755)

实际上,dovecot 是群发邮件。从容器中的 /etc/group:

mail:x:8:postfix,dovecot
dovenull:x:90:
dovecot:x:91:

从容器中的 /etc/passwd 中:

dovenull:x:90:90::/home/dovenull:/usr/sbin/nologin
dovecot:x:91:91::/home/dovecot:/usr/sbin/nologin

所以,我收到这个错误让我很困惑。现在我完全陷入困境了。

我应该怎么办?

答案1

正如有人刚刚告诉我的那样:上述身份并不控制这一点,而是特定的“身份验证”身份。并且dovecot会从身份中删除所有额外的组,除非明确告知不要这样做。因此,将dovecot文件上的组更改为解决了该问题(并且是正确的解决方案)。

相关内容