Как и любой почтовый сервер корпоративного класса, Carbonio CE тщательно фиксирует в специальном журнале все происходящие на сервере действия, начиная от отправки электронных писем и входа пользователей в учетные записи, заканчивая сообщениями о фатальных ошибках. Подробный журнал работы сервера помогает системным администраторам максимально быстро устранять различные сбои, а также позволяет эффективно расследовать инциденты, связанные с информационной безопасностью компании. В данной статье мы разберемся в том, как на сервере Carbonio CE организовано хранение логов, как их правильно читать, а также разберемся в том, как благодаря логам можно отслеживать путь конкретных электронных писем в случае возникновения проблем.
![](https://habrastorage.org/getpro/habr/upload_files/067/42a/b9c/06742ab9c9725462ad1cf105b4abebdc.png)
Данная инструкция также подходит и для коммерческой версии Carbonio.
Где найти лог-файлы
Все основные логи, связанные с работой почтового сервера, хранятся в папке /opt/zextras/log, также часть логов можно найти в папке /var/log.
![](https://habrastorage.org/getpro/habr/upload_files/16a/395/758/16a3957589c561909d742b84cbb67724.png)
![](https://habrastorage.org/getpro/habr/upload_files/f24/79e/1b8/f2479e1b88a787de3fcd40516a646821.png)
Основным лог-файлом является /var/log/carbonio.log, в котором собирается информация сразу из нескольких других лог-файлов. В остальных файлах, расположенных в /opt/zextras/log содержится информация о работе отдельных узлов почтового сервера.
Так, audit.log содержит информацию об успешных и неуспешных попытках входа в учетную запись, clamd.log содержит информацию о работе антивируса, в nginx.access.log журналируются подключения к прокси-серверу Carbonio CE, а в mailbox.log хранится информация о работе почтового хранилища.
Как правило, именно /opt/zextras/log/mailbox.log и /var/log/carbonio.log являются основными лог-файлами, которые используются администраторами при устранении различных ошибок и проблем, возникающих на сервере.
Как читать лог-файлы
Все лог-файлы Carbonio CE представляют из себя понятные человеку записи на английском языке. В зависимости от того, какой лог-файл вы открываете, записи в них могут хранить различную информацию.
К примеру, записи в лог-файле carbonio.log после отправки сообщения будут выглядеть следующим образом:
![](https://habrastorage.org/getpro/habr/upload_files/72f/c0c/592/72fc0c592a4f871efd9b55b28781f79c.png)
Здесь мы видим временную отметку, имя сервера, на котором происходит событие, имя службы, которая сгенерировала запись и само сообщение. В зависимости от того, какая служба и при каких условиях создала запись в логе, они могут выглядеть по-разному.
![](https://habrastorage.org/getpro/habr/upload_files/dfe/9db/a42/dfe9dba42a86826919fc9f3a23972ffc.png)
А вот так выглядит то же событие в лог-файле mailbox.log. Главным отличием тут является то, что все сообщения имеют свой уровень серьезности. Всего этих уровней 5:
FATAL - данный уровень означает возникновение ошибки, несовместимой с дальнейшей работой сервера. Среди них, к примеру, потеря соединения с базой данных MySQL.
ERROR - этот уровень означает возникновение ошибки, которые позволяют серверу продолжать работу или касаются конкретного пользователя. Например ошибка возникает при повреждении индексных данных одного почтового ящика, либо при невозможности удалить электронное письмо из ящика.
WARN - этот уровень означает потенциально опасные ситуации, которые обычно можно исправить или даже игнорировать, но администратору все же лучше знать о них. Уровнем WARN обычно помечаются сообщения о неудачных попытках входа в учетную запись.
INFO - данный уровень записей логов содержить информацию о выполнении тех или иных операций на сервере. К примеру, им помечаются сообщения об успешном запуске сервера, создании и удалении учетных записей, и так далее.
DEBUG - этот уровень записей по умолчанию отключен и обычно используется для отладки сервера и используется разработчиками для поиска различных проблем.
Благодаря уровням записей очень удобно находить возникающие сообщения об ошибках.
![](https://habrastorage.org/getpro/habr/upload_files/38d/32d/806/38d32d80684ee6fe0f57fc02e6ca0b45.png)
Еще одним удобным способом поиска ошибки является выполнение команды sudo cat /opt/zextras/log/mailbox.log | grep exception
![](https://habrastorage.org/getpro/habr/upload_files/6bb/8a3/538/6bb8a35384a1afa7a31a891fb45371e2.png)
Как уже было сказано, файл audit.log содержит информацию о входе пользователей в веб-клиент, причем информация об удачных входах сохраняется с уровнем записи логов INFO, а информация о неудачных входах сохраняется с уровнем записи WARN. В самом файле это выглядит следующим образом:
![](https://habrastorage.org/getpro/habr/upload_files/627/94d/636/62794d6363735cc4a60a47c8e2e1c7e6.png)
Как видно, помимо предупреждения о неудачном входе отображается дополнительная информация о том, почему вход был неудачным. В нашем случае причиной ошибки стал неправильно введенный пароль.
Отслеживание электронных писем
Поскольку Postfix записывает все логи в один файл, записи, относящиеся к разным сообщениям постоянно чередуются. И поэтому, когда письмо по какой-то причине не приходит, администратору бывает трудно отследить путь, который оно проходило, и с чем связан сбой его доставки. Облегчить эту задачу позволяет встроенная в Carbonio CE утилита zmmsgtrace, которая позволяет осуществить конкатенацию записей, относящихся к одному конкретному письму.
Изначально бинарный файл zmmsgtrace находится в папке /opt/zextras/libexec. Для того, чтобы при каждом его использовании не писать полный путь, можно сделать символьную ссылку на него при помощи команды sudo ln -s /opt/zextras/libexec/zmmsgtrace /opt/zextras/bin/zmmsgtrace
.
После этого перейдите в командную строку Carbonio CE и выполните команду с необходимыми параметрами.
Команда zmmsgtrace
без параметров выведет все логи сообщений, хранящиеся в /var/log/
![](https://habrastorage.org/getpro/habr/upload_files/631/404/4d6/6314044d69dcf69d656a3162519037dc.png)
Команда zmmsgtrace -s ivanov@example.ru
выводит все сообщения, отправителем которых является пользователь ivanov@example.ru. В свою очередь, команда и zmmsgtrace -r ivanov@example.ru
выводит все письма, в которых ivanov@example.ru является получателем.
![](https://habrastorage.org/getpro/habr/upload_files/494/d22/482/494d22482deaf3aeb60f5f5b7e2e4efe.png)
Также данная утилита поддерживает вывод логов за определенный период и регулярные выражения:
zmmsgtrace -time 20220214,20220218
- выведет данные обо всех письмах за рабочую неделю с 14 по 18 февраля 2022 года.zmmsgtrace -s '^z' -r '@example\.ru$'
- выведет все письма, отправителями которых являются учетные записи, имя которых начинается на z, а в имени учетной записи получателя содержится домен @example.ru.
Помимо этого zmmsgtrace поддерживает поиск сообщения по идентификатору с помощью параметра -i
, а также по ip-адресу или имени почтового сервера отправителя или получателя с помощью параметров -F
и -D
.
![](https://habrastorage.org/getpro/habr/upload_files/287/e03/62a/287e0362ad822002901d321ffe747fe5.png)
В случае, если вывод данной команды получается достаточно объемным, можно использовать функцию сохранения информации в текстовый файл, например команда zmmsgtrace -time 20220214,20220218 > /tmp/zimbralogs.txt
сохранит данные обо всех письмах за рабочую неделю с 14 по 18 февраля 2022 года в файл /tmp/zimbralogs.txt.
Эксклюзивный дистрибьютор Zextras SVZcloud. По вопросам тестирования и приобретения Zextras Carbonio обращайтесь на электронную почту: sales@svzcloud.ru