OpenDKIMfilter:无法创build侦听套接字

嗨,我不断收到这个错误在maillog.any想法

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 

问题原来是在/etc/opendkim.conf中指定的opendkim进程丢失的文件夹:

PidFile /var/run/opendkim/opendkim.pid

我发现通过inputsystemctl status opendkim.service后,无法启动。

输出:

 ● 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. 

为了解决这个问题,我首先停止了opendkim过程:

systemctl stop opendkim

然后,我创build了一个服务,将开始dir:

vim /etc/systemd/system/georges.service

/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 

然后我开始了这项服务:

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. 

最后,我告诉系统在启动时加载它:

systemctl enable georges

不是我明白我所做的一切,但嘿 – 它适用于我! 随时让我知道如果我通过这样做破坏了任何东西…

UPDATE

我问了一个关于这个的问题 ,他们指出了让系统创build一个运行目录的正确方法:

创build这个文件:

/etc/tmpfiles.d/opendkim.conf

放在这一行(如果您计算注释,那么确定2):

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

繁荣 – 它在重启时也能正常工作,但不需要configuration新的服务。

看起来你已经有至less一个OpenDKIM进程正在运行,这阻止了它启动一个新进程。 用ps aux |杀死所有你find的进程 grep opendkim,然后重新启动OpenDKIM。

在dkim-filter.conf中有一个“AutoRestart”选项,这意味着如果使用“service dkim-milter stop”closures服务,它将自动重启。 但是,如果您尝试使用“service dkim-milter start”手动启动服务,则似乎会创build第二个进程,并且在端口正在使用时,服务器日志将开始填充错误消息。

我有一个脚本来手动检查我的邮件服务器进程,并重新启动它们使用停止/启动方法,并遇到此问题。

使用“service dkim-milter restart”似乎效果更好,但偶尔我会遇到问题。

语法,只需在DKIM-MILTER.CONF上将Socket重命名为SOCKET