Как стать автором
Поиск
Написать публикацию
Обновить
41.43
Zextras
Цифровое рабочее место Zextras

Оптимизация почтового сервера Carbonio для больших нагрузок

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1.4K

Ранее мы уже писали о том, как читать логи Carbonio и как отслеживать состояние его сервисов при помощи Grafana. Но что делать, если логи постоянно сигнализируют о достижении или превышении всех возможных пределов нагрузки на сервер, сервис периодически теряет отзывчивость или выдает ошибки при обращении к нему, а графики рисуют картину, которая явно не соответствует норме. Как правило, такая картина свидетельствует о том, что почтовый сервер не справляется с текущим количеством активных пользователей, и в этой статье мы расскажем о том, какие настройки могут быть применены для того, чтобы оптимизировать ваш почтовый сервер лучше справлялся с нагрузкой.

  1. Диагностика

В случае, если пользователи почтового сервера начали сталкиваться с замедлениями сервиса или ошибками при выполнении тех или иных действий, первое, что должен выполнить системный администратор - установить причину происходящего.

Первым местом для поиска всегда являются логи почтового сервера. Они хранятся в трех локациях: /opt/zextras/log/carbonio.log; /var/log; /var/log/carbonio.

Наиболее часто используемыми являются:

  • carbonio.log - находится в папке /var/log, содержит данные о работе узлов MTA и LDAP, а также общую информацию о работе сервера

  • mailbox.log - находится в папке /opt/zextras/log, содержит данные о событиях, происходящих на узлах AppServer

  • audit.log - находится в папке /opt/zextras/log, содержит данные о попытках аутентификации (успешных и неуспешных) от различных пользователей

  • nginx.log - находится в папке /opt/zextras/log, содержит данные о событиях, происходящих на узлах Carbonio Proxy

  • mysql_error.log - находится в папке /opt/zextras/log, содержит данные об ошибках, которые возникают в MariaDB

  • myslow.log - находится в папке /opt/zextras/log, содержит данные о медленных запросах в MariaDB

Логи отдельных сервисов собраны в папке /var/log/carbonio. Там можно найти логи:

  • Carbonio Files - /var/log/carbonio/files 

  • Carbonio Docs - /var/log/carbonio/docs 

  • Carbonio Docs DB Connector - /var/log/carbonio/docs-db-connector

  • Carbonio Preview - /var/log/carbonio/preview

Как правило, информация о зашкаливающей нагрузке может быть найдена именно в mailbox.log. Пример такого сообщения:

[name=user@carbonio.local;mid=116;oip=12.34.56.78;port=40600;ua=CarbonioWebClient - GC91 (Mac)/8.8.15_GA_4026;soapId=76fe42;] session - Too many SOAP sessions (6 > 5), closing SoapSession{id=1337, authAcct=42f8d68c-bbdc-42f8-8be8-84ba383442f8, lastAccessed=2024-06-09 10:44:57,231}

Данное сообщение свидетельствует о том, что действие не было выполнено из-за превышения максимального количества сессий SOAP API, то есть причиной этого является не аппаратные, а софтверные ограничения, которые можно решить, изменив максимальное количество потоков.

  1. Увеличение количества потоков

Ограничения максимального числа потоков для SOAP, IMAP, HTTP и ряда других протоколов хранятся либо в глобальной конфигурации LDAP, либо в файле с локальными настройками сервера.

Данные, которые хранятся в глобальных настройках LDAP и меняются, соответственно, при помощи команды вида carbonio prov modifyConfig. Например:

carbonio prov modifyConfig zimbraImapNumThreads 400 zimbraLmtpNumThreads 50

Получить весь список имеющихся ограничений можно при помощи команды:

carbonio prov getAllConfig| grep -i thread | grep -i num

Та часть настроек, отвечающих за максимальное количество потоков, и которая находится в файле локальной конфигурации может быть получена при помощи команды 

zmlocalconfig | grep session

Для изменения выполните ту же команду с атрибутом -e, указанием изменяемой настройки и нового ее значения. Пример:

zmlocalconfig -e zimbra_session_limit_soap=20

Отметим, что повышение предельного числа потоков следует проводить осторожно, так как при этом Carbonio начинает использовать все больше аппаратных ресурсов, в первую очередь это оперативная память и IOPS хранилища. Следить за их использованием можно в Grafana.

  1. DoS-Filter

Еще одним источником возникновения ошибок может быть DoS-Filter, ограничивающий слишком частые запросы от конкретных IP-адресов. Найти связанные с ним ошибки также можно при помощи логов

grep DOS /opt/zextras/log/zmmailboxd.out

Найденные записи будут содержать IP-адреса клиентов, которые превысили установленный лимит. Если среди них присутствуют легитимные адреса, на которые ограничение не должно действовать, следует добавить их в белый список

carbonio prov modifyConfig zimbraMailTrustedIP 1.2.3.4

Для добавления нескольких адресов используйте параметр со знаком +

carbonio prov modifyConfig +zimbraMailTrustedIP 1.2.3.4 +zimbraMailTrustedIP 5.6.7.8

Для удаления адресов из списка используйте параметр со знаком -

carbonio prov modifyConfig -zimbraMailTrustedIP 5.6.7.8 

Получить текущий список можно при помощи команды

carbonio prov getConfig zimbraMailTrustedIP

  1. Почтовые очереди

Зачастую  перегрузки сервера могут быть связаны с большим почтовым потоком. Например, скомпрометированная учетная запись может начать рассылать спам с вашего сервера, либо кто-то из пользователей может подвергнуться мейл-бомбингу. Остановить этот процесс довольно просто, но зачастую после этого на серверах MTA остается забитая спамом почтовая очередь.

Диагностировать подобные вещи можно просматривая почтовые очереди в консоли администратора. 

При просмотре очереди в консоли администратор может выбрать узел MTA, очередь на котором он намерен просмотреть, а также полноценно управлять письмами, которые в ней находятся.

Эффективно очистить очередь от конкретных спам-сообщений можно используя утилиты командной строки. Их следует выполнять от имени пользователя root. Пример:

/opt/zextras/postfix/sbin/postqueue -p | grep -i увеличь | awk '{print $1}' | /opt/zextras/postfix/sbin/postsuper -d -

/opt/zextras/postfix/sbin/postqueue -p | grep -i кредит  | awk '{print $1}' | sed 's/\*//g'| /opt/zextras/postfix/sbin/postsuper -d -

Эти команды осуществляют поиск в поисковой очереди по конкретным словам, а затем удаляют сообщения, которые их содержат из поисковой выдачи. Это позволяет быстро удалить весь спам из очереди, оставив в нем легитимные электронные письма.

Бороться с мейл-бомбингом и исходящими спам-атаками можно при помощи CBPolicyD. Соответствующая инструкция уже публиковалась ранее.

По вопросам тестирования, приобретения, предоставления лицензии и консультаций обращаться на почту sales@svzcloud.ru к эксклюзивному партнеру Zextras.

Получить информацию и обменяться информацией о Carbonio CE вы можете в группах в Telegram CarbonioMail и Carbonio CE Unofficial.

Carbonio Community Edition предназначен только для небольших компаний и для тестирования.

Теги:
Хабы:
Всего голосов 2: ↑2 и ↓0+4
Комментарии5

Публикации

Информация

Сайт
zextras.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Индия
Представитель
Триандафилиди Екатерина