我有2个postfix instaces正在运行,我想用opendkim签署电子邮件,但问题是我无法在两个实例中使用相同的套接字,代码在下面
的/ etc /默认/ opendkim
SOCKET="local:/var/spool/postfix/opendkim/opendkim.sock"
SOCKET="local:/var/spool/postfix-2/opendkim/opendkim.sock"
/etc/postfix/main.cf中
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = local:opendkim/opendkim.sock
/etc/postfix-2/main.cf
smtpd_milters = local:opendkim/opendkim.sock
non_smtpd_milters = local:opendkim/opendkim.sock
请帮助我!
答案 0 :(得分:1)
OpenDKIM只使用一个UNIX套接字。您不能像上面那样指定多个UNIX套接字。
在其他地方创建套接字文件,例如SOCKET="local:/var/run/opendkim/opendkim.sock"
。确保Postfix的两个实例都有权访问此文件,通过opendkim组的成员身份或其他方式。
在chroot jail中为每个Postfix实例创建一个opendkim目录:
mkdir /var/spool/postfix/opendkim/
mkdir /var/spool/postfix-2/opendkim/
将包含套接字文件的目录绑定到postfix chroot jails中的每个目录。
mount --bind /var/run/opendkim/ /var/spool/postfix/opendkim/
mount --bind /var/run/opendkim/ /var/spool/postfix-2/opendkim/
Postfix的两个实例现在都应该可以访问安装在自己目录中的同一个套接字文件。如果现在正在运行,您将需要向/etc/fstab
添加条目,以便在每次启动时都进行此安装。
/var/run/opendkim/ /var/spool/postfix/opendkim none defaults,bind 0 0
/var/run/opendkim/ /var/spool/postfix-2/opendkim none defaults,bind 0 0
使用TCP / IP端口而不是unix套接字在Postfix和OpenDKIM之间进行通信,例如SOCKET="inet:8891@localhost"
。
更改Postfix main.cf文件以使用此TCP / IP套接字:
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
如果Postfix无法连接,则可能需要调整防火墙以允许此连接。
如果你的外发邮件没有被签名,那么你可能需要在opendkim.conf中添加以下行:
InternalHosts /etc/opendkim/TrustedHosts
ExternalIgnoreList /etc/opendkim/TrustedHosts
创建此TrustedHosts文件并列出Postfix在连接到OpenDKIM时可能使用的每个IP地址和主机名,例如:
127.0.0.1
::1
localhost
hostname.example.com
example.com
此列表标识应签署哪些主机邮件,而不是应验证任何签名的外部邮件。