如何在 2 个后缀实例中使用 opendkim 套接字?
How to use opendkim socket in 2 postfix instances?
我有 2 个后缀实例 运行,我想用 opendkim 签署电子邮件,但问题是我无法在两个实例中使用相同的套接字,代码如下
/etc/default/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
请帮帮我!
OpenDKIM 将只使用一个 UNIX 套接字。您不能像上面那样指定多个 UNIX 套接字。
选项 1
在其他地方创建套接字文件,例如SOCKET="local:/var/run/opendkim/opendkim.sock"
。确保 Postfix 的两个实例都有权通过 opendkim 组的成员身份或其他方式访问此文件。
在 chroot jail 中为每个 Postfix 实例创建一个 opendkim 目录:
mkdir /var/spool/postfix/opendkim/
mkdir /var/spool/postfix-2/opendkim/
将包含套接字文件的目录绑定到后缀 chroot 监狱中的每个目录。
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
选项 2
使用 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
此列表标识应为哪些主机邮件签名,而不是应验证任何签名的外部邮件。
我有 2 个后缀实例 运行,我想用 opendkim 签署电子邮件,但问题是我无法在两个实例中使用相同的套接字,代码如下
/etc/default/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
请帮帮我!
OpenDKIM 将只使用一个 UNIX 套接字。您不能像上面那样指定多个 UNIX 套接字。
选项 1
在其他地方创建套接字文件,例如SOCKET="local:/var/run/opendkim/opendkim.sock"
。确保 Postfix 的两个实例都有权通过 opendkim 组的成员身份或其他方式访问此文件。
在 chroot jail 中为每个 Postfix 实例创建一个 opendkim 目录:
mkdir /var/spool/postfix/opendkim/
mkdir /var/spool/postfix-2/opendkim/
将包含套接字文件的目录绑定到后缀 chroot 监狱中的每个目录。
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
选项 2
使用 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
此列表标识应为哪些主机邮件签名,而不是应验证任何签名的外部邮件。