设置:Debian 10、postfix 3.4.7 和 opendkim 2.11(均从 Debian 的存储库安装)。
我按照 Debian 的说明进行操作https://wiki.debian.org/opendkim
看起来罪魁祸首是套接字。在 中/var/log/mail.log
,我确实收到了错误:
Dec 27 ···· postfix/smtpd[1153]: warning: connect to Milter service unix:/var/run/opendkim/opendkim.sock: No such file or directory
Debian 的说明中提到了这一点,他们只是说:“仔细检查权限”。
$ ls -lhd /var/run/opendkim/
drwxr-x--- 2 opendkim opendkim 80 Dec 27 17:20 /var/run/opendkim/
$ sudo ls -lh /var/run/opendkim/
total 4.0K
-rw-rw---- 1 root root 5 Dec 27 17:20 opendkim.pid
srwxrwx--- 1 opendkim opendkim 0 Dec 27 17:20 opendkim.sock
$ groups postfix
postfix : postfix opendkim
Postfix 似乎确实在 chroot 中运行(我不确定如何确定)。我确实看到里面有一堆目录/var/spool/postfix
:
$ ls /var/spool/postfix/
active corrupt deferred etc hold lib pid public trace var
bounce defer dev flush incoming maildrop private saved usr
包括/var/spool/postfix/var/run/opendkim
(除了该目录显示为空):
$ ls -lhd /var/spool/postfix/var/run/opendkim/
drwx--x--- 2 opendkim opendkim 4.0K Dec 27 16:25 /var/spool/postfix/var/run/opendkim/
$ sudo ls -lh /var/spool/postfix/var/run/opendkim/
total 0
[编辑]:
忘记添加——配置文件的相关部分如下:
后缀:
smtpd_milters = inet:localhost:2525 unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/var/run/opendkim/opendkim.sock
milter_default_action = accept
milter_protocol = 6
(localhost:2525 是我自己编写的垃圾邮件过滤器。这个过滤器似乎有效,因为它在邮件头中添加了一个字段)
opendkim:
Socket local:/var/run/opendkim/opendkim.sock
[编辑结束]
您能看出我遗漏了什么吗?有什么建议可以尝试或检查吗?
答案1
您实际上自己找到了解决方案:因为后缀被 chroot 了,而opendkim不是,您必须将 opendkim 的套接字放在 postfix 的 chroot 内:
Socket local:/var/spool/postfix/var/run/opendkim/opendkim.sock