Почтовая служба пишет в аварийный журнал и не принимает письма
Почтовые службы чувствительны к правам на свои каталоги: очередь, журналы, временные файлы. При нарушении прав служба пишет в аварийный журнал и прекращает приём. Восстановление прав штатным средством обычно быстрее ручного разбора.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Права на каталоги очереди и журналов нарушены
После ручных операций или неудачного обновления владелец каталогов меняется, и служба не может писать.
-
Раздел с очередью заполнен
Без места служба не может принять письмо и записывает отказ. Очередь при этом растёт медленнее, чем кажется.
-
Аварийный журнал остаётся ненулевым и все проверки ругаются
Любая непустая запись в аварийном журнале означает, что случилось нечто требующее внимания. Многие проверки следят именно за его размером.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Аварийный журнал: сюда пишется всё, что требует внимания.
sudo tail -20 /var/log/exim4/paniclogСколько писем в очереди.
sudo exim -bpcСостояние службы и последние сообщения.
systemctl status exim4 --no-pager | head -8Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- После ручных операций или неудачного обновления владелец каталогов меняется, и служба не может писать.
- Как проверить
-
Посмотрите аварийный журнал и права каталогов.
sudo tail -5 /var/log/exim4/paniclog 2>/dev/null sudo ls -ld /var/spool/exim4 /var/log/exim4 2>/dev/null
- Как исправить
- Восстановите права штатным средством пакета, а не вручную: у почтовых служб они нетривиальны и включают особые биты.
- Почему происходит
- Без места служба не может принять письмо и записывает отказ. Очередь при этом растёт медленнее, чем кажется.
- Как проверить
-
Посмотрите место и размер очереди.
df -h /var/spool 2>/dev/null sudo exim -bpc 2>/dev/null
- Как исправить
- Освободите место и разберитесь с очередью: часто она распухла из-за неудачных отправок, а не из-за потока писем.
- Почему происходит
- Любая непустая запись в аварийном журнале означает, что случилось нечто требующее внимания. Многие проверки следят именно за его размером.
- Как проверить
-
Посмотрите содержимое и размер файла.
sudo ls -l /var/log/exim4/paniclog 2>/dev/null; sudo tail -20 /var/log/exim4/paniclog 2>/dev/null
- Как исправить
- Разберитесь с записями, затем очистите файл. Очищать его до разбора — верный способ потерять единственный след проблемы.
Пример вывода
Служба не может писать в каталог журналов. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
exim[7300]: 2026-09-15 17:41:02 Cannot open main log file "/var/log/exim4/mainlog": Permission denied: euid=101 egid=103
exim[7300]: exim: could not open panic log - aborting: see message(s) above
systemd[1]: exim4.service: Main process exited, code=exited, status=1/FAILURE
Связанные ошибки
- Permission denied в журнале службы Отказ в доступе у службы systemd: права на файл, каталоги по пути, пользователь службы, параметры изоляции, SELinux и AppArmor.
- No space left on device в журнале службы Нет места на устройстве: разбор по свободным блокам, по inode, по журналу systemd и по удалённым, но открытым файлам.
- Почта не отправляется: письма остаются в очереди Уведомления от служб не доходят: очередь почты растёт, соединение с сервером не устанавливается.
- status=209/STDOUT в systemd Код 209/STDOUT: systemd не смог настроить стандартный вывод службы. Чаще всего виноват путь в StandardOutput=append: или file:.
- status=222/STDERR в systemd Код 222/STDERR: не удалось настроить поток ошибок службы. Разбор причин и отличие от кода 209.
- Почтовый сервер доступа не запускается: не читается сертификат Служба падает при чтении сертификата: права на закрытый ключ, неверный порядок цепочки или путь к ней.
- Фильтр почты недоступен почтовой службе: сокет и группы Почтовая служба не может обратиться к фильтру: сокет создан с правами, недоступными её пользователю.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
Источники
- Документация Exim
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено сменой владельца каталога журналов.