3 votes

Filtre OpenDKIM : Impossible de créer un socket d'écoute

Bonjour, j'ai toujours cette erreur dans le journal de bord.

Jul 22 10:16:52 veepiz opendkim[5145]: OpenDKIM Filter: Unable to bind to port inet:20209@localhost: Address already in use
Jul 22 10:16:52 veepiz opendkim[5145]: OpenDKIM Filter: Unable to create listening socket on conn inet:20209@localhost
Jul 22 10:16:52 veepiz opendkim[5145]: smfi_opensocket() failed

#ps aux | grep opendkim
opendkim  1361  0.0  0.1  40424   780 ?        Ss   10:11   0:00 /usr/local/sbin/opendkim -x /etc/opendkim.conf
opendkim  1362  0.0  0.2  56948  1508 ?        Sl   10:11   0:00 /usr/local/sbin/opendkim -x /etc/opendkim.conf
opendkim  2256 19.6  0.1  40424   928 ?        Ss   10:16   1:18 /usr/local/sbin/opendkim -x /etc/opendkim.conf
root     20733  0.0  0.1  61224   740 pts/0    S+   10:23   0:00 grep opendkim

#netstat -nlp | grep 20209
tcp        0      0 127.0.0.1:20209             0.0.0.0:*                   LISTEN      1362/opendkim

4voto

Le problème s'est avéré être un dossier manquant pour le processus opendkim qui a été spécifié dans /etc/opendkim.conf :

PidFile /var/run/opendkim/opendkim.pid

Je l'ai découvert en tapant systemctl status opendkim.service après qu'il ait échoué à démarrer.

出力します。

 opendkim.service - LSB: Start and stop OpenDKIM
   Loaded: loaded (/etc/rc.d/init.d/opendkim)
   Active: failed (Result: timeout) since Sat 2016-05-28 20:16:56 CDT; 1min 40s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 2640 ExecStart=/etc/rc.d/init.d/opendkim start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/opendkim.service
           2643 /usr/local/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid
           2645 /usr/local/sbin/opendkim -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid

May 28 20:11:56 alpha systemd[1]: Starting LSB: Start and stop OpenDKIM...
May 28 20:11:56 alpha opendkim[2640]: Starting OpenDKIM Milter: [  OK  ]
May 28 20:11:56 alpha systemd[1]: PID file /var/run/opendkim/opendkim.pid not readable (yet?) after start.
May 28 20:11:56 alpha opendkim[2643]: can't write pid to /var/run/opendkim/opendkim.pid: No such file or directory
May 28 20:11:56 alpha opendkim[2645]: OpenDKIM Filter v2.4.2 starting (args: -x /etc/opendkim.conf -P /var/run/opendkim/opendkim.pid)
May 28 20:16:56 alpha systemd[1]: opendkim.service start operation timed out. Terminating.
May 28 20:16:56 alpha systemd[1]: Failed to start LSB: Start and stop OpenDKIM.
May 28 20:16:56 alpha systemd[1]: Unit opendkim.service entered failed state.
May 28 20:16:56 alpha systemd[1]: opendkim.service failed.

Pour corriger cela, j'ai d'abord arrêté le processus opendkim :

systemctl stop opendkim

Puis j'ai créé un service qui ferait le dir au démarrage :

vim /etc/systemd/system/georges.service

Le contenu de /etc/systemd/system/georges.service :

[Unit]
Description=George's Simple Service
After=network.target

[Service]
Type=simple
ExecStartPre=-/usr/bin/mkdir /var/run/opendkim
ExecStart=/usr/bin/chown opendkim:opendkim /var/run/opendkim
Restart=on-abort

[Install]
WantedBy=multi-user.target

Puis j'ai commencé ce service :

systemctl start georges

systemctl status georges

出力します。

[root@alpha etc]# systemctl status georges.service
 georges.service - George's Simple Service
   Loaded: loaded (/etc/systemd/system/georges.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

May 28 20:53:50 alpha systemd[1]: Starting George's Simple Service...
May 28 20:53:50 alpha systemd[1]: Started George's Simple Service.

Enfin, j'ai demandé au système de le charger au démarrage :

systemctl enable georges

Non pas que je comprenne tout ce que j'ai fait, mais hé... ça marche pour moi ! N'hésitez pas à me dire si j'ai gâché quelque chose en faisant ça...

UPDATE

J'ai demandé une question à ce sujet et ils ont indiqué la bonne façon de faire créer un répertoire d'exécution par le système :

Créez ce fichier :

/etc/tmpfiles.d/opendkim.conf

Introduisez cette ligne (ok 2 si vous comptez le commentaire) :

#Type Path            Mode UID      GID    Age Argument
 d     /run/opendkim   0755 opendkim opendkim   -   -

Boom - il fonctionne tout aussi bien au redémarrage mais ne nécessite pas la configuration d'un nouveau service.

3voto

SteveJ Points 482

Il semble que vous avez déjà au moins un processus OpenDKIM en cours d'exécution, ce qui l'empêche de démarrer un nouveau processus. Fermez tous les processus que vous avez trouvé avec ps aux | grep opendkim et ensuite redémarrez OpenDKIM.

0 votes

Si cela a permis de résoudre le problème, veuillez marquer votre question comme "répondue".

0 votes

Peut-être que cela a résolu mon problème :)

2voto

Il existe une option "AutoRestart" dans dkim-filter.conf, ce qui signifie que si le service est arrêté à l'aide de "service dkim-milter stop", il se redémarre automatiquement. Cependant, si vous essayez ensuite de démarrer le service manuellement en utilisant "service dkim-milter start", il semble créer un second processus et les journaux du serveur commencent à se remplir du message d'erreur car le port est utilisé.

J'ai un script pour vérifier manuellement les processus de mon serveur de messagerie et les redémarrer qui utilisait la méthode stop/start, et j'ai rencontré ce problème.

L'utilisation de "service dkim-milter restart" semble mieux fonctionner, mais il arrive parfois que le problème se manifeste.

1voto

Blef Points 11

Il suffit de renommer Socket en SOCKET dans DKIM-MILTER.CONF.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X