如何从系统日志中抑制 Postfix 铁砧统计数据?

如何从系统日志中抑制 Postfix 铁砧统计数据?

每封通过我的邮件服务器发送的电子邮件后,postfix/anvil都会附加以下内容:

Nov  9 15:09:11 keutenberg postfix/anvil[30006]: statistics: max connection rate 1/60s for (smtp:103.28.42.75) at Nov  9 15:02:42
Nov  9 15:09:11 keutenberg postfix/anvil[30006]: statistics: max connection count 1 for (smtp:103.28.42.75) at Nov  9 15:02:42
Nov  9 15:09:11 keutenberg postfix/anvil[30006]: statistics: max message rate 1/60s for (smtp:103.28.42.75) at Nov  9 15:02:43
Nov  9 15:09:11 keutenberg postfix/anvil[30006]: statistics: max cache size 1 at Nov  9 15:02:42

我理解为什么要记录这些消息(我设置了限制),但我找不到任何方法来更改 的anvil日志级别(即从 中抑制这些信息性消息mail.log)。我可以使用我的设置main.cf来禁用这些统计消息吗?我宁愿从源头阻止它们,也不愿通过 syslog 设置抑制它们。

答案1

如果要更改日志的频率,可以anvil_status_update_time在 中设置main.cf。默认为 600 秒。http://www.postfix.org/postconf.5.html#anvil_status_update_time

对我来说,两个小时比使用默认的 10 分钟效果更好,但显然它会根据环境而有所不同。

anvil_rate_time_unit = 60s
anvil_status_update_time =  2h

此外,为了解决我遇到的接收邮件记录延迟较长的问题,我必须配置以下设置。如果您发现接收邮件日志未按时更新,请尝试以下操作:

smtpd_error_sleep_time = 2s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 20

*如果您的服务器每 600 封电子邮件收到少于 1 封

Anvil 守护进程默认在退出时记录统计信息。由于默认空闲时间为 600 秒,如果没有收到电子邮件,你将继续每 10 分钟收到一次 Anvil 日志

-o max_idle可以通过添加以下内容将其更改为更长的时间跨度master.cf

anvil     unix  -       -       n       -       1       anvil -o max_idle=3600s

答案2

请注意,此设置将覆盖您的限制客户端连接的能力

有一个main.cf参数压制铁砧过程。此参数称为 smtpd_client_event_limit_exceptions。此参数的目的是将某些客户端排除在 smtpd_client_*_count/rate_limit 限制之外。对于您的情况,您应该在main.cf

smtpd_client_event_limit_exceptions = static:all

这将使所有 IP 地址列为不受 smtpd_client_*_count/rate_limit 限制限制的客户端。因此此设置将压制anvil log,因为没有东西可以记录。

来源:Postfix 邮件列表中有类似问题

答案3

我在用rsyslogd(8)将特定消息放入不同的日志文件。

例如,创建一个/etc/rsyslog.d/maillog-stats.conf包含以下内容的新文件:

# extract then discard stats from anvil daemon
:msg, contains, "statistics: max"              /var/log/maillog-stats
:msg, contains, "statistics: max"              stop

目录中的文件/etc/rsyslog.d先被读取,/etc/rsyslog.conf因此这些过滤器出现在主配置文件之前。

第一个基于属性的过滤器写入包含“statistics: max”的消息,/var/log/maillog-stats第二个过滤器丢弃该消息以便进一步处理操作stop

其余消息按照之前的规则处理/etc/rsyslog.conf

# Log all the mail messages in one place.
mail.*                                    -/var/log/maillog

您可能还希望设置一些轮换规则,例如通过创建文件/etc/logrotate.d/maillog::

/var/log/maillog-stats
{
    weekly
    rotate 10
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

相关内容