Postfix – Opendkim – 无法连接到本地套接字

当postfix尝试连接到unix套接字为opendkim时,我得到拒绝错误,实际的错误:

Sep 24 15:41:43 service-a-4 postfix/cleanup[17414]: warning: connect to Milter service unix:var/run/opendkim/opendkim.sock: Permission denied 

根据postfix文档 ,postfix默认运行在“chroot mode”,所以postfix被locking到/ var / spool / postfix /,根据postfix文件 ,如果运行在“chroot mode”,所有milter(socket)引用是相对的(到/ var / spool / postfix)。

所以我的configuration如下所示:

 # /etc/opendkim.conf Socket local:/var/spool/postfix/var/run/opendkim/opendkim.sock # /etc/postfix/main.cf smtpd_milters = unix:/var/run/opendkim/opendkim.sock 

现在,当我尝试发送testing电子邮件时,我得到权限被拒绝的错误,所以我尝试了一些权限testing:

 # Correctly lists the socket file sudo su -s /bin/bash postfix -c "ls /var/spool/postfix/var/run/opendkim/opendkim.sock" 

但是,当我尝试连接作为后缀,没有任何反应:

 # Does not work sudo su -s /bin/bash postfix -c "nc -U -D /var/spool/postfix/var/run/opendkim/opendkim.sock" # Does work (as root) nc -U -D /var/spool/postfix/var/run/opendkim/opendkim.sock 

SELinux暂时禁用(宽容),同时debugging此缝隙。 我在每次configuration更改后都重新启动这两个进程(opendkim和postfix)。

我还有什么遗漏?

版本:

 CentOS 6.5 Postfix v2.6.6 Opendkim v2.9 

testing我的CentOS6后缀似乎不是真的“chrooted”。
我的设置:

 # /etc/opendkim.conf Socket local:/var/run/opendkim/opendkim.sock # /etc/postfix/main.cf smtpd_milters = unix:/var/run/opendkim/opendkim.sock 

这将产生: connect to Milter service unix:/var/run/opendkim/opendkim.sock: Permission denied
但是,套接字umask是002,导致srwxrwxr-x. opendkim:opendkim opendkim.sock srwxrwxr-x. opendkim:opendkim opendkim.sock

将umask更改为000即可解决问题。 不过,最好是opendkim切换用户:组比开放的世界。

环境:

 centos 6.5 2.6.32-573.7.1.el6.x86_64 postfix 2.6.6-6.el6_5 @updates opendkim 2.10.3-1.el6 @epel 

IIRC,centos 6中的postfix在其标准configuration中不运行chroot。 当我从epelconfigurationopendkim时,它带有这个configuration:

 Socket inet:8891@localhost 

所以在后缀中启用它只是将其添加到main.cf的问题:

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

正确configuration密钥,TrustedHosts,SigningTable,Keytable并将txtlogging发布到dns 之后,重新启动opendkim和postfix。

O,我忘记了:postfix也应该是opendkim组的成员。

对于那些发现这个问题并没有解决上述的问题,我的问题是在opendkim套接字文件夹/var/run/opendkim/

我添加了一个cron @reboot来确保组权限被设置@reboot root chmod g+x /var/run/opendkim/

修复/补丁重新启动后返回以下警告。

警告:连接到Milter服务unix:/var/run/opendkim/opendkim.sock:权限被拒绝

对于我来说,tcp连接并不是一个好的解决scheme,因为我每小时签署100k个电子邮件。