Linux

Postfix - Opendkim - 無法連接到本地套接字

  • July 26, 2016

當 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

根據postfix 文件,postfix 預設執行在“chroot 模式”,所以 postfix 被鎖定到 /var/spool/postfix/,根據postfix 文件,如果執行在“chroot 模式”,所有 milter (socket)引用是相對的(相對於 /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

現在,當我嘗試發送測試電子郵件時,我收到了權限被拒絕錯誤,所以我嘗試了一些權限測試:

# 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 在調試這個程序時被暫時禁用(允許)。每次配置更改後,我都會重新啟動兩個程序(opendkim 和 postfix)。

我還缺少什麼?

版本:

CentOS 6.5
Postfix v2.6.6
Opendkim v2.9

在我的 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.

將 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

引用自:https://serverfault.com/questions/724584