postfix / smtpd: avertissement: connexion au service Milter unix: /var/run/opendkim/opendkim.sock: Aucun fichier ou répertoire de ce type

36

J'ai un problème avec postfix sous Debian après la mise à niveau de squeeze à wheezy. Postfix a été configuré pour signer des messages à l'aide de dkim-filter. Avant la mise à jour, tout fonctionnait parfaitement. Désormais, la connexion au service (prises TCP ou Unix) échoue. Je pensais que c'était peut-être à cause du passage de debian à opendkim. J'ai donc supprimé dkim-filter et installé opendkim - le même problème. J'ai même essayé de définir une connexion de socket de fichier Unix au lieu de l'option TCP - même problème:

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

ou (avec TCP / IP):

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

J'ai vérifié deux fois - le fichier de socket existe et le service écoutait sur le port 8891.

Que puis-je faire pour résoudre ce problème?

Rogers
la source

Réponses:

58
  1. Vérifiez si opendkim est en cours d'exécution. (Je suppose que c'est comme vous avez vu le fichier de socket.)
  2. Avez-vous configuré opendkim? Le fichier de configuration est /etc/opendkim.conf.

    Vous devez mettre à jour le fichier pour qu'il corresponde à votre site / domaine et à votre chemin dkim.key .

  3. Ajouter postfix au groupe opendkim

    Si l'autorisation opendkim.sock est comme suit

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

    Dans le cas contraire, assurez - vous UMaskest fixé à 0002dans /etc/opendkim.conf.

    Puis fais ce qui suit

    sudo adduser postfix opendkim
  4. Postfix s'exécute dans chroot

    Modifier /etc/default/opendkim, changer l’ option SOCKET en postfixant l’emplacement chroot

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

    Vous devrez créer un répertoire /var/spool/postfix/var/run/opendkimet changer son autorisation

    sudo mkdir -p / var / spool / postfix / var / run / opendkim
    sudo chown opendkim: opendkim / var / spool / postfix / var / run / opendkim
    
  5. Redémarrer opendkim

    sudo service opendkim restart
    
John Siu
la source
4
J'ai trouvé un problème similaire causé par des autorisations trop restrictives sur le répertoire opendkim.
Darrell Duane
1
Je suis sûr que je travaillais auparavant avec opendkim, mais j'ai remarqué qu'il ne fonctionnait plus après la mise à niveau d'Ubuntu 15.04 à 15.10. Mettre à jour le chemin du socket dans /etc/default/opendkimcelui que j'avais déjà défini l'a /etc/opendkim.confcorrigé. Merci!
Haprog
mon problème est que j'exécute postfix dans chroot et j'utilise unix socket. Si vous voyez No such file or directoryque cela signifie que postfix ne peut pas trouver le chemin, mais qu'il a cherché le socket dans / var / spool / postfix / var / run / opendkim /, pas / var / run / opendkim
HVNSweeting
@HVNSweeting N'est-ce pas couvert dans (4)?
John Siu
c'est pourquoi je commente et je vote au lieu de créer une nouvelle réponse. La question contient tellement de problèmes, car si opendkim est configuré correctement, le socket TCP devrait fonctionner. Merci
HVNSweeting
11

Résumé rapide qui m'a aidé à résoudre cet avertissement sur Ubuntu 16.04 LTS: Postfix version 3.1.0-3ubuntu0.2 Opendkim version 2.10.3-3build1

  • (Je suppose que Postfix et Opendkim sont déjà installés et intégrés et que le seul avertissement que vous obtenez est le suivant: «se connecter au service Milter local: /var/spool/postfix/opendkim/opendkim.sock: aucun fichier ni répertoire de ce type»)

  • Ajouter l'utilisateur postfixe au groupe opendkim (ignorer si déjà fait)

sudo adduser postfix opendkim

  • Créer un répertoire et en définir le propriétaire (ignorer si déjà fait)

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

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

  • Vérifiez les autorisations:

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

srwxrwxr-x 1 opendkim opendkim 0 Nov 12 14:34 opendkim.sock
  • Editez les fichiers de configuration opendkim: /etc/opendkim.conf, ajoutez une ligne

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

/ etc / defaults / opendkim, ajoutez

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

  • Éditez la configuration de postfix: /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
  • Redémarrer les services (ou redémarrer)

systemctl redémarrer opendkim

systemctl redémarrer postfix

C'est ça. Je ne sais pas pourquoi il faut écrire

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

au lieu de

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

. Si quelqu'un le sait, les explications sont les bienvenues.

Fedorov7890
la source
2
Si postfix est exécuté avec CHROOT, les chemins de configuration sont relatifs à cela. Vous vous retrouveriez avec postfix en essayant de résoudre /var/spool/postfix/var/spool/postfix/var/run/opendkim/opendkim.sock
assombrir
5

Je faisais face au même problème sur l’extension Debian, qui s’est avéré être causé par un fichier de service systemd cassé pour opendkim. Voir cette réponse pour une solution: https://serverfault.com/a/847442/84962

Ce correctif se résume à:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
Serrano
la source
1
J'ai un système Ubuntu, où seul ce conseil a aidé, alors que tout le reste n'a pas fonctionné.
Silpol
Je lance 16.04 et /lib/opendkim/opendkim.service.generate n'existe pas
Laurent
Fonctionne bien sur Ubuntu 18.04. Merci.
Duque
Ceci a résolu mon problème sur 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
Олег Гинзбург
la source
5
Ce serait une bien meilleure réponse si elle incluait une explication de Comment et Pourquoi cela répond à la question.
Stephen Rauch
3
Bienvenue dans Unix & Linux! Bien que cet extrait de code puisse résoudre la question, l'inclusion d'une explication contribue réellement à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question pour les lecteurs dans le futur, pas seulement pour la personne qui le demande maintenant! S'il vous plaît modifier votre réponse pour ajouter une explication et donner une indication des limitations et hypothèses applicables.
Toby Speight
1

Une alternative serait de désactiver le chroot, cela a des implications sur la sécurité:

vi /etc/postfix/master.cf

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

Les avertissements indiquent postfix/cleanupque vous pouvez désactiver le chroot pour ce service.

Plup
la source
0

se connecter au service Milter unix: /clamav/clamav-milter.ctl: autorisation refusée

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

clamav-milter.conf

utilisateur clamav MilterSocketGroup postfixe MilterSocketMode 660

autorisations utilisateur pour le milter

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

Travaille pour moi

Gjerich
la source
0

J'ai eu un problème car OpenDKIM et Postfix fonctionnent avec les droits de différents utilisateurs et écrivent et lisent depuis le même socket.

J'ai ajouté l'utilisateur postfix au groupe opendkim:

sudo usermod -a -G opendkim postfix
Alex Gvar
la source