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

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

从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。

我可以做什么来解决这个问题?

答案1

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

    您需要更新文件以匹配您的站点/域并且dkim密钥小路。

  3. 将 postfix 添加到 opendkim 组

    如果opendkim.sock权限如下

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

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

    然后执行以下操作

    sudo adduser postfix opendkim
  4. Postfix 在 chroot 中运行

    修改/etc/default/opendkim、改变插座postfix chroot 位置的选项

    SOCKET =“本地:/var/spool/postfix/var/run/opendkim/opendkim.sock”

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

    sudo mkdir -p /var/spool/postfix/var/run/opendkim
    sudo chown opendkim:opendkim /var/spool/postfix/var/run/opendkim
    
  5. 重新启动 opendkim

    sudo 服务 opendkim 重新启动
    

答案2

帮助我修复 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(如果已完成则跳过)

sudo adduser postfix opendkim

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

sudo mkdir -p /var/spool/postfix/var/run/opendkim

sudo 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
  • 编辑opendkim配置文件:/etc/opendkim.conf,添加行

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

/etc/defaults/opendkim,添加

SOCKET =“本地:/var/spool/postfix/var/run/opendkim/opendkim.sock”

  • 编辑 postfix 配置:/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
  • 重新启动服务(或重启)

systemctl 重新启动 opendkim

systemctl 重新启动 postfix

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

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

代替

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

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

答案3

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

此修复归结为:

/lib/opendkim/opendkim.service.generate
systemctl daemon-reload
service opendkim restart

答案4

另一种方法是禁用chroot,这会产生安全隐患:

vi /etc/postfix/master.cf

# service type  private unpriv  chroot  wakeup  maxproc command + args
cleanup   unix  n       -       n       -       0       cleanup

警告显示postfix/cleanup,因此您可以停用此服务的 chroot。

相关内容