我正在尝试设置一个用于 smtp 中继的 postfix 服务器。Centos 5.5
我已经关注http://mhawthorne.net/posts/postfix-configuring-gmail-as-relay.html但是在尝试重新启动或重新加载 postfix 时收到失败错误。
当我做:
cat maillog
我得到:
fatal: open /etc/postfix/main.cf: Permission denied
以下是我尝试过的:
chown postfix /etc/postfix/main.cf
chmod u+rwx /etc/postfix/main.cf
之后,我会这样做:
ls -l /etc/postfix/main.cf
这给了我:
-rwx------. 1 postfix anotheruser 27531 Apf 29 12:19 /etc/postfix/main.cf
不行。同样的错误。我甚至尝试临时执行 chmod 777,但出现了同样的错误。
对权限问题有什么想法吗?我假设它以 postfix 用户身份运行该服务。
谢谢
答案1
几乎可以肯定与 SELinux 有关。我敢打赌你已将 main.cf 移至该位置。
尝试运行restorecon -v /etc/postfix/main.cf
来修复标签。
答案2
就我而言,其他答案对我没有帮助,因为我已经正确掌握了这些文件的上下文。即使应用了文件的正确上下文,您还需要确保 Apache 用户具有发送邮件的 SELinux 权限。具体来说,需要打开 SELinux 配置。
- 验证设置是打开还是关闭:
getsebool httpd_can_sendmail
- 如果有的话,
httpd_can_sendmail --> off
您可以通过以下方式启用此设置:sudo setsebool -P httpd_can_sendmail 1
-P上述命令中执着的(跨重启)
答案3
这很可能与 SELinux 访问控制有关。CentOS 默认具有“强制”SELinux 模式。请使用以下命令检查 SELinux 的状态:
# sestatus
如果输出如下内容:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
您需要更改 main.cf 的安全上下文,并且可能更改其他 postfix 配置文件。在我的计算机上,它设置为:
-rw-r--r--. root root system_u:object_r:postfix_etc_t:s0 /etc/postfix/main.cf
尝试以下方法来设置适当的上下文:
# chcon -v -u system_u -r object_r -t postfix_etc_t /etc/postfix/main.cf
# restorecon -v -R /etc/postfix/
核实:
# ls -Z /etc/postfix/
答案4
就我的情况而言,这是因为 selinux 不允许 apache (PHP) 发送电子邮件。修复方法如下:
setsebool -P httpd_can_sendmail=1