在/ etc / default / opendkim中,不能在Debian中修改OpenDKIM套接字

我试图在Debian伸展上设置opendkim,但是我无法改变套接字。 我想改变套接字到/var/spool/postfix/opendkim/opendkim.sock所以我可以使用它与后缀

我已经添加了Socket local:/var/spool/postfix/opendkim/opendkim.sock/etc/opendkim.conf

并尝试将SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock添加到/etc/default/opendkim (我必须创build)。

无论我改变什么或者重新启动opendkim,它总是使用/var/run/opendkim/opendkim.sock作为它的套接字。

 ➜ ~ netstat -a | fgrep LISTEN | grep open unix 2 [ ACC ] STREAM LISTENING 5534128 /var/run/opendkim/opendkim.sock ➜ ~ sudo systemctl status opendkim.service ● opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2017-04-30 12:41:54 CEST; 5min ago 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: 25246 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock (code=exited, status=0/SUCCESS) Main PID: 25248 (opendkim) Tasks: 7 (limit: 4915) CGroup: /system.slice/opendkim.service ├─25248 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock └─25249 /usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock Apr 30 12:41:54 vServer systemd[1]: Starting OpenDKIM DomainKeys Identified Mail (DKIM) Milter... Apr 30 12:41:54 vServer systemd[1]: Started OpenDKIM DomainKeys Identified Mail (DKIM) Milter. Apr 30 12:41:54 vServer opendkim[25249]: OpenDKIM Filter v2.11.0 starting (args: -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock) 

我究竟做错了什么? (我想这是我的错误,因为我找不到其他人有同样的问题)

更新:

/etc/default/opendkim更改为SOCKET="inet:8891@localhost"并更改后缀configuration以使用此套接字将导致inet:localhost:8891: Connection refused

UPDATE2:

现在我已经用debian stretch软件包中的文件replace了:

 # Command-line options specified here will override the contents of # /etc/opendkim.conf. See opendkim(8) for a complete list of options. #DAEMON_OPTS="" # Change to /var/spool/postfix/var/run/opendkim to use a Unix socket with # postfix in a chroot: RUNDIR=/var/spool/postfix/var/run/opendkim #RUNDIR=/var/run/opendkim # # Uncomment to specify an alternate socket # Note that setting this will override any Socket value in opendkim.conf # default: SOCKET=local:$RUNDIR/opendkim.sock # listen on all interfaces on port 54321: #SOCKET=inet:54321 # listen on loopback on port 12345: #SOCKET=inet:12345@localhost # listen on 192.0.2.1 on port 12345: #SOCKET=inet:[email protected] USER=opendkim GROUP=opendkim PIDFILE=$RUNDIR/$NAME.pid EXTRAAFTER= 

包含以下决定套接字的行:

 if [ -f /etc/opendkim.conf ]; then CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf` fi # This can be set via Socket option in config file, so it's not required if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS" fi 

我终于find了解决办法。

/etc/init.d/opendkim似乎没有做任何事情。 但是使用的是/lib/systemd/system/opendkim.service ,它的硬编码错误。

但是debian软件包似乎还包含一个生成正确系统服务的bash。

所以跑完之后

 /lib/opendkim/opendkim.service.generate systemctl daemon-reload service opendkim restart 

并重新启动opendkim的套接字文件出现在预期的地方,这可以通过调用:

 tail /var/log/mail.log | grep OpenDKIM 

更新:似乎有关于这个问题的debian bugreport: #861169

为了使用inet套接字,你需要指定:

SOCKET="inet:12301@localhost"/etc/default/opendkim

另外,您还需要更改Postfix中的设置:

/etc/postfix/main.cf添加:

 milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301 

如果你不能设置localpath,我build议你:

  • /var/log mailsyslogopendkim /var/log并检查

  • 检查/etc/init.d/opendkim脚本并检查sock文件是否被设置为一个值

  • 尝试使用默认local:/var/run/opendkim/opendkim.sock – 并指定smtpd_milters = local:/var/run/opendkim/opendkim.socknon_smtpd_milters = local:/var/run/opendkim/opendkim.sock /etc/postfix/main.cf

这对我工作:

编辑/lib/systemd/system/opendkim.service

更改:

 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock 

至:

 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost systemctl daemon-reload 

 systemctl opendkim restart 

我没有足够的信誉来评论,并且想要承认,在searchOpenDKim-Postfix“连接被拒绝”的解决scheme数小时后,由/lib/systemd/system/opendkim.service提供的/lib/systemd/system/opendkim.service编辑与Ubuntu 17.04:

 warning: connect to Milter service inet:localhost:8891: Connection refused 

编辑/lib/systemd/system/opendkim.service

更改:

 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock 

至:

 ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:12301@localhost systemctl daemon-reload 

 systemctl opendkim restart 

在尝试编辑之前,我将postfix用户添加到opendkim组,并根据Lukas Winkler的解决scheme尝试了/lib/opendkim/opendkim.service.generate 。 连接拒绝错误一直持续到端口号被添加到/lib/systemd/system/opendkim.service

要更新/lib/systemd/system/opendkim.service ,我使用了Ubuntu的8891端口,并将原来的ExecStart命令行注释掉,然后添加了一个新的端口号:

 /lib/systemd/system/opendkim.service (Service category): [Service] Type=forking PIDFile=/var/run/opendkim/opendkim.pid User=opendkim UMask=0007 #ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/run/opendkim/opendkim.sock -p inet:8891@localhost Restart=on-failure ExecReload=/bin/kill -USR1 $MAINPID 

/etc/opendkim.conf中另外指定了匹配的端口号:

 Socket inet:8891@localhost 

/etc/postfix/main.cf

 smtpd_milters = inet:localhost:8891 non_smtpd_milters = $smtpd_milters milter_default_action = accept milter_protocol = 2 

在重新启动systemctl守护进程,opendkim和postfix之后,外发邮件被签名而没有问题,并且邮件日志显示“添加了DKIM签名字段”。

 systemctl daemon-reload systemctl opendkim restart systemctl postfix restart 

最近在使用Centos7configurationOpenDkim时没有连接问题,所以在这个例子中显然是与Ubuntu相关的。 感谢Lukas Winkler发布这个问题以及分享他们解决scheme的人。

OpenDKIM工作,直到我升级我的服务器。 OpenDKIM不会启动,Milter没有运行套接字。 在/var/log/syslog我可以看到opendkim尝试创build与升级之前不同的地方。 我尝试编辑/etc/opendkim.conf /etc/default/opendkim/lib/systemd/system/opendkim.service的套接字设置,但没有帮助。 事实certificate,信息是在我的整个时间的前面:

 opendkim.service - OpenDKIM DomainKeys Identified Mail (DKIM) Milter Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled) Drop-In: /etc/systemd/system/opendkim.service.d └─override.conf Active: active (running) since Sat 2017-10-14 16:03:45 CEST; 4h 44min ago 

我注意到这些设置被“override.conf”文件覆盖,并被编辑为与我的/etc/postfix/main.cf (作为chroot运行)alignment:

 smtpd_milters = local:/opendkim/opendkim.sock non_smtpd_milters = local:/opendkim/opendkim.sock 

编辑/etc/systemd/system/opendkim.service.d/override.conf

 [Service] PIDFile=/var/spool/postfix/opendkim/opendkim.pid ExecStart= ExecStart=/usr/sbin/opendkim -P /var/spool/postfix/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock 

最后重新启动守护进程和opendkim:

 systemctl daemon-reload && systemctl restart opendkim