强制 Dovecot 不记录连接/断开连接消息

强制 Dovecot 不记录连接/断开连接消息

我的/var/log/mail.log电脑不断收到如下 Dovecot 连接/断开连接消息:

Mar 29 18:15:48 summit dovecot: IMAP([email protected]): Disconnected: Logged out bytes=63/2126          
Mar 29 18:15:50 summit dovecot: imap-login: Login: user=<[email protected]>, method=PLAIN, rip=4.3.2.1, lip=1.2.3.4, TLS

这些日志会无限重复(每天产生 11MB 的日志),而且它们会掩盖更重要的身份验证失败和 Postfix 发送/接收。我检查过Dovecot 的日志记录维基页面,但没有选项可以停止这些消息。我是否可以在其中设置任何配置变量dovecot.conf来停止将这些消息发送到mail.log

澄清:我仍然希望 Dovecot 能够记录mail.log;我只是不希望它记录这些无关紧要的连接/断开连接消息。

答案1

如果您使用 rsyslog 或 syslog-ng,则可以过滤 syslog 消息。以下是来自 rsyslog 帮助的一个示例:

简单来说:

:msg, contains, "imap-login" ~

或者使用 if-else 脚本语言:

if $programname == 'dovecot' then {
   action(type="omfile" file="/var/log/dovecot.log")
   if $msg contains 'imap-login' then
     action(type="omfile" file="/var/log/dovecot-login.log")
   else
     action(type="omfile" file="/var/log/dovecot.log")
}

http://www.rsyslog.com/doc/rsyslog_conf_filter.html

答案2

启用使用 log_path 和/或 info_log_path 记录到文件的功能,然后注释掉 syslog_facility。

或者

更改 syslog_facility 并使用 /etc/syslog.conf 控制输出。

:/etc/dovecot.conf

##
日志记录
##

# 用于记录错误消息的日志文件,而不是将它们发送到系统日志。
# /dev/stderr 可用于登录到 stderr。
#log_path = /var/log/dovecot.log

# 用于信息和调试消息的日志文件。
# 默认与 log_path 相同。
#info_log_path = /var/log/dovecot-info.log

...

# 如果您要登录到 syslog,则使用 Syslog 工具。通常如果您不
# 想要使用“邮件”,您将使用 local0..local7。还有其他标准
支持 # 个设施。
syslog_facility = 邮件

答案3

摆脱 dovecot 登录/注销消息的最简单方法是创建文件 49-dovecot-ignore-info.conf/etc/rsyslog.d和:

mail.=info       ~

这基本上意味着丢弃来自邮件设施(dovecot 使用)的所有信息消息。更多信息:http://manpages.ubuntu.com/manpages/hardy/man5/rsyslog.conf.5.html, 在下面丢弃部分。

然后做一个

sudo service dovecot restart

并且消息不再存储在日志文件中。

答案4

“连接/断开连接”消息是来自 dovecot 的信息消息,因此您可以将 dovecot 配置为不记录信息消息:

# /etc/dovecot/conf.d/10-logging.conf
info_log_path = /dev/null

# same for debug messages
debug_log_path = /dev/null

# if you set a file path, it will log to this file and not to syslog anymore
info_log_path = /var/log/mail.log

相关内容