postfix / smtpd: ostrzeżenie: połącz z usługą Milter unix: /var/run/opendkim/opendkim.sock: Brak takiego pliku lub katalogu

36

Mam problem z postfiksem na debianie po aktualizacji z squeeze do wheezy. Postfix został skonfigurowany do podpisywania wiadomości przy użyciu filtru dkim-filter. Przed aktualizacją wszystko działało bezbłędnie, teraz nie działa po połączeniu z usługą (gniazda TCP lub UNIX). Myślałem, że może to z powodu przejścia Debiana na opendkim, więc usunąłem filtr dkim i zainstalowałem opendkim - ten sam problem. Próbowałem nawet ustawić połączenie gniazda plików unix zamiast opcji tcp - ten sam problem:

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

lub (z tcp / ip):

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

Sprawdziłem dwa razy - plik gniazda istnieje i usługa nasłuchuje na porcie 8891.

Co mogę zrobić, aby to naprawić?

Rogers
źródło

Odpowiedzi:

58
  1. Sprawdź, czy działa opendkim. (Zakładam, że jest tak, jak widziałeś plik gniazda).
  2. Czy skonfigurowałeś opendkim? Plik konfiguracyjny to /etc/opendkim.conf.

    Musisz zaktualizować plik, aby pasował do Twojej witryny / domeny i ścieżki dkim.key .

  3. Dodaj postfiks do grupy opendkim

    Jeśli uprawnienie opendkim.sock jest następujące

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

    Jeśli nie, upewnij się, że UMaskjest ustawiony 0002w /etc/opendkim.conf.

    Następnie wykonaj następujące czynności

    sudo adduser postfix opendkim
  4. Postfiks działający w chroot

    Zmodyfikuj /etc/default/opendkim, zmień opcję GNIAZDO na lokalizację chroot po poprawce

    SOCKET = "local: /var/spool/postfix/var/run/opendkim/opendkim.sock"

    Będziesz musiał utworzyć katalog /var/spool/postfix/var/run/opendkimi zmienić jego uprawnienia

    sudo mkdir -p / var / spool / postfix / var / run / opendkim
    sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim
    
  5. Uruchom ponownie opendkim

    usługa sudo opendkim restart
    
John Siu
źródło
4
Znalazłem podobny problem spowodowany zbyt restrykcyjnymi uprawnieniami do katalogu opendkim.
Darrell Duane
1
Jestem pewien, że miałem wcześniej opendkim działający, ale zauważyłem, że nie działał po aktualizacji z Ubuntu 15.04 do 15.10. Aktualizacja ścieżki gniazda /etc/default/opendkimdo tej samej, którą już zdefiniowałem, /etc/opendkim.confnaprawiła. Dzięki!
Haprog
mój problem polega na tym, że korzystam z postfixa w chroot i używam gniazda unix. Jeśli widzisz, No such file or directoryże ten postfiks nie może znaleźć ścieżki, ale szukał gniazda wewnątrz / var / spool / postfix / var / run / opendkim /, not / var / run / opendkim
HVNSweeting
@HVNSweeting Czy to nie jest uwzględnione w (4)?
John Siu,
to dlatego komentuję i głosuję zamiast tworzyć nową odpowiedź. Pytanie zawiera tak wiele problemów, ponieważ jeśli poprawnie skonfigurowano opendkim, gniazdo TCP powinno działać. Dziękuję
HVNSweeting
11

Szybkie podsumowanie, które pomogło mi naprawić to ostrzeżenie w Ubuntu 16.04 LTS: Postfix wersja 3.1.0-3ubuntu0.2 Opendkim wersja 2.10.3-3build1

  • (Zakładam, że Postfix i Opendkim są już zainstalowane, zintegrowane ze sobą, a jedynym ostrzeżeniem, które otrzymujesz, jest „połączenie z lokalną usługą Milter: /var/spool/postfix/opendkim/opendkim.sock: Brak takiego pliku lub katalogu”)

  • Dodaj postfiks użytkownika do grupy opendkim (pomiń, jeśli już to zrobiono)

sudo adduser postfix opendkim

  • Utwórz katalog i ustaw właściciela (pomiń, jeśli już to zrobiono)

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

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

  • Sprawdź uprawnienia:

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

srwxrwxr-x 1 opendkim opendkim 0 Nov 12 14:34 opendkim.sock
  • Edytuj pliki konfiguracyjne opendkim: /etc/opendkim.conf, dodaj linię

Socket local: /var/spool/postfix/var/run/opendkim/opendkim.sock

/ etc / defaults / opendkim, dodaj

SOCKET = "local: /var/spool/postfix/var/run/opendkim/opendkim.sock"

  • Edytuj konfigurację Postfiksa: /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
  • Uruchom ponownie usługi (lub uruchom ponownie)

systemctl restart opendkim

systemctl restart postfix

to jest to! Nie wiem, dlaczego trzeba pisać

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

zamiast

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

. Jeśli ktoś wie, wyjaśnienia są mile widziane.

Fedorov7890
źródło
2
Jeśli postfiks działa z CHROOT, ścieżki konfiguracji są do tego względne. Skończysz na postfiksie próbującym rozwiązać /var/spool/postfix/var/spool/postfix/var/run/opendkim/opendkim.sock
przyciemnij
5

Taki sam problem występowałem na odcinku Debian, który okazał się być spowodowany zepsutym plikiem usługi systemd dla opendkim. Zobacz odpowiedź na rozwiązanie: https://serverfault.com/a/847442/84962

Ta poprawka sprowadza się do:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
Serrano
źródło
1
Mam system Ubuntu, w którym tylko ta rada pomogła, a wszystko inne nie działało.
silpol,
Używam 16.04 i /lib/opendkim/opendkim.service.generate nie istnieje
Laurent
Działa dobrze na Ubuntu 18.04. Dziękuję Ci.
Duque,
To rozwiązało mój problem z Debianem 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
Олег Гинзбург
źródło
5
Byłaby to znacznie lepsza odpowiedź, gdyby zawierała wyjaśnienie, w jaki sposób i dlaczego to odpowiada na pytanie.
Stephen Rauch
3
Witamy w systemach Unix i Linux! Ten fragment kodu może rozwiązać pytanie, ale wyjaśnienie naprawdę pomaga poprawić jakość posta. Pamiętaj, że odpowiadasz na pytanie dla czytelników w przyszłości, nie tylko dla osoby zadającej teraz pytanie! Proszę edytować swoje odpowiedzi, aby dodać wyjaśnienie, i dać wskazówkę co zastosować ograniczenia i założenia.
Toby Speight
1

Alternatywą byłoby wyłączenie chroot, co ma wpływ na bezpieczeństwo:

vi /etc/postfix/master.cf

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

Ostrzeżenia mówią postfix/cleanup, więc możesz dezaktywować chroot dla tej usługi.

Plup
źródło
0

połącz się z usługą Milter unix: /clamav/clamav-milter.ctl: Odmowa dostępu

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

clamav-milter.conf

użytkownik clamav MilterSocketGroup postfiks MilterSocketMode 660

uprawnienia użytkownika dla miltera

chown postfix: postfix /var/spool/postfix/clamav/clamav-milter.ctl

Pracuje dla mnie

Gjerich
źródło
0

Miałem problem, ponieważ OpenDKIM i Postfix działają z prawami różnych użytkowników oraz piszą i czytają z tego samego gniazda.

Dodałem użytkownika postfiksa do grupy opendkim:

sudo usermod -a -G opendkim postfix
Alex Gvar
źródło