This is the complaint I get from systemd:
"opendkim.service: Can't open PID file /var/run/opendkim/opendkim.pid"
As seen here:
systemctl status opendkim.service
puts out this:
● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Active: deactivating (stop-sigterm) (Result: timeout)
Docs: man:opendkim(8)
man:opendkim.conf(5)
man:opendkim-genkey(8)
man:opendkim-genzone(8)
man:opendkim-testadsp(8)
man:opendkim-testkey
http://www.opendkim.org/docs.html
Process: 8217 ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf (code=exited, status=0/SUCCESS)
Tasks: 6 (limit: 2361)
CGroup: /system.slice/opendkim.service
└─8226 /usr/sbin/opendkim -x /etc/opendkim.conf
Feb 11 04:56:48 hacksaw.org systemd[1]: Starting OpenDKIM DomainKeys Identified Mail (DKIM) Milter...
Feb 11 04:56:48 hacksaw.org systemd[1]: opendkim.service: Can't open PID file /var/run/opendkim/opendkim.pid (yet?) after start: No such file or directory
Feb 11 04:56:48 hacksaw.org opendkim[8226]: OpenDKIM Filter v2.11.0 starting (args: -x /etc/opendkim.conf)
Feb 11 04:58:18 hacksaw.org systemd[1]: opendkim.service: Start operation timed out. Terminating.
If I start the daemon by hand, it goes. This seems to be about systemd.
Other data:
#ls -ld /var/run/opendkim/
drwxr-xr-x 2 opendkim opendkim 40 Feb 11 04:25 /var/run/opendkim/
The only line on the opendkim.conf:
UserID opendkim:opendkim
The default opendkim service file, from /lib/systemd/service:
[Unit]
Description=OpenDKIM DomainKeys Identified Mail (DKIM) Milter
Documentation=man:opendkim(8) man:opendkim.conf(5) man:opendkim-genkey(8) man:opendkim-genzone(8) man:opendkim-testadsp(8) man:opendkim-testkey http://www.opendkim.org/docs.html
After=network.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/opendkim/opendkim.pid
UMask=0007
ExecStart=/usr/sbin/opendkim -x /etc/opendkim.conf
Restart=on-failure
ExecReload=/bin/kill -USR1 $MAINPID
[Install]
WantedBy=multi-user.target
I fixed it by specifying the
PidFile
in the/etc/opendkim.conf
file:I think it's better to solve it here than modifying the systemd script. Also, systemd recommends the
PIDFile
option if theType
option is set toforking
, which it seems to be in this service.This
PidFile
setting was present in the default/etc/opendkim.conf
file. However, I replaced that file while I was following a tutorial for configuring OpenDKIM. So that is where it went wrong for me.Since this daemon runs alone, systemd doesn't need anything special to manage it. Importantly, having a "PIDFile" directive suggests that it's a more complicated service, and will put a PID into the PIDFile on it's own.
The solution is to remove the PIDFile line. Now systemd handles it just fine.
In my case was due to the fact that
/var/run
was a symlink to/run
. After changing thePIDFile
path from/var/run/opendkim/opendkim.pid
in/run/opendkim/opendkim.pid
inopendkim.service
, the problem went away.Editing this file here does it for me.
by changing
PidFile /var/run/opendkim/opendkim.pid
tomy platform is centos 7
I fixed this issue by editing the systemctl file like this:
It will set the correct permission for the opendkim.pid file before starting the service. This is the reason why opendkim said "No such file or directory". The file is not available for the opendkim service.
I solve this problem just by creating
opendkim
folder in/var/run/
and chowned it to opendkim:opendkim. After that the service started correctly and created its pid-file.