Тема мониторинга imap сервера Dovecot всегда обходила меня стороной. Я даже и не знал, что там есть встроенный модуль, который умеет отдавать кучу своих метрик. Не видел особой надобности. Я всегда настраивал fail2ban на перебор учёток Dovecot и мониторинг доступности TCP портов службы. В общем случае мне этого достаточно.
На днях читал новость про обновления в очередной новой версии Dovecot и увидел там изменения в модуле статистики. Заинтересовался и решил изучить его. Оказалось, там всё не так просто, как думалось на первый взгляд. Ожидал там увидеть что-то типа того, что есть в статистике Nginx или Php-fpm. А на самом деле в Dovecot очень много всевозможных метрик и их представлений: в линейных, логарифмических, средних, перцинтильных видах. Плюс фильтры, наборы метрик и т.д. Постараюсь кратко саму суть рассказать. А позже, скорее всего, сделаю небольшой шаблон для Zabbix и настрою мониторинг.
Включаем мониторинг и добавляем некоторый набор метрик, который описывает документация, как пример. Добавляем в конфиг Dovecot:
Перезапускаем Dovecot. Метрики можно увидеть по HTTP на порту сервера 9900 (не забудьте настроить ограничение на firewall) или в консоли:
Описание увиденных полей смотрите в документации, в разделе listing-statistic. Все метрики, что не count, выводятся в микросекундах. Я долго не мог понять, что это за огромные числа и зачем они нужны, пока не нашёл описание в документации.
В данном примере мы вывели статистику по успешным и неуспешным аутентификациям, по всем imap и smtp (не понял, что это за smtp метрики, у меня они по нулям) командам, и по успешным доставкам почты в ящики. Полный список событий, которые можно выводить, смотрите в разделе Events. А возможности фильтрации в Event Filtering. В принципе, тут будет вся информация по поводу метрик и их вывода.
Я посмотрел все возможные метрики и прикинул, что реально полезных, за которыми стоит следить, не так много. Перечислю их:
1️⃣ Uptime сервера. Выводится по умолчанию, отдельно настраивать эту метрику не надо. Соответственно, можно делать триггер на перезапуск сервера.
2️⃣ Количество успешных и неудачных аутентификаций. Причём интересны не абсолютные значения, а изменение в минуту. Сделать триггер на превышение среднего значения, например, в 1,5-2 раза. Если у вас резко выросли аутентификации, то, возможно, кто-то наплодил ящиков и заходит в них. А если много неудачных попыток, то, возможно, fail2ban сломался и начался подбор паролей.
3️⃣ Число успешных доставок почты. Если резво выросло число доставленных писем на каком-то большой интервале, то это повод обратить внимание. Интервал надо брать побольше, чем минута, иначе на какие-то легитимные рассылки будет реакция. Взять, думаю, надо интервал 30-60 минут и сравнивать изменения на нём. Можно и накопительную метрику сделать за сутки, чтобы быстро оценить количество входящей почты.
Вот, в принципе, и всё. Остальные метрики это уже тонкая настройка отдельных служб или слежение за производительностью. Dovecot умеет считать выполнение в микросекундах каждой своей команды и выводить min, max, avg, median, персинтили. Можно очень гибко следить за производительностью в разрезе отдельной imap команды, если для вас это важно.
#dovecot #mailserver #мониторинг
На днях читал новость про обновления в очередной новой версии Dovecot и увидел там изменения в модуле статистики. Заинтересовался и решил изучить его. Оказалось, там всё не так просто, как думалось на первый взгляд. Ожидал там увидеть что-то типа того, что есть в статистике Nginx или Php-fpm. А на самом деле в Dovecot очень много всевозможных метрик и их представлений: в линейных, логарифмических, средних, перцинтильных видах. Плюс фильтры, наборы метрик и т.д. Постараюсь кратко саму суть рассказать. А позже, скорее всего, сделаю небольшой шаблон для Zabbix и настрою мониторинг.
Включаем мониторинг и добавляем некоторый набор метрик, который описывает документация, как пример. Добавляем в конфиг Dovecot:
service stats {
inet_listener http {
port = 9900
}
}
metric auth_success {
filter = event=auth_request_finished AND success=yes
}
metric auth_failures {
filter = event=auth_request_finished AND NOT success=yes
}
metric imap_command {
filter = event=imap_command_finished
group_by = cmd_name tagged_reply_state
}
metric smtp_command {
filter = event=smtp_server_command_finished
group_by = cmd_name status_code duration:exponential:1:5:10
}
metric mail_delivery {
filter = event=mail_delivery_finished
group_by = duration:exponential:1:5:10
}
Перезапускаем Dovecot. Метрики можно увидеть по HTTP на порту сервера 9900 (не забудьте настроить ограничение на firewall) или в консоли:
# doveadm -f table stats dump
Описание увиденных полей смотрите в документации, в разделе listing-statistic. Все метрики, что не count, выводятся в микросекундах. Я долго не мог понять, что это за огромные числа и зачем они нужны, пока не нашёл описание в документации.
В данном примере мы вывели статистику по успешным и неуспешным аутентификациям, по всем imap и smtp (не понял, что это за smtp метрики, у меня они по нулям) командам, и по успешным доставкам почты в ящики. Полный список событий, которые можно выводить, смотрите в разделе Events. А возможности фильтрации в Event Filtering. В принципе, тут будет вся информация по поводу метрик и их вывода.
Я посмотрел все возможные метрики и прикинул, что реально полезных, за которыми стоит следить, не так много. Перечислю их:
1️⃣ Uptime сервера. Выводится по умолчанию, отдельно настраивать эту метрику не надо. Соответственно, можно делать триггер на перезапуск сервера.
2️⃣ Количество успешных и неудачных аутентификаций. Причём интересны не абсолютные значения, а изменение в минуту. Сделать триггер на превышение среднего значения, например, в 1,5-2 раза. Если у вас резко выросли аутентификации, то, возможно, кто-то наплодил ящиков и заходит в них. А если много неудачных попыток, то, возможно, fail2ban сломался и начался подбор паролей.
3️⃣ Число успешных доставок почты. Если резво выросло число доставленных писем на каком-то большой интервале, то это повод обратить внимание. Интервал надо брать побольше, чем минута, иначе на какие-то легитимные рассылки будет реакция. Взять, думаю, надо интервал 30-60 минут и сравнивать изменения на нём. Можно и накопительную метрику сделать за сутки, чтобы быстро оценить количество входящей почты.
Вот, в принципе, и всё. Остальные метрики это уже тонкая настройка отдельных служб или слежение за производительностью. Dovecot умеет считать выполнение в микросекундах каждой своей команды и выводить min, max, avg, median, персинтили. Можно очень гибко следить за производительностью в разрезе отдельной imap команды, если для вас это важно.
#dovecot #mailserver #мониторинг
Dovecot - наиболее популярный imap сервер, который используется в почтовых серверах на базе open source ПО. Остальные значительно уступают ему в популярности, и я даже не уверен, что их кто-то ещё использует. К примеру, лет 15 назад я настраивал Courier-IMAP. Со временем перешёл на Dovecot, потому что он более популярен.
Так вот, если вы эксплуатируете этот imap сервер, то можно использовать его встроенные возможности для очистки почтовых ящиков или папок в них. В первую очередь это касается папок Trash и Junk (Spam). Для этого можно использовать простую команду:
Она удалит все письма в ящике user@example.com в папке Trash старше 4-х недель. Соответственно, так можно очищать любой ящик.
Условие может быть составным. Например, очистим все прочитанные сообщения в папке Spam старше 24 часов:
Можно делать глобальные чистки сразу для всех ящиков (❗️будьте аккуратны с подобными командами). Например, удалим всю почту старше трёх лет:
Синтаксис запросов doveadm описан в документации dovecot.
Благодаря тому, что Dovecot, как я уже сказал, используется почти во всех бесплатных сборках почтовых серверов, вы можете использовать эти возможности и там. Например, в iredmail, mailcow и т.д.
Когда я не знал про эти возможности Dovecot, использовал свои костыли на основе find. Так как письма в формате maildir - это по сути обычные текстовые файлы, вы можете делать с ними на уровне файлов всё, что угодно. Примеры своих скриптов я показал в статье Очистка и обслуживание почтовой базы postfix. Посмотрите, может найдёте там для себя что-то полезное. Я показываю в том числе, как выполнять очистку писем на основе их содержимого или заголовка (поля subject). К примеру, удалять все письма старше 30 дней с определённой темой. Статья писалась 7! лет назад. Сейчас я бы делал скорее всего всё это по-другому, так что не спешите критиковать. Просто примите к сведению то, что там написано, если для вас эта тема актуальна.
#mailserver #dovecot
Так вот, если вы эксплуатируете этот imap сервер, то можно использовать его встроенные возможности для очистки почтовых ящиков или папок в них. В первую очередь это касается папок Trash и Junk (Spam). Для этого можно использовать простую команду:
# doveadm expunge -u user@example.com mailbox Trash savedbefore 4w
Она удалит все письма в ящике user@example.com в папке Trash старше 4-х недель. Соответственно, так можно очищать любой ящик.
Условие может быть составным. Например, очистим все прочитанные сообщения в папке Spam старше 24 часов:
# doveadm expunge -u user@example.com mailbox 'Junk' SEEN not SINCE 24h
Можно делать глобальные чистки сразу для всех ящиков (❗️будьте аккуратны с подобными командами). Например, удалим всю почту старше трёх лет:
# doveadm expunge -A mailbox % before 156w
Синтаксис запросов doveadm описан в документации dovecot.
Благодаря тому, что Dovecot, как я уже сказал, используется почти во всех бесплатных сборках почтовых серверов, вы можете использовать эти возможности и там. Например, в iredmail, mailcow и т.д.
Когда я не знал про эти возможности Dovecot, использовал свои костыли на основе find. Так как письма в формате maildir - это по сути обычные текстовые файлы, вы можете делать с ними на уровне файлов всё, что угодно. Примеры своих скриптов я показал в статье Очистка и обслуживание почтовой базы postfix. Посмотрите, может найдёте там для себя что-то полезное. Я показываю в том числе, как выполнять очистку писем на основе их содержимого или заголовка (поля subject). К примеру, удалять все письма старше 30 дней с определённой темой. Статья писалась 7! лет назад. Сейчас я бы делал скорее всего всё это по-другому, так что не спешите критиковать. Просто примите к сведению то, что там написано, если для вас эта тема актуальна.
#mailserver #dovecot
Server Admin
Очистка и обслуживание почтовой базы postfix
Практические примеры по фильтрации почты в почтовых ящиках postfix, автоматической очистке корзин и папок со спамом в почтовых ящиках.