Я бы использовал realpath
.
Возможно, то, что вы называете "источником", является "целевым" файлом в соответствии с использованием ln
: Использование: ln [OPTION]... [-T] TARGET LINK_NAME
Вы настраиваете его правильно, но это открытая ошибка Debian Stretch, когда он игнорирует конфигурацию:
См.:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864162
Я решил эту проблему, отредактировав упомянутый файл /etc/systemd/system/multi-user.target.wants/opendkim
. Я не знаю, является ли это лучшей практикой, но, поскольку конфигурация там жестко запрограммирована, я не видел другого выбора.
Содержимое файла (теперь я использую сокет unix вместо случайного порта 39172):
[...]
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/var/run/opendkim/opendkim.sock
[...]
Необходимо создать каталог /var/spool/postfix/var/run/opendkim
. и передан в собственность opendkim:opendkim
.
После изменения файла я выполнил systemctl daemon-reload
и service opendkim restart
, и новый сокет был распознан. Затем я изменил разрешения (Umask 002
в /etc/opendkim.conf
), и теперь postfix может получить доступ к milter.
Конечно, редактирование модуля systemd — не лучшая практика. Вот как мы должны идти:
sudo systemctl edit opendkim
и вставьте:
[Service]
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock
(обратите внимание на двойной ExecStart -это не опечатка)