Я заметил, что при настройке opendkim параметры Socket следующие:
#SOCKET="local:/var/run/opendkim/opendkim.sock" # default
#SOCKET="inet:54321" # listen on all interfaces on port 54321
#SOCKET="inet:12345@localhost" # listen on loopback on port 12345
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345
В чем разница (если есть) между сокетом local: [...]. Sock и сокетом inet: [...] @ localhost? Влияют ли права пользователей на одно или другое? Есть ли преимущество в безопасности от использования того или другого? Есть ли вообще функциональные отличия?
Доменные сокеты Unix являются локальными для одной машины, а прослушивающие сокеты домена unix находятся в иерархии файловой системы. Доступ можно контролировать с помощью прав доступа к файлам, а серверное приложение может проверить, какой пользователь подключился (я не знаю, использует ли opendkim эту функцию). Также доступны некоторые специальные функции, но я не думаю, что они здесь актуальны.
Сокеты домена inet могут быть привязаны либо к индивидуальному адресу ipv4, либо к подстановочному знаку 0.0.0.0 для всех адресов ipv4, назначенных машине. Если он привязан к localhost (127.0.0.1), тогда к нему могут получить доступ только приложения на том же компьютере, но вы не можете легко ограничить его больше.
Сокеты домена inet6 снова могут быть привязаны либо к индивидуальному адресу ipv6, либо к подстановочному знаку "::" для всех адресов ipv6, назначенных машине. В некоторых случаях (в зависимости от конфигурации sysctl и параметров сокета, используемых приложением) сокет inet6, прослушивающий все интерфейсы, также может принимать подключения ipv4.