Skip to main content

Ошибка Permission denied указывает на то, что процесс OpenDKIM

Ошибка Permission denied указывает на то, что процесс OpenDKIM не может прочитать ваш приватный ключ, потому что файл принадлежит не тому пользователю.

На FreeBSD стандартным пользователем для OpenDKIM является mailnull, а не opendkim.

🛠️ Пошаговое решение

Вот три последовательных шага, которые гарантированно исправят проблему. Выполните их от root.

1️⃣ Правильный владелец файла и каталогов
Самый важный шаг — изменить владельца для всего, что касается DKIM, на пользователя и группу mailnull.

bash
chown -R mailnull:mailnull /var/db/dkim

2️⃣ Безопасные права доступа
Вы уже делали эту часть ранее, но лучше повторить, чтобы исключить ошибку. Это даст OpenDKIM возможность читать ключ и заходить в каталог.

bash
chmod 0600 /var/db/dkim/ip-mail.ru/myselector.private
chmod 0750 /var/db/dkim
chmod 0750 /var/db/dkim/ip-mail.ru

3️⃣ Перезапуск сервисов
Чтобы все изменения вступили в силу.

bash
service milter-opendkim restart
service sendmail restart   # или service postfix restart, если он у вас

💡 Почему это важно

  • Пользователь по умолчанию: В отличие от многих других систем, где OpenDKIM часто запускается от собственного пользователя opendkim, в портах FreeBSD по умолчанию используется mailnull.

  • Безопасность: OpenDKIM намеренно требователен к правам доступа и откажется загружать ключ, если он доступен кому-то ещё, кроме владельца.

После выполнения этих шагов выполните команду tail -f /var/log/maillog и попробуйте отправить тестовое письмо. Ошибка Permission denied должна исчезнуть.

Если проблема сохранится, проверьте еще одну вещь: в некоторых версиях требуется также явно указать пользователя в настройках. Убедитесь, что в файле /etc/rc.conf есть следующие строки:

sh
milteropendkim_uid="mailnull"
milteropendkim_gid="mailnull"