我设置了 Postfix,以便我的虚拟用户的邮箱(maildir 格式)设置如下:
┌───┐
│ # │ root > myserver > ~
└─┬─┘
└─> ls -l /var/mail/
total 4
drwxr-sr-x 5 postfix postfix 4096 Dec 2 12:27 pistam.eu
┌───┐
│ # │ root > myserver > ~
└─┬─┘
└─> ls -l /var/mail/domain.eu/
total 12
drwx--S--- 5 postfix postfix 4096 Dec 2 12:10 user_1
drwx--S--- 5 postfix postfix 4096 Dec 1 22:35 user_2
┌───┐
│ # │ root > myserver > ~
└─┬─┘
└─> ls -l /var/mail/domain.eu/user_1/
total 12
drwx--S--- 2 postfix postfix 4096 Dec 2 12:27 cur
drwx--S--- 2 postfix postfix 4096 Dec 13 15:17 new
drwx--S--- 2 postfix postfix 4096 Dec 13 15:17 tmp
现在我正在设置 Dovecot 服务器 (IMAPS/SASL),我想使用一个系统用户来管理所有 Postfix 虚拟用户的所有邮箱。我看到了许多管理员创建用户vmail
的文章,例如:
# useradd -r -m -d /home/vmail vmail
他们通过将这两行设置为/etc/dovecot/conf.d/10-master.conf
:
mail_access_groups = vmail
default_login_user = vmail
但在我的案例中,组postfix
有“setuid”位,这意味着这些文件夹将始终由 user 操作postfix
。
那么创建用户有什么意义vmail
呢?为什么不直接使用用户postfix
for Dovecot 来代替呢?这样做有风险吗?Dovecot 安装过程还创建了这两个用户:
┌───┐
│ # │ root > myserver > ~
└─┬─┘
└─> cat /etc/passwd | grep dove
dovecot:x:112:118:Dovecot mail server,,,:/usr/lib/dovecot:/usr/sbin/nologin
dovenull:x:113:119:Dovecot login user,,,:/nonexistent:/usr/sbin/nologin
为什么不使用其中之一?配置文件中也有这两个提示/etc/dovecot/conf.d/10-master.conf
:
# Login user is internally used by login processes. This is the most untrusted
# user in Dovecot system. It shouldn't have access to anything at all.
#default_login_user = dovenull
# Internal user is used by unprivileged processes. It should be separate from
# login user, so that login processes can't disturb other processes.
#default_internal_user = dovecot
这是关注点分离的原则,这里有安全的好处。
在您将邮件传递给 dovecot 之后,不再是 postfix 的责任,因此 postfix 不需要该访问权限。