postfix / smtpd: предупреждение: подключиться к сервису Milter unix: /var/run/opendkim/opendkim.sock: нет такого файла или каталога

36

У меня проблема с postfix на debian после обновления с squeeze до wheezy. Postfix был настроен для подписи сообщений с использованием dkim-фильтра. До обновления все работало безупречно, теперь происходит сбой при подключении к сервису (сокеты tcp или unix). Я подумал, что, возможно, это из-за перехода Debian на opendkim, поэтому я удалил dkim-filter и установил opendkim - та же проблема. Я даже попытался установить соединение через сокет Unix вместо опции tcp - та же проблема:

postfix/smtpd: warning: connect to Milter service unix:/var/run/opendkim/opendkim.sock: No such file or directory

или (с tcp / ip):

postfix/cleanup: warning: connect to Milter service inet:localhost:8891: Connection refused

Я проверил дважды - файл сокета существует и служба прослушивает порт 8891.

Что я могу сделать, чтобы это исправить?

Rogers
источник

Ответы:

58
  1. Проверьте, работает ли opendkim. (Я предполагаю, что это так, как вы видели файл сокета.)
  2. Ты настраивал опендким? Файл конфигурации есть /etc/opendkim.conf.

    Вам необходимо обновить файл, чтобы он соответствовал вашему сайту / домену и пути dkim.key .

  3. Добавить постфикс к опендким группам

    Если разрешение opendkim.sock является следующим

    $ ls -l / var / run / opendkim
    
    -rw-rw-r-- 1 opendkim opendkim 6 мая 2 14:56 opendkim.pid
    srwxrwxr-x 1 opendkim opendkim 0 мая 2 14:56 opendkim.sock
    

    Если нет, убедитесь, что UMaskустановлено 0002в /etc/opendkim.conf.

    Затем сделайте следующее

    sudo adduser postfix опендким
  4. Postfix работает в chroot

    Изменить /etc/default/opendkim, изменить опцию SOCKET для постфикса местоположения chroot

    SOCKET = "локальный: /var/spool/postfix/var/run/opendkim/opendkim.sock"

    Вам нужно будет создать каталог /var/spool/postfix/var/run/opendkimи изменить его разрешение

    sudo mkdir -p / var / spool / postfix / var / run / opendkim
    sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim
    
  5. Перезапустить опендким

    sudo service opendkim перезапустить
    
Джон Сиу
источник
4
Я обнаружил аналогичную проблему, вызванную чрезмерно ограничительными правами доступа к каталогу opendkim.
Даррелл Дуэйн
1
Я уверен, что раньше у меня был opendkim, но заметил, что он не работает после обновления с Ubuntu 15.04 до 15.10. Обновление пути сокета /etc/default/opendkimк тому же, который я уже определил в /etc/opendkim.confисправленном. Благодарность!
Хапрог
моя проблема в том, что я запускаю postfix в chroot и использую сокет unix. Если вы видите, No such file or directoryчто средний постфикс не может найти путь, но он искал сокет внутри / var / spool / postfix / var / run / opendkim /, а не / var / run / opendkim
HVNSweeting
@ HVNSweeting Это не покрыто (4)?
Джон Сиу
именно поэтому я комментирую и голосую вместо того, чтобы создать новый ответ. Вопрос содержит так много проблем, потому что если opendkim настроен правильно, то TCP-сокет должен работать. Спасибо
HVNSweeting
11

Краткое резюме, которое помогло мне исправить это предупреждение в Ubuntu 16.04 LTS: Postfix версия 3.1.0-3ubuntu0.2 Opendkim версия 2.10.3-3build1

  • (Я предполагаю, что Postfix и Opendkim уже установлены, интегрированы друг с другом, и единственное предупреждение, которое вы получаете, это «подключиться к локальной службе Milter: /var/spool/postfix/opendkim/opendkim.sock: такого файла или каталога нет»)

  • Добавить постфикс пользователя в группу opendkim (пропустить, если уже сделано)

sudo adduser postfix опендким

  • Создать каталог и установить владельца (пропустить, если уже сделано)

