Постановка задачи: задейcтвовать ротацию лог-файлов для Dovecot 2+ с помощью logrotate
По умолчанию, Dovecot не ротирует свои лог-файлы, что может привести к некоторым проблемам: большой размер и как следствие проблемы с парсингом; дезориентация парсеров ввиду того, что в лог-файлах отсутствует год события; длительное время обработки лог-файлов сторонними сервисами.
Определённо имеет смысл включить ротацию лог-файлов Dovecot, используя сервис logrotate.
root@mail:/# vim /etc/logrotate.d/dovecot /var/log/dovecot.debug { notifempty weekly missingok rotate 4 compress delaycompress create 666 dovecot root postrotate [ -f /var/run/dovecot/master.pid ] && doveadm log reopen endscript } /var/log/dovecot.info { notifempty weekly missingok rotate 4 compress delaycompress create 666 dovecot root postrotate [ -f /var/run/dovecot/master.pid ] && doveadm log reopen endscript } root@mail:/# /etc/init.d/rsyslog restart
Большая часть опиций понятна безо всякого пояснения или чтения man logrotate. В тоже время, остановимся на нескольких важных аспектах:
- лог-файлы должны быть доступны не только для Dovecot но и для почтовой службы (в нашем случае это Postfix), иначе вы перестанете получать почту, а в лог-файлах будут ошибки "Fatal: Can't open log file /var/log/dovecot.info: Permission denied";
- службу Dovecot нужно "передёрнуть", чтобы она не продолжила писать события в старый файл. Для этого испольуется doveadm, как это показано в документации Tools/Doveadm/Log;
- сжатие "второй" части архива лучше отложить, используя delaycompress по причине того, что службы не сразу переключаются на свежий лог и некоторое врмя пишут в старый файл;
Вы всегда можете протестировать созданные правила с помощью следующей команды:
root@mail:/# logrotate -f -v /etc/logrotate.d/dovecot