Назад | Перейти на главную страницу

Как я могу скрыть статистику наковальни 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 отключить эти статистические сообщения? Я лучше остановлю их у источника, чем подавлю с помощью настройки системного журнала.

Если вы хотите изменить частоту журналов, вы можете установить 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

* Если ваш сервер получает менее 1 письма на каждые 600 с

Демон наковальни по умолчанию записывает статистику при выходе. Поскольку время простоя по умолчанию составляет 600 с, вы будете продолжать получать журналы наковальни каждые 10 минут в случае, если письмо не будет получено.

Это можно изменить на более длительный период, добавив -o max_idle к master.cf

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

Помните, что этот параметр переопределит ваш возможность ограничить клиентское соединение.

Есть параметр в 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. Таким образом, этот параметр будет подавлять наковальня, потому что нечего записывать.

Источник: аналогичный вопрос в списке рассылки postfix.

Я использую 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
}