如何阻止Dovecot向syslog记录日志(Ubuntu 16.04环境)
解决Ubuntu 16.04上Dovecot IMAP日志重复写入syslog的问题
我来帮你搞定这个日志重复记录的麻烦,Ubuntu 16.04上的rsyslog配置调整其实很直观,咱们一步步来:
1. 先搞清楚问题根源
打开你的/etc/rsyslog.d/50-default.conf,你大概率会看到这样两行:
.;auth,authpriv.none -/var/log/syslog
mail.* -/var/log/mail.log
这里的*.*会匹配所有日志(包括Dovecot的mail类日志)写入syslog,同时mail.*又把相同的日志写入mail.log,这就是重复记录的核心原因。
2. 修改rsyslog配置排除mail日志
把syslog那一行修改成下面这样,加上mail.none来排除mail类日志:
*.*;auth,authpriv.none,mail.none -/var/log/syslog
这样rsyslog就只会把mail相关日志(包括Dovecot的IMAP登录/登出日志)定向到mail.log,不会再写到syslog里了。
3. 确认Dovecot的日志设施配置
官方打包的Dovecot默认会把日志发送到syslog的mail设施,你可以用下面的命令验证:
doveconf -n | grep -E "log_path|syslog_facility"
- 如果
log_path是空的,说明Dovecot用的是syslog(默认行为) syslog_facility应该显示为mail,这正是我们需要的,不用额外改动
4. 重启服务让配置生效
修改完配置后,重启dovecot和rsyslog:
sudo systemctl restart dovecot rsyslog
顺带解决cron日志的问题
你提到cron一直在往syslog写日志,如果想把它单独分出来,同样在50-default.conf里做调整:
- 新增一行让cron日志单独写入
cron.log:
cron.* -/var/log/cron.log
- 再把syslog的规则里加上
cron.none:
*.*;auth,authpriv.none,mail.none,cron.none -/var/log/syslog
这样cron日志就只会出现在/var/log/cron.log里了。
最后验证效果
尝试登录一次Roundcube的IMAP界面,然后用下面的命令检查:
# 查看mail.log,应该能看到登录/登出日志 tail -f /var/log/mail.log # 查看syslog,应该看不到这些IMAP相关日志了 tail -f /var/log/syslog
如果还是有问题,可以先检查rsyslog的配置语法:
rsyslogd -N1
如果有语法错误,它会告诉你具体位置,修正后再重启服务就行。
内容的提问来源于stack exchange,提问作者Forkbeard




