由于 CentOS 6.7 上的 SELinux 策略,Postfix 无法在默认位置读取 SSL 证书

由于 CentOS 6.7 上的 SELinux 策略,Postfix 无法在默认位置读取 SSL 证书

我已经安装并配置了 postfix 以使用 ssl 证书通过中继发送外部邮件。此设置已在其他几台 Ubuntu/Centos 机器上运行。我的证书位于:

/etc/ssl/certs/

我的后缀设置与往常一样:

/etc/postfix

main.cf 中的关键行是:

smtp_tls_CAfile = /etc/ssl/certs/AddTrustExternalCARoot.crt

当我启动 postfix 时,我在邮件日志中收到错误:

3 月 17 日 11:55:36 清晰度 postfix/smtp[14878]:无法加载证书颁发机构数据:禁用 TLS 支持

3 月 17 日 11:55:36 清晰度 postfix/smtp[14878]:警告:TLS 库问题:14878:错误:0200100D:系统库:fopen:权限被拒绝:bss_file.c:169:fopen('/etc/ssl/certs /AddTrustExternalCARoot.crt','r'):

3 月 17 日 11:55:36 清晰度 postfix/smtp[14878]:警告:TLS 库问题:14878:错误:2006D002:BIO 例程:BIO_new_file:系统 lib:bss_file.c:174:

3 月 17 日 11:55:36 清晰度 postfix/smtp[14878]:警告:TLS 库问题:14878:错误:0B084002:x509 证书例程:X509_load_cert_crl_file:系统 lib:by_file.c:279:

这让我看到了 SELinux 审核日志,我在其中看到:

type=AVC msg=audit(1489751736.280:1341): avc: denied { read } for pid=14878 comm="smtp" name="AddTrustExternalCARoot.crt" dev=dm-0 ino=2228876 scontext=unconfined_u:system_r:postfix_smtp_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file

所以我尝试按照说明进行操作这里创建一个新策略,允许在默认位置读取证书。不幸的是它仍然不起作用,同样的错误。我将证书移至 postfix 配置目录/etc/postfix,更新了 main.cf,重新启动了 postfix,现在一切都很好。我的问题是我应该如何创建 SELinux 策略以允许 postfix 读取安装在其配置目录之外的证书?

谢谢

答案1

我建议你restorecon -Rv /etc/ssl/在机器上运行。

看来您已将文件从主目录中移出,而没有恢复文件上下文,正如您在拒绝中看到的那样

相关内容