我有 CentOS 5.5,上面安装了 Postfix。我想用当地的具有默认设置的投递代理,但我希望它存储邮件邮件目录目录风格邮箱。
当我将邮箱设置为存储(默认)时:
mail_spool_directory = /var/spool/mail/
我手动创建 maildir,所以它看起来像这样:
[root@dx2200 /]# ls -lah /var/spool/mail/
total 32K
drwxrwxr-x 4 root mail 4.0K Mar 15 15:01 .
drwxr-xr-x 13 root root 4.0K Mar 15 14:33 ..
drwxr-xr-x 5 root root 4.0K Mar 15 14:52 marshra
drwxr-sr-x 5 pedro mail 4.0K Mar 15 15:01 pedro
[root@dx2200 /]#
[root@dx2200 /]# ls -lah /var/spool/mail/pedro/
total 40K
drwxr-sr-x 5 pedro mail 4.0K Mar 15 15:01 .
drwxrwxr-x 4 root mail 4.0K Mar 15 15:01 ..
drwxr-sr-x 2 pedro mail 4.0K Mar 15 15:01 cur
drwxr-sr-x 2 pedro mail 4.0K Mar 15 15:01 new
drwxr-sr-x 2 pedro mail 4.0K Mar 15 15:03 tmp
[root@dx2200 /]#
然后我尝试向本地用户发送邮件pedro
,消息没有被传递,我的/var/log/maillog
说:
Mar 15 15:11:00 dx2200 postfix/local[4266]: warning: maildir access problem for UID/GID=1014/1014: error writing message: Permission denied
Mar 15 15:11:00 dx2200 postfix/local[4266]: warning: perhaps you need to create the maildirs in advance
Mar 15 15:11:00 dx2200 postfix/local[4266]: 8D5D11310056: to=<[email protected]>, orig_to=<pedro>, relay=local, delay=0.04, delays=0.02/0.01/0/0.01, dsn=5.3.0, status=bounced (maildir delivery failed: error writing message: Permission denied)
我也遇到过类似的问题虚拟的virtual_mailbox_base
交付代理,从主目录更改/var/spool/vmail
为主目录/home/vmail
确实有帮助。我也必须这么做吗当地的送货代理?如果是这样- 为什么我不能存储邮件/var/spool
?
答案1
编辑:答案根据评论完全重写
该问题可能与 SELinux 有关。您可以运行egsestatus
来检查它是启用还是禁用。
对于maildir传递,postfix会更改为相应的用户,因此目标目录需要对该用户是可写的。情况似乎已经如此。出于隐私原因,我建议chmod -R o-rwx /var/spool/mail/*
只是为了完整性:如果使用 mbox 文件,则 spool 目录需要可由mail
您通过使用 获得的组写入chmod -R g+rwX /var/spool/mail
。
答案2
允许 SELinux 策略以命令行形式写入
semanage permissive -a postfix_local_t
答案3
我在子目录下的用户目录中遇到了同样的错误,该子目录具有错误的权限。例如,“user1”的主目录是/home/subdir/user1
。并且 subdir 对“其他”没有执行权限。
chmod 755 /home/subdir
为我解决了这个问题。用户目录仍具有“700”权限。
该错误消息具有误导性,因为被拒绝的权限不是在用户的目录上,而是在其上方的目录上。
答案4
您的权限:
drwxr-sr-x 2 pedro mail xxxx cur,new,tmp
只有 pedro(你)可以写,mail(服务器)只能读。
- 将用户更改为邮件,
chmod 700
- 再试一次