sudo mkdir -p / var / spool / postfix / var / run / opendkim

sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim

  • Проверьте разрешения:

ls -l / var / spool / postfix / var / run / opendkim

srwxrwxr-x 1 opendkim opendkim 0 Nov 12 14:34 opendkim.sock
  • Отредактируйте файлы конфигурации opendkim: /etc/opendkim.conf, добавьте строку

Локальный сокет: /var/spool/postfix/var/run/opendkim/opendkim.sock

/ etc / defaults / opendkim, добавить

SOCKET = "локальный: /var/spool/postfix/var/run/opendkim/opendkim.sock"

  • Отредактируйте постфиксную конфигурацию: /etc/postfix/main.cf
# Milter configuration
# Postfix ≥ 2.6 milter_protocol = 6, Postfix ≤ 2.5 milter_protocol = 2
milter_protocol = 6
milter_default_action = accept
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock
  • Перезапустите сервисы (или перезагрузите)

systemctl перезагрузка опендким

перезапуск systemctl постфикс

Вот и все. Я не знаю зачем писать

smtpd_milters = unix: var / run / opendkim / opendkim.sock

вместо того

smtpd_milters = local: /var/spool/postfix/var/run/opendkim/opendkim.sock

, Если кто-то знает, объяснения приветствуются.

Fedorov7890
источник
2
Если postfix работает с CHROOT, то пути к конфигурациям относительно этого. Вы бы в конечном итоге с постфиксом, пытаясь решить /var/spool/postfix/var/spool/postfix/var/run/opendkim/opendkim.sock
темнее
5

Я столкнулся с той же проблемой в растяжке Debian, которая, как оказалось, была вызвана поврежденным файлом службы systemd для opendkim. Посмотрите этот ответ для решения: https://serverfault.com/a/847442/84962

Это исправление сводится к:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
Serrano
источник
1
У меня есть система Ubuntu, где помог только этот совет, а все остальное не сработало.
silpol
Я запускаю 16.04 и /lib/opendkim/opendkim.service.generate не существует
Лоран
Отлично работает на Ubuntu 18.04. Спасибо.
Duque
Это решило мою проблему в Debian 9.
jchook
2
smtpd_milters = unix:var/run/opendkim/opendkim.sock, unix:var/run/opendmarc/opendmarc.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock, unix:var/run/opendmarc/opendmarc.sock

usermod -G opendkim,opendmarc
Олег Гинзбург
источник
5
Это было бы намного лучшим ответом, если бы включало некоторое объяснение, Как и Почему это отвечает на вопрос.
Стивен Раух
3
Добро пожаловать в Unix и Linux! Хотя этот фрагмент кода может решить вопрос, в том числе объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для читателей в будущем, а не только для того, кто спрашивает сейчас! Пожалуйста, отредактируйте свой ответ, чтобы добавить объяснение и указать, какие ограничения и предположения применяются.
Тоби Спейт
1

Альтернативой может быть отключение chroot, это имеет последствия для безопасности:

vi /etc/postfix/master.cf

# service type  private unpriv  chroot  wakeup  maxproc command + args
cleanup   unix  n       -       n       -       0       cleanup

В предупреждениях говорится postfix/cleanup, что вы можете отключить chroot для этой службы.

Plup
источник
0

подключиться к сервису Milter unix: /clamav/clamav-milter.ctl: разрешение отклонено

ls -l / var / spool / postfix / clamav srw-rw ---- 1 clamav clamav 0 апр. 4 17:59 clamav-milter.ctl

ClamAV-milter.conf

пользователь clamav MilterSocketGroup постфикс MilterSocketMode 660

пользовательские разрешения для milter

Чоун постфикс: постфикс /var/spool/postfix/clamav/clamav-milter.ctl

Работает для меня

gjerich
источник
0

У меня была проблема, потому что OpenDKIM и Postfix работают с правами разных пользователей и пишут и читают из одного сокета.

Я добавил пользователя postfix в группу opendkim:

sudo usermod -a -G opendkim postfix
Алекс Гвар
источник