我已经安装并配置了 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/
在机器上运行。
看来您已将文件从主目录中移出,而没有恢复文件上下文,正如您在拒绝中看到的那样