You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何阻止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里做调整:

  1. 新增一行让cron日志单独写入cron.log
cron.*                          -/var/log/cron.log
  1. 再把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

火山引擎 最新活动