Вопрос или проблема
У меня есть сервер ubuntu 20.04 и домен example.com
. Я установил postfix и opendkim через apt.
В /etc/opendkim.conf
у меня указано
Socket local:/run/opendkim/opendkim.sock
Файл существует.
$ ls -l /run/opendkim/opendkim.sock
ls: не удалось получить доступ к '/run/opendkim/opendkim.sock': Отказано в разрешении
$ sudo ls -l /run/opendkim/opendkim.sock
srwxrwx--- 1 opendkim opendkim 0 Oct 4 21:19 /run/opendkim/opendkim.sock
Я добавил postfix в группу opendkim.
$ groups postfix
postfix : postfix opendkim
Я также попробовал перезагрузить с помощью sudo reboot
.
Когда я выполняю это
echo "Это тело электронного письма." | mail -s "Тема письма" [email protected]
Но я получил эту ошибку.
Oct 04 23:58:24 ubuntu postfix/cleanup[52998]:
warning: connect to Milter service local:/run/opendkim/opendkim.sock: Нет такого файла или директории
Я более внимательно посмотрел
$ ps -p 52998 -o pid,comm,user,%cpu,%mem,stime,tty
PID COMMAND USER %CPU %MEM STIME TT
52998 cleanup postfix 0.0 0.2 00:00 ?
Пользователь – postfix, и у него должен быть доступ к файлу сокета, но системный журнал говорит “нет”.
Ответ или решение
Проблема с доступом Postfix к сокету OpenDKIM может возникать по нескольким причинам, даже если пользователь Postfix добавлен в группу opendkim
, а сокет существует. Давайте поэтапно рассмотрим, как можно решить данную проблему.
Шаг 1: Проверьте права доступа к сокету
Вы уже выполнили команду ls -l /run/opendkim/opendkim.sock
, и вывод показывает, что сокет принадлежит группе opendkim
. Однако важно убедиться, что права доступа настроены правильно:
srwxrwx--- 1 opendkim opendkim 0 Oct 4 21:19 /run/opendkim/opendkim.sock
Это означает, что только пользователь opendkim
и группа opendkim
имеют полный доступ к сокету. Чтобы пользователь postfix
имел доступ к сокету, необходимо убедиться, что он действительно добавлен в группу opendkim
.
Вы можете проверить это с помощью следующей команды:
groups postfix
Если opendkim
там есть, мы продолжим, если нет — добавьте пользователя в группу:
sudo usermod -aG opendkim postfix
Не забудьте перезапустить службы Postfix и OpenDKIM после изменения группового доступа:
sudo systemctl restart opendkim
sudo systemctl restart postfix
Шаг 2: Перезапустите систему
Если все еще возникают проблемы, попробуйте выполнить перезагрузку, чтобы убедиться, что изменения вступают в силу:
sudo reboot
Шаг 3: Убедитесь, что OpenDKIM запущен
Убедитесь, что служба OpenDKIM действительно работает и сокет создан. Выполните команду:
sudo systemctl status opendkim
Если служба не запущена, попробуйте запустить её:
sudo systemctl start opendkim
Также убедитесь, что в журнале не отображаются ошибки, связанные с OpenDKIM, как это можно сделать с помощью:
sudo journalctl -u opendkim
Шаг 4: Проверьте настройки Postfix
Убедитесь, что конфигурация Postfix правильно настроена на использование системных мильтеров. В файле /etc/postfix/main.cf
проверьте следующие строки:
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/run/opendkim/opendkim.sock
Если эти строки отсутствуют, добавьте их и перезагрузите Postfix.
Шаг 5: Проверьте конфигурацию SELinux/AppArmor
Если у вас включен SELinux или AppArmor, они могут блокировать доступ к сокету. Проверьте, не блокируют ли они доступ Postfix к сокету OpenDKIM. Вы можете временно отключить AppArmor для тестирования следующим образом:
sudo systemctl stop apparmor
Если после этого доступ к сокету заработал, вам нужно будет настроить правила AppArmor.
Заключение
После выполнения всех вышеуказанных шагов, проблема с доступом Postfix к социальной сокету OpenDKIM должна быть решена. Если ошибка продолжает появляться, рекомендуем просмотреть логи как Postfix, так и OpenDKIM для выявления возможных дополнительных проблем.