Фильтр почты недоступен почтовой службе: сокет и группы
Фильтр почты и почтовая служба работают от разных пользователей и общаются через локальный сокет. Права на сокет определяет фильтр, а читать его должна почтовая служба — их нужно согласовать заранее, иначе письма пойдут без проверки или будут отклоняться.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Права на сокет не дают доступа почтовой службе
Сокет создан с правами только для владельца. Почтовая служба от своего пользователя получает отказ.
-
Каталог сокета не создаётся при загрузке
Каталог во временной файловой системе исчезает, и фильтр не может создать в нём сокет.
-
Письма проходят без проверки при недоступном фильтре
Почтовая служба может быть настроена пропускать письма, если фильтр недоступен. Тогда отказ остаётся незамеченным.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Существует ли сокет фильтра и с какими правами.
sudo ls -l /run/rspamd/Сообщения фильтра о слушателях.
journalctl -u rspamd -n 30 --no-pagerЧто получает почтовая служба при обращении к фильтру.
sudo journalctl -u postfix -n 20 --no-pager | grep -i milterРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Сокет создан с правами только для владельца. Почтовая служба от своего пользователя получает отказ.
- Как проверить
-
Посмотрите права сокета и пользователей обеих служб.
sudo ls -l /run/rspamd/*.sock 2>/dev/null systemctl show rspamd -p User -p Group 2>/dev/null; systemctl show postfix -p User 2>/dev/null
- Как исправить
- Задайте владельца и режим доступа сокета так, чтобы группа почтовой службы могла писать. Общая группа для двух служб — обычная и правильная схема.
- Почему происходит
- Каталог во временной файловой системе исчезает, и фильтр не может создать в нём сокет.
- Как проверить
-
Посмотрите каталог и параметры службы.
systemctl show rspamd -p RuntimeDirectory -p RuntimeDirectoryMode 2>/dev/null sudo ls -ld /run/rspamd 2>/dev/null
- Как исправить
-
Объявите каталог через
RuntimeDirectory=с нужным режимом: systemd создаст его при каждом запуске.
- Почему происходит
- Почтовая служба может быть настроена пропускать письма, если фильтр недоступен. Тогда отказ остаётся незамеченным.
- Как проверить
-
Посмотрите настройку поведения при недоступности фильтра.
postconf 2>/dev/null | grep -iE "milter_default_action|smtpd_milters"
- Как исправить
- Выберите поведение осознанно: пропускать письма без проверки или отклонять их. Молчаливый пропуск удобен, но означает отсутствие фильтрации при любом сбое.
Пример вывода
Почтовая служба не может писать в сокет фильтра. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
postfix/cleanup[8200]: warning: connect to Milter service unix:/run/rspamd/milter.sock: Permission denied
postfix/cleanup[8200]: warning: milter unix:/run/rspamd/milter.sock: can't read SMFIC_BODYEOB reply
$ sudo ls -l /run/rspamd/milter.sock
srw------- 1 _rspamd _rspamd 0 Sep 15 18:02 /run/rspamd/milter.sock
Связанные ошибки
- Puma слушает сокет, а веб-сервер получает отказ доступа Разъём между приложением и веб-сервером: сокет создаётся с правами приложения, читает его другой пользователь.
- Почта не отправляется: письма остаются в очереди Уведомления от служб не доходят: очередь почты растёт, соединение с сервером не устанавливается.
- status=233/RUNTIME_DIRECTORY в systemd Код 233/RUNTIME_DIRECTORY: не удалось подготовить каталог службы в /run из RuntimeDirectory=. Права, режим, удаление при остановке.
- status=235/CHOWN в systemd Код 235/CHOWN: не удалось изменить владельца сокета. Код относится только к unit-файлам сокетов.
- uWSGI: веб-сервер не может писать в сокет nginx получает отказ доступа к сокету uWSGI: права и владелец сокета задаются в описании приложения.
- Почтовая служба пишет в аварийный журнал и не принимает письма Служба сообщает о невозможности писать журналы или создавать файлы очереди: права на каталоги нарушены.
- Почтовый сервер доступа не запускается: не читается сертификат Служба падает при чтении сертификата: права на закрытый ключ, неверный порядок цепочки или путь к ней.
- Служба не видит, кто обратился по сокету Сведения о вызывающем не приходят: передача учётных данных через сокет включается отдельно.
Источники
-
systemd.exec(5)
RuntimeDirectory= и режим доступа к каталогу времени работы. - Документация Rspamd
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено сокетом с правами только для владельца.