有一台使用 postfix/dovecot 和 CentOS 6.5/6.6 的服务器,过去几个月一切都运行良好,直到 raid 控制器出现故障。所以我安装了一台使用 CentOS 7 的新服务器。我使用 adduser 创建了用户(幸运的是只有一个句柄已满),复制了主目录内容(包括邮件),并将所有者设置为用户:用户和 770 权限。
每个用户的主文件夹中都有一个 Maildir 目录,其设置为:
drwxrwx--- 9 enduser postfix 4096 Nov 19 22:34 Maildir
所有子目录为770,文件为660。
我遇到的问题是 Postfix 无法写入 Maildir:
Nov 21 07:47:16 host postfix/local[12504]: warning: maildir access problem for UID/GID=1002/1002: create maildir file /home/enduser/Maildir/tmp/1416584836.P12504.host.domain.com: Permission denied
Nov 21 07:47:16 host postfix/local[12504]: 59E944726D1: to=<[email protected]>, relay=local, delay=185, delays=185/0.02/0/0.05, dsn=5.2.0, status=bounced (maildir delivery failed: create maildir file /home/enduser/Maildir/tmp/1416584836.P12504.host.domain.com: Permission denied)
我已经尝试了我能想到的所有权限组合,除了 777。
任何方向或光线都将受到赞赏,
~ 兰
/home/enduser 树:
.
+-- enduser
+-- Maildir
+-- cur
+-- new
+-- tmp
答案1
为了传递邮件,postfix 必须能够进入用户的主目录,并且该目录必须包含完整的 Maildir 树,其中包含子文件夹tmp
、cur
和new
,并且所有子文件夹都具有正确的权限。
由于您已经检查过 Maildir 是否存在、是否有正确的文件夹以及是否有正确的权限,剩下的就是检查 postfix(以及用户自己)是否可以进入用户的主目录。
为了实现这一点,权限必须在每个步骤中都正确。因此,不仅 需要/home/user
具有正确的权限 - 也需要/home
。如果它由用户所属的组拥有,则必须将其设置为 750,如果不是,则必须将其设置为 755。
您可以通过简单地对用户执行 su 命令并尝试进入他们的主目录来验证这一点。
答案2
看起来它是一个常规目录,
rm -rf /home/user/Maildir
POSTFIX 将为您重新创建符号链接。
如果你想手动创建它
maildirmake.dovecot /etc/skel/Maildir
maildirmake.dovecot /etc/skel/Maildir/.Drafts
maildirmake.dovecot /etc/skel/Maildir/.Sent
maildirmake.dovecot /etc/skel/Maildir/.Spam
maildirmake.dovecot /etc/skel/Maildir/.Trash
maildirmake.dovecot /etc/skel/Maildir/.Templates
cp -r /etc/skel/Maildir /home/$mail_root_user/
chown -R $mail_root_user:$mail_root_user /home/$mail_root_user/Maildir
chmod -R 700 /home/$mail_root_user/Maildir