postfix/smtpd: 警告: 连接到 Milter 服务 unix:/var/run/opendkim/opendkim.sock: 没有那个文件或目录

rog*_*ers 45 debian email postfix

从squeeze升级到wheezy后,我在debian上遇到postfix问题。Postfix 被配置为使用 dkim-filter 对消息进行签名。更新之前,一切正常,现在与服务(tcp 或 unix 套接字)连接失败。我想可能是因为 debian 切换到 opendkim,所以我删除了 dkim-filter 并安装了 opendkim - 同样的问题。我什至尝试设置 unix 文件套接字连接而不是 tcp 选项 - 同样的问题:

postfix/smtpd: warning: connect to Milter service unix:/var/run/opendkim/opendkim.sock: No such file or directory

或(使用 tcp/ip):

postfix/cleanup: warning: connect to Milter service inet:localhost:8891: Connection refused

我检查了两次 - 套接字文件存在并且服务正在侦听端口 8891。

我能做些什么来解决这个问题?

Joh*_*Siu 76

  1. 检查 opendkim 是否正在运行。(我假设它与您看到的套接字文件一样。)
  2. 你配置了opendkim吗?配置文件是/etc/opendkim.conf.

    您需要更新文件以匹配您的站点/域和dkim.key路径。

  3. 将 postfix 添加到 opendkim 组

    如果 opendkim.sock 权限如下

    $ ls -l /var/run/opendkim
    
    -rw-rw-r-- 1 opendkim opendkim 5 月 2 日 14:56 opendkim.pid
    srwxrwxr-x 1 opendkim opendkim 0 5 月 2 日 14:56 opendkim.sock
    

    如果不是,请确保UMask设置为0002in /etc/opendkim.conf

    然后执行以下操作

    须藤 adduser 后缀 opendkim
  4. 在 chroot 中运行后缀

    修改/etc/default/opendkim,将SOCKET选项更改为 postfix chroot 位置

    SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"

    您必须创建目录/var/spool/postfix/var/run/opendkim并更改其权限

    须藤 mkdir -p /var/spool/postfix/var/run/opendkim
    须藤 chown opendkim:opendkim /var/spool/postfix/var/run/opendkim
    
  5. 重启opendkim

    须藤服务 opendkim 重启
    

  • 我发现了一个由 opendkim 目录的过度限制权限引起的类似问题。 (4认同)

Fed*_*890 16

帮助我在 Ubuntu 16.04 LTS 上修复此警告的快速摘要:Postfix 版本 3.1.0-3ubuntu0.2 Opendkim 版本 2.10.3-3build1

  • (我假设 Postfix 和 Opendkim 已经安装,相互集成,你得到的唯一警告是“连接到本地 Milter 服务:/var/spool/postfix/opendkim/opendkim.sock:没有这样的文件或目录”)

  • 将用户后缀添加到 opendkim 组(如果已经完成则跳过)

须藤 adduser 后缀 opendkim

  • 创建目录并设置所有者(如果已经完成则跳过)

须藤 mkdir -p /var/spool/postfix/var/run/opendkim

须藤 chown opendkim:opendkim /var/spool/postfix/var/run/opendkim

  • 检查权限:

ls -l /var/spool/postfix/var/run/opendkim

srwxrwxr-x 1 opendkim opendkim 0 Nov 12 14:34 opendkim.sock
Run Code Online (Sandbox Code Playgroud)
  • 编辑opendkim配置文件:/etc/opendkim.conf,添加一行

套接字本地:/var/spool/postfix/var/run/opendkim/opendkim.sock

/etc/defaults/opendkim,添加

SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"

  • 编辑后缀配置:/etc/postfix/main.cf
# Milter configuration
# Postfix ? 2.6 milter_protocol = 6, Postfix ? 2.5 milter_protocol = 2
milter_protocol = 6
milter_default_action = accept
smtpd_milters = unix:var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:var/run/opendkim/opendkim.sock
Run Code Online (Sandbox Code Playgroud)
  • 重启服务(或重启)

systemctl 重启 opendkim

systemctl 重启后缀

就是这样。不知道为什么要写

smtpd_milters = unix:var/run/opendkim/opendkim.sock

代替

smtpd_milters = 本地:/var/spool/postfix/var/run/opendkim/opendkim.sock

. 如果有人知道,欢迎解释。

  • 如果 postfix 与 CHROOT 一起运行,那么配置路径是相对的。你最终会用 postfix 来解析 `/var/spool/postfix/var/spool/postfix/var/run/opendkim/opendkim.sock` (4认同)

Ser*_*ano 6

我在 Debian 上遇到了同样的问题,结果证明是由 opendkim 的 systemd 服务文件损坏引起的。请参阅此答案以获取解决方案:https : //serverfault.com/a/847442/84962

此修复归结为:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart
Run Code Online (Sandbox Code Playgroud)

  • 我有 Ubuntu 系统,只有这个建议有帮助,而其他一切都不起作用。 (2认同)