Ротация логов Dovecot

Материал из Home wiki
Перейти к навигации Перейти к поиску

Постановка задачи: задей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