我刚刚花了几个小时在半夜尝试将 Maildir 设置从 Centos 5.6 迁移到 Centos 7.2。我找到了几十个关于如何执行此操作的方法,但都完全没用 - 例如,其中一些提供了特定权限,但没有文件所有权。直接复制 Maildir 目录结构不起作用。
通过反复试验,我现在已经有一个可以工作的设置(没有 SELinux),但有各种问题,可能还有一些漏洞。如果可以改进,我将非常感激您的反馈。
在此设置中,Maildir 位于用户的主目录中(例如,/home/joe
或~
):
~
必须有o+x
(在此系统上,所有者是joe:joe
,权限711
)~/Maildir
必须由 拥有joe:vmail
,权限775
。权限很重要 -g
7 似乎被复制到新创建的消息中(作为 6)- procmailrc
UMASK
完全不相关,除非它带走任何这些权限 - 只需忽略它 - Maildir 下的所有内容必须由 拥有
joe:vmail
,目录必须被赋予权限775
,常规文件也必须被拥有。660
- 例如,当 procmail 最终创建一个文件时,
Maildir/cur
它会使用所有者joe:mail
(不是vmail
)和权限来创建它664
- 实际上,对上述内容的任何更改都会导致 sendmail、dovecot 或 procmail 在传递过程的某个阶段出现故障。
下面的快速破解脚本 - 从 /home 运行,提供用户名。
#!/bin/bash
if [ ! -d "$1" ]; then
exit 1
fi
echo "Fixing $1..."
chmod o+x "$1"
cd "$1"
chown -R "$1":vmail Maildir
find Maildir -type d -exec chmod 775 {} \;
find Maildir -type f -exec chmod 660 {} \;