You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postfix无法访问/home目录下的文件,邮件管道配置受阻求助

Postfix无法访问/home目录下的文件,邮件管道配置受阻求助

看起来你遇到的核心问题是Postfix进程没有权限遍历到/home/domain目录下的脚本——哪怕你的PHP脚本本身权限是rwxr-xr-x,但父目录的访问权限把Postfix挡在了外面!从你给出的namei -l输出就能看出来:/home/domain的权限是drwxr-x---,意味着只有domain用户和组的成员能进入这个目录,而Postfix默认是以nobody或postfix用户身份运行的,自然没权限往里走。

下面给你几个可行的解决方案,按安全性从高到低排序:

方案1:将Postfix用户加入domain用户组(推荐)

这种方式不需要放宽目录的全局权限,相对更安全:

  1. 先确认Postfix的运行用户,执行命令:
    postconf default_privs
    
    通常输出是nobody或者postfix,假设是postfix。
  2. 将Postfix用户添加到domain组:
    usermod -aG domain postfix
    
  3. 确保domain和public_html目录的组权限有执行权限(允许组内成员进入目录):
    chmod g+x /home/domain /home/domain/public_html
    
  4. 重启Postfix生效:
    systemctl restart postfix
    

方案2:放宽父目录的全局执行权限

如果不想修改用户组,也可以给父目录添加其他用户的执行权限(注意:这会让系统上所有用户都能进入这些目录,安全性稍差):

chmod o+x /home/domain /home/domain/public_html

执行完这个命令后,Postfix进程就能顺利遍历到你的email-reciever.php脚本了。

额外检查点

除了权限问题,再确认两个细节:

  • 你的PHP脚本开头有没有正确的shebang?比如第一行要写:
    #!/usr/bin/env php
    
    确保系统能正确识别这是PHP脚本。
  • 邮件别名的配置是否正确?管道命令要写全路径,比如:
    youralias: |/home/domain/public_html/vault/email-reciever.php
    

如果还是有问题,可以查看Postfix的日志文件(通常是/var/log/mail.log或/var/log/maillog),用命令实时查看:

tail -f /var/log/mail.log

里面会有更详细的错误信息,帮你定位问题。

备注:内容来源于stack exchange,提问作者Whip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:27:54