我安装了 Debian 10 (Buster),并安装了dovecot
、sieve
和logwatch
。
在我的筛子文件中,我有discard
.因此,我在系统日志文件中收到了大量以下行。
Nov 2 19:46:17 xxxxx dovecot: lda(xxxxx)<12473><IOa9OvlToF+5MAAAwswyaQ>: sieve: msgid=<[email protected]>: marked message to be discarded if not explicitly delivered (discard action)
在日志观察报告中我看到了这个
**Unmatched Entries**
dovecot: lda(xxxxx)<1003><RUjQJX2GoV/rAwAAwswyaQ>: sieve: msgid=<[email protected]>: marked message to be discarded if not explicitly delivered (discard action): 1 Time(s)
...
我检查了 /usr/share/logwatch/scripts/services/dovecot 中 logwatch 的 dovecot 过滤器代码,并且存在忽略这些消息的规则,但显然不起作用。
这是我在脚本文件中找到的内容:
} elsif ( $ThisLine =~ /^$dovecottag (?:lda|deliver|lmtp)\(.*\): .*sieve: msgid=.* marked message to be discarded if not explicitly delivered/ ) {
# dovecot: lda(joe): sieve: msgid=<m$01$@com>: marked message to be discarded if not explicitly delivered (discard action)
# IGNORE
}
我的鸽子版本是2.3.4.1。我的logwatch版本是7.4.3。
答案1
通过“体外”测试,我发现脚本规则由于<1003><RUjQJX2GoV/rAwAAwswyaQ>
.如果我删除它,规则就会匹配。
通过插入解决了该问题.*
。这是固定规则
} elsif ( $ThisLine =~ /^$dovecottag (?:lda|deliver|lmtp)\(.*\).*: .*sieve: msgid=.* marked message to be discarded if not explicitly delivered/ ) {
# dovecot: lda(joe): sieve: msgid=<m$01$@com>: marked message to be discarded if not explicitly delivered (discard action)
# IGNORE
}
我正在使用 Debian 10 以及 Dovecot 2.3.4.1 和 Logwatch 7.4.3。它不是 Logwatch 的最新版本,而是 Debian 上通过 apt-get 默认安装的版本。
答案2
升级到 Debian 10 后我也遇到了这个问题。
dovecot 2.3.4.1 的日志前缀已更改为默认包含 pid 和 session。 Buster 的 Logwatch 版本 (7.4.3) 没有考虑到这一点,这会导致大量不匹配的条目和错误未分组在一起。 (您可以在以下位置查看 dovecot 的规则/usr/share/logwatch/scripts/services/dovecot
)即使是 Logwatch 的最新版本(截至撰写本文时为 7.5.5),似乎也没有针对每种可能性都有更正的规则。
对我来说最有效的是从 dovecot 的日志前缀中删除 pid 和会话。
mail_log_prefix
将选项更改/etc/dovecot/conf.d/10-logging.conf
为
# Log prefix for mail processes. See doc/wiki/Variables.txt for list of
# possible variables you can use.
#mail_log_prefix = "%s(%u)<%{pid}><%{session}>: "
# remove pid and session for compatability with logwatch
mail_log_prefix = "%s(%u): "
重新启动 dovecot 以使更改生效
systemctl restart dovecot