每封通过我的邮件服务器发送的电子邮件后,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,因为没有东西可以记录。
答案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
}