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.