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

Mik*_*ell 6 linux postfix centos dkim opendkim

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

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

根据postfix 文档,默认情况下 postfix 以“chroot 模式”运行,因此 postfix 被锁定到 /var/spool/postfix/,并且根据postfix 文档,如果在“chroot 模式”下运行,则所有 milter(套接字)引用是相对的(相对于 /var/spool/postfix)。

所以我的配置看起来像:

# /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
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试发送测试电子邮件时,出现权限被拒绝错误,因此我尝试了一些权限测试:

# Correctly lists the socket file
sudo su -s /bin/bash postfix -c "ls /var/spool/postfix/var/run/opendkim/opendkim.sock"
Run Code Online (Sandbox Code Playgroud)

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

# 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
Run Code Online (Sandbox Code Playgroud)

SELinux 在调试这个 sitch 时被暂时禁用(允许)。每次配置更改后,我都会重新启动两个进程(opendkim 和 postfix)。

我还缺少什么?

版本:

CentOS 6.5
Postfix v2.6.6
Opendkim v2.9
Run Code Online (Sandbox Code Playgroud)

ati*_*tan 5

在我的 CentOS6 上测试,postfix 似乎并没有真正“chroot”。
我的设置:

# /etc/opendkim.conf
Socket local:/var/run/opendkim/opendkim.sock

# /etc/postfix/main.cf
smtpd_milters = unix:/var/run/opendkim/opendkim.sock
Run Code Online (Sandbox Code Playgroud)

这将产生:connect to Milter service unix:/var/run/opendkim/opendkim.sock: Permission denied
但是,套接字 umask 是 002,导致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
Run Code Online (Sandbox Code Playgroud)

  • 使用 opendkim.conf 中的“UserID”设置。例如`用户ID opendkim:postfix` (2认同)