我的系统环境是Centos-7.9,Apache2.4,PHP,PHP-7.4
我有后缀设置发送电子邮件从网站,这是工作在独立测试电子邮件,当我关闭SELinux。
但是,如果启用了SELinux,它将阻止从服务器发送电子邮件,在/var/log/maillog中出现以下错误
postfix/sendmail[10883]: fatal: execv /usr/libexec/postfix/smtpd: Permission denied当我这么做
sudo setenforce 0它发送电子邮件,然而,我不想关闭SELinux,但我想让我的网络应用程序白名单发送电子邮件。我试过在下面,但那不起作用
sudo setsebool -P httpd_can_sendmail 1对如何解决这个问题有什么想法吗?
发布于 2021-08-05 05:36:56
这是一个已知的错误,RHEL7.7和up一起使用php-fpm而不是Apache的mod_php。既然你在CentOS 7.9上,它就适用了。
您可以在read‘s Bugzilla:http://bugzilla.redhat.com/show_bug.cgi?id=1754622上阅读更多关于这个问题的文章
至于您的问题的解决方案,第一个也是最明显的一个是禁用SELinux,但作为第二个选项,我建议如下:
policycoreutils-pythonaudit2why和audit2allow创建自定义规则,使php-fpm能够使用启用的SELinux。tail -f on /var/log/audit/audit.log并尝试从httpd发送邮件消息。获取输出并通过audit2why和audit2allow将其种子化。这是不言自明的。第三种解决方案是将httpd_t或system_mail_t (取决于audit2allow的输出)置于允许模式下,如果您不想为这台机器定制规则的话。但是请记住,这样做将禁用整个上下文的SELinux。
这将通过以下命令来完成:semanage permissive -a httpd_t或semanage permissive -a system_mail_t。要撤消更改,只需将-a更改为-d即可。
发布于 2021-08-05 06:45:41
我在这里要做的是
将SELinux置于允许模式
setenforce 0旋转auditd日志,这样我就可以得到一个完整的AVC拒绝列表。
kill -USR1 $(cat /run/auditd.pid) 导致问题发生并生成审计消息。
创建本地策略模块
grep denied /var/log/audit/audit.log | audit2allow -m mypolicy >mypolicy.te 检查生成的策略文件是否看起来像我所期望的,而不是“分发”我不想要的东西,并根据需要进行编辑。
创建并安装策略
checkmodule -M -m -o mypolicy.mod mypolicy.te
semodule_package -o mypolicy.pp -m mypolicy.mod
semodule -i mypolicy.pp 在对文件使用audit2alow之前,您可能会发现将所有AVC拒绝放在一个单独的文件中,然后删除那些与您试图解决的问题无关的文件会更容易。如果这样做对您更好,您可以跳过中间步骤,直接转到.pp文件。
cat myavcs.log | audit2allow -M mypolicyhttps://serverfault.com/questions/1073583
复制相似问题