以下错误阻碍了opendkim的重启
× opendkim.service - OpenDKIM Milter
Loaded: loaded (/lib/systemd/system/opendkim.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2023-04-22 08:00:27 UTC; 2s ago
[...] Process: 2295 ExecStart=/usr/sbin/opendkim (code=exited, status=78)
opendkim.service: Control process exited, code=exited, status=78/CONFIG
尝试查阅(未加密的,可能未更新的)文档,没有发现任何关于status=78
.
但显然 milter 配置在某种程度上是不正确的。 /etc/postfix/main.cf
定义:
# Milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
而/etc/opendkim.conf
有
Syslog yes
SyslogSuccess yes
LogWhy yes
Canonicalization relaxed/simple
Mode sv
SubDomains no
OversignHeaders From
UserID opendkim
UMask 007
Socket local:/var/spool/postfix/opendkim/opendkim.sock
#Nameservers 127.0.0.1
AutoRestart yes
AutoRestartRate 10/1M
Background yes
DNSTimeout 5
SignatureAlgorithm rsa-sha256
ExternalIgnoreList refile:/etc/opendkim/trusted.hosts
InternalHosts refile:/etc/opendkim/trusted.hosts
KeyTable refile:/etc/opendkim/key.table
SigningTable refile:/etc/opendkim/signing.table
PidFile /var/run/opendkim/opendkim.pid
# UserID opendkim:opendkim
我注意到以下几点:
• 最初引用的 opendkim 配置ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
而现有文件是/etc/opendkim/trusted.hosts
. 这对整个块重复。整个块被修改为小写的点分隔文件名,然后服务重新启动。
但是,电子邮件在发送时会被 postfix 记录为:
warning: connect to Milter service local:opendkim/opendkim.sock: No such file or directory
cd /var/spool/postfix/opendkim
-bash: cd: /var/spool/postfix/opendkim: No such file or directory
我也看不到 pid 文件/var/run/opendkim/
smtpd_milters = local:opendkim/opendkim.sock
postfix配置和 opendkim定义之间可能存在一些错误Socket
。需要改变什么?
更新
warning: connect to Milter service local:opendkim/opendkim.sock: Permission denied
仍在邮件日志中,因此该配置元素是错误的。
将设置更改postfix/main.cf
为
smtpd_milters = local:/var/spool/postfix/opendkim/opendkim.sock
结果:
warning: connect to Milter service local:/var/spool/postfix/opendkim/opendkim.sock: No such file or directory
。的存在/var/spool/postfix/opendkim/opendkim.sock
得到验证。
虽然这是套接字在系统上的路径,但这不是 chrooted smtpd 实例将在以下位置看到它的路径:
smtpd_milters = local:/var/spool/postfix/opendkim/opendkim.sock
Postfix smtpd 想要一个相对于 chroot 目录的路径,它不知道
/var/spool/postfix/
启动后的路径。smtpd_milters = unix:opendkim/opendkim.sock
/usr/share/doc/postfix/MILTER_README
你可以在和中找到详细信息man 5 master
,这里只引用关键信息,强调我的:部分解决方案
sudo chown opendkim:postfix /var/spool/postfix/opendkim
需要给postfix创建权限opendkim.sock
虽然
opendkim.service: Can't open PID file /run/opendkim/opendkim.pid (yet?) after start: Operation not permitted
发生是暂时的Started OpenDKIM Milter.
随后不久,它/run/opendkim/opendkim.pid
被有效地创建opendkim.pid
并由 root 拥有。