mal*_*c4k 6 selinux email centos postfix
我有安装了 Postfix 的 CentOS 5.5。我想使用具有默认设置的本地传递代理,但我希望它使用Maildir 目录样式邮箱存储邮件。
当我将邮箱设置为存储(默认)时:
mail_spool_directory = /var/spool/mail/
Run Code Online (Sandbox Code Playgroud)
我手动创建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 /]#
Run Code Online (Sandbox Code Playgroud)
然后我尝试向本地用户发送邮件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=<pedro@dx2200.it.eclocal>, 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)
Run Code Online (Sandbox Code Playgroud)
我在虚拟交付代理方面遇到过类似问题,virtual_mailbox_base
从/var/spool/vmail
主目录更改为主目录/home/vmail
确实有帮助。我还必须与当地的送货代理一起做吗?如果是这样- 为什么我不能存储邮件/var/spool
?
编辑:根据评论完全重写答案
该问题可能与 SELinux 相关。您可以运行例如sestatus
检查它是启用还是禁用。
对于maildir投递,postfix更改为对应的用户,所以目标目录需要用户可写。这似乎已经是这样了。出于隐私原因,我建议chmod -R o-rwx /var/spool/mail/*
只是为了完整性:如果使用 mbox 文件,则 spool 目录需要由mail
您使用chmod -R g+rwX /var/spool/mail
.