如何为Postfix创建具有足够权限的Maildir目录?

如何为Postfix创建具有足够权限的Maildir目录?

我有 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(服务器)只能读。

  1. 将用户更改为邮件,
  2. chmod 700
  3. 再试一次

相关内容