sealert 本身不发邮件,需通过启用 setroubleshootd 的 mail 插件并配置 smtp、开启相关 selinux 布尔值及策略模块来实现邮件通知。

sealert 命令本身不发邮件,得靠外部触发
sealert 是个诊断工具,不是通知服务。它读取 /var/log/audit/audit.log 或 /var/log/messages 里的 SELinux 拒绝事件,生成可读建议,但默认不做任何外发动作——包括邮件。想让它发邮件,必须把它塞进一个能响应 SELinux 事件的钩子里,最常用的是 setroubleshootd 的插件机制。
启用 setroubleshootd 的 mail 插件并配 SMTP
系统自带的 setroubleshoot-plugins 包含 mail 插件,但默认禁用。要让它工作,得改两处:
- 编辑
/etc/setroubleshoot/setroubleshoot.conf,把enabled = false改成enabled = true(在[plugin:mail]小节下) - 填上可用的 SMTP 配置:至少设
server = localhost(若本机跑postfix或ssmtp),或server = smtp.example.com+port = 587+username/password(注意密码需 Base64 编码后填入password_b64) - 确保
setroubleshootd已启动:systemctl enable --now setroubleshootd;它监听dbus上的 SELinux audit 事件,不是轮询日志
常见失败原因:SELinux 策略拦了 sendmail 或 Python SMTP
即使配置全对,setroubleshootd 也可能静默失败——因为它的 Python 进程被 SELinux 自身策略限制了网络或执行能力。典型现象是:journalctl -u setroubleshootd 里出现 avc: denied { name_connect } 或 { execute_no_trans }。
华友协同办公管理系统(华友OA),基于微软最新的.net 2.0平台和SQL Server数据库,集成强大的Ajax技术,采用多层分布式架构,实现统一办公平台,功能强大、价格便宜,是适用于企事业单位的通用型网络协同办公系统。 系统秉承协同办公的思想,集成即时通讯、日记管理、通知管理、邮件管理、新闻、考勤管理、短信管理、个人文件柜、日程安排、工作计划、工作日清、通讯录、公文流转、论坛、在线调查、
- 临时验证:运行
sudo setsebool -P setroubleshoot_sendmail_on_network_connect 1(RHEL/CentOS 8+ 或 Fedora),这个布尔值专放行插件调用 sendmail 或 SMTP - 如果用 Python 直连 SMTP(非 sendmail),还需
sudo setsebool -P httpd_can_network_connect 1——虽然名字带 httpd,但实际控制 Python socket 调用 - 别漏掉
sudo semodule -i /usr/share/selinux/packages/setroubleshoot-plugins.pp(部分旧系统需手动加载插件策略模块)
测试时别只看 /var/log/messages,要盯 journal 和插件日志
人工触发一次 SELinux 拒绝(比如 sudo ls -Z /root),然后查三处:
-
journalctl -t setroubleshootd -n 20:看有没有 “Sending alert via mail plugin” 或报错 -
tail -f /var/log/setroubleshoot/setroubleshoot.log:插件自己的详细日志,含 SMTP 连接状态、认证结果 -
mailq或sudo tail /var/log/maillog:确认邮件是否卡在本地 MTA 队列里(比如因 DNS 或 TLS 配置失败)
插件发信是异步的,且默认只对“新类型”的拒绝事件发一次邮件——重复同类型 AVC 不再通知,这点容易让人误以为没生效。









