Snorby邮件推送失效+SensorCacheJob执行报错(sql_mode兼容问题)
咱们一步步拆解你的两个问题,逐个解决:
解决SQL模式兼容报错(SensorCacheJob执行失败)
你遇到的sql_mode=only_full_group_by报错,是因为MySQL开启了严格分组模式,而Snorby的旧代码没有遵循这个模式的要求——GROUP BY子句里没有包含ORDER BY中用到的非聚合列snorby.event.timestamp。
临时修复(立即生效,重启MySQL后失效)
- 登录MySQL命令行:
mysql -u root -p - 全局关闭
ONLY_FULL_GROUP_BY模式:SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); - 同时修改当前会话的模式,避免重新登录:
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); - 现在重新执行你的命令,应该能正常运行:
Snorby::Jobs::SensorCacheJob.new(true).perform
永久修复(重启MySQL后依然生效)
- 找到MySQL的配置文件,通常是
/etc/my.cnf、/etc/mysql/my.cnf或者/etc/mysql/mysql.conf.d/mysqld.cnf(根据系统不同路径可能有差异) - 编辑文件,在
[mysqld]段落下添加或修改sql_mode,移除ONLY_FULL_GROUP_BY,比如:[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION - 重启MySQL服务:
systemctl restart mysql
排查Snorby邮件推送失败问题
系统提示「检查邮件设置」,说明核心问题大概率出在邮件配置或者SMTP连通性上,按以下步骤排查:
核对Snorby邮件配置:
登录Snorby后台,进入Settings -> Email Settings,仔细检查:- SMTP服务器地址、端口是否正确(比如主流服务商:QQ邮箱SMTP是smtp.qq.com,端口465/SSL;163邮箱是smtp.163.com,端口465/SSL)
- 认证用户名、密码是否正确,部分邮箱需要开启SMTP授权码(比如QQ、网易邮箱,不能直接用登录密码)
- 加密方式(SSL/TLS)要和端口匹配(465对应SSL,587对应TLS)
- 发件人邮箱格式是否合法,避免使用特殊字符
测试SMTP服务器连通性:
可以用命令行工具直接测试你的SMTP服务器是否能正常发信,比如用swaks(如果没安装先apt install swaks或yum install swaks):swaks --to 收件邮箱 --from 发件邮箱 --server SMTP服务器地址 --port 端口 --auth LOGIN --auth-user 用户名 --auth-password 授权码/密码 --tls如果测试失败,根据报错信息排查(比如防火墙拦截、SMTP服务器拒绝连接、认证失败等)
查看Snorby日志:
检查Snorby的日志文件,通常在/var/log/snorby/或者Rails应用日志目录log/production.log,里面会有邮件发送的详细错误信息,比如连接超时、认证失败、被反垃圾系统拦截等,帮你定位具体问题
内容的提问来源于stack exchange,提问作者Rohit Sharma
相关产品推荐
相关产品推荐

